From ca5fd2e225d86fbf92d6086b5e0c6fed0f863fb5 Mon Sep 17 00:00:00 2001 From: Drew T <50529377+Druthulu@users.noreply.github.com> Date: Tue, 25 Aug 2026 12:13:33 -0600 Subject: [PATCH] =?UTF-8?q?feat(decomp):=20ox=20wave=20di=20overlays=20?= =?UTF-8?q?=E2=80=94=2081=20banked?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Committed before the main batch: gate_main reverts on failure and would take these with it. --- config/overlays.mk | 2 + config/splat.ov_MAIN_012.yaml | 2 + config/splat.ov_SC02_000.yaml | 3 +- config/splat.ov_SC02_011.yaml | 2 +- config/splat.ov_SC04_006.yaml | 2 +- config/splat.ov_SC06_000.yaml | 2 +- config/splat.ov_SC06_022.yaml | 5 +- src/md_MAIN_008/md_MAIN_008.c | 17 +- src/md_MAIN_011/md_MAIN_011.c | 68 +- src/md_MAIN_016/md_MAIN_016.c | 28 +- src/md_MAIN_018/md_MAIN_018.c | 70 +- src/md_MAIN_019/md_MAIN_019.c | 32 +- src/md_MAIN_023/md_MAIN_023.c | 10 +- src/md_MAIN_024/md_MAIN_024.c | 11 +- src/md_MAIN_038/md_MAIN_038.c | 64 +- src/md_MAIN_041/md_MAIN_041.c | 59 +- src/md_SC02_009/md_SC02_009.c | 30 +- src/md_SC03_074/md_SC03_074.c | 17 +- src/md_SC03_075/md_SC03_075.c | 36 +- src/md_SC03_076/md_SC03_076_jr_801F218C.c | 51 +- src/md_SC03_135/md_SC03_135_jr_801E5358.c | 41 +- src/md_SC04_029/md_SC04_029.c | 27 +- src/md_SC07_003/md_SC07_003.c | 36 +- src/md_SC07_004/md_SC07_004.c | 36 +- src/ov_MAIN_012/ov_MAIN_012.c | 26 +- src/ov_MAIN_012/ov_MAIN_012_jr_8013F350.c | 8 +- src/ov_MAIN_012/ov_MAIN_012_jr_8015A3C8.c | 21 +- src/ov_MAIN_012/ov_MAIN_012_jr_8016AB6C.c | 2990 +++++++++++++++ src/ov_MAIN_012/ov_MAIN_012_jr_8016AE5C.c | 18 +- src/ov_MAIN_012/ov_MAIN_012_jr_801789AC.c | 13 +- src/ov_SC01_006/ov_SC01_006_jr_8017ED5C.c | 14 +- src/ov_SC01_008/ov_SC01_008_jr_8017BE9C.c | 49 +- src/ov_SC01_009/ov_SC01_009_jr_8017E590.c | 14 +- src/ov_SC01_080/ov_SC01_080_jr_8017AE2C.c | 14 +- src/ov_SC01_084/ov_SC01_084_jr_8017F690.c | 66 +- src/ov_SC02_000/ov_SC02_000_jr_8017FCB0.c | 74 +- src/ov_SC02_000/ov_SC02_000_jr_80180D6C.c | 4 +- src/ov_SC02_000/ov_SC02_000_jr_80181698.c | 2 +- src/ov_SC02_000/ov_SC02_000_jr_8018173C.c | 94 +- src/ov_SC02_004/ov_SC02_004_jr_8017AE2C.c | 18 +- src/ov_SC02_005/ov_SC02_005_jr_8017CF90.c | 14 +- src/ov_SC02_005/ov_SC02_005_jr_80181D30.c | 113 +- src/ov_SC02_011/ov_SC02_011_jr_8017AE2C.c | 141 +- src/ov_SC02_016/ov_SC02_016_jr_8017DC70.c | 12 +- src/ov_SC02_017/ov_SC02_017_jr_8017DF34.c | 13 +- src/ov_SC02_028/ov_SC02_028_jr_8017D898.c | 27 +- src/ov_SC02_041/ov_SC02_041_jr_8017BEBC.c | 89 +- src/ov_SC03_006/ov_SC03_006_jr_8017AE2C.c | 30 +- src/ov_SC03_007/ov_SC03_007_jr_8017AE2C.c | 11 +- src/ov_SC03_014/ov_SC03_014_jr_801848E4.c | 35 +- src/ov_SC03_015/ov_SC03_015_o0c.c | 64 +- src/ov_SC03_024/ov_SC03_024_jr_80183BF8.c | 14 +- src/ov_SC03_028/ov_SC03_028_jr_8017DF98.c | 10 +- src/ov_SC03_097/ov_SC03_097_jr_8017D898.c | 16 +- src/ov_SC03_100/ov_SC03_100_jr_80183C10.c | 13 +- src/ov_SC03_102/ov_SC03_102_jr_8017BEBC.c | 25 +- src/ov_SC03_102/ov_SC03_102_jr_801855D0.c | 21 +- src/ov_SC03_113/ov_SC03_113_jr_8017C294.c | 27 +- src/ov_SC03_118/ov_SC03_118_jr_801863CC.c | 14 +- src/ov_SC04_003/ov_SC04_003_jr_8017BEBC.c | 129 +- src/ov_SC04_004/ov_SC04_004_jr_8017AE2C.c | 23 +- src/ov_SC04_005/ov_SC04_005_jr_8017BEBC.c | 16 +- src/ov_SC04_006/ov_SC04_006_jr_8017BEBC.c | 59 +- src/ov_SC04_007/ov_SC04_007_jr_8017BEBC.c | 31 +- src/ov_SC04_011/ov_SC04_011_jr_8017D494.c | 15 +- src/ov_SC04_012/ov_SC04_012_jr_8017AE2C.c | 20 +- src/ov_SC05_001/ov_SC05_001_jr_8017BEBC.c | 22 +- src/ov_SC05_005/ov_SC05_005_jr_8017D898.c | 41 +- src/ov_SC05_010/ov_SC05_010_jr_8017C8D0.c | 17 +- src/ov_SC05_017/ov_SC05_017_jr_8017AE2C.c | 19 +- src/ov_SC05_017/ov_SC05_017_jr_80188B1C.c | 75 +- src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c | 61 +- src/ov_SC06_018/ov_SC06_018_jr_8017AE2C.c | 19 +- src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c | 1189 +----- src/ov_SC06_022/ov_SC06_022_jr_80180CD0.c | 4087 +++++++++++++++++++++ src/ov_SC06_022/ov_SC06_022_jr_80184A28.c | 45 +- src/ov_SC06_025/ov_SC06_025_jr_8017EEC4.c | 8 +- src/ov_SC06_029/ov_SC06_029_jr_8017C954.c | 10 +- src/ov_SC06_033/ov_SC06_033_jr_8018D98C.c | 45 +- src/ov_SC07_001/ov_SC07_001_jr_8017BEBC.c | 20 +- src/ov_SC07_007/ov_SC07_007_jr_8017BEBC.c | 23 +- src/ov_SC07_010/ov_SC07_010_jr_8017AE2C.c | 37 +- src/resident/resident.c | 18 +- src/shared/engine_core.h | 10 +- 84 files changed, 9537 insertions(+), 1267 deletions(-) create mode 100644 src/ov_MAIN_012/ov_MAIN_012_jr_8016AB6C.c create mode 100644 src/ov_SC06_022/ov_SC06_022_jr_80180CD0.c diff --git a/config/overlays.mk b/config/overlays.mk index 9322fd259..2bcd506b1 100644 --- a/config/overlays.mk +++ b/config/overlays.mk @@ -111,6 +111,7 @@ build/src/ov_SC01_006/ov_SC01_006_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads ( build/src/ov_SC01_006/ov_SC01_006_jr_8015AE2C.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC01_006/ov_SC01_006_jr_8016AB6C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC01_006/ov_SC01_006_jr_80178D40.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x178 +build/src/ov_SC01_006/ov_SC01_006_jr_8017ED5C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x28 build/src/ov_SC01_006/ov_SC01_006_o0c.o: JTBL_PADS := 0,4,4,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x38,+0xa8,+0x118 ov_SC01_006_CHECK_SHA := config/check.ov_SC01_006.sha ov_SC01_006_SYMBOLS := config/symbols.ov_SC01_006.txt @@ -911,6 +912,7 @@ build/src/ov_SC02_011/ov_SC02_011_jr_80159C84.o: JTBL_PADS := 0,4 # §8e pads ( build/src/ov_SC02_011/ov_SC02_011_jr_8015AE2C.o: JTBL_PADS := 0,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_011/ov_SC02_011_jr_8016AB6C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x20 build/src/ov_SC02_011/ov_SC02_011_jr_80178D40.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x178 +build/src/ov_SC02_011/ov_SC02_011_jr_8017AE2C.o: JTBL_PADS := 0,0 # §8e pads (jtbl_carve.py) tables=+0x0,+0x14 build/src/ov_SC02_011/ov_SC02_011_o0c.o: JTBL_PADS := 0,4,4,4 # §8e pads (jtbl_carve.py) tables=+0x0,+0x38,+0xa8,+0x118 ov_SC02_011_CHECK_SHA := config/check.ov_SC02_011.sha ov_SC02_011_SYMBOLS := config/symbols.ov_SC02_011.txt diff --git a/config/splat.ov_MAIN_012.yaml b/config/splat.ov_MAIN_012.yaml index 758a25cad..e077da05d 100644 --- a/config/splat.ov_MAIN_012.yaml +++ b/config/splat.ov_MAIN_012.yaml @@ -106,6 +106,7 @@ segments: - [0x31390, c, ov_MAIN_012_jr_801594E8] - [0x31b2c, c, ov_MAIN_012_jr_80159C84] - [0x32270, c, ov_MAIN_012_jr_8015A3C8] + - [0x42a14, c, ov_MAIN_012_jr_8016AB6C] - [0x42d04, c, ov_MAIN_012_jr_8016AE5C] - [0x499f4, c, ov_MAIN_012_jr_80171B4C] - [0x50854, c, ov_MAIN_012_jr_801789AC] @@ -133,6 +134,7 @@ segments: - [0x5b764, data, tail8] - [0x5b768, .rodata, ov_MAIN_012_jr_8015A3C8] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x5b7e4, data, tail9] + - [0x5b7fc, .rodata, ov_MAIN_012_jr_8016AB6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x5b81c, .rodata, ov_MAIN_012_jr_8016AE5C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x5b83c, data, tail10] - [0x5b87c, .rodata, ov_MAIN_012_jr_80171B4C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) diff --git a/config/splat.ov_SC02_000.yaml b/config/splat.ov_SC02_000.yaml index 1e874480d..9b5b3d596 100644 --- a/config/splat.ov_SC02_000.yaml +++ b/config/splat.ov_SC02_000.yaml @@ -173,13 +173,12 @@ segments: - [0xbe894, data, tail18] - [0xbe924, .rodata, ov_SC02_000_jr_8017FB24] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xbe944, .rodata, ov_SC02_000_jr_8017FCB0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbe984, data, tail19] - [0xbe9a4, .rodata, ov_SC02_000_jr_801808C4] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xbe9e4, .rodata, ov_SC02_000_jr_80180D6C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xbeaa4, .rodata, ov_SC02_000_jr_80181538] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xbeae4, .rodata, ov_SC02_000_jr_80181698] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xbeb04, .rodata, ov_SC02_000_jr_8018173C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xbeb24, data, tail20] + - [0xbeb24, data, tail19] - [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_011.yaml b/config/splat.ov_SC02_011.yaml index 72aca4a3a..d3682a089 100644 --- a/config/splat.ov_SC02_011.yaml +++ b/config/splat.ov_SC02_011.yaml @@ -161,7 +161,7 @@ segments: - [0xc1b78, .rodata, ov_SC02_011_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xc1c04, data, tail17] - [0xc1c08, .rodata, ov_SC02_011_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xc1c1c, data, tail18] + - [0xc1c30, data, tail18] - [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_SC04_006.yaml b/config/splat.ov_SC04_006.yaml index cd019ab33..934f043d8 100644 --- a/config/splat.ov_SC04_006.yaml +++ b/config/splat.ov_SC04_006.yaml @@ -163,7 +163,7 @@ segments: - [0x74778, data, tail17] - [0x7477c, .rodata, ov_SC04_006_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x74790, .rodata, ov_SC04_006_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x747b0, data, tail18] + - [0x747c8, data, tail18] - [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_SC06_000.yaml b/config/splat.ov_SC06_000.yaml index e2fc8edc2..cd20b7c45 100644 --- a/config/splat.ov_SC06_000.yaml +++ b/config/splat.ov_SC06_000.yaml @@ -161,7 +161,7 @@ segments: - [0x850b4, .rodata, ov_SC06_000_jr_8017A4AC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0x85140, data, tail17] - [0x85144, .rodata, ov_SC06_000_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0x8516c, data, tail18] + - [0x85184, data, tail18] - [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_022.yaml b/config/splat.ov_SC06_022.yaml index 2b088d13d..4c933d0a2 100644 --- a/config/splat.ov_SC06_022.yaml +++ b/config/splat.ov_SC06_022.yaml @@ -121,6 +121,7 @@ segments: - [0x52354, c, ov_SC06_022_jr_8017A4AC] - [0x52cd4, c, ov_SC06_022_jr_8017AE2C] - [0x53d64, c, ov_SC06_022_jr_8017BEBC] + - [0x58b78, c, ov_SC06_022_jr_80180CD0] - [0x5abb0, c, ov_SC06_022_jr_80182D08] - [0x5c1ac, c, ov_SC06_022_jr_80184304] - [0x5c8d0, c, ov_SC06_022_jr_80184A28] @@ -167,10 +168,12 @@ segments: - [0xb894c, .rodata, ov_SC06_022_jr_8017AE2C] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb8960, .rodata, ov_SC06_022_jr_8017BEBC] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb8980, data, tail18] + - [0xb8998, .rodata, ov_SC06_022_jr_80180CD0] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) + - [0xb89b4, data, tail19] - [0xb89d4, .rodata, ov_SC06_022_jr_80182D08] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb8ab4, .rodata, ov_SC06_022_jr_80184304] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - [0xb8acc, .rodata, ov_SC06_022_jr_80184A28] # Phase-26 §8 jtbl-rodata carve (jtbl_carve.py) - - [0xb8ae0, data, tail19] + - [0xb8ae0, data, tail20] - [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/src/md_MAIN_008/md_MAIN_008.c b/src/md_MAIN_008/md_MAIN_008.c index 162b520c1..7e0ac1474 100644 --- a/src/md_MAIN_008/md_MAIN_008.c +++ b/src/md_MAIN_008/md_MAIN_008.c @@ -12,7 +12,22 @@ void func_800CEDFC(void) { } -INCLUDE_ASM("asm/md_MAIN_008/nonmatchings/md_MAIN_008", func_800CEE44); +extern void func_8001C044(void); +extern void func_80015310(void); +extern u8 D_800B9A11; +extern s32 D_800CF13C; +extern void func_800167B8(s32); +extern void func_800118AC(void); + +void func_800CEE44(void) { + func_8001C044(); + func_80015310(); + D_800B9A11 = 0; + D_800CF13C = 0; + func_800167B8(0); + func_800118AC(); +} + void func_800CEE8C(void) { extern s32 func_800167F0(s32 a0); diff --git a/src/md_MAIN_011/md_MAIN_011.c b/src/md_MAIN_011/md_MAIN_011.c index 55a4f508c..b47e22e40 100644 --- a/src/md_MAIN_011/md_MAIN_011.c +++ b/src/md_MAIN_011/md_MAIN_011.c @@ -15,7 +15,73 @@ void func_800CEE74(void) { } -INCLUDE_ASM("asm/md_MAIN_011/nonmatchings/md_MAIN_011", func_800CEF00); +void func_800CEF00(void) { + typedef struct { s32 m; } S70; + extern u8 D_800AF630[]; + extern u8 D_800D31FC[]; + extern u8 D_800D31F8[]; + extern u8 D_800D3248[]; + extern u8 D_800D3208[]; + extern u8 D_800D3214[]; + extern u8 D_800D3220[]; + extern u8 D_800D3228[]; + extern u8 D_800D3230[]; + extern u8 D_800D3238[]; + extern u8 D_800D3250[]; + extern u8 D_800D3258[]; + extern u8 D_800D3264[]; + extern u8 D_800D3278[]; + extern u8 D_800D3284[]; + extern s32 D_800D4C88; + extern s32 D_800D4C8C; + extern s32 D_800D4C90; + extern s32 D_800D4C94; + extern u8 D_800D4B64[]; + extern S70 D_800D4B70[]; + extern u16 D_800D4C80; + extern u16 D_800D4C84; + extern u16 D_800D4CA4; + extern u16 D_800D4CA0; + extern u16 D_800D4C9C; + extern u16 D_800D4C98; + extern s32 D_800D3344; + register u8 *v0 = D_800AF630; + + v0[0xA3E1] = 1; + func_8001C044(); + func_80015310(); + func_80011B7C(0); + func_8001534C(0, D_800D31FC, 0x40, 0x1E, 0, 0); + func_8001534C(1, D_800D31F8, 0x34, 0x46, 0, 0); + func_8001534C(9, D_800D3248, 0x40, 0x46, 0, 0); + func_8001534C(2, D_800D3208, 0x40, 0x5E, 0, 0); + func_8001534C(3, D_800D3214, 0x40, 0x6A, 0, 0); + func_8001534C(4, D_800D3220, 0x40, 0x76, 0, 0); + func_8001534C(5, D_800D3228, 0x40, 0x82, 0, 0); + func_8001534C(6, D_800D3230, 0x40, 0x8E, 0, 0); + func_8001534C(7, D_800D3238, 0x40, 0x9A, 0, 0); + func_8001534C(0xA, D_800D3250, 0x74, 0x46, 0, 0); + func_8001534C(0xB, D_800D3258, 0x74, 0x52, 0, 0); + func_8001534C(0xE, D_800D3264, 0x40, 0xA6, 0, 0); + func_8001534C(0xF, D_800D3278, 0x40, 0xB2, 0, 0); + func_8001534C(0x10, D_800D3284, 0x40, 0xBE, 0, 0); + D_800D4C88 = 0; + D_800D4C8C = 0; + D_800D4C90 = 0; + D_800D4C94 = 0; + *(u16 *)&v0[0xA3DE] = 0; + func_8001534C(0xC, &D_800D4B64[D_800D4C88 * 20], 0xA4, 0x46, 0x44, 0); + func_8001534C(0xD, D_800D4B70[D_800D4C88 * 5].m + D_800D4C8C * 36, 0xA4, 0x52, 0x44, 0); + D_800D4C80 = 0; + D_800D4C84 = 0; + D_800D4CA4 = 0; + D_800D4CA0 = 0; + D_800D4C9C = 0; + D_800D4C98 = 0; + func_80029514(D_800D3344); + func_800118AC(); +} + INCLUDE_RODATA("asm/md_MAIN_011/nonmatchings/md_MAIN_011", D_800CEDF8); diff --git a/src/md_MAIN_016/md_MAIN_016.c b/src/md_MAIN_016/md_MAIN_016.c index 9623aec44..6fde9bd86 100644 --- a/src/md_MAIN_016/md_MAIN_016.c +++ b/src/md_MAIN_016/md_MAIN_016.c @@ -82,4 +82,30 @@ INCLUDE_ASM("asm/md_MAIN_016/nonmatchings/md_MAIN_016", func_800CB304); INCLUDE_ASM("asm/md_MAIN_016/nonmatchings/md_MAIN_016", func_800CB400); -INCLUDE_ASM("asm/md_MAIN_016/nonmatchings/md_MAIN_016", func_800CB458); +void func_800CB458(s32 arg0) { + extern void func_800CAF84(void); + extern s32 func_80146A6C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); + typedef struct { s32 w[4]; } Struct16; + register s32 keep_a0 __asm__("$4"); + s32 s0 = arg0; + s32 s1; + s32 v0; + s32 id; + + keep_a0 = arg0; + s1 = *(s32 *)(s0 + 0x34); + v0 = *(s32 *)(s1 + 0x20); + + *(Struct16 *)(s0 + 0x38) = *(Struct16 *)(v0 + 0x34); + *(Struct16 *)(s0 + 0x48) = *(Struct16 *)(v0 + 0x44); + __asm__ __volatile__("" :: "r"(keep_a0)); + + func_800CAF84(); + + if ((*(s32 *)(s0 + 0x1C) -= 1) == -1) { + id = 0x4B; + func_80146A6C(id, s1, 0, 0, 0, 0x8000, 0); + *(s32 *)(s0 + 0x1C) = 0x18; + } +} + diff --git a/src/md_MAIN_018/md_MAIN_018.c b/src/md_MAIN_018/md_MAIN_018.c index 1d6b3b37c..df1750aea 100644 --- a/src/md_MAIN_018/md_MAIN_018.c +++ b/src/md_MAIN_018/md_MAIN_018.c @@ -43,7 +43,75 @@ void func_800CAFB4(void *arg) { } -INCLUDE_ASM("asm/md_MAIN_018/nonmatchings/md_MAIN_018", func_800CAFE0); +extern u8 D_800CB860[]; +extern u8 D_800CB861; +extern u8 D_800CB862; +extern u8 D_800CB864; +extern u8 D_800CB865; +extern u8 D_800CB866; +extern s16 D_800CB5F4; +extern s16 D_800CB5F6; +extern u8 D_800D387C[]; +extern void func_800233CC(void *, u16); +extern void func_801465C0(void); +extern void func_80146C3C(void); +extern void func_8001CC3C(s32, void *, s32, s32); +extern void func_8001CD9C(s32, void *); + +void func_800CAFE0(s32 param_1) { + s32 pad[2]; + s32 node; + s32 node2; + u32 hw; + u32 sh; + s32 sext; + s32 save; + + if (*(u32 *)(param_1 + 0x2C) & 0x8000) { + D_800CB861 = 0xA0; + D_800CB860[0] = 0xA0; + D_800CB862 = 0x70; + D_800CB866 = 0; + D_800CB865 = 0; + D_800CB864 = 0; + func_800233CC(D_800CB860, 0x1E); + *(u16 *)(param_1 + 0x12) = 0x1C0; + *(u16 *)(param_1 + 2) = 1; + return; + } + hw = *(u32 *)(param_1 + 0x30); + sh = hw >> 15; + node = ((s32 (*)(void))func_801465C0)(); + if (node == 0) { + ((void (*)(s32))func_80146C3C)(param_1); + return; + } + sext = (s32)(sh << 16); + func_8001CC3C(node, D_800D387C, + *(s16 *)((s32)&D_800CB5F4 + (sext >> 15)), + *(s16 *)((s32)&D_800CB5F6 + (sext >> 15))); + *(u16 *)(node + 0x1A) = 0x2000; + *(u16 *)(node + 0x18) = 0x2000; + *(u8 *)(node + 0x27) = (sext >> 17) + 0x19; + *(u32 *)(node + 4) |= 0xC0000000; + save = *(u16 *)(param_1 + 0x30); + *(s32 *)(param_1 + 0x20) = node; + *(u16 *)(param_1 + 2) = 2; + *(u32 *)(param_1 + 0x30) = save; + node2 = ((s32 (*)(void))func_801465C0)(); + if (node2 == 0) { + ((void (*)(s32))func_80146C3C)(param_1); + return; + } + *(s32 *)(param_1 + 0x34) = node2; + func_8001CD9C(node2, D_800CB860); + *(u16 *)(node2 + 0x2C) = 0xC001; + *(u32 *)(node2 + 4) |= 0xD0000000; + *(u16 *)(node2 + 8) = *(u16 *)(param_1 + 6); + *(u16 *)(node2 + 0xA) = *(u16 *)(param_1 + 0xA); + *(u16 *)(node2 + 0xC) = *(u16 *)(param_1 + 0xE); +} + INCLUDE_ASM("asm/md_MAIN_018/nonmatchings/md_MAIN_018", func_800CB168); diff --git a/src/md_MAIN_019/md_MAIN_019.c b/src/md_MAIN_019/md_MAIN_019.c index 41feca25e..e5e6ea470 100644 --- a/src/md_MAIN_019/md_MAIN_019.c +++ b/src/md_MAIN_019/md_MAIN_019.c @@ -188,7 +188,37 @@ void func_800CB2C8(void *arg0) { } -INCLUDE_ASM("asm/md_MAIN_019/nonmatchings/md_MAIN_019", func_800CB324); +void func_800CB324(s32 a0) { + extern void func_8014659C(void); + extern void func_8001C2C4(s32 a0); + extern void func_800CB4C8(void *a0); + extern void func_80146E90(s32 *a0, s32 a1); + extern void func_80146CA0(void *a0); + extern void func_800CB4A8(void); + + typedef struct { u32 a, b, c, d; } Blk16; + + s32 iVar1; + s32 iVar2; + s32 iVar4; + + iVar2 = *(s32 *)(a0 + 0x4C); + iVar1 = ((s32 (*)(void))func_8014659C)(); + *(s32 *)(a0 + 0x20) = iVar1; + if (iVar1 != 0) { + func_8001C2C4(iVar1); + *(u32 *)(iVar1 + 4) |= 0x80000000; + iVar4 = *(s32 *)(iVar2 + 0x20); + *(Blk16 *)(iVar1 + 0x34) = *(Blk16 *)(iVar4 + 0x34); + *(Blk16 *)(iVar1 + 0x44) = *(Blk16 *)(iVar4 + 0x44); + func_800CB4C8((void *)a0); + func_80146E90((s32 *)a0, 0x40); + func_80146CA0((void *)a0); + } else { + ((void (*)(s32))func_800CB4A8)(a0); + } +} + typedef struct { s32 vpx, vpy, vpz, vrx, vry, vrz, rz, super; } RView; diff --git a/src/md_MAIN_023/md_MAIN_023.c b/src/md_MAIN_023/md_MAIN_023.c index 467f8b3f2..9d15e0053 100644 --- a/src/md_MAIN_023/md_MAIN_023.c +++ b/src/md_MAIN_023/md_MAIN_023.c @@ -30,7 +30,15 @@ void func_800CAE78(u8 *a0) { INCLUDE_ASM("asm/md_MAIN_023/nonmatchings/md_MAIN_023", func_800CAEC0); -INCLUDE_ASM("asm/md_MAIN_023/nonmatchings/md_MAIN_023", func_800CAEF8); +extern void func_8014BB24(s32 a0, s32 a1, s32 a2); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +void func_800CAEF8(void *a0) { + func_8014BB24((s32)a0, 10, 1); + func_801599A4(a0); + func_80159B3C(a0); +} + void func_800CAF38(void) { } diff --git a/src/md_MAIN_024/md_MAIN_024.c b/src/md_MAIN_024/md_MAIN_024.c index 416794ac5..d24ca2f69 100644 --- a/src/md_MAIN_024/md_MAIN_024.c +++ b/src/md_MAIN_024/md_MAIN_024.c @@ -25,7 +25,16 @@ void func_800CAE78(void *a0) { } -INCLUDE_ASM("asm/md_MAIN_024/nonmatchings/md_MAIN_024", func_800CAEB0); +extern s32 func_80165910(); +extern void func_801655E4(s32 a0); + +void func_800CAEB0(void *a0) { + if (func_80165910(a0) == 0) { + func_801655E4((s32)a0); + } + *(u8 *)((s32)a0 + 0x197) += 1; +} + void func_800CAEF8(void) { } diff --git a/src/md_MAIN_038/md_MAIN_038.c b/src/md_MAIN_038/md_MAIN_038.c index bc292520e..ab67ca098 100644 --- a/src/md_MAIN_038/md_MAIN_038.c +++ b/src/md_MAIN_038/md_MAIN_038.c @@ -200,7 +200,69 @@ void func_800CB518(void *arg0) { } -INCLUDE_ASM("asm/md_MAIN_038/nonmatchings/md_MAIN_038", func_800CB574); +void func_800CB574(void *param_1) { + typedef struct { u32 a, b, c, d; } Blk16; + extern void func_801465E4(void); + extern void func_8001C810(s32 a0, s32 a1); + extern void func_80149350(s32 a0); + extern void func_80149374(s32 a0, s32 a1); + extern s32 func_80017DC4(void *a0, void *a1); + extern void RotMatrixZ(s32 a0, void *a1); + extern void MulMatrix0(s32 a0, void *a1, s32 a2); + extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); + extern void func_80146C3C(void); + extern void func_800CB780(s32 a0); + extern s32 D_800CCA00; + extern s32 D_800636C8; + + s32 src; + s32 iVar2; + s32 iVar3; + s16 arr[3]; + s32 mat[8]; + + src = *(s32 *)((s32)param_1 + 0x34); + iVar2 = ((s32 (*)(void))func_801465E4)(); + *(s32 *)((s32)param_1 + 0x20) = iVar2; + if (iVar2 != 0) { + func_8001C810(iVar2, (s32)&D_800CCA00); + *(u32 *)(iVar2 + 4) |= 0x50000040; + *(s32 *)(iVar2 + 0x20) = (s32)&D_800636C8; + + arr[0] = 0; + arr[1] = -6; + arr[2] = (*(u16 *)((s32)param_1 + 0xE)) - 0x24; + ((void (*)(s32, void *, void *))func_80149350)(src, arr, arr); + + iVar3 = *(s32 *)(src + 0x20); + *(Blk16 *)((s32)param_1 + 0x38) = *(Blk16 *)(iVar3 + 0x34); + *(Blk16 *)((s32)param_1 + 0x48) = *(Blk16 *)(iVar3 + 0x44); + *(s32 *)((s32)param_1 + 0x4C) = arr[0]; + *(s32 *)((s32)param_1 + 0x50) = arr[1]; + *(s32 *)((s32)param_1 + 0x54) = arr[2]; + func_80149374(src, (s32)param_1 + 4); + + arr[2] = 0x1800; + arr[1] = 0x1800; + arr[0] = 0x1800; + ((void (*)(void *, void *))func_80017DC4)(arr, mat); + RotMatrixZ(rand() & 0xFFF, mat); + MulMatrix0(*(s32 *)(src + 0x20) + 0x34, mat, iVar2 + 0x34); + + func_80146A6C(0x44, (void *)param_1, + *(s16 *)((s32)param_1 + 6), + *(s16 *)((s32)param_1 + 0xA), + *(s16 *)((s32)param_1 + 0xE), + 0, 0); + + *(s32 *)((s32)param_1 + 0x30) = 0x80; + func_800CB780((s32)param_1); + *(u16 *)((s32)param_1 + 2) = *(u16 *)((s32)param_1 + 2) + 1; + } else { + ((void (*)(void *))func_80146C3C)(param_1); + } +} + extern void func_800CB780(s32 param_1); extern void func_80146C3C(void); diff --git a/src/md_MAIN_041/md_MAIN_041.c b/src/md_MAIN_041/md_MAIN_041.c index 7e5b556a2..58f35c508 100644 --- a/src/md_MAIN_041/md_MAIN_041.c +++ b/src/md_MAIN_041/md_MAIN_041.c @@ -67,7 +67,64 @@ void func_800CAF9C(s32 a0) { INCLUDE_ASM("asm/md_MAIN_041/nonmatchings/md_MAIN_041", func_800CB028); -INCLUDE_ASM("asm/md_MAIN_041/nonmatchings/md_MAIN_041", func_800CB118); +extern void func_80162FF4(); +extern void func_80162FC0(s32 *a0); +extern s32 func_80146E98(s32 a0); +extern s32 func_801638A0(u8 *a0, s32 a1); +extern void func_80146E90(s32 *a0, s32 a1); +extern void func_80146CA0(void *a0); +extern s32 func_80163408(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80163328(); +extern s32 func_801632F0(); +extern void func_80013E94(void *a0, void *a1); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_80147324(s32 a0); +extern u8 D_80114EB0[]; +extern u8 D_80114EC8[]; +extern s16 D_80126B18; +extern s16 D_80126B1A; +extern s16 D_80126B1C; + +void func_800CB118(s32 a0) { + s32 sp20[2]; + s32 sp28; + register s32 ret __asm__("$3"); + register s32 m __asm__("$2"); + + func_80162FF4(a0, 0, 0x4000, 0); + func_80162FC0((s32 *) a0); + if (func_80146E98(a0) != 0) { + func_80146CA0((void *) a0); + return; + } + ret = func_801638A0((u8 *) a0, (s32) sp20); + if (ret == 0) { + } else if ((m = ret & 0x8000) != 0) { + *(s32 *)(a0 + 0x2C) = 0; + *(s32 *)(a0 + 0x24) = 0; + } else { + func_80146E90((s32 *) a0, 0x20); + func_80146CA0((void *) a0); + return; + } + func_80163408(a0, 0x2C, 0x80, 0x200); + func_80163328(a0); + switch ((u32) func_801632F0(a0)) { + case 1: + func_80013E94(D_80114EB0, &sp28); + sp28 |= 0x80000000; + func_80146A6C(0x1F, (void *) a0, D_80126B18, D_80126B1A, D_80126B1C, sp28, 0); + func_80147324(0x8E6); + break; + case 2: + case 4: + func_80013E94(D_80114EC8, &sp28); + sp28 |= 0x80000000; + func_80146A6C(7, (void *) a0, D_80126B18, D_80126B1A, D_80126B1C, sp28, 0); + break; + } +} + extern s32 func_80146E98(s32 a0); extern void func_80146CA0(void *a0); diff --git a/src/md_SC02_009/md_SC02_009.c b/src/md_SC02_009/md_SC02_009.c index 26830cf4c..2c64707df 100644 --- a/src/md_SC02_009/md_SC02_009.c +++ b/src/md_SC02_009/md_SC02_009.c @@ -11,7 +11,20 @@ void func_801E4C64(void *a0) { INCLUDE_ASM("asm/md_SC02_009/nonmatchings/md_SC02_009", func_801E4CA0); -INCLUDE_ASM("asm/md_SC02_009/nonmatchings/md_SC02_009", func_801E4D14); +void func_801E4D14(s32 a0) { + extern void func_8012A828(s32 a0, void *a1); + extern s32 func_8013767C(s32); + extern s32 D_801270C8; + extern u8 D_8019702C[]; + extern void D_801E5E0C; + + if (D_801270C8 == 3) { + *(s32 *)(a0 + 0xB0) = func_8013767C((s32)D_8019702C); + func_8012A828(a0, &D_801E5E0C); + *(u16 *)((s32)a0 + 2) += 1; + } +} + void func_801E4D7C(s32 *a0) { s32 *s0 = a0; @@ -123,7 +136,20 @@ void func_801E5030(s32 *a0) { INCLUDE_ASM("asm/md_SC02_009/nonmatchings/md_SC02_009", func_801E5094); -INCLUDE_ASM("asm/md_SC02_009/nonmatchings/md_SC02_009", func_801E50F0); +void func_801E50F0(s32 a0) { + s32 s0 = a0; + extern void func_801E53E0(s32); + extern void func_8012A828(s32 a0, void *a1); + extern s32 D_801270C8; + extern void D_801E626C; + + func_801E53E0(s0); + if (D_801270C8 == 15) { + func_8012A828((s32)s0, &D_801E626C); + (*(u16 *)((s32)s0 + 2))++; + } +} + void func_801E514C(s32 a0) { extern void func_801E53E0(s32); diff --git a/src/md_SC03_074/md_SC03_074.c b/src/md_SC03_074/md_SC03_074.c index 94f52174e..4c59312a0 100644 --- a/src/md_SC03_074/md_SC03_074.c +++ b/src/md_SC03_074/md_SC03_074.c @@ -207,7 +207,22 @@ void func_801EFB84(void *a0) { } -INCLUDE_ASM("asm/md_SC03_074/nonmatchings/md_SC03_074", func_801EFBC0); +void func_801EFBC0(void) { + + extern u8 D_80078EB1; + extern s32 D_801EF3EC; + extern s32 D_801F5F04; + extern s32 D_801F0234[]; + extern s32 D_801F0204[]; + + D_801F5F04 = 0; + if ((u32)D_80078EB1 >= 0x12) { + *(s32 *)(D_801EF3EC + 4) = (s32)D_801F0234; + } else { + *(s32 *)(D_801EF3EC + 4) = (s32)D_801F0204; + } +} + diff --git a/src/md_SC03_075/md_SC03_075.c b/src/md_SC03_075/md_SC03_075.c index d4a46990e..712eeae09 100644 --- a/src/md_SC03_075/md_SC03_075.c +++ b/src/md_SC03_075/md_SC03_075.c @@ -322,7 +322,41 @@ void func_801EFD70(void *param_1) { } -INCLUDE_ASM("asm/md_SC03_075/nonmatchings/md_SC03_075", func_801EFEA4); +extern s32 func_80029504(void); +extern s32 func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, s32 a1); +extern void func_8012E8E0(s32 a0, s32 a1); +extern s32 func_80178B18(s32 a0, s32 a1); + +void func_801EFEA4(void *a0) { + extern s32 D_801F66FC; + extern s32 D_801F04B4; + extern s16 D_801C3890; + extern s32 D_801F050C; + s32 v0; + + if ((u32)(func_80029504() - 0x122) < 0xA) { + func_8012CAE4(a0); + return; + } + + v0 = func_8012C1B8(); + *(s32 *)((s32)a0 + 0x20) = v0; + if (v0 == 0) { + func_8012CAE4(a0); + } else { + func_8001C214(v0, (s32)&D_801F66FC); + *(s16 *)(*(s32 *)((s32)a0 + 0x68) + 0xC) = 0x7FFF; + func_8012E8E0((s32)a0, (s32)&D_801F04B4); + *(s16 *)((s32)a0 + 0x2) = 1; + *(s16 *)((s32)a0 + 0x34) = 0; + func_8012A828((s32)a0, (s32)&D_801C3890); + func_80178B18((s32)a0, (s32)&D_801F050C); + } +} + extern s32 func_8012BA10(s32 a0, s32 a1); extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); diff --git a/src/md_SC03_076/md_SC03_076_jr_801F218C.c b/src/md_SC03_076/md_SC03_076_jr_801F218C.c index 323b55285..7793545fc 100644 --- a/src/md_SC03_076/md_SC03_076_jr_801F218C.c +++ b/src/md_SC03_076/md_SC03_076_jr_801F218C.c @@ -253,7 +253,39 @@ join: } -INCLUDE_ASM("asm/md_SC03_076/nonmatchings/md_SC03_076_jr_801F218C", func_801F2458); +extern s32 func_80029504(void); +extern s32 func_80029178(s32); +extern void func_80029124(s32, s32); + +s32 func_801F2458(void) { + s32 x; + s32 t; + + x = func_80029504(); + if ((u32)(x - 200) < 100) { + t = 0; + goto join; + } + __asm__(""); + if (x < 300) { + t = 1; + goto join; + } + __asm__(""); + if (func_80029178(250) & 0xFF) { + t = 0; + goto join; + } + __asm__(""); + t = 1; +join: + if (t != 0 && (func_80029178(276) & 0xFF) == 0) { + func_80029124(276, 1); + return 1; + } + return 0; +} + void func_801F24DC(s32 a0) { extern s32 func_80029504(void); @@ -451,7 +483,22 @@ void func_801F28B0(void) { } -INCLUDE_ASM("asm/md_SC03_076/nonmatchings/md_SC03_076_jr_801F218C", func_801F28E0); +void func_801F28E0(void) +{ + typedef struct { s32 next; u8 pad[0xC]; } Node_801F28E0; + extern s32 D_801F9DD4; + extern s32 D_801F9F54; + Node_801F28E0 *p; + s32 i; + + p = (Node_801F28E0 *)&D_801F9DD4; + for (i = 0; i < D_801F9F54 - 1; ) { + p->next = (s32)(p + 1); + i++; + p = p + 1; + } +} + extern s32 func_80029504(void); extern void func_80029514(s32 arg0); diff --git a/src/md_SC03_135/md_SC03_135_jr_801E5358.c b/src/md_SC03_135/md_SC03_135_jr_801E5358.c index 8b2138225..3d0475898 100644 --- a/src/md_SC03_135/md_SC03_135_jr_801E5358.c +++ b/src/md_SC03_135/md_SC03_135_jr_801E5358.c @@ -179,7 +179,46 @@ s32 func_801E5504(void) { } -INCLUDE_ASM("asm/md_SC03_135/nonmatchings/md_SC03_135_jr_801E5358", func_801E5514); +s32 func_801E5514(void) { + extern s32 func_80029504(void); + extern s32 func_80029178(s32); + extern u8 D_801E67E8[]; + extern u8 D_801E6828[]; + extern s32 D_801E256C; + s32 x; + s32 t; + s32 p; + s32 v; + + x = func_80029504(); + if ((u32)(x - 200) < 100) { + t = 0; + goto join; + } + __asm__(""); + if (x < 300) { + t = 1; + goto join; + } + __asm__(""); + if (func_80029178(250) & 0xFF) { + t = 0; + goto join; + } + __asm__(""); + t = 1; +join: + if (t != 0) { + p = D_801E256C; + v = (s32)&D_801E67E8; + } else { + p = D_801E256C; + v = (s32)&D_801E6828; + } + *(s32 *)(p + 4) = v; + return v; +} + extern s32 func_80029504(void); extern s32 func_80029178(s32); diff --git a/src/md_SC04_029/md_SC04_029.c b/src/md_SC04_029/md_SC04_029.c index 2320bae05..4590956ff 100644 --- a/src/md_SC04_029/md_SC04_029.c +++ b/src/md_SC04_029/md_SC04_029.c @@ -350,6 +350,31 @@ void func_801E8380(void) { } -INCLUDE_ASM("asm/md_SC04_029/nonmatchings/md_SC04_029", func_801E83AC); +extern u8 *D_80126B10; +extern void func_80178CBC(s32 a0, s32 a1); +extern void func_80174438(s32 a0); + +void func_801E83AC(void *param_1) { + extern s32 func_801789AC(); + extern s32 D_801E8654; + + switch (*(u16 *)((s32)param_1 + 0x34)) { + case 0: + if (func_801789AC() != 0) { + func_80178CBC((s32)param_1, (s32)&D_801E8654); + *(u16 *)((s32)param_1 + 0x34) = 1; + } + break; + case 1: + if (func_801789AC((s32)param_1) != 0) { + func_80174438((s32)D_80126B10); + *(u16 *)((s32)param_1 + 0x34) = 2; + } + break; + case 2: + break; + } +} + INCLUDE_ASM("asm/md_SC04_029/nonmatchings/md_SC04_029", func_801E8440); diff --git a/src/md_SC07_003/md_SC07_003.c b/src/md_SC07_003/md_SC07_003.c index 5e8aea0cb..88406a374 100644 --- a/src/md_SC07_003/md_SC07_003.c +++ b/src/md_SC07_003/md_SC07_003.c @@ -2219,7 +2219,41 @@ void func_801A3BCC(void *a0) } -INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A419C); +#include "common.h" + +/* §37 asm-label alias: the TU canon (md_SC07_003.c:620) declares this symbol + `extern s32 D_80126B78[];`, but the target reads its VALUE twice + (lui/lw rematerialised per call site), which requires the pointer-variable + reading. Distinct C identifier + asm label = no conflicting-types clash, + emitted relocations still spell D_80126B78. */ +extern s32 *aD_80126B78 __asm__("D_80126B78"); +extern u8 D_800D3918[]; +extern u8 D_801A68F4[]; +extern u8 D_801152A8[]; +extern s32 D_80127078; + +extern void func_8012F14C(s32 a0, s32 a1, s32 a2); +extern void func_8012B2CC(s32 a0); +extern s32 func_80135888(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); + +s32 func_801A419C(s32 arg0) { + s32 buf[2]; /* 0x18(sp): projected point A */ + s32 out[2]; /* 0x20(sp): projected point B */ + + func_8012F14C((s32)aD_80126B78 + 0x34, (s32)D_800D3918, (s32)buf); + func_8012F14C((s32)aD_80126B78 + 0x34, (s32)D_801A68F4, (s32)out); + func_8012B2CC(arg0); + if (func_80135888(*(s32 *)(arg0 + 0x20), *(s32 *)(arg0 + 0x58), (s32)buf, (s32)out) != 0) { + func_8012F568(1, 0x1C, + *(u16 *)(*(s32 *)(*(s32 *)(arg0 + 0x64) + 0x20) + 0x12) & 0xFFF, + 0x1E, (s32)out, (s32)D_801152A8); + D_80127078 = arg0; + return 1; + } + return 0; +} + INCLUDE_ASM("asm/md_SC07_003/nonmatchings/md_SC07_003", func_801A4268); diff --git a/src/md_SC07_004/md_SC07_004.c b/src/md_SC07_004/md_SC07_004.c index ff1c5e5b5..186aba14a 100644 --- a/src/md_SC07_004/md_SC07_004.c +++ b/src/md_SC07_004/md_SC07_004.c @@ -723,7 +723,28 @@ INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A2F34); INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A30C8); -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A3114); +extern void func_801A36F0(void *a0); +extern void func_8012AD44(s32 *a0, s16 a1); +extern void func_8012A860(void *a0, int a1); +extern u8 D_801EF9A8; + +void func_801A3114(s32 *a0) +{ + s32 *s0 = a0; + u16 v0; + + v0 = *(u16 *)((s32)s0 + 0x5C); + *(u16 *)((s32)s0 + 0x5E) = 0; + *(u8 *)((s32)s0 + 0xC1) = 0; + *(u16 *)((s32)s0 + 0x5C) = v0 & 0xDFFE; + func_801A36F0((void *)s0); + func_8012AD44(s0, 12); + if (*(s16 *)((s32)s0 + 0xE6) < 0) { + *(u16 *)((s32)s0 + 0x34) = 2; + func_8012A860((void *)s0, (int)&D_801EF9A8); + } +} + INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A3180); @@ -4431,7 +4452,18 @@ void func_801A9EB0(void *arg0) { } -INCLUDE_ASM("asm/md_SC07_004/nonmatchings/md_SC07_004", func_801A9F5C); +extern void func_801AA0B4(void *a0); +extern void func_8012AD80(s32 a0); +extern void func_8012AD44(s32 *a0, s16 a1); + +void func_801A9F5C(void *arg0) { + *(s32 *)((s32)arg0 + 0x1C) = 0x40; + func_801AA0B4(arg0); + func_8012AD80((s32)arg0); + func_8012AD80((s32)arg0); + func_8012AD44((s32 *)arg0, 2); +} + void func_801A9FA8(void *arg0) { func_8012AD44((s32 *)arg0, 3); diff --git a/src/ov_MAIN_012/ov_MAIN_012.c b/src/ov_MAIN_012/ov_MAIN_012.c index aa15ee140..4806c5f13 100644 --- a/src/ov_MAIN_012/ov_MAIN_012.c +++ b/src/ov_MAIN_012/ov_MAIN_012.c @@ -1390,7 +1390,31 @@ DEFINE_func_8012D5E4() /* dedup: shared engine-core @0x8012d5e4 (src/shared) */ DEFINE_func_8012D624() /* dedup: shared engine-core @0x8012d624 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012", func_8012D664); +int func_8012D664(int arg0, int arg1, int arg2) +{ + extern u16 D_80126B5E; + extern u16 D_80126B62; + extern u16 D_80126B66; + extern s32 func_800132BC(s32 a0, s32 a1); + extern void func_8012F568(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); + extern u8 D_8017E6BC[]; + + u16 s[3]; + int ret; + int t; + + s[0] = (*(unsigned short *)&D_80126B5E); + s[1] = (*(unsigned short *)&D_80126B62) - 0x40; + s[2] = (*(unsigned short *)&D_80126B66); + ret = ((int (*)())func_800132BC)(arg0, s); + t = arg1 + 0x20; + if (ret < t * t) { + func_8012F568(1, 1, 0, arg2, arg0, &D_8017E6BC); + return 1; + } + return 0; +} + DEFINE_func_8012D714() /* dedup: shared engine-core @0x8012d714 (src/shared) */ diff --git a/src/ov_MAIN_012/ov_MAIN_012_jr_8013F350.c b/src/ov_MAIN_012/ov_MAIN_012_jr_8013F350.c index e2d6b13a4..697209df2 100644 --- a/src/ov_MAIN_012/ov_MAIN_012_jr_8013F350.c +++ b/src/ov_MAIN_012/ov_MAIN_012_jr_8013F350.c @@ -4950,7 +4950,13 @@ DEFINE_func_8014C118() /* dedup: shared engine-core @0x8014c118 (src/shared) */ DEFINE_func_8014C168() /* dedup: shared engine-core @0x8014c168 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_8013F350", func_8014C1A0); +extern void func_8014C1C8(s32 arg0, s32 arg1, void *arg2); +extern s32 D_8017FFC0; + +void func_8014C1A0(s32 arg0, s32 arg1) { + func_8014C1C8(arg0, arg1, &D_8017FFC0); +} + DEFINE_func_8014C1C8() /* dedup: shared engine-core @0x8014c1c8 (src/shared) */ diff --git a/src/ov_MAIN_012/ov_MAIN_012_jr_8015A3C8.c b/src/ov_MAIN_012/ov_MAIN_012_jr_8015A3C8.c index 6faa4b8a6..3baf8efe5 100644 --- a/src/ov_MAIN_012/ov_MAIN_012_jr_8015A3C8.c +++ b/src/ov_MAIN_012/ov_MAIN_012_jr_8015A3C8.c @@ -8115,7 +8115,23 @@ void func_80168430(s32 param_1) { } -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_8015A3C8", func_801684B4); +extern void func_80146C3C(u8*); +extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); +void func_801684B4(s32 a0) { + s32 *s0 = (s32 *)a0; + if ((*(s32 *)(*(s32 *)(a0 + 0x34) + 0x44) & 0x2) == 0) { + ((void (*)(void))func_80146C3C)(); + } else { + s16 v0 = *(u16 *)(a0 + 0x2A) - 1; + *(s16 *)(a0 + 0x2A) = v0; + if (v0 == 0) { + func_80166994(a0, 0, 2, 0); + *(s16 *)(a0 + 0x2) = *(u16 *)(a0 + 0x2) + 1; + } + } + (void)s0; +} + DEFINE_func_80168540() /* dedup: shared engine-core @0x80168540 (src/shared) */ @@ -9033,6 +9049,3 @@ void func_8016AB30(void *a0) { extern void (*D_801814EC[])(void); D_801814EC[*(u16 *)((s32)a0 + 0x2)](); } - - -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_8015A3C8", func_8016AB6C); diff --git a/src/ov_MAIN_012/ov_MAIN_012_jr_8016AB6C.c b/src/ov_MAIN_012/ov_MAIN_012_jr_8016AB6C.c new file mode 100644 index 000000000..fcdd40013 --- /dev/null +++ b/src/ov_MAIN_012/ov_MAIN_012_jr_8016AB6C.c @@ -0,0 +1,2990 @@ +#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 { + u16 f00; + u16 f02; + u16 f04; + u16 pad06; + u16 f08; + u16 f0A; + u16 f0C; + u16 pad0E; + u8 f10; + u8 f11; + u8 f12; + u8 pad13; + u8 f14; + u8 f15; + u8 f16; + u8 pad17; + u32 f18; +} S1_80168F40; +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(); +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_80129CF8(void); +extern void func_8017849C(void); +extern void func_8014FDF4(struct S8014FDF4 *a0); +extern s32 func_801505FC(s32 a0); +extern s32 func_801508B4(s32); +extern void func_80165E90(void); +extern void func_801627E8(void); +extern void func_80162B1C(void); +extern void func_80165CA0(void); +extern void func_80129010(void); +extern void func_8013CA14(void); +extern void func_800190AC(void); +extern void func_8012956C(void); +extern s32 func_8016E95C(); +extern void func_801754A8(void); +extern void func_8013BC7C(); +extern void func_8013BCDC(void); +extern void func_801379FC(void); +extern void func_8001212C(void); +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 CdFileLoc cdFileLocTable[]; +extern void func_8001ABBC(s32 a0, s32 a1, void *a2, s32 a3, s32 a4); +extern s32 func_80128C98(s32 arg0); +extern s32 func_80128CFC(s32 arg0); +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 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(); +extern void func_8012944C(void); +extern void func_80015B6C(s32, s16, s32, s16, s32, s32, s32, s32, s32, s32); +extern void GsSortBg(s32 *, void *, u16, s32 *); +extern void GsSortFastBg(s32 *, void *, u16, s32 *); +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_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_8012A1BC(void); +extern void func_8012A2F4(void); +extern s16 D_80127080; +extern s16 D_801152C2; +extern void func_8012A304(s32 a0, s32 a1); +extern s32 func_80012F74(s32, s32, s32, s32); +extern s32 D_801151D4; +extern void func_8012A418(void); +extern Vec8 D_80114F24; +extern void func_8012A464(void); +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(); +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 Mat32 D_800AE620; +extern void RotMatrixX(int r, void *m); +extern void RotMatrixY(int r, void *m); +extern void RotMatrixZ(int r, void *m); +extern s32 func_8012B4B8(int param_1); +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 s32 func_80047948(s32 a0); +extern s32 func_8004787C(s32 a0); +extern s32 func_8012B77C(s32 out, s32 from, s32 to); +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 s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); +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 s32 func_8012CC88(); +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_8012CC64(s32 a0, s32 a1); +extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); +extern s32 func_8012CC88(s32 a0, s32 a1, s32 a2); +extern s32 func_80133784(s32 a0, void *a1, s32 a2); +extern s32 func_8012CE2C(s32 a0); +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_8012DDA4(); +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(s32 arg0); +extern void func_8012E138(); +extern void func_8012DFD4(u8 *a0); +extern void func_8012F0BC(s32 *a0, s32 *a1, s32 *a2); +extern void func_8012F1A4(s32 *a0, s32 a1, s32 *a2); +extern void func_8012E014(s32 a0); +extern void func_8012F038(int param_1, short *param_2, short *param_3); +extern void func_80049CAC(); +extern void func_8012F14C(s32 a0, s32 a1, s32 a2); +extern s32 func_80135888(); +extern void func_8012E138(int model); +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 void func_8012E364(s32 arg0_); +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 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_8016AA50(int, int); +extern s32 func_8016B428(s32); +extern void func_80019064(void *); +extern void func_8012E9C0(int param_1); +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 s32 aF8012EFB8(); +extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); +extern void RotTransSV(s32 a0, s32 a1, void *a2); +extern void func_80015978(s32 a0, s32 *a1); +extern void func_80015954(s32 a0, s32 a1); +extern void func_8012F274(s32 a0, s32 a1); +extern void func_8012F2E8(s32 a0, s32 a1, s32 a2); +extern s16 D_80126CB6; +extern void func_8012F374(s32 a0, s32 a1); +extern void func_8004914C(); +extern void func_800491AC(); +extern s32 RotTransPers(s32, s32, s32*, s32*); +extern s32 * func_8012F40C(s32 *param_1, s32 param_2); +extern s32 * func_8012F49C(s32 *param_1, s32 param_2, s32 param_3); +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(); +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_8012CBCC(s32); +extern void func_80131E00(struct S80131E00*, s32); +extern void func_80130C08(s32 arg0); +extern void func_80131170(s32 p, s32 b, s32 c); +extern s32 func_801312D0(s32 param_1, void *param_2); +extern void func_8002A04C(s32 a0); +extern void func_801319E0(s32 arg0); +extern void func_8012A828(s32 a0, void *a1); +extern s32 func_80131CF4(s32 a0); +extern void func_80019064(void *a0); +extern s32 aF80131CA8(); +extern s32 aF80131CF4(); +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_8001C214(int, int); +extern void func_80132018(int param_1); +extern void func_801320D0(void); +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 gteMIMefunc(); +extern void func_801325B8(int dst, int src, int m0, int mm, int arg5); +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 s32 func_80135888(s32, s32, s32, s32); +extern void func_80132F40(s32 arg0); +extern void func_801330E0(void * param_1, s16 * param_2, s32 param_3); +extern void func_80133060(u8 *a0, s32 *a1, s32 a2); +extern void func_801330E0(); +extern void func_8013339C(s16 *a0, s16 *a1); +extern void func_80133298(s32 *a0); +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 s32 D_80184124; +extern void func_8013373C(s32 a0); +extern s32 func_80133784(s32 arg0, void *arg1, s32 arg2); +extern s32 func_80133AB0(s16 flag, s16 x, s16 y, s32 arg3); +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_80134510(s32 param); +extern s32 func_801345F8(s32 arg); +extern s32 func_801347A0(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +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_80136F3C(s32 a0, s32 a1); +extern void func_80137030(s16 a0, s16 a1); +extern void func_80137178(s32 a0, s32 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 aF80137614(); +extern s32 func_8013767C(s32 a0); +extern void func_801376E8(int a0, int a1); +extern void func_801376C8(int a0); +extern void func_80139BE0(s32 a0); +extern void * aF801376E8(); +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 void func_8013A860(void); +extern s16 D_8012752E; +extern void func_801379D8(void); +extern void func_801379EC(void); +extern s32 D_80127548[]; +extern s32 D_801269F0; +extern s16 D_801269F4; +extern s32 D_801269F8; +extern void func_80138BE0(s32 a0); +extern void func_80137BD8(s32 a0); +extern void func_8013A380(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(u8 *arg0, u8 arg1, s32 arg2); +extern void func_80139B18(s32 a0); +extern void func_80138AB4(s32 a0); +extern void func_80138C30(void *a0); +extern void func_80139C7C(u8 *a0); +extern s32 func_8013A8FC(s32 arg0); +extern s32 func_80138C60(s32 arg0); +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_80138ED0(u8 *param_1, u32 param_2, u8 *param_3); +extern s32 func_8013914C(s32 a0, s32 a1); +extern void func_800599B8(u16 *); +extern u16 D_80127C0C[]; +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_801395D4(void * a0); +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 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 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 s32 func_8013A8BC(void); +extern void func_8013A9B4(s32 a0, s32 a1); +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 D_800A5E60; +extern s32 func_8013AB54(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_8013AD38(void *flag, s32 a1, void *out2, void *out3); +extern void func_8013AF20(u32 *param_1, u16 *param_2, u16 *param_3, u8 *param_4); +extern void func_8013CABC(void); +extern void func_8013CAE8(void); +extern void func_8013CB20(void); +extern void func_8013CB5C(void); +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_8013D53C(void *arg0v); +extern void func_800599B8(u16*); +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 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 u8 *D_801274C8; +extern void func_8013E4B4(void); +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 s32 func_80014ED4(s32); +extern s32 func_80015018(s32); +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_8013EF88(); +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 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 void func_801407F4(void); +extern s16 func_8014168C(s16); +extern s32 *func_80140D68(s32 *, Prim4 *, s32, s32, s32); +extern s32 * func_80140958(); +extern s32 * func_80140D68(); +extern int func_800D2CA8(int, int); +extern void func_800D2D10(int, int, void *, int); +extern void func_80140E6C(void); +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 void func_80140F00(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 Prim_1412A8 * aF801412A8(); +extern s32 func_800291B4(s32 arg); +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 void func_800D24A0(int); +extern void func_8002D4C8(int, int); +extern void func_80141C0C(int); +extern s32 func_801418F8(void); +extern s32 func_8013F350(void); +extern s32 func_80141A60(); +extern void func_8013FAF8(s16, s16); +extern u16 D_80115116; +extern void func_80141B90(void); +extern u8 D_8017F6D4[]; +void func_8002D4C8(s32 a0, s32 a1); +extern void func_80141C0C(s32 param_1); +extern s32 func_80015144(void); +extern u16 D_8011511C; +extern s32 func_80029178(s32 arg); +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 void func_80142BB4(s32 *a0, s32 a1, s32 a2); +extern void func_80142C9C(s32 *a0); +extern void func_80142838(s32 *a0); +extern s32 func_80142D38(s32 *a0); +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_80142A10(int param_1); +extern void func_80142C84(s32 a0); +extern void func_80143994(s32 a0, s32 a1); +extern void func_80142B2C(void *arg0); +extern void func_801439C0(u8 *a0); +extern void func_80142BB4(s32 *param_1, s32 param_2, s32 param_3); +extern void func_80142C7C(void); +extern void func_80142C9C(s32 * arg0); +extern void func_80142DC4(int param_1); +extern void func_80142E38(int param_1); +extern void func_80142EC0(s32 param_1); +extern void func_80142F68(s32 *a0); +extern void func_80142FFC(s32 *a0); +extern void func_8014305C(int param_1); +extern void func_801430F4(s32 *a0); +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_801432FC(s32 *a0); +extern void func_80143390(s32 *a0); +extern void func_80143458(); +extern void func_801433F0(s32 a0); +extern void func_80143458(s32 param_1); +extern void func_8014358C(); +extern void func_8014350C(s32 *a0); +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 s16 D_801152AC; +extern s16 D_801152AA; +extern void func_801439FC(s32 a0); +extern void func_80143B30(void *a0); +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 ApplyMatrixSV(void*, Svec_801372B0*, Svec_801372B0*); +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 void func_80143EBC(s32 a0); +extern void func_80144054(void *a0); +extern void func_80144090(s32 param_1); +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 void func_80144458(void *arg0); +extern u8 D_800D387C[]; +extern u8 D_800D3888[]; +extern void func_80144558(u8 *param_1); +extern void func_8014462C(u8 *a0); +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 int func_80144B14(int param_1); +extern void func_80144AEC(s32 *a0); +extern s32 func_80013294(void *a0, void *a1); +extern int func_80144B14(int param_s0); +extern void func_801458E0(void); +extern s32 D_800AE6AC; +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(); +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 u8 D_80126BA4; +extern void (*D_8017FE70[])(void *); +extern void func_8014C6F4(); +extern void func_80155150(s32 a0); +extern void func_801470C0(s32 a0); +extern void func_80147478(s32 a0); +extern void func_80147118(s32 a0); +extern void func_8014BDE8(s32 a0); +extern short func_801508F8(s32 a0); +extern void func_8014B5B0(s32 *a0); +extern void func_80161D88(); +extern void func_801463A0(void); +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 u16 *func_80146750(u16 *param_1); +extern u16 *func_8014680C(short *param_1); +extern void aF801466F0(u16 a0, s32 a1, u16 a2, u16 a3, u16 sp5, s32 sp6, s32 sp7, s32 sp8) __asm__("func_801466F0"); +extern void aF801466F0(u16 a0, s32 a1, u16 a2, u16 a3, u16 sp5, s32 sp6, s32 sp7, s32 sp8); +extern unsigned short D_8011FD10; +extern int D_8011FA1C; +extern unsigned short D_8011F9D6; +extern unsigned short D_8011F9DA; +extern unsigned short D_8011F9DE; +extern int D_8011FA20; +extern int D_8011FA24; +extern unsigned short * func_80146750(unsigned short *a0); +extern unsigned short * func_8014680C(short *param_1); +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 void func_80146AFC(void*); +extern void aF80146A6C(); +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 s32 func_80146B9C(void * arg0); +extern s32 aF80146AFC(); +extern u16 D_8011DA28; +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_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 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 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(); +extern void func_80147300(u16 arg0); +extern void func_80147324(s32 arg0); +extern void func_80015978(s32, s32*); +extern s32 aF8012E5CC(s32, s32, s32) __asm__("func_8012E5CC"); +extern void aF80147364(); +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_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_80015978(int a0, int *a1); +extern int func_80133784(int a0, void *a1, int a2); +extern void func_801483E8(unsigned char *self); +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 void func_80149374(s32 arg0, s32 arg1); +extern void func_801493D0(s32 param_1, s32 param_2, s32 param_3); +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_80149544(s32 a0, s32 a1, s32 a2); +extern void func_80149584(s32 a0, s32 a1, s32 a2); +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 u8 D_80078EC1; +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 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 s32 func_801498E0(s32 *a0); +extern s32 func_800CCF28(s32 a0); +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 s32 func_80149F2C(s32 a0, s32 a1); +extern s32 func_80149E94(s32 arg0); +extern void func_801599A4(void *a0); +extern void func_80159B3C(void *a0); +extern void func_8016EDEC(s32, s32, s32); +extern void func_80149FA8(void); +extern s32 func_80149FB0(s32 a0); +extern s32 func_80135260(s32 arg0, s32 arg1, s16 *arg2, s16 *arg3); +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 int func_8014A51C(int param_1); +extern s32 func_8014A674(s32 *a0); +extern s32 func_8014A69C(s32 *a0); +extern s32 func_8014A6C4(s32 a0); +extern s32 func_8014A738(void *arg0); +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(); +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 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_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 void func_80029ED4(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 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 aF8014C4AC(); +extern s32 func_8014C568(s16 *a0, s16 *a1); +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 void func_8014C6F4(u8 *a); +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 D_80126B9C; +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 void func_8014CBF8(void *a0); +extern void func_8014D3E0(); +extern void func_8014D04C(void); +extern void func_8014CCB4(void); +extern void func_8014CC28(s32 a0); +extern void func_8014CD0C(u8 *a0); +extern s32 func_8014CF04(s32 a0, s32 a1, void *a2); +extern int func_8014CD80(s32 a0, u16 *a1, u16 *a2); +extern int func_80135A4C(); +extern int func_80135888(); +extern int func_8014C918(); +extern int func_8014CD80(int param_1, unsigned short *param_2, unsigned short *param_3); +extern s32 func_8014DD8C(s32 arg0, void *arg1, void *arg2); +extern s32 func_8014EA4C(void * a0, void * a1, void * a2, s32 _arg3); +extern s32 func_80135A4C(s32 a0, s32 a1, s32 *a2, s32 a3); +extern void func_8014D0A4(s32); +extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); +extern s32 func_8014D12C(); +extern void func_8014D0A4(s32 a0); +extern s32 func_8014D12C(s32 arg0, void *a1, void *a2); +extern s32 func_8014D2A0(s32 arg0, void *a1, void *a2); +extern s32 func_8014D610(s32 a0, s32 a1, u16 *a2); +extern s32 func_8014D4C0(s32 a0, void *a1, void *a2); +extern void func_8014D438(s32 a0); +extern s32 func_8014D610(s32 param_1, s32 param_2, u16 *param_3); +extern void func_8014D790(s32); +extern void func_8014D738(void); +extern s32 func_8014DD8C(s32 a0, void *a1, void *a2); +extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2); +extern void func_8014D790(s32 a0); +extern void func_800139C8(s32 a0, void *a1, void *a2); +extern s32 func_8014DCE0(s32 a0, s32 a1, s32 a2); +extern s32 func_8014D820(s32 a0, u16 *a1, u16 *a2x); +extern s32 func_8014DCE0(s32 arg0, s32 arg1, s32 arg2); +extern void func_8014DF94(s32); +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 void func_8014DF94(s32 arg0); +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_8014E48C(s32); +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_8014E48C(s32 a0); +extern s32 aF8014E5B4(); +extern void func_8014E6F8(struct SubE6F8*); +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 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_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_8014F24C(struct SubF24C*); +extern void func_8014F1F4(void); +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 s32 func_8014F468(); +extern int func_8014F6F4(); +extern s32 func_8014F3E8(s32 param_1); +extern int func_8014F74C(); +extern s32 D_801152BC; +extern s32 func_8014F4C0(s32 arg0); +extern int func_8014F74C(s32 arg0); +extern s32 func_8014FA70(s32 a0); +extern void func_8014FA04(s32 a0); +extern s32 func_8014FC18(u8*); +extern void func_8014FBC0(void); +extern s32 func_8014FC18(u8 *self); +extern int func_8014FD54(int); +extern void func_8014FCFC(void); +extern int func_8014FD54(int param_1); +extern s32 func_80150170(void *a0); +extern s32 func_8014FE60(); +extern s32 func_8014FE60(void *e); +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(); +extern void func_80147324(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 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_80151664(void); +extern void func_80154A74(s32 a0, s32 a1); +extern void func_801553C0(s32 a0); +extern void func_80153C18(); /* fleet canon: K&R empty prototype — engine_core.h:75/:1682 define it (void); a prototyped (s32) decl would be `conflicting types` here, and the arg still passes in $a0 under default promotions, so codegen is unchanged. */ +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 void func_80151944(void *a0); +extern s32 func_80151924(void); +extern void func_8014E934(s32 a0); +extern s32 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_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 s32 func_801535F4(void *arg0); +extern void func_8015BF48(s32 *a0); +extern void func_80151B98(int param_1); +extern void func_80153C18(); +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_80152058(void *a0); +extern void func_801520DC(s32 a0); +extern void func_80152094(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 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(); +extern void (*D_8011DB28)(s32 a0); +extern s32 func_801536DC(s32 param_1); +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_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 u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154ED8(s32 a0, s32 a1); +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 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 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 void func_80156044(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 u16 D_8012693A; +extern u16 D_801152B8; +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 S8 D_80126AF0[]; +extern s32 func_80156600(void* _arg0); +extern void func_80156A14(s32 *a0); +extern void func_80156648(s32 *a0); +extern void func_80156B74(s32 param_1, u32 param_2, u8 *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 void func_80156670(s32 param_1, s32 param_2, s32 param_3, s32 param_4, s32 param_5, u16 param_6); +extern u8 D_8011DAD8[]; +extern void func_801567BC(s32 a0); +extern B8 D_80128120[]; +extern B8 D_80128138[]; +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_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 s32 func_80135004(s32 a0, void *a1, s32 a2); +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 s32 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(s32 *a0); +extern void func_80157808(s32 *a0); +extern void func_801577C8(s32 *a0); +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(); +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_80157D74(u16 *a0); +extern void func_80157DC4(void *a0); +extern void func_80157FC4(void *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 s32 func_80159464(); +extern int func_800D0F8C(int a0); +extern void func_8016F0E4(void); +extern void func_800D0F4C(s32 a0); +extern void func_80158814(void *a0); +extern void func_80158638(void *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); +extern void func_80158AE4(void *a0); +extern void func_80158AB4(void *a0); +extern s32 D_80078EC8; +extern void func_8016F264(void); +extern void func_80165840(void); +extern void func_801658DC(void); +extern void func_80165A78(s32); +extern void func_80158AE4(void * a0); +extern void func_80158BB0(void *arg0); +extern s32 func_80159404(s32 a0, s32 a1); +extern void func_80158C40(s32 *a0); +extern void func_80158CD8(s32 *a0); +extern s32 func_80159434(s32 a0, s32 a1); +extern void func_80158D60(s32 a0); +extern M2C_UNK D_800D5904; +extern void func_80158E24(s32 *a0); +extern int rand(void); +extern void func_80158F00(int param_1); +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80158FA4(s32 param_1); +extern u8 D_80110C94[]; +extern u8 D_80110CD4[]; +extern void func_80159070(void *a0); +extern s32 func_80029A94(s32); +extern void func_80175454(void); +extern void func_800298BC(void *); +extern void func_8002992C(s32); +extern void func_800CF804(void); +extern void func_800CF818(void); +extern u8 D_80110D0C[]; +extern u8 D_80110C3C[]; +extern void func_80159120(s32 a0); +extern void func_801592CC(s32 *a0); +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void func_80159698(void *a0); +extern s32 func_801596D4(void *a0); +extern void func_80174B6C(void); +extern void func_8013C938(void); +extern void func_8002850C(s32, s32, s32); +extern void func_80028620(s32, void *); +extern s32 func_801596F0(s32 param_1); +extern s32 func_80159874(void); +extern void func_800167B8(s32 a0); +extern s32 func_8015987C(s32 a0); +extern int func_800167F0(int arg); +extern int func_801598BC(void); +extern void func_80159968(void *a0); +extern void func_801598E0(u8 *a0); +extern void func_80159A20(); +extern void func_801599E0(void *a0); +extern void func_80159A18(void); +extern void func_80159BE4(s32); +extern void func_80159B08(s32 *a0); +extern void func_80159B70(void *a0); +extern void func_80159B3C(void * a0); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern void func_80159BE4(s32 arg0); +extern void func_8015A1C8(s32 a0); +extern void func_8015A2D8(s32); +extern void func_8015A1FC(s32 *a0); +extern void func_8015A264(void *a0); +extern void func_8015A230(s32 *a0); +extern void func_8015A2A0(s32 a0); +extern s32 func_80172608(u8 *a0); +extern void func_8015A2D8(s32 param_1); +extern s32 func_80161B84(void *a0); +extern s32 func_80161B18(void *a0); +extern s32 func_8014A048(s32 a0); +extern s32 func_80161BE0(s32*); +extern s32 func_801619A4(s32 *a0); +extern void func_800CCCC0(s32 a0); +extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); +extern void func_8015AC48(s32 a0); +extern s32 func_8015AB7C(s32 a0); +extern void func_80147A84(s32 a0); +extern void func_8015C6E0(s32 *a0); +extern void func_8014E934(s32 _arg0); +extern void func_80161278(void *a0); +extern void func_80161C24(s32 a0, s32 a1); +extern void func_801483E8(unsigned char*); +extern s32 func_8015A3C8(); +extern u8 D_800D48DC; +extern s32 D_8011F9C4; +extern s32 func_80161CD0(s32 a0, s32 a1); +extern void func_8015AC48(s32 arg0); +extern void func_8015AC90(s32 a0); +extern void func_8015ADB0(s32 a0); +extern void func_8015ACC4(s32 *arg0); +extern void func_8015AD3C(void *a0); +extern void func_8015AD08(void *arg0); +extern void func_8015ADB0(s32); +extern void func_8015AD78(s32 a0); +extern void func_8015ADB0(s32 arg0); +extern void (*D_80180A1C[])(void *); +extern s32 func_80161A60(s32 a0); +extern s32 func_80149C08(s32 a0); +extern s32 func_8015B6F4(s32 a0); +extern s32 func_8015B7B4(s32 a0); +extern void func_8015B8F8(s32 *a0); +extern s32 func_8015B858(u8 *a0); +extern s32 func_800CF8B4(void); +extern s32 func_80172644(u8 *a0); +extern void func_800CCB78(s32 a0); +extern s32 func_80161488(void *a0); +extern void func_8015CC40(s32 *a0); +extern void func_8015CF8C(s32 *a0); +extern s32 D_800D4E94; +extern s32 D_800D4ED4; +extern u8 D_800D4F8C[]; +extern s32 D_800D4A9C; +extern s32 D_800D4B48; +extern s32 func_8015AE2C(); +extern int func_8015B6F4(int param_1); +extern s32 func_8015B950(s32 arg0); +extern void func_8015BD8C(s32 *a0); +extern s32 func_8015BE94(); +extern void func_8015BE38(); +extern void func_8015BE38(void *a0); +extern s32 func_8015BE74(void); +extern void func_80161124(void *a0); +extern s32 func_8015BE94(s32 *a0); +extern s32 func_8015BEC4(void); +extern s32 func_8015BEE4(void); +extern void func_8015BF04(s32 *a0); +extern void func_8015C0C4(s32 a0); +extern void func_8015BFF4(void *a0); +extern void func_8015BF7C(s32 *a0); +extern void func_8015C030(s32 *a0, s32 a1); +extern void func_8015BFB0(s32 *a0, s32 a1); +extern void func_8015C0C4(s32); +extern void func_8015C08C(s32 a0); +extern s32 func_8015C128(s32 param_1); +extern s32 func_801496D4(void*); +extern s32 func_801619A4(s32*); +extern s32 func_80149AA8(s32*); +extern void func_80149AD4(s32*); +extern s32 func_80149B54(s32*); +extern void func_80149BAC(s32*); +extern s32 func_801498E0(s32*); +extern s32 func_80149954(s32); +extern s32 func_80149A64(s32*); +extern void func_801473EC(s32*); +extern void func_8014CC28(s32); +extern s32 func_8014F3E8(s32); +extern void func_80159BE4(s32 a0); +extern void func_8015C6E0(s32*); +extern void func_8015C32C(s32 arg0); +extern void func_8015C6A4(void); +extern void func_8015C788(s32 a0); +extern void func_8015C6AC(s32 *a0); +extern void func_8015C714(void *a0); +extern void func_8015C788(s32); +extern void func_8015C750(s32 a0); +extern void func_80161240(void *a0); +extern void func_80161C24(s32, s32); +extern void func_8015C7E4(u16 *param_1); +extern void func_8015C944(int param_1); +extern void func_8015CA28(u16 *param_1); +extern void func_8015CB94(s32 a0); +extern void func_8015CBCC(void); +extern void func_8015CBD4(void); +extern void func_8015CBDC(void); +extern void func_8015CBE4(void); +extern void func_8015CBEC(void); +extern void func_8015CBF4(void); +extern void func_8015CBFC(void); +extern void func_8015CC04(void); +extern void func_8015CC0C(s32 *param_1); +extern void func_8015CC74(); +extern void func_8015CC74(void *a0); +extern s32 func_8015CCD0(); +extern s32 func_8015CCB0(void); +extern s32 func_801725E0(u8 *a0); +extern s32 func_8015CCD0(s32 param_1); +extern s32 func_8015CD20(s32 arg0); +extern void func_8015CF24(s32 a0); +extern void func_8015D01C(); +extern void func_8015CF58(s32 *param_1); +extern void func_8015CFC0(); +extern void func_8015CFC0(void *a0); +extern void func_8015CFFC(void); +extern void func_8015D01C(int param_1); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 func_80149FB0(s32); +extern void func_80146DB8(s32*, s32*); +extern void func_8014FA04(s32); +extern void func_80159B70(void*); +extern void func_8015D380(s32); +extern void func_8015D1B8(s32 *a0); +extern void func_8015D380(s32 a0); +extern void func_8015D414(int param_1); +extern void func_8015D57C(s32); +extern void func_8015D480(s32 *a0); +extern s32 func_8015D4E8(); +extern void func_8015D4B4(s16 *a0); +extern void func_8015D524(s32 arg0); +extern void func_8015D544(s32 a0); +extern void func_801746DC(void); +extern void func_8015D57C(s32 arg0); +extern void func_80154150(int, int); +extern void func_80149374(int, int); +extern void func_8015D5E8(int param_1); +extern int func_80148AFC(void*); +extern s32 func_80161B18(void *); +extern s32 func_80161B84(void *); +extern u16 func_80148800(s32*); +extern s32 func_80165624(s32); +extern s32 func_801488A8(u8*); +extern void func_80154A74(s32, s32); +extern void func_8015DAC4(s32*); +extern void func_8015DE24(s32*); +extern void func_8015DA5C(s32); +extern void func_8015F948(s32*); +extern void func_800CAF14(void *); +extern void func_80154150(s32, s32); +extern void func_80147A84(s32); +extern void func_80149374(s32, s32); +extern void func_80147078(s32*, s16); +extern void func_80159B70(void *); +extern void func_8015C714(void *); +extern void func_8015D738(void *arg0); +extern int func_8015E0D4(int); +extern void func_8015DA5C(s32 a0); +extern void func_8015DB6C(s32 a0); +extern void func_8015DA90(s32 *a0); +extern void func_8015DAF8(); +extern void func_8015DAF8(void *a0); +extern void func_8015DB6C(s32); +extern void func_8015DB34(s32 a0); +extern void func_8015DCB8(s32 a0); +extern int func_8015DD74(int); +extern void func_8015DBD4(void *arg0); +extern int func_8015DC84(int a0); +extern void func_8015DCB8(s32 param_1); +extern int func_8015DD74(int arg0); +extern void func_8015DECC(s32 a0); +extern void func_8015DDF0(s32 *a0); +extern void func_8015DE58(); +extern void func_8015DE58(void *a0); +extern void func_8015DECC(s32); +extern void func_8015DE94(s32 a0); +extern void func_8015E018(s32 a0); +extern void func_8015DF34(void *arg0); +extern int func_8015DFE4(int a0); +extern void func_8015E018(s32 param_1); +extern int func_8015E0D4(int a0); +extern void func_8015E22C(s32 a0); +extern void func_8015E150(s32 *a0); +extern s32 func_8015E1B8(); +extern void func_8015E184(s32 *arg0); +extern void func_8015E22C(s32); +extern void func_8015E1F4(s32 a0); +extern u8 D_800D4FF4[]; +extern u8 D_800D5098[]; +extern u8 D_800D5060[]; +extern s32 func_8014A850(s32 a0); +extern void func_8015E40C(s32 a0); +extern void func_8015E588(void); +extern void func_8015E4B0(s32 a0); +extern void func_8015E288(s32 a0); +extern void func_8015E5B0(u8*); +extern void func_8015E344(u16 *param_1); +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern s32 func_8013C9C4(s32 *a0); +extern void func_8015E5B0(u8 *self); +extern void func_8015E698(u16 *param_1); +extern void func_8015E714(s32 *a0); +extern void func_8015E95C(s32); +extern void func_8015E84C(s32 *a0); +extern void func_8015E8E8(); +extern void func_8015E9B8(s32 *a0); +extern void func_8015E8B4(s32 *a0); +extern void func_8015E8E8(void *a0); +extern void func_8015E924(s32 a0); +extern void func_8015E95C(s32 a0); +extern s16 D_801152A0; +extern void func_80160818(s32 *a0); +extern u16 func_801487F4(s32*); +extern s32 func_80149D10(s32); +extern void func_80175150(s32*); +extern void func_8016EE40(s32, s32, s32); +extern s32 func_80149744(struct S_80149744*); +extern s32 func_801491C4(s32); +extern s32 func_80148E54(void *a0); +extern s32 func_80161208(); /* canonical no-proto (§17a-1) */ +extern void func_8015EA3C(void *arg0); +extern void func_8015ED6C(s32 *a0); +extern void func_8015EE7C(s32); +extern void func_8015EDA0(s32 *a0); +extern s32 func_8015EE08(); +extern void func_8015EDD4(s32 *arg0); +extern void (*D_80180D10[])(void); +extern s32 func_8015EE08(void *arg0); +extern void func_8015EE44(s32 a0); +extern void func_8015EE7C(s32 param_1); +extern void func_8015EEE0(void *arg0); +extern void func_8015EF9C(void); +extern void func_8015F080(s32); +extern void func_8015EFA4(s32 *a0); +extern void func_8015F00C(); +extern void func_8015EFD8(s32 *a0); +extern void (*D_80180D18[])(void); +extern void func_8015F00C(s32 *a0); +extern void func_8015F048(s32 a0); +extern void func_8015F080(s32 a0); +extern void func_8015F118(void *a0); +extern void func_8015F260(s32 *a0); +extern void func_8015F380(); +extern void func_8015F2BC(s32 *a0); +extern void func_8015F324(); +extern void func_8015F2F0(s32 *a0); +extern void func_8015F324(void *a0); +extern void func_8015F360(void); +extern s32 func_801725B8(u8 *a0); +extern void func_8015F380(void* arg0); +extern void func_801477E8(s32*, s32); +extern s32 func_80148980(u8*); +extern s32 func_80146A6C(s32, void*, s32, s32, s32, s32, s32); +extern void func_80146E90(s32*, s32); +extern s32 func_801725B8(u8*); +extern void func_80019064(void*); +extern void func_801484B0(s32, s32); +extern void func_80148534(s32, s32); +extern void func_8015F448(s32 arg0); +extern void func_8015F738(s32 *a0); +extern void func_8015F848(s32 *a0); +extern void func_8015F76C(s32 *a0); +extern s32 func_8015F7D4(); +extern void func_8015F7A0(s32 *arg0); +extern void func_8015F810(s32 *a0); +extern s32 D_8011F730; +extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); +extern void func_80147078(s32 *, s16); +extern void func_8015F89C(void *arg0); +extern void func_8015F948(s32 *param_1); +extern void func_8015F9A4(void *arg0); +extern void func_8015FA24(s32 arg0); +extern void func_8015FBE0(s32 *a0); +extern void func_8015FA44(s32 *a0); +extern void func_8015FAAC(); +extern void func_8015FA78(s32 *a0); +extern void (*D_80180D64[])(void); +extern void func_8015FAAC(void *a0); +extern s32 func_801612B8(void *a0, s32 a1); +extern void func_8016007C(s32 a0); +extern void func_8015FAE8(void *arg0); +extern void func_8015FBE0(s32 *param_1); +extern void func_8015FCC8(void *param_1); +extern void func_8015FD74(int param_1); +extern u8 func_80165700(s32 a0, s32 a1); +extern void func_8015FDCC(s32 a0); +extern void func_8015FE70(u16 *param_1); +extern u8 func_801656E8(s32 a0, s32 a1); +extern void func_80165670(s32 a0, s32 a1); +extern void func_8016004C(s32 a0); +extern void func_8015FF20(void *param_1); +extern void func_801601AC(s32 *a0); +extern void func_801600D0(s32 *a0); +extern void func_80160138(); +extern void func_80160104(s32 *a0); +extern void (*D_80180DF4[])(void); +extern void func_80160138(void *a0); +extern void func_80160174(s32 *a0); +extern void func_801601E4(s32 *a0); +extern void func_80160244(s32 *a0); +extern void func_801602A4(s32 *a0); +extern void func_8016032C(void); +extern void func_80160410(s32 *a0); +extern void func_80160334(s32 *a0); +extern void func_8016039C(); +extern void func_80160368(s32 *a0); +extern void (*D_80180E04[])(void); +extern void func_8016039C(void *a0); +extern void func_801603D8(s32 *a0); +extern u8 D_80062BD0; +extern void func_80160410(s32 * a0); +extern void func_80160534(u8 *p); +extern void func_801607B8(s32 *a0); +extern void func_801608C0(s32 *a0); +extern void func_801607E4(s32 *a0); +extern void func_8016084C(); +extern void (*D_80180E0C[])(void); +extern void func_8016084C(void *a0); +extern void func_80160888(s32 *a0); +extern void func_80160A74(s32 *a0); +extern void func_80160920(unsigned short *param_1); +extern void func_801609B8(u16 *param_1); +extern void func_80160A28(s32 a0); +extern void func_80160BB4(s32 *a0); +extern void func_80160ACC(s32 *a0); +extern s32 func_80160B34(); +extern void func_80160B00(s32 *arg0); +extern void (*D_80180E18[])(void); +extern s32 func_80160B34(void *a0); +extern void func_80160B70(s32 a0); +extern void func_80160C28(void *arg0); +extern void func_80160CB4(s32 *a0); +extern void func_80160D10(void *arg0); +extern void func_80160DEC(u8 *a0); +extern void func_80160F00(); +extern void func_80160E3C(s32 *a0); +extern void func_80160EA4(); +extern void func_80160E70(s32 *a0); +extern void func_80160EA4(void *a0); +extern void func_80160EE0(void); +extern void func_80160F00(void* arg0); +extern u8 D_80110EC0; +extern void func_80160F70(s32 a0); +extern void func_80160FE0(s32 *a0); +extern void func_80161034(void *a0); +extern void func_80161094(s32 a0); +extern void func_801610FC(void); +extern void func_8016130C(void*, s32); +extern void aF80161208(); +extern void func_8016130C(void *a0, s32 a1); +extern int func_80161374(int param_1, unsigned int param_2); +extern s32 func_801612B8(void * a0, s32 a1); +extern void func_801599A4(void*); +extern void func_8015BDD0(s32*); +extern void func_8015BF48(s32*); +extern s32 aF8016130C(); +extern void func_80015954(s32, s32); +extern s32 func_8016163C(s32 a0, u32 a1); +extern s32 func_80161774(int param_1, u32 param_2); +extern s32 func_8016197C(s32 a0, s32 a1); +extern int func_80161888(int param_1, unsigned int param_2); +extern void func_801614E4(void *a0); +extern void func_8016191C(void *a0, s32 a1); +extern void func_8016151C(void *a0); +extern void func_80161554(void *a0); +extern s32 func_801615C4(void * arg0, s32 arg1); +extern s32 func_80161774(int a0, u32 a1); +extern s32 func_80161888(s32 a0, u32 a1); +extern void func_8014C010(int a0, int a1); +extern int aF8016191C(); +extern s32 func_80161A00(s32 a0); +extern s32 func_80161A30(s32 a0); +extern s32 D_800AE6B0; +s32 func_801497A8(s32 *a0); +void func_801599A4(void *a0); +void func_80149864(void); +extern s32 func_80161BE0(s32 *a0); +extern void func_80147324(); +extern void func_80161C24(int param_1, int param_2); +extern void func_80161C98(int param_1, u32 param_2); +extern int func_800CF8B4(); +extern void func_80147324(int arg0); +extern void aF80161CD0(); +extern u16 D_80180E78[]; +extern void func_80161D20(int param_1, u32 param_2); +extern void func_80161E08(s32); +extern s32 func_80162438(s32); +extern s32 D_800AE6A8; +extern s32 D_80180EBC; +extern void func_800D1734(void *); +extern void func_80161D88(void); +extern void func_80161E08(s32 param_1); +extern int func_800291DC(int); +extern int func_800D0E30(void *a0); +extern int func_801620C4(void); +extern s32 func_800D0D7C(s32, s32); +extern void func_8016216C(void); +extern s32 func_801621CC(s32 arg0); +extern void func_801622C4(void); +extern void func_80162330(void *a0); +extern void func_8014706C(void *a0); +extern s32 func_8016236C(u8 *a0); +extern void func_800D0C48(s32 a0); +extern s32 func_801623B8(s32 *a0); +extern s32 func_800167F0(s32 a0); +extern s32 func_80162414(void); +extern s32 func_80162438(s32 _unused0); +extern int func_801626B8(void); +extern void func_80162714(void); +extern void func_80162760(void); +extern void func_801627C0(void); +extern void func_80162834(void *a0); +extern void func_80162968(s32 a0); +extern s32 func_80162ACC(u8 *a0); +extern void func_80162870(s32 param_1); +extern void func_801628F4(s32 *a0); +extern void func_80162968(s32 param_1); +extern void func_80162AC0(s32 *a0, s8 a1); +extern s32 func_80162AE0(u8 *a0); +extern void func_80162AF4(void); +extern void func_80162CC4(void); +extern s32 D_80126D40; +extern void func_80162D28(s32 *a0); +extern void func_80162D88(s32 *a0); +extern void func_80162DE8(s32 *a0); +extern void func_80162E48(s32 *a0); +extern void func_80162EA8(s32 *a0); +extern void func_80162F60(s32 arg0, s32 arg1); +extern void func_80162F80(s32 arg0, s32 arg1); +extern void func_80162FA0(s32 arg0, s32 arg1); +extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80162FC0(s32 *a0); +extern s32 aD_80127090 __asm__("D_80127090"); +extern s32 aD_80127094 __asm__("D_80127094"); +extern s32 aD_80127098 __asm__("D_80127098"); +extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); +extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80163234(s32 a0); +extern s32 D_80115100; +extern s32 func_801632E0(void); +extern s32 D_80115200; +extern s32 func_801632F0(void); +extern u16 D_80126B18[]; +extern void func_80163328(void); +extern s32 func_801633A8(void); +extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); +extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern void *memcpy(void *dst, const void *src, unsigned int n); +extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); +extern void func_80163664(s32, u16, u16, s32, s32, s32, s32, s32, s32, s32, u16, s32, s32); +extern void func_80163534(); +extern void func_80157158(); +extern void func_80163664(s32 a0, u16 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_801636D0(s32 a0, s32 a1); +extern s32 func_80163764(s32 a0); +extern s32 func_8016380C(struct S8016380C *a0, s32 a1); +extern s32 func_801638A0(u8 *a0, s32 a1); +extern s32 func_80163950(s32 a0); +extern void func_80163A58(void *a0); +extern void func_80163A94(s32 param_1); +extern void func_80163C2C(s32 param_1); +extern void func_80163EC8(s32 param_1); +extern void func_80164270(s32 *a0); +extern void func_80164418(); +extern void func_801642AC(s32 a0); +extern void func_8016432C(s32 a0); +extern void func_80164410(void); +extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); +extern void func_801630C4(s32, s32, s32, s32); +extern void func_80164418(s32 s0); +extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80164530(s32 arg0); +extern void func_80164744(s32 param_1); +extern void func_80164A74(s32 *a0); +extern void func_80164930(s32 a); +extern void func_801647A4(int param_1); +extern void func_80164ACC(); +extern void func_80164864(void *a0); +extern void func_80164930(s32 param_1); +extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80164ACC(s32 a0); +extern void func_80164BA0(void *a0); +extern void func_8001CD50(s32 a0, s32 a1); +extern void func_80164DD0(s32 a0); +extern void func_80164DB0(void); +extern void func_80164BDC(s32 param_1); +extern s32 func_80164E40(void); +extern void func_80164CD4(u8 *a0); +extern void func_80164D4C(void *arg0); +extern void func_80164EA4(void *a0); +extern void func_80165124(void *a0); +extern void func_80164EE0(int param_1); +extern s32 func_80165140(s32 a0); +extern void func_801651B8(void *a0); +extern void func_80164F44(void *arg0); +extern void func_80165024(void *a0); +extern void func_80165064(s32 *a0); +extern void func_801650C4(s32 *a0); +extern s32 func_80165140(s32 param_1); +extern void func_80165240(void *param_1, void *param_2, void *param_3); +extern void func_801651B8(void * param_1); +extern s32 func_80017DC4(void *a0, void *a1); +extern void func_80016ED4(void *a0); +extern u8 D_80126CF8; +extern s32 func_801659DC(); +extern void func_8016533C(void); +extern void func_801653F4(s32 a0); +extern void func_80165580(s32 a0); +extern void func_80165374(s32 a0); +extern void func_80165580(s32 _arg0); +extern void func_801653B8(s32 *a0); +extern s32 func_80165624(s32 a0); +extern u8 D_80078EC5; +extern void func_800CAE0C(s32 a0); +extern void func_801654A8(s32 arg0); +extern void func_80165B28(void *a0); +extern void func_801655E4(s32 a0); +extern u8 func_801656D0(s32 a0, s32 a1); +extern void func_800CAF6C(void); +extern void func_80165770(void); +extern void func_801657D8(void); +extern u8 D_80078EC3; +extern void func_801657A0(void); +extern s32 D_80078EA0; +extern s32 D_80078EA8; +extern u8 D_80078EBB; +extern s32 D_80078ED4; +extern s32 D_80078ED8; +extern s32 D_80078EDC; +extern u8 D_80078EE0; +extern void func_80165874(void); +extern s8 D_80078EC4; +extern void func_801658EC(void); +extern s32 func_80165900(void); +extern s32 func_80165910(void); +extern s32 D_8012672C; +extern s32 D_8012811C; +extern s32 D_80126B08; +extern void func_80165938(void); +extern void func_80165958(void); +extern s32 func_80165978(void); +extern void func_80165988(void); +extern s32 func_801659A8(void); +extern void func_801659B8(void); +extern s32 func_801659CC(void); +extern void func_80165A18(void); +extern u8 D_80078EC2; +extern s32 func_80165A50(s32 _arg0); +extern void func_80165AC8(void); +extern void func_80165A78(s32 arg0); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void func_80165BB4(u8 *a0); +extern void func_80165B6C(u8 *a0); +extern void func_80165C58(s32 arg0); +extern void func_80165BFC(void *a0); +extern void func_80165C78(void); +extern void func_80165E2C(u16 *arg0); +extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); +extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); +extern s32 func_80167AE0(); +extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); +extern void func_80166018(void *a0); +extern void func_80166054(s32 arg0); +extern void func_801661CC(s32 param_1); +extern void func_80166244(void* arg0); +extern void func_8016629C(void *a0); +extern void func_801662F4(void *a0); +extern void func_8016634C(void *a0); +extern void func_801663A4(void *a0); +extern void func_801663FC(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_801665B4(); +extern void func_80146C3C(); +extern void func_80166438(u8 *a0); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void func_80166618(void *a0); +extern void func_80166654(void *a0); +extern s32 func_80017758(void *a0, void *a1); +extern s32 func_80166690(s32 param_1, s32 param_2); +extern s32 func_80166994(); +extern void func_80146C3C(u8*); +extern void func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); +extern void func_8016706C(s32 param_1); +extern void func_80149350(s32); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_80017E68(void *a0, void *a1); +extern void func_800D23D0(void *a0); +extern void RotMatrixYXZ(void *a0, void *a1); +extern void func_80048EAC(void *a0, void *a1); +extern s32 func_801670E4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80167540(s32 arg0); +extern void func_80167714(s32 param_1); +extern void func_801678B4(void *a0); +extern void func_801678F0(s32 a0); +extern void func_80167A9C(void *a0); +extern void func_80167AD8(void); +extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); +extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); +extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); +extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); +extern void func_80166F58(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +extern void func_801681FC(s32 param_1); +extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80166690(); +extern void func_80168328(s32 arg0); +extern void func_801683D8(s32 a0); +extern void func_80168430(s32 param_1); +extern void func_801684B4(s32 a0); +extern void func_80168540(s32 a0); +extern void func_801685EC(s32 a0); +extern void func_80168640(s32 a0); +extern void RotMatrixX(int, void*); +extern void func_80168664(void *arg0); +extern void func_80168744(void *a0); +extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_801687CC(s32 a0); +extern void func_80168780(s32 a0); +extern void func_80168828(void); +extern void func_801687CC(s32 param_1); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void func_80168AA8(void *a0); +extern void func_80168AE4(s32 a0); +extern void func_80168B70(s32 a0); +extern void func_800D2318(void); +extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); +extern void func_80168D58(void *a0); +extern void func_80168D94(int a0); +extern void func_80168F40(); +extern void func_80168EC4(s32 a0); +extern s32 func_80016A5C(); +extern void func_80168F40(void *a0); +extern void func_8016901C(void *a0); +extern void func_80169058(s32 a0); +extern s32 func_80169228(void); +extern void func_801691B8(void *a0); +extern void func_801693CC(void *a0); +extern void func_80169584(s32 param_1); +extern void func_80169408(s32 a0); +extern void func_8016951C(int param_1); +extern void func_801696D8(s32 a0, s32 a1); +extern void func_80169830(void *a0); +extern void func_8016986C(s32 a0); +extern s32 func_80169A4C(s32 a0, s32 a1); +extern void func_801699D0(void *arg0); +extern void func_80169B80(void *a0); +extern s32 func_800D222C(void *a0, void *a1, s32 a2); +extern void func_80048D9C(void *a0, void *a1); +extern void func_80169BBC(s32 arg0); +extern void func_80169E44(s32 a0); +extern void func_80169F00(void *a0); +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void func_8016A020(void *a0); +extern void func_8016A05C(void *a0); +extern void func_8016A290(); +extern void func_8016A08C(s32 param_1); +extern void func_8016A1CC(int param_1); +extern void func_8016A290(s32 param_1, void *param_2, void *param_3); +extern void func_8016A700(void *a0); +extern s32 func_8016A73C(s32 arg0); +extern s32 func_8016A8FC(s32 a0); +extern void func_8016A890(s32 arg0); +extern void func_8016AA50(s32 param_1, s32 param_2); +extern void func_8016AB30(void *a0); +/* ==== end §8b carried decl layer ==== */ + + +s32 func_8016AB6C(s32 arg0) { + typedef struct Obj_8016AB6C { + s32 unk0; + s32 unk4; + u8 pad8[0xE - 0x8]; + s16 unkE; + u8 pad10[0x24 - 0x10]; + u8 unk24, unk25, unk26, unk27; + u8 pad28[0x2E - 0x28]; + s16 unk2E; + s16 unk30; + } Obj_8016AB6C; + typedef struct Ent_8016AB6C { + u16 unk0, unk2, unk4, unk6, unk8, unkA, unkC, unkE; + s32 unk10, unk14, unk18, unk1C; + Obj_8016AB6C *unk20; + s16 unk24, unk26, unk28, unk2A; + s32 unk2C; + s32 unk30; + } Ent_8016AB6C; + typedef struct SVec_8016AB6C { + s16 vx, vy, vz, pad; + } SVec_8016AB6C; + + extern s32 func_801783D0(s32 a0, s32 a1); + extern s32 func_80024054(u8 *a0, u8 *a1); + extern void func_8001CE28(Obj_8016AB6C *a0, u8 *a1); + extern s32 rand(void); + extern void func_801465C0(void); + extern void func_80146C3C(u8 *a0); + extern void func_800D20C0(void *a0, void *a1, s32 a2); + extern u8 D_801814AC[]; + extern u8 D_80184668[]; + extern u8 D_801814BC[]; + extern u8 D_80184690[]; + + SVec_8016AB6C sp10; + SVec_8016AB6C sp18; + s16 var_s0; + s16 var_v1; + s16 var_s3; + s16 tmp; + s32 temp_v0; + u32 r; + u8 var_c2; + Obj_8016AB6C *obj; + + temp_v0 = func_801783D0(((Ent_8016AB6C *)arg0)->unk30, 0); + var_s0 = 3; + var_v1 = -0x1000; + ((Ent_8016AB6C *)arg0)->unk30 = temp_v0; + do { + if (temp_v0 & var_v1) { + goto lout; + } + var_s0--; + var_v1 >>= 4; + } while (var_s0 >= 0); +lout: + switch (((Ent_8016AB6C *)arg0)->unk2C) { + case 0: + ((Ent_8016AB6C *)arg0)->unk26 = 1; + ((Ent_8016AB6C *)arg0)->unk24 = 0x60; + ((Ent_8016AB6C *)arg0)->unkA -= 0x20; + break; + case 1: + case 5: + ((Ent_8016AB6C *)arg0)->unk14 = 0xFFF60000; + r = ((u32(*)())rand)(); + tmp = var_s0 + 1; + var_s0 = tmp; + ((Ent_8016AB6C *)arg0)->unk10 = (r & 0xF) - 8 << 0xF; + ((Ent_8016AB6C *)arg0)->unk18 = ((r >> 4) & 0xF) - 8 << 0xF; + ((Ent_8016AB6C *)arg0)->unk26 = 4; + ((Ent_8016AB6C *)arg0)->unk24 = 0x80; + ((Ent_8016AB6C *)arg0)->unk30 |= 0xA << (tmp * 4); + break; + case 2: + case 4: + ((Ent_8016AB6C *)arg0)->unk26 = 4; + ((Ent_8016AB6C *)arg0)->unk24 = 0x80; + ((Ent_8016AB6C *)arg0)->unkA -= 0x18; + break; + case 3: + tmp = var_s0 + 1; + var_s0 = tmp; + var_s0++; + ((Ent_8016AB6C *)arg0)->unk26 = 4; + ((Ent_8016AB6C *)arg0)->unk24 = 0x80; + ((Ent_8016AB6C *)arg0)->unkA -= 0x18; + ((Ent_8016AB6C *)arg0)->unk30 = (((Ent_8016AB6C *)arg0)->unk30 | (0xF << (tmp * 4))) * 0x10; + break; + case 6: + case 7: + obj = ((Obj_8016AB6C *(*)(s32))func_801465C0)(temp_v0); + if (obj == 0) { + ((void(*)(Ent_8016AB6C *))func_80146C3C)(((Ent_8016AB6C *)arg0)); + return; + } + sp10.vx = ((Ent_8016AB6C *)arg0)->unk6; + sp10.vy = ((Ent_8016AB6C *)arg0)->unkA - 0x18; + sp10.vz = ((Ent_8016AB6C *)arg0)->unkE; + ((void(*)(SVec_8016AB6C *, SVec_8016AB6C *, s32))func_800D20C0)(&sp10, &sp18, 6); + ((Ent_8016AB6C *)arg0)->unk6 = sp10.vx; + ((Ent_8016AB6C *)arg0)->unkA = sp10.vy; + ((Ent_8016AB6C *)arg0)->unkE = sp10.vz; + if (((Ent_8016AB6C *)arg0)->unk2C == 6) { + var_s3 = func_80024054(D_801814AC, D_80184668) + 3; + func_8001CE28(obj, D_80184668); + } else { + var_s3 = func_80024054(D_801814BC, D_80184690) + 9; + func_8001CE28(obj, D_80184690); + } + obj->unkE = var_s3; + obj->unk4 |= 0x04000000; + if (((Ent_8016AB6C *)arg0)->unk2C == 6) { + obj->unk27 = 0xB5; + var_s0 = 0x70; + } else { + obj->unk27 = 0xAE; + var_s0 = 0xB0; + } + var_c2 = var_s0; + var_s0 = var_s3 >> 2; + obj->unk2E = -8; + obj->unk30 = 0; + obj->unk26 = var_c2; + obj->unk25 = var_c2; + obj->unk24 = var_c2; + ((Ent_8016AB6C *)arg0)->unk20 = obj; + break; + } + ((Ent_8016AB6C *)arg0)->unk2A = 4 - (var_s0 * 4); + ((Ent_8016AB6C *)arg0)->unk28 = var_s0; + ((Ent_8016AB6C *)arg0)->unk1C = 0xB; + ((Ent_8016AB6C *)arg0)->unk2++; +} + + diff --git a/src/ov_MAIN_012/ov_MAIN_012_jr_8016AE5C.c b/src/ov_MAIN_012/ov_MAIN_012_jr_8016AE5C.c index c5607a87a..a528eacd6 100644 --- a/src/ov_MAIN_012/ov_MAIN_012_jr_8016AE5C.c +++ b/src/ov_MAIN_012/ov_MAIN_012_jr_8016AE5C.c @@ -4389,7 +4389,23 @@ DEFINE_func_8016E688() /* dedup: shared engine-core @0x8016e688 (src/shared) */ DEFINE_func_8016E6E4() /* dedup: shared engine-core @0x8016e6e4 (src/shared) */ -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_8016AE5C", func_8016E728); +extern void func_80146C3C(u8*); +extern void func_8016E778(); + +void func_8016E728(u8 *a0) { + s32 v0; + s32 v1; + v0 = (u16)*(u16 *)(a0 + 0x12) + 0x400; + v1 = (u16)*(u16 *)(a0 + 0x16) - 8; + *(u16 *)(a0 + 0x12) = v0; + *(u16 *)(a0 + 0x16) = v1; + if ((s16)v1 <= 0) { + ((void (*)(void))func_80146C3C)(); + } else { + ((void (*)(void))func_8016E778)(); + } +} + DEFINE_func_8016E778() /* dedup: shared engine-core @0x8016e778 (src/shared) */ diff --git a/src/ov_MAIN_012/ov_MAIN_012_jr_801789AC.c b/src/ov_MAIN_012/ov_MAIN_012_jr_801789AC.c index 1d5799eec..1fcd3e4e1 100644 --- a/src/ov_MAIN_012/ov_MAIN_012_jr_801789AC.c +++ b/src/ov_MAIN_012/ov_MAIN_012_jr_801789AC.c @@ -5723,7 +5723,18 @@ void func_8017BEB4(void) { INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_801789AC", func_8017BEBC); -INCLUDE_ASM("asm/ov_MAIN_012/nonmatchings/ov_MAIN_012_jr_801789AC", func_8017BEE4); +s32 func_8017BEE4(void) { + extern void (*D_80181D6C[10])(void); + extern s16 D_801853F0; + extern s16 D_801853F2; + + D_80181D6C[D_801853F0](); + if (D_801853F2 != 0) { + return D_801853F2; + } + return 0; +} + void func_8017BF38(void) { extern void func_8017C008(s32 a0, s32 a1); diff --git a/src/ov_SC01_006/ov_SC01_006_jr_8017ED5C.c b/src/ov_SC01_006/ov_SC01_006_jr_8017ED5C.c index c282cd45a..29a1f45cb 100644 --- a/src/ov_SC01_006/ov_SC01_006_jr_8017ED5C.c +++ b/src/ov_SC01_006/ov_SC01_006_jr_8017ED5C.c @@ -3109,7 +3109,19 @@ INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_8018041 INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_8018048C); -INCLUDE_ASM("asm/ov_SC01_006/nonmatchings/ov_SC01_006_jr_8017ED5C", func_80180564); +extern u8 D_80185E38[]; +extern void func_800D1724(s32 a0); + +void func_80180564(s32 *a0) { + s32 v1; + v1 = a0[7] - 1; + a0[7] = v1; + if (v1 != -1) { + return; + } + func_800D1724((s32)D_80185E38); +} + DEFINE_func_801805A0() /* dedup: shared engine-core @0x801805A0 (src/shared) */ diff --git a/src/ov_SC01_008/ov_SC01_008_jr_8017BE9C.c b/src/ov_SC01_008/ov_SC01_008_jr_8017BE9C.c index ce71d552d..0c7ed98e4 100644 --- a/src/ov_SC01_008/ov_SC01_008_jr_8017BE9C.c +++ b/src/ov_SC01_008/ov_SC01_008_jr_8017BE9C.c @@ -3725,7 +3725,54 @@ void func_8017DA80(void) { INCLUDE_ASM("asm/ov_SC01_008/nonmatchings/ov_SC01_008_jr_8017BE9C", func_8017DA9C); -INCLUDE_ASM("asm/ov_SC01_008/nonmatchings/ov_SC01_008_jr_8017BE9C", func_8017DBEC); +void func_8017DBEC(void) { + extern s16 D_800B9A02; + extern s16 D_801A3320; + extern u8 D_800B9A15; + extern u8 D_801151C8[]; + extern s32 D_801151D0; + extern u32 D_801A3458; + extern s32 D_801A345C; + extern u16 D_8011511A; + extern u8 D_80115138[]; + extern u16 D_80115112; + extern s32 func_80014ED4(s32 a0); + extern void func_80139954(void); + extern s16 func_8014168C(s16 a0); + extern s32 func_8017EC68(s32 a0, s32 a1); + extern void func_8017E050(void); + extern void func_80137B80(void); + + u16 idx; + volatile s32 pad[2]; + + D_801151D0 = *(s32 *)&D_801151C8[(*(u16 *)&D_800B9A02) * 4]; + + if (D_801A3458 != 0) { + if (func_801399F0(D_801A345C) != 0) { + D_801A3458 = 0; + } + } else { + if ((func_80014ED4(0) & 0x50) != 0) { + idx = *(u16 *)&D_8011511A; + if (D_80115138[idx] == 8) { + func_8017EC68(0xF, func_8014168C(idx)); + } + if (D_801A3320 != 0) { + func_80139954(); + D_800B9A15 = 0; + func_8002D4C8(0x474, 0); + D_80115112 = D_80115112 + 1; + } else { + D_80115112 = D_80115112 - 1; + } + } + } + + func_8017E050(); + func_80137B80(); +} + diff --git a/src/ov_SC01_009/ov_SC01_009_jr_8017E590.c b/src/ov_SC01_009/ov_SC01_009_jr_8017E590.c index 96c80f136..38e87ff56 100644 --- a/src/ov_SC01_009/ov_SC01_009_jr_8017E590.c +++ b/src/ov_SC01_009/ov_SC01_009_jr_8017E590.c @@ -3161,7 +3161,19 @@ extern void func_8017D2E0(s32 arg0, s32 arg1); } -INCLUDE_ASM("asm/ov_SC01_009/nonmatchings/ov_SC01_009_jr_8017E590", func_8017F488); +extern s16 func_8017D2D0(void); + +s32 func_8017F488(s32 arg0) { + s16 var; + + var = func_8017D2D0(); + if (var == 0) { + return 0; + } + *(s16 *)(arg0 + 0x10A) = var - 1; + return 1; +} + extern s32 func_800291B4(s32 arg); diff --git a/src/ov_SC01_080/ov_SC01_080_jr_8017AE2C.c b/src/ov_SC01_080/ov_SC01_080_jr_8017AE2C.c index 43adc36db..75a9a3c36 100644 --- a/src/ov_SC01_080/ov_SC01_080_jr_8017AE2C.c +++ b/src/ov_SC01_080/ov_SC01_080_jr_8017AE2C.c @@ -6211,7 +6211,19 @@ extern s32 func_8012AD50(void *a0); INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_80183054); -INCLUDE_ASM("asm/ov_SC01_080/nonmatchings/ov_SC01_080_jr_8017AE2C", func_801831A0); +extern void func_80183278(); +extern void func_8012C098(void *a0); + +void func_801831A0(s32 a0) { + s32 s0; + + s0 = a0; + func_80183278(); + if ((*(s32 *)(s0 + 0x1C) != 0) && (--*(s32 *)(s0 + 0x1C) == 0)) { + func_8012C098((void *) s0); + } +} + extern u16 D_800B99DA; extern u32 D_801C7594; diff --git a/src/ov_SC01_084/ov_SC01_084_jr_8017F690.c b/src/ov_SC01_084/ov_SC01_084_jr_8017F690.c index 02c98b5d1..47986cf11 100644 --- a/src/ov_SC01_084/ov_SC01_084_jr_8017F690.c +++ b/src/ov_SC01_084/ov_SC01_084_jr_8017F690.c @@ -5129,7 +5129,38 @@ void func_80184FC4(int param_1) INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017F690", func_8018500C); -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017F690", func_80185080); +extern s32 func_8012BEE8(s32 a0); +extern void func_8012A828(s32 a0, void *a1); +extern s32 func_80047D3C(s32 a0); +extern s32 func_801807D8(s16 *a0); +extern s32 D_801A1A10; +extern void func_8012CBA4(s32 a0); + +void func_80185080(s32 param_1) +{ + s16 tmp[3]; + s32 sq; + + func_8012CBA4(param_1); + if (func_8012BEE8(param_1) != 0) { + *(u16 *)(param_1 + 0xFC) = 0; + *(u8 *)(param_1 + 0xC1) = 0; + *(s16 *)(param_1 + 0x2) = 1; + *(s16 *)(param_1 + 0x34) = 0; + func_8012A828(param_1, &D_801A1A10); + *(s32 *)(param_1 + 0x1C) = 0xA; + *(u16 *)(param_1 + 0x5C) |= 0x8000; + *(u16 *)(param_1 + 0x5E) = 0; + *(u16 *)(param_1 + 0xFC) ^= 1; + tmp[0] = *(s16 *)(param_1 + 0x6); + tmp[1] = *(s16 *)(param_1 + 0xA); + tmp[2] = *(s16 *)(param_1 + 0xE); + sq = (tmp[0] * tmp[0]) + (tmp[2] * tmp[2]); + *(s16 *)(param_1 + 0xDE) = func_80047D3C(sq); + *(s16 *)(param_1 + 0xDC) = func_801807D8(tmp); + } +} + extern s32 D_801270D4; extern s32 D_801270E4; @@ -5181,7 +5212,38 @@ void func_801851EC(s32 param_1) { } -INCLUDE_ASM("asm/ov_SC01_084/nonmatchings/ov_SC01_084_jr_8017F690", func_8018528C); +extern void func_8002D4C8(s32 a0, s32 a1); +extern s32 func_8012BEE8(s32 a0); +extern void func_80183630(s32 a0); +extern void func_80183790(s32 a0); + +void func_8018528C(void *a0) { + void *s0; + register unsigned short state __asm__("$4"); + + s0 = a0; + state = *(u16 *)((u8 *)s0 + 0x34); + + switch (state) { + case 0: + ((struct { unsigned short h; } *)((u8 *)s0 + 0x34))->h = state + 1; + ((struct { s32 f; } *)((u8 *)s0 + 0x1C))->f = 0; + func_8002D4C8(0x4AA, 0); + break; + case 1: + func_80183630((s32)s0); + break; + case 2: + func_80183790((s32)s0); + break; + case 3: + if (func_8012BEE8((s32)s0) != 0) { + *(u16 *)((u8 *)s0 + 0x34) = 0; + } + break; + } +} + #include "common.h" diff --git a/src/ov_SC02_000/ov_SC02_000_jr_8017FCB0.c b/src/ov_SC02_000/ov_SC02_000_jr_8017FCB0.c index 26de57bfd..40f2f6df5 100644 --- a/src/ov_SC02_000/ov_SC02_000_jr_8017FCB0.c +++ b/src/ov_SC02_000/ov_SC02_000_jr_8017FCB0.c @@ -3029,7 +3029,20 @@ DEFINE_func_80180394() /* dedup: shared engine-core @0x80180394 (src/shared) */ DEFINE_func_801803B0() /* dedup: shared engine-core @0x801803B0 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017FCB0", func_801803D0); +extern void func_8012A828(int, void *); +extern s32 D_801A72C4; + +void func_801803D0(int param_1) +{ + *(short *)(param_1 + 2) = 0xb; + *(short *)(param_1 + 0x34) = 1; + *(short *)(param_1 + 0x5e) = 0; + *(unsigned short *)(param_1 + 0x5c) = 0xaa10; + func_8012A828(param_1, ((unsigned char *)&D_801A72C4)); + *(char *)(param_1 + 0x102) = 0; + *(int *)(param_1 + 0x1c) = 0x1e; +} + // @class: plumbing @@ -3049,7 +3062,64 @@ void func_80180428(int param_1) INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017FCB0", func_8018046C); -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8017FCB0", func_801806E4); +extern void func_8012B178(s32 a0, s32 a1); +extern void func_8012AD80(s32 a0); +extern s32 func_8012BEE8(s32 a0); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8012C098(void); +extern void func_8012C218(void *a0); +extern s32 D_801270CC; +extern unsigned char D_8018E724[]; +extern unsigned char D_801A6534[]; + +void func_801806E4(int p) +{ + switch (*(unsigned short *)(p + 0x34)) { + case 0: + func_8012B178(p, 0xfff40000); + func_8012AD80(p); + if (func_8012BEE8(p) == 0) return; + *(unsigned short *)(p + 0x34) = 1; + func_8012A828(p, D_8018E724); + return; + case 1: + if (*(short *)(p + 0x98) != 0) return; + *(unsigned short *)(p + 0x34) = 2; + func_8012A828(p, D_801A6534); + *(int *)(p + 0x1c) = 4; + return; + case 2: + *(unsigned short *)(*(int *)(p + 0x20) + 0x12) = + *(unsigned short *)(*(int *)(p + 0x20) + 0x12) - 0x200; + if (func_8012BEE8(p) == 0) return; + *(int *)(p + 0x1c) = 0x3c; + *(unsigned short *)(p + 0x34) = 3; + return; + case 3: + func_8012B178(p, 0xfff40000); + func_8012AD80(p); + if (func_8012BEE8(p) == 0) return; + switch (((int)(*(unsigned short *)(p + 0x70) << 16)) >> 24) { + case 0: + case 1: + case 2: + case 5: + case 6: + ((void (*)(void *))func_8012C098)(p); + return; + case 3: + case 7: + func_8012C218(p); + return; + case 4: + D_801270CC = D_801270CC - 1; + func_8012C218(p); + return; + } + return; + } +} + // @class: loose-typing diff --git a/src/ov_SC02_000/ov_SC02_000_jr_80180D6C.c b/src/ov_SC02_000/ov_SC02_000_jr_80180D6C.c index fb88cc8e7..da78b2c73 100644 --- a/src/ov_SC02_000/ov_SC02_000_jr_80180D6C.c +++ b/src/ov_SC02_000/ov_SC02_000_jr_80180D6C.c @@ -2712,7 +2712,7 @@ extern void func_80143CD4(s32 a0); extern int func_800CB0E8(int param); extern void func_801801EC(int param_1); extern void func_80180394(void *a0); -extern void func_801803D0(void); +extern void func_801803D0(); extern void func_801803B0(void); extern unsigned char D_801A73BC[]; extern void func_80180428(int param_1); @@ -2752,7 +2752,7 @@ extern void func_8012B23C(s32 a0); extern void func_8012B14C(s32 a0, s32 a1); extern void func_8012A828(s32 a0, void *a1); extern void func_801803B0(void); -extern void func_801803D0(void); +extern void func_801803D0(); extern s32 rand(void); diff --git a/src/ov_SC02_000/ov_SC02_000_jr_80181698.c b/src/ov_SC02_000/ov_SC02_000_jr_80181698.c index 5eee12831..4f57cdeff 100644 --- a/src/ov_SC02_000/ov_SC02_000_jr_80181698.c +++ b/src/ov_SC02_000/ov_SC02_000_jr_80181698.c @@ -2713,7 +2713,7 @@ extern void func_80143CD4(s32 a0); extern int func_800CB0E8(int param); extern void func_801801EC(int param_1); extern void func_80180394(void *a0); -extern void func_801803D0(void); +extern void func_801803D0(); extern void func_801803B0(void); extern unsigned char D_801A73BC[]; extern void func_80180428(int param_1); diff --git a/src/ov_SC02_000/ov_SC02_000_jr_8018173C.c b/src/ov_SC02_000/ov_SC02_000_jr_8018173C.c index acc652c4b..0b8b77432 100644 --- a/src/ov_SC02_000/ov_SC02_000_jr_8018173C.c +++ b/src/ov_SC02_000/ov_SC02_000_jr_8018173C.c @@ -2713,7 +2713,7 @@ extern void func_80143CD4(s32 a0); extern int func_800CB0E8(int param); extern void func_801801EC(int param_1); extern void func_80180394(void *a0); -extern void func_801803D0(void); +extern void func_801803D0(); extern void func_801803B0(void); extern unsigned char D_801A73BC[]; extern void func_80180428(int param_1); @@ -3349,7 +3349,26 @@ void func_80182BD0(u8 *a0) { } -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8018173C", func_80182CB4); +void func_80182CB4(s32 _arg0) +{ + typedef struct { s32 w[4]; } Blk16; + extern u8 D_80126948[]; + extern s32 D_80126E60[]; + Blk16 *src; + Blk16 *dst; + Blk16 *end; + + dst = (Blk16 *)&D_80126948; + src = (Blk16 *)D_80126E60; + end = src + 10; + do { + *dst = *src; + src++; + dst++; + } while (src != end); + *(s32 *)dst = *(s32 *)src; +} + DEFINE_func_80182D00() /* dedup: shared engine-core @0x80182D00 (src/shared) */ @@ -3903,7 +3922,76 @@ DEFINE_func_8018419C() /* dedup: shared engine-core @0x8018419C (src/shared) */ DEFINE_func_80184250() /* dedup: shared engine-core @0x80184250 (src/shared) */ -INCLUDE_ASM("asm/ov_SC02_000/nonmatchings/ov_SC02_000_jr_8018173C", func_80184358); +#include "common.h" + +typedef struct { s16 vx, vy, vz, pad; } SVEC_80184358; + +extern void func_8012B2CC(s32 a0); +extern void func_8012F14C(s32 a0, s32 a1, s32 a2); +extern u8 D_8018EFF4; +extern s32 D_801E8738; +extern SVEC_80184358 aD_8018F034 __asm__("D_8018F034"); +extern SVEC_80184358 aD_8018F03C __asm__("D_8018F03C"); + +void func_80184358(s32 p) { + SVEC_80184358 sv; + s32 q; + s32 r; + s16 t; + + func_8012B2CC(p); + + if (*(s32 *)(p + 0xCC) != 0) { + func_8012F14C(*(s32 *)(p + 0x20) + 0x34, (s32) &aD_8018F034, (s32) &sv); + *(s16 *)(*(s32 *)(p + 0xCC) + 0x8) = sv.vx; + *(s16 *)(*(s32 *)(p + 0xCC) + 0xA) = sv.vy; + *(s16 *)(*(s32 *)(p + 0xCC) + 0xC) = sv.vz; + q = *(s32 *)(p + 0x20); + *(s16 *)(*(s32 *)(p + 0xCC) + 0x10) = *(u16 *)(q + 0x10); + q = *(s32 *)(p + 0x20); + *(s16 *)(*(s32 *)(p + 0xCC) + 0x12) = *(u16 *)(q + 0x12); + q = *(s32 *)(p + 0x20); + *(s16 *)(*(s32 *)(p + 0xCC) + 0x14) = *(u16 *)(q + 0x14); + } + + if (*(s32 *)(p + 0xD0) != 0) { + func_8012F14C(*(s32 *)(p + 0x20) + 0x34, (s32) &aD_8018F03C, (s32) &sv); + *(s16 *)(*(s32 *)(p + 0xD0) + 0x8) = sv.vx; + *(s16 *)(*(s32 *)(p + 0xD0) + 0xA) = sv.vy; + *(s16 *)(*(s32 *)(p + 0xD0) + 0xC) = sv.vz; + q = *(s32 *)(p + 0x20); + *(s16 *)(*(s32 *)(p + 0xD0) + 0x10) = *(u16 *)(q + 0x10); + q = *(s32 *)(p + 0x20); + *(s16 *)(*(s32 *)(p + 0xD0) + 0x12) = *(u16 *)(q + 0x12); + q = *(s32 *)(p + 0x20); + *(s16 *)(*(s32 *)(p + 0xD0) + 0x14) = *(u16 *)(q + 0x14); + } + + t = *(s16 *)(p + 0xDC); + if (t == 0) { + s16 v = *(u16 *)(p + 0xDE) - 0x40; + *(s16 *)(p + 0xDE) = v; + if (v <= 0) { + *(s16 *)(p + 0xDE) = 0; + } + D_8018EFF4 = (u8) *(u16 *)(p + 0xDE); + if (*(s16 *)(p + 0xDE) == 0) { + if (*(s32 *)(p + 0xCC) != 0) { + *(s16 *)(*(s32 *)(p + 0xCC)) = 0; + } + if (*(s32 *)(p + 0xD0) != 0) { + *(s16 *)(*(s32 *)(p + 0xD0)) = 0; + } + r = *(u16 *)(p + 0x2); + *(s16 *)(p + 0xDC) = 0x1000; + D_801E8738 = 0; + *(s16 *)(p + 0x2) = r + 1; + } + } else { + *(s16 *)(p + 0xDC) = t - 1; + } +} + typedef struct { u16 x, y, z, w; } Blk8_8018453C; typedef struct { s32 f0, f1, f2, f3, f4, f5, f6, f7; } Blk32_801E8788; diff --git a/src/ov_SC02_004/ov_SC02_004_jr_8017AE2C.c b/src/ov_SC02_004/ov_SC02_004_jr_8017AE2C.c index e16968dd4..5e3315cd3 100644 --- a/src/ov_SC02_004/ov_SC02_004_jr_8017AE2C.c +++ b/src/ov_SC02_004/ov_SC02_004_jr_8017AE2C.c @@ -4069,7 +4069,23 @@ extern u16 D_80126B66; } -INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8017AE2C", func_8017D9C4); +extern u8 *func_8012913C(s32 arg); + +void func_8017D9C4(void *a0) +{ + u8 *var_s0; + u8 *var_s1; + + var_s1 = a0; + var_s0 = func_8012913C(5); + if (var_s0 != NULL) { + *(u16 *)(var_s0 + 6) = *(u16 *)(var_s1 + 6); + *(u16 *)(var_s0 + 0xA) = *(u16 *)(var_s1 + 0xA); + *(u16 *)(var_s0 + 0xE) = *(u16 *)(var_s1 + 0xE); + *(u16 *)(var_s0 + 0x2E) = rand() & 3; + } +} + INCLUDE_ASM("asm/ov_SC02_004/nonmatchings/ov_SC02_004_jr_8017AE2C", func_8017DA30); diff --git a/src/ov_SC02_005/ov_SC02_005_jr_8017CF90.c b/src/ov_SC02_005/ov_SC02_005_jr_8017CF90.c index 7a675dd67..ac52af37b 100644 --- a/src/ov_SC02_005/ov_SC02_005_jr_8017CF90.c +++ b/src/ov_SC02_005/ov_SC02_005_jr_8017CF90.c @@ -4279,7 +4279,19 @@ void func_8017FA0C(void) { } -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_8017CF90", func_8017FA3C); +extern void func_8002D4C8(s32 a0, s32 a1); +extern s32 func_8013767C(s32 a0); +extern s32 D_80126CF0; +extern s32 D_801972DC; +extern u8 D_80126D6C; + +void func_8017FA3C(void) { + func_8017E190(); + func_8002D4C8(0x510, 0x107F); + D_80126CF0 = func_8013767C((s32)&D_801972DC); + D_80126D6C = D_80126D6C + 1; +} + #include "common.h" diff --git a/src/ov_SC02_005/ov_SC02_005_jr_80181D30.c b/src/ov_SC02_005/ov_SC02_005_jr_80181D30.c index 9bb2d7643..57de3a331 100644 --- a/src/ov_SC02_005/ov_SC02_005_jr_80181D30.c +++ b/src/ov_SC02_005/ov_SC02_005_jr_80181D30.c @@ -2924,7 +2924,46 @@ INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_8018203 INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_80182098); -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_801820E4); +#include "common.h" + +extern u16 D_801E43B4; +extern s32 D_801270C8; +extern u8 D_80195AFA[]; +extern u8 D_8019103C; +extern void func_8018A1D8(s32 a0); +extern void func_8012B23C(s32 a0); +extern void func_8013C9C4(void *a0); +extern void func_80186304(); +extern s32 func_801873FC(s32 a0); +extern u16 D_80126B96; +extern s16 D_80126B98; +extern void func_8002D4C8(s32 a0, s32 a1); + +s32 func_801820E4(void *arg0) +{ + s16 idx; + register u16 cnt asm("v0"); + + idx = *(s16 *)((u8 *)arg0 + 0xE0); + if (idx >= 0) { + cnt = D_801E43B4; + D_801270C8 = *(s16 *)((u8 *)D_80195AFA + idx * 8); + D_801E43B4 = cnt + 1; + *(u32 *)((u8 *)arg0 + 0xE8) = (*(u32 *)((u8 *)arg0 + 0xE8) & ~0x400) | 0x800; + } + func_8018A1D8((s32)arg0); + func_8012B23C((s32)arg0); + func_8013C9C4(&D_8019103C); + func_80186304(arg0, 0x12, 0); + *(s16 *)((u8 *)arg0 + 0x34) = 6; + *(u32 *)((u8 *)arg0 + 0xE8) |= 0x20; + if (func_801873FC((s32)arg0) != 0) { + D_80126B96 = 0x4002; + D_80126B98 = 10; + } + func_8002D4C8(0x501, 0); +} + void func_801821C8(s32 *arg0) { u16 t; @@ -2975,7 +3014,14 @@ extern void func_801862F0(void * arg0); } -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_801822B4); +extern void func_8012B23C(s32 a0); + +void func_801822B4(s32 arg0) { + func_8012B23C(arg0); + func_8017DF50(); + func_801838A8((u8 *)arg0); +} + #include "common.h" @@ -3318,7 +3364,14 @@ INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_80182A8 INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_80182D80); -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_80182DCC); +extern void func_8018622C(); + +void func_80182DCC(void *a0) { + func_8018622C(a0); + *(u32 *)((s32)a0 + 0x14) = 0x100000; + *(u16 *)((s32)a0 + 0x34) = 1; +} + #include "common.h" @@ -9632,7 +9685,36 @@ extern void func_8012C218(void *a0); } -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_8018CC28); +#include "common.h" + +typedef struct { u8 b[4]; } Blk4_8018CC28; + +/* ---- externs ------------------------------------------------------------ */ +extern void func_8001CD50(s32 a0, s32 a1); +extern void func_800233CC(void *a0, unsigned short a1); + +extern u8 D_801E4958[]; +extern u8 D_801E495C; +extern u8 D_801E2F58; +extern u8 D_801E2F5C; + +void func_8018CC28(s32 param_1) +{ + func_8001CD50(*(s32 *)(param_1 + 0x20), (s32)&D_801E4958); + + *(u16 *)(param_1 + 0xA) -= 0x100; + *(u32 *)(*(s32 *)(param_1 + 0x20) + 4) |= 0x50000000; + *(s16 *)(*(s32 *)(param_1 + 0x20) + 0x10) = 0x400; + *(s16 *)(param_1 + 0x2C) = 0x8; + + func_800233CC(&D_801E4958, 0x8); + + *(Blk4_8018CC28 *)&D_801E4958 = *(Blk4_8018CC28 *)&D_801E2F58; + *(Blk4_8018CC28 *)&D_801E495C = *(Blk4_8018CC28 *)&D_801E2F5C; + + *(u16 *)(param_1 + 2) += 1; +} + #include "common.h" @@ -10272,7 +10354,16 @@ void func_8018D9A4(void *a0) INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_8018DA40); -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_8018DA8C); +extern void func_8018F704(void); +extern s32 D_801270C8; + +void func_8018DA8C(void *a0) { + if (D_801270C8 == 0x21) { + func_8018F704(); + *(u16 *)((s32)a0 + 2) += 1; + } +} + void func_8018DAD8(void) { } @@ -11731,7 +11822,17 @@ void func_80190074(void *a0) { } -INCLUDE_ASM("asm/ov_SC02_005/nonmatchings/ov_SC02_005_jr_80181D30", func_801900B0); +extern s32 func_800CF854(void); + +s32 func_801900B0(void) { + register s32 r __asm__("$2"); + s32 v; + + v = ((s32 (*)(void))func_800CF854)(); + r = v ? 9 : 8; + return r; +} + extern s32 D_801E4C40; diff --git a/src/ov_SC02_011/ov_SC02_011_jr_8017AE2C.c b/src/ov_SC02_011/ov_SC02_011_jr_8017AE2C.c index 7f31c46c1..3c76134b1 100644 --- a/src/ov_SC02_011/ov_SC02_011_jr_8017AE2C.c +++ b/src/ov_SC02_011/ov_SC02_011_jr_8017AE2C.c @@ -6449,7 +6449,27 @@ extern void func_80171A1C(u8 *a0); } -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018015C); +extern s16 D_80126B3A; +extern s16 D_80126B3C; +extern void func_8017EAC0(void *a0, s32 a1, s32 a2); +extern void func_80171A1C(u8 *a0); + +void func_8018015C(u8 *a0) { + s32 v; + if (*(u16 *)(a0 + 0xB8) & 0x8000) { + switch ((s16)(*(u16 *)&D_80126B3A - 2)) { + case 0: v = 0; break; + case 1: v = 1; break; + case 2: v = 2; break; + case 3: v = 3; break; + case 4: v = 4; break; + } + D_80126B3C = v; + func_8017EAC0(a0, -0x60, v); + func_80171A1C(a0); + } +} + DEFINE_func_80180210() /* dedup: shared engine-core @0x80180210 (src/shared) */ @@ -7420,7 +7440,22 @@ void func_80182268(s32 a0) { } -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801822F4); +extern s32 func_80172658(s32 *a0); +extern s32 func_801399F0(s32 a0); +extern void func_801823B8(void); + +void func_801822F4(s32 param_1) { + s32 s0; + + if (func_80172658((s32 *)param_1) != 0) { + s0 = param_1; + if (func_801399F0(*(s32 *)(s0 + 0x198)) != 0) { + func_801823B8(); + *(u8 *)(s0 + 0x216) = 0; + } + } +} + extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); @@ -8672,7 +8707,15 @@ INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_8018526 INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801852B0); -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80185388); +extern s32 func_80029178(s32 arg); + +void func_80185388(void *a0) { + *(s16 *)((char *)a0 + 2) = 4; + if ((func_80029178(0x9E) & 0xFF) != 0) { + *(s16 *)((char *)a0 + 0xFC) = 1; + } +} + INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_801853CC); @@ -10508,7 +10551,97 @@ void func_8018823C(void) { } -INCLUDE_ASM("asm/ov_SC02_011/nonmatchings/ov_SC02_011_jr_8017AE2C", func_80188250); +#include "common.h" + +/* func_80188250 -- same-class neighbour push-away over the 0x60-entry / + * 0x10C-stride entity table D_801202A0. Banked twin: ov_SC06_018:func_80187320 + * (§193-A), minus its second switch case (no 0x2F4 clamp here) and with a + * self-id equality guard instead of constant class ids. + * + * §37/§124 DEF-SIDE ESCAPE (_body spelling, cf. func_801810CC_body, + * ov_SC07_007_jr_8017BEBC.c:6600): this TU already declares + * `extern void func_80188250(s32 a0);` at file scope (the func_80188654 block), + * while the target tail (`addiu $v0,$zero,1` / `addu $v0,$zero,$zero`) proves + * an s32 return. A same-name s32 definition is a hard `conflicting types`; + * a void definition cannot emit the $v0 constants. Define under a private C + * identifier carrying an __asm__ label: emitted symbol unchanged, no collision, + * the existing extern keeps compiling the caller at func_80188654. + * + * §8d: func_8012CEB0 is declared ONLY at block scope in this TU (the + * func_80187844 block) -- its extern rides INSIDE the body, not at file scope. + * + * Load-bearing constructs (do NOT "clean up"): + * 1. NO SECOND WALKED POINTER. All of +0x6/+0xA/+0xE written off the single + * biv `p` (twin note 1): an explicit q = p + 0xE excludes the bare *q from + * givs and yields THREE IVs / wrong anchor. + * 2. `self4` and `sc` are REAL pre-loop locals, in that order (twin note 4): + * written inline at the calls they fold into the argument moves and the + * $s5/$s6 hoists never happen. Declaration ORDER (p, i, self4, sc) gives + * $s2/$s4/$s5/$s6 in the target's prologue emission order. + * 3. do-while with `i++` BEFORE `p += 0x10C` (twin note 3): strength_reduce + * emits the giv addiu immediately before ITS biv increment => + * addiu $s4,1 / addiu $s3,0x10C / (delay) addiu $s0,0x10C. + * 4. NO `s16 y` scalar: the twin's short-local/dead-slot pair belongs to its + * second switch case, absent here. Frame is exactly 0x48 with no dead slot. + * 5. §5a cross-jump barrier before the second `return 1`: the target keeps TWO + * [j .epi][addiu $v0,$zero,1] tails; without the barrier gcc merges them + * into one shared li (93 ins). + */ + +extern u8 D_801202A0[]; + +extern s32 func_8012BC60(struct Vec *a0, struct Vec *a1); +extern s32 func_8012B6D4(s16 *a0, s16 *a1); +extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); +extern void func_8012ADE4(u8 *a0); + +s32 func_80188250_body(s32 a0) __asm__("func_80188250"); + +s32 func_80188250_body(s32 a0) { + extern s32 func_8012CEB0(s32 a0, s32 a1, s32 a2); + u8 *p; + s16 *self4; + unsigned int *sc; + s32 i; + s32 ang; + s16 v10[4]; /* sp+0x10 */ + s16 v18[4]; /* sp+0x18 */ + s32 sp20[2]; /* sp+0x20 - func_8012B0B4 output */ + + p = D_801202A0; + i = 0; + self4 = (s16 *)(a0 + 4); + sc = (unsigned int *)sp20; + do { + if (*(u16 *)a0 == *(u16 *)p && (u8 *)a0 != p) { + if (func_8012BC60(self4, (struct Vec *)(p + 4)) < 0x1000) { + ang = func_8012B6D4(self4, (s16 *)(p + 4)); + func_8012B0B4(sc, ang, 0x41); + v18[0] = *(u16 *)(p + 6); + v18[1] = *(u16 *)(p + 0xA); + v18[2] = *(u16 *)(p + 0xE); + v18[0] += sp20[0]; + v18[2] += sp20[0] >> 16; + v10[0] = *(u16 *)(a0 + 0x3A); + v10[1] = *(u16 *)(a0 + 0x3E); + v10[2] = *(u16 *)(a0 + 0x42); + if ((func_8012CEB0((s32)&v10[0], (s32)&v18[0], 0) & 0x2000) == 0) { + func_8012ADE4((u8 *)a0); + return 1; + } + *(u16 *)(a0 + 6) = v18[0]; + *(u16 *)(a0 + 0xA) = v18[1]; + *(u16 *)(a0 + 0xE) = v18[2]; + __asm__ __volatile__("" ::: "memory"); /* zero-byte cross-jump barrier (§5a) */ + return 1; + } + } + i++; + p += 0x10C; + } while (i < 0x60); + return 0; +} + extern void func_8002D4C8(s32 arg0, s32 arg1); void func_801883C8(void) { diff --git a/src/ov_SC02_016/ov_SC02_016_jr_8017DC70.c b/src/ov_SC02_016/ov_SC02_016_jr_8017DC70.c index 5c9d27982..aa603ec66 100644 --- a/src/ov_SC02_016/ov_SC02_016_jr_8017DC70.c +++ b/src/ov_SC02_016/ov_SC02_016_jr_8017DC70.c @@ -3449,7 +3449,17 @@ void func_8017F1C8(void *a0) { } -INCLUDE_ASM("asm/ov_SC02_016/nonmatchings/ov_SC02_016_jr_8017DC70", func_8017F228); +extern s32 func_8017F264(); +extern u16 D_80126B96; +extern s16 D_80126B98; + +void func_8017F228() { + if (func_8017F264() != 0) { + D_80126B96 = 0x4018; + D_80126B98 = 0x10; + } +} + extern s32 func_8012DEB8(s32, s32, s32); extern u16 D_801880E0; diff --git a/src/ov_SC02_017/ov_SC02_017_jr_8017DF34.c b/src/ov_SC02_017/ov_SC02_017_jr_8017DF34.c index fa7abf6d4..995f33e50 100644 --- a/src/ov_SC02_017/ov_SC02_017_jr_8017DF34.c +++ b/src/ov_SC02_017/ov_SC02_017_jr_8017DF34.c @@ -4323,7 +4323,18 @@ void func_801809A8(void *arg0) { INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017DF34", func_80180A10); -INCLUDE_ASM("asm/ov_SC02_017/nonmatchings/ov_SC02_017_jr_8017DF34", func_80180AB8); +extern void func_8012E88C(u8 *a0); +extern void func_80180C90(s32 a0); + +void func_80180AB8(s32 param_1) { + if (*(s32 *)(param_1 + 0xDC) != 0) { + *(u16 *)((s32)param_1 + 2) = 2; + *(u16 *)((s32)param_1 + 0x34) = 0; + func_8012E88C((u8 *)param_1); + func_80180C90(param_1); + } +} + extern s32 func_80180CEC(); extern s32 func_80180C44(); diff --git a/src/ov_SC02_028/ov_SC02_028_jr_8017D898.c b/src/ov_SC02_028/ov_SC02_028_jr_8017D898.c index fa6cc941c..5987a4d0e 100644 --- a/src/ov_SC02_028/ov_SC02_028_jr_8017D898.c +++ b/src/ov_SC02_028/ov_SC02_028_jr_8017D898.c @@ -3433,7 +3433,32 @@ void func_8017EE08(void *a0) { } -INCLUDE_ASM("asm/ov_SC02_028/nonmatchings/ov_SC02_028_jr_8017D898", func_8017EE44); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_8001BFD0(void); +extern void func_800D0C48(s32 a0); +extern void func_800D1E28(void); +extern s32 func_8017FB74(void); + +s32 func_8017EE44(void *a0) { + s32 v0; + s32 v1 = -1; + v0 = *(s32 *)(a0 + 0x28); + v0 += -1; + *(s32 *)(a0 + 0x28) = v0; + if (v0 == v1) { + func_8002D4C8(4, 0x6CA); + func_8002D4C8(0x1C, 0); + func_8001BFD0(); + func_8002D4C8(0x1D, 0); + if (func_8017FB74() != 0) { + func_800D0C48(1); + } + func_800D1E28(); + *(u8 *)(a0 + 0x15) = *(u8 *)(a0 + 0x15) + 1; + } + return 0; +} + extern void func_8016EE40(s32 a0, s32 a1, s32 a2); extern M2C_UNK D_8018F1EC; diff --git a/src/ov_SC02_041/ov_SC02_041_jr_8017BEBC.c b/src/ov_SC02_041/ov_SC02_041_jr_8017BEBC.c index 0221c8639..6a5f13b53 100644 --- a/src/ov_SC02_041/ov_SC02_041_jr_8017BEBC.c +++ b/src/ov_SC02_041/ov_SC02_041_jr_8017BEBC.c @@ -5375,7 +5375,59 @@ void func_8017FC70(s32 a0) { } -INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041_jr_8017BEBC", func_8017FD14); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8012B200(u8 *a0); +extern s32 func_8012B8E4(s32 arg0, s32 arg1); +extern void func_8012CBCC(s32 a0); +extern s32 func_8012BCCC(s32 a0); +extern s32 func_8017F690(s32 a0, s32 a1); + +extern u8 D_801A3560[]; +extern u8 D_801A3710[]; +extern u8 D_801A3608[]; + +void func_8017FD14(s32 a0) +{ + s32 v0; + unsigned short *p; + s16 t; + + if (*(s16 *)(a0 + 0x98) == 0) { + func_8012A828(a0, D_801A3560); + } + + if (((s32 (*)(s32))func_8012CBCC)(a0) != 0) { + func_8012B200((u8 *)a0); + } + + v0 = func_8012B8E4(a0, 8); + p = (unsigned short *)(*(int *)(a0 + 0x20) + 0x12); + *p = (unsigned short)(*p + v0); + + p = (unsigned short *)(*(int *)(a0 + 0x20) + 0x12); + *p = (unsigned short)(*p & 0xFFF); + + t = *(s16 *)(a0 + 0xFC); + if (t != 0) { + *(s16 *)(a0 + 0xFC) = t - 1; + return; + } + + if (func_8012BCCC(a0) < 0x2401) { + *(s16 *)(a0 + 0x2) = 3; + func_8012A828(a0, D_801A3710); + } else { + if (func_8017F690(a0, 0x48) != 0) { + return; + } + if (0x40000 < func_8012BCCC(a0)) { + return; + } + *(s16 *)(a0 + 0x2) = 2; + func_8012A828(a0, D_801A3608); + } +} + extern s16 D_80126B98; extern s16 D_80126B9A; @@ -6659,7 +6711,40 @@ s32 aF8018A224(param_1) } -INCLUDE_ASM("asm/ov_SC02_041/nonmatchings/ov_SC02_041_jr_8017BEBC", func_80181B04); +void func_80181B04(s32 param_1) { + extern void (*D_801AD318[])(void); + extern void func_80183014(s32 a0); + extern s32 func_8012C0EC(s32 a0); + extern s32 rand(void); + s32 v1; + s32 v0; + s32 rem; + + D_801AD318[*(u16 *)(param_1 + 2)](); + if (*(u16 *)(param_1) != 0) { + func_80182B38(param_1); + func_80182CCC(param_1); + func_80183014(param_1); + + v1 = *(s32 *)(param_1 + 0xEC) + 1; + v0 = *(s32 *)(param_1 + 0xF0); + rem = v1 % v0; + *(s32 *)(param_1 + 0xEC) = v1; + if (rem == 0 || (rand() & 0xFFF) == 0) { + func_8018317C(param_1); + *(s32 *)(param_1 + 0xF0) = rand() % 32 + 0x10; + } + + if (*(s16 *)(param_1 + 0xA) >= 0x10) { + func_80182B08(param_1); + } else { + if (*(s16 *)(param_1 + 0x70) & 0x8000) { + func_8012C0EC(param_1); + } + } + } +} + void func_80181C40(s32 a0) { extern u8 D_801AD174[]; diff --git a/src/ov_SC03_006/ov_SC03_006_jr_8017AE2C.c b/src/ov_SC03_006/ov_SC03_006_jr_8017AE2C.c index 98fd857df..562c2763c 100644 --- a/src/ov_SC03_006/ov_SC03_006_jr_8017AE2C.c +++ b/src/ov_SC03_006/ov_SC03_006_jr_8017AE2C.c @@ -7857,7 +7857,35 @@ void func_801837C4(s32 arg0) { } -INCLUDE_ASM("asm/ov_SC03_006/nonmatchings/ov_SC03_006_jr_8017AE2C", func_80183864); +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8012E8E0(s32 a0, s32 a1); +extern void func_8012E8A8(u8 *a0); + +void func_80183864(void *a0) { + extern u8 D_801BD274[]; + extern u8 D_801BAEF0[]; + extern void (*D_801910C0[])(void); + s32 v0; + + v0 = ((s32 (*)(void))func_8012C1B8)(); + *(s32 *)((s32)a0 + 0x20) = v0; + if (v0 == 0) { + func_8012CAE4(a0); + } else { + func_8001C214(v0, (s32)D_801BD274); + *(s16 *)((s32)a0 + 0x34) = 0; + *(s32 *)((s32)a0 + 0x1C) = 0; + *(u16 *)((s32)a0 + 2) += 1; + *(u16 *)((s32)a0 + 0x5C) |= 0x10; + func_8012A828((s32)a0, D_801BAEF0); + func_8012E8E0((s32)a0, (s32)D_801910C0); + func_8012E8A8((u8 *)a0); + } +} + extern void (*D_801BFF04[])(void); extern s32 func_8012C044(s32 a0); diff --git a/src/ov_SC03_007/ov_SC03_007_jr_8017AE2C.c b/src/ov_SC03_007/ov_SC03_007_jr_8017AE2C.c index 0611b01c1..cc90eddde 100644 --- a/src/ov_SC03_007/ov_SC03_007_jr_8017AE2C.c +++ b/src/ov_SC03_007/ov_SC03_007_jr_8017AE2C.c @@ -5948,7 +5948,16 @@ s32 func_801802A4(s32 a0) { } -INCLUDE_ASM("asm/ov_SC03_007/nonmatchings/ov_SC03_007_jr_8017AE2C", func_8018033C); +extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); +extern s32 func_801803DC(s32 a0); + +s32 func_8018033C(s32 a0, s32 a1) { + s32 t; + + t = func_801803DC(a0); + return func_8012B608(*(s16 *)(*(s32 *)(a0 + 0x20) + 0x12), t, (s16)a1); +} + extern s32 func_8012BC60(void *a0, void *a1); extern s32 func_8012BCCC(s32 a0); diff --git a/src/ov_SC03_014/ov_SC03_014_jr_801848E4.c b/src/ov_SC03_014/ov_SC03_014_jr_801848E4.c index 8144b51e3..3ca617763 100644 --- a/src/ov_SC03_014/ov_SC03_014_jr_801848E4.c +++ b/src/ov_SC03_014/ov_SC03_014_jr_801848E4.c @@ -4639,7 +4639,40 @@ void func_80188F80(void* arg0) } -INCLUDE_ASM("asm/ov_SC03_014/nonmatchings/ov_SC03_014_jr_801848E4", func_80188FB4); +int func_80188FB4(int a0, void* a1) +{ + s16 stack_buf[8]; + register u16 *s0 __asm__("$16") = (u16 *)a1; + u16 v0; + s32 result; + + v0 = s0[2]; + stack_buf[0] = v0; + v0 = s0[3]; + stack_buf[4] = v0; + v0 = s0[5]; + stack_buf[5] = v0; + stack_buf[1] = v0; + v0 = s0[6]; + stack_buf[6] = v0; + stack_buf[2] = v0; + + result = func_80189050((s32)a0, (s32)&stack_buf[0], (s32)&stack_buf[4]); + if (result != 0) { + return 1; + } + + v0 = s0[7]; + stack_buf[6] = v0; + stack_buf[2] = v0; + + result = func_80189050((s32)a0, (s32)&stack_buf[0], (s32)&stack_buf[4]); + if (result != 0) { + return 1; + } + return 0; +} + extern s32 *D_80126B78; extern s32 *D_80126B90; diff --git a/src/ov_SC03_015/ov_SC03_015_o0c.c b/src/ov_SC03_015/ov_SC03_015_o0c.c index 9cdc30be5..dab1bb857 100644 --- a/src/ov_SC03_015/ov_SC03_015_o0c.c +++ b/src/ov_SC03_015/ov_SC03_015_o0c.c @@ -2837,7 +2837,69 @@ s32 func_80184028(void) { } -INCLUDE_ASM("asm/ov_SC03_015/nonmatchings/ov_SC03_015_o0c", func_80184058); +#include "common.h" + +/* 16.16 fixed-point view: unkE0 is a 32-bit accumulator whose HIGH half is the s16 + * unkE2 the rest of the function reads (little-endian overlay). */ +typedef struct { + /* 0x00 */ s16 unk00; + /* 0x02 */ s16 unk02; + /* 0x04 */ u8 pad04[0xD8]; + /* 0xDC */ s16 unkDC; + /* 0xDE */ s16 unkDE; + /* 0xE0 */ s32 unkE0; +} Ent58_fx; + +typedef struct { + /* 0x00 */ s16 unk00; + /* 0x02 */ s16 unk02; + /* 0x04 */ u8 pad04[0xD8]; + /* 0xDC */ s16 unkDC; + /* 0xDE */ s16 unkDE; + /* 0xE0 */ s16 unkE0; + /* 0xE2 */ s16 unkE2; + /* 0xE4 */ s16 unkE4; + /* 0xE6 */ s16 unkE6; + /* 0xE8 */ s16 unkE8; + /* 0xEA */ s16 unkEA; +} Ent_80184058; + +extern s32 D_801EAFD0; +extern s32 D_8018F858[]; +extern s32 D_801270C8; +extern u16 D_800B99DC; +extern u8 D_8018BCC8; +extern void func_8017DF84(void *a0, s32 a1, s32 a2, s32 a3); +extern void func_80184354(void); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_8013C9C4(void *a0); +extern void func_8013373C(s32 a0); + +void func_80184058(Ent_80184058 *p) { + func_8017DF84(&D_801EAFD0, D_8018F858[p->unkE4], p->unkDC, p->unkE2); + func_80184354(); + if (p->unkEA == 0) { + ((Ent58_fx *)p)->unkE0 += 0x5CCCC; + } else { + if (--p->unkEA == 0) { + func_8002D4C8(0x81E, 0); + } + } + if (--p->unkE8 == 0) { + func_8013C9C4(&D_8018BCC8); + p->unkE8 = (D_800B99DC & 7) + 3; + } + if (p->unkE2 >= 0x259) { + p->unkE2 = 0; + D_801270C8 = 2; + p->unkE4 = 0; + func_8013373C(1); + func_8002D4C8(4, 0x81E); + ++p->unk02; + } + p->unkDC += 8; +} + extern void func_8017FA5C(s32 arg0, s32 arg1, s32 arg2); diff --git a/src/ov_SC03_024/ov_SC03_024_jr_80183BF8.c b/src/ov_SC03_024/ov_SC03_024_jr_80183BF8.c index 3e6c4be27..941fca78b 100644 --- a/src/ov_SC03_024/ov_SC03_024_jr_80183BF8.c +++ b/src/ov_SC03_024/ov_SC03_024_jr_80183BF8.c @@ -3854,7 +3854,19 @@ extern void func_800D0694(void); } -INCLUDE_ASM("asm/ov_SC03_024/nonmatchings/ov_SC03_024_jr_80183BF8", func_801856BC); +void func_801856BC(s32 a0, s32 a1) +{ + typedef struct { short x, y, z, w; } Rec8T; + extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); + extern Rec8T D_801B9330[]; + + s32 i; + + for (i = 0; D_801B9330[i].x != 0; i++) { + func_8012C658(0x10D, i, a0); + } +} + /* func_80185730 — allocates a GTE-projection slot, seeds a random spread diff --git a/src/ov_SC03_028/ov_SC03_028_jr_8017DF98.c b/src/ov_SC03_028/ov_SC03_028_jr_8017DF98.c index 51903db21..9729e6b9d 100644 --- a/src/ov_SC03_028/ov_SC03_028_jr_8017DF98.c +++ b/src/ov_SC03_028/ov_SC03_028_jr_8017DF98.c @@ -8828,7 +8828,15 @@ void func_8018A500(void *a0) } -INCLUDE_ASM("asm/ov_SC03_028/nonmatchings/ov_SC03_028_jr_8017DF98", func_8018A618); +extern void func_8012C218(void *a0); +extern void func_8012CBCC(s32 a0); + +void func_8018A618(s32 arg0) { + if ((((s32 (*)(s32))func_8012CBCC)(arg0) != 0) || (*(s16 *)((s32)arg0 + 0xA) >= 0x200)) { + func_8012C218((void *)arg0); + } +} + diff --git a/src/ov_SC03_097/ov_SC03_097_jr_8017D898.c b/src/ov_SC03_097/ov_SC03_097_jr_8017D898.c index 841ea6905..9b4e7b037 100644 --- a/src/ov_SC03_097/ov_SC03_097_jr_8017D898.c +++ b/src/ov_SC03_097/ov_SC03_097_jr_8017D898.c @@ -4724,7 +4724,21 @@ void func_80180980(void *a0) } -INCLUDE_ASM("asm/ov_SC03_097/nonmatchings/ov_SC03_097_jr_8017D898", func_80180BD8); +extern void func_80178B18(s32 a0, s32 a1); +extern void func_8012AD44(s32 *a0, s16 a1); +extern s32 D_8019AFD4; + +void func_80180BD8(void* a0) +{ + s32 *p = &D_8019AFD4; + s32 hi; + + hi = *(s16 *)(a0 + 0xE) << 16; + *p = *(u16 *)(a0 + 6) | hi; + func_80178B18(a0, (s32)(p - 1)); + func_8012AD44((s32 *)a0, 2); +} + extern void (*D_8019AFE8[])(void); diff --git a/src/ov_SC03_100/ov_SC03_100_jr_80183C10.c b/src/ov_SC03_100/ov_SC03_100_jr_80183C10.c index 64f682154..688c59309 100644 --- a/src/ov_SC03_100/ov_SC03_100_jr_80183C10.c +++ b/src/ov_SC03_100/ov_SC03_100_jr_80183C10.c @@ -2933,7 +2933,18 @@ void func_80183E04(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_100/nonmatchings/ov_SC03_100_jr_80183C10", func_80183EB4); +void func_80183EB4(void *a0) { + struct B16_80185634 { s32 w[4]; }; + + extern struct B16_80185634 D_800A5EA8; + extern struct B16_80185634 D_801C4F2C; + extern s32 D_800A5EB0; + D_800A5EA8 = D_801C4F2C; + D_800A5EB0 = func_8004787C(*(s16 *)((s32)a0 + 0xFE)) * 6 / 4096 - 3; + *(u16 *)((s32)a0 + 0xFE) = (*(u16 *)((s32)a0 + 0xFE) + 0x71) & 0xFFF; + func_80028620(2, &D_800A5EA8); +} + /* §71 sibling-first: func_80185634 (same TU, already MATCHed) is the exact template. diff --git a/src/ov_SC03_102/ov_SC03_102_jr_8017BEBC.c b/src/ov_SC03_102/ov_SC03_102_jr_8017BEBC.c index 8270f7101..4aa8ca542 100644 --- a/src/ov_SC03_102/ov_SC03_102_jr_8017BEBC.c +++ b/src/ov_SC03_102/ov_SC03_102_jr_8017BEBC.c @@ -4262,7 +4262,30 @@ void func_8018110C(s32 a0) } -INCLUDE_ASM("asm/ov_SC03_102/nonmatchings/ov_SC03_102_jr_8017BEBC", func_801811F0); +extern void func_801292C8(u8 *a0); + +s32 func_801811F0(s32 a0) +{ + volatile s32 pad; + u32 *p = *(u32 **)((s32)a0 + 0x20); + u32 v = p[1]; + u32 w = 0x80000000; + + if ((s32)v < 0) { + w = 0x7fffffff; + w = v & w; + } else { + w = v | w; + } + p[1] = w; + + if (--*(s32 *)((s32)a0 + 0x1C) == 0) { + func_801292C8((u8 *)a0); + return 1; + } + return 0; +} + #include "common.h" diff --git a/src/ov_SC03_102/ov_SC03_102_jr_801855D0.c b/src/ov_SC03_102/ov_SC03_102_jr_801855D0.c index 3a5415247..dc57ab479 100644 --- a/src/ov_SC03_102/ov_SC03_102_jr_801855D0.c +++ b/src/ov_SC03_102/ov_SC03_102_jr_801855D0.c @@ -3256,7 +3256,26 @@ void func_80185E28(void *a0) { } -INCLUDE_ASM("asm/ov_SC03_102/nonmatchings/ov_SC03_102_jr_801855D0", func_80186028); +extern s32 func_801860B0(s32 a0); + +void func_80186028(s32 a0) +{ + s32 v; + + v = *(s16 *)((s32)a0 + 0x70); + switch (v) { + case 0: + func_8002D4C8(0x6D5, 0); + break; + case 1: + func_8002D4C8(0x856, (func_801860B0(a0) | 0x2000) & 0xFFFF); + break; + case 2: + func_8002D4C8(0x857, (func_801860B0(a0) | 0x2000) & 0xFFFF); + break; + } +} + INCLUDE_ASM("asm/ov_SC03_102/nonmatchings/ov_SC03_102_jr_801855D0", func_801860B0); diff --git a/src/ov_SC03_113/ov_SC03_113_jr_8017C294.c b/src/ov_SC03_113/ov_SC03_113_jr_8017C294.c index 53a128e87..0e98aa1d2 100644 --- a/src/ov_SC03_113/ov_SC03_113_jr_8017C294.c +++ b/src/ov_SC03_113/ov_SC03_113_jr_8017C294.c @@ -4697,7 +4697,32 @@ void func_8017F9F4(void) { INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8017C294", func_8017F9FC); -INCLUDE_ASM("asm/ov_SC03_113/nonmatchings/ov_SC03_113_jr_8017C294", func_8017FAD4); +extern void func_8012C218(void *a0); +extern void func_8012E014(s32 a0); +extern u16 D_80187164[]; +extern s16 D_80187154[]; + +void func_8017FAD4(void *a0) +{ + register s32 t __asm__("$3"); + register s32 sum __asm__("$2"); + s16 diff; + + t = D_80187164[*(s16 *)(*(s32 *)((s32)a0 + 0x64) + 0x70)]; + __asm__ __volatile__(""); + sum = *(u16 *)((s32)a0 + 0xA) + t; + *(u16 *)((s32)a0 + 0xA) = sum; + diff = sum - *(u16 *)(*(s32 *)((s32)a0 + 0x64) + 0xA); + if (diff < 0) { + diff = -diff; + } + if (diff >= D_80187154[*(s16 *)(*(s32 *)((s32)a0 + 0x64) + 0x70)]) { + func_8012C218(a0); + } else if (*(u8 *)((s32)a0 + 0x74) != 0) { + func_8012E014((s32)a0); + } +} + void func_8017FB88(void) { } diff --git a/src/ov_SC03_118/ov_SC03_118_jr_801863CC.c b/src/ov_SC03_118/ov_SC03_118_jr_801863CC.c index 3e6a0e368..3d57c9f3f 100644 --- a/src/ov_SC03_118/ov_SC03_118_jr_801863CC.c +++ b/src/ov_SC03_118/ov_SC03_118_jr_801863CC.c @@ -4014,7 +4014,19 @@ void func_80187F2C(s32 a0) } -INCLUDE_ASM("asm/ov_SC03_118/nonmatchings/ov_SC03_118_jr_801863CC", func_8018800C); +extern s32 func_8004787C(s32 a0); + +void func_8018800C(s32 a0) +{ + *(u16 *)(a0 + 0xFC) += 0x20; + *(u16 *)(a0 + 0xA) = *(u16 *)(a0 + 0x100); + *(s32 *)(a0 + 0x8) -= func_8004787C(*(s16 *)(a0 + 0xFC)) << 10; + + if (*(s16 *)(a0 + 0xFC) >= 0x800) { + *(s16 *)(a0 + 0x2) = 3; + } +} + DEFINE_func_80188074() /* dedup: shared engine-core @0x80188074 (src/shared) */ diff --git a/src/ov_SC04_003/ov_SC04_003_jr_8017BEBC.c b/src/ov_SC04_003/ov_SC04_003_jr_8017BEBC.c index b4b4a7b28..09b1bee56 100644 --- a/src/ov_SC04_003/ov_SC04_003_jr_8017BEBC.c +++ b/src/ov_SC04_003/ov_SC04_003_jr_8017BEBC.c @@ -3518,7 +3518,27 @@ void func_8017D658(s32 a0) { } -INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003_jr_8017BEBC", func_8017D698); +#include "common.h" + +extern s32 func_8012BD14(s32 a0); +extern s32 func_8016F1AC(void); +extern s32 func_80178BF8(); +extern void func_80172710(void); + +s32 func_8017D698_x(s32 a0) __asm__("func_8017D698"); + +s32 func_8017D698_x(s32 a0) { + if (func_8012BD14(*(s32 *)(a0 + 0x64)) >= 0x1001) { + return 0; + } + if (func_8016F1AC() != 0) { + return 0; + } + *(s16 *)(*(s32 *)(a0 + 0x64) + 2) = 2; + func_80178BF8(); + return (s32)func_80172710; +} + extern void (*D_80185CCC[])(void); @@ -5113,7 +5133,57 @@ void func_8017FF18(s32 target, u16 *cur, s32 step) } -INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003_jr_8017BEBC", func_8017FF9C); +extern s16 D_80190E2C; +extern s16 D_80190E2E; +extern s16 D_80190E30; +extern void func_800484EC(s32 a0, s32 a1, s32 a2); +extern s32 func_8012C51C(void *a0, s32 a1); +extern void func_8012B2CC(s32 a0); +extern void func_8002D4C8(s32 a0, s32 a1); + +void func_8017FF9C(void *a0) { + struct S8017FF9C_sp { + u16 unk0; + u16 unk2; + u16 unk4; + s16 unk6; + s16 unk8; + s16 unkA; + s16 unkC; + s16 unkE; + s32 unk10; + } sp; + s32 vec[3]; + s32 out[3]; + s32 ret; + + vec[0] = D_80190E2C << 8; + vec[1] = D_80190E2E << 8; + vec[2] = D_80190E30 << 8; + + func_800484EC(*(s32 *)((s32)a0 + 0x20) + 0x34, (s32)vec, (s32)out); + + out[0] += *(s16 *)((s32)a0 + 0x6) << 8; + out[1] += *(s16 *)((s32)a0 + 0xA) << 8; + out[2] += *(s16 *)((s32)a0 + 0xE) << 8; + + sp.unk0 = out[0] / 256; + sp.unk2 = out[1] / 256; + sp.unk4 = out[2] / 256; + sp.unk6 = 0x20; + sp.unk8 = 2; + sp.unkA = 0; + sp.unk10 = 0; + sp.unkE = 0; + + ret = func_8012C51C(&sp, (s32)a0); + if (ret != 0) { + *(u16 *)(*(s32 *)(ret + 0x20) + 0x12) = *(u16 *)(*(s32 *)((s32)a0 + 0x20) + 0x12); + func_8012B2CC(ret); + func_8002D4C8(0x83A, 0); + } +} + extern s16 D_80126B98; @@ -5542,7 +5612,60 @@ void func_80180C40(void *a0) { INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003_jr_8017BEBC", func_80180CC0); -INCLUDE_ASM("asm/ov_SC04_003/nonmatchings/ov_SC04_003_jr_8017BEBC", func_80180D50); +extern s32 func_80180E34(s32, s32, u16); + +s32 func_80180D50(s32 arg0) { + extern u8 D_801202A0[]; + register s32 zr __asm__("$0"); + u8 *pe; + u8 *ps; + s16 *ca; + s16 *cb; + u16 state; + u16 t; + s32 count; + + pe = D_801202A0; + count = 0; + ps = pe + 4; + do { + if ((s32) pe == arg0) { + goto next; + } + state = *(u16 *) pe; + ca = (s16 *) ((s32) arg0 + zr); + if (state == 0x1FC) { + goto b1fc; + } + cb = (s16 *) ((s32) ps + zr); + if (state == 0x239) { + goto b239; + } + goto next; + + b1fc: + cb = (s16 *) ((s32) ps + zr); + t = (*(s16 *) (*(s32 *) (arg0 + 0x20) + 0x18) * 9u) >> 9; + goto call; + + b239: + t = (u32) (*(s16 *) (*(s32 *) (arg0 + 0x20) + 0x18) + *(s16 *) (*(s32 *) (ps + 0x1C) + 0x18)) >> 6; + /* fall through */ + call: + if (((s32 (*)(s16 *, s16 *, s32))func_80180E34)(ca, cb, t) == 0) { + goto next; + } + __asm__ __volatile__("" :: "r"(pe)); + return (s32) pe; + + next: + count++; + ps += 0x10C; + pe += 0x10C; + } while (count < 0x60); + return 0; +} + s32 func_80180E34(s32 a0, s32 a1, u16 a2) { s32 d = *(s16 *)(a1 + 2) - *(s16 *)(a0 + 6); diff --git a/src/ov_SC04_004/ov_SC04_004_jr_8017AE2C.c b/src/ov_SC04_004/ov_SC04_004_jr_8017AE2C.c index 689bddf5f..b08763521 100644 --- a/src/ov_SC04_004/ov_SC04_004_jr_8017AE2C.c +++ b/src/ov_SC04_004/ov_SC04_004_jr_8017AE2C.c @@ -7178,7 +7178,28 @@ extern void func_8012B21C(void *a0); } -INCLUDE_ASM("asm/ov_SC04_004/nonmatchings/ov_SC04_004_jr_8017AE2C", func_80181BD4); +typedef struct { s32 w[8]; } MTX8L_80181BD4; + +void func_80181BD4(s32 a0) +{ + extern MTX8L_80181BD4 aD800AE620 __asm__("D_800AE620"); + extern void RotMatrixY(s32 a0, void *a1); + extern void func_800484EC(s32 a0, s32 a1, s32 a2); + extern void func_8002D4C8(s32 a0, s32 a1); + extern void func_8012AD44(s32 *a0, s16 a1); + MTX8L_80181BD4 m; + s32 vel[3]; + + m = aD800AE620; + vel[1] = 0; + vel[0] = 0; + vel[2] = 0xFFF20000; + RotMatrixY(*(s16 *)(*(s32 *)(*(s32 *)(a0 + 0x64) + 0x20) + 0x12), &m); + func_800484EC((s32)&m, (s32)&vel[0], a0 + 0x10); + func_8002D4C8(0xB3F, 0); + func_8012AD44((s32 *)a0, 3); +} + extern s32 D_80192E94; extern void (*D_80192EA4[])(void); diff --git a/src/ov_SC04_005/ov_SC04_005_jr_8017BEBC.c b/src/ov_SC04_005/ov_SC04_005_jr_8017BEBC.c index 1da44987e..d7942cd96 100644 --- a/src/ov_SC04_005/ov_SC04_005_jr_8017BEBC.c +++ b/src/ov_SC04_005/ov_SC04_005_jr_8017BEBC.c @@ -8641,7 +8641,21 @@ void func_8018480C(s32 a0) { } -INCLUDE_ASM("asm/ov_SC04_005/nonmatchings/ov_SC04_005_jr_8017BEBC", func_801849F0); +#include "common.h" + +extern void func_8012A828(s32, s32); +extern void func_8012B200(u8 *a0); + +extern u8 D_801BE52C[]; + +void func_801849F0(void *arg0) { + func_8012A828((s32)arg0, (s32)&D_801BE52C); + *(s16 *)((char *)arg0 + 0x2) = 6; + *(s16 *)((char *)arg0 + 0x34) = 0; + *(s32 *)((char *)arg0 + 0xD0) = 0; + func_8012B200((u8 *)arg0); +} + /* func_80184A38 — ov_SC02_041 / ov_SC02_041_jr_8017BEBC.c MATCH (142 ins) diff --git a/src/ov_SC04_006/ov_SC04_006_jr_8017BEBC.c b/src/ov_SC04_006/ov_SC04_006_jr_8017BEBC.c index 16c61d276..f2e2726a5 100644 --- a/src/ov_SC04_006/ov_SC04_006_jr_8017BEBC.c +++ b/src/ov_SC04_006/ov_SC04_006_jr_8017BEBC.c @@ -4635,7 +4635,64 @@ INCLUDE_ASM("asm/ov_SC04_006/nonmatchings/ov_SC04_006_jr_8017BEBC", func_8017EF7 INCLUDE_ASM("asm/ov_SC04_006/nonmatchings/ov_SC04_006_jr_8017BEBC", func_8017EFF4); -INCLUDE_ASM("asm/ov_SC04_006/nonmatchings/ov_SC04_006_jr_8017BEBC", func_8017F180); +void func_8017F180(s32 param_1, s32 param_2) { + typedef struct { s32 w[8]; } Blk32; + extern u8 D_80078EAE; + extern u8 D_80078E78[]; + extern u8 D_800D3918[]; + extern s16 D_801152B0; + extern Blk32 D_800AE620; + extern s32 rand(void); + extern s32 func_8012B864(s32 a0); + extern s32 func_8012B70C(s16 *a0, s16 *a1); + extern void RotMatrixY(s32 a0, void *a1); + u8 *pb; + s32 pd; + s32 stack[6]; + Blk32 m; + s32 q; + s32 r; + + pb = D_80078E78; + stack[1] = 0; + stack[0] = 0; + if (D_80078EAE != 0) { + stack[2] = -0x60000; + } else { + stack[2] = -0x80000; + } + switch (param_2) { + case 0: + if (pb[0x36] != 0 && (rand() & 1) != 0) { + break; + } + case 1: + *(s16 *)(param_1 + 0xDC) = func_8012B864(param_1); + break; + case 2: + *(u16 *)(param_1 + 0xDC) += 0x800; + break; + case 3: + do { + r = rand() % 4096; + } while (*(s16 *)(param_1 + 0xDC) == (s16)r); + break; + case 4: + *(s16 *)(param_1 + 0xDC) = (func_8012B864(param_1) + 0x800) & 0xFFF; + break; + case 5: + pd = (s32)D_800D3918; + *(s16 *)&stack[4] = *(s32 *)(param_1 + 0x10) >> 8; + *(s16 *)&stack[5] = *(s32 *)(param_1 + 0x18) >> 8; + q = func_8012B70C((s16 *)pd, &D_801152B0); + *(s16 *)(param_1 + 0xDC) = (q * 2 - func_8012B70C((s16 *)&stack[4], (s16 *)pd)) & 0xFFF; + break; + } + m = *(Blk32 *)&D_800AE620; + RotMatrixY(*(s16 *)(param_1 + 0xDC), &m); + func_800484EC(&m, stack, param_1 + 0x10); +} + INCLUDE_ASM("asm/ov_SC04_006/nonmatchings/ov_SC04_006_jr_8017BEBC", func_8017F354); diff --git a/src/ov_SC04_007/ov_SC04_007_jr_8017BEBC.c b/src/ov_SC04_007/ov_SC04_007_jr_8017BEBC.c index 4eecc8d69..768a508cc 100644 --- a/src/ov_SC04_007/ov_SC04_007_jr_8017BEBC.c +++ b/src/ov_SC04_007/ov_SC04_007_jr_8017BEBC.c @@ -4785,7 +4785,36 @@ void func_8017EFDC(s32 a0) { INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007_jr_8017BEBC", func_8017F01C); -INCLUDE_ASM("asm/ov_SC04_007/nonmatchings/ov_SC04_007_jr_8017BEBC", func_8017F080); +extern s16 D_80126CAC; +extern s32 D_801274D8; +extern s32 D_801274DC; +extern s32 func_800132BC(s32 a0, s32 a1); + +s32 func_8017F080(u16 *param_1) { + s32 x = *(u16 *)((s32)param_1 + 6); + if ((u32)(x - 0x31) < 2) { + return 1; + } + if ((x & 0xFFFF) == 0x33 || (x & 0xFFFF) == 0x27B) { + return 1; + } + { + register s32 ret __asm__("$4"); + register s32 lim __asm__("$3"); + s32 res; + s32 hi; + ret = func_800132BC((s32)&D_80126CAC, (s32)param_1); + __asm__ __volatile__("" : : "r"(ret)); + lim = D_801274D8; + res = 0; + if (lim < ret) { + hi = D_801274DC; + res = ret < hi; + } + return res; + } +} + extern void (*D_80189860[])(void); diff --git a/src/ov_SC04_011/ov_SC04_011_jr_8017D494.c b/src/ov_SC04_011/ov_SC04_011_jr_8017D494.c index 5990bf4a0..0253bea00 100644 --- a/src/ov_SC04_011/ov_SC04_011_jr_8017D494.c +++ b/src/ov_SC04_011/ov_SC04_011_jr_8017D494.c @@ -8713,7 +8713,20 @@ special: } -INCLUDE_ASM("asm/ov_SC04_011/nonmatchings/ov_SC04_011_jr_8017D494", func_80187574); +#include "common.h" + +extern void (*D_801947E4[])(void); +extern void func_80187618(s32 *a0, u16 a1, u16 a2); +extern void func_801876A0(s32 a0); +extern u8 D_801EFD50; + +void func_80187574(void *param_1) +{ + D_801947E4[*(unsigned short *)((char *)param_1 + 2)](); + func_80187618((s32 *)&D_801EFD50, 0x160, 0x18F); + func_801876A0((s32)param_1); +} + diff --git a/src/ov_SC04_012/ov_SC04_012_jr_8017AE2C.c b/src/ov_SC04_012/ov_SC04_012_jr_8017AE2C.c index f5c699ff9..e0763c60d 100644 --- a/src/ov_SC04_012/ov_SC04_012_jr_8017AE2C.c +++ b/src/ov_SC04_012/ov_SC04_012_jr_8017AE2C.c @@ -3860,7 +3860,15 @@ void func_8017CFEC(void *a0) { } -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017D028); +extern void func_8002931C(s32 a0); + +s32 func_8017D028(s32 param_1) { + func_8002931C(0x30C0000); + *(s32 *)(param_1 + 0x28) = 0xA; + *(u8 *)(param_1 + 0x15) = *(u8 *)(param_1 + 0x15) + 1; + return 0; +} + extern void func_8016EE40(s32 a0, s32 a1, s32 a2); void func_8017D06C(void) { @@ -4118,7 +4126,15 @@ extern s32 func_8013CB84(void); } -INCLUDE_ASM("asm/ov_SC04_012/nonmatchings/ov_SC04_012_jr_8017AE2C", func_8017D930); +extern s32 func_80029178(s32 arg); + +s32 func_8017D930(void) { + if ((func_80029178(0x117) & 0xFF) != 0) { + return 0x74; + } + return 0x53; +} + extern void (*D_801822B0[])(void); diff --git a/src/ov_SC05_001/ov_SC05_001_jr_8017BEBC.c b/src/ov_SC05_001/ov_SC05_001_jr_8017BEBC.c index ce7984d95..8f2b15c86 100644 --- a/src/ov_SC05_001/ov_SC05_001_jr_8017BEBC.c +++ b/src/ov_SC05_001/ov_SC05_001_jr_8017BEBC.c @@ -6883,7 +6883,27 @@ void func_801826C8(s32 arg0) { } -INCLUDE_ASM("asm/ov_SC05_001/nonmatchings/ov_SC05_001_jr_8017BEBC", func_801827A0); +extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); + +/* TU declares `extern void func_801827A0(s32);` at :6372 (caller discards the + * result), but the bytes return s32 (both early exits fill $v0 with 0, success + * falls through addiu $v0,$zero,1). §138: asm-label alias on the DEFINITION, + * so the existing caller-side decl stays untouched. */ +s32 aF801827A0(s32 a0) __asm__("func_801827A0"); + +s32 aF801827A0(s32 a0) { + extern u8 D_801A8FA8[]; + + if ((*(s32 *)(a0 + 0xDC) & 1) != 0) { + return 0; + } + if (func_8012D5E4(a0, (s32)D_801A8FA8, (s32)(D_801A8FA8 + 8), 0x13) != 1) { + return 0; + } + *(s32 *)(a0 + 0xDC) |= 1; + return 1; +} + #include "common.h" diff --git a/src/ov_SC05_005/ov_SC05_005_jr_8017D898.c b/src/ov_SC05_005/ov_SC05_005_jr_8017D898.c index 5b7d44495..9ea4659dc 100644 --- a/src/ov_SC05_005/ov_SC05_005_jr_8017D898.c +++ b/src/ov_SC05_005/ov_SC05_005_jr_8017D898.c @@ -5113,7 +5113,46 @@ void func_80181F84(s32 a0) { } -INCLUDE_ASM("asm/ov_SC05_005/nonmatchings/ov_SC05_005_jr_8017D898", func_80181FCC); +extern u8 D_80062BF4[]; +extern s32 D_800D5880; +extern s32 D_800D58AC; +extern void func_80019064(void *a0); +extern void func_80149020(s32 *a0); +extern void func_80147324(s32 a0); +extern int func_801511E0(int a0); +extern s32 func_80012A60(s32 a0, s32 a1); +extern void func_80154274(s32 *a0, s32 a1); +extern void func_80154A74(s32 a0, s32 a1); +extern s32 func_80146994(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern void func_80146CA0(void *a0); + +void func_80181FCC(s32 a0) +{ + s32 s1; + s32 s0; + + s1 = a0; + func_80019064(D_80062BF4); + func_80149020((s32 *)s1); + func_80147324(0x451); + func_801511E0(s1); + if ((s16)func_80012A60(*(s16 *)(*(s32 *)(s1 + 0x20) + 0x12), *(s16 *)(s1 + 0xF4)) >= 0x401) { + func_80154274((s32 *)s1, (s32)&D_800D5880); + } else { + func_80154274((s32 *)s1, (s32)&D_800D58AC); + } + s0 = 1; + func_80154A74(s1, 0x16); + func_80149020((s32 *)s1); + func_80146994(0x42, s1, 0, 0); + func_80146A6C(0x42, (void *)s1, 0x20, 0, 0, s0, 0); + func_80146A6C(0x42, (void *)s1, 0, 0, 0x20, s0, 0); + func_80146A6C(0x42, (void *)s1, -0x20, 0, 0, s0, 0); + func_80146A6C(0x42, (void *)s1, 0, 0, -0x20, s0, 0); + func_80146CA0((void *)s1); +} + extern void func_80149020(s32 *a0); extern void func_80182194(s32 a0); diff --git a/src/ov_SC05_010/ov_SC05_010_jr_8017C8D0.c b/src/ov_SC05_010/ov_SC05_010_jr_8017C8D0.c index 362d59312..e7a70c69f 100644 --- a/src/ov_SC05_010/ov_SC05_010_jr_8017C8D0.c +++ b/src/ov_SC05_010/ov_SC05_010_jr_8017C8D0.c @@ -3376,7 +3376,22 @@ void func_8017DA90(s32 a0) { } -INCLUDE_ASM("asm/ov_SC05_010/nonmatchings/ov_SC05_010_jr_8017C8D0", func_8017DC5C); +void func_8017DC5C(void) { + extern s16 D_8018C4DC; + extern s16 D_8018C4DA; + extern s16 D_8018C4D8; + extern void func_80146CA0(void *a0); + s16 sVar1; + + sVar1 = D_8018C4DC + 8; + D_8018C4DC = sVar1; + D_8018C4DA = sVar1; + D_8018C4D8 = sVar1; + if (sVar1 >= 0x101) { + ((void (*)(void))func_80146CA0)(); + } +} + extern s16 D_8018C4D8; extern s16 D_8018C4DA; diff --git a/src/ov_SC05_017/ov_SC05_017_jr_8017AE2C.c b/src/ov_SC05_017/ov_SC05_017_jr_8017AE2C.c index 59e80a432..7529e552b 100644 --- a/src/ov_SC05_017/ov_SC05_017_jr_8017AE2C.c +++ b/src/ov_SC05_017/ov_SC05_017_jr_8017AE2C.c @@ -5982,7 +5982,24 @@ void func_80180048(void *arg0) { } -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_8017AE2C", func_801800BC); +void func_801800BC(void *arg0) { + extern void func_8012E8E0(s32, s32); + extern void func_8012E88C(s32); + extern void func_8012A828(s32, s32); + extern void func_80184990(s32); + extern s32 D_80191434; + extern short D_801C0CFC; + extern s32 D_801CE1C0; + extern s32 D_801D5210; + + *(short *)((char *)arg0 + 0x2) = 3; + func_8012E8E0((s32)arg0, (s32)&D_80191434); + func_8012E88C((s32)arg0); + func_8012A828((s32)arg0, (s32)&D_801C0CFC); + func_80184990((s32)arg0); + D_801CE1C0 = D_801D5210; +} + extern void func_8012E88C(s32); extern void func_8012A828(s32, s32); diff --git a/src/ov_SC05_017/ov_SC05_017_jr_80188B1C.c b/src/ov_SC05_017/ov_SC05_017_jr_80188B1C.c index 088bb698d..664898ebb 100644 --- a/src/ov_SC05_017/ov_SC05_017_jr_80188B1C.c +++ b/src/ov_SC05_017/ov_SC05_017_jr_80188B1C.c @@ -3456,7 +3456,43 @@ void func_80189BA0(void) { INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_80188B1C", func_80189DB4); -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_80188B1C", func_80189E68); +void func_80189E68(s32 a0, s32 a1) +{ + extern s32 D_801ED7E4; + register s32 rv __asm__("$2"); + s32 x = D_801ED7E4; + s32 y = a1; + s32 d; + + if (y < a0) { + if (x < y) { + x = x + 0x5A0; + } + y = y + 0x5A0; + } + if (a0 >= x) { + rv = -1; + goto done; + } + if (x >= y) { + rv = -1; + goto done; + } + d = x - a0; + if (d < 16) { + rv = d * 2; + goto done; + } + d = y - x; + if (d < 16) { + rv = d * 2; + goto done; + } + rv = 31; +done: + __asm__("" :: "r"(rv)); +} + extern s32 (*D_801E6758[])(); extern s32 D_801ED7E0; @@ -4460,7 +4496,23 @@ void func_8018B430(void *a0) { } -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_80188B1C", func_8018B498); +extern s32 func_801848AC(s32 arg0, s32 arg1); +extern u8 D_80078EBA; + +void func_8018B498(void *a0) { + s32 v0; + *(s32 *)(*(s32 *)((s32)a0 + 0xCC) + 0xB0) = 2; + if (D_80078EBA == 3) { + v0 = 0; + } else { + v0 = func_801848AC(0x7, 0x13); + v0 = (0U < (u32)v0) ? 1 : 0; + } + if (v0 != 0) { + *(s16 *)((char *)a0 + 0x2) = 1; + } +} + extern s32 func_8012E57C(s32 a0, s32 a1); extern s32 func_801848AC(s32 arg0, s32 arg1); @@ -4745,7 +4797,24 @@ extern void func_80178CBC(s32, s32); } -INCLUDE_ASM("asm/ov_SC05_017/nonmatchings/ov_SC05_017_jr_80188B1C", func_8018BC64); +extern s32 func_801848AC(s32 arg0, s32 arg1); + +void func_8018BC64(void *arg0) { + register s32 *s0 asm("$16") = arg0; + s32 v0, v1; + *(s32 *)((u8 *)(*(s32 **)((u8 *)s0 + 0xCC)) + 0xB0) = 2; + v0 = func_801848AC(6, 0x12); + if (v0 != 0) { + v1 = 1; + } else { + v0 = func_801848AC(0x12, 0x15); + v1 = (v0 != 0) ? 2 : 0; + } + if (v1 != 0) { + func_8018BAE0(s0); + } +} + extern s32 func_801848AC(s32 arg0, s32 arg1); diff --git a/src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c b/src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c index 84c08122a..3dba1c4df 100644 --- a/src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c +++ b/src/ov_SC06_000/ov_SC06_000_jr_8017AE2C.c @@ -4717,7 +4717,49 @@ void func_8017DE24(s32 *a0) { } -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_8017DE8C); +extern void func_80147324(s32 a0); +extern void func_80147060(u8 *a0); +extern void func_80029124(s32 a0, s32 a1); +extern void func_80029514(s32 a0); +extern s32 func_80174650(s32 a0); +extern void func_80171A1C(u8 *a0); +extern s16 D_80126B3A; +extern s16 D_8011F9C8; + +void func_8017DE8C(u8 *a0) { + u16 flags = *(u16 *)(a0 + 0xB8); + + if (flags & 0x4000) { + func_80147324(0x445); + return; + } + if (!(flags & 0x8000)) { + return; + } + func_80147060(a0); + switch ((s16)(*(u16 *)&D_80126B3A - 2)) { + case 0: + func_80029124(0x16, 1); + func_80029514(0x85); + break; + case 1: + func_80029124(0x17, 1); + break; + case 2: + func_80029124(0x18, 1); + break; + case 3: + func_80029124(0x19, 1); + break; + case 4: + func_80029124(0x1A, 1); + break; + } + (*(s32 *)&D_8011F9C8) = 1; + func_80174650((s32)a0); + func_80171A1C(a0); +} + DEFINE_func_8017DF7C() /* dedup: shared engine-core @0x8017DF7C (src/shared) */ @@ -7779,7 +7821,22 @@ void func_80182B68(s32 arg0) { } -INCLUDE_ASM("asm/ov_SC06_000/nonmatchings/ov_SC06_000_jr_8017AE2C", func_80182BB8); +void func_80182BB8(s32 arg0) +{ + s32 i; + s32 *ptr; + + i = 0; + ptr = (s32 *)((s32)arg0 + 0xCC); + do { + if (*ptr != 0) { + func_80183130((void *)*ptr); + } + i = i + 1; + ptr = ptr + 1; + } while (i < 4); +} + void func_80182C10(s32 a0) { extern s32 func_800133BC(s32 a0, s32 a1); diff --git a/src/ov_SC06_018/ov_SC06_018_jr_8017AE2C.c b/src/ov_SC06_018/ov_SC06_018_jr_8017AE2C.c index 8946a513d..51d23676a 100644 --- a/src/ov_SC06_018/ov_SC06_018_jr_8017AE2C.c +++ b/src/ov_SC06_018/ov_SC06_018_jr_8017AE2C.c @@ -3398,7 +3398,24 @@ void func_8017BEF8(void *a0) { DEFINE_func_8017C090() /* dedup: shared engine-core @0x8017C090 (src/shared) */ -INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8017AE2C", func_8017C0A4); +extern void func_800D22E4(s32 a0); + +void func_8017C0A4(s32 param_1) { + s32 var_v0; + + *(s32 *)(param_1 + 0x14) = *(s32 *)(param_1 + 0x14) + 0xC000; + ((void (*)(void))func_800D22E4)(); + var_v0 = *(s32 *)(param_1 + 0x1C) - 1; + *(s32 *)(param_1 + 0x1C) = var_v0; + if (var_v0 == -1) { + *(s32 *)(param_1 + 0x2C) = 0; + *(s32 *)(param_1 + 0x10) = *(s32 *)(param_1 + 4); + *(s32 *)(param_1 + 0x18) = *(s32 *)(param_1 + 0xC); + func_80146E90(param_1, 0x14); + *(u16 *)(param_1 + 2) += 1; + } +} + INCLUDE_ASM("asm/ov_SC06_018/nonmatchings/ov_SC06_018_jr_8017AE2C", func_8017C120); diff --git a/src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c b/src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c index 5998853bc..d97d6b4c2 100644 --- a/src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c +++ b/src/ov_SC06_022/ov_SC06_022_jr_8017BEBC.c @@ -3322,7 +3322,40 @@ void func_8017D274(void) { INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_8017BEBC", func_8017D29C); -INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_8017BEBC", func_8017D348); +typedef struct { + s16 v[4]; +} Blk8_80126940_8017D348; + +void func_8017D348(void) { + extern u8 D_80126948[]; + extern s32 D_80126954; + extern s32 D_8012695C; + extern s16 D_80126968; + extern s16 D_8012696A; + extern s16 D_8012696C; + extern s16 D_80126976; + extern s16 D_80126978; + extern s16 D_8012697A; + extern void func_8017D59C(void *a0); + extern void func_8012A018(s32 a, s32 b); + extern void func_8012A094(s32 a0); + extern Blk8_80126940_8017D348 D_801274E8; + extern Blk8_80126940_8017D348 D_80126940; + + D_801274E8 = D_80126940; + D_80126954 = 400; + D_8012695C = 1200; + D_80126968 = 0x238; + D_8012696A = 0x800; + D_8012696C = 0; + D_80126976 = 0; + D_80126978 = -0x20; + D_8012697A = 0; + func_8012A018((s32)func_8017D59C, 1); + func_8012A094((s32)D_80126948); + func_8017D59C((void *)D_80126948); +} + extern void func_8014C6AC(void); extern void func_8012A018(s32 a, s32 b); @@ -5200,1157 +5233,3 @@ extern void func_8012AD44(s32 *a0, s16 a1); void func_80180CB0(s32 arg0) { ((void (*)(s32, s32))func_8012AD44)(arg0, 0x5); } - - -INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_8017BEBC", func_80180CD0); - - -extern void (*D_801AD420[])(void); - -void func_80180EA4(void *a0) { - D_801AD420[*(u16 *)((s32)a0 + 0x2)](); -} - - -void func_80180EE0(s32 a0) { - extern u8 D_801AD394[]; - extern u8 D_801AD39C[]; - s16 t; - s32 v1; - - t = *(s16 *)(a0 + 0x70); - v1 = *(s32 *)(a0 + 0xCC); - if (t >= 2) { - if (*(s16 *)(v1 + 0x100) != 0) { - *(s32 *)(*(s32 *)(a0 + 0x20) + 0x80) = (s32)D_801AD39C; - } else { - *(s32 *)(*(s32 *)(a0 + 0x20) + 0x80) = (s32)D_801AD394; - } - } -} - - - -void func_80180F30(s32 target, u16 *cur, s32 step) -{ - s32 t; - s32 diff; - s32 mag; - - t = (target - *cur) & 0xFFF; - if (t < 0x800) { - diff = t; - } else { - diff = t | 0xF000; - } - mag = diff; - if ((s16)diff < 0) { - mag = -diff; - } - __asm__ __volatile__("" : "=r"(diff) : "0"(diff) : "memory"); - if ((s16)mag > (u16)step) { - if ((s16)diff < 0) { - *cur = *cur - step; - } else { - *cur = *cur + step; - } - } else { - *cur = target; - } -} - - -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern void func_8002D4C8(s32 a0, s32 a1); -extern void func_8004914C(void *a0); -extern void func_800491AC(void *a0); - -void func_80180FB4(s32 self) -{ - u16 sv[4]; - u16 scratch[4]; - s32 obj; - s32 target; - s32 i; - - func_8004914C((void *)(*(s32 *)(self + 0x20) + 0x54)); - func_800491AC((void *)(*(s32 *)(self + 0x20) + 0x54)); - - sv[1] = 0; - sv[0] = 0; - *(s16 *)&sv[2] = -0x60; - RotTransSV(&sv[0], &sv[0], &scratch[0]); - - obj = func_80132EF4(self, 0x22); - if (obj != 0) { - u16 c; - *(u16 *)(obj + 0x6) = sv[0]; - *(u16 *)(obj + 0xA) = sv[1]; - c = sv[2]; - *(u16 *)(obj + 0x34) = 0x4000; - *(u16 *)(obj + 0xE) = c; - *(u16 *)(*(s32 *)(obj + 0x20) + 0x2C) = 0xC008; - } - for (i = 0; i < 7; i++) { - target = func_8012C658(0x2FE, i, self); - if (target != 0) { - *(u16 *)(target + 0x6) = sv[0]; - *(u16 *)(target + 0xA) = sv[1]; - *(u16 *)(target + 0xE) = sv[2]; - } - } - func_8002D4C8(0xAE6, 0); -} - - -void func_801810C0(s32 self) -{ - u16 sv[4]; - u16 scratch[4]; - s32 obj; - - func_8004914C((void *)(*(s32 *)(self + 0x20) + 0x54)); - func_800491AC((void *)(*(s32 *)(self + 0x20) + 0x54)); - - sv[1] = 0; - sv[0] = 0; - *(s16 *)&sv[2] = -0x40; - RotTransSV(&sv[0], &sv[0], &scratch[0]); - - obj = func_80132EF4(self, 0x23); - if (obj != 0) { - u16 c; - *(u16 *)(obj + 0x6) = sv[0]; - *(u16 *)(obj + 0xA) = sv[1]; - c = sv[2]; - *(u16 *)(obj + 0x34) = 0x4001; - *(u16 *)(obj + 0xE) = c; - *(u16 *)(*(s32 *)(obj + 0x20) + 0x2C) = 0xC008; - } -} - - - -extern void (*D_801AD44C[])(void); - -void func_80181168(void *a0) { - D_801AD44C[*(u16 *)((s32)a0 + 0x2)](); -} - - - -extern void func_8012C1B8(void); -extern void func_8012CAE4(void*); -extern void func_8001C214(s32 a0, s32 a1); -extern void func_801812F8(s32 a0); - -void func_801811A4(s32 param_1) { - /* The four u16 tables all share one 8-byte stride -- they are the four - halfword members of a single 8-byte record based at 0x801AC5AC. - Spelling each as an ARRAY OF AN 8-BYTE RECORD (wanted halfword at - offset 0) keeps the exact symbol names the target relocates against - AND stops gcc-2.7.2 force_reg'ing a second copy of the bare SYMBOL_REF - for D_801AD46E (which is read twice). That orphaned address pseudo is - what reserves a dead 8-byte stack slot ("phantom frame", cookbook 5): - it survives to alter_reg with reg_n_refs>0 and no hard reg, so - assign_stack_local grows var_size by 8 with nothing ever stored there. - Byte-checked: pointer-arith spelling -> frame 0x20, this -> frame 0x18. */ - struct Row8_8018367C_801811A4 { u16 h; u16 pad[3]; }; - extern struct Row8_8018367C_801811A4 D_801AD46E[]; - extern struct Row8_8018367C_801811A4 D_801AD468[]; - extern struct Row8_8018367C_801811A4 D_801AD46A[]; - extern struct Row8_8018367C_801811A4 D_801AD46C[]; - extern u32 D_801AD454[]; - - /* the entry call's result doubles as func_8001C214's first argument, so it - owns $a0 for its whole live range (target: addu $a0,$v0,$zero at entry) */ - register s32 v0 __asm__("$4"); - s32 v1; - s32 mask; - - *(s32 *)(param_1 + 0x20) = v0 = ((s32 (*)(void))func_8012C1B8)(); - if (v0 == 0) { - ((void (*)(s32))func_8012CAE4)(param_1); - return; - } - - func_8001C214(v0, D_801AD454[D_801AD46E[*(s16 *)(param_1 + 0x70)].h & 7]); - - v1 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v1 + 0x2C) = *(u16 *)(v1 + 0x2C) | 0x10; - - v1 = *(s32 *)(param_1 + 0x20); - mask = D_801AD46E[*(s16 *)(param_1 + 0x70)].h & 0xFFF0; - *(u16 *)(v1 + 0x1A) = mask; - *(u16 *)(v1 + 0x18) = mask; - - v1 = *(s32 *)(param_1 + 0x20); - *(u16 *)(v1 + 0x1C) = 0x400; - - *(s16 *)(param_1 + 0x6) = *(u16 *)(*(s32 *)(param_1 + 0x64) + 0x6) + - D_801AD468[*(s16 *)(param_1 + 0x70)].h; - - *(s16 *)(param_1 + 0xA) = *(u16 *)(*(s32 *)(param_1 + 0x64) + 0xA) + - D_801AD46A[*(s16 *)(param_1 + 0x70)].h; - - *(s16 *)(param_1 + 0xE) = *(u16 *)(*(s32 *)(param_1 + 0x64) + 0xE) + - D_801AD46C[*(s16 *)(param_1 + 0x70)].h; - - *(s16 *)(param_1 + 0xE0) = *(u16 *)(*(s32 *)(param_1 + 0x64) + 0xA) + 0x140; - func_801812F8(param_1); -} - - -extern void func_8012B23C(); -extern s32 rand(void); -extern void func_8012AD44(s32 *a0, s16 a1); - -void func_801812F8(s32 a0) { - func_8012B23C(a0); - *(s32 *)(a0 + 0x10) = ((rand() & 0x7F) - 0x40) << 11; - *(s32 *)(a0 + 0x14) = -((rand() & 0x7F) << 13); - *(s32 *)(a0 + 0x18) = (rand() & 0x7F) << 13; - *(u16 *)(a0 + 0x106) = rand() & 0x1F0; - *(u16 *)(a0 + 0x108) = rand() & 0x1F0; - *(s16 *)(a0 + 0xE6) = 8; - { - s32 v = *(s16 *)(a0 + 0x70); - *(s16 *)(a0 + 0xE4) = v << 1; - } - ((void (*)(s32, s32))func_8012AD44)(a0, 1); -} - - -extern void func_8012AD44(s32 *a0, s16 a1); - -void func_80181394(void *arg0) { - s32 t; - *(s16 *)((char *)arg0 + 0xe6) = 0xc; - t = *(s16 *)((char *)arg0 + 0x70); - *(s16 *)((char *)arg0 + 0xe4) = t << 1; - ((void (*)(s32, s32))func_8012AD44)((s32)arg0, 2); -} - - - -// @class: struct -// @stuck: none — MATCH (fn-ptr table %lo-fold via extern array of code ptrs) - -extern code_fn D_801AD508[]; - -extern s32 func_8012B414(s32 a0); - -void func_801813C8(int param_1) -{ - D_801AD508[*(unsigned short *)(param_1 + 2)](); - ((void (*)(int))func_8012B414)(param_1); - return; -} - - - -extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); - -void func_80181418(s32 arg0) { - s32 i; - - for (i = 0; i < 20; i++) { - func_8012C658(0x311, i, arg0); - } -} - - -INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_8017BEBC", func_80181468); - -extern u16 D_80126B66; -extern void func_8017FA1C(int); - -void func_80181550(int param_1) -{ - if ((short)(*(u16 *)(param_1 + 0xE) - D_80126B66) < 0x140) { - void **fp = *(void **)(param_1 + 0xDC); - if (fp != 0 && *fp != 0) - (*(void (*)(void))*fp)(); - func_8017FA1C(param_1); - } -} - - -extern s32 func_8012BEE8(s32 a0); -extern void func_8001C924(s32 a0, void *a1); -extern void func_8017FAFC(s32 a0); -extern s32 D_801AD304[]; - -void func_801815CC(s32 param_1) { - if (func_8012BEE8(param_1) != 0) { - *(s32 *)(param_1 + 0x1C) = 2; - func_8001C924( - *(s32 *)(param_1 + 0x20), - *(void **)(D_801AD304[*(s16 *)(param_1 + 0x70)] + *(s16 *)(param_1 + 0xFE) * 4)); - *(u16 *)(param_1 + 0xFE) += 1; - if ((s16)*(u16 *)(param_1 + 0xFE) >= 8) { - func_8017FAFC(param_1); - } - } -} - - -void func_8018165C(void) { -} - -INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_8017BEBC", func_80181664); - -INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_8017BEBC", func_80181744); - -void func_80181780(s32 param_1) -{ - if (*(s32 *)(*(s32 *)(*(s32 *)(param_1 + 0xCC) + 0x20) + 4) < 0) { - func_8012C218((void *)param_1); - } else { - func_80180EE0(param_1); - } -} - - -void func_801817D0(void) { -} - -INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_8017BEBC", func_801817D8); - -extern void func_8012CBCC(s32 a0); -extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); -extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); -extern s32 func_80132EF4(s32 a0, s32 a1); -extern s32 func_8012BEE8(s32 a0); -extern void func_8012C218(void *a0); - -extern s32 D_801AD444; -extern u8 D_800D3918[]; - -void func_801818E4(s32 param_1) { - s32 s0 = param_1; - s32 r; - s32 v; - - r = ((s32 (*)(s32))func_8012CBCC)(s0); - if (func_8012D5E4(s0, (s32)&D_801AD444, (s32)&D_800D3918, 0x40) == 0) { - if (r != 0) { - func_80146A6C(6, (void *)s0, *(s16 *)(s0 + 0x6), *(s16 *)(s0 + 0xA), - *(s16 *)(s0 + 0xE), 0, 0); - v = func_80132EF4(s0, 0x22); - if (v != 0) { - *(s16 *)(v + 0x34) = 0x2000; - } - } else { - if (func_8012BEE8(s0) == 0) { - return; - } - } - } - func_8012C218((void *)s0); -} - - -extern void func_8012AD80(s32 a0); -extern void func_80181468(); -extern s32 rand(void); -extern void func_80181394(void *a0); - -void func_8018199C(s32 arg0) { - register s32 a0 __asm__("$4"); - register s32 a1 __asm__("$5"); - u16 val; - s16 h; - - a0 = *(s32 *)(arg0 + 0x20); - val = *(u16 *)(arg0 + 0x106); - *(u16 *)(a0 + 0x10) = *(u16 *)(a0 + 0x10) + val; - - a1 = *(s32 *)(arg0 + 0x20); - val = *(u16 *)(arg0 + 0x108); - *(u16 *)(a1 + 0x14) = *(u16 *)(a1 + 0x14) + val; - - func_8012AD80(arg0); - - h = *(s16 *)(arg0 + 0xE0); - if (*(s16 *)(arg0 + 0xA) >= h) { - *(s16 *)(arg0 + 0xA) = h; - *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x10) = 0x400; - if ((rand() & 1) != 0) { - *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x10) = 0xC00; - } - func_80181394((void *)arg0); - } - func_80181468(arg0, 0x4001); -} - - -INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_8017BEBC", func_80181A4C); - -extern void (*D_801BD214[])(void); -extern void func_8012C0EC(void *a0); -extern void func_801852E4(void *a0); -extern void func_801853B4(void *a0); - -void func_80181A94(void *a0) { - D_801BD214[*(u16 *)((s32)a0 + 0x2)](); - if (*(u16 *)a0 != 0) { - func_801852E4(a0); - func_801853B4(a0); - func_8012C0EC(a0); - } -} - - - -// @class: struct -// @stuck: none — MATCH (135/135 ins, match_one confirmed) - - -extern s32 func_8012C354(s32 a0, void *a1); -extern s32 func_80143994(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); -extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); -extern void func_8012CAE4(void*); -extern void func_8012B030(s32 a0); -extern void func_8012B2CC(s32 a0); - -void func_80181B04(s32 param_1) { - - extern Elem52_801B5094 D_801BCFEC[]; - extern u8 D_801BD184[]; - extern u8 D_801BD10C[]; - extern u8 D_801D40D8[]; - extern u16 D_801D45CC; - extern u16 D_801D4424; - s32 iVar1; - u16 uVar2; - - iVar1 = func_8012C354(param_1, &D_801BCFEC[*(u16 *)(param_1 + 0x70) & 0xf]); - if (iVar1 != 0) { - *(u8 *)(param_1 + 0xc0) = 1; - *(u8 **)(param_1 + 0xbc) = D_801BD184; - *(s32 *)(param_1 + 0xb4) = -0x8ad; - *(u32 *)(param_1 + 0xc4) |= 2; - *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x2c) |= 0x80; - *(u8 **)(*(s32 *)(param_1 + 0x20) + 0x80) = D_801BD10C; - func_80143994(param_1, 0x4000); - *(s32 *)(param_1 + 0x48) = 0x18000; - uVar2 = *(u16 *)(param_1 + 0x70) & 0xf; - switch (uVar2) { - case 0: { - s32 t; - *(u32 *)(param_1 + 0xe0) |= 1; - t = (s32)*(u16 *)(*(s32 *)(param_1 + 0x78)) << 0x10; - *(s16 *)(param_1 + 0xfe) = (s16)((t >> 0x10) / 2); - if (((s32)*(s16 *)(param_1 + 0x70) & 0x8000) == 0) { - *(s16 *)(param_1 + 2) = 2; - } else { - *(s16 *)(param_1 + 2) = 1; - *(s32 *)(param_1 + 0x1c) = 0x1e; - func_8012A828(param_1, &D_801D40D8); - } - break; - } - case 1: - *(s16 *)(param_1 + 2) = 0x13; - D_801D45CC = 0x28; - if (((s32)*(s16 *)(param_1 + 0x70) & 0x8000) != 0) { - *(u32 *)(param_1 + 0xe0) |= 0x400; - } - break; - case 2: - *(s16 *)(param_1 + 2) = 0x18; - D_801D4424 = 0x28; - break; - case 3: - *(s16 *)(param_1 + 2) = 0x1f; - if (func_8012C658(0x27f, 5, param_1) == 0) { - ((void (*)(s32))func_8012CAE4)(param_1); - return; - } - break; - } - func_8012B030(param_1); - *(s32 *)(param_1 + 0x38) = *(s32 *)(param_1 + 4); - *(s32 *)(param_1 + 0x3c) = *(s32 *)(param_1 + 8); - *(s32 *)(param_1 + 0x40) = *(s32 *)(param_1 + 0xc); - func_8012B2CC(param_1); - } -} - - -extern s32 func_8012BEE8(); -extern void func_80142414(s32 a0, s16 a1); - -void func_80181D20(s32 p) { - if (*(s32 *)(p + 0x1C) == 0xF) { - func_80142414(p, -0x90); - } - if (func_8012BEE8(p) != 0) { - *(s16 *)(p + 2) = 2; - } -} - - - -/* func_80181D70 — a randomised state entry: seed the timer at 0x1C with - * rand()%64 + 0x80, park 18000 at 0x48, then nudge the value at 0xE8 by a - * random 0..1023 in a random direction, push the command list D_801D4BF8, - * set the state word at 0x02 to 3 and clear bit 6 of the flags at 0xE0. - * - * §71 sibling-first: func_8018598C (same TU, MATCHed) is the same - * `if ((rand() & 1) == 0) v = base - off; else v = base + off;` idiom. - */ - -extern s32 rand(void); -extern void func_8012A828(s32 a0, void *a1); - -void func_80181D70(s32 param_1) { - - extern u8 D_801D4BF8[]; - s32 r; - s32 off; - s32 base; - s32 nv; - - r = rand(); - *(s32 *)(param_1 + 0x1C) = r % 0x40 + 0x80; - *(s32 *)(param_1 + 0x48) = 18000; - - r = rand(); - off = r % 0x400; - base = *(s32 *)(param_1 + 0xE8); - if ((rand() & 1) != 0) { - nv = base + off; - } else { - nv = base - off; - } - *(s32 *)(param_1 + 0xE8) = nv; - - func_8012A828(param_1, D_801D4BF8); - *(s16 *)(param_1 + 2) = 3; - *(u32 *)(param_1 + 0xE0) &= 0xFFFFFFBF; -} - - - - -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern void func_8012B178(s32 a0, s32 a1); -extern s32 func_801856F0(s32 a0); -extern void func_80185878(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BCCC(s32 a0); -extern s32 func_8012BEE8(); -extern s32 rand(void); - -void func_80181E38(s32 param_1) -{ - register s32 p __asm__("$17") = param_1; - s32 r; - s32 s0; - register s32 s2 __asm__("$18"); - - *(u16 *)(*(s32 *)(p + 0x20) + 0x12) += func_8012B608(*(s16 *)(*(s32 *)(p + 0x20) + 0x12), *(s32 *)(p + 0xE8), 8); - func_8012B178(p, 0xFFFB0000); - - *(u32 *)(p + 0xE0) &= 0xFFFFFFBF; - if (func_801856F0(p) == 0) { - func_80185878(p); - } - - r = func_8012BDBC(p, 0x300); - if (r != 0) { - r = func_8012BCCC(p); - if (r < 0x100000) { - *(s16 *)(p + 2) = 4; - return; - } - } else { - r = func_8012BCCC(p); - if (r < 0x4000) { - *(s16 *)(p + 2) = 0xF; - return; - } - } - - if ((*(u32 *)(p + 0xE0) & 0x40) != 0) { - return; - } - if (func_8012BEE8(p) == 0) { - return; - } - - s0 = rand() % 1024; - s2 = *(s32 *)(p + 0xE8); - if ((rand() & 1) == 0) { - r = s2 - s0; - } else { - r = s2 + s0; - } - *(s32 *)(p + 0xE8) = r; - *(s32 *)(p + 0x1C) = (rand() % 64) + 0x80; -} - - - - -extern void func_8012A828(s32 a0, void *a1); - -void func_80181FA4(s32 param_1) -{ - - extern u8 D_801D4140[]; - func_8012A828(param_1, D_801D4140); - *(s32 *)(param_1 + 0x48) = 0x4650; - *(s16 *)(param_1 + 0x2) = 0x5; -} - - - -extern s32 func_8012B8E4(s32 a0, s32 a1); -extern void func_8012B178(s32 a0, s32 a1); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern s32 func_801856F0(s32 a0); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BCCC(s32 a0); -extern s32 func_801858D8(s32 a0, s32 a1); - -void func_80181FE4(s32 p) -{ - - extern u16 D_800B99DA; - extern s32 D_801E1FB0; - s32 s1; - s32 e; - - *(u16 *)(*(s32 *)(p + 0x20) + 0x12) += func_8012B8E4(p, 8); - func_8012B178(p, 0xFFF90000); - - if ((u32)D_800B99DA % 10 == 0) { - e = func_80143B6C(p, 0); - if (e != 0) { - *(s16 *)(*(s32 *)(e + 0xCC) + 0x18) = 0x5000; - *(s16 *)(*(s32 *)(e + 0xCC) + 0x1A) = 0x5000; - } - } - - func_801856F0(p); - - if (func_8012BDBC(p, 0x300) == 0) { - *(s16 *)(p + 2) = 6; - return; - } - s1 = func_8012BCCC(p); - if (s1 >= 0x100000) { - *(s16 *)(p + 2) = 6; - return; - } - if (s1 < 0x6400) { - e = func_801858D8(p, 0); - if (e == 0) { - *(s16 *)(p + 2) = 8; - return; - } - if (s1 < D_801E1FB0) { - register s32 rv __asm__("$2") = 8; - *(s16 *)(p + 2) = rv; - } - return; - } - if (0x13FFE < s1 - 0x10001U) { - return; - } - e = func_8012BDBC(p, 0x100); - if (e == 0) { - return; - } - e = func_801858D8(p, 0); - if (e == 0) { - *(s16 *)(p + 2) = 0xA; - return; - } - if (D_801E1FB0 <= s1) { - return; - } - *(s16 *)(p + 2) = 8; -} - - -extern void func_8012A828(s32 a0, void *a1); - -void func_8018216C(s32 param_1) -{ - extern u8 D_801D40D8[]; - - *(s32 *)(param_1 + 0x1C) = 0x20; - *(s16 *)(param_1 + 0x2) = 7; - func_8012A828(param_1, D_801D40D8); -} - - -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BCCC(s32 a0); -extern s32 func_8012BEE8(); - -void func_801821A0(s32 p) -{ - s32 r; - - if (func_8012BDBC(p, 0x300) != 0) { - r = func_8012BCCC(p); - if (r < 0x100000) { - if (r < 0x6400) - *(s16 *)(p + 2) = 8; - else - *(s16 *)(p + 2) = 4; - return; - } - } else { - if (func_8012BCCC(p) < 0x4000) { - *(s16 *)(p + 2) = 0xF; - return; - } - } - - if (func_8012BEE8(p) != 0) { - *(s16 *)(p + 2) = 2; - } -} - - -void func_80182228(s32 p) -{ - extern u8 D_801D41E8[]; - s32 v0; - - func_8012A828(p, D_801D41E8); - v0 = *(s32 *)(p + 0xE0); - *(s16 *)(p + 2) = 9; - *(s32 *)(p + 0xE0) = (v0 | 2) & ~0x10; -} - - - -extern s32 func_801851C4(s32 a0, s32 a1); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BCCC(s32 a0); -extern void func_80187EF4(s32 a0, s32 a1); -extern void func_8012A828(s32 a0, void *a1); - -void func_80182274(s32 p) -{ - - extern u8 D_801D41E8[]; - extern u8 D_801D4B00[]; - s32 v0; - s32 s1; - - if (func_801851C4(p, 0x64) == 1) { - *(u32 *)(p + 0xE0) |= 0x10; - } - - if (*(s32 *)(p + 0x90) == (s32) D_801D41E8) { - if (*(s32 *)(p + 0x94) == 0xB) { - func_80187EF4(p, 0x8C0); - } - } else { - if (*(s32 *)(p + 0x94) == 8) { - func_80187EF4(p, 0x8C0); - } - } - - if (*(u16 *)(p + 0x72) & 0x4000) { - if (func_8012BDBC(p, 0x300) == 0) { - v0 = 6; - goto set_and_return; - } - s1 = func_8012BCCC(p); - if (s1 >= 0x100000) { - v0 = 2; - goto set_and_return; - } - if (s1 < 0x4000) { - func_8012A828(p, D_801D4B00); - *(u32 *)(p + 0xE0) &= ~0x10; - return; - } else if (s1 < 0x6400) { - if ((*(s32 *)(p + 0xE0) & 0x10) == 0) { - func_8012A828(p, D_801D4B00); - return; - } - func_8012A828(p, D_801D41E8); - *(u32 *)(p + 0xE0) &= ~0x10; - return; - } else { - v0 = 4; - goto set_and_return; - } - } - return; - -set_and_return: - *(s16 *)(p + 2) = v0; -} - - -void func_801823B0(s32 p) -{ - extern u8 D_801D4B00[]; - func_8012A828(p, D_801D4B00); - *(s16 *)(p + 2) = 0xB; - *(s32 *)(p + 0x10) *= 2; - *(s32 *)(p + 0x18) *= 2; - *(s16 *)(p + 0x34) = 0; -} - - - -extern s32 func_801851C4(s32 a0, s32 a1); -extern s32 func_801856F0(s32 a0); -extern s32 func_80143B6C(s32 a0, s32 a1); -extern void func_80187EF4(s32 a0, s32 a1); -extern s32 func_8012BEE8(); - -void func_80182404(s32 p) -{ - - extern u16 D_80126B96; - extern u16 D_800B99DA; - s32 e; - - if (func_801851C4(p, 0x64) == 1) { - D_80126B96 = 4; - } - - *(s32 *)(p + 0x10) = *(s32 *)(p + 0x10) * 31 / 32; - *(s32 *)(p + 0x18) = *(s32 *)(p + 0x18) * 31 / 32; - func_801856F0(p); - - if ((u32)D_800B99DA % 6 == 0) { - e = func_80143B6C(p, 0); - if (e != 0) { - *(s16 *)(*(s32 *)(e + 0xCC) + 0x18) = 0x5000; - *(s16 *)(*(s32 *)(e + 0xCC) + 0x1A) = 0x5000; - } - } - - if (*(s32 *)(p + 0x94) == 8) { - func_80187EF4(p, 0x8C0); - } - - if (*(u16 *)(p + 0x34) == 0) { - if (*(s32 *)(p + 0x94) == 0xE) { - *(u16 *)(p + 0x98) = 0; - *(s32 *)(p + 0x1C) = 0x1E; - *(u16 *)(p + 0x34) += 1; - } - } else { - if (func_8012BEE8(p) != 0) { - *(s16 *)(p + 2) = 6; - } - } -} - - -extern s32 D_801D4430; -extern void func_8012A828(s32 a0, void *a1); - -void func_80182554(void *arg0) { - extern void func_8012A828(s32, void*); - extern s32 D_801D4430; - - ((void (*)(void *, void *))func_8012A828)(arg0, &D_801D4430); - *(s16 *)((u8 *)arg0 + 0x2) = 0xD; - *(s32 *)((u8 *)arg0 + 0x1C) = 0x28; -} - - -INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_8017BEBC", func_80182594); - - -extern void func_8012C218(void *a0); -extern void func_8001C924(s32 a0, void *a1); -extern void func_8012A828(s32 a0, void *a1); -extern s32 func_8012BEE8(); -extern s32 func_8012B6D4(s16 *a0, s16 *a1); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern void func_8012B178(s32 a0, s32 a1); -extern s32 func_801856F0(s32 a0); -extern void func_80013350(s32 a0, void *a1); - - -void func_80182610(s32 p) -{ - - extern u8 D_801C35D4; - extern u8 D_801BFE10; - extern u8 D_801D4140[]; - extern u8 D_801D5040[]; - u16 uVar1; - s32 s1; - s32 r; - - uVar1 = *(u16 *)(p + 0x34); - switch (uVar1) { - case 0: - s1 = *(s32 *)(p + 0xCC); - if (s1 == 0 || *(s16 *)(s1 + 0x36) != *(s16 *)(p + 0xEC) || - func_8012BEE8(p) != 0) { - *(u16 *)(p + 2) = 0x23; - *(u32 *)(p + 0xE0) |= 0x800; - return; - } - goto call_b6d4; - case 1: - if (*(s16 *)(p + 0x98) != 0) { - return; - } - func_8012C218((void *)*(s32 *)(p + 0xCC)); - *(s32 *)(p + 0xCC) = 0; - func_8001C924(*(s32 *)(p + 0x20), &D_801C35D4); - func_8012A828(p, D_801D4140); - { - register u16 ns __asm__("$4"); - ns = *(u16 *)(p + 0x34); - *(s32 *)(p + 0x1C) = 0x200; - ns = ns + 1; - *(u32 *)(p + 0xE0) &= 0xFFFFFFFB; - *(u16 *)(p + 0x34) = ns; - } - return; - case 2: - s1 = *(s32 *)(p + 0xD0); - if (s1 == 0 || *(s16 *)(s1 + 0x36) != *(s16 *)(p + 0xEE) || - func_8012BEE8(p) != 0) { - *(u16 *)(p + 2) = 4; - *(u32 *)(p + 0xE0) &= 0xFFFFFFFE; - return; - } - call_b6d4: - r = func_8012B6D4((s16 *)(p + 4), (s16 *)(s1 + 4)); - *(s32 *)(p + 0xE8) = r; - goto LAB_80184738; - case 3: - func_8012C218((void *)*(s32 *)(p + 0xD0)); - *(s32 *)(p + 0xD0) = 0; - func_8001C924(*(s32 *)(p + 0x20), &D_801BFE10); - func_8012A828(p, D_801D4140); - *(s32 *)(p + 0x48) = 0x4650; - *(u16 *)(p + 2) = 5; - *(u32 *)(p + 0xE0) |= 1; - return; - default: - goto LAB_80184738; - } - -LAB_80184738: - r = func_8012B608(*(s16 *)(*(s32 *)(p + 0x20) + 0x12), *(s32 *)(p + 0xE8), 8); - *(u16 *)(*(s32 *)(p + 0x20) + 0x12) = - *(u16 *)(*(s32 *)(p + 0x20) + 0x12) + r; - - if (*(u16 *)(p + 0x34) == 0) { - func_8012B178(p, 0xFFF8D000); - } else { - func_8012B178(p, 0xFFF90000); - } - - func_801856F0(p); - - r = ((s32(*)(s32, s32))func_80013350)(p + 4, s1 + 4); - if (r < 0x900) { - if (*(u16 *)(p + 0x34) == 0) { - func_8012A828(p, D_801D5040); - } - *(u16 *)(p + 0x34) = *(u16 *)(p + 0x34) + 1; - } -} - - -INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_8017BEBC", func_80182890); - - -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern s32 func_8012BDBC(s32 a0, s32 a1); -extern s32 func_8012BEE8(); -extern void func_80142414(s32 a0, s16 a1); - -void func_801828D8(s32 p) { - s32 r; - - if (*(u16 *)(p + 0x34) == 0) { - r = func_8012B608(*(s16 *)(*(s32 *)(p + 0x20) + 0x12), *(s32 *)(p + 0xE8), 4); - *(u16 *)(*(s32 *)(p + 0x20) + 0x12) += r; - if (func_8012BDBC(p, 0x200) != 0) { - *(s32 *)(p + 0x1C) = 0xF; - *(u16 *)(p + 0x34) += 1; - func_80142414(p, -0x90); - } else if (r == 0) { - *(u16 *)(p + 2) = 2; - } - } else if (func_8012BEE8(p) != 0) { - *(u16 *)(p + 2) = 4; - } -} - - -extern void func_8012A828(s32 a0, void *a1); - -void func_80182998(s32 param_1) -{ - /* [T51] scoped in from file scope: a file-scope decl of these symbols constrains every - LATER function in this TU, which blocks a byte-true decl of a different type. - Declaration-only move (cookbook §103); the whole-binary byte-gate is the arbiter. */ - extern u8 D_801D47C0[]; - func_8012A828(param_1, D_801D47C0); - *(s32 *)(param_1 + 0x48) = 0x4650; - *(s16 *)(param_1 + 0x2) = 0x12; -} - - -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8_801829D8; - -extern s32 func_8012BCCC(s32 a0); -extern s32 func_8012B8E4(s32 a0, s32 a1); -extern s32 func_8012BEE8(); -extern s32 func_8012B8A4(s16 *a0); -extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); -extern void func_8012B178(s32 a0, s32 a1); -extern s32 func_801856F0(s32 a0); -extern void func_80185878(s32 a0); -extern s32 rand(void); - -void func_801829D8(s32 p) -{ - s32 v; - s32 r; - s32 t; - - v = func_8012BCCC(p); - if (v > 0x144000) { - *(s16 *)(p + 2) = 0x13; - return; - } - - if (v > 0xC4000) { - if ((*(u32 *)(p + 0xE0) & 0x40) == 0) { - r = func_8012B8E4(p, 8); - *(u16 *)(*(s32 *)(p + 0x20) + 0x12) += r; - } - } else { - if ((u32)(v - 0x24000) <= 0xA0000) { - *(s16 *)(p + 2) = 0x15; - return; - } - - if ((*(u32 *)(p + 0xE0) & 0x40) == 0) { - if (func_8012BEE8(p) != 0) { - t = func_8012B8A4((s16 *)p); - *(u32 *)(p + 0xE8) = (t + 0x800) & 0xFFF; - r = rand(); - *(s32 *)(p + 0x1C) = r % 0x40 + 0x40; - } - } - - r = func_8012B608(*(s16 *)(*(s32 *)(p + 0x20) + 0x12), *(s32 *)(p + 0xE8), 8); - *(u16 *)(*(s32 *)(p + 0x20) + 0x12) += r; - } - - func_8012B178(p, 0xFFF9C000); - *(u32 *)(p + 0xE0) &= 0xFFFFFFBF; - if (func_801856F0(p) == 0) { - func_80185878(p); - } -} - - -void func_80182B3C(s32 p) -{ - extern u8 D_801BCEB4[]; - extern u8 D_801D4488[]; - - *(s16 *)(p + 2) = 0x14; - if (!(*(u32 *)(p + 0xE0) & 0x400)) { - *(s16 *)(p + 0x34) = 1; - func_8012A828(p, D_801D4488); - } else { - *(s16 *)(p + 0x34) = 0; - func_8012A828(p, D_801BCEB4); - } -} - - -typedef struct { - SVECTOR_8016E7C8 v[4]; /* 0x00 */ - s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ - u8 f6; /* 0x38 */ - u8 pad[7]; /* -> 0x40 */ -} Prim_8016E7C8_80182B90; - -extern s32 func_8012BCCC(s32 a0); -extern void func_8012A828(s32 a0, void *a1); - - -void func_80182B90(s32 p) -{ - - extern u8 D_801D4488[]; - extern u8 D_801D47C0[]; - extern u8 D_801D4878[]; - s32 v; - - switch (*(u16 *)(p + 0x34)) { - case 0: - if (*(u16 *)(p + 0x72) & 0x4000) { - func_8012A828(p, D_801D4488); - *(u16 *)(p + 0x34) += 1; - } - break; - case 1: - v = func_8012BCCC(p); - if (v > 0x24000) { - break; - } - - if ((*(u32 *)(p + 0xE0) & 0x400) == 0) { - *(s16 *)(p + 2) = 0x15; - } else { - func_8012A828(p, D_801D4878); - *(u16 *)(p + 0x34) += 1; - } - break; - case 2: - if (*(u16 *)(p + 0x72) & 0x4000) { - func_8012A828(p, D_801D47C0); - *(s32 *)(p + 0x48) = 0x4650; - *(s16 *)(p + 0x2) = 0x12; - } - break; - } -} - - -extern void func_8012A828(s32 a0, void *a1); - -void func_80182CA0(s32 p) -{ - extern u8 D_801D4488[]; - - *(s16 *)(p + 2) = 0x16; - if ((*(u32 *)(p + 0xE0) & 0x400) == 0) { - func_8012A828(p, D_801D4488); - *(s16 *)(p + 0x34) = 4; - *(s32 *)(p + 0x1C) = 0xF; - } else { - *(s32 *)(p + 0x1C) = 0x1E; - *(s16 *)(p + 0x34) = 0; - } -} - diff --git a/src/ov_SC06_022/ov_SC06_022_jr_80180CD0.c b/src/ov_SC06_022/ov_SC06_022_jr_80180CD0.c new file mode 100644 index 000000000..7aad5ae8d --- /dev/null +++ b/src/ov_SC06_022/ov_SC06_022_jr_80180CD0.c @@ -0,0 +1,4087 @@ +#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 { + SVECTOR_8016E7C8 v[4]; /* 0x00 */ + s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ + u8 f6; /* 0x38 */ + u8 pad[7]; /* -> 0x40 */ +} Prim_8016E7C8; +typedef void (*Handler)(struct Entry_8016E95C *); +typedef struct { + s16 v[4]; +} Blk8_80126940_8017D348; +typedef struct { + s16 v[4]; +} Blk8_80126940_8017D5D8; +typedef struct { + s16 v[4]; +} Blk8_80126940_8017D6E0; +typedef struct { + s16 v[4]; +} Blk8_80126940_8017D7CC; +typedef struct { + u16 x; + u16 y; + u16 z; + u16 w; +} Vec4h_8017F30C; +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 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(); +extern void func_8014607C(void); +extern u8 D_80078EC1; +extern s32 D_80078EC8; +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 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 a0, s32 a1, s32 a2); +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(int param_1, short *param_2, short *param_3); +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 void func_8012E5CC(s32 param_1, u16 param_2, u16 param_3); +extern void func_80147364(u16 a0, s32 a1); +extern s32 func_800CCF28(s32 a0); +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 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 arg0, s32 arg1, s16 *arg2, s16 *arg3); +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 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 s32 func_8014CF04(s32 a0, s32 a1, void *a2); +extern void func_8014CD80(s32 a0, void *a1, void *a2); +extern void func_8014D0A4(s32 a0); +extern s32 func_8014D2A0(s32 a0, void *a1, void *a2); +extern s32 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 s32 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 s32 func_8014D820(s32 a0, u16 *a1, u16 *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 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 s32 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 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 u8 D_800D8D10[]; +extern s16 D_80078E9E; +extern void func_801550FC(s32 a0); +extern void func_80154ED8(s32 a0, s32 a1); +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 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 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 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(s16 *a0, s16 *a1); +extern void func_801567BC(s32 a0); +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 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 s32 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 *); +extern void func_80158AE4(void *a0); +extern void func_80158AB4(void *a0); +extern void func_8016F264(void); +extern void func_80165840(void); +extern void func_801658DC(void); +extern void func_80165A78(s32); +extern void func_80158AE4(void * a0); +extern M2C_UNK D_800D58D8; +extern void func_80158BB0(void *arg0); +extern s32 func_80159404(s32 a0, s32 a1); +extern void func_80158C40(s32 *a0); +extern void func_80158CD8(s32 *a0); +extern s32 func_80159434(s32 a0, s32 a1); +extern void func_80158D60(s32 a0); +extern M2C_UNK D_800D5904; +extern void func_80158E24(s32 *a0); +extern s32 D_8018F688[]; +extern int rand(void); +extern s32 func_8013767C(s32 a0); +extern void func_80158F00(int param_1); +extern u8 D_80110C3C[]; +extern s32 func_801399F0(s32); +extern void func_80139914(s32); +extern s32 func_80159464(void); +extern void func_801594E8(s32, s32); +extern void func_80158FA4(s32 param_1); +extern s32 func_801399F0(s32 a0); +extern u8 D_80110C94[]; +extern u8 D_80110CD4[]; +extern void func_80159070(void *a0); +extern s32 func_80029A94(s32); +extern void func_80175454(void); +extern void func_800298BC(void *); +extern void func_8002992C(s32); +extern void func_800CF804(void); +extern void func_800CF818(void); +extern u8 D_80110D0C[]; +extern void func_80159120(s32 a0); +extern void func_801592CC(s32 *a0); +extern u8 D_800AE6BD; +extern s32 D_801E0E38; +extern void func_8015934C(void *arg0); +extern void func_801593E4(A801593E4 *a0); +extern void (*D_8018F904[])(void); +extern void func_80159698(void *a0); +extern s32 func_801596D4(void *a0); +extern void func_80174B6C(void); +extern void func_80129248(s16 a0); +extern void func_8013C938(void); +extern void func_8013CB20(void); +extern void func_8013C98C(void); +extern void func_8002850C(s32, s32, s32); +extern void func_80028620(s32, void *); +extern s16 D_800B9AAC[]; +extern s16 D_800B9B00; +extern u16 D_801270C0; +extern u32 D_800AFAE8[]; +extern char D_8018F724[]; +extern s32 func_801596F0(s32 param_1); +extern s32 func_80159874(void); +extern void func_800167B8(s32 a0); +extern s32 func_8015987C(s32 a0); +extern int func_800167F0(int arg); +extern int func_801598BC(void); +extern void func_80159968(void *a0); +extern void func_801598E0(u8 *a0); +extern void (*D_8018F9A8[])(void); +extern void func_80159A20(void *a0); +extern void func_801599E0(void *a0); +extern void func_80159A18(void); +extern void func_80159BE4(s32); +extern void func_80159B08(s32 *a0); +extern void func_80159B70(void *a0); +extern void func_80159B3C(void * a0); +extern void (*D_8018FAFC[])(void); +extern void func_80159BAC(s32 a0); +extern s32 func_80172590(u8 *a0); +extern unsigned char D_8018F918; +extern void func_80159BE4(s32 arg0); +extern void func_8015A1C8(s32 a0); +extern void func_8015A2D8(s32); +extern void func_8015A1FC(s32 *a0); +extern void func_8015A264(void *a0); +extern void func_8015A230(s32 *a0); +extern void (*D_8018FB04[])(void); +extern void func_8015A2A0(s32 a0); +extern int D_8018F928; +extern s32 func_80172608(u8 *a0); +extern void func_8015A2D8(s32 param_1); +extern u8 D_800D48DC; +extern s32 func_8015AB7C(s32 a0); +extern s32 D_8011F9C4; +extern s32 func_8015ABD4(s32 a0, s32 a1, s32 a2); +extern s32 func_80161CD0(s32 a0, s32 a1); +extern M2C_UNK D_8018F948; +extern void func_8015AC48(s32 arg0); +extern void func_8015AC90(s32 a0); +extern void func_8015ADB0(s32 a0); +extern void func_8015ACC4(s32 *arg0); +extern void func_8015AD3C(void *a0); +extern void func_8015AD08(void *arg0); +extern void (*D_8018FB0C[])(void); +extern void func_8015ADB0(s32); +extern void func_8015AD78(s32 a0); +extern void func_8015ADB0(s32 arg0); +extern s32 D_800D4A9C; +extern int func_8015B6F4(int param_1); +extern u8 D_800D4F8C[]; +extern s32 func_8015B7B4(s32 a0); +extern u8 D_800D4BE0[]; +extern s32 func_8014A51C(void); +extern s32 func_8015B858(u8 *a0); +extern s32 D_800D4B48; +extern void func_8015B8F8(s32 *a0); +extern void func_8015BD8C(s32 *a0); +extern s32 func_8015BE94(); +extern void func_8015BE38(struct Obj *a0); +extern s32 func_8015BE74(void); +extern void func_80161124(void *a0); +extern s32 func_8015BE94(s32 *a0); +extern s32 func_8015AE2C(); +extern s32 func_8015BEC4(void); +extern s32 func_8015B950(s32 arg0); +extern s32 func_8015BEE4(void); +extern void func_8015BF04(s32 *a0); +extern void func_8015C0C4(s32 a0); +extern void func_8015BFF4(void *a0); +extern void func_8015BF7C(s32 *a0); +extern void func_8015C030(s32 *a0, s32 a1); +extern void func_8015BFB0(s32 *a0, s32 a1); +extern void (*D_8018FB34[])(void); +extern void func_8015C0C4(s32); +extern void func_8015C08C(s32 a0); +extern s32 func_8015C128(s32 param_1); +extern void func_8015C6A4(void); +extern void func_8015C788(s32 a0); +extern void func_8015C6AC(s32 *a0); +extern void func_8015C714(void *a0); +extern void func_8015C6E0(s32 *a0); +extern void (*D_8018FB40[])(void); +extern void func_8015C788(s32); +extern void func_8015C750(s32 a0); +extern void func_8015CB94(s32 a0); +extern void func_8015CBCC(void); +extern void func_8015CBD4(void); +extern void func_8015CBDC(void); +extern void func_8015CBE4(void); +extern void func_8015CBEC(void); +extern void func_8015CBF4(void); +extern void func_8015CBFC(void); +extern void func_8015CC04(void); +extern void func_8015CC0C(s32 *param_1); +extern void func_8015CC74(s32 *a0); +extern void func_8015CC40(s32 *a0); +extern s32 func_8015CCD0(); +extern s32 func_8015CCB0(void); +extern s32 func_801725E0(u8 *a0); +extern s32 func_8015CCD0(s32 param_1); +extern s32 func_8015CD20(s32 arg0); +extern void func_8015CF24(s32 a0); +extern void func_8015D01C(); +extern void func_8015CF58(s32 *param_1); +extern void func_8015CFC0(s32 *a0); +extern void func_8015CF8C(s32 *a0); +extern void func_8015CFFC(void); +extern void func_8015D01C(int param_1); +extern void (*D_8018F9B4[])(void *); +extern s32 func_801725F4(u8 *a0); +extern void func_8015D104(void *arg0); +extern s32 D_8018FBE4; +extern void func_8015D380(s32 a0); +extern unsigned char D_8018ECC8[]; +extern void func_8015D414(int param_1); +extern void func_8015D57C(s32); +extern void func_8015D480(s32 *a0); +extern s32 func_8015D4E8(s16 *a0); +extern void func_8015D4B4(s16 *a0); +extern void func_8015D524(s32 arg0); +extern void func_8015D544(s32 a0); +extern void func_801746DC(void); +extern void func_8015D57C(s32 arg0); +extern s32 func_80161B18(void *a0); +extern s32 func_80161B84(void *a0); +extern void func_80154150(int, int); +extern void func_80149374(int, int); +extern unsigned char D_8018FBF8[]; +extern void func_8015D5E8(int param_1); +extern int func_8015E0D4(int); +extern void func_8015DA5C(s32 a0); +extern void func_8015DB6C(s32 a0); +extern void func_8015DA90(s32 *a0); +extern void func_8015DAF8(s32 *a0); +extern void func_8015DB6C(s32); +extern void func_8015DB34(s32 a0); +extern void func_8015DCB8(s32 a0); +extern void func_8014BD60(s32 a0, s32 a1); +extern int func_8015DD74(int); +extern void func_8015DBD4(void *arg0); +extern int func_8015DC84(int a0); +extern s8 D_8018FC34[]; +extern void func_8015DCB8(s32 param_1); +extern int func_8015DD74(int arg0); +extern void func_8015DECC(s32 a0); +extern void func_8015DDF0(s32 *a0); +extern void func_8015DE58(s32 *a0); +extern void func_8015DECC(s32); +extern void func_8015DE94(s32 a0); +extern void func_8015E018(s32 a0); +extern void func_8015DF34(void *arg0); +extern int func_8015DFE4(int a0); +extern void func_8015E018(s32 param_1); +extern int func_8015E0D4(int a0); +extern void func_8015E22C(s32 a0); +extern void func_8015E150(s32 *a0); +extern s32 func_8015E1B8(s32 a0); +extern void func_8015E184(s32 *arg0); +extern void func_8015E22C(s32); +extern void func_8015E1F4(s32 a0); +extern u8 D_800D4FF4[]; +extern u8 D_800D5098[]; +extern u8 D_800D5060[]; +extern s32 func_8014A850(s32 a0); +extern void func_8015E40C(s32 a0); +extern void func_8015E588(void); +extern void func_8015E4B0(s32 a0); +extern void func_8015E288(s32 a0); +extern u16 D_8018FC7C; +extern u16 D_8018FC7E; +extern u16 D_8018FC80; +extern s32 D_8018FC84; +extern void func_80013E94(void *a0, void *a1); +extern void func_8015E4B0(s32 param_1); +extern void func_8013C9C4(void *a0); +extern s32 D_8018FC8C; +extern void func_8015E5B0(u8 *self); +extern void func_8015E714(s32 *a0); +extern void func_8015E95C(s32); +extern void func_8015E84C(s32 *a0); +extern void func_8015E8E8(s32 *a0); +extern void func_8015E9B8(s32 *a0); +extern void func_8015E8B4(s32 *a0); +extern void func_8015E924(s32 a0); +extern void func_8015E95C(s32 a0); +extern s16 D_801152A0; +extern void func_80160818(s32 *a0); +extern void func_8015ED6C(s32 *a0); +extern void func_8015EE7C(s32); +extern void func_8015EDA0(s32 *a0); +extern s32 func_8015EE08(s32 a0); +extern void func_8015EDD4(s32 *arg0); +extern void func_8015EE44(s32 a0); +extern int D_800D4C48; +extern int D_8018F998; +extern void func_8015EE7C(s32 param_1); +extern void func_8015EEE0(void *arg0); +extern void func_8015EF9C(void); +extern void func_8015F080(s32); +extern void func_8015EFA4(s32 *a0); +extern void func_8015F00C(s32 *a0); +extern void func_8015EFD8(s32 *a0); +extern void func_8015F048(s32 a0); +extern void func_8015F080(s32 a0); +extern s32 D_80062BE8; +extern void func_801466F0(s32, s32, s32, s32, s32, s32, s32, s32); +extern s32 func_80161208(void); +extern void func_8015F118(void *a0); +extern void func_8015F260(s32 *a0); +extern void func_8015F380(); +extern void func_8015F2BC(s32 *a0); +extern void func_8015F324(s32 *a0); +extern void func_8015F2F0(s32 *a0); +extern void func_8015F360(void); +extern s32 func_801725B8(u8 *a0); +extern void func_8015F380(void* arg0); +extern void func_8015F738(s32 *a0); +extern void func_8015F848(s32 *a0); +extern void func_8015F76C(s32 *a0); +extern s32 func_8015F7D4(s32 a0); +extern void func_8015F7A0(s32 *arg0); +extern void func_8015F810(s32 *a0); +extern void func_80147078(s32 *, s16); +extern void func_80159B70(void *); +extern void func_8015F89C(void *arg0); +extern void func_8015F948(s32 *param_1); +extern void func_8015F9A4(void *arg0); +extern void func_8015FA24(s32 arg0); +extern void func_8015FBE0(s32 *a0); +extern void func_8015FA44(s32 *a0); +extern void func_8015FAAC(s32 *a0); +extern void func_8015FA78(s32 *a0); +extern s32 func_801612B8(void *a0, s32 a1); +extern void func_8016007C(s32 a0); +extern void func_8015FAE8(void *arg0); +extern void func_8015FCC8(void *param_1); +extern unsigned int D_8018FD10[]; +extern void func_8015FD74(int param_1); +extern s32 func_80028DE0(void); +extern u8 func_80165700(s32 a0, s32 a1); +extern void func_8015FDCC(s32 a0); +extern u8 D_80078EC2; +extern u8 func_801656E8(s32 a0, s32 a1); +extern void func_80165670(s32 a0, s32 a1); +extern void func_8016004C(s32 a0); +extern void func_8015FF20(void *param_1); +extern void func_801601AC(s32 *a0); +extern void func_801600D0(s32 *a0); +extern void func_80160138(s32 *a0); +extern void func_80160104(s32 *a0); +extern void func_80160174(s32 *a0); +extern void func_801601E4(s32 *a0); +extern void func_80160244(s32 *a0); +extern void func_8016032C(void); +extern void func_80160410(s32 *a0); +extern void func_80160334(s32 *a0); +extern void func_8016039C(s32 *a0); +extern void func_80160368(s32 *a0); +extern void func_801603D8(s32 *a0); +extern u8 D_80062BD0; +extern void func_80160410(s32 * a0); +extern void func_801607B8(s32 *a0); +extern void func_801608C0(s32 *a0); +extern void func_801607E4(s32 *a0); +extern void func_8016084C(s32 *a0); +extern void func_80160888(s32 *a0); +extern void func_80160A28(s32 a0); +extern void func_80160A74(s32 *a0); +extern void func_80160BB4(s32 *a0); +extern void func_80160ACC(s32 *a0); +extern s32 func_80160B34(s32 a0); +extern void func_80160B00(s32 *arg0); +extern void func_80160B70(s32 a0); +extern void func_80160C28(void *arg0); +extern void func_80160CB4(s32 *a0); +extern void func_80160D10(void *arg0); +extern void func_80160DEC(u8 *a0); +extern void func_80160F00(); +extern void func_80160E3C(s32 *a0); +extern void func_80160EA4(); +extern void func_80160E70(s32 *a0); +extern void (*D_8018FDC0[])(void); +extern void func_80160EA4(void *a0); +extern void func_80160EE0(void); +extern void func_80160F00(void* arg0); +extern void func_800D0F4C(s32 a0); +extern u8 D_80110EC0; +extern void func_80160F70(s32 a0); +extern void func_80160FE0(s32 *a0); +extern void func_80161034(void *a0); +extern void func_80161094(s32 a0); +extern void func_801610FC(void); +extern void func_801483E8(void); +extern s32 func_80161A60(s32 a0); +extern void func_8016130C(void *a0, s32 a1); +extern void func_80161240(void *a0); +extern void func_80161374(void *a0, s32 a1); +extern void func_80161278(void *a0); +extern s32 func_801612B8(void * a0, s32 a1); +extern void func_8016163C(void *a0, s32 a1); +extern void func_80161774(void *a0, s32 a1); +extern s32 func_8016197C(s32 a0, s32 a1); +extern s32 func_80161488(void *a0); +extern void func_80161888(void *a0, s32 a1); +extern void func_801614E4(void *a0); +extern void func_8016191C(void *a0, s32 a1); +extern void func_8016151C(void *a0); +extern void func_80161554(void *a0); +extern s32 func_801615C4(void * arg0, s32 arg1); +extern s32 func_801619A4(s32 *a0); +extern s32 func_80161A00(s32 a0); +extern s32 func_80161A30(s32 a0); +extern int func_801497A8(void); +extern int func_80161BE0(void *param_1); +extern u16 D_8018FDF0[]; +extern void func_80161C98(int param_1, u32 param_2); +extern void func_80161E08(s32); +extern s32 func_80162438(s32); +extern s32 D_800AE6A8; +extern void func_800D1734(void *); +extern s32 D_8018FE54; +extern void func_80161D88(void); +extern void func_80161E08(s32 param_1); +extern int func_800291DC(int); +extern int func_800D0E30(void *a0); +extern int func_801620C4(void); +extern s32 func_800D0D7C(s32, s32); +extern int D_801E0E48[]; +extern void func_8016216C(void); +extern u8 D_80078EB0; +extern u8 D_80078EB1; +extern s32 func_801621CC(s32 arg0); +extern void func_801622C4(void); +extern void (*D_8018FE78[])(void); +extern void func_80162330(void *a0); +extern void func_8014706C(void *a0); +extern s32 func_8016236C(u8 *a0); +extern void func_800D0C48(s32 a0); +extern s32 func_801623B8(s32 *a0); +extern s32 func_800167F0(s32 a0); +extern s32 func_80162414(void); +extern s32 func_80162438(s32 _unused0); +extern int func_801626B8(void); +extern void func_80162714(void); +extern int D_801E0EA0[]; +extern void func_80162760(void); +extern void func_801627C0(void); +extern void (*D_8018FEC0[])(void); +extern void func_80162834(void *a0); +extern void func_8001CB6C(u8 *a0, s32 a1, s32 a2, s32 a3); +extern void func_80162968(s32 a0); +extern s32 func_80162ACC(u8 *a0); +extern u8 D_800B5CB8; +extern s32 D_8018FEB0; +extern s32 D_800B5CBC; +extern u8 D_800B5CDF; +extern s32 D_800B5CEC; +extern void func_80162870(s32 param_1); +extern void func_801628F4(s32 *a0); +extern void func_80162968(s32 param_1); +extern void func_80162AC0(s32 *a0, s8 a1); +extern s32 func_80162AE0(u8 *a0); +extern void func_80162AF4(void); +extern void func_80162CC4(void); +extern s32 D_80126D40; +extern void func_80162B1C(void); +extern void func_80162D28(s32 *a0); +extern void func_80162D88(s32 *a0); +extern void func_80162DE8(s32 *a0); +extern void func_80162E48(s32 *a0); +extern void func_80162EA8(s32 *a0); +extern void func_80162F60(s32 arg0, s32 arg1); +extern void func_80162F80(s32 arg0, s32 arg1); +extern void func_80162FA0(s32 arg0, s32 arg1); +extern void func_80162F08(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80162FC0(s32 *a0); +extern void func_80162FF4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_801630C4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80163194(s32 a0, s32 a1, s32 a2, s32 a3, s32 arg4); +extern void func_8016325C(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80163234(s32 a0); +extern s32 D_80115100; +extern s32 func_801632E0(void); +extern s32 D_80115200; +extern s32 func_801632F0(void); +extern u16 D_80126B18[]; +extern void func_80163328(void); +extern s32 func_801633A8(void); +extern s32 func_80163408(s32 param_1, s32 param_2, s32 param_3, s32 param_4); +extern void func_80163534(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, u16 * a5); +extern void func_8016345C(s32 a0, u16 a1, s32 a2, u16 a3, s32 a4); +extern char D_801E0598[8]; +extern void *memcpy(void *dst, const void *src, unsigned int n); +extern void func_801634D8(s32 param_1, u16 param_2, u16 param_3, s32 param_4, u16 param_5); +extern void func_80157158(); +extern void func_80163664(s32 a0, u16 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_801636D0(s32 a0, s32 a1); +extern s32 func_8016380C(struct S8016380C *a0, s32 a1); +extern void *memcpy(void *dst, void *src, s32 n); +extern s32 func_801638A0(u8 *a0, s32 a1); +extern s32 func_80163950(s32 a0); +extern void (*D_8018FEC8[])(void); +extern void func_80163A58(void *a0); +extern void func_80163A94(s32 param_1); +extern void func_80163C2C(s32 param_1); +extern void func_80163EC8(s32 param_1); +extern void func_80164270(s32 *a0); +extern void func_80164418(void); +extern void func_80163764(s32 a0); +extern void func_801642AC(s32 a0); +extern void func_8016432C(s32 a0); +extern void func_80164410(void); +extern s32 func_80012DBC(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80164530(s32 arg0); +extern void (*D_8018FF1C[])(void); +extern void func_80164744(s32 param_1); +extern void func_8001C810(s32 a0, s32 a1); +extern void func_80164A74(s32 *a0); +extern void func_80164930(s32 a); +extern u16 D_800DF2E0; +extern s32 D_8018FEE4; +extern s16 D_8018FF18; +extern s16 D_8018FF16; +extern s16 D_8018FF14; +extern void func_801647A4(int param_1); +extern void func_80164ACC(); +extern void func_80164864(void *a0); +extern void func_80164930(s32 param_1); +extern s32 func_8014C308(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80164ACC(s32 a0); +extern void (*D_8018FF28[])(void); +extern void func_80164BA0(void *a0); +extern void func_8001CD50(s32 a0, s32 a1); +extern void func_800233CC(void *, unsigned short); +extern void func_80164DD0(s32 a0); +extern void func_80164DB0(void); +extern u8 D_801E0F00; +extern u8 D_801E0F01; +extern u8 D_801E0F02; +extern u8 D_801E0F03; +extern u8 D_801E0F04; +extern u8 D_801E0F05; +extern u8 D_801E0F06; +extern u8 D_801E0F07; +extern void func_80164BDC(s32 param_1); +extern void func_80164E40(void); +extern void func_80164CD4(u8 *a0); +extern void func_80164D4C(void *arg0); +extern void (*D_8018FF38[])(void); +extern void func_80164EA4(void *a0); +extern void func_80165124(void *a0); +extern void func_80164EE0(int param_1); +extern s32 func_80165140(s32 a0); +extern void func_801651B8(void *a0); +extern void func_80164F44(void *arg0); +extern void func_80165024(void *a0); +extern void func_80165064(s32 *a0); +extern void func_801650C4(s32 *a0); +extern s32 func_80165140(s32 param_1); +extern s32 func_80165240(s32 a0, s32 a1, s32 a2); +extern s32 D_801E0F40; +extern void func_801651B8(void * param_1); +extern u8 D_80126CF8; +extern void func_8016533C(void); +extern void func_801653F4(s32 a0); +extern void func_80165580(s32 a0); +extern void func_80165374(s32 a0); +extern void func_80165580(s32 _arg0); +extern void func_801653B8(s32 *a0); +extern s32 func_80165624(s32 a0); +extern u8 D_80078EC5; +extern void (*D_8018FF7C[])(void); +extern u8 func_80165658(s32 a0, s32 a1); +extern void func_800CAE0C(s32 a0); +extern void func_801654A8(s32 arg0); +extern void func_80165B28(void *a0); +extern void func_801655E4(s32 a0); +extern u8 D_8018FFF8[]; +extern s32 D_80190018[]; +extern u8 D_80190094[]; +extern u8 func_801656D0(s32 a0, s32 a1); +extern u8 D_801900B4[]; +extern u8 D_801900D4[]; +extern void func_800CAF6C(void); +extern void func_80165770(void); +extern void func_801657D8(void); +extern u8 D_80078EC3; +extern void func_801657A0(void); +extern s32 D_80078EA0; +extern s32 D_80078EA8; +extern u8 D_80078EBB; +extern s32 D_80078ED4; +extern s32 D_80078ED8; +extern s32 D_80078EDC; +extern u8 D_80078EE0; +extern void func_80165874(void); +extern s8 D_80078EC4; +extern void func_801658EC(void); +extern s32 func_80165900(void); +extern s32 func_80165910(void); +extern s32 D_8012672C; +extern s32 D_8012811C; +extern s32 D_80126B08; +extern void func_80165938(void); +extern void func_80165958(void); +extern s32 func_80165978(void); +extern void func_80165988(void); +extern s32 func_801659A8(void); +extern void func_801659B8(void); +extern s32 func_801659CC(void); +extern void func_80165A18(void); +extern s32 func_80165A50(s32 _arg0); +extern void func_80165AC8(void); +extern void func_80165A78(s32 arg0); +extern void (*D_80190170[])(void); +extern void func_80165B08(void); +extern void func_80165B10(void); +extern void func_80165B18(void); +extern void func_80165B20(void); +extern void (*D_801901EC[])(void); +extern void func_80165BB4(u8 *a0); +extern void func_80165B6C(u8 *a0); +extern void func_80165C58(s32 arg0); +extern void func_80165BFC(void *a0); +extern void func_80165C78(void); +extern M2C_UNK D_801E05A8; +extern void func_80165E2C(u16 *arg0); +extern s32 func_80165FA4(s32 a0, s32 a1, s32 a2); +extern s32 func_80167DBC(s32 a0, s32 a1, s32 a2); +extern s32 func_80167AE0(s32 a0, s32 a1, s32 a2); +extern void func_80165E90(void); +extern void func_80020F34(s32 a0, s32 a1); +extern s32 func_80165FA4(s32 arg0, s32 arg1, s32 arg2); +extern void (*D_801901F8[])(void); +extern void func_80166018(void *a0); +extern void func_80166054(s32 arg0); +extern void func_801661CC(s32 param_1); +extern void func_80166244(void* arg0); +extern void func_8016629C(void *a0); +extern void func_801662F4(void *a0); +extern void func_8016634C(void *a0); +extern void func_801663A4(void *a0); +extern void (*D_80190200[])(void); +extern void func_801663FC(void *a0); +extern s32 func_800D21C4(s32 a0, void *a1, s32 a2); +extern void func_800D1FC8(s32 a0, s32 a1); +extern void func_80128EA8(s32 a0, s32 a1, s32 a2); +extern void func_801665B4(); +extern void func_80146C3C(); +extern void func_80166438(u8 *a0); +extern s32 func_80128ED8(s32 param_1, s32 *param_2); +extern void func_800D22E4(s32 a0); +extern void func_801665B4(s32 *a0); +extern void (*D_801902C8[])(void); +extern void func_80166618(void *a0); +extern void (*D_801902D8[])(void); +extern void func_80166654(void *a0); +extern s32 func_80166690(s32 param_1, s32 param_2); +extern s32 func_80166994(); +extern s32 func_80166F58(s32 param_1, s32 param_2, s32 param_3, s32 param_4); +extern s32 func_80167540(s32 arg0); +extern void (*D_801902E8[])(void); +extern void func_801678B4(void *a0); +extern void RotMatrixYXZ(void *a0, void *a1); +extern void func_80048EAC(void *a0, void *a1); +extern s32 func_801670E4(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80146C3C(void); +extern void func_801678F0(s32 a0); +extern void (*D_801902F4[])(void); +extern void func_80167A9C(void *a0); +extern void func_80167AD8(void); +extern s32 func_80167AE0(s32 param_1, s32 param_2, s32 param_3); +extern void func_80168070(s32 a0, s16 *a1, s16 *a2, void *a3); +extern u8 D_80190254[]; +extern u8 D_80190268[]; +extern s32 func_80167DBC(s32 arg0, s32 arg1, s32 arg2); +extern void func_800D20C0(void *a0, void *a1, s32 a2); +extern void func_80017E68(void *a0, void *a1); +extern void func_800D23D0(void *a0); +extern void ApplyTransposeMatrixLV(void *a0, void *a1, void *a2); +extern s32 D_801269A4; +extern s32 D_801269A8; +extern s32 D_801269AC; +extern void func_80168070(s32 param_1, s16 *param_2, s16 *param_3, void *param_4); +extern s32 func_80166994(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_8016829C(s32 a0); +extern s32 func_80166690(s32 a0, s32 a1); +extern void func_80168328(s32 arg0); +extern void func_801683D8(s32 a0); +extern void func_801684B4(s32 a0); +extern void func_80168540(s32 a0); +extern void func_801685EC(s32 a0); +extern void func_80168640(s32 a0); +extern s32 RotMatrixX(s32 a0, void *a1); +extern void func_80168664(void *arg0); +extern void (*D_8019030C[])(void); +extern void func_80168744(void *a0); +extern void func_80168BDC(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_801687CC(s32 a0); +extern void func_80168780(s32 a0); +extern void func_80168828(void); +extern void func_801687CC(s32 param_1); +extern void func_80168828(); +extern void (*D_80190314[])(void); +extern void func_801689D8(void *a0); +extern void func_80168A14(s32 *a0); +extern void func_80168A88(void); +extern void (*D_8019031C[])(void); +extern void func_80168AA8(void *a0); +extern void func_80168AE4(s32 a0); +extern void func_800D2318(void); +extern void func_80168BDC(s32 param_1, s32 param_2, s32 param_3, s32 param_4); +extern void (*D_80190324[])(void); +extern void func_80168D58(void *a0); +extern void func_80168D94(int a0); +extern void func_80168F40(); +extern void func_80168EC4(s32 a0); +extern void func_80168F40(void *arg0); +extern void (*D_8019032C[])(void); +extern void func_8016901C(void *a0); +extern void func_80169058(s32 a0); +extern s32 func_80169228(void); +extern void func_801691B8(void *a0); +extern void (*D_80190334[])(void); +extern void func_801693CC(void *a0); +extern void func_80169584(s32 param_1); +extern void func_80169408(s32 a0); +extern void func_8016951C(int param_1); +extern s32 func_80017758(void *a0, void *a1); +extern s32 func_80017DC4(void *a0, void *a1); +extern void func_801696D8(s32 a0, s32 a1); +extern void (*D_8019033C[])(void); +extern void func_80169830(void *a0); +extern void func_8016986C(s32 a0); +extern s32 func_80169A4C(s32 a0, s32 a1); +extern void func_801699D0(void *arg0); +extern void (*D_801903F0[])(void); +extern void func_80169B80(void *a0); +extern void func_80169E44(s32 a0); +extern void (*D_801903F8[])(void); +extern void func_80169F00(void *a0); +extern char D_801903A8[]; +extern char D_80190368[]; +extern void func_80169F3C(int param_1); +extern void func_80169FE0(s32 a0); +extern void (*D_80190430[])(void); +extern void func_8016A020(void *a0); +extern void func_8016A05C(void *a0); +extern void func_8016A290(s32 a, void *b, void *c); +extern void func_8016A08C(s32 param_1); +extern void func_8016A1CC(int param_1); +extern void func_8016A290(s32 param_1, void *param_2, void *param_3); +extern void (*D_8019043C[])(void); +extern void func_8016A700(void *a0); +extern s32 func_8016A73C(s32 arg0); +extern s32 func_8016A8FC(s32 a0); +extern void func_8016A890(s32 arg0); +extern u16 D_80126B5E; +extern u16 D_80126B62; +extern u16 D_80126B66; +extern void func_8016AA50(s32 param_1, s32 param_2); +extern void (*D_80190484[])(void); +extern void func_8016AB30(void *a0); +extern void func_8016B234(void); +extern void func_8016AFB0(s32 a0); +extern void func_8016B114(void *arg0); +extern s32 func_8016B448(s32, s32); +extern s32 func_8016BA48(s32 a0); +extern void func_8016B3F4(s32 a0); +extern s32 func_8016B428(s32 a0); +extern void func_8016B984(void *a0); +extern s32 func_8016B448(s32 arg0, s32 arg1); +extern void (*D_80190500[])(void); +extern void func_8016B4BC(void *a0); +extern int func_8016B9F8(int); +extern int func_8016B834(int, int); +extern void func_8016B91C(int); +extern int D_801E1260; +extern void func_8016B4F8(int param_1); +extern s32 func_8016B9F8(s32 param_1); +extern void func_8016B6BC(s32, s32, s32, s32); +extern void func_8016B91C(s32); +extern s16 D_801904F4[]; +extern void func_8016B5C0(s32 param_1); +extern void func_8001CD9C(int, void *); +extern int *D_80190538[]; +extern unsigned short D_80190540[]; +extern unsigned short D_80190548[]; +extern unsigned char D_801E1268[]; +extern int func_8016B834(int param_1, int param_2); +extern void func_8016B964(SrcB964 *a0, DstB964 *a1); +extern void func_8016B91C(s32 arg0); +extern s32 D_801E1260; +extern s32 func_8016BA68(s32, s32); +extern void func_8016BADC(void *a0, s32 a1, s32 a2); +extern void (*D_80190550[])(void); +extern void func_8016BBA4(void *a0); +extern s32 func_8016BBE0(s32 param_1); +extern void func_8016BFA8(s32 a0, s32 a1, s32 a2, s32 a3); +extern M2C_UNK D_801E139C; +extern M2C_UNK D_801E13A0; +extern void func_8016BCC0(void *arg0); +extern s32 func_8016BD78(s32 param_1); +extern s32 func_8016BEA0(s32 param_1); +extern void func_8016BF34(void *a0); +extern void func_8016BFD0(s32 a0, s32 a1, s32 a2, s32 a3, void *a4); +extern s32 D_801E1328; +extern void (*D_80190580[])(void); +extern void func_8016C14C(void *a0); +extern s32 func_8016C374(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801E13A4[]; +extern u8 D_801E13AC[]; +extern u8 D_801E135C[]; +extern void func_8016C2C4(s32 param); +extern s32 func_8016C49C(s32 param_1_arg); +extern s32 VectorNormalSS(void *a0, void *a1); +extern void func_8016C74C(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern short func_8016CF04(s32 a0, s32 a1); +extern void func_8016C83C(s32 a0); +extern void (*D_80190588[])(void); +extern void func_8016CB84(void *a0); +extern short func_8016CF04(s32 param_1, s32 param_2); +extern void (*D_801905A4[])(void); +extern void func_8016D19C(void *a0); +extern void (*D_801905AC[])(void); +extern void func_8016D428(void *a0); +extern void func_8016D464(u8 *a0); +extern void func_8016D4DC(s32 a0); +extern void func_8016D5EC(s32 *a0); +extern short func_8016CBC0(void); +extern void func_8016D64C(int param_1); +extern void func_8016D778(s32 a0); +extern void func_800D20C0(); +extern void func_8016D848(s32 *a0); +extern void func_8016D984(s32 *a0); +extern void func_8016DBD8(u8 *a0); +extern void (*D_80190614[])(int); +extern void func_8016DA30(int param_1); +extern s32 func_8001CC3C(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_801905B8; +extern u8 D_801905C4; +extern void func_8016DA7C(s32 param_1); +extern void func_8016DB34(s32 param_1); +extern void (*D_80190648[])(void); +extern void func_8016DEA4(void *a0); +extern void func_8016DEE0(s32 a0); +extern void (*D_80190650[])(void); +extern void func_8016DF20(void *a0); +extern void func_8016E3CC(s32 a0); +extern void func_8016E1CC(s32 a0); +extern void func_8016E26C(s32 *a0); +extern void func_8016E2E8(void *a0); +extern void func_8016E460(void *a0, void *a1); +extern void func_8016E358(void *a0); +extern void func_8016E460(void *arg0, void *arg1); +extern void (*D_801906A4[])(void); +extern void func_8016E5B8(void *a0); +extern void func_8016E5F4(s32 arg0); +extern void func_8016E778(); +extern void func_8016E688(void *a0); +extern void func_8016E6E4(s32 a0); +extern void func_8016E728(u8 *a0); +extern void func_8016E7C8(int param_1, short *p1, unsigned int *p2); +extern void func_8016E778(int param_1); +extern void func_8016E7C8(int param_1, short *param_2, unsigned int *param_3); +extern s32 D_80115218; +extern void func_8016E8F0(void); +extern void func_8016E918(short param_1, short param_2); +extern s32 func_8016E95C(); +extern u16 D_801906D8[]; +extern s32 func_8016EC0C(s32 a0, s32 a1); +extern void func_8016EAC0(Wave *param_1); +extern u8 D_801906C8[]; +extern void func_8016EB3C(s32 p); +extern void func_8016EBA8(u8 *param_1); +extern void func_8016ED6C(void); +extern s32 D_80126D70; +extern void func_8016EDEC(s32 a0, s32 a1, s32 a2); +extern void func_8016ED8C(s32 a0, s32 a1, s32 a2); +extern void func_8016EE40(s32 a0, s32 a1, s32 a2); +extern void func_8016EDBC(s32 a0, s32 a1, s32 a2); +extern void func_8016EE94(); +extern void func_8016EDEC(s32 _arg0, s32 _arg1, s32 _arg2); +extern void func_8016EF78(s32 a0); +extern void func_8016EE40(s32 _arg0, s32 _arg1, s32 _arg2); +extern void func_801726D0(void *a0); +extern s32 D_80126D50; +extern s32 D_80126D54; +extern u8 D_80126D6C; +extern u8 D_80126D6D; +extern u8 D_80126D6E; +extern s32 D_80126D5C; +extern s32 D_80126D60; +extern s16 D_80126D64; +extern s16 D_80126D66; +extern s16 D_80126D68; +extern s16 D_80126D6A; +extern u8 D_80126D1A; +extern s32 D_80127058; +extern s32 D_8012705C; +extern s32 D_80127060; +extern s32 D_80127064; +extern s32 D_80127068; +extern s32 D_8012706C; +extern s32 D_80127070; +extern s32 D_80127074; +extern s16 D_80126D20; +extern void func_8016EE94(s32 a0, s32 a1); +extern s32 func_8016EFC8(s32); +extern s32 func_8016EFA8(s32 a0); +extern void func_8016F094(s32 *a0); +extern s32 func_8016F0AC(); +extern s32 D_801906F4; +extern void func_8016F250(void); +extern void func_8016F288(void); +extern void func_8016F2A8(void); +extern void func_8016F2C8(void); +extern void func_8016F2EC(void); +extern void func_8016F30C(void); +extern void func_8016F330(void); +extern void func_8016F350(void); +extern void func_8016F374(void); +extern void func_8016F388(void); +extern void func_8016F398(void); +extern s32 func_8016F44C(s32 a0); +extern void func_8016F470(s32 a0); +extern s32 func_8016F410(s32 a0); +extern void func_80175414(s32 _arg0); +extern s32 func_8016F4C4(s32); +extern s32 func_8016F494(s32 a0); +extern void func_8016F0E4(void); +extern s32 func_8016F4C4(s32 param_1); +extern void func_8016F4F4(void); +extern void func_801719A4(int a0, int a1); +extern void func_800D1724(s32 a0); +extern void func_80171928(void *a0); +extern void *D_8011F738; +extern void func_8016F4FC(void *a0); +extern void func_8014708C(void *a0); +extern void func_8016F540(void *a0); +extern void func_8016F578(s32 *a0); +extern void func_8016F5B0(void *a0); +extern void func_80147060(u8 *a0); +extern void func_8016F5E0(u8 *a0); +extern void func_8016F610(void *a0); +extern void func_8016F648(void *a0); +extern void func_8016F680(void *a0); +extern void func_8016F6B0(void *a0); +extern void (*D_8019076C[])(void); +extern void func_8016F6E0(void *a0); +extern s32 func_80171990(u8 *a0); +extern void func_8016F764(void *a0); +extern void func_8016F71C(u8 *a0); +extern void (*D_80190774[])(void); +extern void func_8016F798(void *a0); +extern void func_8016F804(void *a0); +extern void func_8016F7D4(u8 *a0); +extern void func_80171928(void *); +extern void (*D_8019077C[])(void); +extern void func_8016F834(void *a0); +extern void func_8016F8AC(u8 *a0); +extern void func_8016F870(u8 *a0); +extern void func_80172358(u8 *a0, u8 *a1); +extern void (*D_80190784[])(void); +extern void func_8016F8E4(void *a0); +extern void func_8016F95C(void *a0); +extern void func_8016F920(u8 *a0); +extern s32 func_80171CC4(void *a0, void *a1); +extern s32 func_80171D1C(void *a0, void *a1, s32 a2); +extern u16 D_8011F73E; +extern void (*D_8019078C[])(void); +extern void func_8016F9C4(void *a0); +extern void func_80171B44(s32 *a0); +extern void func_8016FA44(s32 a0); +extern void func_8016FA00(s32 a0); +extern s32 func_80171C64(s32 a0, s32 a1); +extern void (*D_80190794[])(void); +extern void func_8016FA84(void *a0); +extern void func_8016FB10(void *a0); +extern void func_8016FAC0(u8 *a0); +extern void func_8016FB50(void *a0); +extern void (*D_801907A0[])(void); +extern void func_8016FB7C(void *a0); +extern void func_8016FC24(); +extern void func_8016FBB8(s32 a0); +extern s32 func_80171B4C(s32 a0, s32 a1); +extern void func_8016FC24(s32 a0); +extern void func_8016FC64(void *a0); +extern void (*D_801907AC[])(void); +extern void func_8016FC90(void *a0); +extern void func_8016FD08(u8 *a0); +extern void func_8016FCCC(u8 *a0); +extern s32 func_80172658(s32 *a0); +extern void func_8016FD08(u8 *s0); +extern void func_8016FD7C(s32 *a0); +extern void (*D_801907B8[])(void); +extern void func_8016FDB4(void *a0); +extern void func_8016FE2C(u8 *a0); +extern void func_8016FDF0(u8 *a0); +extern void func_8016FE2C(u8 * a0); +extern s32 func_8016FE78(s32 *a0); +extern s32 func_80172664(s32 *a0); +extern void func_8016FED0(s32 *a0); +extern void (*D_801907C8[])(void); +extern void func_8016FF30(void *a0); +extern void func_8016FFA8(u8 *a0); +extern void func_8016FF6C(u8 *a0); +extern void (*D_801907D8[])(void); +extern void func_8016FFDC(void *a0); +extern void func_80170068(u8 *a0); +extern void func_80170018(u8 *a0); +extern void func_801700B8(u8 *a0); +extern void func_80170100(u8 *a0); +extern void (*D_801907E0[])(void); +extern void func_80170150(void *a0); +extern void func_801701C8(u8 *a0); +extern void func_8017018C(u8 *a0); +extern void func_801701C8(u8 * a0); +extern void (*D_801907E8[])(void); +extern void func_80170240(void *a0); +extern void func_801702B8(s32 a0); +extern void func_8017027C(u8 *a0); +extern s16 func_80171AB0(s32 a0, void *a1); +extern void (*D_801907F0[])(void); +extern void func_801702FC(void *a0); +extern void func_80170374(u8 *a0); +extern void func_80170338(u8 *a0); +extern s32 func_8014C168(s32 *a0, s32 a1); +extern void func_80170374(u8 * a0); +extern void (*D_801907F8[])(void); +extern void func_801703E0(void *a0); +extern void func_8017044C(u8 *a0); +extern void func_8017041C(u8 *a0); +extern void func_8017044C(u8 * a0); +extern void (*D_80190800[])(void); +extern void func_801704B0(void *a0); +extern void func_8017051C(void *a0); +extern void func_801704EC(u8 *a0); +extern void (*D_80190808[])(void); +extern void func_80170548(void *a0); +extern void func_801705C0(u8 *a0); +extern void func_80170584(u8 *a0); +extern void func_801705C0(u8 * a0); +extern void (*D_80190810[])(void); +extern void func_801705F8(void *a0); +extern void func_80170670(void *a0); +extern void func_80170634(u8 *a0); +extern void func_8012A568(void (*a0)(void)); +extern void (*D_80190818[])(void); +extern void func_801706AC(void *a0); +extern void func_80170718(void *a0); +extern void func_801706E8(u8 *a0); +extern void func_80129FF4(void); +extern void (*D_80190820[])(void); +extern void func_80170748(void *a0); +extern void func_801707D4(void *a0); +extern void func_80170784(u8 *a0); +extern s32 func_80174ED4(void); +extern void (*D_80190828[])(void); +extern void func_80170810(void *a0); +extern void func_801708B0(void *a0); +extern u8 D_800D5DA8; +extern void func_8017084C(s32 a0); +extern u8 D_800D5A34[]; +extern void func_80170AD8(void *a0); +extern void func_80171904(s32 a0); +extern void func_80170B48(int a0); +extern void func_80170928(void); +extern u8 D_800D59EC[]; +extern void func_80170970(void); +extern u8 D_800D599C[]; +extern void func_801709B8(void); +extern u8 D_800D5934[]; +extern void func_80170A00(void); +extern void func_80170A48(void); +extern u8 D_800D5DC0[]; +extern void func_80170A90(void); +extern void (*D_80190830[])(void); +extern void func_80170B14(int a0); +extern void func_80170B90(u8 *a0); +extern void (*D_80190838[])(void); +extern void func_80170BD8(void *a0); +extern void func_80170C44(u8 *a0); +extern void func_80170C14(u8 *a0); +extern void (*D_80190840[])(void); +extern void func_80170C74(void *a0); +extern s32 func_8017197C(u8 *a0); +extern void func_80170CF0(void *a0); +extern void func_80170CB0(u8 *a0); +extern void (*D_80190848[])(void); +extern void func_80170D68(void *a0); +extern void func_80170DE0(u8 *a0); +extern void func_80170DA4(u8 *a0); +extern s32 D_8011F73C; +extern s32 D_8011F740; +extern void func_801718AC(void *a0); +extern void func_80170DE0(u8 * _arg0); +extern void (*D_80190850[])(void); +extern void func_80170E34(void *a0); +extern void func_80170EAC(u8 *a0); +extern void func_80170E70(u8 *a0); +extern int func_800D0F8C(int a0); +extern void func_80170EAC(u8 * _arg0); +extern void (*D_80190858[])(void); +extern void func_80170EFC(void *a0); +extern void func_80170F74(void *a0); +extern void func_80170F38(u8 *a0); +extern void (*D_80190860[])(void); +extern void func_80170FB0(void *a0); +extern void func_80171028(void *a0); +extern void func_80170FEC(u8 *a0); +extern void (*D_80190868[])(void); +extern void func_80171064(void *a0); +extern void func_801710DC(u8 *a0); +extern void func_801710A0(u8 *a0); +extern u16 D_8011F73A; +extern void func_801710DC(u8 * arg0); +extern void (*D_80190870[])(void); +extern void func_80171120(void *a0); +extern void func_8017118C(u8 *a0); +extern void func_8017115C(u8 *a0); +extern void func_80142454(s32 a0); +extern void func_8017118C(u8 * a0); +extern void (*D_80190878[])(void); +extern void func_801711C0(void *a0); +extern void func_80171238(void); +extern void func_801711FC(u8 *param_1); +extern void (*D_80190880[])(void); +extern void func_80171260(void *a0); +extern s32 func_80012F74(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80171384(void *a0); +extern void (*D_80190888[])(void); +extern void func_801714E4(void *a0); +extern void func_8017162C(void *a0); +extern void func_80171520(s32 a0); +extern s32 func_801716AC(s32 a0, void *a1, s32 *a2); +extern s32 func_80012FC8(s32 a0, s32 a1, s32 a2, s32 a3); +extern u8 D_800A5E94; +extern u8 D_800A5E95; +extern u8 D_800A5E96; +extern s32 func_801716AC(s32 a0, void * a1, s32 * a2); +extern int func_800D0FE0(int a0); +extern void func_801717A0(void *a0); +extern void func_8013E588(void *a0); +extern void func_801717F4(void *a0); +extern void func_80171824(void *a0); +extern void func_80171854(void *a0); +extern void func_80171884(void); +extern void func_80171A1C(u8 *a0); +extern void func_80171928(void * a0); +extern void func_8017196C(s32 *a0, s8 a1); +extern void func_80171A04(s32 *a0); +extern void func_80171A10(s32 *a0); +extern void func_80171A34(s32 *a0, s8 a1); +extern s32 func_80171A44(u8 *a0); +extern s32 func_80171A58(u8 *a0); +extern s32 func_80171A6C(u8 *a0); +extern void func_80171A80(s32 *a0, s32 a1); +extern s32 func_80171A88(s32 a0); +extern s16 func_80171AB0(s32 param_1, void * _arg1); +extern void func_80171B10(void *a0); +extern void func_80171EC8(s32 a0); +extern s32 func_80171C64(s32 param_1, s32 param_2); +extern s32 func_80171D78(s32 a0, s32 a1); +extern int func_8017250C(short *a0, short *a1); +extern s32 func_80171CC4(void * a0, void * a1); +extern s32 func_80171FFC(short *a0, short *a1, s32 a2); +extern s32 func_80171D1C(void * a0, void * a1, s32 a2); +extern s32 func_8017248C(s32 a0, s32 a1); +extern s32 func_80171E08(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_80047948(s32 a0); +extern s32 func_8004787C(s32 a0); +extern void func_80172170(s32 a0, s32 a1); +extern s32 func_8017209C(void *arg0, void *arg1, s32 arg2, s32 arg3); +extern void func_801722CC(s32 *a0); +extern void func_80172304(s32 *a0); +extern void func_80172310(u8 *a0); +extern void func_801723C4(s32 param_1, s32 param_2); +extern void func_80161C24(s32, s32); +extern void func_80172414(s32 a0); +extern s32 func_801724EC(s32 a0); +extern s32 func_8017248C(s32 arg0, s32 arg1); +extern s32 func_80013450(s32); +extern s32 func_80172560(u8 *a0, u8 *a1); +extern s32 func_8017261C(u8 *a0); +extern s32 func_80172644(u8 *a0); +extern s32 func_80172670(s32 *a0); +extern s32 func_80172688(s32 *a0); +extern s32 func_80172694(s32 *a0); +extern s32 func_801726A0(s32 *a0); +extern s32 func_801726AC(s32 *a0); +extern s32 func_801726B8(s32 *a0); +extern s32 func_801726C4(s32 *a0); +extern s32 func_80172760(s32 a0); +extern s32 func_80174650(s32); +extern void (*D_80127088)(void); +extern s32 D_801270BC; +extern s16 D_80126B0C; +extern void func_801726D0(void * _arg0); +extern void func_80172710(void); +extern void func_80174684(void *); +extern void func_80172738(void); +extern s16 D_80126B30; +extern s32 func_801727D0(void *a0); +extern void func_80172780(void *a0); +extern void func_80172844(u8 *a0); +extern void func_8017280C(u8 *a0); +extern void func_8017288C(void); +extern s32 func_801728E4(void *a0); +extern void func_80172894(void *a0); +extern void func_80172958(u8 *a0); +extern void func_80172920(u8 *a0); +extern s16 D_80126B36; +extern void func_80172958(u8 * a0); +extern void func_801729A8(void); +extern s32 func_801729F0(void *a0); +extern s16 D_80126B34; +extern s16 D_80126B32; +extern void func_801729B0(s32 a0); +extern void func_80172A8C(void *a0); +extern void func_80172A2C(int param_1); +extern void func_80172ACC(u8 *a0); +extern void func_80172B0C(void); +extern s32 func_80172B44(void *a0); +extern void func_80172B14(s16 a0); +extern s32 D_801150F8; +extern void func_80172BC8(void *a0); +extern void func_80172B80(u8 *a0); +extern void func_80172C48(void); +extern void (*D_801908CC[])(void); +extern void func_80172CA0(void *a0); +extern void func_80172D14(u8 *a0); +extern void func_80172CDC(u8 *a0); +extern void func_80172D14(u8 * a0); +extern void func_80172D60(void); +extern s32 D_80127508; +extern s32 func_80172DAC(void *a0); +extern void func_80172D68(s32 a0); +extern void func_80172E20(u8 *a0); +extern void func_80172DE8(u8 *a0); +extern void func_80172E20(u8 * a0); +extern void func_80172E8C(void); +extern void func_8017303C(void *); +extern void func_80172E94(void); +extern void func_80172ED4(void); +extern void func_80172EFC(void); +extern void func_80172F24(void); +extern u8 D_800D47F4[]; +extern void func_80172F4C(void); +extern void func_80172F9C(void); +extern u8 D_800D5C6C[]; +extern void func_80172FEC(void); +extern s32 func_80173078(void *a0); +extern void func_8017303C(void * a0); +extern void func_801730FC(struct S801730FC *a0); +extern void func_801730B4(s32 a0); +extern void func_8017316C(void); +extern s32 func_8017319C(void *a0); +extern void func_80173174(void); +extern u8 D_800D5AA0[]; +extern void func_80173220(void *a0); +extern void func_801731D8(s32 *a0); +extern M2C_UNK D_80190890; +extern void func_80173220(void * arg0); +extern void func_80173294(void); +extern void func_801732C4(); +extern void func_8017329C(void); +extern void func_801732C4(s32 *a0); +extern void func_8017331C(); +extern void func_801732F4(void); +extern void func_8017331C(s32 *a0); +extern void func_80173374(); +extern void func_8017334C(void); +extern void func_80173374(s32 *a0); +extern void func_801733A4(void); +extern void func_801733CC(s32 a0); +extern void func_801734BC(s32 a0, s32 a1); +extern s16 D_80126B3E; +extern void func_80173460(s32 a0, s32 a1); +extern void func_801734BC(s32 arg0, s32 _unused1); +extern void (*D_801908FC[])(void); +extern void func_80173544(void *a0); +extern void func_801735B8(u8 *a0); +extern void func_80173580(u8 *a0); +extern s16 D_80126B40; +extern void func_801735EC(void *a0); +extern void func_80173648(u8 *a0); +extern void func_801736A8(void); +extern s32 func_8014C118(void *a0, s32 a1, s32 a2); +extern s32 func_801736FC(void *a0); +extern void func_801736B0(s32 a0, s32 a1); +extern void func_80173770(u8 *a0); +extern void func_80173738(u8 *a0); +extern void func_801723C4(s32 a0, s32 a1); +extern void func_801737B0(void); +extern s32 func_801737E8(void *a0); +extern void func_801737B8(s16 a0); +extern void func_8017385C(u8 *a0); +extern void func_80173824(u8 *a0); +extern void func_801738D4(void); +extern s32 func_8017390C(void *a0); +extern void func_801738DC(s16 a0); +extern void func_80173980(u8 *a0); +extern void func_80173948(u8 *a0); +extern void func_801739D8(u8 *a0); +extern void func_80173A20(void); +extern s32 D_8012750C; +extern void func_80173A60(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4); +extern void func_80173A28(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5); +extern void (*D_80190938[])(void); +extern void func_80173B4C(void *a0); +extern void func_80173BC0(u8 *a0); +extern void func_80173B88(u8 *a0); +extern void func_80173C64(u8 *a0); +extern void func_80173E1C(s32 a0); +extern s16 D_80126938; +extern s16 D_80126B3A; +extern void func_800D128C(s32, s32); +extern void func_80174158(s32 a0); +extern void func_8002A088(s32); +extern void func_8002A2D4(s32); +extern void func_8002A544(s32); +extern void func_8002A7B4(s32); +extern s32 func_80174188(s32 a0); +extern void func_801741A8(s32 a0); +extern s32 func_800D0EC4(void); +extern void func_800D0F0C(s32, s32); +extern void func_80145EE8(s32); +extern void func_80173EF8(void *param_1); +extern s32 func_8014BCEC(s32, s32); +extern void func_801741A8(s32 _arg0); +extern s16 D_80126B3C; +extern s16 D_8011F9C8; +extern void func_801741EC(u8 *a0); +extern void func_80174274(void); +extern s32 func_801742A4(void *a0); +extern void func_8017427C(void); +extern void func_80174318(u8 *a0); +extern void func_801742E0(u8 *a0); +extern void func_80174354(void); +extern s32 func_80174384(void *a0); +extern void func_8017435C(void); +extern void func_801743F0(u8 *a0); +extern void func_801743C0(u8 *a0); +extern void func_801743F0(u8 * a0); +extern void func_80174430(void); +extern s32 func_80174474(void *a0); +extern void func_80174438(s32 a0); +extern void func_801744E0(u8 *a0); +extern void func_801744B0(u8 *a0); +extern void func_80174524(void); +extern void func_80174554(); +extern void func_8017452C(void); +extern void func_80174554(s32 arg0); +extern void func_801745AC(); +extern void func_80174584(void); +extern void func_801745AC(s32 *a0); +extern void func_80174604(void); +extern void func_801745DC(void); +extern void func_80174630(void); +extern s32 func_80174650(s32 _arg0); +extern void func_80174674(void); +extern void func_801746A4(void); +extern s32 func_800CF8CC(void); +extern void func_80174714(void); +extern s32 func_80174754(void); +extern s16 func_80174764(void); +extern s16 func_80174774(void); +extern s32 func_801747CC(void *a0); +extern void func_80174784(void); +extern s32 func_801747AC(s32 a0); +extern s32 func_80174808(u8 *a0); +extern void func_8017481C(void); +extern s32 func_80174888(void *a0); +extern void func_80174824(void); +extern void func_8017484C(s32 a0); +extern void func_801748C4(s32 a0); +extern void func_801748E4(void); +extern void func_8012A018(s32 a, s32 b); +extern s32 func_8017496C(void *a0); +extern s32 D_80126954; +extern s32 D_80126950; +extern s32 D_8012695C; +extern s16 D_80126968; +extern s16 D_8012696A; +extern s16 D_8012696C; +extern s16 D_80126976; +extern s16 D_80126978; +extern s16 D_8012697A; +extern void func_801748EC(void); +extern s32 func_801749C8(); +extern s32 func_801749A8(s32 a0); +extern void func_80174BBC(void *a0); +extern void func_8012A0E0(void); +extern void func_80174BF4(void *a0); +extern void (*D_80190990[])(); +extern void func_80174BF4(void * arg0); +extern s32 func_80174CB0(s32, s32); +extern s32 func_80174C60(s32 a0); +extern void func_80174C80(s32 a0); +extern s32 D_8012697C; +extern u16 D_80126980; +extern s32 func_80174F28(void *a0); +extern void func_80174E9C(s32 a0); +extern void func_80174EF0(s32 a0, s16 a1); +extern s32 func_80175014(u8 *a0, u8 *a1, s32 a2); +extern void func_80174F64(u8 *a0); +extern void func_80174FBC(u8 *a0); +extern s32 func_8017509C(u8 *a0, s32 a1, u8 *a2, u8 *a3); +extern void func_80175184(s32 *a0); +extern void func_80175114(s32 *a0); +extern void func_80175184(); +extern void func_80175150(s32 *a0); +extern void (*D_801909A0[])(void*); +extern s32 func_80175268(s32); +extern void func_80175184(s32* arg0); +extern s32 func_80175218(void *a0); +extern void func_801751D8(void *a0); +extern void (*D_801909A8[])(s32); +extern s32 func_80175218(void * param_1); +extern void func_801752BC(s32 *a0); +extern u8 D_8011F7A8; +extern u8 D_8011F7A9; +extern u8 D_8011F7AD; +extern u8 D_8011F7AE; +extern void func_80175494(void); +extern void (*D_80190B10[])(); +extern s32 func_801758FC(void); +extern s32 func_80175820(void); +extern s32 func_801759D8(void); +extern void func_8017553C(s32 *param); +extern void func_801757A0(s32 a0); +extern short D_800B9A02; +extern void func_80175590(void *arg0); +extern s16 D_800B9A02; +extern void func_801757A0(s32); +extern void func_80175624(void *a0); +extern void func_801757E0(int); +extern void func_80175668(void); +extern void (*D_80190B1C[])(); +extern void func_80175690(s32 *param); +extern void func_80175DA8(s32 a0); +extern void func_80175AB8(s32 a0); +extern void func_80176144(s32 a0); +extern void func_801756E4(s32 arg0); +extern void func_80175798(void); +extern void func_80176734(s32 a0); +extern void func_80176218(s32 a0); +extern void func_80176D00(s32 a0); +extern void func_801757E0(s32 a0); +extern s32 func_80178004(s32 a0, s32 a1, s32 a2); +extern u8 D_8011F7B1; +extern u16 D_8011F7B4; +extern u16 D_8011F7B6; +extern s16 D_8011F81E; +extern void *func_80177784(void *a0, s32 a1, s32 a2, s32 a3); +extern u32 func_801783D0(s32 a0, s32 a1); +extern void *func_801777BC(void *a0, s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern u16 D_8011F82C; +extern u16 D_8011F82A; +extern u32 * func_80176D94(void *param_1, u32 param_2, s16 param_3_); +extern void func_801778A8(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_80176FF4(s32 a0); +extern u16 D_8011F830; +extern u16 D_8011F82E; +extern u32 * func_801770E0(void *param_1, u32 param_2, s16 param_3_); +extern void func_80177340(s32 a0); +extern u8 D_8011F837; +extern u8 D_8011F7F0; +extern u8 D_8011F7AB; +extern u32 * func_8017742C(u32 *param_1, s32 param_2, s32 param_3); +extern void func_801776EC(u8 *a0); +extern void * func_80177784(void *a0, s32 a1, s32 a2, s32 a3); +extern uint * func_80177EA4(uint *param_1, int param_2, uint param_3, int param_4); +extern void func_80177F84(s32 param_1, s32 param_2); +extern u32 * func_80178298(u32 *param_1, u8 *param_2, short param_3, short param_4); +extern M2C_UNK D_801E07F0; +extern void func_80178438(u16 *arg0); +extern void func_801787D4(void); +extern void func_8012A908(void); +extern void func_8017869C(s32 a0); +extern void func_80130D0C(s32 a0); +extern void func_8013E370(void); +extern s32 D_8011DB08; +extern void func_8017849C(void); +extern void func_8013E4B4(void); +extern s16 D_801270C4; +extern s32 D_801274D8; +extern s16 D_801270C2; +extern u8 D_801270C6; +extern u8 D_801270C7; +extern s32 D_801274DC; +extern s32 D_801274E0; +extern void func_80178608(void); +extern void func_80178744(s32 a0, s32 a1); +extern void func_80178840(); +extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); +extern void func_8012E8E0(s32 a0, s32 a1); +extern void func_8012B2CC(s32 a0); +extern s32 func_801788B8(s32 arg0, s32 arg1); +extern s32 func_801789AC(s32 arg0); +extern s16 D_801E21F8; +extern int func_80178970(void); +extern s32 func_80178B18(s32 param_1, s32 param_2); +extern s32 func_80178B70(s32 param_1, s32 param_2); +extern void func_80178BB8(s32 a0, s32 a1); +extern s32 func_80178BF8(); +extern s32 D_801E1AE0; +extern short D_801E226C; +extern void func_80178CBC(s32 arg0, s32 arg1); +extern void func_80178D18(void); +extern s32 func_80178D40(s32 arg0, s32 arg1); +extern void func_80179B28(s32 a0); +extern void func_80179B74(u16 *p); +extern void func_80179D30(u16 *a0); +extern void func_80179D78(u16 *a0); +extern void func_80179DCC(short a0); +extern void func_80179DF8(void); +extern void func_80179E1C(short a0); +extern void func_80179E48(s16 a0); +extern void func_80179E74(s16 a0); +extern void func_80179EA0(u16 *a0); +extern void func_80179EE8(short a0); +extern void func_80179F14(s16 a0, s16 a1); +extern void func_80179F44(void); +extern void func_80179F6C(short a0); +extern void func_80179F98(u16 *a0); +extern void func_80179FEC(u16 *a0); +extern void func_8017A040(u16 *a0); +extern s32 D_801E1F0C; +extern void func_8017A094(s32 arg0); +extern void func_8017A0C4(s32 arg0); +extern void func_8017A0F4(void); +extern void func_8017A11C(void); +extern s32 D_801E1F34; +extern void func_8017A144(s32 a0); +extern void func_8017A180(void); +extern void func_8017A1A8(void); +extern void func_8017A1D0(void); +extern void func_8017A1F8(void); +extern void func_8017A220(void); +extern void func_8017A248(void); +extern void func_8017A270(void); +extern void func_8017A298(void); +extern void func_8017A2C0(void); +extern void func_8017A2E8(void); +extern void func_8017A310(void); +extern void func_8017A338(void); +extern void func_8017A360(void); +extern void func_8017A388(void); +extern s16 D_801E1EF0; +extern s32 func_8017A3B0(void); +extern short D_801E1F2C; +extern short D_801E1F28; +extern int func_800D0CA0(int); +extern int func_8001AAA0(void); +extern int func_800D0CE0(void); +extern int func_8017A3D8(void); +extern void func_80172310(u8*); +extern void func_80172780(void*); +extern void func_80172894(void*); +extern void func_801729B0(s32); +extern void func_80172B14(s16); +extern void func_80172C50(u16 *); +extern void func_80172D68(s32); +extern void func_801733FC(s16, u16 *); +extern void func_80173460(s32, s32); +extern void func_801734BC(s32, s32); +extern void func_801736B0(s32, s32); +extern void func_801737B8(s16); +extern void func_801738DC(s16); +extern void func_80173A28(s32, s32, s32, s32, s32, s32); +extern void func_80174438(s32); +extern void func_8017A4AC(void); +extern s32 func_8017AD0C(s32 arg0); +extern s32 func_8017AD0C(s32); +extern s32 func_8017ADE8(s32 a0); +extern s32 func_8017AE08(void); +extern void func_8017B0E4(int param_1, int param_2); +extern s16 D_801E1EF4; +extern u16 D_801E1F74; +extern u16 D_801E1F76; +extern u16 D_801E1F78; +extern void func_8017B1D8(void); +extern s32 func_8017B238(s32 param_1, s32 param_2); +extern s32 func_8017B368(s32 param); +extern s32 func_8017B614(s32 param_1, s32 param_2); +extern s32 D_80114F30; +extern s32 D_80114F34; +extern s32 D_80114F38; +extern s32 D_80114F24; +extern s32 D_80114F28; +extern s32 D_80114F2C; +extern u8 D_8012694C; +extern s16 D_801E1F6C; +extern s16 D_801E1F6E; +extern s16 D_801E1F70; +extern s16 D_801E1F64; +extern s16 D_801E1F66; +extern s16 D_801E1F68; +extern void func_8017B7A8(void); +extern s16 D_801E1F84; +extern s16 D_801E1F86; +extern s16 D_801E1F88; +extern s16 D_801E1F8C; +extern s16 D_801E1F8E; +extern s16 D_801E1F90; +extern void func_8017B824(void); +extern void func_8017B880(void); +extern s32 func_8017B8E8(s32 src); +extern short D_801E1F7C; +extern short D_801E1F7E; +extern short D_801E1F80; +extern void func_8017B940(void); +extern void func_8012F214(s32 a0, s32 a1, s32 a2); +extern void func_80049CAC(s32 a0, s32 a1); +extern void func_8004914C(void *a0); +extern void func_800491AC(void *a0); +extern void RotTransSV(void *a0, void *a1, void *a2); +extern SV4 D_801E1F14; +extern SV4 D_801E1F1C; +extern void func_8017BA3C(s32 param_1, s32 param_2); +extern s32 func_8017BB34(s32 param_1, s32 param_2); +extern void (*D_801E1F3C[10])(int); +extern void func_8017BC38(int param_1); +extern void func_8017B0E4(int, int); +extern void func_8017BCA0(int param_1); +extern void func_8012A4BC(void); +extern void func_8017BCF4(int param_1); +extern void (*D_801E1F38)(void); +extern void func_8017BD50(int param_1); +extern void (*D_80190CF8[])(void); +extern void func_8017BE60(void *a0); +extern void func_8017BE9C(void); +extern void func_8017BEA4(void); +extern void func_8017BEAC(void); +extern void func_8017BEB4(void); +extern void func_8017BEBC(s32 arg0); +extern void (*D_80190DDC[])(void); +extern void func_8017CF14(void *a0); +extern void func_8017D224(void); +extern s32 func_8017CF50(s32 a0); +extern s32 func_8017CF94(void); +extern void (*D_80190DE4[])(void); +extern void func_8017CFB8(void *a0); +extern void func_8017D24C(void); +extern s32 func_8017CFF4(s32 a0); +extern s32 func_8017D038(void); +extern void (*D_80190DEC[])(void); +extern void func_8017D05C(void *a0); +extern void func_8017D274(void); +extern s32 func_8017D098(s32 a0); +extern void func_8001BFD0(void); +extern void func_800D1E28(void); +extern s32 func_8017D0D8(u8 *a0); +extern void func_800D1EBC(void); +extern void func_8017D154(void); +extern void (*D_80190DF8[])(void); +extern void func_8017D174(void *a0); +extern s32 func_8017D1B0(s32 a0); +extern void func_8017D348(void); +extern void func_8017D59C(void *a0); +extern void func_8017D414(void); +extern void func_8017D454(void); +extern void func_8017D4D8(void); +extern void func_8017D518(void); +extern void (*D_80190E20[])(void); +extern void func_8017D5D8(s32 a0); +extern void func_8017D6E0(s32 a0); +extern void func_8017D7CC(s32 a0); +extern void func_8017D8D4(s32 a0); +extern s32 func_80012ABC(s32 a0, s32 a1, s32 a2); +extern void func_8017D9C0(s32 param_1, s16 *param_2); +extern void func_8017DB58(void); +extern void func_8013B7F4(s32 arg0); +extern s32 D_80190E40[]; +extern void func_8017DB74(int param_1); +extern void (*D_80190F04[])(void); +extern s32 func_80128DB4(s32 a0, s32 *a1); +extern s32 D_801E1F98; +extern void func_8017DBA4(void *a0); +extern void func_8017DC0C(s32 param_1); +extern void func_8017DCA4(s32 arg0); +extern s32 func_8012CC64(s32 a0, void *a1); +extern u8 D_80190F28[]; +extern void func_8017E104(s32 param_1); +extern void func_8017E2A8(void); +extern void func_8012C218(void *a0); +extern void func_8017E2B0(void *arg0); +extern void (*D_80190F7C[])(void); +extern void func_8017E2F4(void *a0); +extern void func_801292C8(u8 *a0); +extern void func_8017E3C8(void *arg0); +extern void (*D_80190F84[])(void); +extern void func_8017E40C(void *a0); +extern void func_8012C1B8(void); +extern void func_8012CAE4(void *a0); +extern void func_8001C214(s32 a0, s32 a1); +extern void func_8012B0B4(unsigned int *param_1, int param_2, int param_3); +extern void func_8012B178(s32 a0, s32 a1); +extern void func_8017E448(s32 param_1); +extern s32 func_8012CBF4(s32 a0); +extern s32 func_8012BEE8(s32 a0); +extern void func_8012C218(void *a0); /* TU-canonical (ov_SC06_018_jr_8017C24C L5455) */ +extern void func_80017274(s32 a0, s32 a1); +extern void func_8017E87C(s32 param_1); +extern void (*D_80191038[])(void); +extern s32 D_801E1FA0; +extern s32 D_801E1FA8; +extern void func_8017E920(void *a0); +extern void func_8017E998(s32 param_1); +extern void func_8017EA6C(s32 p); +extern void func_8017EFD8(void); +extern u8 D_801202A0[]; +extern void func_8017EFE0(s32 arg0); +extern u16 D_80126B96; +extern s16 D_80126B98; +extern void func_8017F1C0(s32 a0); +extern s32 func_8017F30C(s32 a0); +extern s32 func_80132EF4(s32 a0, s32 a1); +extern void func_80129374(s32 arg0, s32 arg1); +extern s32 func_8017F0D4(); +extern void (*D_80191058[])(void); +extern void func_8017F2D0(void *a0); +extern s32 func_8012DEB8(s32 a0, s32 a1, s32 a2); +extern u16 D_8019104C; +extern u16 D_8019104E; +extern u16 D_80191050; +extern u16 D_80191052; +extern u16 D_80191054; +extern u16 D_80191056; +extern void func_8001C2C4(s32 a0); +extern void func_8012B14C(s32 a0, s32 a1); +extern s32 func_8012AD50(void *a0); +extern u8 D_80191048[]; +extern void func_8017F414(s32 param_1); +extern void func_8017F4B0(void); +extern void (*D_80191070[])(void); +extern void func_8017F4D0(void *a0); +extern void func_8001C214(s32, s32); +extern u32 D_80191060; +extern void func_8017F50C(s32 arg0); +extern void func_8017F588(void); +extern s32 func_8017F590(void); +extern void func_8012DFD4(void *a0); +extern void func_8017F598(void *a0); +extern s32 func_8012C354(s32 a0, void *a1); +extern void func_8012A828(s32 a0, void *a1); +extern void func_8001D0E8(s32 a0, s32 a1, s32 a2); +extern s16 D_80191088; +extern void func_8017F604(s32 param_1); +extern u8 D_801910D0[]; +extern void func_8017F684(s32 param_1); +extern void func_8017F704(s32 arg0); +extern void func_8017F7FC(void); +extern s32 func_8017F804(s16 *a0); +extern s16 D_80126CB0; +extern s32 func_8017F830(s16 *a0); +extern void func_801800CC(s32 a0); +extern void func_8012AD44(s32 *a0, s16 a1); +extern s16 D_801AD2E2[]; +extern u8 D_801AD318[]; +extern void func_8017FA1C(s32 arg0); +extern s32 D_8018DA74; +extern void func_8017FAFC(s32 arg0); +extern void func_8017FED0(s32 a0); +extern void func_80180680(s32 a0); +extern void func_80180CD0(s32 a0); +extern void func_80181418(s32 a0); +extern void func_8001C924(s32 a0, void *a1); +extern u8 D_801BCE84; +extern u8 D_8018DA98; +extern u8 D_801B174C; +extern void func_8017FB9C(s32 p); +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 void func_801804BC(s32 a0, s32 a1, s32 a2, s32 a3); +extern void func_8017FEF8(s32 p); +extern void func_801800AC(s32 arg0); +extern void (*D_801AD3B4[])(void); +extern void func_80180310(void *a0); +extern void func_80180424(s32 arg0); +extern u8 *func_8012913C(s32 a0); +extern void func_80180680(s32 param_1); +extern Blk20 D_800AE620; +extern u8 D_801AD3CC; +extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); +extern void RotMatrixY(s32 a0, void *a1); +extern void func_80180700(s32 a0, s16 *a1, s16 a2, s16 a3); +extern void func_8012C218(void*); +extern void func_80180838(void *a0); +extern void func_8012B77C(void *out, s32 from, void *to); +extern void func_80180F30(s32 target, u16 *cur, s32 step); /* DEFINED in TU L4503 */ +extern void func_80180FB4(s32 a0); +extern void func_801810C0(s32 a0); +extern void func_80180EE0(s32 a0); +extern void func_801809F4(s32 p); +extern void func_80180CB0(s32 arg0); +/* ==== end §8b carried decl layer ==== */ + + +void func_80180CD0(s32 s0) +{ + extern void func_8001C214(s32 a0, s32 a1); + extern void func_8001C1E4(void *a0, void *a1); + extern void func_8012AD44(s32 *a0, s16 a1); + extern u8 D_801AD394[]; + struct RowC_80180CD0 { void *p; }; + extern struct RowC_80180CD0 D_801AD3DC[]; + + register s32 a0 __asm__("$4"); + register s32 a1 __asm__("$5"); + s32 v1; + + a0 = *(s32 *)(s0 + 0x20); + a1 = (s32)D_801AD3DC[*(s16 *)(s0 + 0x70)].p; + func_8001C214(a0, a1); + + v1 = *(s32 *)(s0 + 0x20); + *(u16 *)(v1 + 0x2C) = *(u16 *)(v1 + 0x2C) | 0x90; + v1 = *(s32 *)(s0 + 0x20); + *(s32 *)(v1 + 0x80) = (s32)D_801AD394; + v1 = *(s32 *)(s0 + 0x20); + *(u16 *)(v1 + 0x18) = 0x1040; + + switch (*(s16 *)(s0 + 0x70)) { + case 0: + case 1: + *(s16 *)(s0 + 6) = -0x88; + *(u16 *)(s0 + 10) = 0; + if (*(s16 *)(s0 + 0x70) == 0) { + *(s16 *)(s0 + 14) = 0x20; + } else { + *(s16 *)(s0 + 14) = -0x20; + } + a0 = *(s32 *)(s0 + 0x20); + a1 = *(s32 *)(*(s32 *)(s0 + 0x64) + 0x20); + func_8001C1E4((void *)a0, (void *)a1); + a0 = s0; + a1 = 1; + *(u16 *)(a0 + 0x100) = 0; + *(s32 *)(a0 + 0x1C) = 0; + break; + case 2: + case 3: + *(u16 *)(*(s32 *)(s0 + 0x20) + 0x18) = 0x1300; + *(u16 *)(*(s32 *)(s0 + 0x20) + 0x1A) = 0x1300; + *(s32 *)(s0 + 0xCC) = *(s32 *)(s0 + 0x64); + *(u16 *)(s0 + 0xE) = *(u16 *)(s0 + 0xE) - 0x20; + if (*(s32 *)(s0 + 0x6C) != 0) { + func_80180CD0(*(s32 *)(s0 + 0x6C)); + } + *(u16 *)(s0 + 0x54) = 0x80; + a0 = s0; + a1 = 2; + break; + case 4: + case 5: + *(s32 *)(s0 + 0xCC) = *(s32 *)(*(s32 *)(s0 + 0x64) + 0xCC); + a0 = *(s32 *)(s0 + 0x20); + a1 = *(s32 *)(*(s32 *)(s0 + 0x64) + 0x20); + func_8001C1E4((void *)a0, (void *)a1); + *(u16 *)(s0 + 0xE) = 0; + *(u16 *)(s0 + 0xA) = 0; + *(u16 *)(s0 + 6) = 0; + if (*(s32 *)(s0 + 0xD0) != 0) { + func_80180CD0(*(s32 *)(s0 + 0xD0)); + } + *(s32 *)(s0 + 0x1C) = 9; + a0 = s0; + a1 = 4; + break; + case 6: + *(s32 *)(s0 + 0xCC) = *(s32 *)(*(s32 *)(s0 + 0x64) + 0xCC); + *(u16 *)(s0 + 0xE) = 0; + *(u16 *)(s0 + 0xA) = 0; + *(u16 *)(s0 + 6) = 0; + a0 = *(s32 *)(s0 + 0x20); + a1 = *(s32 *)(*(s32 *)(s0 + 0x64) + 0x20); + func_8001C1E4((void *)a0, (void *)a1); + a0 = s0; + a1 = 3; + break; + default: + return; + } + + ((void (*)(s32, s32))func_8012AD44)((void *)a0, a1); +} + + + +extern void (*D_801AD420[])(void); + +void func_80180EA4(void *a0) { + D_801AD420[*(u16 *)((s32)a0 + 0x2)](); +} + + +void func_80180EE0(s32 a0) { + extern u8 D_801AD394[]; + extern u8 D_801AD39C[]; + s16 t; + s32 v1; + + t = *(s16 *)(a0 + 0x70); + v1 = *(s32 *)(a0 + 0xCC); + if (t >= 2) { + if (*(s16 *)(v1 + 0x100) != 0) { + *(s32 *)(*(s32 *)(a0 + 0x20) + 0x80) = (s32)D_801AD39C; + } else { + *(s32 *)(*(s32 *)(a0 + 0x20) + 0x80) = (s32)D_801AD394; + } + } +} + + + +void func_80180F30(s32 target, u16 *cur, s32 step) +{ + s32 t; + s32 diff; + s32 mag; + + t = (target - *cur) & 0xFFF; + if (t < 0x800) { + diff = t; + } else { + diff = t | 0xF000; + } + mag = diff; + if ((s16)diff < 0) { + mag = -diff; + } + __asm__ __volatile__("" : "=r"(diff) : "0"(diff) : "memory"); + if ((s16)mag > (u16)step) { + if ((s16)diff < 0) { + *cur = *cur - step; + } else { + *cur = *cur + step; + } + } else { + *cur = target; + } +} + + +extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); +extern s32 func_80132EF4(s32 a0, s32 a1); +extern void func_8002D4C8(s32 a0, s32 a1); +extern void func_8004914C(void *a0); +extern void func_800491AC(void *a0); + +void func_80180FB4(s32 self) +{ + u16 sv[4]; + u16 scratch[4]; + s32 obj; + s32 target; + s32 i; + + func_8004914C((void *)(*(s32 *)(self + 0x20) + 0x54)); + func_800491AC((void *)(*(s32 *)(self + 0x20) + 0x54)); + + sv[1] = 0; + sv[0] = 0; + *(s16 *)&sv[2] = -0x60; + RotTransSV(&sv[0], &sv[0], &scratch[0]); + + obj = func_80132EF4(self, 0x22); + if (obj != 0) { + u16 c; + *(u16 *)(obj + 0x6) = sv[0]; + *(u16 *)(obj + 0xA) = sv[1]; + c = sv[2]; + *(u16 *)(obj + 0x34) = 0x4000; + *(u16 *)(obj + 0xE) = c; + *(u16 *)(*(s32 *)(obj + 0x20) + 0x2C) = 0xC008; + } + for (i = 0; i < 7; i++) { + target = func_8012C658(0x2FE, i, self); + if (target != 0) { + *(u16 *)(target + 0x6) = sv[0]; + *(u16 *)(target + 0xA) = sv[1]; + *(u16 *)(target + 0xE) = sv[2]; + } + } + func_8002D4C8(0xAE6, 0); +} + + +void func_801810C0(s32 self) +{ + u16 sv[4]; + u16 scratch[4]; + s32 obj; + + func_8004914C((void *)(*(s32 *)(self + 0x20) + 0x54)); + func_800491AC((void *)(*(s32 *)(self + 0x20) + 0x54)); + + sv[1] = 0; + sv[0] = 0; + *(s16 *)&sv[2] = -0x40; + RotTransSV(&sv[0], &sv[0], &scratch[0]); + + obj = func_80132EF4(self, 0x23); + if (obj != 0) { + u16 c; + *(u16 *)(obj + 0x6) = sv[0]; + *(u16 *)(obj + 0xA) = sv[1]; + c = sv[2]; + *(u16 *)(obj + 0x34) = 0x4001; + *(u16 *)(obj + 0xE) = c; + *(u16 *)(*(s32 *)(obj + 0x20) + 0x2C) = 0xC008; + } +} + + + +extern void (*D_801AD44C[])(void); + +void func_80181168(void *a0) { + D_801AD44C[*(u16 *)((s32)a0 + 0x2)](); +} + + + +extern void func_8012C1B8(void); +extern void func_8012CAE4(void*); +extern void func_8001C214(s32 a0, s32 a1); +extern void func_801812F8(s32 a0); + +void func_801811A4(s32 param_1) { + /* The four u16 tables all share one 8-byte stride -- they are the four + halfword members of a single 8-byte record based at 0x801AC5AC. + Spelling each as an ARRAY OF AN 8-BYTE RECORD (wanted halfword at + offset 0) keeps the exact symbol names the target relocates against + AND stops gcc-2.7.2 force_reg'ing a second copy of the bare SYMBOL_REF + for D_801AD46E (which is read twice). That orphaned address pseudo is + what reserves a dead 8-byte stack slot ("phantom frame", cookbook 5): + it survives to alter_reg with reg_n_refs>0 and no hard reg, so + assign_stack_local grows var_size by 8 with nothing ever stored there. + Byte-checked: pointer-arith spelling -> frame 0x20, this -> frame 0x18. */ + struct Row8_8018367C_801811A4 { u16 h; u16 pad[3]; }; + extern struct Row8_8018367C_801811A4 D_801AD46E[]; + extern struct Row8_8018367C_801811A4 D_801AD468[]; + extern struct Row8_8018367C_801811A4 D_801AD46A[]; + extern struct Row8_8018367C_801811A4 D_801AD46C[]; + extern u32 D_801AD454[]; + + /* the entry call's result doubles as func_8001C214's first argument, so it + owns $a0 for its whole live range (target: addu $a0,$v0,$zero at entry) */ + register s32 v0 __asm__("$4"); + s32 v1; + s32 mask; + + *(s32 *)(param_1 + 0x20) = v0 = ((s32 (*)(void))func_8012C1B8)(); + if (v0 == 0) { + ((void (*)(s32))func_8012CAE4)(param_1); + return; + } + + func_8001C214(v0, D_801AD454[D_801AD46E[*(s16 *)(param_1 + 0x70)].h & 7]); + + v1 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v1 + 0x2C) = *(u16 *)(v1 + 0x2C) | 0x10; + + v1 = *(s32 *)(param_1 + 0x20); + mask = D_801AD46E[*(s16 *)(param_1 + 0x70)].h & 0xFFF0; + *(u16 *)(v1 + 0x1A) = mask; + *(u16 *)(v1 + 0x18) = mask; + + v1 = *(s32 *)(param_1 + 0x20); + *(u16 *)(v1 + 0x1C) = 0x400; + + *(s16 *)(param_1 + 0x6) = *(u16 *)(*(s32 *)(param_1 + 0x64) + 0x6) + + D_801AD468[*(s16 *)(param_1 + 0x70)].h; + + *(s16 *)(param_1 + 0xA) = *(u16 *)(*(s32 *)(param_1 + 0x64) + 0xA) + + D_801AD46A[*(s16 *)(param_1 + 0x70)].h; + + *(s16 *)(param_1 + 0xE) = *(u16 *)(*(s32 *)(param_1 + 0x64) + 0xE) + + D_801AD46C[*(s16 *)(param_1 + 0x70)].h; + + *(s16 *)(param_1 + 0xE0) = *(u16 *)(*(s32 *)(param_1 + 0x64) + 0xA) + 0x140; + func_801812F8(param_1); +} + + +extern void func_8012B23C(); +extern s32 rand(void); +extern void func_8012AD44(s32 *a0, s16 a1); + +void func_801812F8(s32 a0) { + func_8012B23C(a0); + *(s32 *)(a0 + 0x10) = ((rand() & 0x7F) - 0x40) << 11; + *(s32 *)(a0 + 0x14) = -((rand() & 0x7F) << 13); + *(s32 *)(a0 + 0x18) = (rand() & 0x7F) << 13; + *(u16 *)(a0 + 0x106) = rand() & 0x1F0; + *(u16 *)(a0 + 0x108) = rand() & 0x1F0; + *(s16 *)(a0 + 0xE6) = 8; + { + s32 v = *(s16 *)(a0 + 0x70); + *(s16 *)(a0 + 0xE4) = v << 1; + } + ((void (*)(s32, s32))func_8012AD44)(a0, 1); +} + + +extern void func_8012AD44(s32 *a0, s16 a1); + +void func_80181394(void *arg0) { + s32 t; + *(s16 *)((char *)arg0 + 0xe6) = 0xc; + t = *(s16 *)((char *)arg0 + 0x70); + *(s16 *)((char *)arg0 + 0xe4) = t << 1; + ((void (*)(s32, s32))func_8012AD44)((s32)arg0, 2); +} + + + +// @class: struct +// @stuck: none — MATCH (fn-ptr table %lo-fold via extern array of code ptrs) + +extern code_fn D_801AD508[]; + +extern s32 func_8012B414(s32 a0); + +void func_801813C8(int param_1) +{ + D_801AD508[*(unsigned short *)(param_1 + 2)](); + ((void (*)(int))func_8012B414)(param_1); + return; +} + + + +extern s32 func_8012C658(s32 arg0, s32 arg1, s32 arg2); + +void func_80181418(s32 arg0) { + s32 i; + + for (i = 0; i < 20; i++) { + func_8012C658(0x311, i, arg0); + } +} + + +INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_80180CD0", func_80181468); + +extern u16 D_80126B66; +extern void func_8017FA1C(int); + +void func_80181550(int param_1) +{ + if ((short)(*(u16 *)(param_1 + 0xE) - D_80126B66) < 0x140) { + void **fp = *(void **)(param_1 + 0xDC); + if (fp != 0 && *fp != 0) + (*(void (*)(void))*fp)(); + func_8017FA1C(param_1); + } +} + + +extern s32 func_8012BEE8(s32 a0); +extern void func_8001C924(s32 a0, void *a1); +extern void func_8017FAFC(s32 a0); +extern s32 D_801AD304[]; + +void func_801815CC(s32 param_1) { + if (func_8012BEE8(param_1) != 0) { + *(s32 *)(param_1 + 0x1C) = 2; + func_8001C924( + *(s32 *)(param_1 + 0x20), + *(void **)(D_801AD304[*(s16 *)(param_1 + 0x70)] + *(s16 *)(param_1 + 0xFE) * 4)); + *(u16 *)(param_1 + 0xFE) += 1; + if ((s16)*(u16 *)(param_1 + 0xFE) >= 8) { + func_8017FAFC(param_1); + } + } +} + + +void func_8018165C(void) { +} + +INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_80180CD0", func_80181664); + +INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_80180CD0", func_80181744); + +void func_80181780(s32 param_1) +{ + if (*(s32 *)(*(s32 *)(*(s32 *)(param_1 + 0xCC) + 0x20) + 4) < 0) { + func_8012C218((void *)param_1); + } else { + func_80180EE0(param_1); + } +} + + +void func_801817D0(void) { +} + +INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_80180CD0", func_801817D8); + +extern void func_8012CBCC(s32 a0); +extern s32 func_8012D5E4(s32 a0, s32 a1, s32 a2, s32 a3); +extern s32 func_80146A6C(s32 a0, void *a1, s32 a2, s32 a3, s32 a4, s32 a5, s32 a6); +extern s32 func_80132EF4(s32 a0, s32 a1); +extern s32 func_8012BEE8(s32 a0); +extern void func_8012C218(void *a0); + +extern s32 D_801AD444; +extern u8 D_800D3918[]; + +void func_801818E4(s32 param_1) { + s32 s0 = param_1; + s32 r; + s32 v; + + r = ((s32 (*)(s32))func_8012CBCC)(s0); + if (func_8012D5E4(s0, (s32)&D_801AD444, (s32)&D_800D3918, 0x40) == 0) { + if (r != 0) { + func_80146A6C(6, (void *)s0, *(s16 *)(s0 + 0x6), *(s16 *)(s0 + 0xA), + *(s16 *)(s0 + 0xE), 0, 0); + v = func_80132EF4(s0, 0x22); + if (v != 0) { + *(s16 *)(v + 0x34) = 0x2000; + } + } else { + if (func_8012BEE8(s0) == 0) { + return; + } + } + } + func_8012C218((void *)s0); +} + + +extern void func_8012AD80(s32 a0); +extern void func_80181468(); +extern s32 rand(void); +extern void func_80181394(void *a0); + +void func_8018199C(s32 arg0) { + register s32 a0 __asm__("$4"); + register s32 a1 __asm__("$5"); + u16 val; + s16 h; + + a0 = *(s32 *)(arg0 + 0x20); + val = *(u16 *)(arg0 + 0x106); + *(u16 *)(a0 + 0x10) = *(u16 *)(a0 + 0x10) + val; + + a1 = *(s32 *)(arg0 + 0x20); + val = *(u16 *)(arg0 + 0x108); + *(u16 *)(a1 + 0x14) = *(u16 *)(a1 + 0x14) + val; + + func_8012AD80(arg0); + + h = *(s16 *)(arg0 + 0xE0); + if (*(s16 *)(arg0 + 0xA) >= h) { + *(s16 *)(arg0 + 0xA) = h; + *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x10) = 0x400; + if ((rand() & 1) != 0) { + *(u16 *)(*(s32 *)(arg0 + 0x20) + 0x10) = 0xC00; + } + func_80181394((void *)arg0); + } + func_80181468(arg0, 0x4001); +} + + +extern s32 rand(void); +extern void func_80181468(); + +void func_80181A4C(s32 arg0) +{ + if (((s32 (*)(s32, s32))func_80181468)(arg0, 0x2001) != 0) { + *(s16 *)(arg0 + 0xE6) = (rand() & 0x7F) + 0x10; + } +} + + +extern void (*D_801BD214[])(void); +extern void func_8012C0EC(void *a0); +extern void func_801852E4(void *a0); +extern void func_801853B4(void *a0); + +void func_80181A94(void *a0) { + D_801BD214[*(u16 *)((s32)a0 + 0x2)](); + if (*(u16 *)a0 != 0) { + func_801852E4(a0); + func_801853B4(a0); + func_8012C0EC(a0); + } +} + + + +// @class: struct +// @stuck: none — MATCH (135/135 ins, match_one confirmed) + + +extern s32 func_8012C354(s32 a0, void *a1); +extern s32 func_80143994(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); +extern s32 func_8012C658(s32 a0, s32 a1, s32 a2); +extern void func_8012CAE4(void*); +extern void func_8012B030(s32 a0); +extern void func_8012B2CC(s32 a0); + +void func_80181B04(s32 param_1) { + + extern Elem52_801B5094 D_801BCFEC[]; + extern u8 D_801BD184[]; + extern u8 D_801BD10C[]; + extern u8 D_801D40D8[]; + extern u16 D_801D45CC; + extern u16 D_801D4424; + s32 iVar1; + u16 uVar2; + + iVar1 = func_8012C354(param_1, &D_801BCFEC[*(u16 *)(param_1 + 0x70) & 0xf]); + if (iVar1 != 0) { + *(u8 *)(param_1 + 0xc0) = 1; + *(u8 **)(param_1 + 0xbc) = D_801BD184; + *(s32 *)(param_1 + 0xb4) = -0x8ad; + *(u32 *)(param_1 + 0xc4) |= 2; + *(u16 *)(*(s32 *)(param_1 + 0x20) + 0x2c) |= 0x80; + *(u8 **)(*(s32 *)(param_1 + 0x20) + 0x80) = D_801BD10C; + func_80143994(param_1, 0x4000); + *(s32 *)(param_1 + 0x48) = 0x18000; + uVar2 = *(u16 *)(param_1 + 0x70) & 0xf; + switch (uVar2) { + case 0: { + s32 t; + *(u32 *)(param_1 + 0xe0) |= 1; + t = (s32)*(u16 *)(*(s32 *)(param_1 + 0x78)) << 0x10; + *(s16 *)(param_1 + 0xfe) = (s16)((t >> 0x10) / 2); + if (((s32)*(s16 *)(param_1 + 0x70) & 0x8000) == 0) { + *(s16 *)(param_1 + 2) = 2; + } else { + *(s16 *)(param_1 + 2) = 1; + *(s32 *)(param_1 + 0x1c) = 0x1e; + func_8012A828(param_1, &D_801D40D8); + } + break; + } + case 1: + *(s16 *)(param_1 + 2) = 0x13; + D_801D45CC = 0x28; + if (((s32)*(s16 *)(param_1 + 0x70) & 0x8000) != 0) { + *(u32 *)(param_1 + 0xe0) |= 0x400; + } + break; + case 2: + *(s16 *)(param_1 + 2) = 0x18; + D_801D4424 = 0x28; + break; + case 3: + *(s16 *)(param_1 + 2) = 0x1f; + if (func_8012C658(0x27f, 5, param_1) == 0) { + ((void (*)(s32))func_8012CAE4)(param_1); + return; + } + break; + } + func_8012B030(param_1); + *(s32 *)(param_1 + 0x38) = *(s32 *)(param_1 + 4); + *(s32 *)(param_1 + 0x3c) = *(s32 *)(param_1 + 8); + *(s32 *)(param_1 + 0x40) = *(s32 *)(param_1 + 0xc); + func_8012B2CC(param_1); + } +} + + +extern s32 func_8012BEE8(); +extern void func_80142414(s32 a0, s16 a1); + +void func_80181D20(s32 p) { + if (*(s32 *)(p + 0x1C) == 0xF) { + func_80142414(p, -0x90); + } + if (func_8012BEE8(p) != 0) { + *(s16 *)(p + 2) = 2; + } +} + + + +/* func_80181D70 — a randomised state entry: seed the timer at 0x1C with + * rand()%64 + 0x80, park 18000 at 0x48, then nudge the value at 0xE8 by a + * random 0..1023 in a random direction, push the command list D_801D4BF8, + * set the state word at 0x02 to 3 and clear bit 6 of the flags at 0xE0. + * + * §71 sibling-first: func_8018598C (same TU, MATCHed) is the same + * `if ((rand() & 1) == 0) v = base - off; else v = base + off;` idiom. + */ + +extern s32 rand(void); +extern void func_8012A828(s32 a0, void *a1); + +void func_80181D70(s32 param_1) { + + extern u8 D_801D4BF8[]; + s32 r; + s32 off; + s32 base; + s32 nv; + + r = rand(); + *(s32 *)(param_1 + 0x1C) = r % 0x40 + 0x80; + *(s32 *)(param_1 + 0x48) = 18000; + + r = rand(); + off = r % 0x400; + base = *(s32 *)(param_1 + 0xE8); + if ((rand() & 1) != 0) { + nv = base + off; + } else { + nv = base - off; + } + *(s32 *)(param_1 + 0xE8) = nv; + + func_8012A828(param_1, D_801D4BF8); + *(s16 *)(param_1 + 2) = 3; + *(u32 *)(param_1 + 0xE0) &= 0xFFFFFFBF; +} + + + + +extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); +extern void func_8012B178(s32 a0, s32 a1); +extern s32 func_801856F0(s32 a0); +extern void func_80185878(s32 a0); +extern s32 func_8012BDBC(s32 a0, s32 a1); +extern s32 func_8012BCCC(s32 a0); +extern s32 func_8012BEE8(); +extern s32 rand(void); + +void func_80181E38(s32 param_1) +{ + register s32 p __asm__("$17") = param_1; + s32 r; + s32 s0; + register s32 s2 __asm__("$18"); + + *(u16 *)(*(s32 *)(p + 0x20) + 0x12) += func_8012B608(*(s16 *)(*(s32 *)(p + 0x20) + 0x12), *(s32 *)(p + 0xE8), 8); + func_8012B178(p, 0xFFFB0000); + + *(u32 *)(p + 0xE0) &= 0xFFFFFFBF; + if (func_801856F0(p) == 0) { + func_80185878(p); + } + + r = func_8012BDBC(p, 0x300); + if (r != 0) { + r = func_8012BCCC(p); + if (r < 0x100000) { + *(s16 *)(p + 2) = 4; + return; + } + } else { + r = func_8012BCCC(p); + if (r < 0x4000) { + *(s16 *)(p + 2) = 0xF; + return; + } + } + + if ((*(u32 *)(p + 0xE0) & 0x40) != 0) { + return; + } + if (func_8012BEE8(p) == 0) { + return; + } + + s0 = rand() % 1024; + s2 = *(s32 *)(p + 0xE8); + if ((rand() & 1) == 0) { + r = s2 - s0; + } else { + r = s2 + s0; + } + *(s32 *)(p + 0xE8) = r; + *(s32 *)(p + 0x1C) = (rand() % 64) + 0x80; +} + + + + +extern void func_8012A828(s32 a0, void *a1); + +void func_80181FA4(s32 param_1) +{ + + extern u8 D_801D4140[]; + func_8012A828(param_1, D_801D4140); + *(s32 *)(param_1 + 0x48) = 0x4650; + *(s16 *)(param_1 + 0x2) = 0x5; +} + + + +extern s32 func_8012B8E4(s32 a0, s32 a1); +extern void func_8012B178(s32 a0, s32 a1); +extern s32 func_80143B6C(s32 a0, s32 a1); +extern s32 func_801856F0(s32 a0); +extern s32 func_8012BDBC(s32 a0, s32 a1); +extern s32 func_8012BCCC(s32 a0); +extern s32 func_801858D8(s32 a0, s32 a1); + +void func_80181FE4(s32 p) +{ + + extern u16 D_800B99DA; + extern s32 D_801E1FB0; + s32 s1; + s32 e; + + *(u16 *)(*(s32 *)(p + 0x20) + 0x12) += func_8012B8E4(p, 8); + func_8012B178(p, 0xFFF90000); + + if ((u32)D_800B99DA % 10 == 0) { + e = func_80143B6C(p, 0); + if (e != 0) { + *(s16 *)(*(s32 *)(e + 0xCC) + 0x18) = 0x5000; + *(s16 *)(*(s32 *)(e + 0xCC) + 0x1A) = 0x5000; + } + } + + func_801856F0(p); + + if (func_8012BDBC(p, 0x300) == 0) { + *(s16 *)(p + 2) = 6; + return; + } + s1 = func_8012BCCC(p); + if (s1 >= 0x100000) { + *(s16 *)(p + 2) = 6; + return; + } + if (s1 < 0x6400) { + e = func_801858D8(p, 0); + if (e == 0) { + *(s16 *)(p + 2) = 8; + return; + } + if (s1 < D_801E1FB0) { + register s32 rv __asm__("$2") = 8; + *(s16 *)(p + 2) = rv; + } + return; + } + if (0x13FFE < s1 - 0x10001U) { + return; + } + e = func_8012BDBC(p, 0x100); + if (e == 0) { + return; + } + e = func_801858D8(p, 0); + if (e == 0) { + *(s16 *)(p + 2) = 0xA; + return; + } + if (D_801E1FB0 <= s1) { + return; + } + *(s16 *)(p + 2) = 8; +} + + +extern void func_8012A828(s32 a0, void *a1); + +void func_8018216C(s32 param_1) +{ + extern u8 D_801D40D8[]; + + *(s32 *)(param_1 + 0x1C) = 0x20; + *(s16 *)(param_1 + 0x2) = 7; + func_8012A828(param_1, D_801D40D8); +} + + +extern s32 func_8012BDBC(s32 a0, s32 a1); +extern s32 func_8012BCCC(s32 a0); +extern s32 func_8012BEE8(); + +void func_801821A0(s32 p) +{ + s32 r; + + if (func_8012BDBC(p, 0x300) != 0) { + r = func_8012BCCC(p); + if (r < 0x100000) { + if (r < 0x6400) + *(s16 *)(p + 2) = 8; + else + *(s16 *)(p + 2) = 4; + return; + } + } else { + if (func_8012BCCC(p) < 0x4000) { + *(s16 *)(p + 2) = 0xF; + return; + } + } + + if (func_8012BEE8(p) != 0) { + *(s16 *)(p + 2) = 2; + } +} + + +void func_80182228(s32 p) +{ + extern u8 D_801D41E8[]; + s32 v0; + + func_8012A828(p, D_801D41E8); + v0 = *(s32 *)(p + 0xE0); + *(s16 *)(p + 2) = 9; + *(s32 *)(p + 0xE0) = (v0 | 2) & ~0x10; +} + + + +extern s32 func_801851C4(s32 a0, s32 a1); +extern s32 func_8012BDBC(s32 a0, s32 a1); +extern s32 func_8012BCCC(s32 a0); +extern void func_80187EF4(s32 a0, s32 a1); +extern void func_8012A828(s32 a0, void *a1); + +void func_80182274(s32 p) +{ + + extern u8 D_801D41E8[]; + extern u8 D_801D4B00[]; + s32 v0; + s32 s1; + + if (func_801851C4(p, 0x64) == 1) { + *(u32 *)(p + 0xE0) |= 0x10; + } + + if (*(s32 *)(p + 0x90) == (s32) D_801D41E8) { + if (*(s32 *)(p + 0x94) == 0xB) { + func_80187EF4(p, 0x8C0); + } + } else { + if (*(s32 *)(p + 0x94) == 8) { + func_80187EF4(p, 0x8C0); + } + } + + if (*(u16 *)(p + 0x72) & 0x4000) { + if (func_8012BDBC(p, 0x300) == 0) { + v0 = 6; + goto set_and_return; + } + s1 = func_8012BCCC(p); + if (s1 >= 0x100000) { + v0 = 2; + goto set_and_return; + } + if (s1 < 0x4000) { + func_8012A828(p, D_801D4B00); + *(u32 *)(p + 0xE0) &= ~0x10; + return; + } else if (s1 < 0x6400) { + if ((*(s32 *)(p + 0xE0) & 0x10) == 0) { + func_8012A828(p, D_801D4B00); + return; + } + func_8012A828(p, D_801D41E8); + *(u32 *)(p + 0xE0) &= ~0x10; + return; + } else { + v0 = 4; + goto set_and_return; + } + } + return; + +set_and_return: + *(s16 *)(p + 2) = v0; +} + + +void func_801823B0(s32 p) +{ + extern u8 D_801D4B00[]; + func_8012A828(p, D_801D4B00); + *(s16 *)(p + 2) = 0xB; + *(s32 *)(p + 0x10) *= 2; + *(s32 *)(p + 0x18) *= 2; + *(s16 *)(p + 0x34) = 0; +} + + + +extern s32 func_801851C4(s32 a0, s32 a1); +extern s32 func_801856F0(s32 a0); +extern s32 func_80143B6C(s32 a0, s32 a1); +extern void func_80187EF4(s32 a0, s32 a1); +extern s32 func_8012BEE8(); + +void func_80182404(s32 p) +{ + + extern u16 D_80126B96; + extern u16 D_800B99DA; + s32 e; + + if (func_801851C4(p, 0x64) == 1) { + D_80126B96 = 4; + } + + *(s32 *)(p + 0x10) = *(s32 *)(p + 0x10) * 31 / 32; + *(s32 *)(p + 0x18) = *(s32 *)(p + 0x18) * 31 / 32; + func_801856F0(p); + + if ((u32)D_800B99DA % 6 == 0) { + e = func_80143B6C(p, 0); + if (e != 0) { + *(s16 *)(*(s32 *)(e + 0xCC) + 0x18) = 0x5000; + *(s16 *)(*(s32 *)(e + 0xCC) + 0x1A) = 0x5000; + } + } + + if (*(s32 *)(p + 0x94) == 8) { + func_80187EF4(p, 0x8C0); + } + + if (*(u16 *)(p + 0x34) == 0) { + if (*(s32 *)(p + 0x94) == 0xE) { + *(u16 *)(p + 0x98) = 0; + *(s32 *)(p + 0x1C) = 0x1E; + *(u16 *)(p + 0x34) += 1; + } + } else { + if (func_8012BEE8(p) != 0) { + *(s16 *)(p + 2) = 6; + } + } +} + + +extern s32 D_801D4430; +extern void func_8012A828(s32 a0, void *a1); + +void func_80182554(void *arg0) { + extern void func_8012A828(s32, void*); + extern s32 D_801D4430; + + ((void (*)(void *, void *))func_8012A828)(arg0, &D_801D4430); + *(s16 *)((u8 *)arg0 + 0x2) = 0xD; + *(s32 *)((u8 *)arg0 + 0x1C) = 0x28; +} + + +INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_80180CD0", func_80182594); + + +extern void func_8012C218(void *a0); +extern void func_8001C924(s32 a0, void *a1); +extern void func_8012A828(s32 a0, void *a1); +extern s32 func_8012BEE8(); +extern s32 func_8012B6D4(s16 *a0, s16 *a1); +extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); +extern void func_8012B178(s32 a0, s32 a1); +extern s32 func_801856F0(s32 a0); +extern void func_80013350(s32 a0, void *a1); + + +void func_80182610(s32 p) +{ + + extern u8 D_801C35D4; + extern u8 D_801BFE10; + extern u8 D_801D4140[]; + extern u8 D_801D5040[]; + u16 uVar1; + s32 s1; + s32 r; + + uVar1 = *(u16 *)(p + 0x34); + switch (uVar1) { + case 0: + s1 = *(s32 *)(p + 0xCC); + if (s1 == 0 || *(s16 *)(s1 + 0x36) != *(s16 *)(p + 0xEC) || + func_8012BEE8(p) != 0) { + *(u16 *)(p + 2) = 0x23; + *(u32 *)(p + 0xE0) |= 0x800; + return; + } + goto call_b6d4; + case 1: + if (*(s16 *)(p + 0x98) != 0) { + return; + } + func_8012C218((void *)*(s32 *)(p + 0xCC)); + *(s32 *)(p + 0xCC) = 0; + func_8001C924(*(s32 *)(p + 0x20), &D_801C35D4); + func_8012A828(p, D_801D4140); + { + register u16 ns __asm__("$4"); + ns = *(u16 *)(p + 0x34); + *(s32 *)(p + 0x1C) = 0x200; + ns = ns + 1; + *(u32 *)(p + 0xE0) &= 0xFFFFFFFB; + *(u16 *)(p + 0x34) = ns; + } + return; + case 2: + s1 = *(s32 *)(p + 0xD0); + if (s1 == 0 || *(s16 *)(s1 + 0x36) != *(s16 *)(p + 0xEE) || + func_8012BEE8(p) != 0) { + *(u16 *)(p + 2) = 4; + *(u32 *)(p + 0xE0) &= 0xFFFFFFFE; + return; + } + call_b6d4: + r = func_8012B6D4((s16 *)(p + 4), (s16 *)(s1 + 4)); + *(s32 *)(p + 0xE8) = r; + goto LAB_80184738; + case 3: + func_8012C218((void *)*(s32 *)(p + 0xD0)); + *(s32 *)(p + 0xD0) = 0; + func_8001C924(*(s32 *)(p + 0x20), &D_801BFE10); + func_8012A828(p, D_801D4140); + *(s32 *)(p + 0x48) = 0x4650; + *(u16 *)(p + 2) = 5; + *(u32 *)(p + 0xE0) |= 1; + return; + default: + goto LAB_80184738; + } + +LAB_80184738: + r = func_8012B608(*(s16 *)(*(s32 *)(p + 0x20) + 0x12), *(s32 *)(p + 0xE8), 8); + *(u16 *)(*(s32 *)(p + 0x20) + 0x12) = + *(u16 *)(*(s32 *)(p + 0x20) + 0x12) + r; + + if (*(u16 *)(p + 0x34) == 0) { + func_8012B178(p, 0xFFF8D000); + } else { + func_8012B178(p, 0xFFF90000); + } + + func_801856F0(p); + + r = ((s32(*)(s32, s32))func_80013350)(p + 4, s1 + 4); + if (r < 0x900) { + if (*(u16 *)(p + 0x34) == 0) { + func_8012A828(p, D_801D5040); + } + *(u16 *)(p + 0x34) = *(u16 *)(p + 0x34) + 1; + } +} + + +INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_80180CD0", func_80182890); + + +extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); +extern s32 func_8012BDBC(s32 a0, s32 a1); +extern s32 func_8012BEE8(); +extern void func_80142414(s32 a0, s16 a1); + +void func_801828D8(s32 p) { + s32 r; + + if (*(u16 *)(p + 0x34) == 0) { + r = func_8012B608(*(s16 *)(*(s32 *)(p + 0x20) + 0x12), *(s32 *)(p + 0xE8), 4); + *(u16 *)(*(s32 *)(p + 0x20) + 0x12) += r; + if (func_8012BDBC(p, 0x200) != 0) { + *(s32 *)(p + 0x1C) = 0xF; + *(u16 *)(p + 0x34) += 1; + func_80142414(p, -0x90); + } else if (r == 0) { + *(u16 *)(p + 2) = 2; + } + } else if (func_8012BEE8(p) != 0) { + *(u16 *)(p + 2) = 4; + } +} + + +extern void func_8012A828(s32 a0, void *a1); + +void func_80182998(s32 param_1) +{ + /* [T51] scoped in from file scope: a file-scope decl of these symbols constrains every + LATER function in this TU, which blocks a byte-true decl of a different type. + Declaration-only move (cookbook §103); the whole-binary byte-gate is the arbiter. */ + extern u8 D_801D47C0[]; + func_8012A828(param_1, D_801D47C0); + *(s32 *)(param_1 + 0x48) = 0x4650; + *(s16 *)(param_1 + 0x2) = 0x12; +} + + +typedef struct { + SVECTOR_8016E7C8 v[4]; /* 0x00 */ + s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ + u8 f6; /* 0x38 */ + u8 pad[7]; /* -> 0x40 */ +} Prim_8016E7C8_801829D8; + +extern s32 func_8012BCCC(s32 a0); +extern s32 func_8012B8E4(s32 a0, s32 a1); +extern s32 func_8012BEE8(); +extern s32 func_8012B8A4(s16 *a0); +extern s32 func_8012B608(s32 a0, s32 a1, s32 a2); +extern void func_8012B178(s32 a0, s32 a1); +extern s32 func_801856F0(s32 a0); +extern void func_80185878(s32 a0); +extern s32 rand(void); + +void func_801829D8(s32 p) +{ + s32 v; + s32 r; + s32 t; + + v = func_8012BCCC(p); + if (v > 0x144000) { + *(s16 *)(p + 2) = 0x13; + return; + } + + if (v > 0xC4000) { + if ((*(u32 *)(p + 0xE0) & 0x40) == 0) { + r = func_8012B8E4(p, 8); + *(u16 *)(*(s32 *)(p + 0x20) + 0x12) += r; + } + } else { + if ((u32)(v - 0x24000) <= 0xA0000) { + *(s16 *)(p + 2) = 0x15; + return; + } + + if ((*(u32 *)(p + 0xE0) & 0x40) == 0) { + if (func_8012BEE8(p) != 0) { + t = func_8012B8A4((s16 *)p); + *(u32 *)(p + 0xE8) = (t + 0x800) & 0xFFF; + r = rand(); + *(s32 *)(p + 0x1C) = r % 0x40 + 0x40; + } + } + + r = func_8012B608(*(s16 *)(*(s32 *)(p + 0x20) + 0x12), *(s32 *)(p + 0xE8), 8); + *(u16 *)(*(s32 *)(p + 0x20) + 0x12) += r; + } + + func_8012B178(p, 0xFFF9C000); + *(u32 *)(p + 0xE0) &= 0xFFFFFFBF; + if (func_801856F0(p) == 0) { + func_80185878(p); + } +} + + +void func_80182B3C(s32 p) +{ + extern u8 D_801BCEB4[]; + extern u8 D_801D4488[]; + + *(s16 *)(p + 2) = 0x14; + if (!(*(u32 *)(p + 0xE0) & 0x400)) { + *(s16 *)(p + 0x34) = 1; + func_8012A828(p, D_801D4488); + } else { + *(s16 *)(p + 0x34) = 0; + func_8012A828(p, D_801BCEB4); + } +} + + +typedef struct { + SVECTOR_8016E7C8 v[4]; /* 0x00 */ + s32 f0, f1, f2, f3, f4, f5; /* 0x20..0x37 */ + u8 f6; /* 0x38 */ + u8 pad[7]; /* -> 0x40 */ +} Prim_8016E7C8_80182B90; + +extern s32 func_8012BCCC(s32 a0); +extern void func_8012A828(s32 a0, void *a1); + + +void func_80182B90(s32 p) +{ + + extern u8 D_801D4488[]; + extern u8 D_801D47C0[]; + extern u8 D_801D4878[]; + s32 v; + + switch (*(u16 *)(p + 0x34)) { + case 0: + if (*(u16 *)(p + 0x72) & 0x4000) { + func_8012A828(p, D_801D4488); + *(u16 *)(p + 0x34) += 1; + } + break; + case 1: + v = func_8012BCCC(p); + if (v > 0x24000) { + break; + } + + if ((*(u32 *)(p + 0xE0) & 0x400) == 0) { + *(s16 *)(p + 2) = 0x15; + } else { + func_8012A828(p, D_801D4878); + *(u16 *)(p + 0x34) += 1; + } + break; + case 2: + if (*(u16 *)(p + 0x72) & 0x4000) { + func_8012A828(p, D_801D47C0); + *(s32 *)(p + 0x48) = 0x4650; + *(s16 *)(p + 0x2) = 0x12; + } + break; + } +} + + +extern void func_8012A828(s32 a0, void *a1); + +void func_80182CA0(s32 p) +{ + extern u8 D_801D4488[]; + + *(s16 *)(p + 2) = 0x16; + if ((*(u32 *)(p + 0xE0) & 0x400) == 0) { + func_8012A828(p, D_801D4488); + *(s16 *)(p + 0x34) = 4; + *(s32 *)(p + 0x1C) = 0xF; + } else { + *(s32 *)(p + 0x1C) = 0x1E; + *(s16 *)(p + 0x34) = 0; + } +} + + diff --git a/src/ov_SC06_022/ov_SC06_022_jr_80184A28.c b/src/ov_SC06_022/ov_SC06_022_jr_80184A28.c index 3d35a555e..5145e4f17 100644 --- a/src/ov_SC06_022/ov_SC06_022_jr_80184A28.c +++ b/src/ov_SC06_022/ov_SC06_022_jr_80184A28.c @@ -6712,7 +6712,27 @@ void func_8018B19C(s32 a0) } -INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_80184A28", func_8018B25C); +extern void func_8012A828(s32 a0, void *a1); + +void func_8018B25C(s32 a0) { + extern u8 D_801DCF74[]; + extern u8 D_801DD074[]; + extern u8 D_801DD174[]; + + if (*(s16 *)(a0 + 0xFC) == 0) { + *(u16 *)(a0 + 2) = 1; + func_8012A828(a0, D_801DCF74); + if (*(s32 *)(a0 + 0xCC) != 0) { + func_8012A828(*(s32 *)(a0 + 0xCC), D_801DD074); + } + if (*(s32 *)(a0 + 0xD0) != 0) { + func_8012A828(*(s32 *)(a0 + 0xD0), D_801DD174); + } + } else { + *(s16 *)(a0 + 0xFC) = *(s16 *)(a0 + 0xFC) - 1; + } +} + @@ -7904,7 +7924,28 @@ extern void func_8018B9E8(void); } -INCLUDE_ASM("asm/ov_SC06_022/nonmatchings/ov_SC06_022_jr_80184A28", func_8018CBDC); +extern void func_801319E0(s32 a0); +extern s32 func_8012BEE8(s32 a0); +extern s32 func_8012CBF4(s32 a0); +extern void func_80131E00(s32 a0, s32 a1); +extern void func_80131C78(s32 a0); +extern void func_8018B9E8(void); + +void func_8018CBDC(s32 a0) { + if (*(s16 *)(a0 + 0xA) >= 0x10) { + func_801319E0(a0); + } else { + if (func_8012BEE8(a0) != 0) { + func_80131E00(a0, 6); + } else { + if (func_8012CBF4(a0) & 0x2000) { + func_80131C78(a0); + } + ((void (*)(s32))func_8018B9E8)(a0); + } + } +} + extern s32 func_8012C354(s32 a0, s32 a1); diff --git a/src/ov_SC06_025/ov_SC06_025_jr_8017EEC4.c b/src/ov_SC06_025/ov_SC06_025_jr_8017EEC4.c index d471706d7..39e20cb28 100644 --- a/src/ov_SC06_025/ov_SC06_025_jr_8017EEC4.c +++ b/src/ov_SC06_025/ov_SC06_025_jr_8017EEC4.c @@ -4456,7 +4456,13 @@ void func_80182850(s32 *a0) { INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_8017EEC4", func_801828A0); -INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_8017EEC4", func_80182938); +s32 func_80182938(u8 *param_1) +{ + *(u16 *)(*(u8 **)(param_1 + 0x20) + 0x10) = 0; + *(u32 *)(param_1 + 0x1C) = 0xFF; + return 0xFF; +} + INCLUDE_ASM("asm/ov_SC06_025/nonmatchings/ov_SC06_025_jr_8017EEC4", func_80182950); diff --git a/src/ov_SC06_029/ov_SC06_029_jr_8017C954.c b/src/ov_SC06_029/ov_SC06_029_jr_8017C954.c index dc82cbe66..99fe5dcd0 100644 --- a/src/ov_SC06_029/ov_SC06_029_jr_8017C954.c +++ b/src/ov_SC06_029/ov_SC06_029_jr_8017C954.c @@ -3750,7 +3750,15 @@ void func_8017E584(s32 param_1) { } -INCLUDE_ASM("asm/ov_SC06_029/nonmatchings/ov_SC06_029_jr_8017C954", func_8017E610); +extern s16 D_80126B30; +extern void func_8017303C(void *); +extern u8 D_8019003C[]; + +void func_8017E610(void) { + func_8017303C((void *)D_8019003C); + D_80126B30 = 0; +} + extern s16 D_80126B30; extern void func_8017303C(void *); diff --git a/src/ov_SC06_033/ov_SC06_033_jr_8018D98C.c b/src/ov_SC06_033/ov_SC06_033_jr_8018D98C.c index 7f5d9cbbd..e38921826 100644 --- a/src/ov_SC06_033/ov_SC06_033_jr_8018D98C.c +++ b/src/ov_SC06_033/ov_SC06_033_jr_8018D98C.c @@ -3737,7 +3737,50 @@ void func_8018F194(s32 arg0) { void func_8018F2BC(void) { } -INCLUDE_ASM("asm/ov_SC06_033/nonmatchings/ov_SC06_033_jr_8018D98C", func_8018F2C4); +extern void func_8012B23C(); +extern void func_8012C218(void *a0); +extern void func_8012CBCC(s32 a0); +extern u8 *func_8012913C(s32 a0); + +void func_8018F2C4(s32 param_1) +{ + s32 iv; + u32 ret; + + if (*(u16 *)(param_1 + 2) == 0) { + *(u8 *)(param_1 + 0xC0) = 1; + *(u16 *)(param_1 + 2) += 1; + func_8012B23C(param_1); + *(s32 *)(param_1 + 0x1C) = 1; + return; + } + *(s32 *)(param_1 + 0xDC) = *(s32 *)(param_1 + 0x14); + ret = ((s32 (*)(s32))func_8012CBCC)(param_1); + if (ret != 0 && (ret & 0x6000) != 0) { + if (--*(s32 *)(param_1 + 0x1C) == 0) { + goto kill; + } + *(s32 *)(param_1 + 0x14) = -*(s32 *)(param_1 + 0xDC) >> 2; + } + if ((++*(u16 *)(param_1 + 0xFC)) & 1) { + iv = (s32)func_8012913C(0x23); + if (iv != 0) { + *(u16 *)((u8 *)iv + 6) = *(u16 *)(param_1 + 6); + *(u16 *)((u8 *)iv + 0xA) = *(u16 *)(param_1 + 0xA); + *(u16 *)((u8 *)iv + 0xE) = *(u16 *)(param_1 + 0xE); + *(u32 *)((u8 *)iv + 0x18) = 0; + *(u32 *)((u8 *)iv + 0x14) = 0; + *(u32 *)((u8 *)iv + 0x10) = 0; + *(u16 *)((u8 *)iv + 0x34) = 0x3000; + } + } + if (*(s16 *)(param_1 + 0xA) < 0x20) { + return; + } +kill: + func_8012C218((void *)param_1); +} + extern s32 func_8004787C(s32 a0); diff --git a/src/ov_SC07_001/ov_SC07_001_jr_8017BEBC.c b/src/ov_SC07_001/ov_SC07_001_jr_8017BEBC.c index 118cd2bd8..4f6af5aa1 100644 --- a/src/ov_SC07_001/ov_SC07_001_jr_8017BEBC.c +++ b/src/ov_SC07_001/ov_SC07_001_jr_8017BEBC.c @@ -5140,7 +5140,25 @@ void func_80180D74(void *a0) { } -INCLUDE_ASM("asm/ov_SC07_001/nonmatchings/ov_SC07_001_jr_8017BEBC", func_80180E78); +extern s16 D_801AAD6E[]; +extern void func_8012C218(s32 a0); +extern void func_8018088C(s32 a0); +extern void func_8012E014(s32 a0); + +void func_80180E78(void *a0) { + if (D_801AAD6E[*(s16 *)((s32)a0 + 0x70) * 4] >= 0x400) { + func_8012C218((s32)a0); + return; + } + *(s16 *)((s32)a0 + 0xA) = D_801AAD6E[*(s16 *)((s32)a0 + 0x70) * 4] + *(u16 *)((s32)a0 + 0x8A); + func_8018088C((s32)a0); + if (*(s32 *)((s32)a0 + 0x3C) != *(s32 *)((s32)a0 + 0x8)) { + if (*(u8 *)((s32)a0 + 0x74) != 0) { + func_8012E014((s32)a0); + } + } +} + void func_80180F18(void) { } diff --git a/src/ov_SC07_007/ov_SC07_007_jr_8017BEBC.c b/src/ov_SC07_007/ov_SC07_007_jr_8017BEBC.c index c5444885d..23fbf663a 100644 --- a/src/ov_SC07_007/ov_SC07_007_jr_8017BEBC.c +++ b/src/ov_SC07_007/ov_SC07_007_jr_8017BEBC.c @@ -5309,7 +5309,16 @@ void func_8017F478(s32 arg0) { } -INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_8017BEBC", func_8017F540); +extern s32 func_8012AD50(void *arg0); + +void func_8017F540(s32 a0) { + if (*(s16 *)(a0 + 0x98) != 0) { + *(u16 *)(a0 + 0xE) -= 1; + } else { + func_8012AD50((void *)a0); + } +} + void func_8017F584(s32 a0) { extern s32 func_80180FA4(s32, s32); @@ -6238,7 +6247,17 @@ void func_8018090C(s32 a0) { } -INCLUDE_ASM("asm/ov_SC07_007/nonmatchings/ov_SC07_007_jr_8017BEBC", func_801809FC); +extern s32 func_80180F84(void); +extern s32 func_80181334(s32 a0, s32 a1); +extern s32 func_8012AD50(void *a0); + +void func_801809FC(s32 a0) +{ + if (func_80180F84() == 0x13 && func_80181334(a0, 1) != 0) { + func_8012AD50(a0); + } +} + extern s32 func_8012AD50(void*); extern s32 func_80180F84(void); diff --git a/src/ov_SC07_010/ov_SC07_010_jr_8017AE2C.c b/src/ov_SC07_010/ov_SC07_010_jr_8017AE2C.c index 67b76063c..39d578a90 100644 --- a/src/ov_SC07_010/ov_SC07_010_jr_8017AE2C.c +++ b/src/ov_SC07_010/ov_SC07_010_jr_8017AE2C.c @@ -4951,7 +4951,42 @@ void func_8017EFA4(void) { } -INCLUDE_ASM("asm/ov_SC07_010/nonmatchings/ov_SC07_010_jr_8017AE2C", func_8017EFC4); +void func_8017EFC4(s32 a0) { + extern void func_8012C194(void); + extern void func_8012CAE4(void *a0); + extern void func_8001CD9C(s32 a0, void *a1); + extern void func_800233CC(void *a0, unsigned short a1); + extern s32 rand(void); + extern s32 func_8012AD50(void *a0); + extern u32 D_801A7D0C[]; + extern s32 D_80185C90[]; + + register s32 s2 __asm__("$18") = a0; + register s32 s0 __asm__("$16"); + register s32 v0 __asm__("$2"); + s32 s1; + + s1 = (*(s16 *)(s2 + 0x70) << 6) + (s32)&D_801A7D0C; + v0 = ((s32 (*)(void))func_8012C194)(); + __asm__ volatile("addu %0,%1,$0" : "=r"(s0) : "r"(v0)); + *(s32 *)(s2 + 0x20) = v0; + + if (v0 == 0) { + func_8012CAE4((void *)s2); + } else { + func_8001CD9C(s0, (void *)s1); + func_800233CC((void *)s1, 0x80); + *(s16 *)(s0 + 0x1E) = 0xC00; + *(s16 *)(s0 + 0x10) = 0x400; + *(s32 *)(s0 + 4) |= 0x50000000; + *(s16 *)(s0 + 0x1A) = 0; + *(s16 *)(s0 + 0x18) = 0; + *(s32 *)s1 = D_80185C90[rand() & 7]; + *(s32 *)(s1 + 4) = 0; + func_8012AD50((void *)s2); + } +} + extern s32 func_8017F478(u8 *a0); extern s32 func_8017F4A8(void *a0, void *a1); diff --git a/src/resident/resident.c b/src/resident/resident.c index 799b58885..d2031bac3 100644 --- a/src/resident/resident.c +++ b/src/resident/resident.c @@ -1884,7 +1884,23 @@ s32 func_800D1938(S800D1938 *arg0) { return 0; } -INCLUDE_ASM("asm/resident/nonmatchings/resident", func_800D1984); +s32 aF800D1984(u8 *arg0) __asm__("func_800D1984"); + +s32 aF800D1984(u8 *arg0) { + extern s32 func_800D19DC(); + register s32 zr __asm__("$0"); + s32 (*fp)(void); + u8 *p; + + fp = *(s32 (**)(void)) (arg0 + 0xC); + if (fp() != 0) { + p = arg0 + zr; + p[0x14] = arg0[0x14] + 1; + return func_800D19DC(p); + } + return 0; +} + extern s8 D_800B9A10; diff --git a/src/shared/engine_core.h b/src/shared/engine_core.h index 24d568d5a..9dd57c7a5 100644 --- a/src/shared/engine_core.h +++ b/src/shared/engine_core.h @@ -59979,7 +59979,7 @@ extern int func_800CB0E8(int param); \ extern void func_801801EC(int param_1); \ extern void func_80180394(void *a0); \ - extern void func_801803D0(void); \ + extern void func_801803D0(); \ extern void func_801803B0(void); \ extern unsigned char D_801A73BC[]; \ extern void func_80180428(int param_1); \ @@ -65074,7 +65074,7 @@ extern int func_800CB0E8(int param); \ extern void func_801801EC(int param_1); \ extern void func_80180394(void *a0); \ - extern void func_801803D0(void); \ + extern void func_801803D0(); \ extern void func_801803B0(void); \ extern unsigned char D_801A73BC[]; \ extern void func_80180428(int param_1); \ @@ -90085,7 +90085,7 @@ } #define DEFINE_func_801803B0() \ - extern void func_801803D0(void); \ + extern void func_801803D0(); \ void func_801803B0(void) { \ func_801803D0(); \ } @@ -155377,7 +155377,7 @@ extern int func_800CB0E8(int param); \ extern void func_801801EC(int param_1); \ extern void func_80180394(void *a0); \ - extern void func_801803D0(void); \ + extern void func_801803D0(); \ extern void func_801803B0(void); \ extern unsigned char D_801A73BC[]; \ extern void func_80180428(int param_1); \ @@ -160472,7 +160472,7 @@ extern int func_800CB0E8(int param); \ extern void func_801801EC(int param_1); \ extern void func_80180394(void *a0); \ - extern void func_801803D0(void); \ + extern void func_801803D0(); \ extern void func_801803B0(void); \ extern unsigned char D_801A73BC[]; \ extern void func_80180428(int param_1); \