diff --git a/Makefile b/Makefile index dcd3cbb..1ea59c0 100644 --- a/Makefile +++ b/Makefile @@ -60,6 +60,8 @@ N64_EMULATOR ?= MIPS_BINUTILS_PREFIX ?= mips-linux-gnu- PRINT = printf +PREPROCESS := + # Whether to hide commands or not VERBOSE ?= 0 ifeq ($(VERBOSE),0) @@ -296,6 +298,8 @@ DECOMP_POKESTADIUM_FILTERED := $(patsubst %.c,%.o,$(addprefix build/,$(shell fin # only run asm processor on files that need it. $(DECOMP_POKESTADIUM_FILTERED): CC := $(ASM_PROC) $(ASM_PROC_FLAGS) $(CC) -- $(AS) $(ASFLAGS) -- +$(BUILD_DIR)/src/%.o: PREPROCESS := ./tools/preprocess.sh -i $(ICONV) -- + ###################### Ugly hacksz ############################# # This is unsanitary to do, -but-, because this file is encrypted we cant have splat decrypt it @@ -421,7 +425,7 @@ $(BUILD_DIR)/%.o: %.s $(BUILD_DIR)/%.o: %.c $(call print,Compiling:,$<,$@) $(V)$(CC_CHECK) $(CC_CHECK_FLAGS) $(IINC) -I $(dir $*) $(CHECK_WARNINGS) $(BUILD_DEFINES) $(COMMON_DEFINES) $(RELEASE_DEFINES) $(GBI_DEFINES) $(LIBULTRA_DEFINES) $(C_DEFINES) $(MIPS_BUILTIN_DEFS) -o $@ $< - $(V)$(CC) -c $(CFLAGS) $(BUILD_DEFINES) $(IINC) $(WARNINGS) $(MIPS_VERSION) $(ENDIAN) $(COMMON_DEFINES) $(RELEASE_DEFINES) $(GBI_DEFINES) $(LIBULTRA_DEFINES) $(C_DEFINES) $(OPTFLAGS) -o $@ $< + $(V)$(PREPROCESS) $(CC) -c $(CFLAGS) $(BUILD_DEFINES) $(IINC) $(WARNINGS) $(MIPS_VERSION) $(ENDIAN) $(COMMON_DEFINES) $(RELEASE_DEFINES) $(GBI_DEFINES) $(LIBULTRA_DEFINES) $(C_DEFINES) $(OPTFLAGS) -o $@ $< $(V)$(OBJDUMP_CMD) $(V)$(RM_MDEBUG) diff --git a/include/global.h b/include/global.h index f1f9638..a37350c 100644 --- a/include/global.h +++ b/include/global.h @@ -147,17 +147,17 @@ typedef struct unk_D_86002F58_004_000 { /* 0x054 */ unk_D_86002F58_004_000_054 unk_054; /* 0x060 */ MtxF unk_060; /* 0x0A0 */ Color_RGBA8_u32 unk_0A0; - /* 0x0A4 */ char pad0A4[2]; + /* 0x0A4 */ char unk0A4[2]; /* 0x0A6 */ u8 unk_0A6; /* 0x0A7 */ u8 unk_0A7; /* 0x0A8 */ unk_D_86002F58_004_000_0A8 unk_0A8[1]; - /* 0x0B8 */ char pad0B8[0x24]; + /* 0x0B8 */ char unk0B8[0x24]; /* 0x0DC */ Vec3f unk_0DC; - /* 0x0E0 */ char pad0E0[0x4]; + /* 0x0E0 */ char unk0E0[0x4]; /* 0x0EC */ Vec3f unk_0EC; - /* 0x0F8 */ char pad0F8[0x4]; + /* 0x0F8 */ char unk0F8[0x4]; /* 0x0FC */ Vec3f unk_0FC; - /* 0x108 */ char pad108[0x60]; + /* 0x108 */ char unk108[0x60]; } unk_D_86002F58_004_000; // size = 0x168 typedef struct unk_D_86002F34_000_014_004 { @@ -533,6 +533,8 @@ typedef struct TrainerData { /* 0x03A */ char unk3A[0x1F6]; } TrainerData; // size = 0x230 +extern s16 D_80075E40[]; + #include "variables.h" #endif diff --git a/include/libc/math.h b/include/libc/math.h deleted file mode 100644 index 1cdac0f..0000000 --- a/include/libc/math.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef MATH_H -#define MATH_H - -#include "PR/ultratypes.h" - -#define M_PI 3.14159265358979323846f -#define M_SQRT2 1.41421356237309504880f -#define M_SQRT1_2 0.70710678118654752440f /* 1/sqrt(2) */ -#define FLT_MAX 340282346638528859811704183484516925440.0f -#define SHT_MAX 32767.0f -#define SHT_MINV (1.0f / SHT_MAX) - -typedef union { - f64 d; - struct { - u32 hi; - u32 lo; - } word; -} du; - -typedef union { - u32 i; - f32 f; -} fu; - -extern f32 __libm_qnan_f; - -float fabsf(float f); -#pragma intrinsic(fabsf) -float sqrtf(float f); -#pragma intrinsic(sqrtf) -double sqrt(double d); -#pragma intrinsic(sqrt) - -#endif diff --git a/include/math.h b/include/math.h index 0c3d9a6..b60dde5 100644 --- a/include/math.h +++ b/include/math.h @@ -3,12 +3,17 @@ #include "PR/ultratypes.h" +#define M_PI_F 3.14159265358979323846f #define M_SQRT2 1.41421356237309504880f #define M_SQRT1_2 0.70710678118654752440f /* 1/sqrt(2) */ #define FLT_MAX 340282346638528859811704183484516925440.0f #define SHT_MAX 32767.0f #define SHT_MINV (1.0f / SHT_MAX) +#define TWO_THIRDS_PI 2.094395160675049 +#define TWO_PI 6.2831854820251469 +#define TWO_PI_F 6.283185482f + extern long long __d_to_ll(double d); extern long long __f_to_ll(float f); extern unsigned long long __d_to_ull(double d); @@ -18,6 +23,10 @@ extern float __ll_to_f(long long s); extern double __ull_to_d(unsigned long long u); extern float __ull_to_f(unsigned long long u); +float fabsf(float f); +float sqrtf(float f); +double sqrt(double d); + #define SINS(x) gSineTable[(u16) (x) >> 4] #define COSS(x) gCosineTable[(u16) (x) >> 4] diff --git a/include/sections.h b/include/sections.h index 15135e4..127c0f8 100644 --- a/include/sections.h +++ b/include/sections.h @@ -542,6 +542,8 @@ extern u8 _70D3A0_ROM_START[]; extern u8 _70D3A0_ROM_END[]; extern u8 D_70110[]; extern u8 D_70290[]; +extern u8 D_6E910[]; +extern u8 D_71E10[]; extern u8 D_70B10[]; extern u8 _6EB340_ROM_START[]; extern u8 _6EB340_ROM_END[]; @@ -558,7 +560,8 @@ extern u8 trade_select_ui_ROM_END[]; extern u8 _798CD0_TEXT_START[]; extern u8 _798CD0_ROM_START[]; extern u8 _798CD0_ROM_END[]; - +extern u8 _7820E0_ROM_START[]; +extern u8 _7820E0_ROM_END[]; extern u8 D_124570[]; diff --git a/include/variables.h b/include/variables.h index dd2e00f..2be6238 100644 --- a/include/variables.h +++ b/include/variables.h @@ -758,6 +758,71 @@ extern u8 D_8C200090[]; extern u8 D_8C200920[]; extern u8 D_8C201070[]; extern u8 D_8C2011C4[]; +extern u8 D_3008380[]; +extern u8 D_3008400[]; +extern u8 D_3008480[]; +extern u8 D_3008500[]; +extern u8 D_3008580[]; +extern u8 D_3008600[]; +extern u8 D_3008680[]; +extern u8 D_3008700[]; +extern u8 D_3000470[]; +extern u8 D_3001F70[]; +extern u8 D_30092C0[]; +extern u8 D_3009560[]; +extern u8 D_3008280[]; +extern u8 D_3006170[]; +extern u8 D_30061D0[]; +extern u8 D_3006230[]; +extern u8 D_1003DB0[]; +extern u8 D_1003E50[]; +extern u8 D_1003EA0[]; +extern u8 D_1003EC8[]; +extern u8 D_1003EF0[]; +extern u8 D_300B870[]; +extern u8 D_3008C00[]; +extern u8 D_3008D80[]; +extern u8 D_3008E40[]; +extern u8 D_3008FC0[]; +extern u8 D_3009080[]; +extern u8 D_3009200[]; +extern u8 D_3008780[]; +extern u8 D_3008900[]; +extern u8 D_30089C0[]; +extern u8 D_3008B40[]; +extern u8 D_3006290[]; +extern u8 D_3006450[]; +extern u8 D_3006530[]; +extern u8 D_30066F0[]; +extern u8 D_30067D0[]; +extern u8 D_3006990[]; +extern u8 D_3006A70[]; +extern u8 D_3006C30[]; +extern u8 D_300B630[]; +extern u8 D_300A1F0[]; +extern u8 D_30096B0[]; +extern u8 D_300AAF0[]; +extern u8 D_300A8B0[]; +extern u8 D_300B3F0[]; +extern u8 D_3009FB0[]; +extern u8 D_30098F0[]; +extern u8 D_300A430[]; +extern u8 D_300B1B0[]; +extern u8 D_300AF70[]; +extern u8 D_300A670[]; +extern u8 D_3009D70[]; +extern u8 D_300AD30[]; +extern u8 D_3009B30[]; +extern u8 D_3006D10[]; +extern u8 D_3007010[]; +extern u8 D_3007310[]; +extern u8 D_3007610[]; +extern u8 D_3007A78[]; +extern u8 D_3007EB0[]; +extern u8 D_3007910[]; +extern u8 D_3008018[]; +extern u8 D_3007BE0[]; +extern u8 D_3007D48[]; extern LEODiskID D_800818E0; @@ -872,10 +937,11 @@ typedef struct unk_D_70B10 { extern u32 D_8C000000; // start of some rom area typedef struct unk_D_80072B00 { - /* 0x00 */ char unk00[2]; + /* 0x00 */ u8 unk_00; + /* 0x01 */ u8 unk_01; /* 0x02 */ u8 unk_02; /* 0x03 */ u8 unk_03; - /* 0x04 */ char unk04[1]; + /* 0x04 */ u8 unk_04; /* 0x05 */ u8 unk_05; } unk_D_80072B00; // size = 0x6 extern unk_D_80072B00 D_80072B00[]; @@ -883,10 +949,22 @@ extern unk_D_80072B00 D_80072B00[]; typedef struct unk_D_80072338 { /* 0x00 */ char unk00[0x1]; /* 0x01 */ u8 unk_01; - /* 0x02 */ char unk02[0xA]; + /* 0x02 */ char unk02[0x2]; + /* 0x04 */ s32 unk_04; + /* 0x08 */ char unk08[0x4]; } unk_D_80072338; // size = 0xC extern unk_D_80072338 D_80072338[]; extern char D_8006FEE8[][0x1C]; +typedef struct unk_rom_70D3A0_offset_72780 { + /* 0x00 */ char unk00[0x20]; +} unk_rom_70D3A0_offset_72780; +extern unk_rom_70D3A0_offset_72780 D_72780[]; + +typedef struct unk_rom_70D3A0_offset_73A60 { + /* 0x00 */ char unk00[0x20]; +} unk_rom_70D3A0_offset_73A60; +extern unk_rom_70D3A0_offset_73A60 D_73A60[]; + #endif diff --git a/linker_scripts/us/symbol_addrs.txt b/linker_scripts/us/symbol_addrs.txt index c1703d2..8550aa1 100644 --- a/linker_scripts/us/symbol_addrs.txt +++ b/linker_scripts/us/symbol_addrs.txt @@ -316,7 +316,6 @@ pad_D_879060B4 = 0x879060B4; // size:0x8 D_879060E0 = 0x879060E0; // size:0xC D_87906100 = 0x87906100; // size:0xC D_87906110 = 0x87906110; // size:0xC -D_8140E628 = 0x8140E628; // size:0x90 D_400C800 = 0x400C800; D_400CA00 = 0x400CA00; D_400CC00 = 0x400CC00; @@ -1018,3 +1017,399 @@ D_8C200920 = 0x8C200920; D_8C201070 = 0x8C201070; D_8C2011C4 = 0x8C2011C4; D_80070F84 = 0x80070F84; +D_84385388 = 0x84385388; // size:0x3C8 +D_84390068 = 0x84390068; // size:0x38 +D_84390010 = 0x84390010; // size:0x8 +D_84390028 = 0x84390028; // size:0x20 +D_843901F0 = 0x843901F0; // size:0xC +D_84390048 = 0x84390048; // size:0x20 +D_3008380 = 0x3008380; +D_3008400 = 0x3008400; +D_3008480 = 0x3008480; +D_3008500 = 0x3008500; +D_3008580 = 0x3008580; +D_3008600 = 0x3008600; +D_3008680 = 0x3008680; +D_3008700 = 0x3008700; +D_3000470 = 0x3000470; +D_3001F70 = 0x3001F70; +D_30092C0 = 0x30092C0; +D_3009560 = 0x3009560; +D_3008280 = 0x3008280; +D_3006170 = 0x3006170; +D_30061D0 = 0x30061D0; +D_3006230 = 0x3006230; +D_300B870 = 0x300B870; +D_3008C00 = 0x3008C00; +D_3008D80 = 0x3008D80; +D_3008E40 = 0x3008E40; +D_3008FC0 = 0x3008FC0; +D_3009080 = 0x3009080; +D_3009200 = 0x3009200; +D_3008780 = 0x3008780; +D_3008900 = 0x3008900; +D_30089C0 = 0x30089C0; +D_3008B40 = 0x3008B40; +D_3006290 = 0x3006290; +D_3006450 = 0x3006450; +D_3006530 = 0x3006530; +D_30066F0 = 0x30066F0; +D_30067D0 = 0x30067D0; +D_3006990 = 0x3006990; +D_3006A70 = 0x3006A70; +D_3006C30 = 0x3006C30; +D_300B630 = 0x300B630; +D_300A1F0 = 0x300A1F0; +D_30096B0 = 0x30096B0; +D_300AAF0 = 0x300AAF0; +D_300A8B0 = 0x300A8B0; +D_300B3F0 = 0x300B3F0; +D_3009FB0 = 0x3009FB0; +D_30098F0 = 0x30098F0; +D_300A430 = 0x300A430; +D_300B1B0 = 0x300B1B0; +D_300AF70 = 0x300AF70; +D_300A670 = 0x300A670; +D_3009D70 = 0x3009D70; +D_300AD30 = 0x300AD30; +D_3009B30 = 0x3009B30; +D_3006D10 = 0x3006D10; +D_3007010 = 0x3007010; +D_3007310 = 0x3007310; +D_3007610 = 0x3007610; +D_843901B0 = 0x843901B0; // size:0x40 +D_84385B54 = 0x84385B54; // type:asciz +D_8438682C = 0x8438682C; // type:u8 +D_84386844 = 0x84386844; // type:u8 +D_84386848 = 0x84386848; // type:u8 +D_8438684C = 0x8438684C; // type:u8 +D_84386850 = 0x84386850; // type:u8 +D_84386854 = 0x84386854; // type:u8 +D_84386858 = 0x84386858; // type:u8 +D_8438685C = 0x8438685C; // type:u8 +D_84386860 = 0x84386860; // type:u8 +D_84386868 = 0x84386868; // type:u8 +D_8438686C = 0x8438686C; // type:u8 +D_84386870 = 0x84386870; // type:u8 +D_84386874 = 0x84386874; // type:u8 +D_84386878 = 0x84386878; // type:u8 +D_8438687C = 0x8438687C; // type:u8 +D_84386880 = 0x84386880; // type:u8 +D_84386884 = 0x84386884; // type:u8 +D_8438688C = 0x8438688C; // type:u8 +D_84386894 = 0x84386894; // type:u8 +D_84386898 = 0x84386898; // type:u8 +D_8438689C = 0x8438689C; // type:u8 +D_843868A0 = 0x843868A0; // type:u8 +D_843868A4 = 0x843868A4; // type:u8 +D_843868A8 = 0x843868A8; // type:u8 +D_843868AC = 0x843868AC; // type:u8 +D_843868B0 = 0x843868B0; // type:u8 +D_843868B4 = 0x843868B4; // type:u8 +D_843868B8 = 0x843868B8; // type:u8 +D_843868BC = 0x843868BC; // type:u8 +D_843868C0 = 0x843868C0; // type:u8 +D_843868C8 = 0x843868C8; // type:u8 +D_843868CC = 0x843868CC; // type:u8 +D_843868D0 = 0x843868D0; // type:u8 +D_843868D4 = 0x843868D4; // type:u8 +D_843868D8 = 0x843868D8; // type:u8 +D_843868DC = 0x843868DC; // type:u8 +D_843868E0 = 0x843868E0; // type:u8 +D_843868E4 = 0x843868E4; // type:u8 +D_843868E8 = 0x843868E8; // type:u8 +D_843868EC = 0x843868EC; // type:u8 +D_843868F4 = 0x843868F4; // type:u8 +D_843868F8 = 0x843868F8; // type:u8 +D_843868FC = 0x843868FC; // type:u8 +D_84386900 = 0x84386900; // type:u8 +D_84386904 = 0x84386904; // type:u8 +D_84386908 = 0x84386908; // type:u8 +D_8438690C = 0x8438690C; // type:u8 +D_84386910 = 0x84386910; // type:u8 +D_84386914 = 0x84386914; // type:u8 +D_84386918 = 0x84386918; // type:u8 +D_84386920 = 0x84386920; // type:u8 +D_84386924 = 0x84386924; // type:u8 +D_84386928 = 0x84386928; // type:u8 +D_8438692C = 0x8438692C; // type:u8 +D_84386930 = 0x84386930; // type:u8 +D_84386934 = 0x84386934; // type:u8 +D_84386938 = 0x84386938; // type:u8 +D_8438693C = 0x8438693C; // type:u8 +D_84386940 = 0x84386940; // type:u8 +D_84386944 = 0x84386944; // type:u8 +D_84386948 = 0x84386948; // type:u8 +D_8438694C = 0x8438694C; // type:u8 +D_84386950 = 0x84386950; // type:u8 +D_84386954 = 0x84386954; // type:u8 +D_84386958 = 0x84386958; // type:u8 +D_8438695C = 0x8438695C; // type:u8 +D_84386960 = 0x84386960; // type:u8 +D_84386964 = 0x84386964; // type:u8 +D_84386968 = 0x84386968; // type:u8 +D_84386970 = 0x84386970; // type:u8 +D_84386974 = 0x84386974; // type:u8 +D_84386978 = 0x84386978; // type:u8 +D_8438697C = 0x8438697C; // type:u8 +D_84386980 = 0x84386980; // type:u8 +D_84386988 = 0x84386988; // type:u8 +D_8438698C = 0x8438698C; // type:u8 +D_84386990 = 0x84386990; // type:u8 +D_84386994 = 0x84386994; // type:u8 +D_8438699C = 0x8438699C; // type:u8 +D_843869A0 = 0x843869A0; // type:u8 +D_843869A8 = 0x843869A8; // type:u8 +D_843869AC = 0x843869AC; // type:u8 +D_843869B0 = 0x843869B0; // type:u8 +D_843869B4 = 0x843869B4; // type:u8 +D_843869B8 = 0x843869B8; // type:u8 +D_843869BC = 0x843869BC; // type:u8 +D_843869C0 = 0x843869C0; // type:u8 +D_843869C4 = 0x843869C4; // type:u8 +D_843869C8 = 0x843869C8; // type:u8 +D_843869D0 = 0x843869D0; // type:u8 +D_843869D4 = 0x843869D4; // type:u8 +D_843869D8 = 0x843869D8; // type:u8 +D_843869DC = 0x843869DC; // type:u8 +D_843869E0 = 0x843869E0; // type:u8 +D_843869E8 = 0x843869E8; // type:u8 +D_843869EC = 0x843869EC; // type:u8 +D_843869F0 = 0x843869F0; // type:u8 +D_843869F8 = 0x843869F8; // type:u8 +D_843869FC = 0x843869FC; // type:u8 +D_84386A00 = 0x84386A00; // type:u8 +D_84386A04 = 0x84386A04; // type:u8 +D_84386A08 = 0x84386A08; // type:u8 +D_84386A0C = 0x84386A0C; // type:u8 +D_84386A10 = 0x84386A10; // type:u8 +D_84386A14 = 0x84386A14; // type:u8 +D_84386A18 = 0x84386A18; // type:u8 +D_84386A1C = 0x84386A1C; // type:u8 +D_84386A20 = 0x84386A20; // type:u8 +D_84386A24 = 0x84386A24; // type:u8 +D_84386A28 = 0x84386A28; // type:u8 +D_84386A2C = 0x84386A2C; // type:u8 +D_84386A30 = 0x84386A30; // type:u8 +D_84386A38 = 0x84386A38; // type:u8 +D_84386A3C = 0x84386A3C; // type:u8 +D_84386A40 = 0x84386A40; // type:u8 +D_84386A44 = 0x84386A44; // type:u8 +D_84386A48 = 0x84386A48; // type:u8 +D_84386A4C = 0x84386A4C; // type:u8 +D_84386A50 = 0x84386A50; // type:u8 +D_84386A5C = 0x84386A5C; // type:u8 +D_84386A60 = 0x84386A60; // type:u8 +D_84386A64 = 0x84386A64; // type:u8 +D_84386A68 = 0x84386A68; // type:u8 +D_84386A6C = 0x84386A6C; // type:u8 +D_84386A70 = 0x84386A70; // type:u8 +D_84386A74 = 0x84386A74; // type:u8 +D_84386A78 = 0x84386A78; // type:u8 +D_84386A7C = 0x84386A7C; // type:u8 +D_84386A80 = 0x84386A80; // type:u8 +D_84386A84 = 0x84386A84; // type:u8 +D_84386A88 = 0x84386A88; // type:u8 +D_84386A8C = 0x84386A8C; // type:u8 +D_84386A90 = 0x84386A90; // type:u8 +D_84386A94 = 0x84386A94; // type:u8 +D_84386A98 = 0x84386A98; // type:u8 +D_84386A9C = 0x84386A9C; // type:u8 +D_84386AA0 = 0x84386AA0; // type:u8 +D_84386AA4 = 0x84386AA4; // type:u8 +D_84386AA8 = 0x84386AA8; // type:u8 +D_84386AAC = 0x84386AAC; // type:u8 +D_84386AB0 = 0x84386AB0; // type:u8 +D_84386AB4 = 0x84386AB4; // type:u8 +D_84386AB8 = 0x84386AB8; // type:u8 +D_84386ABC = 0x84386ABC; // type:u8 +D_84386AC0 = 0x84386AC0; // type:u8 +D_84386AC4 = 0x84386AC4; // type:u8 +D_84386AC8 = 0x84386AC8; // type:u8 +D_84386ACC = 0x84386ACC; // type:u8 +D_84386AD0 = 0x84386AD0; // type:u8 +D_84386AD4 = 0x84386AD4; // type:u8 +D_84386AD8 = 0x84386AD8; // type:u8 +D_84386ADC = 0x84386ADC; // type:u8 +D_84386AE0 = 0x84386AE0; // type:u8 +D_84386AE4 = 0x84386AE4; // type:u8 +D_84386AE8 = 0x84386AE8; // type:u8 +D_84386AEC = 0x84386AEC; // type:u8 +D_84386AF0 = 0x84386AF0; // type:u8 +D_84386AF4 = 0x84386AF4; // type:u8 +D_84386AF8 = 0x84386AF8; // type:u8 +D_84386AFC = 0x84386AFC; // type:u8 +D_84386B00 = 0x84386B00; // type:u8 +D_84386B04 = 0x84386B04; // type:u8 +D_84386B08 = 0x84386B08; // type:u8 +D_84386B0C = 0x84386B0C; // type:u8 +D_84386B10 = 0x84386B10; // type:u8 +D_84386B14 = 0x84386B14; // type:u8 +D_84386B18 = 0x84386B18; // type:u8 +D_84386B1C = 0x84386B1C; // type:u8 +D_84386B20 = 0x84386B20; // type:u8 +D_84386B24 = 0x84386B24; // type:u8 +D_84386B28 = 0x84386B28; // type:u8 +D_84386B2C = 0x84386B2C; // type:u8 +D_84386B30 = 0x84386B30; // type:u8 +D_84386B34 = 0x84386B34; // type:u8 +D_84386B38 = 0x84386B38; // type:u8 +D_84386B3C = 0x84386B3C; // type:u8 +D_84386B40 = 0x84386B40; // type:u8 +D_84386B44 = 0x84386B44; // type:u8 +D_84386B48 = 0x84386B48; // type:u8 +D_84386B4C = 0x84386B4C; // type:u8 +D_84386B50 = 0x84386B50; // type:u8 +D_84386B54 = 0x84386B54; // type:u8 +D_84386B58 = 0x84386B58; // type:u8 +D_84386B5C = 0x84386B5C; // type:u8 +D_84386B60 = 0x84386B60; // type:u8 +D_84386B64 = 0x84386B64; // type:u8 +D_84386B68 = 0x84386B68; // type:u8 +D_84386B6C = 0x84386B6C; // type:u8 +D_84386B70 = 0x84386B70; // type:u8 +D_84386B74 = 0x84386B74; // type:u8 +D_84386B78 = 0x84386B78; // type:u8 +D_84386B7C = 0x84386B7C; // type:u8 +D_84386B80 = 0x84386B80; // type:u8 +D_84386B84 = 0x84386B84; // type:u8 +D_84386B88 = 0x84386B88; // type:u8 +D_84386B8C = 0x84386B8C; // type:u8 +D_84386B90 = 0x84386B90; // type:u8 +D_84386B94 = 0x84386B94; // type:u8 +D_84386B98 = 0x84386B98; // type:u8 +D_84386B9C = 0x84386B9C; // type:u8 +D_84386BA0 = 0x84386BA0; // type:u8 +D_84386BA4 = 0x84386BA4; // type:u8 +D_84386BA8 = 0x84386BA8; // type:u8 +D_84386BAC = 0x84386BAC; // type:u8 +D_84386BB0 = 0x84386BB0; // type:u8 +D_84386BB4 = 0x84386BB4; // type:u8 +D_84386BB8 = 0x84386BB8; // type:u8 +D_84386BBC = 0x84386BBC; // type:u8 +D_84386BC4 = 0x84386BC4; // type:u8 +D_84386BC8 = 0x84386BC8; // type:u8 +D_84386BD0 = 0x84386BD0; // type:u8 +D_84386BD4 = 0x84386BD4; // type:u8 +D_84386BD8 = 0x84386BD8; // type:u8 +D_84386BE0 = 0x84386BE0; // type:u8 +D_84386BE4 = 0x84386BE4; // type:u8 +D_84386BE8 = 0x84386BE8; // type:u8 +D_84386BEC = 0x84386BEC; // type:u8 +D_84386BF0 = 0x84386BF0; // type:u8 +D_84386C00 = 0x84386C00; // type:u8 +D_84386C04 = 0x84386C04; // type:u8 +D_84386C08 = 0x84386C08; // type:u8 +D_84386C0C = 0x84386C0C; // type:u8 +D_84386C10 = 0x84386C10; // type:u8 +D_84386C14 = 0x84386C14; // type:u8 +D_84386C18 = 0x84386C18; // type:u8 +D_84386C1C = 0x84386C1C; // type:u8 +D_84386C20 = 0x84386C20; // type:u8 +D_84386C24 = 0x84386C24; // type:u8 +D_84386C28 = 0x84386C28; // type:u8 +D_84386C34 = 0x84386C34; // type:u8 +D_84386C38 = 0x84386C38; // type:u8 +D_84386C3C = 0x84386C3C; // type:u8 +D_84386C40 = 0x84386C40; // type:u8 +D_84386C44 = 0x84386C44; // type:u8 +D_84386C48 = 0x84386C48; // type:u8 +D_84386C4C = 0x84386C4C; // type:u8 +D_84386C50 = 0x84386C50; // type:u8 +D_84386C54 = 0x84386C54; // type:u8 +D_84386C58 = 0x84386C58; // type:u8 +D_84386C5C = 0x84386C5C; // type:u8 +D_84386C64 = 0x84386C64; // type:u8 +D_84386C68 = 0x84386C68; // type:u8 +D_84386C6C = 0x84386C6C; // type:u8 +D_84386C70 = 0x84386C70; // type:u8 +D_84386C78 = 0x84386C78; // type:u8 +D_84386C7C = 0x84386C7C; // type:u8 +D_84386C80 = 0x84386C80; // type:u8 +D_84386C84 = 0x84386C84; // type:u8 +D_84386C88 = 0x84386C88; // type:u8 +D_84386C8C = 0x84386C8C; // type:u8 +D_84386C90 = 0x84386C90; // type:u8 +D_84386C94 = 0x84386C94; // type:u8 +D_84386C98 = 0x84386C98; // type:u8 +D_84386C9C = 0x84386C9C; // type:u8 +D_84386CA0 = 0x84386CA0; // type:u8 +D_84386CA4 = 0x84386CA4; // type:u8 +D_84386CA8 = 0x84386CA8; // type:u8 +D_84386CAC = 0x84386CAC; // type:u8 +D_84386CB0 = 0x84386CB0; // type:u8 +D_84386CB4 = 0x84386CB4; // type:u8 +D_84386CB8 = 0x84386CB8; // type:u8 +D_84386CBC = 0x84386CBC; // type:u8 +D_84386CC0 = 0x84386CC0; // type:u8 +D_84386CC8 = 0x84386CC8; // type:u8 +D_84386CCC = 0x84386CCC; // type:u8 +D_84386CD0 = 0x84386CD0; // type:u8 +D_84386CD4 = 0x84386CD4; // type:u8 +D_84386CD8 = 0x84386CD8; // type:u8 +D_84386CDC = 0x84386CDC; // type:u8 +D_84386CE0 = 0x84386CE0; // type:u8 +D_84386CE4 = 0x84386CE4; // type:u8 +D_84386CE8 = 0x84386CE8; // type:u8 +D_84386CEC = 0x84386CEC; // type:u8 +D_84386CF0 = 0x84386CF0; // type:u8 +D_84386CF4 = 0x84386CF4; // type:u8 +D_84386CF8 = 0x84386CF8; // type:u8 +D_84386CFC = 0x84386CFC; // type:u8 +D_84386D00 = 0x84386D00; // type:u8 +D_84386D04 = 0x84386D04; // type:u8 +D_84386D08 = 0x84386D08; // type:u8 +D_84386D0C = 0x84386D0C; // type:u8 +D_84386D10 = 0x84386D10; // type:u8 +D_84386D14 = 0x84386D14; // type:u8 +D_84386D18 = 0x84386D18; // type:u8 +D_84386D1C = 0x84386D1C; // type:u8 +D_84386D24 = 0x84386D24; // type:u8 +D_84386D2C = 0x84386D2C; // type:u8 +D_84386D30 = 0x84386D30; // type:u8 +D_84386D34 = 0x84386D34; // type:u8 +D_84386D38 = 0x84386D38; // type:u8 +D_84386D3C = 0x84386D3C; // type:u8 +D_84386D40 = 0x84386D40; // type:u8 +D_8140E628 = 0x8140E628; // size:0x8C +D_8140E720 = 0x8140E720; // size:0x4 +D_8140E724 = 0x8140E724; // size:0x4 +D_8140E728 = 0x8140E728; // size:0x4 +D_8140E72C = 0x8140E72C; // size:0x4 +D_84385E40 = 0x84385E40; // size:0x390 +D_843861D0 = 0x843861D0; // size:0x2B0 +D_8439037A = 0x8439037A; // size:0x2 +D_8439037C = 0x8439037C; // size:0x2 +D_8439037E = 0x8439037E; // size:0x2 +D_84390380 = 0x84390380; // size:0x2 +D_84390382 = 0x84390382; // size:0x2 +D_84390384 = 0x84390384; // size:0x2 +D_84390386 = 0x84390386; // size:0x2 +D_84390388 = 0x84390388; // size:0x2 +D_8439038A = 0x8439038A; // size:0x2 +D_8439038C = 0x8439038C; // size:0x2 +D_8439038E = 0x8439038E; // size:0x2 +D_84390390 = 0x84390390; // size:0x2 +D_84390392 = 0x84390392; // size:0x2 +D_84390394 = 0x84390394; // size:0x2 +D_84390396 = 0x84390396; // size:0x2 +D_84390398 = 0x84390398; // size:0x2 +D_8439039A = 0x8439039A; // size:0x2 +D_8439039C = 0x8439039C; // size:0x2 +D_8439039E = 0x8439039E; // size:0x2 +D_843903A0 = 0x843903A0; // size:0x2 +func_8432F998 = 0x8432F998; // type:func +func_843378CC = 0x843378CC; // type:func +func_8432F9A0 = 0x8432F9A0; // type:func +D_843920C0 = 0x843920C0; // size:0x400 +func_8433765C = 0x8433765C; // type:func +func_84337664 = 0x84337664; // type:func +func_843593C8 = 0x843593C8; // type:func +D_84397610 = 0x84397610; // size:0x38 +D_84397648 = 0x84397648; // size:0x1900 +D_843951D0 = 0x843951D0; // size:0x2410 +D_8439CA60 = 0x8439CA60; // size:0x1C14 +D_843C5568 = 0x843C5568; // size:0xB38 +D_843C60C0 = 0x843C60C0; // size:0x28 +D_843C60F0 = 0x843C60F0; // size:0x48 +D_843C5310 = 0x843C5310; // size:0x240 \ No newline at end of file diff --git a/linker_scripts/us/symbol_addrs_code.txt b/linker_scripts/us/symbol_addrs_code.txt index 85921d1..a1a6fa2 100644 --- a/linker_scripts/us/symbol_addrs_code.txt +++ b/linker_scripts/us/symbol_addrs_code.txt @@ -7080,7 +7080,7 @@ func_84359348 = 0x84359348; // type:func func_84359380 = 0x84359380; // type:func func_843593B0 = 0x843593B0; // type:func func_843593B8 = 0x843593B8; // type:func -func_843593C0 = 0x843593C0; // type:func +func_843593C0 = 0x843593C0; // type:func size:0x8 func_843593D0 = 0x843593D0; // type:func func_843593F0 = 0x843593F0; // type:func func_84359410 = 0x84359410; // type:func diff --git a/linker_scripts/us/undefined_syms.ld b/linker_scripts/us/undefined_syms.ld index 67cd634..53b1fa4 100644 --- a/linker_scripts/us/undefined_syms.ld +++ b/linker_scripts/us/undefined_syms.ld @@ -514,3 +514,79 @@ D_8C200920 = 0x8C200920; D_8C201070 = 0x8C201070; D_8C2011C4 = 0x8C2011C4; D_80070F84 = 0x80070F84; +D_3008380 = 0x3008380; +D_3008400 = 0x3008400; +D_3008480 = 0x3008480; +D_3008500 = 0x3008500; +D_3008580 = 0x3008580; +D_3008600 = 0x3008600; +D_3008680 = 0x3008680; +D_3008700 = 0x3008700; +D_3000470 = 0x3000470; +D_3001F70 = 0x3001F70; +D_30092C0 = 0x30092C0; +D_3009560 = 0x3009560; +D_3008280 = 0x3008280; +D_3006170 = 0x3006170; +D_30061D0 = 0x30061D0; +D_3006230 = 0x3006230; +D_1003DB0 = 0x1003DB0; +D_1003E50 = 0x1003E50; +D_1003EA0 = 0x1003EA0; +D_1003EC8 = 0x1003EC8; +D_1003EF0 = 0x1003EF0; +D_1003DB0 = 0x1003DB0; +D_1003E50 = 0x1003E50; +D_1003EA0 = 0x1003EA0; +D_1003EC8 = 0x1003EC8; +D_1003EF0 = 0x1003EF0; +D_300B870 = 0x300B870; +D_3008C00 = 0x3008C00; +D_3008D80 = 0x3008D80; +D_3008E40 = 0x3008E40; +D_3008FC0 = 0x3008FC0; +D_3009080 = 0x3009080; +D_3009200 = 0x3009200; +D_3008780 = 0x3008780; +D_3008900 = 0x3008900; +D_30089C0 = 0x30089C0; +D_3008B40 = 0x3008B40; +D_3006290 = 0x3006290; +D_3006450 = 0x3006450; +D_3006530 = 0x3006530; +D_30066F0 = 0x30066F0; +D_30067D0 = 0x30067D0; +D_3006990 = 0x3006990; +D_3006A70 = 0x3006A70; +D_3006C30 = 0x3006C30; +D_300B630 = 0x300B630; +D_300A1F0 = 0x300A1F0; +D_30096B0 = 0x30096B0; +D_300AAF0 = 0x300AAF0; +D_300A8B0 = 0x300A8B0; +D_300B3F0 = 0x300B3F0; +D_3009FB0 = 0x3009FB0; +D_30098F0 = 0x30098F0; +D_300A430 = 0x300A430; +D_300B1B0 = 0x300B1B0; +D_300AF70 = 0x300AF70; +D_300A670 = 0x300A670; +D_3009D70 = 0x3009D70; +D_300AD30 = 0x300AD30; +D_3009B30 = 0x3009B30; +D_3006D10 = 0x3006D10; +D_3007010 = 0x3007010; +D_3007310 = 0x3007310; +D_3007610 = 0x3007610; +D_3007A78 = 0x3007A78; +D_3007EB0 = 0x3007EB0; +D_3007910 = 0x3007910; +D_3008018 = 0x3008018; +D_3007BE0 = 0x3007BE0; +D_3007D48 = 0x3007D48; +D_3007A78 = 0x3007A78; +D_3007EB0 = 0x3007EB0; +D_3007910 = 0x3007910; +D_3008018 = 0x3008018; +D_3007BE0 = 0x3007BE0; +D_3007D48 = 0x3007D48; diff --git a/requirements.txt b/requirements.txt index 8546f01..a22b746 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,4 +13,4 @@ splat64[mips]==0.25.0 mapfile-parser>=2.4.0,<3.0.0 libyaz0 ipl3checksum>=1.2.0,<2.0.0 -spimdisasm>=1.16.3,<2.0.0 +git+https://github.com/Decompollaborate/spimdisasm.git@fe1338434c99240eb4adca0b7860edc12b847565 diff --git a/src/11BA0.h b/src/11BA0.h index 59db064..10ba723 100644 --- a/src/11BA0.h +++ b/src/11BA0.h @@ -58,5 +58,7 @@ void func_80011DAC(unk_D_86002F34_00C* arg0, s16 arg1, s16 arg2, s16 arg3, s16 a void func_80011E68(unk_D_86002F34_00C* arg0, f32 arg1, f32 arg2, f32 arg3); void func_80011EB4(unk_D_86002F34_00C* arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, s32 arg7); void func_80011FC8(unk_D_86002F34_00C* arg0, s16 arg1, s16 arg2, u8 arg3, u8 arg4, u8 arg5); +void func_80012044(unk_D_86002F34_00C*, s32, s32, s32, u32); void func_80012094(GraphNode* arg0, GraphNode* arg1); + #endif // _11BA0_H_ diff --git a/src/19840.h b/src/19840.h index 67a617d..b2601bb 100644 --- a/src/19840.h +++ b/src/19840.h @@ -5,11 +5,7 @@ #include "src/3FB0.h" #include "src/F420.h" #include "src/1C720.h" - -typedef struct arg1_func_80019420 { - /* 0x00 */ s8 unk_00; - /* 0x04 */ void* unk_04; -} arg1_func_80019420; // size = 0x8 +#include "src/29BA0.h" typedef struct unk_func_80019600 { /* 0x00 */ s16 unk_00; diff --git a/src/22630.c b/src/22630.c index eba39fc..f25fe0d 100644 --- a/src/22630.c +++ b/src/22630.c @@ -254,7 +254,7 @@ u32 func_80022170(s32 arg0, s32 arg1, u16 arg2, u16 arg3, u16 arg4) { break; case 5: - sp24 = D_80070F84[arg1].unk_0A; + sp24 = D_80070F84[arg1].unk_0A[0]; break; } diff --git a/src/22630.h b/src/22630.h index c349bd7..ca6e6fd 100644 --- a/src/22630.h +++ b/src/22630.h @@ -8,13 +8,16 @@ typedef struct unk_D_80070F84 { /* 0x00 */ u8 unk_00; - /* 0x04 */ char unk01[0x4]; + /* 0x01 */ u8 unk_01; + /* 0x02 */ u8 unk_02; + /* 0x03 */ u8 unk_03; + /* 0x04 */ u8 unk_04; /* 0x05 */ u8 unk_05; /* 0x06 */ u8 unk_06; /* 0x07 */ u8 unk_07; /* 0x08 */ u8 unk_08; /* 0x09 */ u8 unk_09; - /* 0x0A */ u8 unk_0A; + /* 0x0A */ u8 unk_0A[1]; /* 0x0B */ char unk0B[0x4]; /* 0x0F */ u8 unk_0F[1]; /* 0x10 */ char unk10[0x3]; diff --git a/src/29BA0.h b/src/29BA0.h index 6bc50e3..e951142 100644 --- a/src/29BA0.h +++ b/src/29BA0.h @@ -6,6 +6,12 @@ #include "src/controller.h" #include "PR/leo.h" +typedef struct arg1_func_80019420 { + /* 0x00 */ s8 unk_00; + /* 0x02 */ s16 unk_02; + /* 0x04 */ void* unk_04; +} arg1_func_80019420; // size = 0x8 + typedef struct unk_D_800AE520 { /* 0x00 */ s16 unk_00; /* 0x02 */ s16 fragment_id; @@ -74,8 +80,7 @@ typedef struct unk_D_800AE540_0004 { /* 0x008 */ char unk_008[4]; /* 0x00C */ char unk00C[0xC]; /* 0x018 */ s32 unk_018; - /* 0x01C */ unk_func_80026268_arg0 unk_01C[1]; - /* 0x070 */ char unk070[0x1A4]; + /* 0x01C */ unk_func_80026268_arg0 unk_01C[6]; /* 0x214 */ unk_D_800AE540_0874* unk_214; /* 0x218 */ char unk218[0x4]; } unk_D_800AE540_0004; // size = 0x21C @@ -83,17 +88,17 @@ typedef struct unk_D_800AE540_0004 { typedef struct unk_D_800AE540_1194 { /* 0x00 */ u8 unk_00; /* 0x01 */ u8 unk_01; - /* 0x02 */ u16 unk_02; - /* 0x04 */ s32 unk_04; + /* 0x02 */ s16 unk_02; + /* 0x04 */ unk_D_800AE540_0004* unk_04; /* 0x04 */ unk_D_800AE540_0004* unk_08[2]; - /* 0x04 */ char unk10[0x4]; - /* 0x04 */ s32 unk_14; - /* 0x04 */ char unk18[0x4]; + /* 0x04 */ s32 unk_10; + /* 0x04 */ unk_D_86002F58_004_000_004* unk_14; + /* 0x04 */ unk_D_86002F58_004_000_004* unk_18; /* 0x1C */ u8 unk_1C; /* 0x1D */ u8 unk_1D; /* 0x1E */ u8 unk_1E; /* 0x20 */ s32 unk_20; - /* 0x24 */ char unk24[0x4]; + /* 0x24 */ arg1_func_80019420* unk_24; } unk_D_800AE540_1194; // size = 0x28 typedef struct unk_D_800AE540 { diff --git a/src/2E460.c b/src/2E460.c index 3843533..843ecb4 100644 --- a/src/2E460.c +++ b/src/2E460.c @@ -433,7 +433,7 @@ s32 func_8002ECDC(unk_func_80026268_arg0* arg0) { } ret_func_8002ED08* func_8002ED08(s32 arg0) { - if ((arg0 <= 0) || (arg0 >= 0xA6)) { + if ((arg0 <= 0) || (arg0 > 165)) { return NULL; } return &D_80072338[arg0 - 1]; diff --git a/src/30640.c b/src/30640.c index 093691b..41b25ce 100644 --- a/src/30640.c +++ b/src/30640.c @@ -1,5 +1,5 @@ #include "30640.h" -#include "include/libc/math.h" +#include "include/math.h" #include "src/11BA0.h" #include "src/12D80.h" #include "src/17300.h" diff --git a/src/30640.h b/src/30640.h index 9523909..11cda08 100644 --- a/src/30640.h +++ b/src/30640.h @@ -116,6 +116,9 @@ u16* func_800318AC(void); void func_800318B8(void); s32 func_800318C4(unk_D_83403C60*); f32 func_80031A6C(f32); +void func_80031A94(f32, f32, f32, f32, f32, f32, f32*, f32*, f32*); +void func_80031B04(f32*, f32*, f32*); +void func_80031C6C(Mtx*, f32, f32, f32, f32, f32, f32); void func_80031EF4(MtxF*, MtxF*); void func_80032034(MtxF* arg0, Vec3f* arg1); diff --git a/src/32D10.h b/src/32D10.h index 83a63b0..1316418 100644 --- a/src/32D10.h +++ b/src/32D10.h @@ -3,10 +3,15 @@ #include "global.h" -void func_80032110(u8, s16); -void func_80032244(u8, s16); -void func_8003260C(unk_D_86002F58_004_000*); -void func_80032670(u32, u32); -void func_80032738(u32, u32); +void func_80032110(u8 arg0, s16 arg1); +void func_80032244(u8 arg0, s16 arg1); +void func_80032570(void); +s32 func_800325AC(void); +u8 func_800325B4(void); +s16 func_800325E0(void); +void func_8003260C(unk_D_86002F58_004_000* arg0); +void func_80032670(u32 arg0, u32 arg1); +void func_80032738(u32 arg0, u32 arg1); +void func_800327CC(Gfx*, s32, s32, s32, s32, s32, s32, s32, s32, s32, s32, s32, s32, s32, s32, s32, s32); #endif // _32D10_H_ diff --git a/src/334D0.h b/src/334D0.h index 2fdcd3a..ee2f21a 100644 --- a/src/334D0.h +++ b/src/334D0.h @@ -3,6 +3,8 @@ #include "global.h" +void func_800328D0(s32); +s32 func_800328D8(s32); void func_80032A34(s32); #endif // _334D0_H_ diff --git a/src/3D140.c b/src/3D140.c index 9029fc5..3ec18b5 100644 --- a/src/3D140.c +++ b/src/3D140.c @@ -96,6 +96,7 @@ extern u8 D_80078400; extern u16 D_80078410[1][9]; extern u16 D_80078446[1][9]; extern u16 D_800784EA[1][9]; +extern u32 D_80078544; extern f64 D_8007C7E0; extern f64 D_8007C7E8; extern f64 D_8007C7F0; @@ -111,9 +112,9 @@ extern AudioInfo* lastInfo; extern s32 min_only_one; extern u8 D_800FC825; extern s32 D_800FC828; - extern s32 D_800FCB28; extern s32 D_800FCB2C; +extern u32 D_800FCCF0[10]; typedef struct unk_D_800FCB48 { /* 0x00 */ u16 unk_00[16]; @@ -929,10 +930,10 @@ void func_8003DB84(s32 arg0) { } } - if (D_800FCB18[0]->unk_1C != D_800FCB18[1]->unk_1C) { - if (D_800FCB18[0]->unk_1C != D_800FCB18[1]->unk_1D) { - if ((D_800FCB18[0]->unk_1D != D_800FCB18[1]->unk_1C) && - (D_800FCB18[0]->unk_1D != D_800FCB18[1]->unk_1D)) { + if (D_800FCB18[0]->unk_16[6] != D_800FCB18[1]->unk_16[6]) { + if (D_800FCB18[0]->unk_16[6] != D_800FCB18[1]->unk_16[7]) { + if ((D_800FCB18[0]->unk_16[7] != D_800FCB18[1]->unk_16[6]) && + (D_800FCB18[0]->unk_16[7] != D_800FCB18[1]->unk_16[7])) { D_800FCCB0 = 0; func_800420C0(D_80077E18); return; @@ -1120,7 +1121,13 @@ void func_8003DB84(s32 arg0) { #pragma GLOBAL_ASM("asm/us/nonmatchings/3D140/func_8003F4C0.s") -#pragma GLOBAL_ASM("asm/us/nonmatchings/3D140/func_8003F624.s") +void func_8003F624(u32 arg0) { + D_800FCCF0[D_80078544] = arg0; + D_80078544++; + if (D_80078544 >= 0xA) { + D_80078544--; + } +} #pragma GLOBAL_ASM("asm/us/nonmatchings/3D140/func_8003F660.s") diff --git a/src/3D140.h b/src/3D140.h index 274cee0..b5ffbc0 100644 --- a/src/3D140.h +++ b/src/3D140.h @@ -3,18 +3,66 @@ #include "global.h" +typedef struct unk_D_800FCB18_044 { + /* 0x00 */ u8 unk_00; + /* 0x01 */ u8 unk_01; + /* 0x02 */ u8 unk_02; + /* 0x03 */ u8 unk_03; + /* 0x04 */ u8 unk_04; + /* 0x05 */ u8 unk_05; +} unk_D_800FCB18_044; // size = 0x6 + typedef struct unk_D_800FCB18 { - /* 0x00 */ char pad00[0xC]; + /* 0x00 */ char unk00[0x1]; + /* 0x01 */ u8 unk_01; + /* 0x02 */ char unk02[0x3]; + /* 0x05 */ u8 unk_05; + /* 0x06 */ char unk06[0x5]; + /* 0x0B */ u8 unk_0B; /* 0x0C */ u16 unk_0C; - /* 0x0E */ char pad0E[0x7]; + /* 0x0E */ u16 unk_0E; + /* 0x10 */ u16 unk_10; + /* 0x12 */ u16 unk_12; + /* 0x14 */ u8 unk_14; /* 0x15 */ u8 unk_15; - /* 0x16 */ char pad16[0x6]; - /* 0x1C */ u8 unk_1C; - /* 0x1D */ u8 unk_1D; - /* 0x1E */ char pad1E[0x8]; + /* 0x16 */ u8 unk_16[9]; + /* 0x1F */ u8 unk_1F[4]; + /* 0x23 */ char unk23[0x1]; + /* 0x24 */ u16 unk_24; /* 0x26 */ u8 unk_26; /* 0x28 */ u16 unk_28; -} unk_D_800FCB18; // size >= 0x2C + /* 0x2A */ u16 unk_2A; + /* 0x2C */ u16 unk_2C; + /* 0x2E */ u16 unk_2E; + /* 0x30 */ u16 unk_30; + /* 0x32 */ u8 unk_32[4]; + /* 0x36 */ u16 unk_36; + /* 0x38 */ u16 unk_38; + /* 0x3A */ u16 unk_3A; + /* 0x3C */ u16 unk_3C; + /* 0x3E */ u16 unk_3E; + /* 0x40 */ char unk40[0x4]; + /* 0x44 */ unk_D_800FCB18_044 unk_44; + /* 0x4A */ u8 unk_4A; + /* 0x4B */ u8 unk_4B; + /* 0x4C */ u8 unk_4C; + /* 0x4D */ u8 unk_4D; + /* 0x4E */ u8 unk_4E; + /* 0x4F */ u8 unk_4F; + /* 0x50 */ u8 unk_50; + /* 0x51 */ u8 unk_51; + /* 0x52 */ u8 unk_52; + /* 0x53 */ u8 unk_53; + /* 0x54 */ u16 unk_54; + /* 0x56 */ u8 unk_56; + /* 0x57 */ u8 unk_57; + /* 0x58 */ u8 unk_58; + /* 0x59 */ u8 unk_59; + /* 0x5A */ u8 unk_5A; + /* 0x5B */ u8 unk_5B; + /* 0x5C */ u8 unk_5C[6]; + /* 0x62 */ char unk62[0x2]; +} unk_D_800FCB18; // size = 0x64 typedef struct amConfig { /* 0x00 */ u32 outputRate; @@ -42,8 +90,19 @@ void func_8003D32C(void); s32 func_8003D494(void); s32 func_8003D4A0(s32); void func_8003D68C(s32); +void func_8003D6B0(u8, u8, u8, u8); +void func_8003D828(u8, u8, u8, u8); void func_8003D918(u32 arg0, u32 arg1); void func_8003DB84(s32 arg0); +void func_8003EB40(s32, unk_D_800FCB18*); +void func_8003F1AC(s32); +void func_8003F4C0(s32); +void func_8003F624(u32 arg0); +void func_8003F660(s32); +void func_80040A70(unk_D_800FCB18* arg0, s32 arg1, s32 arg2, s32 arg3); +void func_800414B8(s32); +void func_8004153C(void); +void func_80041688(void); void func_800416BC(void); void func_80041A98(void); void func_80041C70(u32 arg0); @@ -53,5 +112,6 @@ void func_80041DF4(u16 arg0); void func_80041E40(u16 arg0); u32 func_80041EF4(u16* arg0); void func_800420C0(u16* arg0); +void func_80048014(void); #endif // _3D140_H_ diff --git a/src/3FB0.c b/src/3FB0.c index dfb30ad..bce53a3 100644 --- a/src/3FB0.c +++ b/src/3FB0.c @@ -266,7 +266,7 @@ s32 func_80003B04(s16 arg0) { return func_8000CDB8(arg0 << 7); } -void func_80003B30(u8* arg0, u8* arg1, u8* arg2, s32 arg3) { +void func_80003B30(u32 arg0, u32 arg1, u32 arg2, s32 arg3) { s32 var_s0; s32 var_s1; OSMesgQueue* mesq = &D_800A62C0; diff --git a/src/3FB0.h b/src/3FB0.h index c5f7754..9a73fd4 100644 --- a/src/3FB0.h +++ b/src/3FB0.h @@ -95,7 +95,7 @@ void func_80003890(u8* in_header, u8* memory); void func_80003964(u8* arg0, s32 arg1, s32 arg2, s32 arg3); s32 func_80003A14(u8* arg0, s16 arg1, s16 arg2, s32 arg3); s32 func_80003B04(s16 arg0); -void func_80003B30(u8* arg0, u8* arg1, u8* arg2, s32 arg3); +void func_80003B30(u32 arg0, u32 arg1, u32 arg2, s32 arg3); void func_80003BE0(u8* arg0, u8* arg1, u8* arg2); void* func_80003C80(u8* addr, PRESJPEG* arg1, s32 side); s32 func_80003D18(s32 arg0, PERSSZP* arg1, s32 side); diff --git a/src/4BDC0.h b/src/4BDC0.h index a33efe6..5dba1ef 100644 --- a/src/4BDC0.h +++ b/src/4BDC0.h @@ -5,6 +5,7 @@ void func_8004B9C4(s32); s32 func_8004B1CC(s32); +void func_8004BA88(s32, s32); s32 func_8004BC84(s32, u32); u32 func_8004BFB0(void); diff --git a/src/6A40.c b/src/6A40.c index 3feda44..5d5a097 100644 --- a/src/6A40.c +++ b/src/6A40.c @@ -48,7 +48,7 @@ void* func_80005F5C(s32 arg0) { arg0 = ALIGN8(arg0); temp_v0 = (D_800A7428.unk8 - arg0); - ret = 0; + ret = NULL; if (temp_v0 >= (uintptr_t)gDisplayListHead) { D_800A7428.unk8 = temp_v0; ret = temp_v0; diff --git a/src/fragments/24/fragment24_1D7B40.c b/src/fragments/24/fragment24_1D7B40.c index 66ea870..e07484e 100644 --- a/src/fragments/24/fragment24_1D7B40.c +++ b/src/fragments/24/fragment24_1D7B40.c @@ -2806,12 +2806,10 @@ s32 func_88311C64(s32 arg0, s32 arg1) { static unk_D_80070F84 D_8831757C[] = { { 0x06, - { - 0x4E, - 0x54, - 0x4E, - 0x64, - }, + 0x4E, + 0x54, + 0x4E, + 0x64, 0x55, 0x14, 0x02, @@ -2841,12 +2839,10 @@ s32 func_88311C64(s32 arg0, s32 arg1) { }, { 0x0C, - { - 0x3C, - 0x2D, - 0x32, - 0x46, - }, + 0x3C, + 0x2D, + 0x32, + 0x46, 0x50, 0x07, 0x02, @@ -2876,12 +2872,10 @@ s32 func_88311C64(s32 arg0, s32 arg1) { }, { 0x30, - { - 0x3C, - 0x37, - 0x32, - 0x2D, - }, + 0x3C, + 0x37, + 0x32, + 0x2D, 0x28, 0x07, 0x03, @@ -2911,12 +2905,10 @@ s32 func_88311C64(s32 arg0, s32 arg1) { }, { 0x31, - { - 0x46, - 0x41, - 0x3C, - 0x5A, - }, + 0x46, + 0x41, + 0x3C, + 0x5A, 0x5A, 0x07, 0x03, @@ -2946,12 +2938,10 @@ s32 func_88311C64(s32 arg0, s32 arg1) { }, { 0x32, - { - 0x0A, - 0x37, - 0x19, - 0x5F, - }, + 0x0A, + 0x37, + 0x19, + 0x5F, 0x2D, 0x04, 0x04, @@ -2981,12 +2971,10 @@ s32 func_88311C64(s32 arg0, s32 arg1) { }, { 0x33, - { - 0x23, - 0x50, - 0x32, - 0x78, - }, + 0x23, + 0x50, + 0x32, + 0x78, 0x46, 0x04, 0x04, @@ -3016,12 +3004,10 @@ s32 func_88311C64(s32 arg0, s32 arg1) { }, { 0x8D, - { - 0x3C, - 0x73, - 0x69, - 0x50, - }, + 0x3C, + 0x73, + 0x69, + 0x50, 0x46, 0x05, 0x15, @@ -3051,12 +3037,10 @@ s32 func_88311C64(s32 arg0, s32 arg1) { }, { 0x96, - { - 0x6A, - 0x6E, - 0x5A, - 0x82, - }, + 0x6A, + 0x6E, + 0x5A, + 0x82, 0x9A, 0x18, 0x18, @@ -3086,12 +3070,10 @@ s32 func_88311C64(s32 arg0, s32 arg1) { }, { 0x97, - { - 0x64, - 0x64, - 0x64, - 0x64, - }, + 0x64, + 0x64, + 0x64, + 0x64, 0x64, 0x18, 0x18, diff --git a/src/fragments/27/fragment27.c b/src/fragments/27/fragment27.c index 857d30d..be542e7 100644 --- a/src/fragments/27/fragment27.c +++ b/src/fragments/27/fragment27.c @@ -950,7 +950,7 @@ s32 func_88603468(unk_func_88205880_0098_008_058* arg0, s32 arg1, s32 arg2) { s32 sp38; s32 sp34; - sp38 = ((((sp130->unk00[4] * 0x64) / 255) + 2) / 5) * 5; + sp38 = ((((sp130->unk_04 * 0x64) / 255) + 2) / 5) * 5; func_8001F324(sp12C->unk_04.r, sp12C->unk_04.g, sp12C->unk_04.b, sp12C->unk_04.a); func_8001EBE0(8, 0); func_8001F1E8(sp13C + 8, sp138 + 4, func_8002D7C0(NULL, 0, D_8861C518, sp134->unk_00[0] - 1)); diff --git a/src/fragments/28/fragment28_214920.c b/src/fragments/28/fragment28_214920.c index 5760358..333948b 100644 --- a/src/fragments/28/fragment28_214920.c +++ b/src/fragments/28/fragment28_214920.c @@ -6271,16 +6271,16 @@ void func_88804370(void) { u32 sp2C; unk_D_80068BB0* sp28; - sp28 = main_pool_alloc(sizeof(unk_func_80007444_018), 0); + sp28 = main_pool_alloc(sizeof(unk_D_80068BB0), 0); - sp34 = D_88826924->unk_18[0]->unk_08; - D_88826930 = D_88826924->unk_18[0]->unk_08 + 0x25800; - sp30 = D_88826924->unk_18[1]->unk_08; - D_88826934 = D_88826924->unk_18[1]->unk_08 + 0x25800; - sp2C = D_88826924->unk_18[1]->unk_08 + 0x70800; + sp34 = D_88826924->unk_18[0]->img_p; + D_88826930 = D_88826924->unk_18[0]->img_p + 0x25800; + sp30 = D_88826924->unk_18[1]->img_p; + D_88826934 = D_88826924->unk_18[1]->img_p + 0x25800; + sp2C = D_88826924->unk_18[1]->img_p + 0x70800; - D_88826928->unk_18[0] = main_pool_alloc(sizeof(unk_func_80007444_018), 0); - D_88826928->unk_18[1] = main_pool_alloc(sizeof(unk_func_80007444_018), 0); + D_88826928->unk_18[0] = main_pool_alloc(sizeof(unk_D_80068BB0), 0); + D_88826928->unk_18[1] = main_pool_alloc(sizeof(unk_D_80068BB0), 0); func_800062E4(D_88826928->unk_18[0], 0, 2, 0x140, 0xF0, sp34); func_800062E4(D_88826928->unk_18[1], 0, 2, 0x140, 0xF0, sp30); diff --git a/src/fragments/3/fragment3.h b/src/fragments/3/fragment3.h index 58597e9..36da038 100644 --- a/src/fragments/3/fragment3.h +++ b/src/fragments/3/fragment3.h @@ -217,8 +217,8 @@ void func_87901200(void); void func_87901620(void); s32 func_8790168C(void); void func_87901720(unk_D_8140E728* arg0); -void func_87901804(s32 arg0, f32 arg1, Vec3f arg2, func_unk_D_8140E720_008 arg3, unk_D_8140E728_01C* arg4, s16 arg5, u8 arg6, u8 arg7); -void func_879018B0(s32 arg0, s32 arg1, s8 arg2, f32 arg3, Vec3f arg4, func_unk_D_8140E720_008 arg7, unk_D_8140E728_01C* arg8, s16 arg9, u8 argA, u8 argB); +void func_87901804(s32 arg0, f32 arg1, Vec3f arg2, func_unk_D_8140E724_008 arg3, unk_D_8140E728_01C* arg4, s16 arg5, u8 arg6, u8 arg7); +void func_879018B0(s32 arg0, s32 arg1, s8 arg2, f32 arg3, Vec3f arg4, func_unk_D_8140E724_008 arg7, unk_D_8140E728_01C* arg8, s16 arg9, u8 argA, u8 argB); void func_87901958(unk_D_8140E720* arg0, unk_D_8140E728* arg1, s16 arg2); void func_87901A28(unk_D_8140E728* arg0); void func_87901ADC(unk_D_8140E728* arg0); diff --git a/src/fragments/3/fragment3_1189B0.c b/src/fragments/3/fragment3_1189B0.c index e1097f7..b66708a 100644 --- a/src/fragments/3/fragment3_1189B0.c +++ b/src/fragments/3/fragment3_1189B0.c @@ -1,5 +1,5 @@ #include "fragment3.h" -#include "include/libc/math.h" +#include "include/math.h" #include "src/17300.h" #include "src/18140.h" #include "src/1C720.h" diff --git a/src/fragments/3/fragment3_119FB0.c b/src/fragments/3/fragment3_119FB0.c index e9ff221..327d1cc 100644 --- a/src/fragments/3/fragment3_119FB0.c +++ b/src/fragments/3/fragment3_119FB0.c @@ -5,12 +5,12 @@ #include "src/12D80.h" void func_87901620(void) { - D_8140E720 = main_pool_alloc(0xF870, 0); - bzero(D_8140E720, 0xF870); + D_8140E720 = main_pool_alloc(sizeof(unk_D_8140E720) * 300, 0); + bzero(D_8140E720, sizeof(unk_D_8140E720) * 300); D_8140E72C = 0; - D_8140E728 = main_pool_alloc(0x1800, 0); - bzero(D_8140E728, 0x1800); + D_8140E728 = main_pool_alloc(sizeof(unk_D_8140E728) * 128, 0); + bzero(D_8140E728, sizeof(unk_D_8140E728) * 128); D_8140E734 = 0; } @@ -58,7 +58,7 @@ void func_87901720(unk_D_8140E728* arg0) { arg0->unk_26 = arg0->unk_28; } -s32 func_87901738(s32 arg0, s32 arg1, s8 arg2, f32 arg3, Vec3f arg4, Vec3s arg7, func_unk_D_8140E720_008 arg9, +s32 func_87901738(s32 arg0, s32 arg1, s8 arg2, f32 arg3, Vec3f arg4, Vec3s arg7, func_unk_D_8140E724_008 arg9, unk_D_8140E728_01C* argA, s32 argB, u8 argC, s16 argD, u8 argE, u8 argF, u8 arg10) { unk_D_8140E728* temp_v0 = (unk_D_8140E728*)func_8790168C(); @@ -90,7 +90,7 @@ s32 func_87901738(s32 arg0, s32 arg1, s8 arg2, f32 arg3, Vec3f arg4, Vec3s arg7, return (s32)temp_v0; } -void func_87901804(s32 arg0, f32 arg1, Vec3f arg2, func_unk_D_8140E720_008 arg3, unk_D_8140E728_01C* arg4, s16 arg5, +void func_87901804(s32 arg0, f32 arg1, Vec3f arg2, func_unk_D_8140E724_008 arg3, unk_D_8140E728_01C* arg4, s16 arg5, u8 arg6, u8 arg7) { Vec3s sp50; @@ -99,7 +99,7 @@ void func_87901804(s32 arg0, f32 arg1, Vec3f arg2, func_unk_D_8140E720_008 arg3, func_87901738(arg0, 0, 1, arg1, arg2, sp50, arg3, arg4, 0, 0, arg5, arg6, arg7, 0); } -void func_879018B0(s32 arg0, s32 arg1, s8 arg2, f32 arg3, Vec3f arg4, func_unk_D_8140E720_008 arg7, +void func_879018B0(s32 arg0, s32 arg1, s8 arg2, f32 arg3, Vec3f arg4, func_unk_D_8140E724_008 arg7, unk_D_8140E728_01C* arg8, s16 arg9, u8 argA, u8 argB) { Vec3s sp50; @@ -213,7 +213,7 @@ void func_87901C98(void) { gSPMatrix(gDisplayListHead++, D_87906054->unk_24.mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); gSPMatrix(gDisplayListHead++, D_87906054->unk_60.p_mtxf, G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); - D_8140E620 = func_80005F5C(0x5BE0); + D_8140E620 = func_80005F5C(sizeof(unk_D_8140E620)); D_8140E624 = 0; gSPDisplayList(gDisplayListHead++, D_8140DB30); diff --git a/src/fragments/34/fragment34.h b/src/fragments/34/fragment34.h index eb8d1e5..8f8bd8c 100644 --- a/src/fragments/34/fragment34.h +++ b/src/fragments/34/fragment34.h @@ -3,8 +3,13 @@ #include "global.h" -typedef void (*func_unk_D_8140E720_008)(struct unk_D_8140E720*); -typedef void (*func_unk_D_8140E720_00C)(struct unk_D_8140E720*, unk_D_86002F34_00C*); +struct unk_D_8140E720; +struct unk_D_8140E728_01C_004_1; +struct unk_D_84390010; +struct unk_D_8140E724; + +typedef void (*func_unk_D_8140E724_008)(struct unk_D_8140E720*); +typedef void (*func_unk_D_8140E724_00C)(struct unk_D_8140E720*, unk_D_86002F34_00C*); typedef void (*unk_D_8140E728_01C_004_1_04)(struct unk_D_8140E720*, s32, struct unk_D_8140E728_01C_004_1*); typedef void (*unk_D_8140E728_01C_004_1_08)(struct unk_D_8140E720*, s32, struct unk_D_8140E728_01C_004_1*); @@ -24,23 +29,23 @@ typedef struct unk_D_8140E728_01C_004_1 { /* 0x04 */ unk_D_8140E728_01C_004_1_04 unk_04; /* 0x08 */ unk_D_8140E728_01C_004_1_08 unk_08; /* 0x0C */ unk_D_8140E728_01C_00C unk_0C; -} unk_D_8140E728_01C_004_1; // size >= 0x10 +} unk_D_8140E728_01C_004_1; // size = 0x10 typedef union unk_D_8140E728_01C_004 { unk_D_8140E728_01C_004_1* a; - func_unk_D_8140E720_00C func; + func_unk_D_8140E724_00C func; } unk_D_8140E728_01C_004; typedef struct unk_D_8140E728_01C { /* 0x00 */ s32 unk_00; /* unk_04: 1 = a, 3 = func */ /* 0x04 */ unk_D_8140E728_01C_004 unk_04; -} unk_D_8140E728_01C; // size = 0x10 +} unk_D_8140E728_01C; // size = 0x08 typedef struct unk_D_8140E728 { /* 0x00 */ f32 unk_00; /* 0x04 */ Vec3f unk_04; /* 0x10 */ Vec3s unk_10; - /* 0x18 */ func_unk_D_8140E720_008 unk_18; + /* 0x18 */ func_unk_D_8140E724_008 unk_18; /* 0x1C */ unk_D_8140E728_01C* unk_1C; /* 0x20 */ s32 unk_20; /* 0x24 */ u16 unk_24; @@ -54,21 +59,13 @@ typedef struct unk_D_8140E728 { /* 0x2F */ u8 unk_2F; } unk_D_8140E728; // size = 0x30 -typedef struct unk_D_8140E720_014 { - /* 0x00 */ char unk00[0x1D]; - /* 0x1D */ u8 unk_1D; - /* 0x1E */ Vec3s unk_1E; - /* 0x24 */ Vec3f unk_24; - /* 0x30 */ Vec3f unk_30; -} unk_D_8140E720_014; // size >= 0x3C - typedef struct unk_D_8140E720 { /* 0x00 */ struct unk_D_8140E720* next; /* 0x04 */ struct unk_D_8140E720* prev; - /* 0x08 */ func_unk_D_8140E720_008 unk_08; + /* 0x08 */ func_unk_D_8140E724_008 unk_08; /* 0x0C */ unk_D_8140E728_01C* unk_0C; - /* 0x10 */ s32 unk_10; - /* 0x14 */ unk_D_8140E720_014* unk_14; + /* 0x10 */ struct unk_D_84390010* unk_10; + /* 0x14 */ unk_D_86002F58_004_000* unk_14; /* 0x18 */ u32 unk_18; /* 0x1C */ f32 unk_1C; /* 0x20 */ f32 unk_20; @@ -111,7 +108,7 @@ typedef struct unk_D_8140E720 { /* 0xC7 */ s8 unk_C7; /* 0xC8 */ char unkC8[0x2]; /* 0xCA */ u8 unk_CA; - /* 0xCB */ char unkCB[0x1]; + /* 0xCB */ u8 unk_CB; /* 0xCC */ u8 unk_CC; /* 0xCD */ u8 unk_CD; /* 0xCE */ u8 unk_CE; @@ -119,10 +116,25 @@ typedef struct unk_D_8140E720 { /* 0xD0 */ s8 unk_D0; } unk_D_8140E720; // size = 0xD4 -typedef struct arg1_func_8140213C { - /* 0x00 */ char unk00[0x64]; - /* 0x64 */ MtxF unk_64; -} arg1_func_8140213C; // size >= 0xA4 +typedef void (*func_unk_D_8140E724)(struct unk_D_8140E720*); + +typedef struct unk_D_8140E724 { + /* 0x00 */ func_unk_D_8140E724 unk_00; + /* 0x04 */ unk_D_8140E728_01C* unk_04; + /* 0x08 */ struct unk_D_84390010* unk_08; + /* 0x0C */ s16 unk_0C; + /* 0x0E */ s16 unk_0E; + /* 0x10 */ s16 unk_10; + /* 0x12 */ s16 unk_12; + /* 0x14 */ s8 unk_14; + /* 0x15 */ s8 unk_15; + /* 0x16 */ u8 unk_16; + /* 0x17 */ u8 unk_17; + /* 0x18 */ u8 unk_18; + /* 0x19 */ u8 unk_19; + /* 0x1A */ u8 unk_1A; + /* 0x1B */ u8 unk_1B; +} unk_D_8140E724; // size = 0x1C typedef struct arg1_func_87903D64_014 { /* 0x00 */ s32 unk_00; @@ -132,7 +144,7 @@ typedef struct arg1_func_87903D64_014 { /* 0x10 */ unk_D_86002F34_000_014_010* unk_10; /* 0x14 */ unk_D_86002F34_000_014_010* unk_14; /* 0x18 */ unk_D_86002F34_000_014_010* unk_18; -} arg1_func_87903D64_014; +} arg1_func_87903D64_014; // size = 0x1C // Possibly unk_D_86002F34_alt7, unk_D_86002F34_alt8, // unk_D_86002F34_alt9 or unk_D_86002F34_alt2 @@ -217,10 +229,31 @@ typedef struct arg1_func_81407874 { /* 0x00 */ arg1_func_81407874_014* unk_14; } arg1_func_81407874; // size >= 0x18 +typedef struct unk_D_8140E634_010 { + /* 0x00 */ MtxF unk_00; + /* 0x40 */ Vec3f unk_40; + /* 0x4C */ Vec3f unk_4C; + /* 0x58 */ Vec3f unk_58; + /* 0x64 */ Vec3f unk_64; + /* 0x70 */ s16 unk_70; + /* 0x72 */ s16 unk_72; + /* 0x74 */ char unk74[0x2]; + /* 0x76 */ s16 unk_76; + /* 0x78 */ s16 unk_78; +} unk_D_8140E634_010; // size = 0x7C + typedef struct unk_D_8140E634 { /* 0x00 */ Vec3f unk_00; - /* 0x0C */ char unk0C[0x84]; -} unk_D_8140E634; // size = 0x90 + /* 0x0C */ unk_D_86002F34_00C* unk_0C; + /* 0x10 */ unk_D_8140E634_010 unk_10; +} unk_D_8140E634; // size = 0x8C + +typedef struct unk_D_8140E620 { + /* 0x0000 */ MtxF unk_0000[364]; + /* 0x5B00 */ char unk5B00[0x80]; + /* 0x5B80 */ Mtx unk_5B80; + /* 0x5BC0 */ char unk5BC0[0x20]; +} unk_D_8140E620; // size = 0x5BE0 extern Gfx D_8140DAE0[]; extern Gfx D_8140DB30[]; @@ -263,10 +296,11 @@ extern unk_D_8140E728_01C D_8140E460; extern u8 D_8140E538[]; -extern MtxF* D_8140E620; +extern unk_D_8140E620* D_8140E620; extern s32 D_8140E624; extern s32 D_8140E624; extern unk_D_8140E634 D_8140E628; +extern unk_D_8140E634_010* D_8140E6B4; extern u32 D_8140E6B8; extern s32 D_8140E6BC; extern s32 D_8140E6C0; @@ -291,8 +325,10 @@ extern s32 D_8140E708; extern s32 D_8140E70C; extern s32 D_8140E710; extern unk_D_8140E720* D_8140E720; +extern unk_D_8140E724* D_8140E724; extern unk_D_8140E728* D_8140E728; extern s32 D_8140E72C; +extern s32 D_8140E730; extern s32 D_8140E734; void func_81400020(s32* arg0, s32 arg1); @@ -372,10 +408,10 @@ void func_81401E84(MtxF* arg0, Vec3f arg1, Vec3f arg2, s16 arg3, f32 arg4); void func_81401FC0(Vec3f arg0, Vec3s arg1, f32 arg2); void func_8140203C(Vec3f arg0, Vec3s arg1, f32 arg2); void func_814020B8(Vec3f arg0, Vec3s arg1, f32 arg2, f32 arg3); -void func_8140213C(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg4); -void func_814021A4(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg4, s16 arg5); -void func_81402214(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg4); -void func_8140227C(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg4, s16 arg5); +void func_8140213C(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg4); +void func_814021A4(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg4, s16 arg5); +void func_81402214(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg4); +void func_8140227C(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg4, s16 arg5); void func_814022EC(Vec3f arg0, Vec3s arg3, f32 arg5); void func_8140238C(Vec3f arg0, Vec3f arg3, f32 arg6); @@ -399,6 +435,7 @@ void func_81402E14(u8* texture, s32 fmt, s32 width, s32 height, s32 cms, s32 cmt void func_814030C0(u8* texture, s32 fmt, s32 width, s32 height, s32 cms, s32 cmt, s32 masks, s32 maskt, s32 shifts, s32 shiftt); void func_814032B4(u8* texture, s32 fmt, s32 width, s32 height, s32 cms, s32 cmt, s32 masks, s32 maskt, s32 shifts, s32 shiftt); void func_8140353C(u8* texture, s32 fmt, s32 width, s32 height, s32 cms, s32 cmt, s32 masks, s32 maskt, s32 shifts, s32 shiftt); +void func_81403754(u8* texture, s32 tmem, s32 rtile, s32 fmt, s32 width, s32 height, s32 cms, s32 cmt, s32 masks, s32 maskt, s32 shifts, s32 shiftt); void func_81403A20(u8* texture, s32 width, s32 height); void func_81403A6C(u8* texture, s32 width, s32 height); void func_81403AB8(u8* texture, s32 width, s32 height); @@ -439,12 +476,12 @@ void func_81404ABC(Vec3f arg0, Vec3s arg1, f32 arg2, Vtx* arg3); void func_81404B78(Vec3f arg0, Vec3s arg1, f32 arg3, Vtx* arg4); void func_81404C34(Vec3f arg0, Vec3s arg1, f32 arg2, f32 arg3, Vtx* arg4); void func_81404CF8(Vec3f arg0, Vec3s arg1, f32 arg2, Vtx* arg3); -void func_81404DB4(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3); -void func_81404E4C(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3, s16 arg4); -void func_81404EEC(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3); -void func_81404F84(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3, s16 arg4); -void func_81405024(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3); -void func_814050BC(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3, s16 arg4); +void func_81404DB4(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3); +void func_81404E4C(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3, s16 arg4); +void func_81404EEC(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3); +void func_81404F84(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3, s16 arg4); +void func_81405024(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3); +void func_814050BC(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3, s16 arg4); void func_8140515C(u8* texture, Vtx* vtx, s32 arg2, s32 arg3, s32 width, s32 height); void func_81405308(u8* texture, Vtx* vtx, s32 arg2, s32 arg3, s32 width, s32 height); void func_814054B4(u8* texture, Vtx* vtx, s32 arg2, s32 arg3, s32 width, s32 height); @@ -485,10 +522,10 @@ unk_D_8140E720* func_81407A30(void); void func_81407B04(unk_D_8140E720* arg0); unk_D_8140E720* func_81407B3C(void); unk_D_8140E720* func_81407B5C(u8 arg0); -void func_81407D48(f32 arg0, Vec3f arg1, Vec3s arg2, func_unk_D_8140E720_008 arg3, unk_D_8140E728_01C* arg4, s16 arg5); -void func_81407E30(f32 arg0, Vec3f arg1, Vec3s arg2, func_unk_D_8140E720_008 arg3, unk_D_8140E728_01C* arg4, s16 arg5, s16 arg6); -void func_81407F24(unk_D_86002F58_004_000* arg0, func_unk_D_8140E720_008 arg1, unk_D_8140E728_01C* arg2, s16 arg3, s16 arg4); -void func_81407FC8(unk_D_86002F58_004_000* arg0, func_unk_D_8140E720_008 arg1, unk_D_8140E728_01C* arg2, s16 arg3, s16 arg4, s16 arg5); +void func_81407D48(f32 arg0, Vec3f arg1, Vec3s arg2, func_unk_D_8140E724_008 arg3, unk_D_8140E728_01C* arg4, s16 arg5); +void func_81407E30(f32 arg0, Vec3f arg1, Vec3s arg2, func_unk_D_8140E724_008 arg3, unk_D_8140E728_01C* arg4, s16 arg5, s16 arg6); +void func_81407F24(unk_D_86002F58_004_000* arg0, func_unk_D_8140E724_008 arg1, unk_D_8140E728_01C* arg2, s16 arg3, s16 arg4); +void func_81407FC8(unk_D_86002F58_004_000* arg0, func_unk_D_8140E724_008 arg1, unk_D_8140E728_01C* arg2, s16 arg3, s16 arg4, s16 arg5); s32 func_81408078(void); s32 func_814080EC(void); void func_8140810C(unk_D_8140E720* arg0); @@ -742,7 +779,7 @@ s32 func_8140BF98(unk_D_8140E720* arg0, s16 arg1, s16 arg2); void func_8140BFEC(unk_D_8140E720* arg0, s16 arg1); s32 func_8140C000(unk_D_8140E720* arg0, s16 arg1, s16 arg2); s16 func_8140C038(unk_D_8140E720* arg0); -u8 func_8140C040(unk_D_8140E720* arg0); +s32 func_8140C040(unk_D_8140E720* arg0); u8 func_8140C048(unk_D_8140E720* arg0); s16 func_8140C050(unk_D_8140E720* arg0); s16 func_8140C058(unk_D_8140E720* arg0); @@ -769,6 +806,58 @@ void func_8140C5BC(UNUSED unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) void func_8140C5D0(void); void func_8140C734(void); -void func_8140D5A0(unk_D_8140E720*, u16); + +void func_8140C760(UNUSED unk_D_8140E720* arg0, u8* texture); +void func_8140C78C(unk_D_8140E720* arg0, u8* texture); +void func_8140C7C0(UNUSED unk_D_8140E720* arg0, u8* texture); +void func_8140C7EC(unk_D_8140E720* arg0, u8* texture); +void func_8140C820(UNUSED unk_D_8140E720* arg0, u8* texture); +void func_8140C84C(unk_D_8140E720* arg0, u8* texture); +void func_8140C880(UNUSED unk_D_8140E720* arg0, u8* texture); +void func_8140C8B8(UNUSED unk_D_8140E720* arg0, u8* texture); +void func_8140C8F4(UNUSED unk_D_8140E720* arg0, u8* texture); +void func_8140C930(UNUSED unk_D_8140E720* arg0, u8* texture); +void func_8140C96C(UNUSED unk_D_8140E720* arg0, u8* texture); +void func_8140C9B0(unk_D_8140E720* arg0, u8* texture); +void func_8140C9EC(UNUSED unk_D_8140E720* arg0, u8* texture); +void func_8140CA30(unk_D_8140E720* arg0, u8* texture); +void func_8140CA64(UNUSED unk_D_8140E720* arg0, u8* texture); +void func_8140CA90(UNUSED unk_D_8140E720* arg0, u8* texture); +void func_8140CAC8(UNUSED unk_D_8140E720* arg0, u8* texture); +void func_8140CB04(unk_D_8140E720* arg0, u8* texture); +void func_8140CB38(UNUSED unk_D_8140E720* arg0, u8* texture); +void func_8140CB64(UNUSED unk_D_8140E720* arg0, u8* texture); +void func_8140CB90(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1); +void func_8140CC04(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1); +s32 func_8140CC90(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1); +void func_8140CD80(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1); +void func_8140CDDC(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1); +void func_8140CE68(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1); +void func_8140CED4(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1); +void func_8140CF30(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1); +void func_8140CFBC(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1); +void func_8140D050(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1); +void func_8140D0E4(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1); +void func_8140D170(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1); +void func_8140D1FC(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1); +void func_8140D288(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1); +s32 func_8140D314(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1); +void func_8140D404(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1); +void func_8140D4A8(u8* arg0, u16 arg1); +void func_8140D4E0(u8* arg0, u8* arg1, u16 arg2); +void func_8140D530(unk_D_8140E720* arg0, u16 arg1); +void func_8140D568(unk_D_8140E720* arg0, u16 arg1); +void func_8140D5A0(unk_D_8140E720* arg0, u16 arg1); +void func_8140D5F0(unk_D_8140E720* arg0, s16 arg1); +void func_8140D624(unk_D_8140E720* arg0, s16 arg1); +void func_8140D658(unk_D_8140E720* arg0, s16 arg1); +void func_8140D68C(unk_D_8140E720* arg0, s16 arg1); +void func_8140D6C0(unk_D_8140E720* arg0, s16 arg1); +void func_8140D708(unk_D_8140E720* arg0, s16 arg1); +void func_8140D750(unk_D_8140E720* arg0); +void func_8140D78C(unk_D_8140E720* arg0); +s32 func_8140D7C8(unk_D_8140E720* arg0, u16 arg1, u8 arg2); +s32 func_8140D868(unk_D_8140E720* arg0, u16 arg1, u8 arg2); +s32 func_8140D908(unk_D_8140E720* arg0, u16 arg1, u8 arg2); #endif // _FRAGMENT34_H_ diff --git a/src/fragments/34/fragment34_261F90.c b/src/fragments/34/fragment34_261F90.c index e3a2002..1f13cea 100644 --- a/src/fragments/34/fragment34_261F90.c +++ b/src/fragments/34/fragment34_261F90.c @@ -1,12 +1,13 @@ #include "fragment34.h" -#include "include/libc/math.h" +#include "include/math.h" #include "src/F420.h" #include "src/math_util.h" -MtxF* D_8140E620; +unk_D_8140E620* D_8140E620; s32 D_8140E624; s32 D_8140E624; unk_D_8140E634 D_8140E628; +unk_D_8140E634_010* D_8140E6B4; u32 D_8140E6B8; s32 D_8140E6BC; s32 D_8140E6C0; @@ -30,11 +31,12 @@ s32 D_8140E704; s32 D_8140E708; s32 D_8140E70C; s32 D_8140E710; -s32 pad_D_8140E714[2]; +static s32 pad_D_8140E714[2]; unk_D_8140E720* D_8140E720; -s32 pad_D_8140E724; +unk_D_8140E724* D_8140E724; unk_D_8140E728* D_8140E728; s32 D_8140E72C; +s32 D_8140E730; s32 D_8140E734; void func_81400020(s32* arg0, s32 arg1) { @@ -725,9 +727,9 @@ void func_8140138C(void) { void func_81401394(MtxF* arg0) { if (D_8140E624 < 0x16C) { - func_80010090((MtxF*)((u32)D_8140E620 + (D_8140E624 * sizeof(MtxF))), arg0); + func_80010090(&D_8140E620->unk_0000[D_8140E624], arg0); - gSPMatrix(gDisplayListHead++, ((u32)D_8140E620 + (D_8140E624 * sizeof(MtxF))) & 0x1FFFFFFF, + gSPMatrix(gDisplayListHead++, (u32)&D_8140E620->unk_0000[D_8140E624] & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); D_8140E624++; @@ -1060,31 +1062,31 @@ void func_814020B8(Vec3f arg0, Vec3s arg1, f32 arg2, f32 arg3) { func_81401394(&sp28); } -void func_8140213C(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg4) { +void func_8140213C(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg4) { MtxF sp20; - func_81401ABC(&sp20, &arg0->unk_64, arg1, arg4); + func_81401ABC(&sp20, &arg0->unk_60.mtxf, arg1, arg4); func_81401394(&sp20); } -void func_814021A4(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg4, s16 arg5) { +void func_814021A4(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg4, s16 arg5) { MtxF sp28; - func_81401C04(&sp28, &arg0->unk_64, arg1, arg4, arg5); + func_81401C04(&sp28, &arg0->unk_60.mtxf, arg1, arg4, arg5); func_81401394(&sp28); } -void func_81402214(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg4) { +void func_81402214(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg4) { MtxF sp20; - func_81401B6C(&sp20, &arg0->unk_64, arg1, arg4); + func_81401B6C(&sp20, &arg0->unk_60.mtxf, arg1, arg4); func_81401394(&sp20); } -void func_8140227C(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg4, s16 arg5) { +void func_8140227C(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg4, s16 arg5) { MtxF sp28; - func_81401D50(&sp28, &arg0->unk_64, arg1, arg4, arg5); + func_81401D50(&sp28, &arg0->unk_60.mtxf, arg1, arg4, arg5); func_81401394(&sp28); } diff --git a/src/fragments/34/fragment34_264380.c b/src/fragments/34/fragment34_264380.c index 3bb3c54..7c92532 100644 --- a/src/fragments/34/fragment34_264380.c +++ b/src/fragments/34/fragment34_264380.c @@ -702,42 +702,42 @@ void func_81404CF8(Vec3f arg0, Vec3s arg1, f32 arg2, Vtx* arg3) { gSPDisplayList(gDisplayListHead++, D_8140E3F8); } -void func_81404DB4(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3) { +void func_81404DB4(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3) { func_8140213C(arg0, arg1, arg2); gSPVertex(gDisplayListHead++, arg3, 4, 0); gSPDisplayList(gDisplayListHead++, D_8140E408); } -void func_81404E4C(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3, s16 arg4) { +void func_81404E4C(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3, s16 arg4) { func_814021A4(arg0, arg1, arg2, arg4); gSPVertex(gDisplayListHead++, arg3, 4, 0); gSPDisplayList(gDisplayListHead++, D_8140E408); } -void func_81404EEC(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3) { +void func_81404EEC(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3) { func_81402214(arg0, arg1, arg2); gSPVertex(gDisplayListHead++, arg3, 4, 0); gSPDisplayList(gDisplayListHead++, D_8140E408); } -void func_81404F84(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3, s16 arg4) { +void func_81404F84(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3, s16 arg4) { func_8140227C(arg0, arg1, arg2, arg4); gSPVertex(gDisplayListHead++, arg3, 4, 0); gSPDisplayList(gDisplayListHead++, D_8140E408); } -void func_81405024(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3) { +void func_81405024(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3) { func_8140213C(arg0, arg1, arg2); gSPVertex(gDisplayListHead++, arg3, 3, 0); gSPDisplayList(gDisplayListHead++, D_8140E3F8); } -void func_814050BC(arg1_func_8140213C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3, s16 arg4) { +void func_814050BC(unk_D_86002F34_00C* arg0, Vec3f arg1, f32 arg2, Vtx* arg3, s16 arg4) { func_814021A4(arg0, arg1, arg2, arg4); gSPVertex(gDisplayListHead++, arg3, 3, 0); diff --git a/src/fragments/34/fragment34_269820.c b/src/fragments/34/fragment34_269820.c index 40d67e6..ea46f83 100644 --- a/src/fragments/34/fragment34_269820.c +++ b/src/fragments/34/fragment34_269820.c @@ -110,7 +110,7 @@ unk_D_8140E720* func_81407B5C(u8 arg0) { return sp28; } -unk_D_8140E720* func_81407BE4(f32 arg0, Vec3f arg1, Vec3s arg2, func_unk_D_8140E720_008 arg3, unk_D_8140E728_01C* arg4, +unk_D_8140E720* func_81407BE4(f32 arg0, Vec3f arg1, Vec3s arg2, func_unk_D_8140E724_008 arg3, unk_D_8140E728_01C* arg4, s16 arg5, s16 arg6, s16 arg7) { unk_D_8140E720* sp1C = func_81407B3C(); @@ -131,7 +131,7 @@ unk_D_8140E720* func_81407BE4(f32 arg0, Vec3f arg1, Vec3s arg2, func_unk_D_8140E return sp1C; } -unk_D_8140E720* func_81407C7C(unk_D_86002F58_004_000* arg0, func_unk_D_8140E720_008 arg1, unk_D_8140E728_01C* arg2, +unk_D_8140E720* func_81407C7C(unk_D_86002F58_004_000* arg0, func_unk_D_8140E724_008 arg1, unk_D_8140E728_01C* arg2, s16 arg3, s16 arg4, s16 arg5) { unk_D_8140E720* sp1C = func_81407B3C(); @@ -161,7 +161,7 @@ unk_D_8140E720* func_81407C7C(unk_D_86002F58_004_000* arg0, func_unk_D_8140E720_ return sp1C; } -void func_81407D48(f32 arg0, Vec3f arg1, Vec3s arg2, func_unk_D_8140E720_008 arg3, unk_D_8140E728_01C* arg4, s16 arg5) { +void func_81407D48(f32 arg0, Vec3f arg1, Vec3s arg2, func_unk_D_8140E724_008 arg3, unk_D_8140E728_01C* arg4, s16 arg5) { s32 i; for (i = 0; i < arg5; i++) { @@ -171,7 +171,7 @@ void func_81407D48(f32 arg0, Vec3f arg1, Vec3s arg2, func_unk_D_8140E720_008 arg } } -void func_81407E30(f32 arg0, Vec3f arg1, Vec3s arg2, func_unk_D_8140E720_008 arg3, unk_D_8140E728_01C* arg4, s16 arg5, +void func_81407E30(f32 arg0, Vec3f arg1, Vec3s arg2, func_unk_D_8140E724_008 arg3, unk_D_8140E728_01C* arg4, s16 arg5, s16 arg6) { s32 i; @@ -182,7 +182,7 @@ void func_81407E30(f32 arg0, Vec3f arg1, Vec3s arg2, func_unk_D_8140E720_008 arg } } -void func_81407F24(unk_D_86002F58_004_000* arg0, func_unk_D_8140E720_008 arg1, unk_D_8140E728_01C* arg2, s16 arg3, +void func_81407F24(unk_D_86002F58_004_000* arg0, func_unk_D_8140E724_008 arg1, unk_D_8140E728_01C* arg2, s16 arg3, s16 arg4) { s32 i; @@ -193,7 +193,7 @@ void func_81407F24(unk_D_86002F58_004_000* arg0, func_unk_D_8140E720_008 arg1, u } } -void func_81407FC8(unk_D_86002F58_004_000* arg0, func_unk_D_8140E720_008 arg1, unk_D_8140E728_01C* arg2, s16 arg3, +void func_81407FC8(unk_D_86002F58_004_000* arg0, func_unk_D_8140E724_008 arg1, unk_D_8140E728_01C* arg2, s16 arg3, s16 arg4, s16 arg5) { s32 i; @@ -573,20 +573,20 @@ void func_81408AF0(unk_D_8140E720* arg0) { arg0->unk_2C.z = arg0->unk_68.z + arg0->unk_38.z + arg0->unk_50.z; if (arg0->unk_14 != NULL) { - arg0->unk_14->unk_24.x = arg0->unk_2C.x; - arg0->unk_14->unk_24.y = arg0->unk_2C.y; - arg0->unk_14->unk_24.z = arg0->unk_2C.z; + arg0->unk_14->unk_024.x = arg0->unk_2C.x; + arg0->unk_14->unk_024.y = arg0->unk_2C.y; + arg0->unk_14->unk_024.z = arg0->unk_2C.z; - arg0->unk_14->unk_30.x = arg0->unk_1C; - arg0->unk_14->unk_30.y = arg0->unk_1C; - arg0->unk_14->unk_30.z = arg0->unk_1C; + arg0->unk_14->unk_030.x = arg0->unk_1C; + arg0->unk_14->unk_030.y = arg0->unk_1C; + arg0->unk_14->unk_030.z = arg0->unk_1C; if (func_81408308(arg0, 0x200) != 0) { - arg0->unk_14->unk_1E.x = arg0->unk_94.x; - arg0->unk_14->unk_1E.y = arg0->unk_94.y; - arg0->unk_14->unk_1E.z = arg0->unk_94.z; + arg0->unk_14->unk_01E.x = arg0->unk_94.x; + arg0->unk_14->unk_01E.y = arg0->unk_94.y; + arg0->unk_14->unk_01E.z = arg0->unk_94.z; } - arg0->unk_14->unk_1D = arg0->prim_a; + arg0->unk_14->unk_01D = arg0->prim_a; } } @@ -1880,7 +1880,7 @@ s16 func_8140C038(unk_D_8140E720* arg0) { return arg0->unk_AC; } -u8 func_8140C040(unk_D_8140E720* arg0) { +s32 func_8140C040(unk_D_8140E720* arg0) { return arg0->unk_CE; } diff --git a/src/fragments/34/fragment34_26E6D0.c b/src/fragments/34/fragment34_26E6D0.c index cf793e4..677d8f0 100644 --- a/src/fragments/34/fragment34_26E6D0.c +++ b/src/fragments/34/fragment34_26E6D0.c @@ -124,17 +124,17 @@ void func_8140CB64(UNUSED unk_D_8140E720* arg0, u8* texture) { func_81404024(texture, 64, 64); } -void func_8140CB90(unk_D_8140E720* arg0, arg1_func_8140213C* arg1) { +void func_8140CB90(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) { func_81405B70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->prim_a); func_81404DB4(arg1, arg0->unk_2C, arg0->unk_1C, D_8140E018); } -void func_8140CC04(unk_D_8140E720* arg0, arg1_func_8140213C* arg1) { +void func_8140CC04(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) { func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a); func_81404DB4(arg1, arg0->unk_2C, arg0->unk_1C, D_8140DFD8); } -s32 func_8140CC90(unk_D_8140E720* arg0, UNUSED arg1_func_8140213C* arg1) { +s32 func_8140CC90(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) { gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK); func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a); @@ -143,60 +143,60 @@ s32 func_8140CC90(unk_D_8140E720* arg0, UNUSED arg1_func_8140213C* arg1) { gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); } -void func_8140CD80(unk_D_8140E720* arg0, arg1_func_8140213C* arg1) { +void func_8140CD80(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) { func_81404DB4(arg1, arg0->unk_2C, arg0->unk_1C, D_8140E018); } -void func_8140CDDC(unk_D_8140E720* arg0, arg1_func_8140213C* arg1) { +void func_8140CDDC(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) { func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a); func_81404DB4(arg1, arg0->unk_2C, arg0->unk_1C, D_8140E018); } -void func_8140CE68(unk_D_8140E720* arg0, arg1_func_8140213C* arg1) { +void func_8140CE68(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) { func_81405C04(arg0->prim_a); func_81404E4C(arg1, arg0->unk_2C, arg0->unk_1C, D_8140E108, arg0->unk_94.z); } -void func_8140CED4(unk_D_8140E720* arg0, arg1_func_8140213C* arg1) { +void func_8140CED4(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) { func_81404DB4(arg1, arg0->unk_2C, arg0->unk_1C, D_8140E058); } -void func_8140CF30(unk_D_8140E720* arg0, arg1_func_8140213C* arg1) { +void func_8140CF30(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) { func_81405D38(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a); func_81404DB4(arg1, arg0->unk_2C, arg0->unk_1C, D_8140E018); } -void func_8140CFBC(unk_D_8140E720* arg0, arg1_func_8140213C* arg1) { +void func_8140CFBC(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) { func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a); func_81404E4C(arg1, arg0->unk_2C, arg0->unk_1C, D_8140E018, arg0->unk_94.z); } -void func_8140D050(unk_D_8140E720* arg0, arg1_func_8140213C* arg1) { +void func_8140D050(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) { func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a); func_814050BC(arg1, arg0->unk_2C, arg0->unk_1C, D_8140E0D8, arg0->unk_94.z); } -void func_8140D0E4(unk_D_8140E720* arg0, arg1_func_8140213C* arg1) { +void func_8140D0E4(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) { func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a); func_81404DB4(arg1, arg0->unk_2C, arg0->unk_1C, D_8140E178); } -void func_8140D170(unk_D_8140E720* arg0, arg1_func_8140213C* arg1) { +void func_8140D170(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) { func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a); func_81404DB4(arg1, arg0->unk_2C, arg0->unk_1C, D_8140E1F8); } -void func_8140D1FC(unk_D_8140E720* arg0, arg1_func_8140213C* arg1) { +void func_8140D1FC(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) { func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a); func_81404DB4(arg1, arg0->unk_2C, arg0->unk_1C, D_8140E1B8); } -void func_8140D288(unk_D_8140E720* arg0, arg1_func_8140213C* arg1) { +void func_8140D288(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) { func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a); func_81404DB4(arg1, arg0->unk_2C, arg0->unk_1C, D_8140E2B8); } -s32 func_8140D314(unk_D_8140E720* arg0, UNUSED arg1_func_8140213C* arg1) { +s32 func_8140D314(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) { gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK); func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a); @@ -205,7 +205,7 @@ s32 func_8140D314(unk_D_8140E720* arg0, UNUSED arg1_func_8140213C* arg1) { gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); } -void func_8140D404(unk_D_8140E720* arg0, arg1_func_8140213C* arg1) { +void func_8140D404(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) { func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a); func_81404ABC(arg0->unk_2C, arg0->unk_94, arg0->unk_1C, D_8140E378); } diff --git a/src/fragments/62/fragment62.h b/src/fragments/62/fragment62.h new file mode 100644 index 0000000..c9001b2 --- /dev/null +++ b/src/fragments/62/fragment62.h @@ -0,0 +1,3216 @@ +#ifndef _FRAGMENT62_H_ +#define _FRAGMENT62_H_ + +#include "global.h" +#include "src/29BA0.h" +#include "src/3D140.h" +#include "src/6BC0.h" +#include "src/stage_loader.h" +#include "src/fragments/17/fragment17.h" +#include "src/fragments/34/fragment34.h" + +typedef s32 (*func_D_84390300)(void); +typedef void (*func_D_84390320)(void); + +typedef struct unk_D_84390010_654_09C { + /* 0x00 */ char unk00[0x10]; +} unk_D_84390010_654_09C; // size = 0x10 + +typedef struct unk_D_84390010_654_0AC { + /* 0x00 */ char unk00[0x10]; +} unk_D_84390010_654_0AC; // size = 0x10 + +typedef struct unk_D_84390010_168 { + /* 0x000 */ unk_D_86002F58_004_000 unk_000; + /* 0x168 */ char unk168[0x1]; + /* 0x169 */ u8 unk_169; + /* 0x16A */ s16 unk_16A; + /* 0x16C */ s16 unk_16C; + /* 0x16E */ char unk16E[0x2]; +} unk_D_84390010_168; // size = 0x170 + +typedef struct unk_D_84390010_654 { + /* 0x00 */ char unk00[0x4]; + /* 0x04 */ u32 unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ s32 unk_0C; + /* 0x10 */ u32 unk_10; + /* 0x14 */ s32 unk_14; + /* 0x18 */ u32 unk_18; + /* 0x1C */ u8 unk_1C; + /* 0x1E */ u16 unk_1E; + /* 0x20 */ char unk20[0x8]; + /* 0x28 */ u16 unk_28; + /* 0x2A */ u8 unk_2A; + /* 0x2B */ u8 unk_2B; + /* 0x2C */ u8 unk_2C; + /* 0x2D */ u8 unk_2D; + /* 0x2E */ u8 unk_2E; + /* 0x2F */ u8 unk_2F; + /* 0x30 */ u16 unk_30; + /* 0x32 */ char unk32[0x2]; + /* 0x34 */ u16 unk_34; + /* 0x36 */ u16 unk_36; + /* 0x38 */ unk_D_800FCB18 unk_38; + /* 0x9C */ unk_D_84390010_654_09C unk_9C; + /* 0xAC */ unk_D_84390010_654_0AC unk_AC; + /* 0xBC */ s16 unk_BC; + /* 0xBE */ s16 unk_BE; + /* 0xC0 */ char unkC0[1]; + /* 0xC1 */ u8 unk_C1[4]; + /* 0xC8 */ Controller* unk_C8; +} unk_D_84390010_654; // size = 0xCC + +typedef struct unk_D_84390010_728_0168 { + /* 0x00 */ unk_D_86002F58_004_000_000 unk_00; + /* 0x18 */ char unk18[0x4]; + /* 0x1C */ s16 unk_1C; + /* 0x1E */ s16 unk_1E; + /* 0x20 */ s16 unk_20; + /* 0x22 */ char unk22[0xA]; + /* 0x2C */ f32 unk_2C; + /* 0x30 */ char unk30[0x4]; + /* 0x34 */ f32 unk_34; + /* 0x38 */ f32 unk_38; + /* 0x3C */ char unk3C[0x6C]; + /* 0xA8 */ Vec3f unk_A8; + /* 0xB4 */ Vec3f unk_B4; +} unk_D_84390010_728_0168; // size >= 0xC0 + +typedef struct unk_D_84390010_728 { + /* 0x000 */ unk_D_86002F58_004_000 unk_000; + /* 0x168 */ unk_D_84390010_728_0168* unk_168; + /* 0x16C */ s32 unk_16C; + /* 0x170 */ s32 unk_170; + /* 0x174 */ char unk174[0x4]; + /* 0x178 */ s32 unk_178; + /* 0x17C */ s32 unk_17C; + /* 0x180 */ s32 unk_180; + /* 0x184 */ s16 unk_184; + /* 0x186 */ s16 unk_186; + /* 0x188 */ f32 unk_188; + /* 0x18C */ s32 unk_18C; + /* 0x190 */ f32 unk_190; + /* 0x194 */ f32 unk_194; + /* 0x198 */ char unk198[0x4]; +} unk_D_84390010_728; // size = 0x19C + +typedef struct unk_D_84390010_8C4 { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ s8 unk_08[4]; + /* 0x0C */ char unk0C[0x3C]; + /* 0x48 */ s8 unk_48[4]; + /* 0x4C */ char unk4C[0x3C]; +} unk_D_84390010_8C4; // size = 0x88 + +typedef struct unk_D_84390010_94C { + /* 0x00 */ u8 unk_00[10]; + /* 0x0A */ u8 unk_0A[4]; + /* 0x0E */ char unk0E[0x12]; +} unk_D_84390010_94C; // size = 0x20 + +typedef struct unk_D_84390048 { + /* 0x00 */ Vec3f unk_00; + /* 0x0C */ Vec3f unk_0C; + /* 0x18 */ u8 unk_18; + /* 0x19 */ u8 unk_19; + /* 0x1A */ u8 unk_1A; + /* 0x1B */ u8 unk_1B; + /* 0x1C */ char unk1C[4]; +} unk_D_84390048; // size = 0x20 + +typedef struct unk_D_84390010_448 { + /* 0x00 */ Vec3f unk_00; + /* 0x0C */ Vec3f unk_0C; + /* 0x18 */ Vec3f unk_18; + /* 0x24 */ unk_D_84390048 unk_24; + /* 0x44 */ s16 unk_44; + /* 0x46 */ s16 unk_46; + /* 0x48 */ char unk48[0x4]; + /* 0x4C */ f32 unk_4C; +} unk_D_84390010_448; // size >= 0x50 + +typedef struct unk_D_84390010 { + /* 0x000 */ unk_D_86002F58_004_000 unk_000; + /* 0x168 */ unk_D_84390010_168 unk_168[2]; + /* 0x448 */ unk_D_84390010_448 unk_448; + /* 0x498 */ f32 unk_498; + /* 0x49C */ f32 unk_49C; + /* 0x4A0 */ f32 unk_4A0; + /* 0x4A4 */ s16 unk_4A4; + /* 0x4A6 */ s16 unk_4A6; + /* 0x4A8 */ s16 unk_4A8; + /* 0x4AC */ s32 unk_4AC; + /* 0x4B0 */ s32 unk_4B0; + /* 0x4B4 */ s32 unk_4B4; + /* 0x4B8 */ s32 unk_4B8; + /* 0x4BC */ char unk4BC[0x4]; + /* 0x4C0 */ s32 unk_4C0; + /* 0x4C4 */ s32 unk_4C4; + /* 0x4C8 */ s32 unk_4C8; + /* 0x4CC */ Vec3f unk_4CC; + /* 0x4D8 */ Vec3f unk_4D8; + /* 0x4E4 */ f32 unk_4E4; + /* 0x4E8 */ u8 unk_4E8; + /* 0x4E9 */ u8 unk_4E9; + /* 0x4EC */ unk_D_86002F58_004_000 unk_4EC; + /* 0x654 */ unk_D_84390010_654 unk_654; + /* 0x720 */ unk_D_800AE540_1194* unk_720; + /* 0x724 */ unk_D_800AE540_0004* unk_724; + /* 0x728 */ unk_D_84390010_728 unk_728; + /* 0x8C4 */ unk_D_84390010_8C4 unk_8C4; + /* 0x94C */ unk_D_84390010_94C unk_94C; + /* 0x96C */ unk_D_84390010_94C unk_96C; + /* 0x98C */ unk_D_84390010_94C unk_98C; + /* 0x9AC */ unk_D_84390010_94C unk_9AC; + /* 0x9CC */ unk_D_84390010_94C unk_9CC; + /* 0x9EC */ unk_D_84390010_94C unk_9EC; +} unk_D_84390010; // size = 0xA0C + +typedef struct unk_D_8438E7B0_A50 { + /* 0x00 */ u8 unk_00; + /* 0x01 */ u8 unk_01; + /* 0x02 */ u8 unk_02; + /* 0x03 */ u8 unk_03; + /* 0x04 */ u8 unk_04; + /* 0x05 */ u8 unk_05; + /* 0x06 */ u8 unk_06; + /* 0x07 */ u8 unk_07; + /* 0x08 */ u8 unk_08; + /* 0x09 */ u8 unk_09; + /* 0x0A */ u8 unk_0A; + /* 0x0B */ u8 unk_0B; + /* 0x0C */ u8 unk_0C; + /* 0x0D */ u8 unk_0D; + /* 0x0E */ u8 unk_0E; + /* 0x0F */ u8 unk_0F; +} unk_D_8438E7B0_A50; // size = 0x10 + +typedef struct unk_D_8438E7B0 { + /* 0x000 */ unk_D_8438E7B0_A50 unk_000[165]; + /* 0xA50 */ unk_D_8438E7B0_A50 unk_A50; + /* 0xA60 */ char unkA60[0x10]; + /* 0xA70 */ unk_D_8438E7B0_A50 unk_A70; + /* 0xA80 */ unk_D_8438E7B0_A50 unk_A80; + /* 0xA90 */ char unkA90[0x60]; + /* 0xAF0 */ unk_D_8438E7B0_A50 unk_AF0; + /* 0xB00 */ unk_D_8438E7B0_A50 unk_B00; + /* 0xB10 */ unk_D_8438E7B0_A50 unk_B10; + /* 0xB20 */ unk_D_8438E7B0_A50 unk_B20; + /* 0xB30 */ char unkB30[0x51]; + /* 0xB81 */ u8 unk_B81; + /* 0xB82 */ char unkB82[0x5E]; +} unk_D_8438E7B0; // size = 0xBE0 + +typedef struct unk_D_84390240_000 { + /* 0x00 */ char unk00[0x8]; + /* 0x08 */ s8 unk_08; + /* 0x0C */ s32 unk_0C; + /* 0x10 */ s32 unk_10; + /* 0x14 */ s32 unk_14; + /* 0x18 */ u16 unk_18; + /* 0x1A */ u8 unk_1A; + /* 0x1C */ s32 unk_1C; + /* 0x20 */ s32 unk_20; + /* 0x24 */ s32 unk_24; + /* 0x28 */ char unk28[0x2]; + /* 0x2A */ u16 unk_2A; + /* 0x2C */ u16 unk_2C; + /* 0x2E */ u16 unk_2E; + /* 0x30 */ s32 unk_30; + /* 0x34 */ s32 unk_34; + /* 0x38 */ s32 unk_38; + /* 0x3C */ s32 unk_3C; + /* 0x40 */ s32 unk_40; + /* 0x44 */ s32 unk_44; + /* 0x48 */ s32 unk_48; + /* 0x4C */ s32 unk_4C; + /* 0x50 */ s32 unk_50; + /* 0x54 */ u8 unk_54; + /* 0x56 */ s16 unk_56; + /* 0x58 */ s16 unk_58; + /* 0x5A */ char unk5A[0x2]; + /* 0x5C */ f32 unk_5C; + /* 0x60 */ f32 unk_60; + /* 0x64 */ char unk64[0x4]; + /* 0x68 */ f32 unk_68; + /* 0x6C */ f32 unk_6C; + /* 0x70 */ f32 unk_70; + /* 0x74 */ f32 unk_74; + /* 0x78 */ u8 unk_78; + /* 0x7A */ s16 unk_7A; + /* 0x7C */ char unk7C[0x8]; + /* 0x84 */ f32 unk_84; + /* 0x88 */ char unk88[0xC]; + /* 0x94 */ Vec3f unk_94; + /* 0xA0 */ Vec3f unk_A0; + /* 0xAC */ char unkAC[0xC]; + /* 0xB8 */ Vec3f unk_B8; + /* 0xC4 */ Vec3f unk_C4; + /* 0xD0 */ Vec3f unk_D0; + /* 0xDC */ unk_D_86002F34_00C* unk_DC; +} unk_D_84390240_000; // size = 0xE0 + +typedef struct unk_D_84390240 { + /* 0x00 */ unk_D_84390240_000* unk_00; + /* 0x04 */ char unk04[0x3C]; +} unk_D_84390240; // size = 0x40 + +typedef void (*unk_D_84385384_func)(unk_D_84390010*); + +typedef struct unk_D_84385384 { + /* 0x00 */ s16 unk_00; + /* 0x04 */ unk_D_84385384_func unk_04[7]; + /* 0x20 */ s32 unk_20; + /* 0x24 */ s32 unk_24; + /* 0x28 */ s32 unk_28; +} unk_D_84385384; // size = 0x2C + +typedef struct unk_D_843C4E44 { + /* 0x000 */ u8 unk_000; + /* 0x001 */ u8 unk_001; + /* 0x3F2 */ char unk02[0x3F2]; +} unk_D_843C4E44; // size >= 0x3F4 + +typedef struct unk_D_843C4DEC { + /* 0x00 */ s32 unk_00; + /* 0x04 */ char unk04[0x54]; +} unk_D_843C4DEC; // size = 0x58 + +typedef struct unk_D_84390068 { + /* 0x00 */ s32 unk_00; + /* 0x04 */ unk_D_84385384_func unk_04; +} unk_D_84390068; // size = 0x8 + +typedef struct unk_D_84384588 { + /* 0x00 */ u8 unk_00; + /* 0x01 */ u8 unk_01; + /* 0x02 */ char unk02[0xE]; +} unk_D_84384588; // size = 0x10 + +typedef struct unk_D_84390178 { + /* 0x00 */ s32 unk_00; + /* 0x04 */ char unk04[0x14]; +} unk_D_84390178; // size >= 0x18 + +typedef struct unk_D_8438FF70 { + /* 0x00 */ Vec3f unk_00; + /* 0x0C */ s16 unk_0C; + /* 0x0E */ s16 unk_0E; + /* 0x10 */ s16 unk_10; + /* 0x12 */ u16 unk_12; + /* 0x14 */ char unk14[0xC]; +} unk_D_8438FF70; // size = 0x20 + +typedef struct unk_D_84390028 { + /* 0x00 */ f32 unk_00; + /* 0x04 */ f32 unk_04; + /* 0x08 */ f32 unk_08; + /* 0x0C */ f32 unk_0C; +} unk_D_84390028; // size = 0x10 + +typedef struct unk_D_84384608 { + /* 0x00 */ s32 unk_00; + /* 0x04 */ u16 unk_04; +} unk_D_84384608; // size = 0x8 + +typedef struct unk_D_843847BC { + /* 0x00 */ s16 unk_00; + /* 0x02 */ s16 unk_02; + /* 0x04 */ s16 unk_04; + /* 0x08 */ f32 unk_08; + /* 0x0C */ f32 unk_0C; + /* 0x10 */ f32 unk_10; + /* 0x14 */ s16 unk_14; +} unk_D_843847BC; // size = 0x18 + +typedef struct unk_D_843901B0 { + /* 0x00 */Vec3f unk_00; + /* 0x0C */s16 unk_0C; + /* 0x0E */s16 unk_0E; + /* 0x10 */char unk10[0x2]; + /* 0x12 */s16 unk_12; + /* 0x14 */s16 unk_14; + /* 0x18 */f32 unk_18; + /* 0x1C */f32 unk_1C; + /* 0x20 */s16 unk_20; + /* 0x22 */s16 unk_22; + /* 0x24 */char unk24[0x2]; + /* 0x26 */s16 unk_26; + /* 0x28 */s16 unk_28; + /* 0x2C */f32 unk_2C; + /* 0x30 */f32 unk_30; + /* 0x34 */f32 unk_34; + /* 0x38 */f32 unk_38; + /* 0x3C */f32 unk_3C; +} unk_D_843901B0; // size >= 0x40 + +typedef struct unk_D_843901A0_4C8 { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ s32 unk_0C; + /* 0x10 */ s32 unk_10; + /* 0x14 */ Vec3f unk_14; + /* 0x20 */ f32 unk_20; + /* 0x24 */ f32 unk_24; + /* 0x28 */ s16 unk_28; + /* 0x2A */ s16 unk_2A; +} unk_D_843901A0_4C8; // size = 0x2C + +typedef struct unk_D_843901A0 { + /* 0x000 */ u8 unk_000; + /* 0x004 */ s32 unk_004; + /* 0x008 */ u8 unk_008[4]; + /* 0x00C */ char unk00C[0x3C]; + /* 0x048 */ u8 unk_048[64]; + /* 0x088 */ s8 unk_088[64]; + /* 0x0C8 */ s8 unk_0C8[64]; + /* 0x148 */ s8 unk_108[64]; + /* 0x148 */ s8 unk_148[64]; + /* 0x188 */ s8 unk_188[64]; + /* 0x1C8 */ s8 unk_1C8[64]; + /* 0x208 */ s8 unk_208[64]; + /* 0x248 */ s8 unk_248[64]; + /* 0x288 */ s8 unk_288[64]; + /* 0x2C8 */ s8 unk_2C8[64]; + /* 0x2C8 */ s8 unk_308[64]; + /* 0x348 */ s8 unk_348[64]; + /* 0x388 */ s8 unk_388[64]; + /* 0x3C8 */ s8 unk_3C8[64]; + /* 0x408 */ s8 unk_408[64]; + /* 0x448 */ s8 unk_448[2][64]; + /* 0x4C8 */ unk_D_843901A0_4C8 unk_4C8; +} unk_D_843901A0; // size = 0x4F4 + +typedef struct unk_D_84385790 { + /* 0x00 */ s32 unk_00; + /* 0x04 */ Color_RGBA8 unk_04; +} unk_D_84385790; // size = 0x8 + +typedef struct arg1_func_84344CE8 { + /* 0x00 */ char unk00[0x14]; + /* 0x14 */ u8* unk_14; + /* 0x18 */ Gfx* unk_18; +} arg1_func_84344CE8; // size >= 0x1C + +typedef struct arg1_func_8434E21C { + /* 0x00 */ u8* unk_00; + /* 0x04 */ u8* unk_04; + /* 0x08 */ char unk08[0x2]; + /* 0x0A */ s16 unk_0A; +} arg1_func_8434E21C; // size >= 0xC + +typedef struct unk_D_843925E0_430 { + /* 0x00 */ f32 unk_00; + /* 0x04 */ f32 unk_04; + /* 0x08 */ f32 unk_08; + /* 0x0C */ s16 unk_0C; + /* 0x0E */ s16 unk_0E; + /* 0x10 */ Color_RGBA8 unk_10; + /* 0x14 */ f32 unk_14; + /* 0x18 */ f32 unk_18; +} unk_D_843925E0_430; // size = 0x1C + +typedef struct unk_D_843925E0 { + /* 0x000 */ s32 unk_000; + /* 0x004 */ f32 unk_004; + /* 0x008 */ f32 unk_008; + /* 0x00C */ f32 unk_00C; + /* 0x010 */ f32 unk_010; + /* 0x014 */ f32 unk_014; + /* 0x018 */ s16 unk_018; + /* 0x01A */ s16 unk_01A; + /* 0x01C */ s16 unk_01C; + /* 0x01E */ s16 unk_01E; + /* 0x020 */ f32 unk_020; + /* 0x024 */ s32 unk_024; + /* 0x028 */ s32 unk_028; + /* 0x02C */ s32 unk_02C; + /* 0x030 */ s32 unk_030; + /* 0x034 */ s32 unk_034; + /* 0x038 */ s32 unk_038; + /* 0x03C */ s32 unk_03C; + /* 0x040 */ s32 unk_040; + /* 0x044 */ s32 unk_044; + /* 0x048 */ char unk048[0x8]; + /* 0x050 */ Vtx unk_050[31 * 2]; + /* 0x430 */ unk_D_843925E0_430 unk_430[31 * 2]; +} unk_D_843925E0; // size = 0xAF8 + +typedef struct unk_D_843975E8 { + /* 0x00 */ f32 unk_00; + /* 0x04 */ f32 unk_04; + /* 0x08 */ f32 unk_08; + /* 0x0C */ f32 unk_0C; + /* 0x10 */ f32 unk_10; + /* 0x14 */ f32 unk_14; + /* 0x18 */ f32 unk_18; + /* 0x1C */ f32 unk_1C; + /* 0x20 */ f32 unk_20; + /* 0x24 */ char unk24[0x4]; +} unk_D_843975E8; // size = 0x28 + +typedef struct unk_D_84398F50_048 { + /* 0x00 */ f32 unk_00; + /* 0x04 */ u8 unk_04; + /* 0x08 */ f32 unk_08; + /* 0x0C */ f32 unk_0C; + /* 0x10 */ Vec3f unk_10; + /* 0x1C */ Vec3f unk_1C; + /* 0x28 */ char unk28[0x20]; +} unk_D_84398F50_048; // size = 0x48 + +typedef struct unk_D_84398F50 { + /* 0x000 */ s16 unk_000; + /* 0x002 */ s16 unk_002; + /* 0x004 */ s16 unk_004; + /* 0x006 */ s16 unk_006; + /* 0x008 */ s16 unk_008; + /* 0x00A */ Color_RGBA8 unk_00A; + /* 0x00E */ Color_RGB8 unk_00E; + /* 0x014 */ f32 unk_014; + /* 0x018 */ f32 unk_018; + /* 0x01C */ Vtx* unk_01C; + /* 0x020 */ char unk020[0x18]; + /* 0x038 */ s32 unk_038[3]; + /* 0x044 */ char unk044[0x4]; + /* 0x048 */ unk_D_84398F50_048 unk_048[20]; +} unk_D_84398F50; // size = 0x5E8 + +typedef struct unk_D_8439CA60_0014 { + /* 0x00 */ f32 unk_00; + /* 0x04 */ f32 unk_04; + /* 0x08 */ f32 unk_08; + /* 0x0C */ f32 unk_0C; + /* 0x10 */ f32 unk_10; + /* 0x14 */ f32 unk_14; + /* 0x18 */ s16 unk_18; + /* 0x1A */ s16 unk_1A; +} unk_D_8439CA60_0014; // size = 0x1C + +typedef struct unk_D_8439CA60 { + /* 0x0000 */ s16 unk_0000; + /* 0x0002 */ s16 unk_0002; + /* 0x0004 */ s16 unk_0004; + /* 0x0008 */ f32 unk_0008; + /* 0x000C */ Vtx* unk_000C; + /* 0x0010 */ Mtx* unk_0010; + /* 0x0014 */ unk_D_8439CA60_0014 unk_0014[16][16]; +} unk_D_8439CA60; // size >= 0x1C14 + +typedef struct unk_D_8439E680_0014 { + /* 0x00 */ f32 unk_00; + /* 0x04 */ f32 unk_04; + /* 0x08 */ f32 unk_08; + /* 0x0C */ f32 unk_0C; + /* 0x10 */ f32 unk_10; + /* 0x14 */ f32 unk_14; + /* 0x18 */ s16 unk_18; + /* 0x1A */ s16 unk_1A; + /* 0x1C */ f32 unk_1C; +} unk_D_8439E680_0014; // size = 0x20 + +typedef struct unk_D_8439E680 { + /* 0x0000 */ s16 unk_0000; + /* 0x0002 */ s16 unk_0002; + /* 0x0004 */ s16 unk_0004; + /* 0x0008 */ f32 unk_0008; + /* 0x000C */ Vtx* unk_000C; + /* 0x0010 */ Mtx* unk_0010; + /* 0x0014 */ unk_D_8439E680_0014 unk_0014[16][16]; +} unk_D_8439E680; // size >= 0x2014 + +typedef struct unk_D_843A22C0_038 { + /* 0x00 */ f32 unk_00; + /* 0x08 */ u8 unk_04; + /* 0x08 */ f32 unk_08; + /* 0x0C */ Vec3f unk_0C; + /* 0x18 */ Vec3f unk_18; + /* 0x24 */ Vec3f unk_24; + /* 0x30 */ Vtx unk_30[2]; +} unk_D_843A22C0_038; // size = 0x50 + +typedef struct unk_D_843A22C0 { + /* 0x000 */ s16 unk_000; + /* 0x002 */ s16 unk_002; + /* 0x004 */ s16 unk_004; + /* 0x006 */ s16 unk_006; + /* 0x008 */ s16 unk_008; + /* 0x00A */ Color_RGB8 unk_00A; + /* 0x010 */ f32 unk_010; + /* 0x014 */ f32 unk_014; + /* 0x018 */ Vtx* unk_018; + /* 0x01C */ char unk01C[0x1C]; + /* 0x038 */ unk_D_843A22C0_038 unk_038[10]; +} unk_D_843A22C0; // size = 0x358 + +typedef struct unk_D_843AA880_034 { + /* 0x00 */ u8 unk_00; + /* 0x04 */ f32 unk_04; + /* 0x08 */ f32 unk_08; + /* 0x0C */ Vec3f unk_0C; + /* 0x18 */ Vec3f unk_18; + /* 0x24 */ f32 unk_24; + /* 0x28 */ f32 unk_28; + /* 0x2C */ Vec3f unk_2C; + /* 0x38 */ Vec3f unk_38; +} unk_D_843AA880_034; // size = 0x44 + +typedef struct unk_D_843AA880 { + /* 0x000 */ s16 unk_000; + /* 0x002 */ s16 unk_002; + /* 0x004 */ s16 unk_004; + /* 0x006 */ s16 unk_006; + /* 0x008 */ Color_RGB8 unk_008; + /* 0x00C */ f32 unk_00C; + /* 0x010 */ f32 unk_010; + /* 0x014 */ f32 unk_014; + /* 0x018 */ Vtx* unk_018; + /* 0x01C */ Vec3f unk_01C; + /* 0x028 */ char unk028[0xC]; + /* 0x034 */ unk_D_843AA880_034 unk_034[15]; +} unk_D_843AA880; // size = 0x430 + +typedef struct unk_D_843AB940_038 { + /* 0x00 */ u8 unk_00; + /* 0x04 */ f32 unk_04; + /* 0x08 */ f32 unk_08; + /* 0x0C */ Vec3f unk_0C; + /* 0x18 */ Vec3f unk_18; + /* 0x24 */ f32 unk_24; + /* 0x28 */ f32 unk_28; + /* 0x2C */ Vec3f unk_2C; + /* 0x38 */ Vec3f unk_38; +} unk_D_843AB940_038; // size = 0x44 + +typedef struct unk_D_843AB940 { + /* 0x000 */ s16 unk_000; + /* 0x002 */ s16 unk_002; + /* 0x004 */ s16 unk_004; + /* 0x006 */ s16 unk_006; + /* 0x008 */ Color_RGB8 unk_008; + /* 0x00C */ f32 unk_00C; + /* 0x010 */ f32 unk_010; + /* 0x014 */ f32 unk_014; + /* 0x018 */ Vtx* unk_018; + /* 0x01C */ Vec3f unk_01C; + /* 0x028 */ char unk028[0xC]; + /* 0x034 */ unk_D_8140E720* unk_034; + /* 0x038 */ unk_D_843AB940_038 unk_038[15]; +} unk_D_843AB940; // size = 0x434 + +typedef struct unk_D_843ACA10_01C { + /* 0x00 */ u8 unk_00; + /* 0x04 */ f32 unk_04; + /* 0x08 */ f32 unk_08; + /* 0x0C */ Vec3f unk_0C; + /* 0x18 */ Vec3f unk_18; + /* 0x24 */ f32 unk_24; + /* 0x28 */ f32 unk_28; + /* 0x2C */ Vec3f unk_2C; + /* 0x38 */ Vec3f unk_38; +} unk_D_843ACA10_01C; // size = 0x44 + +typedef struct unk_D_843ACA10 { + /* 0x000 */ s16 unk_000; + /* 0x002 */ s16 unk_002; + /* 0x004 */ s16 unk_004; + /* 0x006 */ s16 unk_006; + /* 0x008 */ Color_RGB8 unk_008; + /* 0x010 */ f32 unk_00C; + /* 0x010 */ f32 unk_010; + /* 0x014 */ Vtx* unk_014; + /* 0x018 */ unk_D_8140E720* unk_018; + /* 0x01C */ unk_D_843ACA10_01C unk_01C[15]; + /* 0x418 */ f32 unk_418; +} unk_D_843ACA10; // size = 0x41C + +typedef struct unk_D_843ADA80_040 { + /* 0x00 */ u8 unk_00; + /* 0x04 */ f32 unk_04; + /* 0x08 */ f32 unk_08; + /* 0x0C */ Vec3f unk_0C; + /* 0x18 */ Vec3f unk_18; + /* 0x24 */ Vec3f unk_24; + /* 0x30 */ f32 unk_30; + /* 0x34 */ f32 unk_34; + /* 0x38 */ Vec3f unk_38; + /* 0x44 */ Vec3f unk_44; +} unk_D_843ADA80_040; // size = 0x50 + +typedef struct unk_D_843ADA80 { + /* 0x000 */ s16 unk_000; + /* 0x002 */ s16 unk_002; + /* 0x004 */ s16 unk_004; + /* 0x006 */ s16 unk_006; + /* 0x008 */ s16 unk_008; + /* 0x00A */ Color_RGB8 unk_00A; + /* 0x010 */ f32 unk_010; + /* 0x014 */ f32 unk_014; + /* 0x018 */ f32 unk_018; + /* 0x01C */ char unk01C[0x4]; + /* 0x020 */ Vtx* unk_020; + /* 0x024 */ Vec3f unk_024; + /* 0x030 */ char unk030[0x10]; + /* 0x040 */ unk_D_843ADA80_040 unk_040[10]; +} unk_D_843ADA80; // size = 0x360 + +typedef struct unk_D_843C2C00_0B0 { + /* 0x00 */ s32 unk_00; + /* 0x04 */ u8 unk_04; + /* 0x08 */ f32 unk_08; + /* 0x0C */ f32 unk_0C; + /* 0x10 */ Vec3f unk_10; + /* 0x1C */ f32 unk_1C; + /* 0x20 */ f32 unk_20; + /* 0x24 */ f32 unk_24; +} unk_D_843C2C00_0B0; // size = 0x28 + +typedef struct unk_D_843C2C00_064 { + /* 0x00 */ s16 unk_00; + /* 0x02 */ s16 unk_02; + /* 0x04 */ s16 unk_04; + /* 0x06 */ s16 unk_06; + /* 0x08 */ s16 unk_08; + /* 0x0A */ s16 unk_0A; +} unk_D_843C2C00_064; // size = 0xC + +typedef struct unk_D_843C2C00_024 { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ s32 unk_0C; + /* 0x10 */ s32 unk_10; + /* 0x14 */ s32 unk_14; + /* 0x18 */ s32 unk_18; + /* 0x1C */ s32 unk_1C; +} unk_D_843C2C00_024; // size = 0x20 + +typedef struct unk_D_84389CE0 { + /* 0x00 */ Color_RGBA8 unk_00; + /* 0x04 */ u8 unk_04; +} unk_D_84389CE0; // size = 0x8 + +typedef struct unk_D_843C2C00 { + /* 0x000 */ s16 unk_000; + /* 0x002 */ s16 unk_002; + /* 0x004 */ s16 unk_004; + /* 0x008 */ f32 unk_008; + /* 0x00C */ f32 unk_00C; + /* 0x010 */ f32 unk_010; + /* 0x014 */ f32 unk_014; + /* 0x018 */ Vtx* unk_018; + /* 0x01C */ s32 unk_01C; + /* 0x020 */ s32 unk_020; + /* 0x024 */ unk_D_843C2C00_024 unk_024; + /* 0x044 */ unk_D_843C2C00_024 unk_044; + /* 0x064 */ unk_D_843C2C00_064 unk_064; + /* 0x070 */ unk_D_843C2C00_064 unk_070; + /* 0x07C */ unk_D_84389CE0 unk_07C; + /* 0x081 */ unk_D_84389CE0 unk_081; + /* 0x086 */ Color_RGBA8 unk_086; + /* 0x08C */ f32 unk_08C; + /* 0x090 */ f32 unk_090; + /* 0x094 */ s16 unk_094; + /* 0x096 */ char unk096[0x1A]; + /* 0x0B0 */ unk_D_843C2C00_0B0 unk_0B0[10]; +} unk_D_843C2C00; // size = 0x240 + +typedef struct unk_D_843C49C0_004 { + /* 0x00 */ s16 unk_00; + /* 0x02 */ s16 unk_02; + /* 0x04 */ s16 unk_04; + /* 0x06 */ s16 unk_06; + /* 0x08 */ f32 unk_08; + /* 0x0C */ Vec3f unk_0C; +} unk_D_843C49C0_004; // size = 0x18 + +typedef struct unk_D_843C49C0 { + /* 0x000 */ s16 unk_000; + /* 0x002 */ char pad002[2]; + /* 0x004 */ unk_D_843C49C0_004 unk_004[20]; +} unk_D_843C49C0; // size = 0x1E4 + +typedef struct unk_D_843C3508_0A4 { + /* 0x00 */ f32 unk_00; + /* 0x04 */ f32 unk_04; + /* 0x08 */ f32 unk_08; + /* 0x0C */ Vec3f unk_0C; + /* 0x18 */ Vec3f unk_18; +} unk_D_843C3508_0A4; // size = 0x24 + +typedef struct unk_D_843C3508 { + /* 0x000 */ s16 unk_000; + /* 0x002 */ s16 unk_002; + /* 0x004 */ s16 unk_004; + /* 0x006 */ s16 unk_006; + /* 0x008 */ unk_D_84389CE0 unk_008; + /* 0x00D */ unk_D_84389CE0 unk_00D; + /* 0x014 */ f32 unk_014; + /* 0x018 */ f32 unk_018; + /* 0x01C */ s16 unk_01C; + /* 0x020 */ s32 unk_020; + /* 0x024 */ s32 unk_024; + /* 0x028 */ unk_D_843C2C00_024 unk_028; + /* 0x048 */ unk_D_843C2C00_024 unk_048; + /* 0x068 */ unk_D_843C2C00_064 unk_068; + /* 0x074 */ unk_D_843C2C00_064 unk_074; + /* 0x080 */ f32 unk_080; + /* 0x084 */ f32 unk_084; + /* 0x088 */ Vtx* unk_088; + /* 0x08C */ char unk08C[0x18]; + /* 0x0A4 */ unk_D_843C3508_0A4 unk_0A4[20]; +} unk_D_843C3508; // size = 0x374 + +typedef struct unk_D_8438ACB8 { + /* 0x00 */ u8 unk_00; + /* 0x01 */ u8 unk_01; +} unk_D_8438ACB8; // size = 0x2 + +typedef struct unk_D_8438ACF0 { + /* 0x00 */ u8 unk_00; + /* 0x01 */ u8 unk_01; + /* 0x02 */ u8 unk_02; +} unk_D_8438ACF0; // size = 0x3 + +typedef struct unk_D_843C60AC { + /* 0x00 */ u8 unk_00; + /* 0x01 */ u8 unk_01; + /* 0x02 */ u8 unk_02; + /* 0x03 */ u8 unk_03; + /* 0x04 */ u8 unk_04; + /* 0x05 */ u8 unk_05[1]; + /* 0x0C */ char unk06[0xC]; + /* 0x12 */ unk_D_800FCB18 unk_12; +} unk_D_843C60AC; // size = 0x76 + +typedef struct unk_D_843C60A4 { + /* 0x00 */ u8 unk_00; + /* 0x01 */ u8 unk_01[2]; + /* 0x03 */ u8 unk_03; + /* 0x04 */ u8 unk_04[2]; + /* 0x06 */ u8 unk_06; + /* 0x07 */ u8 unk_07[1]; + /* 0x08 */ u8 unk_08; + /* 0x09 */ u8 unk_09; + /* 0x0A */ u8 unk_0A[1]; + /* 0x0B */ char unk0B[0x5]; + /* 0x10 */ u8 unk_10; + /* 0x11 */ u8 unk_11; + /* 0x12 */ u8 unk_12; + /* 0x13 */ u8 unk_13; + /* 0x14 */ unk_D_843C60AC unk_14[1]; +} unk_D_843C60A4; // size >= 0x8A + +typedef struct unk_D_843C5568 { + /* 0x000 */ u8 unk_000; + /* 0x001 */ u8 unk_001; + /* 0x002 */ u8 unk_002; + /* 0x003 */ u8 unk_003; + /* 0x004 */ u8 unk_004; + /* 0x005 */ u8 unk_005; + /* 0x006 */ u8 unk_006; + /* 0x007 */ u8 unk_007; + /* 0x008 */ u8 unk_008; + /* 0x009 */ char unk009[0x3]; + /* 0x00C */ u8 unk_00C[1]; + /* 0x00D */ char unk00D[0x5]; + /* 0x012 */ u8 unk_012; + /* 0x013 */ char unk013[0x3]; + /* 0x016 */ unk_D_843C60AC unk_016[1]; + /* 0x08C */ char unk08C[0x510]; +} unk_D_843C5568; // size = 0x59C + +typedef struct unk_func_843794CC { + /* 0x00 */ u8 unk_00; + /* 0x01 */ u8 unk_01; + /* 0x02 */ u8 unk_02; + /* 0x03 */ u8 unk_03; + /* 0x04 */ u8 unk_04; + /* 0x05 */ u8 unk_05; + /* 0x06 */ u8 unk_06; + /* 0x07 */ u8 unk_07; + /* 0x08 */ u8 unk_08; + /* 0x0A */ s16 unk_0A; + /* 0x0C */ s16 unk_0C; + /* 0x0E */ s16 unk_0E; + /* 0x10 */ s16 unk_10; + /* 0x12 */ s16 unk_12; + /* 0x14 */ s16 unk_14; + /* 0x16 */ s16 unk_16; + /* 0x18 */ s16 unk_18; + /* 0x1A */ s16 unk_1A; + /* 0x1C */ s16 unk_1C; + /* 0x1E */ s16 unk_1E; + /* 0x20 */ s16 unk_20; + /* 0x24 */ s32 unk_24; + /* 0x28 */ s32 unk_28; +} unk_func_843794CC; // size = 0x2C + +typedef struct unk_D_843C5310 { + /* 0x00 */ u8 unk_00[1]; + /* 0x01 */ char unk01[9]; + /* 0x0A */ u8 unk_0A[1]; + /* 0x0B */ char unk0B[0x15]; +} unk_D_843C5310; // size = 0x20 + +typedef struct unk_D_843C60C0 { + /* 0x00 */ u8 unk_00; + /* 0x01 */ u8 unk_01; + /* 0x02 */ u8 unk_02; + /* 0x04 */ s32 unk_04[1]; + /* 0x08 */ char unk08[0xC]; +} unk_D_843C60C0; // size = 0x14 + +typedef struct unk_D_843C60F0_00C { + /* 0x00 */ s32 unk_00; + /* 0x04 */ u8 unk_04; + /* 0x05 */ u8 unk_05; + /* 0x06 */ u8 unk_06; + /* 0x07 */ u8 unk_07; + /* 0x08 */ u8 unk_08; + /* 0x09 */ u8 unk_09; + /* 0x0A */ u8 unk_0A; + /* 0x0B */ u8 unk_0B; + /* 0x0C */ u8 unk_0C; + /* 0x0D */ u8 unk_0D; + /* 0x0E */ u8 unk_0E; + /* 0x0F */ u8 unk_0F; + /* 0x10 */ u8 unk_10; + /* 0x11 */ char unk11[0x3]; +} unk_D_843C60F0_00C; // size = 0x14 + +typedef struct unk_D_843C60F0 { + /* 0x00 */ u8 unk_00; + /* 0x01 */ u8 unk_01; + /* 0x02 */ u8 unk_02; + /* 0x03 */ char unk03[0x9]; + /* 0x0C */ unk_D_843C60C0 unk_0C[3]; +} unk_D_843C60F0; // size >= 0x48 + +typedef struct unk_D_843C6148 { + /* 0x00 */ u8 unk_00; + /* 0x01 */ u8 unk_01; + /* 0x02 */ u8 unk_02; + /* 0x03 */ u8 unk_03; + /* 0x04 */ u8 unk_04; + /* 0x05 */ u8 unk_05; + /* 0x06 */ char unk06[0x2]; +} unk_D_843C6148; // size <= 0x8 + +typedef struct unk_func_8438220C { + /* 0x00 */ u8 unk_00; + /* 0x01 */ char unk01[0x3]; + /* 0x04 */ unk_func_843794CC unk_04[4]; + /* 0xB4 */ u8 unk_B4; + /* 0xB8 */ s32 unk_B8; +} unk_func_8438220C; // size = 0xBC + +typedef struct unk_func_8437F85C_arg3 { + /* 0x00 */ u8 unk_00[3][3]; +} unk_func_8437F85C_arg3; // size = 0x3 + +extern unk_D_8438E7B0* D_84384570[]; +extern unk_D_8438FF70* D_84384578[]; +extern unk_D_8438FF70* D_84384580[]; +extern unk_D_84384588* D_84384588[]; +extern u8 D_84384590[]; +extern u8 D_843845F0; +extern u8 D_843845F4; +extern u8 D_843845F8; +extern u8 D_843845FC[]; +extern s16 D_84384670[]; +extern unk_D_843847BC D_843847BC[2]; +extern unk_D_86B0C160 D_843847EC[3]; +extern unk_D_86B0C160 D_84384888[2]; +extern unk_D_86B0C160 D_843848F0; +extern unk_D_86B0C160 D_84384924; +extern unk_D_86B0C160 D_84384958; +extern unk_D_86B0C160 D_8438498C; +extern unk_D_86B0C160 D_843849C0[]; +extern unk_D_86B0C160 D_84384AF8; +extern unk_D_86B0C160 D_84384B2C[]; +extern Vec3f D_84384C30[]; +extern unk_D_84385384_func D_84385380; +extern unk_D_84385384 D_84385384[]; +extern Vec3f D_84385B90; +extern Vec3f D_84385B9C; +extern u32 D_84385BC0[]; +extern Vtx D_84385C80[]; +extern Vtx D_84385CC0[]; +extern Vtx D_84385D00[]; +extern Vtx D_84385D40[]; +extern Vtx D_84385DC0[]; +extern Vtx D_84385E00[]; +extern unk_D_8140E728_01C D_843861D0[86]; +extern func_D_84390320 D_84388280[]; +extern func_D_84390320 D_843884D8[]; +extern func_D_84390320 D_84388668[]; +extern func_D_84390320 D_843888C0[]; +extern func_D_84390320 D_84388A50[]; +extern func_D_84390320 D_84388CA8[]; +extern Gfx D_84389AE0[]; +extern u32 D_8438A648[]; +extern Gfx D_8438A980[]; +extern u8 D_8438AC60[]; +extern unk_D_8438ACB8 D_8438ACB8[]; +extern u8 D_8438ACD4[]; +extern u8 D_8438ACF0[]; +extern u8* D_8438E778; +extern u8* D_8438E77C; + +extern u8 D_843C4DA4; +extern u8 D_843C4DA5; +extern u8 D_843C4DA9; +extern u8 D_843C4DAA; +extern s32 D_843C4DEC; +//extern unk_D_843C4E44 D_843C4E44; +extern u8 D_843C4E44; +extern u8 D_843C4E45; +extern u16 D_843C4DC4; +extern unk_D_800FCB18* D_843C5238; +extern unk_D_800FCB18* D_843C523C; + + +extern unk_D_84390010* D_84390010[2]; +extern unk_D_84390010* D_84390018; +extern unk_D_84390010* D_8439001C; +extern unk_D_84390028 D_84390028[2]; +extern f32 D_843900A8[]; +extern char** D_843900B0; +extern char** D_843900B4; +extern char** D_843900B8; +extern char** D_843900BC; +extern char** D_843900C0; +extern f32 D_84390124; +extern f32 D_84390128; +extern u8 D_84390134; +extern s32 D_84390174; +extern unk_D_84390178 D_84390178; +extern Vec3f D_84390190; +extern unk_D_843901A0* D_843901A0; +extern unk_D_843901B0 D_843901B0; +extern unk_D_84390010* D_84390200; +extern unk_D_84390010* D_84390204; +extern s32 D_8439022C; +extern s32 D_84390230; +extern s32 D_84390234; +extern unk_D_84390240 D_84390240; +extern s32 D_84390288; +extern s32 D_843902A4; +extern s32 D_843902A8; +extern s16 D_843902E2; +extern s16 D_843902E4; +extern unk_D_84390010* D_843902E8; +extern unk_D_84390010* D_843902EC; +extern unk_D_84390010* D_843902F0; +extern s32 D_843902F4; +extern s32 D_843902F8; +extern func_D_84390300 D_84390300[8]; +extern func_D_84390320 D_84390320[8]; +extern s32 D_84390340; +extern Vec3f D_84390348; +extern s16 D_8439037A; +extern s16 D_8439037C; +extern s16 D_8439037E; +extern s16 D_84390380; +extern s16 D_84390382; +extern s16 D_84390384; +extern s16 D_84390386; +extern s16 D_84390388; +extern s16 D_8439038A; +extern s16 D_8439038C; +extern s16 D_8439038E; +extern s16 D_84390390; +extern s16 D_84390392; +extern s16 D_84390394; +extern s16 D_84390396; +extern s16 D_84390398; +extern s16 D_8439039A; +extern s16 D_8439039C; +extern s16 D_8439039E; +extern s16 D_843903A0; +extern f32 D_84392058[26]; +extern u8* D_843920C0[256]; +extern s16 D_843924C0[0x10]; +extern arg1_func_80019420* D_843924E0[40]; + + + +s32 func_84300020(s32 arg0, GraphNode* arg1); +s32 func_84300058(s32 arg0, unk_D_86002F34_alt18* arg1); +s32 func_843000C0(s32 arg0, unk_D_86002F34_alt18* arg1); +s32 func_8430012C(s32 arg0, unk_D_86002F58_004_000* arg1); +void func_84300184(u8 arg0, u8 arg1, u8 arg2); +void func_843001FC(f32 arg0); +u16 func_84300208(u16 arg0); +void func_84300340(void); +void func_84300750(GraphNode* arg0, unk_D_80068BB0* arg1); +void func_84300810(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +void func_84300938(s32 arg0, s32 arg1, s32 arg2, s32 arg3, u8* arg4, s32 arg5); +void func_84300B34(GraphNode* arg0, unk_D_80068BB0* arg1); +void func_84300D44(void); +void func_84300DC0(void); +void func_84300E78(void); +void func_84300E80(void); +s32 func_84300E88(s32 arg0); +s32 func_84300FBC(s32 arg0); +void func_84301094(void); +s32 func_843010EC(s32 arg0); +void func_8430123C(u8* arg0, s32 arg1); +void func_8430128C(void); +void func_843013E4(unk_D_800AE540_1194* arg0, unk_D_86002F30* arg1); +void func_84301430(unk_func_80007444* arg0); +void func_84301A24(void); +s32 func_84301A2C(s32 arg0, unk_D_800AE540* arg1); + +void func_84301B00(void); +void func_84301B48(unk_D_84390010* arg0, s32 arg1); +void func_84301B84(unk_D_84390010* arg0, s32 arg1); +void func_84301BEC(unk_D_84390010* arg0, s32 arg1); +void func_84301C54(unk_D_84390010* arg0, s32 arg1); +void func_84301CBC(unk_D_84390010* arg0); +void func_84301D08(unk_D_84390010* arg0); +void func_84301DDC(unk_D_84390010* arg0); +void func_84301EEC(unk_D_84390010* arg0); +void func_84301EF4(unk_D_84390010* arg0); +void func_84301F2C(unk_D_84390010* arg0); +void func_84301F80(unk_D_84390010* arg0); +s32 func_84301FB0(unk_D_84390010* arg0); +s32 func_84301FC0(unk_D_84390010* arg0); +s32 func_84301FF0(unk_D_84390010* arg0); +s32 func_84302000(unk_D_84390010* arg0); +void func_8430203C(unk_D_84390010* arg0); +void func_843020B0(unk_D_84390010* arg0); +void func_843020F4(unk_D_84390010* arg0); +void func_84302128(unk_D_84390010* arg0); +void func_84302148(unk_D_84390010* arg0); +s32 func_84302194(u16 arg0, u8* arg1, s32 arg2); +void func_843021E8(unk_D_84390010* arg0, u16 arg1, unk_D_84390010_94C* arg2, unk_D_84390010_94C* arg3); +void func_8430245C(unk_D_84390010* arg0); +void func_8430255C(u8 arg0, u32 arg1); +void func_843025BC(s32 arg0, unk_D_84390010_94C* arg1, unk_D_84390010_94C* arg2); +void func_84302658(unk_D_84390010* arg0, s32 arg1); +void func_843029D0(unk_D_84390010* arg0); +void func_84302A78(unk_D_84390010* arg0); +void func_84302C34(unk_D_84390010* arg0); +void func_84302EF0(unk_D_84390010* arg0); +void func_8430305C(unk_D_84390010* arg0); +void func_843031A0(unk_D_84390010* arg0); +void func_84303208(unk_D_84390010* arg0); +void func_8430334C(unk_D_84390010* arg0); +void func_843033E0(unk_D_84390010* arg0); +void func_843034D8(unk_D_84390010* arg0); +void func_84303674(unk_D_84390010* arg0); +void func_843037CC(unk_D_84390010* arg0); +void func_84303A48(unk_D_84390010* arg0); +void func_84303BB8(unk_D_84390010* arg0); +void func_84303CB4(unk_D_84390010* arg0); +s32 func_84303D50(unk_D_84390010* arg0); +s32 func_84303DEC(unk_D_84390010* arg0); +void func_84303E58(unk_D_84390010* arg0); +void func_84303ECC(unk_D_84390010* arg0); +void func_84304114(unk_D_84390010* arg0); +void func_84304210(unk_D_84390010* arg0); +void func_843043FC(unk_D_84390010* arg0); +void func_843045DC(unk_D_84390010* arg0); +void func_843046BC(unk_D_84390010* arg0); +void func_84304758(unk_D_84390010* arg0); +void func_84304800(unk_D_84390010* arg0); +void func_84304834(unk_D_84390010* arg0); +void func_843048C8(unk_D_84390010* arg0); +void func_843049FC(unk_D_84390010* arg0); +void func_84304ACC(unk_D_84390010* arg0); +void func_84304B50(unk_D_84390010* arg0); +void func_84304C20(unk_D_84390010* arg0); +void func_84304C8C(unk_D_84390010* arg0); +void func_84304D84(unk_D_84390010* arg0); +void func_84304F54(unk_D_84390010* arg0); +void func_8430506C(unk_D_84390010* arg0); +void func_843052C0(unk_D_84390010* arg0); +s32 func_84305458(unk_D_84390010* arg0); +void func_843054F0(unk_D_84390010* arg0); +void func_843055E0(unk_D_84390010* arg0); +void func_843056DC(unk_D_84390010* arg0); +void func_843056E4(unk_D_84390010* arg0, unk_D_84385384_func arg1); +void func_84305728(unk_D_84390010* arg0); +void func_84305760(unk_D_84390010* arg0, s32 arg1); +void func_84305808(void); +void func_843058A8(unk_D_84390010* arg0); +void func_843058C4(unk_D_84390010* arg0, s32 arg1); +s32 func_843059C0(unk_D_84390010* arg0, s32 arg1, s32 arg2); +void func_84305A74(unk_D_84390010* arg0, s32 arg1, s32 arg2); +s32 func_84305AFC(unk_D_84390010* arg0); +s32 func_84305B6C(unk_D_84390010* arg0, s32 arg1); +s32 func_84305BD8(unk_D_84390010* arg0, s32 arg1); +s32 func_84305CAC(unk_D_84390010* arg0, s32 arg1); +s32 func_84305E54(unk_D_84390010* arg0, s32 arg1); +s32 func_8430602C(unk_D_84390010* arg0, s32 arg1); +void func_843060EC(unk_D_84390010* arg0); +void func_843061EC(unk_D_84390010* arg0, u16 arg1); +s32 func_84306200(unk_D_84390010* arg0, u16 arg1); +void func_84306218(unk_D_84390010* arg0); +void func_843062F0(void); +void func_84306470(unk_D_84390010* arg0); +void func_84306584(unk_D_84390010* arg0); +void func_843065C4(unk_D_84390010* arg0); +void func_8430663C(unk_D_84390010* arg0); +void func_843066E0(unk_D_84390010* arg0); +void func_84306914(unk_D_84390010* arg0); +void func_84306A68(unk_D_84390010* arg0); +void func_84306AF0(unk_D_800AE540_1194* arg0, s32 arg1); +void func_84306BC4(unk_D_800AE540_1194* arg0); +void func_84306C1C(unk_D_84390010* arg0); +void func_84306C8C(unk_D_84390010* arg0); +void func_84306DA8(unk_D_84390010* arg0); +void func_84306E80(unk_D_84390010* arg0, s32* arg1); +void func_84306FB8(unk_D_84390010* arg0); +void func_84307078(unk_D_800AE540_1194* arg0); +void func_843071B8(unk_D_84390010* arg0, unk_D_84390010* arg1, s32 arg2); +void func_84307220(unk_D_800AE540_1194* arg0); +void func_8430732C(unk_D_84390010* arg0, unk_D_84390010* arg1); +s32 func_84307394(s32 arg0, unk_D_800AE540_1194* arg1); +void func_84307414(unk_D_84390010* arg0); +void func_8430741C(unk_D_84390010* arg0); +void func_84307424(unk_D_84390010* arg0); +void func_8430742C(unk_D_84390010* arg0); +void func_84307434(unk_D_84390010* arg0); +void func_8430743C(unk_D_84390010* arg0); +void func_84307444(unk_D_84390010* arg0); +void func_8430744C(unk_D_84390010* arg0); +void func_84307454(unk_D_84390010* arg0); +void func_8430745C(unk_D_84390010* arg0); +void func_84307464(unk_D_84390010* arg0); +void func_8430746C(unk_D_84390010* arg0); +void func_84307474(unk_D_84390010* arg0, s32 arg1); +void func_84307480(unk_D_84390010* arg0, s32 arg1); +void func_8430748C(unk_D_84390010* arg0); + + +void func_843074A0(unk_D_84390010* arg0); +void func_843074EC(unk_D_84390010* arg0); +void func_843074F4(unk_D_84390010* arg0); +void func_84307500(void); +void func_8430751C(void); +void func_8430753C(unk_D_84390010_728_0168* arg0); +void func_8430754C(unk_D_84390010* arg0); +void func_843075D0(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_84307630(void); +void func_84307638(unk_D_84390010* arg0); +void func_84307748(unk_D_84390010* arg0); +void func_84307768(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1, unk_D_86002F34_00C* arg2, unk_D_84390010* arg3); +void func_843077B0(unk_D_84390010* arg0, s32 arg1); +void func_843078F4(unk_D_84390010* arg0, s32 arg1); +void func_843079C4(unk_D_84390010* arg0); +void func_84307A14(unk_D_84390010* arg0, unk_D_84390010* arg1); +s32 func_84307A50(s32 arg0, unk_D_86002F34_00C* arg1, unk_D_86002F34_00C* arg2); + +s32 func_84307AE0(u8 arg0, u8* arg1, s32 arg2); +unk_func_80026268_arg0* func_84307B28(unk_D_84390010* arg0); +s32 func_84307B60(unk_D_84390010* arg0); +f32 func_84307BAC(unk_D_84390010* arg0); +f32 func_84307BD8(unk_D_84390010* arg0); +f32 func_84307C04(unk_D_84390010* arg0); +f32 func_84307C30(unk_D_84390010* arg0); +void func_84307C5C(unk_D_84390010* arg0); +f32 func_84307DE0(unk_D_84390010* arg0); +void func_84307EAC(unk_D_84390010* arg0, f32 arg1); +s32 func_84307EC4(unk_D_84390010* arg0); +s32 func_84307EE0(unk_D_84390010* arg0); +s32 func_84307F00(unk_D_84390010* arg0); +u8 func_84307F24(unk_D_84390010* arg0); +u8 func_84307F68(unk_D_84390010* arg0); +s16 func_84307FAC(unk_D_84390010* arg0); +s32 func_84307FE0(unk_D_84390010* arg0); +f32 func_84308014(unk_D_84390010* arg0); +f32 func_84308058(unk_D_84390010* arg0); +s16 func_8430808C(unk_D_84390010* arg0); +void func_84308094(unk_D_84390010* arg0, Vec3f* arg1); +void func_84308148(unk_D_84390010* arg0, Vec3s* arg1); +u16 func_84308164(unk_D_84390010* arg0); +s16 func_84308190(unk_D_84390010* arg0); +s32 func_843081A4(s32 arg0); +s32 func_843081BC(unk_D_84390010* arg0); +u8 func_843081C4(unk_D_84390010* arg0); +void func_843081D4(unk_D_84390010* arg0, Vec3f* arg1); +void func_843081F0(unk_D_84390010* arg0, Vec3f* arg1); +void func_843083A0(unk_D_84390010* arg0, Vec3f* arg1); +void func_84308520(unk_D_84390010* arg0, Vec3f* arg1); +f32 func_84308548(unk_D_84390010* arg0); +f32 func_84308598(unk_D_84390010* arg0); +unk_D_86002F58_004_000_004* func_843085C4(unk_D_84390010* arg0, s32 arg1); +s32 func_843085E0(unk_D_84390010* arg0, UNUSED s32 arg1); +char* func_843085F0(unk_D_84390010* arg0); +u8* func_8430862C(unk_D_84390010* arg0); +void func_84308654(unk_D_84390010* arg0, s32 arg1, s32 arg2); +void func_84308660(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_843087F8(unk_D_84390010* arg0); +void func_8430897C(unk_D_84390010* arg0); +void func_843089DC(unk_D_84390010* arg0, s32 arg1); +void func_843089F4(unk_D_84390010* arg0, s32 arg1); +void func_843089FC(unk_D_84390010* arg0, Controller* arg1); +void func_84308A04(unk_D_84390010* arg0, s32 arg1); +s32 func_84308A4C(unk_D_84390010* arg0); +s32 func_84308BD0(unk_D_84390010* arg0); +s32 func_84308D54(unk_D_84390010* arg0); +u8 func_84308D90(unk_D_800AE540_0004* arg0); +s32 func_84308D98(unk_D_84390010* arg0); +void func_84308DB8(unk_D_84390010* arg0, unk_D_84390010* arg1, s32 arg2, s32 arg3); +void func_84308ED4(unk_D_84390010* arg0, unk_D_84390010_728* arg1, s16 arg2); +void func_84308F94(unk_D_84390010* arg0, s16 arg1); +void func_84309110(unk_D_84390010* arg0); +void func_84309168(unk_D_84390010* arg0); +void func_8430920C(unk_D_84390010* arg0); +void func_843092B4(unk_D_84390010* arg0); +void func_84309328(unk_D_84390010* arg0); +void func_84309368(unk_D_84390010* arg0); + + +void func_843093F0(unk_D_84390010* arg0, f32 arg1, s16 arg2); +void func_84309448(unk_D_84390010* arg0, unk_D_84390010* arg1, f32 arg2, f32 arg3, s32 arg4); +void func_843095A4(UNUSED unk_D_84390010* arg0, unk_D_84390010* arg1, f32 arg2, f32 arg3, s32 arg4, s32 arg5); +void func_843096EC(unk_D_84390010* arg0); +void func_84309780(unk_D_84390010* arg0); +void func_84309874(unk_D_84390010* arg0); +void func_84309A24(unk_D_84390010* arg0); +s32 func_84309B0C(unk_D_84390010* arg0); +void func_84309C50(unk_D_84390010* arg0); +void func_84309D78(unk_D_84390010* arg0, s16 arg1); +void func_84309F0C(unk_D_84390010* arg0); +void func_84309F30(UNUSED unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_84309FD4(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430A090(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430A0E4(UNUSED unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430A17C(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430A22C(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430A280(UNUSED unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430A308(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430A390(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430A3E4(UNUSED unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430A464(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430A4E0(UNUSED unk_D_84390010* arg0, UNUSED unk_D_84390010* arg1); +void func_8430A4EC(unk_D_84390010* arg0, unk_D_84390010* arg1); +s32 func_8430A558(unk_D_84390010* arg0, s16 arg1, s16 arg2); +void func_8430A5D4(UNUSED unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430A618(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430A6AC(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430A7BC(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430A828(UNUSED unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430A848(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430A8DC(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430AA18(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430AA84(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430AB00(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430ABF0(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430AD10(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430AD7C(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430ADE8(UNUSED unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430AE3C(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430AE90(unk_D_84390010* arg0); +void func_8430AF08(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430AF80(UNUSED unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430B104(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430B158(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430B1B8(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430B244(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430B298(UNUSED unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430B2AC(unk_D_84390010* arg0, UNUSED unk_D_84390010* arg1); +void func_8430B374(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430B3C8(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430B40C(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430B550(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430B68C(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430B6F8(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430B734(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430B8FC(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430B950(UNUSED unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430B968(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430BAB8(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430BB0C(UNUSED unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430BB24(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430BBE4(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430BC38(UNUSED unk_D_84390010* arg0, UNUSED unk_D_84390010* arg1); +void func_8430BC44(s32 arg0); +void func_8430BD9C(unk_D_84390010* arg0, u8 arg1, u8 arg2); +void func_8430BDB0(unk_D_84390010* arg0); +void func_8430BDBC(unk_D_84390010* arg0, f32 arg1, s16 arg2); +void func_8430BE08(unk_D_84390010* arg0, unk_D_84390010* arg1, f32 arg2, f32 arg3, s32 arg4); +void func_8430BEC0(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430BF3C(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430BFB0(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430C004(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430C010(s32 arg0); + + +void func_8430C070(Vec3f* arg0, Vec3f* arg1, f32* arg2, s16* arg3, s16* arg4); +Vec3f* func_8430C120(Vec3f* arg0); +Vec3f* func_8430C138(Vec3f* arg0, Vec3f* arg1, f32 arg2, s16 arg3); +void func_8430C19C(Vec3f* arg0, f32 arg1, s16 arg2); +Vec3f* func_8430C1E4(Vec3f* arg0, Vec3f* arg1); +Vec3s* func_8430C204(Vec3s* arg0, Vec3s* arg1); +Vec3f* func_8430C224(Vec3f* arg0, f32 arg1, f32 arg2, f32 arg3); +s16 func_8430C260(f32 arg0, f32 arg1, f32 arg2, f32 arg3); +f32 func_8430C2A4(Vec3f arg0, Vec3f arg1); +f32 func_8430C308(f32 arg0, f32 arg1, f32 arg2, f32 arg3); +s32 func_8430C384(f32 arg0); +u16 func_8430C414(s32 arg0); +s32 func_8430C4F8(s16* arg0, s16 arg1, s16 arg2); +s32 func_8430C59C(s16* arg0, s16 arg1, f32 arg2); +void func_8430C718(f32* arg0, f32 arg1, f32 arg2); +void func_8430C780(s16* arg0, s16 arg1, s16 arg2); +void func_8430C7B4(u16* arg0, u16 arg1, s16 arg2); +void func_8430C7E4(f32* arg0, f32 arg1); +void func_8430C8A0(f32* arg0, f32 arg1); +void func_8430C97C(f32* arg0, f32 arg1); +void func_8430CA4C(f32* arg0, f32 arg1); +void func_8430CB3C(f32* arg0, f32 arg1); + + +void func_8430CC20(void); +void func_8430CC84(void); +s32 func_8430CCC8(void); +s32 func_8430CD0C(void); +s32 func_8430CDAC(s32 arg0, s32 arg1); +s32 func_8430CE00(void); +s32 func_8430D02C(void); +s32 func_8430D124(void); +void func_8430D268(void); +s32 func_8430D294(void); +void func_8430D30C(void); +s32 func_8430D334(unk_D_84390010* arg0); +void func_8430D364(void); +s32 func_8430D434(unk_D_84390010* arg0); +s32 func_8430D574(unk_D_84390010* arg0, s32 arg1); +void func_8430D5BC(unk_D_84390010* arg0); +void func_8430D638(unk_D_84390010* arg0); +void func_8430D6D0(unk_D_84390010* arg0); +void func_8430D710(s32 arg0); +void func_8430D814(void); +s32 func_8430D8C4(unk_D_84390010* arg0); +s32 func_8430D9EC(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430DB58(unk_D_84390010* arg0, UNUSED unk_D_84390010* arg1); +void func_8430DBA0(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430DCD4(unk_D_84390010* arg0, unk_D_84390010* arg1); +s32 func_8430DE20(unk_D_84390010* arg0, unk_D_84390010* arg1); +s32 func_8430DFCC(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430E1CC(unk_D_84390010* arg0); +void func_8430E490(unk_D_84390010* arg0); +s32 func_8430E504(unk_D_84390010* arg0); +void func_8430E580(unk_D_84390010* arg0); +void func_8430E5AC(unk_D_84390010* arg0, s32 arg1); +void func_8430E72C(unk_D_84390010* arg0, Controller* arg1); +void func_8430E8E8(unk_D_84390010* arg0); +void func_8430EB1C(unk_D_84390010* arg0); +s32 func_8430EBA8(unk_D_84390010* arg0); +s32 func_8430ED88(unk_D_84390010* arg0); +void func_8430EE50(unk_D_84390010* arg0); +void func_8430EF4C(unk_D_84390010* arg0); +s32 func_8430F044(unk_D_84390010* arg0, UNUSED Controller* arg1); +void func_8430F080(unk_D_84390010* arg0); +void func_8430F0C0(unk_D_84390010* arg0); +s32 func_8430F27C(unk_D_84390010* arg0); +s32 func_8430F350(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430F458(void); +void func_8430F4AC(void); +void func_8430F500(void); +void func_8430F598(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430F5F4(void); +void func_8430F794(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_8430F8B8(void); +void func_8430FB20(void); +void func_8430FB68(void); + + +void func_8430FC10(void); +void func_8430FC28(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void func_8430FF8C(s32 arg0, s32 arg1, s32 arg2, s32 arg3, Color_RGB8* arg4, Color_RGB8* arg5); +void func_84310334(s32 arg0, s32 arg1, s32 arg2, s32 arg3, Color_RGB8* arg4, Color_RGB8* arg5); +void func_84310360(void); +void func_84310368(s32 arg0, s32 arg1, f32 arg2, s32 arg3); +void func_843109EC(void); +void func_843109F4(s32 arg0, s32 arg1, s32 arg2); +void func_84310B9C(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +void func_84310CE4(s16 arg0, s16 arg1, s32 arg2, char* arg3, s32 arg4); +void func_84310DC4(s16 arg0, s16 arg1, s32 arg2, u8* arg3, s32 arg4, s32 arg5); +void func_84310FA4(unk_D_84390010* arg0, unk_D_800AE540_0004* arg1, s16 arg2, s16 arg3, s32 arg4, u16 arg5, s32 arg6); +void func_84311048(unk_D_84390010* arg0, unk_func_80026268_arg0* arg1, unk_D_84385790* arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8, s32 arg9, s32 argA); +s32 func_843112C4(s32 arg0, s32 arg1, s32 arg2, s32 arg3, u8* arg4); +void func_84311420(void); +void func_84311428(s16 arg0, s16 arg1, s16 arg2, s16 arg3); +void func_843116D8(s16 arg0, s16 arg1); +void func_843118A8(s16 arg0, s16 arg1); +void func_84311A38(unk_D_84390010* arg0, s16 arg1, s16 arg2); +void func_84311F30(unk_D_84390010* arg0, s16 arg1, s16 arg2, u16 arg3, s32 arg4); +void func_843128A0(unk_D_84390010* arg0, s16 arg1, s16 arg2, u16 arg3, s32 arg4); +void func_84313148(unk_D_84390010* arg0, s16 arg1, s16 arg2, s32 arg3); +void func_843133B4(unk_D_84390010* arg0, s16 arg1, s16 arg2, s32 arg3); +void func_843135B8(unk_D_84390010* arg0, s16 arg1, s16 arg2, s32 arg3); +void func_84313750(s32 arg0, s32 arg1, char* arg2); +s32 func_8431379C(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +s32 func_84313908(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +void func_84313A74(unk_D_84390010* arg0, s16 arg1, s16 arg2, s32 arg3); +void func_8431493C(s16 arg0, s16 arg1, s16 arg2, s32 arg3); +void func_84314B20(s16 arg0, s16 arg1, char* arg2); +void func_84314B6C(unk_D_84390010* arg0, unk_D_800AE540_0004* arg1, unk_func_80026268_arg0* arg2, s32 arg3, s32 arg4, s32 arg5); +void func_84314F60(unk_D_84390010* arg0, unk_D_800AE540_0004* arg1, unk_func_80026268_arg0* arg2, s32 arg3, s32 arg4, s32 arg5); +void func_8431524C(unk_D_84390010* arg0, unk_D_800AE540_0004* arg1, s16 arg2, s16 arg3, s32 arg4); +void func_84315550(unk_D_84390010* arg0, s16 arg1, s16 arg2, s32 arg3); +void func_8431595C(unk_D_84390010* arg0, s16 arg1, s16 arg2, s32 arg3); +void func_84315ADC(s32 arg0, s16 arg1, s16 arg2, char* arg3); +s32 func_84315BC0(char* arg0, s16 arg1, s16 arg2); +void func_84315C28(unk_D_843901A0_4C8* arg0, s16 arg1, s16 arg2, Vec3f arg3); +void func_84315D88(unk_D_843901A0_4C8* arg0, s16 arg1, s16 arg2); +s32 func_84315EC0(unk_D_843901A0_4C8* arg0, s16 arg1, s16 arg2); +void func_84315FAC(unk_D_843901A0_4C8* arg0, s16 arg1, s16 arg2, Vec3f arg3); +void func_843160C0(unk_D_843901A0_4C8* arg0, s16 arg1, s16 arg2); +s32 func_843161F8(unk_D_843901A0_4C8* arg0, s16 arg1, s16 arg2); +void func_843162E4(s32 arg0, s16 arg1, s16 arg2, char* arg3); +void func_843163C8(unk_D_84390010* arg0, s16 arg1, s16 arg2, s32 arg3); +void func_84316610(void); +void func_84316640(s16 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5, s16 arg6, s16 arg7); +void func_843167D4(s32 arg0, s32 arg1, s32 arg2, s32 arg3, u8* arg4, s32 arg5); +void func_8431694C(void); +void func_84317004(void); +void func_8431712C(void); +void func_843172A0(unk_D_84390010* arg0, unk_D_84390010_654* arg1); +void func_84317558(unk_D_84390010* arg0, unk_D_84390010_654* arg1); + + +void func_84317810(void); +void func_8431790C(void); +void func_84317940(s8* arg0, s8* arg1, ...); +void func_843179F4(s8* arg0, s8 arg1); +void func_84317AA8(char* arg0, s32 arg1); +void func_84317B38(void); +void func_84317B40(void); +void func_84317BDC(void); +void func_84317EDC(void); +void func_843180AC(void); +void func_843184E4(s32 arg0); +void func_843184FC(void); +void func_84318514(s8* arg0); +void func_84318640(unk_D_843901A0_4C8* arg0, s16 arg1, s16 arg2); +s32 func_84318CE4(unk_D_843901A0_4C8* arg0); +void func_843190A8(s16 arg0, s16 arg1); +void func_843193F4(unk_D_84390010* arg0); +void func_84319408(unk_D_84390010* arg0, s32 arg1); +void func_843194A0(unk_D_84390010* arg0); +void func_84319564(void); +void func_8431962C(void); +void func_84319668(void); +void func_843196A4(void); + + +s32 func_843197A0(void); +s32 func_84319878(UNUSED unk_D_84390010* arg0, unk_D_86002F34_00C* arg1); +s32 func_843198EC(UNUSED unk_D_84390010* arg0, UNUSED unk_D_86002F34_00C* arg1); +void func_8431995C(unk_D_86002F34_00C* arg0); +void func_84319AE8(unk_D_86002F34_00C* arg0); +void func_84319C58(unk_D_86002F34_00C* arg0, s32 arg1); +void func_84319F10(unk_D_86002F34_00C* arg0, s32 arg1); +void func_8431A024(unk_D_86002F34_00C* arg0, s32 arg1); +void func_8431A098(unk_D_86002F34_00C* arg0); +void func_8431A130(unk_D_86002F34_00C* arg0); +void func_8431A1C8(unk_D_86002F34_00C* arg0); +void func_8431A2C8(unk_D_86002F34_00C* arg0, s32 arg1); +void func_8431A4C4(unk_D_86002F34_00C* arg0); +void func_8431A718(unk_D_86002F34_00C* arg0); +void func_8431A780(unk_D_86002F34_00C* arg0); +void func_8431A7B8(unk_D_86002F34_00C* arg0); +void func_8431A8B0(unk_D_86002F34_00C* arg0); +void func_8431A94C(unk_D_86002F34_00C* arg0); +void func_8431A9E0(unk_D_86002F34_00C* arg0); +void func_8431AA3C(unk_D_86002F34_00C* arg0); +void func_8431AA78(unk_D_86002F34_00C* arg0); +void func_8431AAAC(unk_D_86002F34_00C* arg0); +void func_8431AAFC(unk_D_86002F34_00C* arg0); + + +f32 func_8431AD20(unk_D_84390010* arg0, f32 arg1, f32 arg2); +s32 func_8431AD68(s32 arg0); +s32 func_8431ADAC(s32 arg0); +s32 func_8431ADF0(s32 arg0); +s32 func_8431AE20(s32 arg0); +void func_8431AE4C(s32 arg0); +void func_8431AE5C(void); +void func_8431AE6C(void); +void func_8431AE7C(unk_D_86002F34_00C* arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, s16 arg5, s16 arg6); +void func_8431AED8(unk_D_84390010* arg0, Vec3f* arg1); +void func_8431AF58(unk_D_84390010* arg0, Vec3f* arg1, s32 arg2); +void func_8431AFB4(s32 arg0, s32 arg1); +void func_8431AFD0(unk_D_86002F34_00C* arg0, f32 arg1, f32 arg2); +void func_8431AFE4(s32 arg0, u16 arg1); +void func_8431B004(void); +void func_8431B078(unk_D_84390010* arg0); +void func_8431B174(unk_D_86002F34_00C* arg0); +void func_8431B290(UNUSED unk_D_84390010* arg0); +s32 func_8431B2B8(s16 arg0, s16 arg1); +s32 func_8431B34C(unk_D_86002F34_00C* arg0, s16 arg1, s16 arg2); +s32 func_8431B42C(UNUSED unk_D_86002F34_00C* arg0, s16 arg1, s16 arg2); +void func_8431B4C0(s16 arg0, s16 arg1, f32 arg2); +void func_8431B500(unk_D_86002F34_00C* arg0, s32 arg1); +void func_8431B830(unk_D_86002F34_00C* arg0); +void func_8431B858(unk_D_84390010* arg0, unk_D_86002F34_00C* arg1); +void func_8431BA5C(void); +void func_8431BAB4(unk_D_84390010* arg0, unk_D_86002F34_00C* arg1, Vec3f arg2, s16 arg3, s16 arg4, f32 arg5, f32 arg6); +void func_8431BB24(unk_D_86002F34_00C* arg0, Vec3f arg1, s16 arg2, s16 arg3, f32 arg4, f32 arg5); +void func_8431BB80(unk_D_86002F34_00C* arg0, Vec3f arg1, s16 arg2, s16 arg3, f32 arg4, f32 arg5); +void func_8431BBDC(unk_D_86002F34_00C* arg0, s16 arg1, s16 arg2, f32 arg3, f32 arg4); +void func_8431BC38(unk_D_86002F34_00C* arg0, Vec3f arg1, s16 arg2, s16 arg3, f32 arg4, f32 arg5); +void func_8431BCA4(unk_D_86002F34_00C* arg0, s16 arg1, s16 arg2, f32 arg3, f32 arg4); +void func_8431BD10(UNUSED unk_D_86002F34_00C* arg0); +void func_8431BD18(f32* arg0, f32* arg1); +void func_8431BD94(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1, UNUSED f32 arg2); +void func_8431C594(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1); +void func_8431C71C(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1); +void func_8431C750(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1); +void func_8431C784(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1); +void func_8431C7A4(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1); +s32 func_8431C8E0(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1); +void func_8431CB54(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1); +void func_8431CC38(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1); +void func_8431CCFC(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1); +void func_8431CEF0(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1, UNUSED s32 arg2); +void func_8431CFA4(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1); +s32 func_8431D048(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1); +s32 func_8431D118(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1, s32 arg2, s32 arg3); +s32 func_8431D318(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1); +void func_8431D5C8(UNUSED unk_D_86002F34_00C* arg0); +void func_8431D5D0(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1, s32 arg2); +void func_8431D704(s16 arg0, s16 arg1, s16 arg2, s16 arg3); +void func_8431D750(f32 arg0, f32 arg1); +void func_8431D764(s16 arg0, s16 arg1, s16 arg2, s16 arg3); +void func_8431D7B0(f32 arg0, f32 arg1); +void func_8431D7C4(f32 arg0, f32 arg1); +void func_8431D7D8(unk_D_86B0C160* arg0, unk_D_86002F34_00C* arg1, unk_D_84390010* arg2); +void func_8431D968(unk_D_86B0C160* arg0, unk_D_86002F34_00C* arg1); +s32 func_8431DA38(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1); +s32 func_8431DBEC(UNUSED unk_D_86002F34_00C* arg0); +void func_8431DC78(unk_D_86002F34_00C* arg0, s32 arg1); +s32 func_8431DE30(unk_D_86002F34_00C* arg0, s32 arg1); +void func_8431DF98(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1); +void func_8431E118(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1); +void func_8431E1DC(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1, s32 arg2); +void func_8431E368(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1, s32 arg2); +void func_8431E4DC(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1, s32 arg2); +void func_8431E63C(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1, s32 arg2); +void func_8431E7D0(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1, s32 arg2); +void func_8431E90C(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1, s32 arg2); +void func_8431EA1C(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1, s32 arg2, s32 arg3); +void func_8431EAB8(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1); +void func_8431EBD0(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1); +void func_8431ECEC(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1); +void func_8431EE08(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1); +void func_8431EF54(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1); +void func_8431F050(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1, s32 arg2); +void func_8431F194(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1); +void func_8431F290(unk_D_84390010* arg0, unk_D_86002F34_00C* arg1, s32 arg2, s32 arg3); +void func_8431F420(unk_D_84390010* arg0, unk_D_86002F34_00C* arg1, s32 arg2); +void func_8431F500(unk_D_84390010* arg0, unk_D_86002F34_00C* arg1, s32 arg2); + + +void func_8431F610(unk_D_84390010* arg0); +void func_8431F680(void); +s32 func_8431F690(unk_D_84390010* arg0); +s32 func_8431F7B0(unk_D_84390010* arg0); +s32 func_8431F888(unk_D_84390010* arg0); +s32 func_8431F998(unk_D_84390010* arg0); +s32 func_8431FAB4(void); +void func_8431FC74(void); +void func_8431FCC4(void); +s32 func_8431FCCC(unk_D_84390010* arg0); +void func_8431FF18(void); +void func_8431FF28(void); +void func_8431FF3C(UNUSED unk_D_86002F34_00C* arg0, s32 arg1); +void func_8431FF5C(unk_D_86002F34_00C* arg0); +void func_8431FF70(unk_D_86002F34_00C* arg0); +s32 func_8431FF8C(unk_D_84390010* arg0); +s32 func_8431FFD0(unk_D_84390010* arg0); +s32 func_84320020(unk_D_84390010* arg0); +s32 func_84320064(unk_D_84390010* arg0); +s32 func_843200B4(unk_D_84390010* arg0); +void func_84320108(void); +void func_843202A0(void); +s32 func_84320400(void); +void func_8432056C(void); +s32 func_84320658(s32 arg0); +s32 func_843206B8(s32 arg0); +s32 func_84320710(s32 arg0); +void func_84320768(unk_D_86002F34_00C* arg0); +void func_8432079C(u8 arg0); +void func_84320864(void); +void func_843208B0(void); +s32 func_84320A8C(void); +void func_84320B48(void); +void func_84320C38(unk_D_86002F34_00C* arg0); +void func_84320CEC(unk_D_86002F34_00C* arg0); +void func_84320E54(unk_D_86002F34_00C* arg0); +s32 func_84320EA0(void); +s32 func_8432103C(void); +s32 func_843210BC(void); +void func_8432113C(void); +void func_84321184(unk_D_86002F34_00C* arg0); +void func_84321208(unk_D_86002F34_00C* arg0); +s32 func_84321594(unk_D_84390010* arg0); +void func_84321698(unk_D_86002F34_00C* arg0); +void func_84321860(unk_D_86002F34_00C* arg0); +void func_84321A40(unk_D_86002F34_00C* arg0); +void func_84321AAC(unk_D_86002F34_00C* arg0); +void func_84321B54(unk_D_86002F34_00C* arg0); +void func_84321D34(UNUSED unk_D_86002F34_00C* arg0); +void func_84321D3C(unk_D_86002F34_00C* arg0); +void func_84321F2C(UNUSED unk_D_86002F34_00C* arg0); +void func_84321F74(UNUSED unk_D_86002F34_00C* arg0); +void func_84321FB8(unk_D_86002F34_00C* arg0); +void func_843221A8(unk_D_86002F34_00C* arg0); +void func_84322284(UNUSED unk_D_86002F34_00C* arg0); +void func_84322350(unk_D_86002F34_00C* arg0); +void func_843223FC(unk_D_84390010* arg0); +void func_843224C8(unk_D_86002F34_00C* arg0); +void func_84322600(unk_D_86002F34_00C* arg0); +void func_84322640(unk_D_86002F34_00C* arg0); +void func_84322698(unk_D_84390010* arg0); +void func_843226A4(UNUSED unk_D_86002F34_00C* arg0); +void func_843226E0(unk_D_86002F34_00C* arg0); +s32 func_843229A4(unk_D_86002F34_00C* arg0); +void func_84322B04(unk_D_86002F34_00C* arg0); +void func_84322E70(unk_D_86002F34_00C* arg0); +void func_843230D8(unk_D_86002F34_00C* arg0, s32 arg1); +s32 func_843233E0(unk_D_86002F34_00C* arg0, s32 arg1); +void func_843234A0(UNUSED unk_D_86002F34_00C* arg0); +s32 func_843234FC(UNUSED unk_D_86002F34_00C* arg0); +void func_84323538(unk_D_86002F34_00C* arg0); +void func_843235F4(unk_D_86002F34_00C* arg0); +void func_84323740(unk_D_86002F34_00C* arg0); +void func_84323808(unk_D_86002F34_00C* arg0); +void func_84323928(unk_D_86002F34_00C* arg0); +void func_843239EC(unk_D_86002F34_00C* arg0); +void func_84323AFC(unk_D_84390010* arg0); +s32 func_84323B2C(unk_D_84390010* arg0); +void func_84323B50(unk_D_86002F34_00C* arg0, s32* arg1, s32* arg2); +void func_84323BCC(unk_D_86002F34_00C* arg0); +void func_84323CE4(unk_D_86002F34_00C* arg0); +void func_84323E44(unk_D_86002F34_00C* arg0); +void func_84323FA0(unk_D_86002F34_00C* arg0); +void func_84324404(void); +void func_8432440C(void); +void func_84324414(unk_D_86002F34_00C* arg0); +void func_843248B8(unk_D_86002F34_00C* arg0); +void func_84324988(unk_D_86002F34_00C* arg0); +void func_843249F8(unk_D_86002F34_00C* arg0); +s32 func_84324A68(void); +void func_84324C28(unk_D_86002F34_00C* arg0); +void func_84324F1C(unk_D_86002F34_00C* arg0); +void func_84325080(unk_D_86002F34_00C* arg0); +void func_843251D4(unk_D_86002F34_00C* arg0); +void func_843255DC(unk_D_86002F34_00C* arg0); +void func_84325724(unk_D_86002F34_00C* arg0); +void func_84325A10(unk_D_86002F34_00C* arg0); +s32 func_84325CAC(unk_D_84390010* arg0); +void func_84325CDC(unk_D_86002F34_00C* arg0); +void func_84325E94(unk_D_86002F34_00C* arg0); +void func_843261CC(unk_D_86002F34_00C* arg0); +void func_84326460(unk_D_86002F34_00C* arg0); +void func_84326570(unk_D_86002F34_00C* arg0); +void func_843266D4(unk_D_86002F34_00C* arg0); +void func_8432691C(unk_D_86002F34_00C* arg0); +void func_84326A70(void); +void func_84326A78(UNUSED unk_D_86002F34_00C* arg0); +void func_84326AC4(unk_D_86002F34_00C* arg0); +void func_84326CB4(unk_D_86002F34_00C* arg0); +void func_84326E84(unk_D_86002F34_00C* arg0); +void func_8432734C(unk_D_86002F34_00C* arg0); +void func_843275F8(unk_D_86002F34_00C* arg0); +void func_84327720(unk_D_86002F34_00C* arg0); +void func_84327B90(unk_D_86002F34_00C* arg0); +void func_84327D98(unk_D_84390010* arg0); +void func_84327DC0(unk_D_86002F34_00C* arg0); +void func_84328250(unk_D_86002F34_00C* arg0); +void func_84328734(unk_D_86002F34_00C* arg0); + + +void func_84328990(unk_D_86002F34_00C* arg0); +void func_84328A70(UNUSED unk_D_86002F34_00C* arg0); +void func_84328B30(UNUSED unk_D_86002F34_00C* arg0); +void func_84328BF0(unk_D_86002F34_00C* arg0); +void func_84328D70(unk_D_86002F34_00C* arg0); +void func_84328EC0(UNUSED unk_D_86002F34_00C* arg0); +void func_84328F2C(unk_D_86002F34_00C* arg0); +void func_843290A0(unk_D_86002F34_00C* arg0); +void func_84329164(unk_D_86002F34_00C* arg0); +void func_843292D8(unk_D_86002F34_00C* arg0); +void func_843293A8(UNUSED unk_D_86002F34_00C* arg0); +void func_843293B0(void); +void func_843293B8(unk_D_86002F34_00C* arg0); + + +void func_843294A0(unk_D_86002F34_00C* arg0); +void func_843295D0(unk_D_86002F34_00C* arg0); +void func_843296B8(unk_D_86002F34_00C* arg0, UNUSED unk_D_84390010* arg1, UNUSED unk_D_84390010* arg2); +void func_843297AC(void); +void func_843297E8(UNUSED unk_D_86002F34_00C* arg0); +void func_843297F0(UNUSED unk_D_86002F34_00C* arg0); +void func_843297F8(unk_D_86002F34_00C* arg0); +void func_84329858(unk_D_86002F34_00C* arg0); +void func_84329B04(unk_D_86002F34_00C* arg0); +void func_84329DB8(unk_D_86002F34_00C* arg0); +u16 func_84329DFC(unk_D_84390010* arg0, unk_D_86002F34_00C* arg1, unk_D_84390010* a2, s16 arg3, f32 arg4); +u16 func_8432A024(unk_D_84390010* arg0, unk_D_86002F34_00C* arg1, unk_D_84390010* a2, s16 arg3, f32 arg4); +void func_8432A2D4(unk_D_86002F34_00C* arg0); +void func_8432A398(unk_D_86002F34_00C* arg0); +void func_8432A414(void); +void func_8432A41C(void); +void func_8432A448(void); +void func_8432A4B0(void); +void func_8432A510(void); +void func_8432A578(unk_D_86002F34_00C* arg0); +void func_8432ABBC(unk_D_86002F34_00C* arg0); +void func_8432ADD8(unk_D_86002F34_00C* arg0); +s32 func_8432AEE4(s32 arg0, unk_D_86002F34_00C* arg1); + + +void func_8432AF70(unk_D_84390010* arg0); +void func_8432B0A4(unk_D_84390010* arg0); +void func_8432B0E4(unk_D_84390010* arg0); +void func_8432B13C(unk_D_84390010* arg0); +void func_8432B1BC(unk_D_84390010* arg0); +void func_8432B228(unk_D_84390010* arg0); +void func_8432B38C(unk_D_84390010* arg0); +void func_8432B448(unk_D_84390010* arg0); + + +void func_8432B490(void); +void func_8432B4B0(void); +void func_8432B4D0(void); +void func_8432B4F0(void); +void func_8432B510(unk_D_84390010* arg0, s16 arg1); +void func_8432B554(unk_D_84390010* arg0); +void func_8432B588(unk_D_84390010* arg0); +void func_8432B5B8(unk_D_84390010* arg0, unk_D_800FCB18* arg1, s32 arg2); +void func_8432B604(void); +void func_8432B704(void); +void func_8432B808(void); +void func_8432BBC0(void); +void func_8432BF88(unk_D_84390010* arg0, s32 arg1); +void func_8432C0D0(s16 arg0); +void func_8432C14C(s16 arg0); +void func_8432C194(func_D_84390300 arg0, func_D_84390320 arg1); +void func_8432C1E0(s32 arg0, s32 arg1, s32 arg2); +void func_8432C3F8(void); +void func_8432C4CC(UNUSED unk_D_86002F34_00C* arg0); +void func_8432C504(u8 arg0); +u8 func_8432C518(void); +void func_8432C524(u8 arg0); +u8 func_8432C538(void); +s16 func_8432C544(void); +void func_8432C550(s32 arg0, unk_D_84390010* arg1, unk_D_84390010* arg2, s16 arg3, s16 arg4); +void func_8432C5D4(s32 arg0, unk_D_84390010* arg1, unk_D_84390010* arg2, s16 arg3, s16 arg4); +void func_8432C604(s32 arg0, unk_D_84390010* arg1, unk_D_84390010* arg2, s16 arg3, s16 arg4); +void func_8432C654(s32 arg0, unk_D_84390010* arg1, unk_D_84390010* arg2, s16 arg3, s16 arg4); +void func_8432C68C(s32 arg0, unk_D_84390010* arg1, unk_D_84390010* arg2, s16 arg3, s16 arg4); +void func_8432C6C4(s32 arg0, unk_D_84390010* arg1); +void func_8432C714(s32 arg0, unk_D_84390010* arg1); +void func_8432C748(s32 arg0, unk_D_84390010* arg1); +void func_8432C768(s32 arg0); +void func_8432C7A0(u8 arg0, unk_D_84390010* arg1); +void func_8432C80C(u8 arg0, unk_D_84390010* arg1); +void func_8432C830(arg1_func_80019420* arg0); +void func_8432C86C(void); +void func_8432C8BC(s16 arg0); +void func_8432C958(unk_D_800AE540_1194* arg0, s16 arg1); +void func_8432C9C0(unk_D_800AE540_1194* arg0, s16 arg1); +void func_8432CA48(void); +void func_8432CAA8(unk_D_800AE540_1194* arg0); +void func_8432CAD0(void); +unk_D_8140E720* func_8432CB60(unk_D_86002F58_004_000* arg0); +unk_D_86002F58_004_000* func_8432CB68(unk_D_8140E720* arg0); +void func_8432CBF8(unk_D_86002F58_004_000* arg0); +unk_D_86002F58_004_000* func_8432CC54(unk_D_8140E720* arg0); +void func_8432CD14(unk_D_86002F58_004_000* arg0); +void func_8432CD70(unk_D_86002F58_004_000* arg0, s16 arg1, s16 arg2); +void func_8432CDD8(unk_D_86002F58_004_000* arg0, s16 arg1); +void func_8432CE00(unk_D_86002F58_004_000* arg0, s16 arg1); +void func_8432CE3C(unk_D_86002F58_004_000* arg0, s16 arg1); +void func_8432CE78(unk_D_86002F58_004_000* arg0, s16 arg1); +s32 func_8432CED4(unk_D_86002F58_004_000* arg0); +void func_8432CEF0(UNUSED unk_D_86002F34_00C* arg0); +void func_8432CF74(UNUSED unk_D_86002F34_00C* arg0); +void func_8432CFCC(unk_D_86002F34_00C* arg0); +s32 func_8432D0D8(s32 arg0, unk_D_86002F34_00C* arg1); +void func_8432D150(void); +void func_8432D178(void); +void func_8432D340(Vec3f* arg0, f32 arg1); +void func_8432D398(s16* arg0, s16* arg1); +void func_8432D424(s16* arg0); +void func_8432D468(s16* arg0, s16* arg1); +void func_8432D4F4(s16* arg0); +void func_8432D538(s16* arg0, s16* arg1); +void func_8432D55C(s16* arg0); +void func_8432D570(s16* arg0, s16* arg1); +void func_8432D594(s16* arg0); + + +void func_8432D5B0(void); +unk_D_8140E724* func_8432D61C(void); +void func_8432D6B0(unk_D_8140E724* arg0); +void func_8432D6C8(unk_D_8140E720* arg0, Vec3f arg1, Vec3s arg2, s32 arg3, s32 arg4); +void func_8432D76C(unk_D_8140E720* arg0, unk_D_8140E720* arg1, func_unk_D_8140E724_008 arg2, unk_D_8140E728_01C* arg3, s32 arg4); +void func_8432D844(unk_D_8140E720* arg0, func_unk_D_8140E724_008 arg1, unk_D_8140E728_01C* arg2, s16 arg3); +void func_8432D8E8(unk_D_8140E720* arg0, func_unk_D_8140E724_008 arg1, unk_D_8140E728_01C* arg2, s16 arg3, s16 arg4, s16 arg5); +unk_D_8140E720* func_8432D9BC(s16 arg0, s16 arg1, s32 arg2, f32 arg3); +void func_8432DA64(unk_D_8140E720* arg0); +void func_8432DAB8(unk_D_8140E720* arg0); +void func_8432DAEC(unk_D_8140E720* arg0); +void func_8432DE0C(unk_D_8140E720* arg0); +void func_8432E0A4(unk_D_8140E720* arg0); +void func_8432E144(unk_D_8140E720* arg0); +void func_8432E184(void); +void func_8432E200(unk_D_8140E720* arg0, unk_D_84390010* arg1, unk_D_8140E724* arg2, s16 arg3); +void func_8432E30C(unk_D_8140E724* arg0, s32 arg1); +void func_8432E434(unk_D_8140E724* arg0); +void func_8432E454(unk_D_8140E724* arg0); +void func_8432E474(unk_D_8140E724* arg0); +void func_8432E4B0(unk_D_8140E724* arg0); +void func_8432E5A4(void); +void func_8432E68C(void); +void func_8432E6B4(void); +void func_8432E784(void); +s32 func_8432E8B0(void); +void func_8432E8BC(void); +void func_8432E8EC(void); +s32 func_8432E97C(void); +void func_8432E99C(void); +void func_8432E9AC(void); +void func_8432E9B8(void); +void func_8432E9D8(s32 arg0); +void func_8432EA60(u8 arg0, unk_D_84390010* arg1); +void func_8432EB14(void); +void func_8432EB20(s32 arg0); +void func_8432EB2C(s32 arg0); +void func_8432EB44(void); +unk_D_8140E724* func_8432EB64(s32 arg0, s32 arg1, s8 arg2, func_unk_D_8140E724 arg3, unk_D_8140E728_01C* arg4, unk_D_84390010* arg5, s16 arg6, s16 arg7, u8 arg8, u8 arg9, u8 argA, u8 argB); +unk_D_8140E724* func_8432EC28(s32 arg0, func_unk_D_8140E724 arg1, unk_D_8140E728_01C* arg2, s16 arg3, s16 arg4, u8 arg5, u8 arg6, u8 arg7, u8 arg8); +unk_D_8140E724* func_8432ECA0(s32 arg0, s32 arg1, s8 arg2, func_unk_D_8140E724 arg3, unk_D_8140E728_01C* arg4, s16 arg5, s16 arg6, u8 arg7, u8 arg8, u8 arg9, u8 argA); +unk_D_8140E724* func_8432ED0C(s32 arg0, s16 arg1, u8 arg2); +unk_D_8140E724* func_8432ED74(s32 arg0, s16 arg1, s16 arg2, u8 arg3, u8 arg4); +unk_D_8140E724* func_8432EDE8(s32 arg0, s16 arg1, s16 arg2, u8 arg3); +unk_D_8140E724* func_8432EE5C(s32 arg0, s16 arg1, s16 arg2, u8 arg3, u8 arg4); +unk_D_8140E724* func_8432EED0(s32 arg0, s32 arg1, s8 arg2, s16 arg3, s16 arg4, u8 arg5, u8 arg6); +unk_D_8140E724* func_8432EF40(s32 arg0, s16 arg1, s16 arg2, u8 arg3); +unk_D_8140E724* func_8432EFB4(s32 arg0, s16 arg1, s16 arg2, u8 arg3, u8 arg4); +unk_D_8140E724* func_8432F028(s32 arg0, s32 arg1, s8 arg2, s16 arg3, s16 arg4, u8 arg5, u8 arg6); +unk_D_8140E724* func_8432F098(s32 arg0, s16 arg1, u8 arg2); +unk_D_8140E724* func_8432F104(s32 arg0, s16 arg1, u8 arg2, u8 arg3); +unk_D_8140E724* func_8432F174(s32 arg0, s32 arg1, s8 arg2, s16 arg3, u8 arg4, u8 arg5); +unk_D_8140E724* func_8432F1E0(s32 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4); +unk_D_8140E724* func_8432F254(s32 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4); +unk_D_8140E724* func_8432F2C8(s32 arg0, u8 arg1, s16 arg2, s16 arg3, s16 arg4); +unk_D_8140E724* func_8432F344(s32 arg0, s16 arg1, u8 arg2, s16 arg3, s16 arg4, s16 arg5); +unk_D_8140E724* func_8432F3C4(s32 arg0, s16 arg1, u8 arg2, s16 arg3, s16 arg4); +unk_D_8140E724* func_8432F440(s32 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4); +unk_D_8140E724* func_8432F4BC(s32 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4); +unk_D_8140E724* func_8432F538(s32 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5); +unk_D_8140E724* func_8432F5B8(s32 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5); +unk_D_8140E724* func_8432F638(s32 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5); +unk_D_8140E724* func_8432F6B8(s32 arg0, s16 arg1, u8 arg2); +unk_D_8140E724* func_8432F728(s32 arg0, s16 arg1, s16 arg2, u8 arg3); +unk_D_8140E724* func_8432F7A0(s32 arg0, s16 arg1, s16 arg2, s16 arg3); +unk_D_8140E724* func_8432F818(s32 arg0); +unk_D_8140E724* func_8432F884(s32 arg0); +unk_D_8140E724* func_8432F8E8(s32 arg0, u8 arg1); +unk_D_8140E724* func_8432F93C(s32 arg0, u8 arg1); +void func_8432F998(void); +void func_8432F9A0(void); +void func_8432F9A8(s32 arg0); +void func_8432F9B4(void); +s32 func_8432F9C0(void); +s32 func_8432F9CC(s32 arg0); +s32 func_8432FA0C(void); +s32 func_8432FA30(void); +void func_8432FA54(unk_D_84390010* arg0, s16 arg1, Vec3f* arg2); +void func_8432FB38(Vec3f* arg0); +void func_8432FB64(Vec3f* arg0); +void func_8432FB90(Vec3f* arg0); +void func_8432FBBC(Vec3f* arg0); +void func_8432FC14(Vec3f* arg0); +void func_8432FC40(unk_D_84390010* arg0, Vec3f* arg1); +f32 func_8432FC60(unk_D_84390010* arg0); +f32 func_8432FC94(unk_D_84390010* arg0); +void func_8432FCB4(unk_D_84390010* arg0); +f32 func_8432FCD4(void); +void func_8432FCF8(void); +f32 func_8432FD1C(void); +void func_8432FD40(void); +unk_D_86002F34_00C* func_8432FD64(void); +unk_D_8140E720* func_8432FD70(Vec3f arg0, u8 arg1); +void func_8432FDF0(unk_D_8140E720* arg0, Vec3f arg1); +void func_8432FE24(unk_D_8140E720* arg0); +s16 func_8432FE44(unk_D_8140E720* arg0); +void func_8432FEC4(unk_D_8140E720* arg0); +void func_8432FEEC(unk_D_8140E720* arg0); + + +void func_8432FF20(unk_D_8140E720* arg0); +void func_8432FF8C(unk_D_8140E720* arg0); +void func_84330048(unk_D_8140E720* arg0); +void func_843300B4(unk_D_8140E720* arg0); +void func_8433010C(unk_D_8140E720* arg0, u8 arg1); + + +s32 func_84330170(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1); +void func_84330218(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1); +void func_84330300(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1); +void func_84330344(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1); +void func_84330388(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1); +s32 func_843304AC(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1); +void func_84330574(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1); +void func_84330688(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1); +void func_8433079C(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1); +void func_84330934(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1); +void func_84330A18(unk_D_8140E720* arg0, u8* arg1); +void func_84330AF0(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1); +void func_84330B18(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1); +void func_84330B40(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1); +void func_84330C70(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1); +void func_84330D64(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1); +void func_84330E58(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1); +void func_84330F4C(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1); +void func_84331094(UNUSED unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1); +void func_843310A0(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1); +void func_843311D8(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1); +void func_84331314(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1); +void func_84331450(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1); +void func_8433157C(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1); +void func_843316A8(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1); +void func_843317D4(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1); +void func_843318F8(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1); +void func_84331A1C(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1); +void func_84331B58(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1); +void func_84331C34(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1); +void func_84331D60(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1); + + +void func_84331DA0(unk_D_8140E720* arg0); +void func_84331DC8(unk_D_8140E720* arg0); +void func_84331E64(unk_D_8140E720* arg0); +void func_84331EAC(unk_D_8140E720* arg0); +void func_84331F64(unk_D_8140E720* arg0); +void func_84331FAC(unk_D_8140E720* arg0); +void func_8433209C(void); +void func_843320A4(unk_D_8140E720* arg0); +void func_84332174(unk_D_8140E720* arg0); +void func_843321BC(unk_D_8140E720* arg0); +void func_8433227C(unk_D_8140E720* arg0); +void func_843322C4(unk_D_8140E720* arg0); +void func_8433237C(unk_D_8140E720* arg0); +void func_843323BC(unk_D_8140E720* arg0); +void func_843324A4(unk_D_8140E720* arg0); +void func_843324EC(unk_D_8140E720* arg0); +void func_843325C4(unk_D_8140E720* arg0); +void func_84332604(unk_D_8140E720* arg0); +void func_843326EC(unk_D_8140E720* arg0); +void func_843327B8(unk_D_8140E720* arg0); +void func_843328A8(unk_D_8140E720* arg0); +void func_84332964(unk_D_8140E720* arg0); +void func_84332AD8(unk_D_8140E720* arg0); +void func_84332AFC(unk_D_8140E720* arg0); +void func_84332BA4(unk_D_8140E720* arg0); +void func_84332BE4(unk_D_8140E720* arg0); +void func_84332C90(unk_D_8140E720* arg0); +void func_84332CD0(unk_D_8140E720* arg0); +void func_84332D68(unk_D_8140E720* arg0); +void func_84332DB0(unk_D_8140E720* arg0); +void func_84332E2C(unk_D_8140E720* arg0); +void func_84332E6C(unk_D_8140E720* arg0); +void func_84332EE8(unk_D_8140E720* arg0); +void func_84332F30(unk_D_8140E720* arg0); +void func_84332F90(unk_D_8140E720* arg0); +void func_84332FD0(unk_D_8140E720* arg0); +void func_84333060(unk_D_8140E720* arg0); +void func_843330A0(unk_D_8140E720* arg0); + + +void func_84333130(unk_D_8140E720* arg0, s16 arg1); +void func_84333210(unk_D_8140E720* arg0); +void func_843332B4(unk_D_8140E720* arg0); +void func_843334DC(unk_D_8140E720* arg0); +void func_84333570(unk_D_8140E720* arg0); +void func_84333600(unk_D_8140E720* arg0); +void func_8433378C(unk_D_8140E720* arg0); +void func_84333884(unk_D_8140E720* arg0); +void func_84333928(unk_D_8140E720* arg0); +void func_84333A20(unk_D_8140E720* arg0, s16 arg1); +void func_84333B04(unk_D_8140E720* arg0); +void func_84333BA8(unk_D_8140E720* arg0); +void func_84333DC4(unk_D_8140E720* arg0); +void func_84333E28(unk_D_8140E720* arg0); +void func_84333EE8(unk_D_8140E720* arg0); +void func_84333FBC(unk_D_8140E720* arg0); +void func_843340B8(unk_D_8140E720* arg0); +void func_84334154(unk_D_8140E720* arg0); +void func_84334294(unk_D_8140E720* arg0); +void func_84334350(unk_D_8140E720* arg0); +void func_843343F8(unk_D_8140E720* arg0); +void func_843344A0(unk_D_8140E720* arg0); +void func_84334558(unk_D_8140E720* arg0); +void func_843345A0(unk_D_8140E720* arg0); +void func_84334654(unk_D_8140E720* arg0); +void func_843346BC(unk_D_8140E720* arg0); +void func_843347A4(unk_D_8140E720* arg0); +void func_84334808(unk_D_8140E720* arg0); +void func_843348DC(unk_D_8140E720* arg0); +void func_84334994(unk_D_8140E720* arg0); +void func_84334A78(unk_D_8140E720* arg0, u8 arg1); +void func_84334B04(void); +void func_84334B0C(unk_D_8140E720* arg0); +void func_84334BAC(unk_D_8140E720* arg0); +void func_84334D7C(unk_D_8140E720* arg0); +void func_84334E4C(unk_D_8140E720* arg0); +void func_84334F84(unk_D_8140E720* arg0); +void func_8433507C(unk_D_8140E720* arg0); +void func_843351C8(unk_D_8140E720* arg0); +void func_843352AC(unk_D_8140E720* arg0); +void func_843353C4(unk_D_8140E720* arg0); +void func_843354E0(unk_D_8140E720* arg0); +void func_84335668(unk_D_8140E720* arg0); +void func_8433574C(unk_D_8140E720* arg0); +void func_84335848(unk_D_8140E720* arg0); +void func_8433595C(unk_D_8140E720* arg0); +void func_84335A84(unk_D_8140E720* arg0); +void func_84335BA0(unk_D_8140E720* arg0); +void func_84335D10(unk_D_8140E720* arg0); +void func_84335DEC(unk_D_8140E720* arg0); +void func_84335EF8(unk_D_8140E720* arg0); +void func_84336014(unk_D_8140E720* arg0, s16 arg1, s16 arg2); +void func_8433617C(unk_D_8140E720* arg0, s32 arg1); +void func_84336320(unk_D_8140E720* arg0); +void func_84336340(unk_D_8140E720* arg0); +void func_84336360(unk_D_8140E720* arg0); +void func_84336480(unk_D_8140E720* arg0); +void func_84336520(unk_D_8140E720* arg0); +void func_8433661C(unk_D_8140E720* arg0); +void func_8433679C(unk_D_8140E720* arg0); +void func_84336830(unk_D_8140E720* arg0); +void func_843369AC(unk_D_8140E720* arg0); +void func_84336A58(unk_D_8140E720* arg0); +void func_84336B8C(void); +void func_84336C80(void); +void func_84336DD8(void); +void func_84336EE8(void); +void func_84337000(void); +void func_843371C0(void); +void func_843372D8(void); +void func_843374A4(void); +void func_843375B0(void); +void func_8433765C(void); +void func_84337664(void); +void func_8433766C(void); +void func_843378CC(void); +void func_843378D4(void); + + +void func_84337AF0(unk_D_8140E720* arg0); +void func_84337C6C(unk_D_8140E720* arg0); +void func_84337D70(unk_D_8140E720* arg0, s16 arg1); +void func_84337E64(unk_D_8140E720* arg0); +void func_84337F6C(unk_D_8140E720* arg0); +void func_843380B0(unk_D_8140E720* arg0); +void func_843380F0(unk_D_8140E720* arg0); +void func_84338204(unk_D_8140E720* arg0); +void func_8433837C(unk_D_8140E720* arg0); +void func_84338468(unk_D_8140E720* arg0); +void func_84338620(unk_D_8140E720* arg0); +void func_843386B0(unk_D_8140E720* arg0); +void func_84338778(unk_D_8140E720* arg0); +void func_843388A8(unk_D_8140E720* arg0); +void func_84338978(unk_D_8140E720* arg0); +void func_84338A2C(unk_D_8140E720* arg0); +void func_84338AC4(unk_D_8140E720* arg0); +void func_84338B44(unk_D_8140E720* arg0); +void func_84338C0C(unk_D_8140E720* arg0); +void func_84338C84(unk_D_8140E720* arg0); +void func_84338D28(unk_D_8140E720* arg0); +void func_84338D84(unk_D_8140E720* arg0); +void func_84338E6C(unk_D_8140E720* arg0); +void func_84338EF0(unk_D_8140E720* arg0); +void func_84338FA4(unk_D_8140E720* arg0); +void func_8433903C(unk_D_8140E720* arg0); +void func_843390E0(unk_D_8140E720* arg0); +void func_8433913C(unk_D_8140E720* arg0); +void func_84339248(unk_D_8140E720* arg0); +void func_84339398(unk_D_8140E720* arg0); +void func_843393E8(unk_D_8140E720* arg0); +void func_843394D4(unk_D_8140E720* arg0); +void func_8433958C(unk_D_8140E720* arg0); +void func_84339628(unk_D_8140E720* arg0); +void func_84339688(unk_D_8140E720* arg0); +void func_84339710(unk_D_8140E720* arg0); +void func_843397A0(unk_D_8140E720* arg0); +void func_84339874(unk_D_8140E720* arg0); +void func_843398F8(unk_D_8140E720* arg0); +void func_84339994(unk_D_8140E720* arg0); +void func_84339A30(unk_D_8140E720* arg0); +void func_84339B20(unk_D_8140E720* arg0); +void func_84339C0C(unk_D_8140E720* arg0); +void func_84339CDC(unk_D_8140E720* arg0); +void func_84339D74(unk_D_8140E720* arg0); +void func_84339E38(unk_D_8140E720* arg0); +void func_84339ECC(unk_D_8140E720* arg0); +void func_84339F8C(unk_D_8140E720* arg0); +void func_8433A024(unk_D_8140E720* arg0); +void func_8433A0E8(unk_D_8140E720* arg0); +void func_8433A208(unk_D_8140E720* arg0); +void func_8433A378(unk_D_8140E720* arg0); +void func_8433A4D8(unk_D_8140E720* arg0); +void func_8433A5C4(unk_D_8140E720* arg0); +void func_8433A698(unk_D_8140E720* arg0); +void func_8433A790(unk_D_8140E720* arg0); +void func_8433A858(unk_D_8140E720* arg0); +void func_8433A954(unk_D_8140E720* arg0); +void func_8433AA28(unk_D_8140E720* arg0); +void func_8433AB08(unk_D_8140E720* arg0); +void func_8433AC00(unk_D_8140E720* arg0); +void func_8433AD70(unk_D_8140E720* arg0); +void func_8433ADE0(unk_D_8140E720* arg0); +void func_8433AF20(unk_D_8140E720* arg0); +void func_8433B014(unk_D_8140E720* arg0); +void func_8433B120(unk_D_8140E720* arg0); +void func_8433B1B8(unk_D_8140E720* arg0); +void func_8433B290(void); +void func_8433B2E8(void); +void func_8433B374(void); +void func_8433B3D8(void); +void func_8433B4AC(void); +void func_8433B58C(void); +void func_8433B6FC(void); +void func_8433B7E4(void); +void func_8433B988(void); +void func_8433BAA8(void); +void func_8433BB78(void); +void func_8433BC38(void); +void func_8433BD08(void); +void func_8433BDFC(void); +void func_8433BECC(void); +void func_8433BF54(void); +void func_8433C06C(void); +void func_8433C284(void); +void func_8433C3A0(void); +void func_8433C4EC(void); +void func_8433C604(void); +void func_8433C784(void); +void func_8433C940(void); +void func_8433CAFC(void); + + +void func_8433CC10(unk_D_8140E720* arg0); +void func_8433CCFC(unk_D_8140E720* arg0); +void func_8433CDAC(unk_D_8140E720* arg0); +void func_8433CEA4(unk_D_8140E720* arg0); +void func_8433CEFC(unk_D_8140E720* arg0); +void func_8433CFA8(unk_D_8140E720* arg0); +void func_8433D070(unk_D_8140E720* arg0); +void func_8433D154(unk_D_8140E720* arg0); +void func_8433D224(unk_D_8140E720* arg0); +void func_8433D308(unk_D_8140E720* arg0); +void func_8433D3B0(unk_D_8140E720* arg0); +void func_8433D460(unk_D_8140E720* arg0); +void func_8433D560(unk_D_8140E720* arg0); +void func_8433D604(unk_D_8140E720* arg0); +void func_8433D6EC(unk_D_8140E720* arg0); +void func_8433D790(unk_D_8140E720* arg0); +void func_8433D868(unk_D_8140E720* arg0); +void func_8433D90C(unk_D_8140E720* arg0); +void func_8433DA54(unk_D_8140E720* arg0); +void func_8433DAF8(unk_D_8140E720* arg0); +void func_8433DBDC(unk_D_8140E720* arg0); +void func_8433DC80(void); +void func_8433DECC(void); +void func_8433DFF4(void); +void func_8433E124(void); +void func_8433E33C(void); +void func_8433E46C(void); +void func_8433E524(void); + + +void func_8433E650(unk_D_8140E720* arg0); +void func_8433E758(unk_D_8140E720* arg0); +void func_8433E840(unk_D_8140E720* arg0); +void func_8433E8A8(unk_D_8140E720* arg0); +void func_8433E950(unk_D_8140E720* arg0); +void func_8433EA04(unk_D_8140E720* arg0); +void func_8433EB0C(unk_D_8140E720* arg0); +void func_8433EB9C(unk_D_8140E720* arg0); +void func_8433EC40(unk_D_8140E720* arg0); +void func_8433ED3C(unk_D_8140E720* arg0); +void func_8433EE10(unk_D_8140E720* arg0); +void func_8433F06C(unk_D_8140E720* arg0); +void func_8433F208(unk_D_8140E720* arg0); +void func_8433F270(unk_D_8140E720* arg0); +s16 func_8433F3B4(void); +void func_8433F414(void); +void func_8433F4CC(void); +void func_8433F4EC(void); +void func_8433F5B4(void); +void func_8433F5D4(void); +void func_8433F758(void); +void func_8433F974(void); +void func_8433FAF8(void); +void func_8433FD30(void); + + +void func_8433FD80(unk_D_8140E720* arg0); +void func_8433FDC0(unk_D_8140E720* arg0); +void func_8433FE80(unk_D_8140E720* arg0); +void func_8433FF44(unk_D_8140E720* arg0); +void func_843400BC(unk_D_8140E720* arg0); +void func_8434016C(unk_D_8140E720* arg0); +void func_84340230(unk_D_8140E720* arg0); +void func_843403D8(unk_D_8140E720* arg0); +void func_84340690(unk_D_8140E720* arg0); +void func_84340940(unk_D_8140E720* arg0); +void func_84340AC4(void); +void func_84340ACC(void); +void func_84340CB0(void); +void func_84340D14(void); + + +void func_84342808(void); +void func_84342908(void); +void func_84342CF0(void); +void func_84343288(void); +void func_843432E4(unk_D_8140E720*); +void func_84343988(void); +void func_84344094(void); +void func_84344248(void); +void func_843443E0(void); +void func_84344474(void); +void func_84344508(void); +void func_84344A4C(void); +void func_84344B04(void); +void func_84344BDC(void); +void func_84345038(void); +void func_843450B4(void); +void func_8434575C(void); +void func_84345B28(void); +void func_84345B84(void); +void func_84345D74(void); +void func_84345EC0(void); +void func_84346B58(void); +void func_84346BE0(void); +void func_84346DC4(void); +void func_84346E50(void); +void func_84346EEC(void); +void func_84346F40(void); +void func_843473BC(void); +void func_8434749C(unk_D_8140E720*); +void func_84347448(void); + + +void func_84340DC0(void); +void func_84340E40(unk_D_8140E720* arg0, s32 arg1); +void func_843416B0(unk_D_8140E720* arg0); +void func_8434171C(unk_D_8140E720* arg0); +void func_8434174C(unk_D_8140E720* arg0); +void func_843417AC(unk_D_8140E720* arg0); +void func_84341830(unk_D_8140E720* arg0); +void func_84341860(unk_D_8140E720* arg0); +Gfx* func_843418C0(Gfx* arg0, u8* arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5, s16 arg6, s16 arg7, s16 arg8, s16 arg9, s16 argA, s16 argB); +Gfx* func_84341B84(Gfx* arg0, arg1_func_8434E21C* arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5, s16 arg6, s16 arg7, s16 arg8, s16 arg9, s16 argA, s16 argB); +void func_84341E50(Gfx* arg0); +void func_84341F08(s32 arg0, arg1_func_84344CE8* arg1); +void func_84341F44(Gfx* arg0, arg1_func_8434E21C* arg1, UNUSED u16 arg2); +void func_84342304(s32 arg0, arg1_func_84344CE8* arg1); +void func_8434234C(unk_D_8140E720* arg0); +void func_843423C8(unk_D_8140E720* arg0); +void func_84342478(unk_D_8140E720* arg0); +void func_8434261C(unk_D_8140E720* arg0); +void func_84342758(unk_D_8140E720* arg0); +void func_84342808(void); +void func_84342908(void); +void func_84342980(unk_D_8140E720* arg0); +void func_84342C54(unk_D_8140E720* arg0); +void func_84342C7C(unk_D_8140E720* arg0); +void func_84342CF0(void); +void func_84342D48(unk_D_8140E720* arg0); +void func_84343064(unk_D_8140E720* arg0, s16 arg1); +void func_843431B0(unk_D_8140E720* arg0); +void func_84343288(void); +void func_843432E4(unk_D_8140E720* arg0); +void func_84343988(void); +void func_84343B9C(Gfx* arg0, s32 arg1, u16 arg2); +void func_84343D24(s32 arg0, arg1_func_84344CE8* arg1); +void func_84343D6C(unk_D_8140E720* arg0); +void func_84343E44(unk_D_8140E720* arg0, UNUSED s16 arg1); +void func_84343EB4(unk_D_8140E720* arg0); +void func_84343FA4(Gfx* arg0, u16 arg1); +void func_84344050(s32 arg0, arg1_func_84344CE8* arg1); +void func_84344094(void); +void func_8434411C(unk_D_8140E720* arg0); +void func_843441F8(unk_D_8140E720* arg0); +void func_84344248(void); +void func_84344318(unk_D_8140E720* arg0); +void func_84344390(unk_D_8140E720* arg0); +void func_843443E0(void); +void func_84344474(void); +void func_84344508(void); +void func_8434459C(unk_D_8140E720* arg0); +void func_843445E4(unk_D_8140E720* arg0); +void func_84344698(unk_D_8140E720* arg0); +void func_84344734(unk_D_8140E720* arg0); +void func_84344888(unk_D_8140E720* arg0); +void func_843448D8(unk_D_8140E720* arg0); +void func_8434495C(unk_D_8140E720* arg0); +void func_84344A4C(void); +void func_84344B04(void); +void func_84344BDC(void); +void func_84344C7C(Gfx* arg0, u8* arg1); +void func_84344CE8(s32 arg0, arg1_func_84344CE8* arg1); +void func_84344D28(unk_D_8140E720* arg0); +void func_84344DA4(unk_D_8140E720* arg0); +void func_84344E20(unk_D_8140E720* arg0); +void func_84344F58(unk_D_8140E720* arg0); +void func_84345038(void); +void func_843450B4(void); +void func_8434523C(Gfx* arg0, s32 arg1, u16 arg2); +void func_843452F0(s32 arg0, arg1_func_84344CE8* arg1); +void func_84345338(Gfx* arg0, arg1_func_8434E21C* arg1, UNUSED u16 arg2); +void func_8434539C(s32 arg0, arg1_func_84344CE8* arg1); +void func_843453E4(Gfx* arg0, u8* arg1, UNUSED u16 arg2); +void func_84345448(s32 arg0, arg1_func_84344CE8* arg1); +void func_84345490(void); +void func_84345498(unk_D_8140E720* arg0); +void func_84345618(unk_D_8140E720* arg0); +void func_843456DC(unk_D_8140E720* arg0); +void func_8434575C(void); +void func_84345838(unk_D_8140E720* arg0); +void func_84345920(unk_D_8140E720* arg0); +void func_843459A0(unk_D_8140E720* arg0); +void func_84345A20(Gfx* arg0, UNUSED s32 arg1, UNUSED u16 arg2); +void func_84345AE0(s32 arg0, arg1_func_84344CE8* arg1); +void func_84345B28(void); +void func_84345B84(void); +void func_84345C78(unk_D_8140E720* arg0); +void func_84345CF0(unk_D_8140E720* arg0); +void func_84345D74(void); +void func_84345DC4(unk_D_8140E720* arg0); +void func_84345E3C(unk_D_8140E720* arg0); +void func_84345EC0(void); +void func_84345F38(Gfx* arg0, s32 arg1, u16 arg2); +void func_84346014(s32 arg0, arg1_func_84344CE8* arg1); +void func_8434605C(Gfx* arg0, UNUSED s32 arg1, UNUSED u16 arg2); +void func_843460EC(s32 arg0, arg1_func_84344CE8* arg1); +void func_84346134(unk_D_8140E720* arg0); +void func_843461D0(unk_D_8140E720* arg0); +void func_84346250(unk_D_8140E720* arg0); +void func_843463C8(unk_D_8140E720* arg0); +void func_84346488(unk_D_8140E720* arg0); +void func_84346634(unk_D_8140E720* arg0); +void func_8434669C(unk_D_8140E720* arg0); +void func_843466EC(Gfx* arg0, s32 arg1, u16 arg2); +void func_843467B0(s32 arg0, arg1_func_84344CE8* arg1); +void func_843467F8(Gfx* arg0, u8* arg1, UNUSED u16 arg2); +void func_84346960(s32 arg0, arg1_func_84344CE8* arg1); +void func_843469A8(Gfx* arg0, u8* arg1, UNUSED u16 arg2); +void func_84346B10(s32 arg0, arg1_func_84344CE8* arg1); +void func_84346B58(void); +void func_84346BE0(void); +void func_84346DC4(void); +void func_84346E50(void); +void func_84346EEC(void); +void func_84346F40(void); +void func_84347080(unk_D_8140E720* arg0); +void func_84347108(unk_D_8140E720* arg0); +void func_8434719C(Gfx* arg0, arg1_func_8434E21C* arg1, UNUSED u16 arg2); +void func_84347254(s32 arg0, arg1_func_84344CE8* arg1); +void func_8434729C(Gfx* arg0, arg1_func_8434E21C* arg1, UNUSED u16 arg2); +void func_84347374(s32 arg0, arg1_func_84344CE8* arg1); +void func_843473BC(void); +void func_84347448(void); +void func_8434749C(unk_D_8140E720* arg0); +void func_84347670(unk_D_8140E720* arg0); +void func_843476D8(unk_D_8140E720* arg0); +void func_8434775C(unk_D_8140E720* arg0); +void func_843477F8(unk_D_8140E720* arg0); +void func_84347904(unk_D_8140E720* arg0); +void func_84347A20(unk_D_8140E720* arg0); +void func_84347AF0(unk_D_8140E720* arg0); +void func_84347BF4(Gfx* arg0, arg1_func_8434E21C* arg1, UNUSED u16 arg2); +void func_84347D2C(s32 arg0, arg1_func_84344CE8* arg1); +void func_84347D74(unk_D_8140E720* arg0); +void func_84347E9C(unk_D_8140E720* arg0); +void func_84348058(unk_D_8140E720* arg0); +void func_84348194(unk_D_8140E720* arg0); +void func_843482D4(unk_D_8140E720* arg0); +void func_843483D4(unk_D_8140E720* arg0); +void func_84348514(unk_D_8140E720* arg0); +void func_84348630(void); +void func_843489FC(void); +void func_84348C6C(UNUSED s32 arg0, UNUSED s32 arg1); +void func_84348C78(UNUSED s32 arg0, UNUSED s32 arg1); +void func_84348C84(unk_D_8140E720* arg0); +void func_84348D4C(unk_D_8140E720* arg0); +void func_84348F24(Gfx* arg0, s32 arg1, u16 arg2); +void func_84349010(s32 arg0, arg1_func_84344CE8* arg1); +void func_84349058(void); +void func_843490A8(void); +void func_84349108(void); +void func_8434915C(void); +void func_8434917C(void); +void func_843491D4(Gfx* arg0, u8* arg1, UNUSED u16 arg2); +void func_84349264(s32 arg0, arg1_func_84344CE8* arg1); +void func_843492AC(Gfx* arg0, u8* arg1, UNUSED u16 arg2); +void func_8434933C(s32 arg0, arg1_func_84344CE8* arg1); +void func_84349384(void); +f32 func_84349424(unk_D_8140E720* arg0); +void func_843494AC(unk_D_8140E720* arg0); +void func_84349504(void); +void func_843495F0(unk_D_8140E720* arg0); +void func_84349628(void); +void func_8434967C(void); +void func_843497A8(unk_D_8140E720* arg0); +void func_84349830(void); +void func_843498D8(void); +void func_84349940(unk_D_8140E720* arg0); +void func_84349A14(void); +void func_84349A70(unk_D_8140E720* arg0); +void func_84349AE8(unk_D_8140E720* arg0); +void func_84349B50(unk_D_8140E720* arg0); +void func_84349C74(unk_D_8140E720* arg0); +void func_84349D10(Gfx* arg0, u8* arg1, UNUSED u16 arg2); +void func_84349F80(s32 arg0, arg1_func_84344CE8* arg1); +void func_84349FC8(Gfx* arg0, UNUSED arg1_func_8434E21C* arg1, UNUSED u16 arg2); +void func_8434A18C(s32 arg0, arg1_func_84344CE8* arg1); +s16 func_8434A1D4(void); +s16 func_8434A244(void); +s16 func_8434A2B4(void); +void func_8434A324(void); +void func_8434A384(void); +f32 func_8434A574(unk_D_8140E720* arg0); +void func_8434A654(Gfx* arg0, arg1_func_8434E21C* arg1, UNUSED u16 arg2); +void func_8434A6D8(s32 arg0, arg1_func_84344CE8* arg1); +void func_8434A720(Gfx* arg0, UNUSED arg1_func_8434E21C* arg1, UNUSED u16 arg2); +void func_8434A794(s32 arg0, arg1_func_84344CE8* arg1); +void func_8434A7DC(void); +void func_8434A844(void); +void func_8434A898(void); +void func_8434A930(void); +void func_8434A9CC(void); +void func_8434A9EC(void); +void func_8434AA6C(void); +void func_8434AAEC(Gfx* arg0, u8 arg1, UNUSED u16 arg2); +void func_8434AC44(s32 arg0, arg1_func_84344CE8* arg1); +void func_8434AC8C(void); +void func_8434ACEC(void); +void func_8434AD1C(void); +void func_8434AD70(void); +f32 func_8434AE68(unk_D_8140E720* arg0); +void func_8434B000(void); +void func_8434B064(void); +void func_8434B0D8(unk_D_8140E720* arg0); +void func_8434B14C(unk_D_8140E720* arg0); +void func_8434B21C(unk_D_8140E720* arg0); +void func_8434B2B8(Gfx* arg0, u8* arg1, UNUSED u16 arg2); +void func_8434BA28(s32 arg0, arg1_func_84344CE8* arg1); +void func_8434BA70(void); +void func_8434BCD4(void); +void func_8434BF2C(void); +void func_8434C070(void); +void func_8434C0C4(void); +void func_8434C144(void); +void func_8434C214(unk_D_8140E720* arg0); +void func_8434C29C(unk_D_8140E720* arg0); +void func_8434C320(unk_D_8140E720* arg0); +void func_8434C3A8(unk_D_8140E720* arg0); +void func_8434C3F0(Gfx* arg0, u8 arg1, UNUSED u16 arg2); +void func_8434C548(s32 arg0, arg1_func_84344CE8* arg1); +void func_8434C590(void); +void func_8434C5F0(void); +void func_8434C618(void); +void func_8434C720(void); +void func_8434C814(Gfx* arg0, u8* arg1, UNUSED u16 arg2); +void func_8434CA48(s32 arg0, arg1_func_84344CE8* arg1); +f32 func_8434CA90(unk_D_8140E720* arg0); +void func_8434CAD8(void); +void func_8434CC68(void); +void func_8434CE14(void); +void func_8434CF64(void); +void func_8434D0F8(void); +void func_8434D168(unk_D_8140E720* arg0); +void func_8434D1B0(unk_D_8140E720* arg0); +void func_8434D260(unk_D_8140E720* arg0); +void func_8434D2E0(unk_D_8140E720* arg0); +void func_8434D448(void); +void func_8434D4A0(unk_D_8140E720* arg0); +void func_8434D530(unk_D_8140E720* arg0); +void func_8434D5EC(void); +void func_8434D6C0(unk_D_8140E720* arg0); +void func_8434D72C(unk_D_8140E720* arg0); +void func_8434D77C(Gfx* arg0, arg1_func_8434E21C* arg1, UNUSED u16 arg2); +void func_8434D890(s32 arg0, arg1_func_84344CE8* arg1); +void func_8434D8D8(void); +void func_8434D938(void); +void func_8434D9F8(unk_D_8140E720* arg0); +void func_8434DA94(void); +void func_8434DB40(void); +void func_8434DBEC(void); +void func_8434DD08(void); +f32 func_8434DE24(unk_D_8140E720* arg0); +void func_8434DE6C(void); +void func_8434DFC0(void); +void func_8434E02C(void); +void func_8434E0CC(void); +void func_8434E1B8(void); +void func_8434E21C(Gfx* arg0, arg1_func_8434E21C* arg1, UNUSED u16 arg2); +void func_8434E6AC(s32 arg0, arg1_func_84344CE8* arg1); +void func_8434E6F4(void); +void func_8434E74C(void); +void func_8434E7CC(unk_D_8140E720* arg0); +void func_8434E870(void); +void func_8434E8E0(void); +void func_8434E940(void); +void func_8434E9A0(void); +void func_8434EA10(void); +void func_8434EAA8(unk_D_8140E720* arg0); +void func_8434EBA0(void); +void func_8434EC08(void); +void func_8434EC68(unk_D_8140E720* arg0); +void func_8434ECF4(void); +void func_8434ED48(void); +void func_8434ED70(unk_D_8140E720* arg0); +void func_8434EEA4(unk_D_8140E720* arg0); +void func_8434EF68(void); +void func_8434EFBC(void); +void func_8434F010(void); +void func_8434F060(void); +void func_8434F0B8(void); +void func_8434F110(unk_D_8140E720* arg0); +void func_8434F248(unk_D_8140E720* arg0); +void func_8434F350(void); +void func_8434F3E0(unk_D_8140E720* arg0); +void func_8434F554(unk_D_8140E720* arg0); +void func_8434F610(unk_D_8140E720* arg0); +void func_8434F7A4(unk_D_8140E720* arg0); +void func_8434F888(unk_D_8140E720* arg0); +void func_8434FA98(unk_D_8140E720* arg0); +void func_8434FB3C(unk_D_8140E720* arg0); +void func_8434FBE4(unk_D_8140E720* arg0); +void func_8434FCC4(unk_D_8140E720* arg0); +void func_8434FD6C(unk_D_8140E720* arg0); +void func_8434FE58(unk_D_8140E720* arg0); +void func_8434FF40(unk_D_8140E720* arg0); +void func_8435000C(unk_D_8140E720* arg0); +void func_84350100(unk_D_8140E720* arg0); +void func_843501CC(unk_D_8140E720* arg0); +void func_84350260(unk_D_8140E720* arg0); +void func_84350330(unk_D_8140E720* arg0); +void func_8435043C(unk_D_8140E720* arg0); +void func_84350520(unk_D_8140E720* arg0); +void func_84350634(unk_D_8140E720* arg0); +void func_84350728(unk_D_8140E720* arg0); +void func_84350828(unk_D_8140E720* arg0); +void func_843508F0(unk_D_8140E720* arg0); +void func_84350A04(unk_D_8140E720* arg0); +void func_84350AFC(unk_D_8140E720* arg0); +void func_84350BE4(unk_D_8140E720* arg0); +void func_84350CD8(unk_D_8140E720* arg0); +void func_84350DAC(unk_D_8140E720* arg0); +void func_84350EC8(unk_D_8140E720* arg0); +void func_84350FC0(unk_D_8140E720* arg0); +void func_84351090(unk_D_8140E720* arg0); +void func_84351144(unk_D_8140E720* arg0); +void func_84351264(unk_D_8140E720* arg0); +void func_843512AC(unk_D_8140E720* arg0); +void func_84351330(unk_D_8140E720* arg0); +void func_843513F4(unk_D_8140E720* arg0); +void func_843514B4(unk_D_8140E720* arg0); +void func_843515C8(unk_D_8140E720* arg0); +void func_843516A0(unk_D_8140E720* arg0); +void func_84351984(unk_D_8140E720* arg0); +void func_84351ADC(unk_D_8140E720* arg0); +void func_84351BCC(unk_D_8140E720* arg0); +void func_84351CE4(unk_D_8140E720* arg0); +void func_84351D20(unk_D_8140E720* arg0); +void func_84351D70(unk_D_8140E720* arg0); +void func_8435226C(unk_D_8140E720* arg0); +void func_8435235C(unk_D_8140E720* arg0); +void func_84352464(unk_D_8140E720* arg0); +void func_84352530(unk_D_8140E720* arg0); +void func_84352620(unk_D_8140E720* arg0); +void func_843526A8(unk_D_8140E720* arg0); +void func_84352754(unk_D_8140E720* arg0); +void func_843529D8(unk_D_8140E720* arg0); +void func_84352A8C(unk_D_8140E720* arg0); +void func_84352E64(unk_D_8140E720* arg0); +void func_84352F90(unk_D_8140E720* arg0); +s32 func_84353098(unk_D_8140E720* arg0); +void func_8435324C(unk_D_8140E720* arg0); +void func_843532B0(unk_D_8140E720* arg0); +void func_84353354(unk_D_8140E720* arg0); +void func_843534BC(unk_D_8140E720* arg0); +void func_843535F4(unk_D_8140E720* arg0); +void func_8435375C(unk_D_8140E720* arg0); +void func_84353894(unk_D_8140E720* arg0); +void func_84353998(unk_D_8140E720* arg0); +void func_84353AEC(unk_D_8140E720* arg0); +void func_84353BD0(unk_D_8140E720* arg0); +void func_84353C40(unk_D_8140E720* arg0); +void func_84353D30(unk_D_8140E720* arg0); +void func_84353E10(unk_D_8140E720* arg0); +void func_84353F08(unk_D_8140E720* arg0); +void func_843540FC(unk_D_8140E720* arg0); +void func_84354A10(unk_D_8140E720* arg0); +void func_84354ADC(unk_D_8140E720* arg0); +void func_84354BE4(unk_D_8140E720* arg0); +void func_84354D58(unk_D_8140E720* arg0); +void func_84354E44(unk_D_8140E720* arg0); +void func_84354F0C(unk_D_8140E720* arg0); +void func_84354FA8(unk_D_8140E720* arg0); +void func_84355040(unk_D_8140E720* arg0); +void func_84355164(unk_D_8140E720* arg0); +void func_84355240(unk_D_8140E720* arg0); +void func_84355330(unk_D_8140E720* arg0); +void func_843553B4(void); +void func_843553BC(unk_D_8140E720* arg0); +void func_84355498(unk_D_8140E720* arg0); +void func_84355500(unk_D_8140E720* arg0); +void func_84355584(unk_D_8140E720* arg0); +void func_84355670(unk_D_8140E720* arg0); +void func_84355794(unk_D_8140E720* arg0); +void func_8435581C(unk_D_8140E720* arg0); +void func_8435586C(unk_D_8140E720* arg0); +void func_8435593C(unk_D_8140E720* arg0); +void func_84355B08(unk_D_8140E720* arg0); +void func_84355B8C(unk_D_8140E720* arg0); +void func_84355C54(unk_D_8140E720* arg0); +void func_84355D70(unk_D_8140E720* arg0); +void func_84355E58(void); +void func_84355EF0(void); +void func_84355F88(void); +void func_84356020(void); +void func_843560B4(void); +void func_84356148(void); +void func_843561A0(void); +void func_843561F8(void); +void func_84356254(void); +void func_8435643C(void); +void func_843565DC(void); +void func_843566F4(void); +void func_8435674C(void); +void func_843567F4(void); +void func_843568C8(void); +void func_843569A0(void); +void func_84356A74(void); +void func_84356AC8(void); +void func_84356AF0(void); +void func_84356CA4(void); +void func_84356D04(void); +void func_84356DBC(void); +void func_84356EF4(void); +void func_84356FAC(void); +void func_84357110(void); +void func_8435727C(void); +void func_8435742C(void); +void func_843574FC(void); +void func_84357700(void); +void func_8435783C(void); +void func_843579C0(void); +void func_84357A64(void); +void func_84357AB8(void); +void func_84357AE0(void); +void func_84357B80(void); +void func_84357BA8(void); +void func_84357CC8(void); +void func_84357E60(void); +void func_84357F64(void); +void func_84358034(void); +void func_8435811C(void); +void func_843581FC(void); +void func_84358288(void); +void func_8435839C(void); +void func_843584C0(void); +void func_84358538(void); +void func_84358598(void); +void func_84358738(void); +void func_843588D8(void); +void func_84358A5C(void); +void func_84358C18(s32 arg0); +void func_84358DE4(void); +void func_84358E24(void); +void func_84358EA0(void); +void func_84358EDC(void); +void func_84358F6C(void); + + +void func_84358FF0(void); +void func_84358FF8(void); +void func_84359000(u8, u8, u8, u8); +void func_843590E0(unk_D_86002F34_00C*); + + +void func_843592E0(void); +void func_843592E8(void); +void func_843592F0(void); +void func_843592F8(void); +void func_84359300(void); +void func_84359308(void); +void func_84359310(void); +void func_84359318(void); +void func_84359320(void); +void func_84359328(void); +void func_84359330(UNUSED s32 arg0); +void func_84359338(UNUSED s32 arg0); +void func_84359340(void); +void func_84359348(void); +void func_84359380(void); +void func_843593A0(void); +void func_843593A8(void); +s32 func_843593B0(void); +s32 func_843593B8(void); +void func_843593C0(void); +void func_843593C8(void); +void func_843593D0(Vec3f* arg0); +void func_843593F0(Vec3f* arg0); +void func_84359410(Vec3f* arg0); +void func_84359430(Vec3f* arg0); +f32 func_84359450(void); +f32 func_84359470(void); +void func_84359490(f32* arg0, f32* arg1, f32* arg2, f32* arg3, f32* arg4, f32* arg5); +void func_84359564(f32* arg0, f32* arg1, f32* arg2, f32* arg3, f32* arg4, f32* arg5); +void func_84359650(void); +void func_84359684(void); +s32 func_843596DC(void); +void func_843596FC(void); +void func_84359750(void); +s32 func_843597AC(void); +void func_843597CC(void); +void func_84359820(void); +s32 func_8435989C(void); +void func_843598BC(void); +void func_84359910(void); +s32 func_8435998C(void); +void func_843599AC(void); +void func_84359A00(void); +s32 func_84359A6C(void); +void func_84359A8C(void); +void func_84359AE0(void); +s32 func_84359AE8(void); +void func_84359AF0(void); +void func_84359AF8(void); +void func_84359C84(void); +s32 func_84359CB8(void); +void func_84359D28(void); +void func_84359D7C(void); +s32 func_84359DF4(void); +void func_84359E14(void); +void func_84359E68(void); +void func_84359FE0(void); +s32 func_8435A014(void); +void func_8435A084(void); +void func_8435A0D8(void); +void func_8435A298(void); +s32 func_8435A2CC(void); +void func_8435A33C(void); +void func_8435A390(void); +s32 func_8435A40C(void); +void func_8435A42C(void); +void func_8435A480(void); +s32 func_8435A4F8(void); +void func_8435A518(void); +void func_8435A56C(void); +void func_8435A6F8(void); +s32 func_8435A72C(void); +void func_8435A79C(void); +void func_8435A7F0(void); +s32 func_8435A81C(void); +void func_8435A99C(void); +void func_8435A9F0(void); +s32 func_8435AA1C(void); +void func_8435AB9C(void); +void func_8435ABF0(void); +s32 func_8435AC20(void); +void func_8435AC40(void); +void func_8435AC94(void); +s32 func_8435ACC4(void); +void func_8435ACE4(void); +void func_8435AD38(void); +s32 func_8435AD68(void); +void func_8435AD88(void); +void func_8435ADDC(void); +s32 func_8435AE08(void); +void func_8435B048(void); +void func_8435B0B0(void); +s32 func_8435B0DC(void); +void func_8435B260(void); +void func_8435B2C8(void); +s32 func_8435B408(void); +void func_8435B454(void); +void func_8435B4A8(void); +void func_8435B580(void); +s32 func_8435B5B4(void); +void func_8435B600(void); +void func_8435B654(void); +void func_8435B8E8(void); +s32 func_8435B918(void); +void func_8435B938(void); +void func_8435B98C(void); +void func_8435BB64(void); +s32 func_8435BB98(void); +void func_8435BBEC(void); +void func_8435BC40(void); +void func_8435BED8(void); +s32 func_8435BF08(void); +void func_8435BF28(void); +void func_8435BF7C(void); +void func_8435C220(void); +s32 func_8435C250(void); +void func_8435C270(void); +void func_8435C2C4(void); +void func_8435C448(void); +s32 func_8435C478(void); +void func_8435C498(void); +void func_8435C4EC(void); +void func_8435C790(void); +void func_8435C96C(void); +s32 func_8435C9AC(void); +void func_8435CA08(void); + + +void func_8435CA70(void); +void func_8435CAA8(unk_D_843925E0* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8, s32 arg9); +void func_8435CAE8(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, s32 arg5); +void func_8435D1E8(unk_D_843925E0* arg0); +s32 func_8435D24C(unk_D_843925E0* arg0); +s32 func_8435D8C0(void); +Gfx* func_8435D97C(Gfx* arg0, unk_D_843925E0* arg1); +Gfx* func_8435DB14(Gfx* arg0); +void func_8435DED0(unk_D_843975E8* arg0, f32 arg1); +f32 func_8435E158(f32 arg0, f32 arg1, f32* arg2); +s32 func_8435E530(void); +void func_8435EB9C(s32 arg0, s16 arg1, s16 arg2); +s32 func_8435EDF8(void); +Gfx* func_8435EE78(Gfx* arg0); + + +void func_8435FB90(f32 arg0, f32 arg1, f32 arg2, f32 arg3, u8 arg4, u8 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9); +f32 func_8435FCD0(void); +s32 func_8435FD50(void); +Gfx* func_8436032C(Gfx* arg0); +void func_843605C0(void); +void func_843606D0(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, s16 arg6, u8 arg7, u8 arg8, u8 arg9, u8 argA, f32 argB, f32 argC, f32 argD, s16 argE); +void func_8436090C(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, s16 arg6, u8 arg7, u8 arg8, u8 arg9, u8 argA, f32 argB, f32 argC, f32 argD, s16 argE); +void func_84360B10(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, s16 arg6, u8 arg7, u8 arg8, u8 arg9, u8 argA, u8 argB, u8 argC, u8 argD, f32 argE, f32 argF, f32 arg10, s16 arg11); +void func_84360EFC(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, s16 arg6, u8 arg7, u8 arg8, u8 arg9, u8 argA, u8 argB, u8 argC, u8 argD, f32 argE, f32 argF, f32 arg10, s16 arg11); +void func_843612F8(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, s16 arg6, u8 arg7, u8 arg8, u8 arg9, u8 argA, f32 argB, f32 argC, f32 argD, s16 argE); +void func_843616B0(f32 arg0, UNUSED Vec3f* arg1, Vec3f* arg2, f32 arg3, UNUSED f32 arg4, UNUSED f32 arg5, UNUSED f32 arg6); +void func_84361744(unk_D_84398F50* arg0); +s32 func_84361FB0(void); +Gfx* func_84362084(Gfx* arg0); + + +void func_843638E0(s16 arg0); +void func_84363A5C(s32 arg0, s32 arg1); +void func_84363FF0(unk_D_8439CA60_0014* arg0, Vtx* arg1); +s32 func_843640A4(void); +void func_84364304(void); +Gfx* func_84364428(Gfx* arg0); + + +void func_843648E0(s16 arg0, s16 arg1); +void func_84364A18(s16 arg0); +void func_84364C50(s32 arg0, s32 arg1); +void func_843651D4(unk_D_8439E680_0014* arg0, Vtx* arg1); +s32 func_84365288(void); +void func_84365434(void); +Gfx* func_84365558(Gfx* arg0); + + +void func_84365A10(s16 arg0); +void func_84365B88(s32 arg0, s32 arg1); +void func_8436611C(unk_D_8439CA60_0014* arg0, Vtx* arg1); +s32 func_843661D0(void); +void func_8436643C(void); +Gfx* func_84366560(Gfx* arg0); + + +void func_84366A10(void); +void func_84366B38(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9, f32 argA, s16 argB); +void func_84366DCC(f32 arg0, Vec3f* arg1, f32 arg2); +void func_84366E54(unk_D_843A22C0* arg0); +s32 func_84367014(void); +Gfx* func_843670C8(Gfx* arg0); + + +Gfx* func_84367660(Gfx* arg0, Vec3f* arg1, Vec3f* arg2, Vec3f* arg3, f32 arg4, u8 arg5, u8 arg6, u8 arg7, u8 arg8); + + +void func_84367CB0(void); +void func_84367E2C(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9, f32 argA, f32 argB, f32 argC, s16 argD); +void func_84368080(f32 arg0, Vec3f* arg1, f32 arg2, f32 arg3); +void func_84368140(unk_D_843AA880* arg0); +s32 func_843684CC(void); +Gfx* func_84368560(Gfx* arg0); + + +void func_84368AB0(void); +void func_84368C04(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9, f32 argA, f32 argB, f32 argC, s16 argD); +void func_84368E78(f32 arg0, Vec3f* arg1, f32 arg2); +void func_84368F08(unk_D_843AB940* arg0); +s32 func_843692E8(void); +Gfx* func_84369388(Gfx* arg0); + + +void func_843697F0(void); +void func_84369950(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9, f32 argA, f32 argB, f32 argC, s16 argD); +void func_84369BF0(f32 arg0, Vec3f* arg1, f32 arg2); +void func_84369C80(unk_D_843ACA10* arg0); +s32 func_84369F0C(void); +Gfx* func_84369FA0(Gfx* arg0); + + +void func_8436A410(void); +void func_8436A540(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9, f32 argA, f32 argB, f32 argC, s16 argD); +void func_8436A808(f32 arg0, Vec3f* arg1, f32 arg2); +void func_8436A890(unk_D_843ADA80* arg0); +s32 func_8436ABA8(void); +Gfx* func_8436AC44(Gfx* arg0); + + +void func_8436B140(void); +void func_8436B270(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9, f32 argA, f32 argB, f32 argC, s16 argD); +void func_8436B538(f32 arg0, Vec3f* arg1, f32 arg2); +void func_8436B5C0(unk_D_843ADA80* arg0); +s32 func_8436B8D8(void); +Gfx* func_8436B974(Gfx* arg0); + + +void func_8436BE70(void); +void func_8436BFB8(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, f32 arg7, f32 arg8, f32 arg9, f32 argA, s16 argB, s32 argC, s32 argD, s16 argE, s16 argF, s16 arg10, s16 arg11, s16 arg12, s16 arg13, s16 arg14, s16 arg15, unk_D_843C2C00_024* arg16, unk_D_843C2C00_024* arg17, u8 arg18, u8 arg19, u8 arg1A, u8 arg1B, u8 arg1C, u8 arg1D, u8 arg1E, u8 arg1F, u8 arg20, u8 arg21, u8 arg22, u8 arg23, u8 arg24); +void func_8436C344(f32 arg0, Vec3f* arg1, f32 arg2); +void func_8436C3CC(unk_D_843C2C00* arg0); +s32 func_8436C62C(void); +Gfx* func_8436C6A4(Gfx* arg0, unk_D_843C2C00* arg1, s16 arg2, s16 arg3); +Gfx* func_8436CB60(Gfx* arg0, unk_D_843C2C00* arg1); +Gfx* func_8436CE34(Gfx* arg0); + + +void func_8436D370(void); +void func_8436D4A4(s16 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, u8 arg7, u8 arg8, u8 arg9, u8 argA, u8 argB, u8 argC, u8 argD, u8 argE, u8 argF, f32 arg10, f32 arg11, f32 arg12, s16 arg13, s32 arg14, s32 arg15, s16 arg16, s16 arg17, s16 arg18, s16 arg19, s16 arg1A, s16 arg1B, s16 arg1C, s16 arg1D, unk_D_843C2C00_024* arg1E, unk_D_843C2C00_024* arg1F); +void func_8436D920(s32 arg0, Vec3f* arg1, Vec3f* arg2, Vec3f* arg3, f32 arg4, f32 arg5, f32 arg6, f32 arg7); +void func_8436DA38(f32 arg0, Vec3f* arg1, Vec3f* arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6); +void func_8436DAC4(unk_D_843C3508* arg0); +s32 func_8436DE60(void); +Gfx* func_8436DFB8(Gfx* arg0, unk_D_843C3508* arg1); +Gfx* func_8436E0E8(Gfx* arg0, unk_D_843C3508* arg1); +Gfx* func_8436E3BC(Gfx* arg0); +void func_8436E920(void); +s16 func_8436E944(void); +void func_8436EA0C(s16 arg0, f32 arg1, f32 arg2, f32 arg3, s16 arg4, f32 arg5); +void func_8436EB54(s16 arg0); +Gfx* func_8436ECB0(Gfx* arg0, unk_D_843C49C0_004* arg1, MtxF* arg2); +Gfx* func_8436EDE8(s16 arg0, Gfx* arg1); +void func_8436EED4(void); +void func_8436EEDC(void); +s32 func_8436EEE4(s32 arg0); + + +void func_8436EEF0(s32 arg0, s32 arg1); +s32 func_8436EF48(void); +void func_8436EF54(void); +Gfx* func_8436EFE8(Gfx* arg0, s32 arg1); +void func_8436F664(void); + + +void func_8436F6C0(void); + + +void func_8436F6D0(void); +u8 func_8436F6D8(void); +u8 func_8436F788(void); +void func_8436F838(s32 arg0, s32 arg1); +void func_8436F9D8(s32 arg0, s32 arg1); +void func_8436FA80(unk_D_84390010* arg0); +void func_8436FC10(void); +u16 func_8436FC7C(unk_D_84390010* arg0, unk_D_84390010* arg1); +s32 func_8436FD54(u8 arg0, u8* arg1, s32 arg2); +void func_8436FD9C(void); +s32 func_8436FDBC(void); +void func_8436FDF4(s32 arg0, unk_func_80026268_arg0* arg1); +void func_84370090(unk_func_80026268_arg0* arg0); +void func_843700F0(void); +s32 func_84370260(void); +void func_843703BC(void); +void func_843706E8(s32 arg0); +void func_84370790(void); +void func_843708A0(void); +void func_843708CC(void); +void func_84370ADC(unk_D_84390010* arg0); +void func_84370B0C(unk_D_84390010* arg0); +void func_84370B44(unk_D_84390010* arg0); +void func_84370B7C(unk_D_84390010* arg0); +s32 func_84370E30(unk_D_84390010* arg0); +void func_84370E70(void); +void func_84370E78(void); +void func_84370E80(void); +void func_84370F40(void); +void func_84371010(void); +void func_84371080(void); +void func_8437114C(void); +void func_843712CC(void); +void func_843714D8(void); +s32 func_84371564(void); +void func_843715C0(void); +void func_8437166C(void); +s32 func_8437176C(void); +void func_843718DC(void); +s32 func_843718E4(void); +void func_84371974(void); +s32 func_84371B3C(void); +s32 func_84371C18(void); +s32 func_84371DCC(void); +void func_84372670(void); +void func_84372B48(unk_D_84390010* arg0); +void func_84372C40(unk_D_84390010* arg0); +void func_84372D88(unk_D_84390010* arg0); +void func_84372ED0(unk_D_84390010* arg0); +void func_84373018(unk_D_84390010* arg0); +s32 func_84373160(unk_D_84390010* arg0); +s32 func_843732B8(void); +void func_8437345C(void); +void func_84373570(unk_D_84390010* arg0); + + +u16 func_843736B0(u16* arg0, u16 arg1, u8 arg2); +void func_84373754(void); +void func_84373A30(void); +void func_84373D04(void); +void func_84373E24(void); +void func_84373E60(void); +void func_843741C4(void); +void func_843744F0(void); +void func_8437483C(void); +void func_84374C9C(void); +void func_84374D08(void); +void func_84374D58(void); +void func_84374E08(void); +void func_84374EE4(void); +void func_84374FD4(void); +void func_84375038(void); +void func_843751F8(void); +void func_843752C0(void); +void func_84375384(void); +void func_84375424(void); +void func_84375508(void); +void func_843755E8(void); +void func_84375700(void); +void func_84375894(void); +void func_843759C4(void); +void func_843759DC(void); +void func_843759F4(void); +void func_84375B1C(void); +void func_84375C24(void); +void func_84375C60(void); +void func_84375D78(void); +void func_84375DA4(void); +void func_84375E6C(void); +void func_8437600C(void); +void func_84376258(void); +void func_843765E8(void); +void func_8437670C(void); +void func_84376768(void); + + +void func_84376790(s32 arg0, u32 arg1); +void func_843767DC(void); +s32 func_843767E4(s32 arg0); +void func_843768D8(u8 arg0); +u8 func_84376920(unk_D_800FCB18* arg0, unk_D_800FCB18* arg1, u8 arg2); +u16 func_84376A34(unk_D_800FCB18* arg0, unk_D_800FCB18* arg1); +void func_84376B38(void); +void func_84376B9C(unk_D_800FCB18* arg0, unk_D_800FCB18* arg1); +void func_84376C90(unk_D_800FCB18* arg0, unk_D_800FCB18* arg1, u8 arg2); +void func_84376E40(unk_D_800FCB18* arg0, unk_D_800FCB18* arg1); +u16 func_84376F68(unk_D_800FCB18* arg0, unk_D_800FCB18* arg1, u8 arg2, u8 arg3); +void func_84377030(unk_D_843C60AC* arg0); +s32 func_84377068(s32 arg0, s32 arg1); +void func_8437717C(unk_D_800AE540_0004* arg0); +s32 func_84377280(s32 arg0); +s32 func_843772E4(u8 arg0, u8 arg1); +u16 func_8437731C(unk_D_800FCB18* arg0); +u16 func_84377354(unk_D_800FCB18* arg0); +f32 func_8437738C(u8 arg0, unk_D_800FCB18* arg1); +s32 func_84377430(u8 arg0, unk_D_843C60A4* arg1); +s32 func_84377550(u8 arg0, u8 arg1); +s32 func_84377644(unk_D_843C60A4* arg0, u8 arg1); +u8 func_843776FC(unk_D_843C60AC* arg0, unk_D_843C60AC* arg1, u8 arg2); +void func_843779C0(void); +u8 func_843779C8(unk_D_843C60AC* arg0, unk_D_843C60AC* arg1, u8 arg2, u8* arg3); +u8 func_84377FA4(unk_D_843C60AC* arg0, unk_D_843C60A4* arg1, u8* arg2, u8 arg3, u8* arg4); +s32 func_843780FC(u8 arg0, u8 arg1); +u8 func_84378140(unk_D_843C60AC* arg0, unk_D_843C60AC* arg1); +u8 func_8437828C(unk_D_843C60AC* arg0, unk_D_843C60AC* arg1); +s32 func_843783CC(unk_D_843C60A4* arg0); +void func_84378474(unk_D_800AE540_0004* arg0, unk_D_800AE540_0004* arg1, unk_D_800AE540_0004* arg2, unk_D_843C5568* arg3, s32 arg4); +void func_84378578(unk_D_843C60AC* arg0, u8 arg1); +u16 func_8437865C(unk_D_800FCB18* arg0, unk_D_800FCB18* arg1, u8 arg2); +void func_843787F4(unk_D_800FCB18* arg0, unk_D_800FCB18* arg1, u16* arg2, u8* arg3, u8 arg4, u8 arg5); +s32 func_84378B0C(unk_D_843C60AC* arg0, unk_D_843C60AC* arg1, u8* arg2, u8 arg3); +s32 func_843791AC(unk_D_843C60AC* arg0, unk_D_843C60AC* arg1, u8* arg2, u8 arg3); +s32 func_843791E4(unk_D_843C60AC* arg0, unk_D_843C60AC* arg1, u8* arg2, u8 arg3); +void func_8437921C(void); +u8 func_84379224(unk_D_800FCB18* arg0, unk_D_800FCB18* arg1, u8 arg2, u8 arg3); +void func_843793E0(u8 arg0, u8* arg1); +void func_843794CC(unk_D_843C60AC* arg0, unk_D_843C60AC* arg1, s32 arg2, u8 arg3, u8 arg4, unk_func_843794CC* arg5); +s32 func_8437AC20(unk_func_843794CC* arg0, u8 arg1, u8 arg2); +s32 func_8437ACB0(unk_func_843794CC* arg0, u8 arg1, u8 arg2, u8 arg3); +u8 func_8437AEA4(unk_func_843794CC* arg0, u8 arg1, u8 arg2, u8 arg3); +void func_8437B0CC(unk_D_843C60A4* arg0, unk_D_843C60A4* arg1, u8 arg2, unk_func_843794CC* arg3, u8 arg4); +s32 func_8437E3B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +s32 func_8437E448(unk_D_843C60AC* arg0, UNUSED unk_D_843C60AC* arg1, u8 arg2, unk_func_843794CC* arg3); +s32 func_8437E7A4(void); +u16 func_8437E860(u8 arg0, u8 arg1); +u8 func_8437E920(u8 arg0); +void func_8437E974(unk_D_800AE540_0004* arg0, unk_D_800AE540_0004* arg1, unk_D_843C60A4* arg2, u8 arg3); +s32 func_8437ECFC(unk_D_843C60A4* arg0, u8* arg1, u8 arg2); +s32 func_8437ED54(unk_D_843C60A4* arg0, u8* arg1, u8 arg2, u8 arg3); +s32 func_8437EDB8(unk_D_843C60A4* arg0, u8* arg1, u8 arg2, s32 arg3); +s32 func_8437EFBC(unk_D_843C60A4* arg0, u8* arg1, u8 arg2, u8 arg3); +s32 func_8437F068(unk_D_843C60A4* arg0, u8* arg1, u8 arg2); +s32 func_8437F2EC(unk_D_843C60A4* arg0, unk_D_843C60A4* arg1, u8* arg2, s32* arg3); +s32 func_8437F85C(unk_D_843C60A4* arg0, s32* arg1, s32 arg2, unk_func_8437F85C_arg3* arg3, u8* arg4, u8 arg5, u8 arg6); +void func_8437FB14(unk_D_843C60A4* arg0, u8* arg1, s32 arg2); +s32 func_8437FC10(unk_D_843C60A4* arg0); +s32 func_8437FCCC(unk_D_800FCB18* arg0); +s32 func_8437FD74(unk_D_843C60A4* arg0, s32* arg1, s32* arg2, u8 arg3); +s32 func_84380164(unk_D_843C60A4* arg0, unk_D_843C60A4* arg1, u8* arg2, u8* arg3, s32* arg4); +s32 func_843804F4(unk_D_843C60A4* arg0, unk_D_843C60A4* arg1, u8* arg2, u8* arg3, s32 arg4); +void func_84380598(void); +u8 func_84380870(unk_D_843C60A4* arg0, unk_D_843C60A4* arg1); +u8 func_84380B40(unk_D_843C60AC* arg0, s32* arg1, s32* arg2, unk_D_843C60A4* arg3, u8 arg4, s32 arg5); +s32 func_84380EB4(unk_D_843C60AC* arg0, unk_D_843C60AC* arg1, u8 arg2); +s32 func_84380F7C(unk_func_8438220C* arg0); +s32 func_843811D0(unk_D_843C60AC* arg0, unk_D_843C60AC* arg1, unk_D_843C60A4* arg2, u8* arg3, s32* arg4, s32* arg5, s32* arg6, s32* arg7, s32* arg8); +s32 func_843813D4(unk_D_843C60AC* arg0, unk_D_843C60AC* arg1, unk_D_843C60A4* arg2, u8* arg3, unk_func_8438220C* arg4); +u8 func_84381584(unk_D_843C60AC* arg0, unk_D_843C60AC* arg1, unk_D_843C60A4* arg2, unk_D_843C60A4* arg3, u8* arg4, unk_func_8438220C* arg5); +u16 func_84381BD4(u16* arg0, u16 arg1, u8 arg2); +void func_84381C78(unk_D_800FCB18* arg0, unk_D_800FCB18* arg1, u8 arg2, u8 arg3); +void func_84381DD4(unk_func_8438220C* arg0); +void func_84381F50(unk_func_8438220C* arg0); +u8 func_843820B8(unk_func_8438220C* arg0); +s32 func_8438220C(void); +s32 func_8438223C(s32 arg0); +s32 func_8438249C(u8 arg0, u8 arg1); +s32 func_8438255C(u8 arg0, u8 arg1); +s32 func_843825D8(u8 arg0); +s32 func_84382614(u8 arg0); +s32 func_84382668(unk_D_800FCB18* arg0, s32 arg1, u8 arg2, u8 arg3); +s32 func_84382840(unk_D_800FCB18* arg0, unk_D_800FCB18* arg1, u8 arg2); +void func_84382ACC(void); +s32 func_843831A0(unk_D_800AE540_0004* arg0, unk_D_800AE540_0004* arg1, unk_D_800AE540_0004* arg2, s32 arg3, u8* arg4, s32 arg5, s32 arg6); +void func_8438363C(UNUSED s32 arg0, UNUSED s32 arg1, s32 arg2); +s32 func_84383B5C(UNUSED s32 arg0); +void func_84384124(void); +s32 func_843841C4(s32 arg0, s32 arg1); + +#endif // _FRAGMENT62_H_ diff --git a/src/fragments/62/fragment62_2EA8E0.c b/src/fragments/62/fragment62_2EA8E0.c index 97a0da2..3d0dc44 100644 --- a/src/fragments/62/fragment62_2EA8E0.c +++ b/src/fragments/62/fragment62_2EA8E0.c @@ -1,50 +1,634 @@ -#include "global.h" +#include "fragment62.h" +#include "src/11BA0.h" +#include "src/12D80.h" +#include "src/19840.h" +#include "src/1C720.h" +#include "src/1CF30.h" +#include "src/20330.h" +#include "src/32D10.h" +#include "src/3D140.h" +#include "src/3FB0.h" +#include "src/4BDC0.h" +#include "src/6A40.h" +#include "src/F420.h" +#include "src/controller.h" +#include "src/geo_layout.h" +#include "src/memmap.h" +#include "src/memory.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84300020.s") +static unk_D_86002F34_00C D_8438E440; +static unk_D_8690A610 D_8438E530; +static GraphNode D_8438E550; +static GraphNode D_8438E568; +static GraphNode D_8438E580; +static unk_D_86002F34_00C D_8438E598; +static unk_D_86002F34_00C D_8438E688; +u8* D_8438E778; +u8* D_8438E77C; +static void* D_8438E780; +static GraphNode* D_8438E784; +static GraphNode* D_8438E788; +static GraphNode* D_8438E78C; +static unk_D_80068BB0* D_8438E790; +static unk_D_80068BB0* D_8438E794; +static unk_D_800AE540_1194* D_8438E798; +static s32 D_8438E79C; +static s32 D_8438E7A0; +static Color_RGBA8_u32 D_8438E7A4; +static f32 D_8438E7A8; +static s32 D_8438E7AC; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84300058.s") +static u8 D_84384350[] = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x11, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, +}; +static u32 D_84384364[] = { + 0x0C00FFFF, 0x05000000, 0x07000000, &D_8438E440, 0x05000000, 0x0D000000, 0x05000000, 0x07000000, + &D_8438E530, 0x14000000, 0x002D0019, 0xFFFFFF28, 0x08000000, func_84300058, 0x00000000, 0x14000000, + 0x002D0019, 0x80808028, 0x08000000, func_843000C0, 0x00000000, 0x16646464, 0x0F000002, 0x05000000, + 0x1F00FFFF, 0x00000000, 0x00000000, 0x00000000, 0x00640064, 0x00640000, 0x08000000, func_8430012C, + 0x00000000, 0x05000000, 0x07000000, &D_8438E550, 0x06000000, 0x06000000, 0x0F000003, 0x05000000, + 0x1F00FFFF, 0x00000000, 0x00000000, 0x00000000, 0x00640064, 0x00640000, 0x08000000, func_8430012C, + 0x00000000, 0x05000000, 0x07000000, &D_8438E568, 0x06000000, 0x06000000, 0x0F000002, 0x05000000, + 0x1F00FFFF, 0x00000000, 0x00000000, 0x00000000, 0x00640064, 0x00640000, 0x08000000, func_8430012C, + 0x00000000, 0x05000000, 0x07000000, &D_8438E580, 0x06000000, 0x06000000, 0x0F000003, 0x05000000, + 0x0A000000, &D_800AC840, 0x06000000, 0x0F000002, 0x05000000, 0x0A000000, &D_800AC858, 0x06000000, + 0x09000000, 0x08000000, func_84300020, 0x00000000, 0x06000000, 0x06000000, 0x06000000, 0x01000000, +}; +static u32 D_843844C4[] = { + 0x0C00FFFF, 0x05000000, 0x07000000, &D_8438E598, 0x05000000, 0x0D000001, 0x05000000, + 0x14000000, 0x002D0019, 0xFFFFFF28, 0x16FFFFFF, 0x0F000003, 0x05000000, 0x0A000000, + &D_800AC840, 0x06000000, 0x06000000, 0x06000000, 0x06000000, 0x01000000, +}; +static u32 D_84384514[] = { + 0x0C00FFFF, 0x05000000, 0x07000000, &D_8438E688, 0x05000000, 0x0D000002, 0x05000000, + 0x14000000, 0x002D0019, 0xFFFFFF28, 0x16FFFFFF, 0x0F000003, 0x05000000, 0x0A000000, + &D_800AC840, 0x06000000, 0x06000000, 0x06000000, 0x06000000, 0x01000000, +}; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_843000C0.s") +s32 func_84300020(s32 arg0, GraphNode* arg1) { + if (arg0 == 2) { + func_8432D0D8(5, &D_8438E440); + } + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_8430012C.s") +s32 func_84300058(s32 arg0, unk_D_86002F34_alt18* arg1) { + UNUSED s32 pad; + f32 sp28; + s16 sp26; + s16 sp24; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84300184.s") + if (arg0 == 2) { + func_800102A4(&D_8006F088->unk_60.at, &D_8006F088->unk_60.eye, &sp28, &sp26, &sp24); + arg1->unk_1C = sp26 + 0x2000; + arg1->unk_1E = sp24 - 0x2000; + } + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_843001FC.s") +s32 func_843000C0(s32 arg0, unk_D_86002F34_alt18* arg1) { + UNUSED s32 pad; + f32 sp28; + s16 sp26; + s16 sp24; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84300208.s") + if (arg0 == 2) { + func_800102A4(&D_8006F088->unk_60.at, &D_8006F088->unk_60.eye, &sp28, &sp26, &sp24); + arg1->unk_1C = -0x2000 - sp26; + arg1->unk_1E = sp24 + 0x6000; + } + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84300340.s") +s32 func_8430012C(s32 arg0, unk_D_86002F58_004_000* arg1) { + if (arg0 == 2) { + func_8000E88C(&arg1->unk_030, D_8438E7A8, D_8438E7A8, D_8438E7A8); + arg1->unk_03C.rgba = D_8438E7A4.rgba; + } + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84300750.s") +void func_84300184(u8 arg0, u8 arg1, u8 arg2) { + D_8438E7A4.r = arg0; + D_8438E7A4.g = arg1; + D_8438E7A4.b = arg2; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84300810.s") + if (((arg0 & arg1 & arg2) & 0xFF) == 0xFF) { + if (D_8438E530.unk_00.unk_14 == 1) { + D_8438E530.unk_00.unk_01 |= 1; + } + } else { + D_8438E530.unk_00.unk_01 &= ~1; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84300938.s") +void func_843001FC(f32 arg0) { + D_8438E7A8 = arg0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84300B34.s") +u16 func_84300208(u16 arg0) { + s32 r; + s32 g; + s32 b; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84300D44.s") + r = ((((((arg0 >> 11) & 0x1F) << 3) + (((arg0 >> 11) & 0x1F) >> 2)) * D_8438E7A4.r) / 255) >> 3; + g = ((((((arg0 >> 6) & 0x1F) << 3) + (((arg0 >> 6) & 0x1F) >> 2)) * D_8438E7A4.g) / 255) >> 3; + b = ((((((arg0 >> 1) & 0x1F) << 3) + (((arg0 >> 1) & 0x1F) >> 2)) * D_8438E7A4.b) / 255) >> 3; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84300DC0.s") + return (r << 11) | (g << 6) | (b << 1) | 1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84300E88.s") +void func_84300340(void) { + s16 sp4E; + s16 sp4C; + s16 sp4A; + s16 sp48; + s16 sp46; + s16 sp44; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84300FBC.s") + if ((u32)D_8438E780 == NULL) { + func_800067E4(&gDisplayListHead, 0, 0, 0x140, 0xF0); + return; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84301094.s") + if ((u32)D_8438E780 == -1) { + func_8000699C(&gDisplayListHead, 1); + return; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_843010EC.s") + if ((u32)D_8438E780 < 0x10000) { + func_8000699C(&gDisplayListHead, func_84300208(D_8438E780)); + return; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_8430123C.s") + sp4E = D_8438E440.unk_18.x; + sp4A = D_8438E440.unk_18.y; + sp4C = D_8438E440.unk_18.width + sp4E; + sp48 = (D_8438E440.unk_18.height / 2) + sp4A; + sp46 = D_8438E440.unk_18.height + sp4A; + sp44 = 0x10000 / (D_8438E440.unk_18.height / 2); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_8430128C.s") + if ((D_8438E440.unk_18.width < 0x140) || (D_8438E440.unk_18.height < 0xF0)) { + func_8000699C(&gDisplayListHead, 1); + } else { + func_800067E4(&gDisplayListHead, 0, 0, 0x140, 0xF0); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_843013E4.s") + gDPSetCycleType(gDisplayListHead++, G_CYC_1CYCLE); + gDPSetTexturePersp(gDisplayListHead++, G_TP_NONE); + gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEI_PRIM, G_CC_MODULATEI_PRIM); + gDPSetPrimColor(gDisplayListHead++, 0, 0, D_8438E7A4.r, D_8438E7A4.g, D_8438E7A4.b, 255); + gSPClearGeometryMode(gDisplayListHead++, G_ZBUFFER | G_LIGHTING); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84301430.s") + gDPLoadTextureBlock(gDisplayListHead++, Memmap_GetFragmentVaddr(D_8438E780), G_IM_FMT_RGBA, G_IM_SIZ_32b, 4, 64, 0, + G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + gSPTextureRectangle(gDisplayListHead++, sp4E << 2, sp4A << 2, sp4C << 2, sp48 << 2, G_TX_RENDERTILE, 0, 0, 0, sp44); + gSPTextureRectangle(gDisplayListHead++, sp4E << 2, sp48 << 2, sp4C << 2, sp46 << 2, G_TX_RENDERTILE, 0, 0x07E0, 0, + 0); + gSPDisplayList(gDisplayListHead++, D_8006F630); +} + +void func_84300750(GraphNode* arg0, unk_D_80068BB0* arg1) { + unk_D_86002F34_00C* sp2C = arg0->unk_0C; + unk_D_86002F34_00C_018 sp20; + + if (sp2C->unk_00.unk_01 & 0x10) { + sp20 = sp2C->unk_18; + + sp2C->unk_18.x = 0; + sp2C->unk_18.y = 0; + sp2C->unk_18.width = 0x4C; + sp2C->unk_18.height = 0x4C; + + func_80006498(&gDisplayListHead, arg1); + func_8000699C(&gDisplayListHead, 0x10D); + func_80015094(arg0); + + sp2C->unk_00.unk_01 &= ~0x10; + + sp2C->unk_18 = sp20; + } +} + +void func_84300810(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { + unk_D_800A7440 sp38; + u16 tmp5; + u16 tmp6; + + func_80005FC0(&sp38, arg0, arg1, arg2, arg3); + + if (func_80006030(&sp38) != 0) { + if (!arg2) {} + + tmp5 = ((sp38.x1 - arg0) << 5); + tmp6 = ((sp38.y2 - arg1) << 5); + + tmp5 += 0x10; + tmp6 += 0x10; + + gSPTextureRectangle(gDisplayListHead++, sp38.x1 << 2, sp38.y2 << 2, ((sp38.y1 + 1) ^ 0) << 2, + ((sp38.x2 + 1) ^ 0) << 2, G_TX_RENDERTILE, tmp5, tmp6, 0x0800, 0x0800); + + if ((arg2 && arg2) ^ 0) {} + } +} + +void func_84300938(s32 arg0, s32 arg1, s32 arg2, s32 arg3, u8* arg4, s32 arg5) { + gDPLoadTextureBlock(gDisplayListHead++, arg4, G_IM_FMT_RGBA, G_IM_SIZ_16b, arg5, (arg3 * 2) + 2, 0, + G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + + func_84300810(arg0, arg1, (arg0 + arg2) - 1, (arg1 + arg3) - 1); +} + +void func_84300B34(GraphNode* arg0, unk_D_80068BB0* arg1) { + s32 temp_s2; + s32 temp_s3; + unk_D_86002F34_00C* temp_v1 = arg0->unk_0C; + unk_D_86002F34_00C_018* ptr = &arg0->unk_0C->unk_18; + s32 img; + + temp_s2 = ptr->x; + temp_s3 = ptr->y; + + temp_v1++; + + gDPPipeSync(gDisplayListHead++); + + gDPSetCycleType(gDisplayListHead++, G_CYC_1CYCLE); + gDPSetRenderMode(gDisplayListHead++, G_RM_OPA_SURF, G_RM_OPA_SURF2); + gDPSetCombineMode(gDisplayListHead++, G_CC_DECALRGBA, G_CC_DECALRGBA); + gDPSetTexturePersp(gDisplayListHead++, G_TP_NONE); + gDPSetTextureFilter(gDisplayListHead++, G_TF_AVERAGE); + + img = arg1->img_p; + func_84300938(temp_s2, temp_s3, 0x25, 0xA, img, 0x4C); + img = arg1->img_p + 0xBE0; + func_84300938(temp_s2, temp_s3 + 0xA, 0x25, 0xA, img, 0x4C); + img = arg1->img_p + 0x17C0; + func_84300938(temp_s2, temp_s3 + 0x14, 0x25, 0xA, img, 0x4C); + img = arg1->img_p + 0x23A0; + func_84300938(temp_s2, temp_s3 + 0x1E, 0x25, 7, img, 0x4C); + + gDPPipeSync(gDisplayListHead++); + + gDPSetTexturePersp(gDisplayListHead++, G_TP_PERSP); + gDPSetTextureFilter(gDisplayListHead++, G_TF_BILERP); +} + +void func_84300D44(void) { + s32 i; + s32 j; + s32 x; + unk_D_800AE540_0004* temp_a2; + unk_D_800AE540_1194* ptr = &D_8438E798[0]; + + for (i = 0; i < 2; i++, ptr++) { + for (j = 0; j < ptr->unk_01; j++) { + temp_a2 = ptr->unk_08[j]; + for (x = 0; x < temp_a2->unk_002; x++) { + temp_a2->unk_01C[x].unk_25 = 0; + } + } + } +} + +void func_84300DC0(void) { + s32 i; + s32 j; + s32 x; + s32 var_v0 = 0; + unk_D_800AE540_0004* temp_a3; + unk_D_800AE540_1194* ptr = &D_8438E798[0]; + + for (i = 0; i < 2; i++, ptr++) { + for (j = 0; j < ptr->unk_01; j++) { + temp_a3 = ptr->unk_08[j]; + for (x = 0; x < temp_a3->unk_002; x++) { + if ((temp_a3->unk_01C[x].unk_25 == 0) && (temp_a3->unk_01C[x].unk_02 == 0)) { + var_v0 = 1; + temp_a3->unk_01C[x].unk_25 = D_8438E7A0; + } + } + } + } + + if (var_v0 != 0) { + D_8438E7A0 += 1; + } +} + +void func_84300E78(void) { +} + +void func_84300E80(void) { +} + +s32 func_84300E88(s32 arg0) { + s32 sp1C; + + func_80015348(); + func_80032570(); + func_84307394(2, D_8438E798); + func_84307A50(2, &D_8438E598, &D_8438E688); + sp1C = func_8432AEE4(2, &D_8438E440); + func_8432D0D8(2, &D_8438E440); + func_84300750(D_8438E788, D_8438E790); + func_84300750(D_8438E78C, D_8438E794); + func_800079C4(); + func_84300340(); + func_80015094(D_8438E784); + func_84307394(5, D_8438E798); + func_84300B34(D_8438E788, D_8438E790); + func_84300B34(D_8438E78C, D_8438E794); + func_84300DC0(); + + if (sp1C == 1) { + D_8438E798[0].unk_1C = 1; + } + + if (sp1C == 2) { + D_8438E798[1].unk_1C = 1; + } + + return sp1C; +} + +s32 func_84300FBC(s32 arg0) { + s32 sp1C = 0; + + if ((arg0 == 0) && BTN_IS_PRESSED(gPlayer1Controller, BTN_A)) { + sp1C = func_84300E88(arg0); + } else { + func_80032570(); + func_800079C4(); + func_84300340(); + func_80015094(D_8438E784); + func_84307394(5, D_8438E798); + func_84300B34(D_8438E788, D_8438E790); + func_84300B34(D_8438E78C, D_8438E794); + } + + if ((arg0 == 0) && BTN_IS_PRESSED(gPlayer1Controller, BTN_START)) { + D_8438E79C = 0; + } + return sp1C; +} + +void func_84301094(void) { + if (D_8438E7AC < 0) { + D_8438E7AC++; + } else if ((D_8438E7AC == 0) && (D_800AE540.unk_0000 == 0x10) && gPlayer1Controller->buttonPressed) { + D_8438E7AC = 1; + } +} + +s32 func_843010EC(s32 arg0) { + s32 sp1C = 0; + + Cont_StartReadInputs(); + func_8001C07C(&D_8438E798[0]); + func_8001C1E8(&D_8438E798[0]); + func_8001C07C(&D_8438E798[1]); + func_8001C1E8(&D_8438E798[1]); + Cont_ReadInputs(); + func_8001F730(); + + switch (D_8438E79C) { + case 0: + sp1C = func_84300E88(arg0); + break; + + case 1: + sp1C = func_84300FBC(arg0); + break; + } + + if ((sp1C != 0) && (D_8438E7AC <= 0)) { + D_8438E7AC = 1; + } + + func_84301094(); + func_8001C248(&D_8438E798[0]); + func_8001C248(&D_8438E798[1]); + + if ((arg0 != 2) && (D_8438E7AC == 1)) { + D_8438E7AC = 2; + func_8003DB84(0); + if (D_800AE540.unk_0000 != 0x11) { + func_8004B9C4(0x1E); + } + return 1; + } + return 0; +} + +void func_8430123C(u8* arg0, s32 arg1) { + s32 i; + s32 j; + + for (i = 0; i < 6; i++) { + for (j = 0; j < arg1; j++) { + if (i == arg0[j]) { + break; + } + } + + if (j == arg1) { + arg0[arg1++] = i; + } + } +} + +void func_8430128C(void) { + unk_D_800AE540_0004* temp_s0; + unk_D_800AE540_0004* temp_s1; + u8 sp48[8]; + unk_D_800AE540_0004* temp_s2; + s32 i; + s32 var_s1; + + temp_s1 = D_800AE540.unk_1194[0].unk_08[0]; + temp_s2 = D_800AE540.unk_1194[0].unk_08[1]; + temp_s0 = D_800AE540.unk_1194[1].unk_08[0]; + + if (temp_s0->unk_000 & 2) { + if (D_800AE540.unk_0000 == 0) { + if (D_800AE540.unk_0001 == 0) { + var_s1 = temp_s0->unk_214->unk_002; + } else { + var_s1 = 3; + } + func_843831A0(temp_s1, temp_s2, temp_s0, D_800AE540.unk_11EC, sp48, D_800AE540.unk_0001, var_s1); + } else { + if (D_800AE540.unk_0001 == 8) { + var_s1 = temp_s0->unk_214->unk_002; + } else { + var_s1 = 3; + } + func_843831A0(temp_s1, NULL, temp_s0, temp_s0->unk_018 & 0xFF, sp48, D_800AE540.unk_0001, var_s1); + } + func_8430123C(sp48, var_s1); + temp_s0->unk_002 = var_s1; + + for (i = 0; i < temp_s0->unk_214->unk_002; i++) { + temp_s0->unk_01C[i] = temp_s0->unk_214->unk_028[sp48[i]]; + } + } +} + +void func_843013E4(unk_D_800AE540_1194* arg0, unk_D_86002F30* arg1) { + unk_D_800AE540_0004* temp_v0 = arg0->unk_08[0]; + + arg0->unk_18 = arg1->unk_08->unk_00[0]; + arg0->unk_00 |= 0xA0; + arg0->unk_1C = 0; + arg0->unk_02 = temp_v0->unk_01C[0].unk_00.unk_00; + arg0->unk_04 = temp_v0->unk_01C; + func_8001C07C(arg0); +} + +void func_84301430(unk_func_80007444* arg0) { + MemoryBlock* sp44; + u32* temp_v0_4; + FragmentEntry sp3C; + unk_D_8690A610_018* temp_v0_7; + s32 pad; + s16 sp32; + unk_D_80068BB0* sp2C; + unk_D_86002F30* sp28; + + func_84300184(0xFF, 0xFF, 0xFF); + func_843001FC(1.0f); + + if (D_800AE540.unk_0000 == 0x11) { + func_8001E94C(4, 0); + } else if (D_800AE540.unk_0000 == 0x10) { + func_8001E94C(7, 0); + } else { + func_8001E94C(3, 0); + } + + D_8438E798[0].unk_10 = func_80019760(3); + D_8438E798[1].unk_10 = func_80019760(3); + func_8001987C(); + + sp2C = main_pool_alloc(0x10, 0); + func_800062E4(sp2C, 0, 2, 0x4C, 0x4C, arg0->unk_18[0]->depth_p->img_p); + D_8438E790 = func_80006314(0, 2, 0x4C, 0x4C, 0); + D_8438E794 = func_80006314(0, 2, 0x4C, 0x4C, 0); + + func_80006414(D_8438E790, sp2C); + func_80006414(D_8438E794, sp2C); + + D_8438E778 = D_8438E790->img_p; + D_8438E77C = D_8438E794->img_p; + + FRAGMENT_LOAD(fragment31); + ASSET_LOAD(D_1000000, common_menu1_ui, 0); + ASSET_LOAD(D_3000000, battle_ui, 0); + + if ((D_800AE540.unk_0000 == 0x10) || (D_800AE540.unk_0000 == 0xA)) { + sp32 = D_84384350[D_800AE540.unk_0001]; + if (D_800AE540.unk_0001 == 7) { + sp32 += D_800AE540.unk_0002; + } + } else { + sp32 = D_84384350[D_800AE540.unk_0000]; + if (D_800AE540.unk_0000 == 7) { + sp32 += D_800AE540.unk_0002; + } + } + + sp3C = func_8000484C(ASSET_LOAD2(stadium_models, 1, 1), sp32); + D_8438E780 = sp3C(2, 0); + + sp28 = func_80019D18(0x9A); + func_8430128C(); + func_843013E4(&D_8438E798[0], sp28); + func_843013E4(&D_8438E798[1], sp28); + + func_84300D44(); + func_800110E0(NULL, &D_8438E440, 0, 0, 0x140, 0xF0); + func_800110E0(NULL, &D_8438E598, 0x1E, 0x50, 0x4C, 0x4C); + func_800110E0(NULL, &D_8438E688, 0xE2, 0x50, 0x4C, 0x4C); + func_800113F8(0, &D_8438E530, 0x3C0, 0x3E8, 0xFF, 0xFF, 0xFF, 0xFF); + func_8001103C(NULL, &D_8438E550); + func_8001103C(NULL, &D_8438E568); + func_8001103C(NULL, &D_8438E580); + func_80011E68(&D_8438E440, 30.0f, 192.0f, 24576.0f); + func_8001BB20(); + func_84307394(0, D_8438E798); + func_84307A50(0, &D_8438E598, &D_8438E688); + func_8432AEE4(0, &D_8438E440); + func_8432D0D8(0, &D_8438E440); + + sp44 = func_80002D10(main_pool_get_available(), 0); + D_8438E784 = process_geo_layout(sp44, D_84384364); + D_8438E788 = process_geo_layout(sp44, D_843844C4); + D_8438E78C = process_geo_layout(sp44, D_84384514); + + temp_v0_4 = sp3C(0, 0); + if (temp_v0_4 != NULL) { + func_80012094(&D_8438E550, process_geo_layout(sp44, temp_v0_4)); + } + + temp_v0_4 = sp3C(1, 0); + if (temp_v0_4 != NULL) { + func_80012094(&D_8438E568, process_geo_layout(sp44, temp_v0_4)); + } + + temp_v0_4 = sp3C(3, 0); + if (temp_v0_4 != NULL) { + func_80012094(&D_8438E580, process_geo_layout(sp44, temp_v0_4)); + } + + func_80002D60(sp44); + + temp_v0_7 = sp3C(4, 0); + if (temp_v0_7 == NULL) { + D_8438E530.unk_00.unk_14 = 0; + D_8438E530.unk_00.unk_01 &= ~1; + } else { + D_8438E530.unk_18.unk_00 = temp_v0_7->unk_00; + D_8438E530.unk_18.unk_02 = temp_v0_7->unk_02; + D_8438E530.unk_18.unk_04.rgba = temp_v0_7->unk_04.rgba; + D_8438E530.unk_00.unk_14 = 1; + } + + func_84307394(3, D_8438E798); + func_84307A50(3, &D_8438E598, &D_8438E688); + func_8432AEE4(3, &D_8438E440); + func_8432D0D8(3, &D_8438E440); + + D_8438E7A0 = 1; + D_8438E79C = 0; +} void func_84301A24(void) { } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EA8E0/func_84301A2C.s") +s32 func_84301A2C(s32 arg0, unk_D_800AE540* arg1) { + unk_func_80007444* sp24; + + D_8438E798 = D_800AE540.unk_1194; + D_8438E7AC = -2; + + main_pool_push_state('BATL'); + + func_80005E40(0x20000, 0); + sp24 = func_80007444(0, 1, 3, 1, 2, 1); + func_84301430(sp24); + func_80007678(sp24); + func_800077B4(1); + func_800078D4(func_843010EC, 0x20, 0x10); + func_800077B4(2); + func_800076C0(); + func_80005EAC(); + + main_pool_pop_state('BATL'); + + return 0; +} diff --git a/src/fragments/62/fragment62_2EC3C0.c b/src/fragments/62/fragment62_2EC3C0.c index 518e576..422c592 100644 --- a/src/fragments/62/fragment62_2EC3C0.c +++ b/src/fragments/62/fragment62_2EC3C0.c @@ -1,243 +1,2208 @@ -#include "global.h" +#include "fragment62.h" +#include "src/17300.h" +#include "src/18140.h" +#include "src/1C720.h" +#include "src/232C0.h" +#include "src/2E110.h" +#include "src/2E460.h" +#include "src/373A0.h" +#include "src/3FB0.h" +#include "src/485C0.h" +#include "src/48C60.h" +#include "src/4BDC0.h" +#include "src/4F410.h" +#include "src/F420.h" +#include "src/memory.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84301B00.s") +static unk_D_8438E7B0 D_8438E7B0; +static unk_D_8438E7B0 D_8438F390; +static unk_D_8438FF70 D_8438FF70; +static unk_D_8438FF70 D_8438FF90; +static unk_D_8438FF70 D_8438FFB0; +static unk_D_8438FF70 D_8438FFD0; +static unk_D_84384588 D_8438FFF0; +static unk_D_84384588 D_84390000; +unk_D_84390010* D_84390010[2]; +unk_D_84390010* D_84390018; +unk_D_84390010* D_8439001C; +static unk_D_8438E7B0_A50* D_84390020; +unk_D_84390028 D_84390028[2]; +static unk_D_84390048 D_84390048; +static unk_D_84390068 D_84390068[7]; +static s32 D_843900A0; +static s32 D_843900A4; +f32 D_843900A8[2]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84301B48.s") +unk_D_8438E7B0* D_84384570[] = { &D_8438E7B0, &D_8438F390 }; +unk_D_8438FF70* D_84384578[] = { + &D_8438FF70, + &D_8438FF90, +}; +unk_D_8438FF70* D_84384580[] = { + &D_8438FFB0, + &D_8438FFD0, +}; +unk_D_84384588* D_84384588[] = { &D_8438FFF0, &D_84390000 }; +u8 D_84384590[] = { 0x39, 0x67, 0x64, 0x6D, 0x28, 0x6E, 0x2A, 0x47 }; +static u8 D_84384598[] = { 0x64, 0x6E }; +static u8 D_8438459C[] = { + 0x06, 0x0C, 0x30, 0x31, 0x32, 0x33, 0x8D, 0x96, 0x97, +}; +static u8 D_843845A8[] = { + 0x06, + 0x2E, +}; +static u8 D_843845AC[] = { + 0x06, + 0x42, +}; +static u8 D_843845B0[] = { + 0x06, + 0x42, +}; +static u8 D_843845B4[] = { + 0x06, + 0x42, +}; +static u8 D_843845B8[] = { + 0x06, + 0x06, +}; +static u8 D_843845BC[] = { + 0x06, + 0x06, +}; +static u8 D_843845C0[] = { + 0x06, + 0x16, +}; +static u8 D_843845C4[] = { + 0x01, + 0x7F, +}; +static u8 D_843845C8[] = { + 0x06, + 0x7F, +}; +static u8* D_843845CC[] = { + D_843845A8, D_843845AC, D_843845B0, D_843845B4, D_843845B8, D_843845BC, D_843845C0, D_843845C4, D_843845C8, +}; +u8 D_843845F0 = 0x8E; +u8 D_843845F4 = 0x16; +u8 D_843845F8 = 0x53; +u8 D_843845FC[] = { 0x55, 0x54 }; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84301B84.s") +void func_84301B00(void) { + s32 i; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84301BEC.s") + for (i = 0; i < 7; i++) { + D_84390068[i].unk_04 = D_84385380; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84301C54.s") +void func_84301B48(unk_D_84390010* arg0, s32 arg1) { + func_8432C68C(arg1, &arg0->unk_000, &arg0->unk_000, 0xFF, 0xFF); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84301CBC.s") +void func_84301B84(unk_D_84390010* arg0, s32 arg1) { + UNUSED s16 pad; + s16 sp24; + s32 sp20; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84301D08.s") + sp20 = func_84307F00(arg0) == 0; + sp24 = func_84307F24(arg0); + func_8432C5D4(arg1, arg0, D_84390010[sp20], sp24, func_84307F68(arg0)); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84301DDC.s") +void func_84301BEC(unk_D_84390010* arg0, s32 arg1) { + UNUSED s16 pad; + s16 sp24; + s32 sp20; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84301EEC.s") + sp20 = func_84307F00(arg0) == 0; + sp24 = func_84307F24(arg0); + func_8432C654(arg1, arg0, D_84390010[sp20], sp24, func_84307F68(arg0)); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84301EF4.s") +void func_84301C54(unk_D_84390010* arg0, s32 arg1) { + UNUSED s16 pad; + s16 sp24; + s32 sp20; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84301F2C.s") + sp20 = func_84307F00(arg0) == 0; + sp24 = func_84307FAC(arg0); + func_8432C604(arg1, D_84390010[sp20], arg0, sp24, func_84307FE0(arg0)); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84301F80.s") +void func_84301CBC(unk_D_84390010* arg0) { + if (func_84302000(arg0) != 0) { + arg0->unk_4C4 = 0; + D_84390068[D_843900A0].unk_04 = D_84385380; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84301FB0.s") +void func_84301D08(unk_D_84390010* arg0) { + UNUSED s32 pad; + s32 idx = arg0->unk_4C0; + s32 sp24 = D_84385384[idx].unk_20; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84301FC0.s") + D_84390020 = &D_84384570[func_84307F00(arg0)]->unk_000[sp24]; + if (func_84302000(arg0) != 0) { + func_84305A74(arg0, sp24, 2); + arg0->unk_4C4 = 0; + D_84390068[D_843900A0].unk_04 = D_84385380; + func_80017464(&arg0->unk_000, 0); + func_8001BD04(&arg0->unk_000, D_84390020->unk_00); + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84301FF0.s") +void func_84301DDC(unk_D_84390010* arg0) { + s32 idx = arg0->unk_4C0; + s32 sp28 = D_84385384[idx].unk_20; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84302000.s") + D_84390020 = &D_84384570[func_84307F00(arg0)]->unk_000[sp28]; + if (func_84307BAC(arg0) != 0.0f) { + D_84390068[D_843900A0].unk_04 = D_84385380; + } else if ((arg0->unk_4C4 == (D_84390020->unk_04 + 1)) && (func_84301FB0(arg0) == 0)) { + func_84301B48(arg0, D_84385384[idx].unk_24); + D_84390068[D_843900A0].unk_04 = D_84385380; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_8430203C.s") +void func_84301EEC(unk_D_84390010* arg0) { + arg0->unk_4C4 = 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_843020B0.s") +void func_84301EF4(unk_D_84390010* arg0) { + D_84390010[func_84307F00(arg0) == 0]->unk_4C4 = 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_843020F4.s") +void func_84301F2C(unk_D_84390010* arg0) { + unk_D_800FCB18* ptr = &arg0->unk_654.unk_38; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84302128.s") + if (ptr->unk_5A == 0x46 || ptr->unk_5A == 0x9D || ptr->unk_5A == 0x58) { + D_84390010[0]->unk_000.unk_000.unk_02 |= 2; + D_84390010[1]->unk_000.unk_000.unk_02 |= 2; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84302148.s") +void func_84301F80(unk_D_84390010* arg0) { + D_84390010[0]->unk_000.unk_000.unk_02 &= ~2; + D_84390010[1]->unk_000.unk_000.unk_02 &= ~2; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84302194.s") +s32 func_84301FB0(unk_D_84390010* arg0) { + return arg0->unk_720->unk_1D & 0xD0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_843021E8.s") +s32 func_84301FC0(unk_D_84390010* arg0) { + func_8001C2D8(arg0->unk_720); + return arg0->unk_720->unk_1D & 0xC0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_8430245C.s") +s32 func_84301FF0(unk_D_84390010* arg0) { + return arg0->unk_720->unk_00 & 0xD0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_8430255C.s") +s32 func_84302000(unk_D_84390010* arg0) { + if (func_84301FC0(arg0) == 0) { + func_8432CAA8(arg0->unk_720); + return 1; + } + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_843025BC.s") +void func_8430203C(unk_D_84390010* arg0) { + if (D_84390240.unk_00->unk_48 == 0xE) { + func_8432C958(arg0->unk_720, func_8430808C(arg0)); + } else { + func_8432C958(arg0->unk_720, func_8430808C(arg0)); + } +} +void func_843020B0(unk_D_84390010* arg0) { + s32 idx = arg0->unk_4C0; + + func_8432C9C0(arg0->unk_720, D_84385384[idx].unk_24); +} + +void func_843020F4(unk_D_84390010* arg0) { + func_8432C958(arg0->unk_720, func_8430808C(arg0)); +} + +void func_84302128(unk_D_84390010* arg0) { + arg0->unk_720->unk_02 = 0x98; + arg0->unk_720->unk_00 |= 0x80; +} + +void func_84302148(unk_D_84390010* arg0) { + arg0->unk_720->unk_04 = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08]; + arg0->unk_720->unk_00 |= 0x80; + arg0->unk_720->unk_02 = arg0->unk_654.unk_BC; +} + +s32 func_84302194(u16 arg0, u8* arg1, s32 arg2) { + s32 var_v1 = 0; + + while (arg2--) { + if (arg0 == *arg1) { + return var_v1; + } + arg1++; + var_v1++; + } + + return -1; +} + +void func_843021E8(unk_D_84390010* arg0, u16 arg1, unk_D_84390010_94C* arg2, unk_D_84390010_94C* arg3) { + s32 i; + s32 j; + s32 temp_v0_3; + s32 temp_v1_2; + u8 var_a0; + unk_D_80070F84* temp_s4; + unk_D_800FCB18* temp_s5; + + temp_s5 = &arg0->unk_654.unk_38; + + for (i = 0; i < 4; i++) { + if (temp_s5->unk_1F[i] != 0) { + temp_s4 = &D_80070FA0[arg1]; + + for (j = 0; j < 4; j++) { + if ((temp_s4->unk_0A[j] != 0) && (temp_s4->unk_0A[j] == temp_s5->unk_1F[i])) { + arg0->unk_654.unk_C1[i] = 0; + } + } + + for (j = 0; j < 10; j++) { + if ((arg2->unk_00[j] != 0) && (temp_s5->unk_26 >= arg2->unk_00[j]) && + (arg2->unk_0A[j] == temp_s5->unk_1F[i])) { + arg0->unk_654.unk_C1[i] = 0; + } + } + + for (j = 0; j < 10; j++) { + if ((arg3->unk_00[j] != 0) && (temp_s5->unk_26 >= arg3->unk_00[j]) && + (arg3->unk_0A[j] == temp_s5->unk_1F[i])) { + arg0->unk_654.unk_C1[i] = 0; + } + } + + for (j = 0; j < 0x37; j++) { + temp_v0_3 = func_84302194(arg1 + 1, D_8438459C, 9); + if (temp_v0_3 >= 0) { + temp_v1_2 = j / 8; + if (temp_v1_2 == D_843845CC[temp_v0_3][0]) { + var_a0 = temp_s4->unk_0F[temp_v1_2] | D_843845CC[temp_v0_3][1]; + } else { + var_a0 = temp_s4->unk_0F[temp_v1_2]; + } + } else { + var_a0 = temp_s4->unk_0F[j / 8]; + } + + if (((var_a0 >> (j % 8)) & 1) && (func_80022A28(j) == temp_s5->unk_1F[i])) { + arg0->unk_654.unk_C1[i] = 0; + } + } + } else { + arg0->unk_654.unk_C1[i] = 0; + } + } +} + +void func_8430245C(unk_D_84390010* arg0) { + arg0->unk_654.unk_C1[0] = 1; + arg0->unk_654.unk_C1[1] = 1; + arg0->unk_654.unk_C1[2] = 1; + arg0->unk_654.unk_C1[3] = 1; + + func_843021E8(arg0, arg0->unk_654.unk_38.unk_0B - 1, &arg0->unk_94C, &arg0->unk_9AC); + + if (D_84384588[func_84307F00(arg0)]->unk_00 != 0) { + func_843021E8(arg0, D_84384588[func_84307F00(arg0)]->unk_00 - 1, &arg0->unk_96C, &arg0->unk_9CC); + } + + if (D_84384588[func_84307F00(arg0)]->unk_01 != 0) { + func_843021E8(arg0, D_84384588[func_84307F00(arg0)]->unk_01 - 1, &arg0->unk_98C, &arg0->unk_9EC); + } +} + +void func_8430255C(u8 arg0, u32 arg1) { + u32 temp_a1 = (u32)_70D3A0_ROM_START + ((u32)&D_72780[arg0 - 1] & 0xFFFFFF); + + func_80003B30(arg1, temp_a1, temp_a1 + 0x20, 0); +} + +void func_843025BC(s32 arg0, unk_D_84390010_94C* arg1, unk_D_84390010_94C* arg2) { + UNUSED s32 pad[3]; + u32 temp_a1; + + temp_a1 = (u32)_70D3A0_ROM_START + ((u32)&D_72780[arg0] & 0xFFFFFF); + func_80003B30(arg1, temp_a1, temp_a1 + 0x20, 0); + temp_a1 = (u32)_70D3A0_ROM_START + ((u32)&D_73A60[arg0] & 0xFFFFFF); + func_80003B30(arg2, temp_a1, temp_a1 + 0x20, 0); +} + +#ifdef NON_MATCHING +void func_84302658(unk_D_84390010* arg0, s32 arg1) { + s16 sp6E; + s32 sp68; + s16 sp66; + u32 var_a1; + s32 pad[8]; + unk_func_80026268_arg0* ptr; + unk_D_8438FF70* ptr2; + u32 tmp; + s32 var_a2; + + sp68 = func_84307F00(arg0); + sp66 = arg0->unk_000.unk_01A - 1; + + ptr = &arg0->unk_720->unk_08[arg0->unk_654.unk_2C]->unk_01C[arg0->unk_654.unk_18]; + + var_a1 = (u32)_70D3A0_ROM_START + ((u32)D_80075BD0[sp66] & 0xFFFFFF); + if ((arg0->unk_000.unk_01A == 0x19) && (ptr->unk_52 & 0x80)) { + var_a1 = (u32)_70D3A0_ROM_START + ((u32)D_80075BD0[152] & 0xFFFFFF); + } + func_80003B30(D_84384570[sp68], var_a1, var_a1 + 0xBC0, 0); + + var_a1 = (u32)_70D3A0_ROM_START + ((u32)(D_6E910 + (sp66 << 5)) & 0xFFFFFF); + func_80003B30(D_84384580[sp68], var_a1, var_a1 + 0x20, 0); + + if (sp68 == 1) { + var_a1 = (u32)_70D3A0_ROM_START + ((u32)(D_6E910 + (sp66 << 5)) & 0xFFFFFF); + func_80003B30(D_84384578[sp68], var_a1, var_a1 + 0x20, 0); + + ptr2 = D_84384578[sp68]; + if (ptr2->unk_10 != 0xFF) { + sp6E = ptr2->unk_10; + + var_a1 = ((u32)_70D3A0_ROM_START) + (((u32)(D_6E910 + ((ptr2->unk_10 - (tmp = 2)) * 0x20))) & 0xFFFFFF); + func_80003B30(ptr2, var_a1, var_a1 + 0x20, 0); + + D_84384578[sp68]->unk_10 = sp6E; + } + } else { + var_a1 = (u32)_70D3A0_ROM_START + ((u32)(D_6E910 + (sp66 << 5)) & 0xFFFFFF); + func_80003B30(D_84384578[sp68], var_a1, var_a1 + 0x20, 0); + } + + var_a1 = (u32)_70D3A0_ROM_START + ((u32)(D_70B10 + (sp66 * 0x20)) & 0xFFFFFF); + func_80003B30(&D_84390048, var_a1, var_a1 + 0x20, 0); + + func_8430C1E4(&arg0->unk_448.unk_24.unk_00, &D_84390048.unk_00); + func_8430C1E4(&arg0->unk_448.unk_24.unk_0C, &D_84390048.unk_0C); + + arg0->unk_448.unk_24.unk_18 = D_84390048.unk_18; + arg0->unk_448.unk_24.unk_19 = D_84390048.unk_19; + arg0->unk_448.unk_24.unk_1A = D_84390048.unk_1A; + arg0->unk_448.unk_24.unk_1B = D_84390048.unk_1B; + arg0->unk_448.unk_24.unk_00.x *= arg0->unk_4B0; + arg0->unk_448.unk_24.unk_0C.x *= arg0->unk_4B0; + + var_a1 = (u32)_70D3A0_ROM_START + ((u32)(D_70110 + (sp66 << 4)) & 0xFFFFFF); + func_80003B30(&D_84390028[sp68], var_a1, var_a1 + 0x10, 0); + + var_a1 = (u32)_70D3A0_ROM_START + ((u32)(D_71E10 + (sp66 * 0x10)) & 0xFFFFFF); + func_80003B30(D_84384588[sp68], var_a1, var_a1 + 0x10, 0); + + func_843025BC(sp66, &arg0->unk_94C, &arg0->unk_9AC); + + if (D_84384588[sp68]->unk_00 != 0) { + func_843025BC(D_84384588[sp68]->unk_00 - 1, &arg0->unk_96C, &arg0->unk_9CC); + } + + if (D_84384588[sp68]->unk_01 != 0) { + func_843025BC(D_84384588[sp68]->unk_01 - 1, &arg0->unk_98C, &arg0->unk_9EC); + } + + if (arg1 == 1) { + func_8430245C(arg0); + } +} +#else #pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84302658.s") +#endif -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_843029D0.s") +void func_843029D0(unk_D_84390010* arg0) { + if (arg0->unk_4C4 == 0x14) { + arg0->unk_720->unk_00 |= 0x80; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84302A78.s") + if (arg0->unk_720->unk_00 & 0x10) { + arg0->unk_720->unk_00 &= ~0x90; + func_8430920C(arg0); + func_84307748(arg0); + func_800367A0(2, 0, 0); + D_84390068[D_843900A0].unk_04 = D_84385380; + func_84305760(arg0, 0x12); + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84302C34.s") +void func_84302A78(unk_D_84390010* arg0) { + unk_D_800FCB18* sp24; + unk_D_84390010_654* sp20; + s32 idx; + s16 sp2A; + u8 tmp; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84302EF0.s") + sp2A = arg0->unk_000.unk_01A - 1; + sp24 = &arg0->unk_654.unk_38; + sp20 = &arg0->unk_654; + idx = func_84307F00(arg0); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_8430305C.s") + D_84390020 = &D_84384570[idx]->unk_000[sp24->unk_5A - 1]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_843031A0.s") + if (!(sp20->unk_34 & 2)) { + arg0->unk_4C4 = 0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84303208.s") + if (func_84307B60(arg0) != 0) { + tmp = func_84307F00(arg0); + func_80048060(tmp, sp24->unk_5A, 0xC8, 0); + } else { + tmp = func_84307F00(arg0); + func_80048060(tmp, sp24->unk_5A, sp2A + 1, 0); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_8430334C.s") + if ((sp20->unk_34 & 0x4000) && ((sp2A == 0x32) || (sp2A == 0x31))) { + func_84306200(arg0, 8); + arg0->unk_000.unk_000.unk_02 |= 0x20; + func_843061EC(arg0, 0x10); + func_84306200(arg0, 0x4000); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_843033E0.s") + func_84301F2C(arg0); + func_8001BD04(&arg0->unk_000, D_84390020->unk_00); + func_843058C4(arg0, sp24->unk_5A - 1); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_843034D8.s") + if (D_84390020->unk_0B != 0) { + func_80017464(&arg0->unk_000, D_84390020->unk_0B); + func_80017804(&arg0->unk_000, D_84390020->unk_0B); + arg0->unk_4C4 = D_84390020->unk_0B; + } else { + func_80017464(&arg0->unk_000, 0); + } + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84303674.s") +void func_84302C34(unk_D_84390010* arg0) { + UNUSED s32 pad; + s16 sp32 = arg0->unk_000.unk_01A - 1; + unk_D_800FCB18* sp24; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_843037CC.s") + func_84307F00(arg0); + sp24 = &arg0->unk_654.unk_38; + D_84390020 = &D_84384570[func_84307F00(arg0)]->unk_000[sp24->unk_5A - 1]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84303A48.s") + if ((sp24->unk_5A == 0x19) && (sp32 == 0x64)) { + D_84390068[D_843900A0].unk_04 = D_84385380; + } else if ((arg0->unk_4C4 == (D_84390020->unk_04 + 1)) && (func_84301FB0(arg0) == 0)) { + if (D_84390240.unk_00->unk_48 == 0x14) { + D_84390068[D_843900A0].unk_04 = D_84385380; + } else if (sp24->unk_44.unk_00 == 0x5B) { + D_84390068[D_843900A0].unk_04 = D_84385380; + } else { + if (sp24->unk_44.unk_00 == 0x6E) { + if ((sp32 != 7) && (sp32 != 8) && (sp32 != 0x5A) && (sp32 != 6)) { + func_84308654(arg0, 0xC, 0); + func_84301B84(arg0, sp24->unk_5A); + } + } else { + if (sp24->unk_44.unk_00 == 0x45) { + func_84308654(arg0, 8, 0); + } else if (sp24->unk_44.unk_00 == 0x39) { + func_84308654(arg0, 0xA, 0); + } else if (sp24->unk_44.unk_00 == 0x60) { + func_84308654(arg0, 0xD, 0); + } else if (sp24->unk_44.unk_00 == 0x7F) { + func_84308654(arg0, 0xE, 0); + } else if (sp24->unk_44.unk_00 == 0x6B) { + func_84308654(arg0, 9, 0); + } else { + func_84308654(arg0, D_84390020->unk_05, 0); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84303BB8.s") + if ((sp24->unk_5A == 0x9A) && (D_84390230 == D_8439022C)) { + func_84301BEC(arg0, sp24->unk_5A); + } else { + func_84301B84(arg0, sp24->unk_5A); + } + } + D_84390068[D_843900A0].unk_04 = D_84385380; + } + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84303CB4.s") +void func_84302EF0(unk_D_84390010* arg0) { + unk_D_800FCB18* sp24 = &arg0->unk_654.unk_38; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84303D50.s") + D_84390020 = &D_84384570[func_84307F00(arg0)]->unk_000[sp24->unk_5A - 1]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84303DEC.s") + if (arg0->unk_4C4 == (D_84390020->unk_04 + 1)) { + if (func_84301FB0(arg0) == 0) { + if (D_84390240.unk_00->unk_48 == 0x18) { + D_84390234--; + if (D_84390234 < 0) { + if (D_843C4DA4 != 0) { + func_8432B5B8(arg0, sp24, 2); + } + } else { + func_8432B5B8(arg0, sp24, 3); + } + } else if (D_843C4DA4 != 0) { + func_8432B5B8(arg0, sp24, 2); + } else { + if ((sp24->unk_5A == 0x2D) || (sp24->unk_5A == 0x2E) || (sp24->unk_5A == 0x59)) { + func_8431B290(arg0); + } + func_8432B5B8(arg0, sp24, 0); + func_843031A0(arg0); + } + D_84390068[D_843900A0].unk_04 = D_84385380; + } + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84303E58.s") +void func_8430305C(unk_D_84390010* arg0) { + unk_D_800FCB18* sp24 = &arg0->unk_654.unk_38; + UNUSED s16 pad; + s16 sp18; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84303ECC.s") + sp18 = sp24->unk_5A; + func_84307F00(arg0); + D_84390020 = &D_84384570[func_84307F00(arg0)]->unk_000[sp24->unk_5A - 1]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84304114.s") + if (arg0->unk_4C4 == (D_84390020->unk_09 + 1)) { + if (func_84301FB0(arg0) == 0) { + if (((sp18 == 0x4A) || (sp18 == 0x60) || (sp18 == 0x61) || (sp18 == 0x6A) || (sp18 == 0x6E) || + (sp18 == 0xE) || (sp18 == 0x68) || (sp18 == 0x6B) || (sp18 == 0x6F) || (sp18 == 0x70) || + (sp18 == 0x85) || (sp18 == 0x97) || (sp18 == 0x9F)) && + (D_843C4E45 == 1)) { + func_8432C6C4(3, arg0); + func_800367A0(0x23, 0, 0); + } + D_84390068[D_843900A0].unk_04 = D_84385380; + } + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84304210.s") +void func_843031A0(unk_D_84390010* arg0) { + unk_D_800FCB18* temp_v1 = &arg0->unk_654.unk_38; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_843043FC.s") + D_84390020 = &D_84384570[func_84307F00(arg0)]->unk_000[temp_v1->unk_5A - 1]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_843045DC.s") + if (temp_v1->unk_5A == 0x6A) { + func_8001BE84(&arg0->unk_000, 1); + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_843046BC.s") +void func_84303208(unk_D_84390010* arg0) { + UNUSED s32 pad[2]; + unk_D_84390010_654* temp_v1 = &arg0->unk_654; + s16 sp22; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84304758.s") + sp22 = arg0->unk_000.unk_01A - 1; + D_84390020 = D_84384570[func_84307F00(arg0)]->unk_000; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84304800.s") + if (!(temp_v1->unk_34 & 2)) { + arg0->unk_4C4 = 0; + if ((temp_v1->unk_34 & 0x4000) && ((sp22 == 0x32) || (sp22 == 0x31))) { + func_84306200(arg0, 8); + arg0->unk_000.unk_000.unk_02 |= 0x20; + func_843061EC(arg0, 0x10); + func_84306200(arg0, 0x4000); + } + func_8001BD04(&arg0->unk_000, D_84390020->unk_00); + func_80017464(&arg0->unk_000, 0); + func_843058C4(arg0, 4); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84304834.s") + if (D_84390020->unk_0B != 0) { + func_80017464(&arg0->unk_000, D_84390020->unk_0B); + func_80017804(&arg0->unk_000, D_84390020->unk_0B); + arg0->unk_4C4 = D_84390020->unk_0B; + } else { + func_80017464(&arg0->unk_000, 0); + } + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_843048C8.s") +void func_8430334C(unk_D_84390010* arg0) { + D_84390020 = &D_84384570[func_84307F00(arg0)]->unk_000[0]; + if ((arg0->unk_4C4 == (D_84390020->unk_04 + 1)) && (func_84301FB0(arg0) == 0)) { + func_800479C0(1, arg0->unk_000.unk_01A, 0); + D_84390068[D_843900A0].unk_04 = D_84385380; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_843049FC.s") +void func_843033E0(unk_D_84390010* arg0) { + unk_D_84390010_654* sp20; + unk_D_800FCB18* ptr; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84304ACC.s") + sp20 = &arg0->unk_654; + ptr = &arg0->unk_654.unk_38; + D_84390020 = &D_84384570[func_84307F00(arg0)]->unk_000[ptr->unk_5A - 1]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84304B50.s") + if (sp20->unk_34 & 2) { + return; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84304C20.s") + arg0->unk_4C4 = D_84390020->unk_06; + if (!(sp20->unk_34 & 0x4000)) { + func_84301F2C(arg0); + func_8001BD04(&arg0->unk_000, D_84390020->unk_00); + func_80017464(&arg0->unk_000, D_84390020->unk_06); + if (D_84390020->unk_01 != 0xFF) { + func_8001BD9C(&arg0->unk_000, D_84390020->unk_01); + func_80017804(&arg0->unk_000, D_84390020->unk_06); + sp20->unk_36 = 1; + } + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84304C8C.s") +void func_843034D8(unk_D_84390010* arg0) { + unk_D_800FCB18* sp20; + s32 var_v0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84304D84.s") + sp20 = &arg0->unk_654.unk_38; + D_84390020 = &D_84384570[func_84307F00(arg0)]->unk_000[sp20->unk_5A - 1]; + if (sp20->unk_5A == 0x9A) { + var_v0 = D_84390020->unk_04 + 0x1E; + } else { + var_v0 = D_84390020->unk_04 + 1; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84304F54.s") + if ((var_v0 == arg0->unk_4C4) && (func_84301FB0(arg0) == 0)) { + if (D_84390240.unk_00->unk_48 == 0x14) { + D_84390068[D_843900A0].unk_04 = D_84385380; + return; + } + if ((sp20->unk_5A == 0x9A) && (D_84390230 == D_8439022C)) { + func_84301BEC(arg0, sp20->unk_5A); + } else { + func_84301B84(arg0, sp20->unk_5A); + } + + if (sp20->unk_44.unk_00 == 0x45) { + func_84308654(arg0, 8, 0); + } else if (sp20->unk_44.unk_00 == 0x39) { + func_84308654(arg0, 0xA, 0); + } else { + func_84308654(arg0, D_84390020->unk_05, 0); + } + D_84390068[D_843900A0].unk_04 = D_84385380; + } +} + +void func_84303674(unk_D_84390010* arg0) { + unk_D_800FCB18* sp18; + s32 var_v0; + + sp18 = &arg0->unk_654.unk_38; + D_84390020 = &D_84384570[func_84307F00(arg0)]->unk_000[sp18->unk_5A - 1]; + + if (sp18->unk_5A == 0x9A) { + var_v0 = D_84390020->unk_04 + 0x1E; + } else { + var_v0 = D_84390020->unk_04 + 1; + } + + if (var_v0 == arg0->unk_4C4) { + if (func_84301FB0(arg0) == 0) { + if (D_84390240.unk_00->unk_48 == 0x18) { + D_84390234--; + if (D_84390234 < 0) { + if (D_843C4DA4 != 0) { + func_8432B5B8(arg0, sp18, 2); + } else { + func_8432B5B8(arg0, sp18, 0); + } + } else { + func_8432B5B8(arg0, sp18, 3); + } + } else if (D_843C4DA4 != 0) { + func_8432B5B8(arg0, sp18, 2); + } else { + func_8432B5B8(arg0, sp18, 0); + } + D_84390068[D_843900A0].unk_04 = D_84385380; + } + } +} + +void func_843037CC(unk_D_84390010* arg0) { + UNUSED s32 pad[3]; + s32 sp40; + unk_D_84390010_654* sp3C; + UNUSED s32 pad2; + s32 temp_v0; + unk_D_800FCB18* sp28; + unk_D_84390010* temp_a1; + + sp28 = &arg0->unk_654.unk_38; + sp40 = func_84307F00(arg0) == 0; + sp3C = &D_84390010[sp40]->unk_654; + temp_a1 = D_84390010[sp40]; + D_84390020 = &D_84384570[sp40]->unk_A80; + + if (sp3C->unk_34 & 1) { + temp_v0 = func_84307AE0(temp_a1->unk_000.unk_01A, D_84384598, 2); + if (temp_v0 != 0) { + D_84390020 = &D_84384570[sp40]->unk_B20; + } + } + + D_84390010[sp40]->unk_4C4 = 0; + + if (!(sp3C->unk_34 & 0x200) && !(sp3C->unk_34 & 0x4000) && !(sp3C->unk_34 & 2)) { + if (((D_843C4DEC < 0xA) || (D_843C4DA4 != 0)) && ((sp28->unk_15 & 0x20) == 0)) { + D_84390020 = &D_84384570[sp40]->unk_A50; + if (sp3C->unk_34 & 0x200) { + D_84390020 = &D_84384570[sp40]->unk_B00; + } + } else if (!(sp3C->unk_34 & 1)) { + func_84305A74(D_84390010[sp40], 0xA8, 1); + } + + if ((D_843C4DEC >= 0xB) && (func_84307B60(D_84390010[sp40]) != 0)) { + func_8004E810(0xC8, 6); + } + + if ((D_843C4DEC == 0xA) && (func_84307B60(D_84390010[sp40]) != 0)) { + func_8004E810(0xC8, 5); + } + + if ((D_843C4DA4 == 0) && (sp28->unk_5A == 0x49)) { + D_84390020 = &D_84384570[sp40]->unk_A80; + } + + func_80017464(&D_84390010[sp40]->unk_000, 0); + func_8001BD04(&D_84390010[sp40]->unk_000, D_84390020->unk_00); + + if ((sp28->unk_44.unk_00 == 0x17) || (sp28->unk_44.unk_00 == 0x22) || (sp28->unk_44.unk_00 == 0x45)) { + func_84308654(D_84390010[sp40], 0xF, 0); + } + } +} + +void func_84303A48(unk_D_84390010* arg0) { + unk_D_800FCB18* sp20; + s32 sp28; + + sp20 = &arg0->unk_654.unk_38; + sp28 = func_84307F00(arg0); + + D_84390020 = &D_84384570[func_84307F00(arg0) == 0]->unk_000[sp20->unk_5A - 1]; + + if (D_84390010[sp28 == 0]->unk_4C4 == (D_84390020->unk_07 + 1)) { + if (func_84301FB0(arg0) == 0) { + func_8432E9D8(1); + if (sp20->unk_44.unk_00 == 0x51) { + if ((D_843C4E45 != 0) && (D_843C4E44 != 0)) { + func_84301C54(D_84390010[sp28 == 0], sp20->unk_5A); + func_84308654(D_84390010[sp28 == 0], 0x10, 0); + } + } else { + func_84301C54(D_84390010[sp28 == 0], sp20->unk_5A); + if ((sp20->unk_44.unk_00 == 0x14) || (sp20->unk_44.unk_00 == 0x23) || (sp20->unk_44.unk_00 == 0x84)) { + func_84308654(D_84390010[sp28 == 0], 0x10, 0); + } + } + D_84390068[D_843900A0].unk_04 = D_84385380; + } + } +} + +void func_84303BB8(unk_D_84390010* arg0) { + unk_D_800FCB18* sp20; + s32 sp28; + + sp28 = func_84307F00(arg0) == 0; + sp20 = &arg0->unk_654.unk_38; + + D_84390020 = &D_84384570[func_84307F00(arg0) == 0]->unk_000[sp20->unk_5A - 1]; + + if ((D_84390020->unk_07 + 1) == D_84390010[sp28]->unk_4C4) { + if (func_84301FB0(arg0) == 0) { + if (D_843C4E44 == 1) { + func_8432B5B8(D_84390010[sp28], sp20, 1); + } else { + func_8432B5B8(D_84390010[sp28], sp20, 5); + } + D_84390068[D_843900A0].unk_04 = D_84385380; + } + } +} + +void func_84303CB4(unk_D_84390010* arg0) { + s32 sp1C = func_84307F00(arg0); + + D_84390020 = &D_84384570[sp1C]->unk_A80; + D_84390010[sp1C]->unk_4C4 = 0; + func_80017464(&arg0->unk_000, 0); + func_8001BD04(&arg0->unk_000, D_84390020->unk_00); + func_84305A74(D_84390010[sp1C], 0xA8, 1); + func_8432BF88(arg0, 0x1E); +} + +s32 func_84303D50(unk_D_84390010* arg0) { + unk_D_800FCB18* sp1C; + + sp1C = &D_84390010[func_84307F00(arg0) == 0]->unk_654.unk_38; + D_84390020 = &D_84384570[func_84307F00(arg0)]->unk_000[sp1C->unk_5A - 1]; + if (D_84390020->unk_0C != 0) { + if (arg0->unk_4C4 == D_84390020->unk_0C) { + return 1; + } + return 0; + } + return 0; +} + +s32 func_84303DEC(unk_D_84390010* arg0) { + func_84307F00(arg0); + D_84390020 = &D_84384570[func_84307F00(arg0)]->unk_000[0]; + if (D_84390020->unk_0C != 0) { + if (arg0->unk_4C4 == D_84390020->unk_0C) { + return 1; + } + return 0; + } + return 0; +} + +void func_84303E58(unk_D_84390010* arg0) { + D_84390020 = &D_84384570[func_84307F00(arg0)]->unk_A80; + func_843058C4(arg0, 0xA8); + arg0->unk_4C4 = 0; + func_80017464(&arg0->unk_000, 0); + func_8001BD04(&arg0->unk_000, D_84390020->unk_00); +} + +void func_84303ECC(unk_D_84390010* arg0) { + s32 idx = arg0->unk_4C0; + s32 temp_a0; + s32 sp34; + unk_func_80026268_arg0* sp30; + unk_D_84390010_654* sp24; + + sp34 = D_84385384[idx].unk_20; + sp30 = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08]; + sp24 = &arg0->unk_654; + D_84390020 = &D_84384570[func_84307F00(arg0)]->unk_000[sp34]; + temp_a0 = sp24->unk_34 & 2; + + if ((temp_a0 == 0) && !(sp24->unk_34 & 0x4000) && (temp_a0 == 0)) { + if (sp30->unk_05 & 7) { + if (func_84307AE0(arg0->unk_000.unk_01A, D_84384590, 8) != 0) { + D_84390020 = &D_84384570[func_84307F00(arg0)]->unkA90[0x60]; + } else { + D_84390020 = &D_84384570[func_84307F00(arg0)]->unk_A50; + } + } else if (sp24->unk_34 & 0x200) { + D_84390020 = &D_84384570[func_84307F00(arg0)]->unk_B00; + } + + func_80017464(&arg0->unk_000, 0); + func_8001BD04(&arg0->unk_000, D_84390020->unk_00); + + if (sp24->unk_34 & 0x200) { + if (func_84307B60(arg0) != 0) { + func_80048060(func_84307F00(arg0) & 0xFF, 0, 0xC8, 0x1A); + } else { + func_80048060(func_84307F00(arg0) & 0xFF, 0, arg0->unk_000.unk_01A, 0x1A); + } + } else if (func_84307B60(arg0) != 0) { + func_80048060(func_84307F00(arg0) & 0xFF, 0, 0xC8, 0xA); + } else { + func_80048060(func_84307F00(arg0) & 0xFF, 0, arg0->unk_000.unk_01A, 0xA); + } + } +} + +void func_84304114(unk_D_84390010* arg0) { + UNUSED s32 pad; + unk_D_84390010_654* sp18 = &arg0->unk_654; + unk_func_80026268_arg0* ptr = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08]; + + if ((sp18->unk_34 & 0x4000) || (sp18->unk_34 & 2) || (ptr->unk_05 & 7)) { + D_84390068[D_843900A0].unk_04 = D_84385380; + } else if (arg0->unk_4C4 == 1) { + if (func_84301FB0(arg0) == 0) { + if (arg0->unk_000.unk_01A >= 0x98) { + func_8432B510(arg0, sp18->unk_BC); + } else { + func_8432B510(arg0, arg0->unk_000.unk_01A); + } + D_84390068[D_843900A0].unk_04 = D_84385380; + } + } +} + +void func_84304210(unk_D_84390010* arg0) { + UNUSED s32 pad; + unk_func_80026268_arg0* ptr = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08]; + unk_D_84390010_654* sp24 = &arg0->unk_654; + + if ((arg0->unk_654.unk_34 & 0x4000) || (sp24->unk_34 & 2) || (ptr->unk_05 & 7)) { + D_84390068[D_843900A0].unk_04 = D_84385380; + } else if ((arg0->unk_4C4 == 1) && (func_84301FB0(arg0) == 0)) { + if (arg0->unk_000.unk_01A >= 0x98) { + func_8004E810(sp24->unk_BC, 3); + } else if (func_84307B60(arg0) != 0) { + func_8004E810(0xC8, 3); + } else { + func_8004E810(arg0->unk_000.unk_01A, 3); + } + + if (sp24->unk_34 & 0x200) { + if (func_84307B60(arg0) != 0) { + func_80048060(func_84307F00(arg0) & 0xFF, 0, 0xC8, 0x1B); + } else { + func_80048060(func_84307F00(arg0) & 0xFF, 0, arg0->unk_000.unk_01A, 0x1B); + } + } else if (func_84307B60(arg0) != 0) { + func_80048060(func_84307F00(arg0) & 0xFF, 0, 0xC8, 0xB); + } else { + func_80048060(func_84307F00(arg0) & 0xFF, 0, arg0->unk_000.unk_01A, 0xB); + } + D_84390068[D_843900A0].unk_04 = D_84385380; + } +} + +void func_843043FC(unk_D_84390010* arg0) { + UNUSED s32 pad; + unk_func_80026268_arg0* ptr = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08]; + unk_D_84390010_654* sp24; + + if ((arg0->unk_654.unk_34 & 0x4000) || (ptr->unk_05 & 0x20) || (ptr->unk_05 & 7)) { + D_84390068[D_843900A0].unk_04 = D_84385380; + return; + } + + if ((arg0->unk_4C4 == 1) && (func_84301FB0(arg0) == 0)) { + sp24 = &arg0->unk_654; + if (arg0->unk_000.unk_01A >= 0x98) { + func_8004E810(sp24->unk_BC, 4); + } else if (func_84307B60(arg0) != 0) { + func_8004E810(0xC8, 4); + } else { + func_8004E810(arg0->unk_000.unk_01A, 4); + } + + if (sp24->unk_34 & 0x200) { + if (func_84307B60(arg0) != 0) { + func_80048060(func_84307F00(arg0) & 0xFF, 0, 0xC8, 0x1B); + } else { + func_80048060(func_84307F00(arg0) & 0xFF, 0, arg0->unk_000.unk_01A, 0x1B); + } + } else if (func_84307B60(arg0) != 0) { + func_80048060(func_84307F00(arg0) & 0xFF, 0, 0xC8, 0xB); + } else { + func_80048060(func_84307F00(arg0) & 0xFF, 0, arg0->unk_000.unk_01A, 0xB); + } + + D_84390068[D_843900A0].unk_04 = D_84385380; + } +} + +void func_843045DC(unk_D_84390010* arg0) { + UNUSED s32 pad[2]; + s32 sp24 = arg0->unk_4C0; + unk_D_84390010_654* temp_v1 = &arg0->unk_654; + + if (func_84302000(arg0) != 0) { + arg0->unk_720->unk_02 = arg0->unk_654.unk_38.unk_0B; + arg0->unk_4C4 = 0; + func_84301B48(arg0, D_84385384[sp24].unk_24); + func_800367A0(3, 0, 0); + arg0->unk_720->unk_04 = &arg0->unk_720->unk_08[temp_v1->unk_2B]->unk_01C[temp_v1->unk_18]; + D_84390068[D_843900A0].unk_04 = D_84385380; + } +} + +void func_843046BC(unk_D_84390010* arg0) { + func_84307F00(arg0); + if ((arg0->unk_4C4 == 1) && (func_84301FB0(arg0) == 0)) { + s32 idx = arg0->unk_4C0; + + func_84301B48(arg0, D_84385384[idx].unk_24); + func_800367A0(3, 0, 0); + D_84390068[D_843900A0].unk_04 = D_84385380; + } +} + +void func_84304758(unk_D_84390010* arg0) { + if (arg0->unk_4C4 == 0x4F) { + arg0->unk_720->unk_00 |= 0x80; + } + + if (arg0->unk_720->unk_00 & 0x10) { + arg0->unk_720->unk_00 &= ~0x90; + + func_8430920C(arg0); + func_84307748(arg0); + func_800367A0(2, 0, 0); + + D_84390068[D_843900A0].unk_04 = D_84385380; + + func_84305760(arg0, 0x12); + } +} + +void func_84304800(unk_D_84390010* arg0) { + if (arg0->unk_720->unk_00 & 0x10) { + arg0->unk_720->unk_00 &= ~0x90; + func_843092B4(arg0); + } +} + +void func_84304834(unk_D_84390010* arg0) { + UNUSED s32 pad[2]; + s32 sp24 = D_84384670[arg0->unk_654.unk_38.unk_5A - 1]; + + D_84390020 = &D_84384570[func_84307F00(arg0)]->unk_000[sp24]; + arg0->unk_4C4 = 0; + func_80017464(&arg0->unk_000, 0); + func_8001BD04(&arg0->unk_000, D_84390020->unk_00); + func_843058C4(arg0, sp24); +} + +void func_843048C8(unk_D_84390010* arg0) { + unk_D_800FCB18* temp_s1_2; + s16 sp22; + s16 temp_s1; + + sp22 = arg0->unk_000.unk_01A - 1; + temp_s1_2 = &arg0->unk_654.unk_38; + temp_s1 = D_84384670[temp_s1_2->unk_5A - 1]; + + func_84307F00(arg0); + + D_84390020 = &D_84384570[func_84307F00(arg0)]->unk_000[temp_s1]; + + if ((arg0->unk_4C4 == (D_84390020->unk_04 + 1)) && (func_84301FB0(arg0) == 0)) { + func_84301BEC(arg0, temp_s1_2->unk_5A); + + if (temp_s1_2->unk_5A == 0x13) { + func_84308654(arg0, 3, 0); + } + + if ((temp_s1_2->unk_5A == 0x5B) && (sp22 != 0x31) && (sp22 != 0x32)) { + func_84308654(arg0, 5, 0); + func_8432C7A0(4, arg0); + } + + D_84390068[D_843900A0].unk_04 = D_84385380; + + func_8432B5B8(arg0, temp_s1_2, 4); + } +} + +void func_843049FC(unk_D_84390010* arg0) { + UNUSED s32 pad[3]; + unk_func_80026268_arg0* ptr = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08]; + s32 sp1C; + + arg0->unk_4C4 = 0; + if (!(arg0->unk_654.unk_34 & 2)) { + if (ptr->unk_05 & 7) { + if (func_84307AE0(arg0->unk_000.unk_01A, D_84384590, 8) != 0) { + sp1C = 0xAF; + } else { + sp1C = 0xA5; + } + } else { + sp1C = 0xA5; + } + D_84390020 = &D_84384570[func_84307F00(arg0)]->unk_000[sp1C]; + func_843058C4(arg0, sp1C); + } +} + +void func_84304ACC(unk_D_84390010* arg0) { + unk_D_800FCB18* ptr = &D_84390010[func_84307F00(arg0) == 0]->unk_654.unk_38; + + if (ptr->unk_4C & 0x20) { + if ((ptr->unk_5A == 0x14) || (ptr->unk_5A == 0x23) || (ptr->unk_5A == 0x51)) { + func_8432C6C4(2, arg0); + func_84308654(arg0, 0x10, 0); + } + } +} + +void func_84304B50(unk_D_84390010* arg0) { + unk_D_800FCB18* sp20; + s32 sp28; + + sp28 = func_84307F00(arg0) == 0; + sp20 = &arg0->unk_654.unk_38; + D_84390020 = &D_84384570[func_84307F00(arg0) == 0]->unk_000[sp20->unk_5A - 1]; + + if ((D_84390020->unk_07 + 1) == D_84390010[sp28]->unk_4C4) { + if (func_84301FB0(arg0) == 0) { + func_8432B5B8(arg0, sp20, 5); + D_84390068[D_843900A0].unk_04 = D_84385380; + } + } +} + +void func_84304C20(unk_D_84390010* arg0) { + unk_D_800FCB18* sp20 = &arg0->unk_654.unk_38; + + if (sp20->unk_15 & 8) { + func_8432BF88(arg0, 0x14); + } + + if (sp20->unk_15 & 0x10) { + func_8432BF88(arg0, 0x21); + } + + D_84390068[D_843900A0].unk_04 = D_84385380; +} + +void func_84304C8C(unk_D_84390010* arg0) { + UNUSED s32 pad; + u16 sp22 = arg0->unk_000.unk_01A; + + D_84390020 = &D_84384570[func_84307F00(arg0)]->unk_A70; + if ((func_84307BAC(arg0) != 0.0f) && (sp22 != 0x16) && (sp22 != 0x52) && (sp22 != 0x8E)) { + D_84390068[D_843900A0].unk_04 = D_84385380; + } else if ((arg0->unk_4C4 == (D_84390020->unk_04 + 1)) && (func_84301FB0(arg0) == 0)) { + func_8432B554(arg0); + D_84390068[D_843900A0].unk_04 = D_84385380; + } +} + +void func_84304D84(unk_D_84390010* arg0) { + s32 sp24; + + D_84390020 = &D_84384570[func_84307F00(arg0)]->unk_A70; + if (D_84390020->unk_09 == 1) { + sp24 = D_84390020->unk_0A - 0x4C; + } else { + sp24 = D_84390020->unk_0A - 0x31; + } + + if (func_84301FB0(arg0) == 0) { + if (func_84307BAC(arg0) != 0.0f) { + if ((sp24 <= 0) || (sp24 == arg0->unk_4C4)) { + if (D_84390020->unk_09 == 1) { + func_8432C68C(2, arg0, arg0, 0xFF, 0xFF); + } else { + func_8432C68C(0xC, arg0, arg0, 0xFF, 0xFF); + } + func_800367A0(3, 0, 0); + D_84390068[D_843900A0].unk_04 = D_84385380; + } + } else if ((sp24 <= 0) || (sp24 == arg0->unk_4C4)) { + if (D_84390020->unk_09 == 1) { + func_8432C68C(2, arg0, arg0, 0xFF, 0xFF); + } else { + func_8432C68C(0xC, arg0, arg0, 0xFF, 0xFF); + } + func_800367A0(3, 0, 0); + D_84390068[D_843900A0].unk_04 = D_84385380; + } + } +} + +void func_84304F54(unk_D_84390010* arg0) { + s32 sp24; + + D_84390020 = &D_84384570[func_84307F00(arg0)]->unk_B10; + if (D_84390020->unk_09 == 1) { + sp24 = D_84390020->unk_0A - 0x4C; + } else { + sp24 = D_84390020->unk_0A - 0x31; + } + + if ((func_84301FB0(arg0) == 0) && ((sp24 <= 0) || (sp24 == arg0->unk_4C4))) { + if (D_84390020->unk_09 == 1) { + func_8432C68C(2, arg0, arg0, 0xFF, 0xFF); + } else { + func_8432C68C(0xC, arg0, arg0, 0xFF, 0xFF); + } + func_800367A0(3, 0, 0); + D_84390068[D_843900A0].unk_04 = D_84385380; + } +} + +#ifdef NON_MATCHING +void func_8430506C(unk_D_84390010* arg0) { + unk_D_8438E7B0* ptr; + s32 sp48; + s32 pad2[1]; + s32 sp40; + unk_D_84390010_654* sp3C; + s32 pad[2]; + unk_D_84390010* sp30; + unk_D_800FCB18* sp28; + unk_D_8438E7B0* ptr2; + + sp48 = 0xA5; + sp40 = func_84307F00(arg0) == 0; + sp3C = &D_84390010[sp40]->unk_654; + sp30 = D_84390010[sp40]; + sp28 = &arg0->unk_654.unk_38; + + D_84390020 = &D_84384570[sp40]->unk_A80; + + if (sp3C->unk_34 & 1) { + if (func_84307AE0(sp30->unk_000.unk_01A, D_84384598, 2) != 0) { + D_84390020 = &D_84384570[sp40]->unk_B20; + } + } + + if ((sp3C->unk_34 & 1) && func_84307AE0(sp30->unk_000.unk_01A, D_84384590, 8)) { + sp48 = 0xAF; + } + + D_84390010[sp40]->unk_4C4 = 0; + + if (!(sp3C->unk_34 & 0x4000) && !(sp3C->unk_34 & 2)) { + if ((sp28->unk_5A == 0x91) && (D_843C4DEC < 0xA)) { + D_84390020 = &D_84384570[sp40]->unk_000[sp48]; + } + + if ((D_843C4E44 == 0) || (D_843C4DA4 != 0)) { + ptr = D_84384570[sp40]; + ptr2 = ptr; + D_84390020 = &ptr2->unk_000[sp48]; + if (sp3C->unk_34 & 0x200) { + D_84390020 = &ptr2->unk_000[0xB0]; + } + } else if (!(sp3C->unk_34 & 1)) { + func_843058C4(D_84390010[sp40], 0xA8); + } + + func_80017464(&D_84390010[sp40]->unk_000, 0); + func_8001BD04(&D_84390010[sp40]->unk_000, D_84390020->unk_00); + + if ((sp28->unk_44.unk_00 == 0x17) || (sp28->unk_44.unk_00 == 0x22) || (sp28->unk_44.unk_00 == 0x45)) { + func_84308654(D_84390010[sp40], 0xF, 0); + } + } +} +#else #pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_8430506C.s") +#endif -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_843052C0.s") +void func_843052C0(unk_D_84390010* arg0) { + s32 sp2C; + UNUSED s32 pad; + unk_D_800FCB18* sp24; + unk_D_800FCB18* sp1C; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84305458.s") + sp2C = func_84307F00(arg0); + sp24 = &D_84390010[sp2C == 0]->unk_654.unk_38; + sp1C = &arg0->unk_654.unk_38; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_843054F0.s") + D_84390020 = &D_84384570[sp2C == 0]->unk_000[sp1C->unk_5A - 1]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_843055E0.s") + if ((D_84390010[sp2C == 0]->unk_4C4 == (D_84390020->unk_07 + 1)) && (func_84301FB0(arg0) == 0)) { + func_8432E9D8(1); + if (((sp1C->unk_5A == 0x30) || (sp1C->unk_5A == 0x6D)) && (sp24->unk_4C & 0x80) && (D_843C4DA4 == 0) && + (D_843C4E44 == 1)) { + func_8432BF88(D_84390010[sp2C == 0], 0x12); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_843056DC.s") + func_84301C54(D_84390010[sp2C == 0], sp1C->unk_5A); + if ((D_843C4DA4 == 0) || (D_843C4E44 == 1)) { + func_8432B5B8(D_84390010[sp2C == 0], &arg0->unk_654.unk_38, 1); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_843056E4.s") + D_84390068[D_843900A0].unk_04 = D_84385380; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84305728.s") +s32 func_84305458(unk_D_84390010* arg0) { + unk_D_800FCB18* ptr = &arg0->unk_654.unk_38; + s32 temp_v1; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84305760.s") + temp_v1 = func_84307F00(arg0) == 0; + D_84390020 = &D_84384570[temp_v1]->unk_000[ptr->unk_5A - 1]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84305808.s") + if (D_843C4E45 != 1) { + return 2; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_843058A8.s") + if ((D_84390020->unk_08 + 0x50) == D_84390010[temp_v1]->unk_4C4) { + return 1; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_843058C4.s") + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_843059C0.s") +void func_843054F0(unk_D_84390010* arg0) { + unk_D_800FCB18* ptr = &arg0->unk_654.unk_38; + s32 sp28; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84305A74.s") + sp28 = func_84307F00(arg0) == 0; + D_84390020 = &D_84384570[func_84307F00(arg0) == 0]->unk_000[ptr->unk_5A - 1]; + if (D_84390010[sp28]->unk_4C4 == (D_84390020->unk_08 + 1)) { + if (func_84301FB0(arg0) == 0) { + if (D_843C4E45 == 1) { + func_8432C6C4(1, D_84390010[sp28]); + func_8432BF88(arg0, 0x20); + } + D_84390068[D_843900A0].unk_04 = D_84385380; + } + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84305AFC.s") +void func_843055E0(unk_D_84390010* arg0) { + unk_D_800FCB18* sp20; + s32 sp28; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84305B6C.s") + sp28 = func_84307F00(arg0) == 0; + sp20 = &arg0->unk_654.unk_38; + D_84390020 = &D_84384570[func_84307F00(arg0) == 0]->unk_000[sp20->unk_5A - 1]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84305BD8.s") + if ((D_84390020->unk_07 + 1) == D_84390010[sp28]->unk_4C4) { + if (func_84301FB0(arg0) == 0) { + if (D_843C4E44 == 1) { + func_8432B5B8(D_84390010[sp28], sp20, 1); + } else { + func_8432B5B8(D_84390010[sp28], sp20, 5); + } + D_84390068[D_843900A0].unk_04 = D_84385380; + } + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84305CAC.s") +void func_843056DC(unk_D_84390010* arg0) { +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84305E54.s") +void func_843056E4(unk_D_84390010* arg0, unk_D_84385384_func arg1) { + unk_D_84390068* var_a2; + s32 i; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_8430602C.s") + for (i = 0; i < 7; i++) { + if (D_84385380 == D_84390068[i].unk_04) { + D_84390068[i].unk_04 = arg1; + D_84390068[i].unk_00 = arg0; + break; + } + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_843060EC.s") +void func_84305728(unk_D_84390010* arg0) { + func_843058C4(D_84390010[func_84307F00(arg0)], 0xA6); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_843061EC.s") +void func_84305760(unk_D_84390010* arg0, s32 arg1) { + arg0->unk_4C0 = arg1; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84306200.s") + D_84385384[arg1].unk_04[0](arg0); + D_84385384[arg1].unk_04[1](arg0); + D_84385384[arg1].unk_04[2](arg0); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84306218.s") + func_843056E4(arg0, D_84385384[arg1].unk_04[3]); + func_843056E4(arg0, D_84385384[arg1].unk_04[4]); + func_843056E4(arg0, D_84385384[arg1].unk_04[5]); + func_843056E4(arg0, D_84385384[arg1].unk_04[6]); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_843062F0.s") +void func_84305808(void) { + D_84390010[0]->unk_4C4++; + D_84390010[1]->unk_4C4++; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84306470.s") + for (D_843900A0 = 0; D_843900A0 < 7; D_843900A0++) { + D_84390068[D_843900A0].unk_04(D_84390068[D_843900A0].unk_00); + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84306584.s") +void func_843058A8(unk_D_84390010* arg0) { + if (arg0->unk_654.unk_38.unk_5A == 0x6A) { + arg0->unk_000.unk_01C = 0; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_843065C4.s") +void func_843058C4(unk_D_84390010* arg0, s32 arg1) { + s32 temp_v0; + s32 sp30; + unk_D_84390010_654* sp24 = &arg0->unk_654; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_8430663C.s") + if (func_84301FF0(arg0) == 0) { + sp30 = D_84384570[func_84307F00(arg0)]->unk_000[arg1].unk_01; + if ((sp30 != 0xFF) && (sp24->unk_36 != 2)) { + if ((arg1 == 165) && (arg0->unk_000.unk_01A == 0x33)) { + func_80017804(&arg0->unk_000, 0); + temp_v0 = func_8430C414(3); + if (temp_v0 >= 3) { + temp_v0 = 2; + } + func_8001BD9C(&arg0->unk_000, sp30 + temp_v0); + } else { + func_80017804(&arg0->unk_000, 0); + func_8001BD9C(&arg0->unk_000, sp30); + sp24->unk_36 = 1; + } + } + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_843066E0.s") +s32 func_843059C0(unk_D_84390010* arg0, s32 arg1, s32 arg2) { + UNUSED s32 pad; + s32 sp20; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84306914.s") + if (func_84301FF0(arg0) != 0) { + return 0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84306A68.s") + sp20 = D_84384570[func_84307F00(arg0)]->unk_000[arg1].unk_01; + if (sp20 == 0xFF) { + return 1; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84306AF0.s") + func_80017804(&arg0->unk_000, 0); + func_8001BD9C(&arg0->unk_000, sp20); + func_80017804(&arg0->unk_000, arg0->unk_000.unk_054.unk_04->unk_0A); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84306BC4.s") + arg0->unk_654.unk_36 = arg2; + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84306C1C.s") +void func_84305A74(unk_D_84390010* arg0, s32 arg1, s32 arg2) { + u8 temp_a1; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84306C8C.s") + if (func_84301FF0(arg0) == 0) { + temp_a1 = D_84384570[func_84307F00(arg0)]->unk_000[arg1].unk_01; + if (temp_a1 != 0xFF) { + func_8001BD9C(&arg0->unk_000, temp_a1); + func_80017804(&arg0->unk_000, 0); + arg0->unk_654.unk_36 = arg2; + } + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84306DA8.s") +s32 func_84305AFC(unk_D_84390010* arg0) { + unk_D_84390010_654* sp20 = &arg0->unk_654; + unk_func_80026268_arg0* ptr = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84306E80.s") + if ((sp20->unk_34 & 2) || (ptr->unk_05 & 7) || ((sp20->unk_34 & 0x200) && !(sp20->unk_34 & 0x400)) || + (sp20->unk_34 & 0x4000)) { + return 1; + } + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84306FB8.s") +s32 func_84305B6C(unk_D_84390010* arg0, s32 arg1) { + if (func_84305AFC(arg0) != 0) { + if (func_8431ADAC(arg1) != 0) { + return 1; + } + return 0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84307078.s") + if (arg0->unk_000.unk_040.unk_00 == -1) { + return 1; + } + return func_800174E4(&arg0->unk_000); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_843071B8.s") +s32 func_84305BD8(unk_D_84390010* arg0, s32 arg1) { + u8 temp_v0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84307220.s") + D_84390020 = D_84384570[func_84307F00(arg0)]->unkA60; + if (func_84305AFC(arg0) != 0) { + if (func_8431ADAC(arg1) != 0) { + return 1; + } + return 0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_8430732C.s") + if ((D_84390020->unk_0A < 0xB) || (D_84390020->unk_0A == 0xFF)) { + if (arg0->unk_000.unk_040.unk_00 == -1) { + return 1; + } + return func_800174E4(&arg0->unk_000); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84307394.s") + if (func_8431ADAC(D_84390020->unk_0A + 1) != 0) { + return 1; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84307414.s") + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_8430741C.s") +s32 func_84305CAC(unk_D_84390010* arg0, s32 arg1) { + unk_D_800FCB18* ptr = &arg0->unk_654.unk_38; + unk_D_8438E7B0_A50* sp20; + unk_D_8438E7B0_A50* sp1C; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84307424.s") + if (arg0) {} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_8430742C.s") + sp20 = &D_84384570[func_84307F00(arg0)]->unk_000[ptr->unk_5A - 1]; + sp1C = &D_84384570[func_84307F00(arg0)]->unk_A50; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84307434.s") + if (func_84305AFC(arg0) != 0) { + if (func_8431ADAC(arg1) != 0) { + return 1; + } + return 0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_8430743C.s") + if (arg0->unk_000.unk_040.unk_00 == -1) { + return 1; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84307444.s") + if (D_84390240.unk_00->unk_48 == 0x14) { + sp20 = &D_84384570[func_84307F00(arg0)]->unk_000[0]; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_8430744C.s") + if (sp20->unk_00 == sp1C->unk_00) { + if (sp20->unk_0A != 0xFF) { + D_84390240.unk_00->unk_14++; + if (sp20->unk_0A == arg0->unk_4C4) { + return 1; + } + return 0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84307454.s") + if (func_8431ADAC(arg1) != 0) { + return 1; + } + return 0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_8430745C.s") + D_84390240.unk_00->unk_14++; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84307464.s") + if (sp20->unk_0A != 0xFF) { + if (sp20->unk_0A == arg0->unk_4C4) { + return 1; + } + return 0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_8430746C.s") + return func_800174E4(&arg0->unk_000); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84307474.s") +s32 func_84305E54(unk_D_84390010* arg0, s32 arg1) { + unk_D_8438E7B0_A50* temp_a2; + unk_func_80026268_arg0* sp28; + UNUSED s32 pad; + s32 sp20; + unk_D_8438E7B0_A50* sp1C; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_84307480.s") + sp28 = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08]; + sp20 = D_84384670[arg0->unk_654.unk_38.unk_5A - 1]; + sp1C = &D_84384570[func_84307F00(arg0)]->unk_000[sp20]; + temp_a2 = &D_84384570[func_84307F00(arg0)]->unk_A50; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2EC3C0/func_8430748C.s") + if ((arg0->unk_654.unk_34 & 2) || (sp28->unk_05 & 7) || + ((arg0->unk_654.unk_34 & 0x200) && !(arg0->unk_654.unk_34 & 0x400)) || (arg0->unk_654.unk_34 & 0x4000)) { + if (func_8431ADAC(arg1) != 0) { + return 1; + } + return 0; + } + + if (arg0->unk_000.unk_040.unk_00 == -1) { + return 1; + } + + if (sp1C->unk_00 == temp_a2->unk_00) { + if (sp1C->unk_0A != 0xFF) { + D_84390240.unk_00->unk_14++; + if (sp1C->unk_0A == arg0->unk_4C4) { + return 1; + } + return 0; + } + if (func_8431ADAC(arg1) != 0) { + return 1; + } + return 0; + } + + D_84390240.unk_00->unk_14++; + + if (sp1C->unk_0A != 0xFF) { + if (sp1C->unk_0A == arg0->unk_4C4) { + return 1; + } + return 0; + } + return func_800174E4(&arg0->unk_000); +} + +s32 func_8430602C(unk_D_84390010* arg0, s32 arg1) { + D_84390020 = &D_84384570[func_84307F00(arg0)]->unk_A80; + + if ((arg0->unk_654.unk_34 & 2) || ((arg0->unk_654.unk_34 & 0x200) && !(arg0->unk_654.unk_34 & 0x400))) { + if (func_8431ADAC(arg1) != 0) { + return 1; + } + return 0; + } + + if (arg0->unk_000.unk_040.unk_00 == -1) { + return 1; + } + + if (arg0->unk_000.unk_040.unk_00 != D_84390020->unk_00) { + return 1; + } + + return func_800174E4(&arg0->unk_000); +} + +void func_843060EC(unk_D_84390010* arg0) { + D_84390020 = &D_84384570[func_84307F00(arg0)]->unk_A50; + if (func_84301FF0(arg0) == 0) { + if ((arg0->unk_000.unk_040.unk_00 != -1) && (arg0->unk_000.unk_000.unk_01 & 1) && + (arg0->unk_000.unk_000.unk_02 & 0x20) && (D_84390240.unk_00->unk_1C == 1) && + (D_84390020->unk_00 == arg0->unk_000.unk_040.unk_00) && + (D_84390020->unk_04 == (arg0->unk_000.unk_040.unk_08 >> 0x10)) && (D_84390020->unk_05 != 0) && + (func_8430C414(2) == 1)) { + func_8432C68C(D_84390020->unk_05, &arg0->unk_000, &arg0->unk_000, D_84390020->unk_02, D_84390020->unk_02); + } + } +} + +void func_843061EC(unk_D_84390010* arg0, u16 arg1) { + arg0->unk_654.unk_34 |= arg1; +} + +s32 func_84306200(unk_D_84390010* arg0, u16 arg1) { + arg0->unk_654.unk_34 &= ~arg1; +} + +void func_84306218(unk_D_84390010* arg0) { + unk_D_84390010_654* sp24 = &arg0->unk_654; + + if (arg0->unk_4C8 != 0) { + if (sp24->unk_34 & 0x200) { + arg0->unk_000.unk_024.y = D_84390028[func_84307F00(arg0)].unk_08; + func_84306200(arg0, 0x608); + } + + if (sp24->unk_34 & 0x4008) { + arg0->unk_000.unk_01D = 0xFF; + func_8432C80C(4, arg0); + arg0->unk_000.unk_024.y = D_84390028[func_84307F00(arg0)].unk_08; + arg0->unk_000.unk_000.unk_02 &= ~2; + arg0->unk_000.unk_000.unk_02 |= 0x20; + arg0->unk_000.unk_000.unk_01 |= 1; + func_84306200(arg0, 0x4608); + } + } +} + +void func_843062F0(void) { + unk_D_84390010_654* sp34; + unk_D_84390010_654* sp30; + UNUSED s32 pad[2]; + unk_D_84390010* sp24; + unk_D_84390010* sp20; + + sp34 = &D_84390010[0]->unk_654; + sp30 = &D_84390010[1]->unk_654; + sp24 = D_84390010[0]; + sp20 = D_84390010[1]; + + if (sp34->unk_34 & 4) { + D_84390010[0]->unk_000.unk_024.y = 200.0f; + func_843061EC(D_84390010[0], 0x200); + func_84306200(D_84390010[0], 4); + } + + if (sp30->unk_34 & 4) { + D_84390010[1]->unk_000.unk_024.y = 200.0f; + func_843061EC(D_84390010[1], 0x200); + func_84306200(D_84390010[1], 4); + } + + if ((sp34->unk_34 & 0x4000) && (sp24->unk_000.unk_01A == 0x33)) { + D_84390020 = &D_84384570[0]->unk_000[0x5A]; + func_80017464(&D_84390010[0]->unk_000, 0); + func_8001BD04(&D_84390010[0]->unk_000, D_84390020->unk_00); + } + + if ((sp30->unk_34 & 0x4000) && (sp20->unk_000.unk_01A == 0x33)) { + D_84390020 = &D_84384570[1]->unk_000[0x5A]; + func_80017464(&D_84390010[1]->unk_000, 0); + func_8001BD04(&D_84390010[1]->unk_000, D_84390020->unk_00); + } + + func_84306218(D_84390010[0]); + func_84306218(D_84390010[1]); +} + +void func_84306470(unk_D_84390010* arg0) { + UNUSED s32 pad; + unk_D_84390010_654* sp20; + + sp20 = &D_84390010[func_84307F00(arg0) == 0]->unk_654; + func_84307F00(arg0); + func_84307F00(arg0); + func_843058A8(D_84390010[func_84307F00(arg0) == 0]); + + if (sp20->unk_34 & 4) { + D_84390010[func_84307F00(arg0) == 0]->unk_000.unk_024.y = 200.0f; + func_843061EC(D_84390010[func_84307F00(arg0) == 0], 0x200); + func_84306200(D_84390010[func_84307F00(arg0) == 0], 4); + } + + if (arg0->unk_654.unk_34 & 0x200) { + func_843061EC(arg0, 0x400); + } +} + +void func_84306584(unk_D_84390010* arg0) { + if (arg0->unk_654.unk_34 & 8) { + arg0->unk_000.unk_024.y = func_84307BAC(arg0); + func_84306200(arg0, 0x608); + } +} + +void func_843065C4(unk_D_84390010* arg0) { + UNUSED s32 pad[2]; + unk_D_84390010* sp1C = D_84390010[func_84307F00(arg0) == 0]; + + if (sp1C->unk_654.unk_34 & 0x4000) { + sp1C->unk_000.unk_000.unk_02 |= 0x20; + sp1C->unk_000.unk_000.unk_01 |= 1; + func_8432C80C(4, sp1C); + func_84306200(sp1C, 0x4000); + } +} + +void func_8430663C(unk_D_84390010* arg0) { + unk_D_84390010* temp_s0 = D_84390010[func_84307F00(arg0) == 0]; + unk_D_84390010_654* ptr = &temp_s0->unk_654; + + if (ptr->unk_34 & 0x4000) { + temp_s0->unk_000.unk_000.unk_02 |= 0x20; + temp_s0->unk_000.unk_000.unk_01 |= 1; + func_8432C80C(4, temp_s0); + func_84306200(temp_s0, 0x4000); + } + + if (ptr->unk_34 & 8) { + temp_s0->unk_000.unk_024.y = func_84307BAC(arg0); + func_84306200(temp_s0, 0x608); + } +} + +void func_843066E0(unk_D_84390010* arg0) { + switch (arg0->unk_4B4) { + case 14: + func_84308654(arg0, 0, 0); + func_84307C5C(arg0); + break; + + case 13: + case 15: + case 16: + func_84308654(arg0, 0, 0); + if (arg0->unk_654.unk_38.unk_56 == 0) { + func_8000E88C(&arg0->unk_000.unk_030, 1.0f, 1.0f, 1.0f); + } else { + func_8000E88C(&arg0->unk_000.unk_030, 0.8f, 0.8f, 0.8f); + } + break; + + case 12: + func_84308654(arg0, 0, 0); + if (arg0->unk_654.unk_38.unk_56 == 0) { + func_8000E88C(&arg0->unk_000.unk_030, 1.0f, 1.0f, 1.0f); + } else { + func_8000E88C(&arg0->unk_000.unk_030, 0.8f, 0.8f, 0.8f); + } + break; + + case 10: + func_84308654(arg0, 0, 0); + arg0->unk_000.unk_024.y = func_84307BAC(arg0); + arg0->unk_000.unk_01E.x = 0; + break; + + case 9: + func_84308654(arg0, 0, 0); + func_8000E88C(&arg0->unk_000.unk_030, 0.8f, 0.8f, 0.8f); + func_843096EC(arg0); + break; + + case 7: + func_84308654(arg0, 0, 0); + func_843096EC(arg0); + break; + + case 6: + func_84308654(arg0, 0, 0); + func_843096EC(arg0); + func_84307C5C(arg0); + func_8000EB70(&arg0->unk_000.unk_01E, 0, arg0->unk_4B0 << 0xE, 0); + break; + + case 4: + func_84308654(arg0, 0, 0); + arg0->unk_000.unk_01E.y = arg0->unk_4B0 << 0xE; + func_843096EC(arg0); + break; + } +} + +void func_84306914(unk_D_84390010* arg0) { + unk_D_84390010_654* temp_s1 = &arg0->unk_654; + + func_8432AF70(arg0); + func_8432B228(arg0); + + if (temp_s1->unk_34 & 0x100) { + arg0->unk_000.unk_000.unk_02 &= 0xFFDF; + } + + if ((temp_s1->unk_2D == 0x10) || (temp_s1->unk_2D == 0x13)) { + func_84306200(arg0, 0x100); + } + + temp_s1->unk_2E = func_8001046C(temp_s1->unk_2E, 0, 0x1E, 0x1E); + if (temp_s1->unk_2E != 0) { + func_8001BE34(&arg0->unk_000, 0xFF, 0xFF, 0xFF, temp_s1->unk_2E); + } + + switch (temp_s1->unk_36) { + case 2: + break; + + case 0: + if (func_8430C414(0x32) == 2) { + func_843058C4(arg0, 0xA5); + } + break; + + case 1: + if (func_8001783C(&arg0->unk_000) == 1) { + func_8001BD9C(&arg0->unk_000, -1); + func_80017804(&arg0->unk_000, 0); + temp_s1->unk_36 = 0; + } + break; + } + + if (temp_s1->unk_34 & 0x4000) { + if ((arg0->unk_000.unk_01A != 0x32) && (arg0->unk_000.unk_01A != 0x33)) { + arg0->unk_000.unk_01D = 0; + } + } +} + +void func_84306A68(unk_D_84390010* arg0) { + unk_func_80026268_arg0* ptr = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08]; + + if ((ptr->unk_05 & 7) && !(arg0->unk_654.unk_34 & 1)) { + func_84305A74(arg0, 0xAF, 2); + func_8432C7A0(3, arg0); + func_8432BF88(arg0, 0x32); + } +} + +void func_84306AF0(unk_D_800AE540_1194* arg0, s32 arg1) { + unk_D_84390010* ptr = main_pool_alloc(sizeof(unk_D_84390010), 0); + + D_84390010[arg1] = ptr; + + bzero(ptr, sizeof(unk_D_84390010)); + bzero(&D_84390010[arg1]->unk_654, sizeof(unk_D_84390010_654)); + bzero(&D_84390010[arg1]->unk_654.unk_38, sizeof(unk_D_800FCB18)); + bzero(&D_84390010[arg1]->unk_728, sizeof(unk_D_84390010_728)); + bzero(&D_84390010[arg1]->unk_654.unk_38.unk_44, sizeof(unk_D_800FCB18_044)); + bzero(&D_84390010[arg1]->unk_654.unk_9C, sizeof(unk_D_84390010_654_09C)); + bzero(&D_84390010[arg1]->unk_654.unk_AC, sizeof(unk_D_84390010_654_0AC)); + bzero(&D_84390010[arg1]->unk_8C4, sizeof(unk_D_84390010_8C4)); + D_84390010[arg1]->unk_720 = arg0; +} + +void func_84306BC4(unk_D_800AE540_1194* arg0) { + func_84306AF0(&arg0[0], 0); + func_84306AF0(&arg0[1], 1); + func_8431962C(); + D_84390018 = D_84390010[0]; + D_8439001C = D_84390010[1]; +} + +void func_84306C1C(unk_D_84390010* arg0) { + Controller* sp24 = &gControllers[arg0->unk_720->unk_08[0]->unk_001]; + + func_843089DC(arg0, 0); + func_843089F4(arg0, 0); + func_843089FC(arg0, sp24); + arg0->unk_728.unk_16C = 0; +} + +void func_84306C8C(unk_D_84390010* arg0) { + UNUSED s32 pad[2]; + unk_D_86002F58_004_000_004* sp24; + s16 sp22; + + func_84307F00(arg0); + sp24 = func_843085C4(arg0, 0); + sp22 = func_843085E0(arg0, 0); + func_8001BB58(&arg0->unk_000); + + if (arg0 == D_84390010[0]) { + arg0->unk_000.unk_0A6 = 0; + } else { + arg0->unk_000.unk_0A6 = 1; + } + + func_8001BC34(&arg0->unk_000, 0, sp22, sp24); + func_84302658(arg0, 1); + func_8001BD04(&arg0->unk_000, 0); + func_80017464(&arg0->unk_000, 0); + + arg0->unk_720->unk_04 = arg0->unk_724->unk_01C; + if ((arg0->unk_000.unk_01A == 0x32) || (arg0->unk_000.unk_01A == 0x33)) { + arg0->unk_000.unk_000.unk_02 &= ~0x40; + } else { + arg0->unk_000.unk_000.unk_02 |= 0x40; + } + + if (arg0 == D_84390010[0]) { + func_84307C5C(arg0); + arg0->unk_000.unk_01E.y = 0x4000; + } else { + func_84307C5C(arg0); + arg0->unk_000.unk_01E.y = -0x4000; + } +} + +void func_84306DA8(unk_D_84390010* arg0) { + unk_D_84390010_728* ptr = &arg0->unk_728; + unk_D_86002F58_004_000_004* sp28; + s16 sp26; + + sp28 = func_843085C4(arg0, 0); + sp26 = func_843085E0(arg0, 0); + func_8001BB58(&ptr->unk_000); + + if (arg0 == D_84390010[0]) { + ptr->unk_000.unk_0A6 = -1; + func_8001BC34(&ptr->unk_000, 1, sp26, sp28); + } else { + ptr->unk_000.unk_0A6 = -1; + func_8001BC34(&ptr->unk_000, 2, sp26, sp28); + } + + func_8001BD04(&ptr->unk_000, 0); + func_80017464(&ptr->unk_000, 0); + ptr->unk_000.unk_000.unk_02 &= ~0x40; + func_8000E88C(&ptr->unk_000.unk_024, 0.0f, 0.0f, 0.0f); +} + +void func_84306E80(unk_D_84390010* arg0, s32* arg1) { + unk_D_86002F58_004_000_004* sp44; + s16 sp42; + s32 i; + unk_D_84390010_168* ptr; + + sp44 = func_843085C4(arg0, 0); + sp42 = func_843085E0(arg0, 0); + + for (i = 0; i < 2; i++) { + ptr = &arg0->unk_168[i]; + + func_8001BB58(ptr); + + if (arg0 == D_84390010[0]) { + ptr->unk_000.unk_0A6 = 0xFF; + } else { + ptr->unk_000.unk_0A6 = 0xFF; + } + + func_8001BC34(ptr, 0, sp42, sp44); + func_80017464(ptr, 0); + func_8001BD04(ptr, 0); + + ptr->unk_000.unk_000.unk_02 &= ~0x40; + + if (arg0 == D_84390010[0]) { + func_84307C5C(arg0); + } else { + func_84307C5C(arg0); + } + ptr->unk_000.unk_000.unk_01 &= ~1; + } +} + +void func_84306FB8(unk_D_84390010* arg0) { + unk_D_86002F58_004_000* ptr = &arg0->unk_4EC; + unk_D_86002F58_004_000_004* sp20 = arg0->unk_720->unk_18; + + func_8001BB58(ptr); + ptr->unk_0A6 = 0xFF; + func_8001BC34(ptr, 0, 0x9A, sp20); + func_8001BD04(ptr, 0); + + ptr->unk_000.unk_02 &= ~0x20; + ptr->unk_000.unk_01 &= ~1; + + if (arg0 == D_84390010[0]) { + func_8000E88C(&ptr->unk_024, -50.0f, 2.0f, 0.0f); + } else { + func_8000E88C(&ptr->unk_024, 50.0f, 2.0f, 0.0f); + } +} + +void func_84307078(unk_D_800AE540_1194* arg0) { + D_84390174 = 0; + D_84390178.unk_00 = 0; + + func_84306C1C(D_84390010[0]); + func_84306C1C(D_84390010[1]); + func_84306C8C(D_84390010[0]); + func_84306C8C(D_84390010[1]); + func_84306DA8(D_84390010[0]); + func_84306DA8(D_84390010[1]); + func_84306E80(D_84390010[0], &D_84390010[0]->unk_168); + func_84306E80(D_84390010[1], &D_84390010[1]->unk_168); + func_84306FB8(D_84390010[0]); + func_84306FB8(D_84390010[1]); + + switch (D_800AE540.unk_0000) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 10: + func_8431AFB4(4, 0); + break; + + case 16: + func_8431AFB4(1, 0x32); + func_8004B1CC(1); + break; + + default: + func_8431AFB4(4, 0); + break; + } + + func_84308654(D_84390010[0], 0, 0); + func_84308654(D_84390010[1], 0, 0); + func_84319668(); + func_843193F4(D_84390010[0]); + func_843193F4(D_84390010[1]); + func_8432B704(); + func_8432B604(); +} + +void func_843071B8(unk_D_84390010* arg0, unk_D_84390010* arg1, s32 arg2) { + func_8000E88C(&arg1->unk_448, 0.0f, 0.0f, 0.0f); + func_8000E88C(&arg1->unk_448.unk_0C, 0.0f, 0.0f, 0.0f); + arg1->unk_4B0 = arg2; +} + +void func_84307220(unk_D_800AE540_1194* arg0) { + s32 i; + + func_8002D510(); + + D_843900B0 = func_8002D5AC(0x1E); + D_843900B4 = func_8002D5AC(0x24); + D_843900B8 = func_8002D5AC(0x25); + D_843900BC = func_8002D5AC(0x29); + D_843900C0 = func_8002D5AC(0x14); + + for (i = 0; i < 7; i++) { + D_84390068[i].unk_04 = D_84385380; + } + + func_843071B8(D_84390010[0], D_84390010[0], 1); + func_843071B8(D_84390010[1], D_84390010[1], -1); + func_84307078(arg0); + func_8430D814(); + func_8430245C(D_84390010[0]); + func_8430245C(D_84390010[1]); + func_843184FC(); +} + +void func_8430732C(unk_D_84390010* arg0, unk_D_84390010* arg1) { + func_84308660(D_84390010[0], D_84390010[0]); + func_84308660(D_84390010[1], D_84390010[1]); + func_8430BC44(0); + func_8430BC44(1); + func_843060EC(D_84390010[0]); + func_843060EC(D_84390010[1]); +} + +s32 func_84307394(s32 arg0, unk_D_800AE540_1194* arg1) { + switch (arg0) { + case 0: + func_84306BC4(arg1); + break; + + case 1: + case 2: + func_8430732C(D_84390010[0], D_84390010[1]); + break; + + case 3: + func_84307220(arg1); + break; + + case 5: + func_843196A4(); + break; + } + + return 0; +} + +void func_84307414(unk_D_84390010* arg0) { +} + +void func_8430741C(unk_D_84390010* arg0) { +} + +void func_84307424(unk_D_84390010* arg0) { +} + +void func_8430742C(unk_D_84390010* arg0) { +} + +void func_84307434(unk_D_84390010* arg0) { +} + +void func_8430743C(unk_D_84390010* arg0) { +} + +void func_84307444(unk_D_84390010* arg0) { +} + +void func_8430744C(unk_D_84390010* arg0) { +} + +void func_84307454(unk_D_84390010* arg0) { +} + +void func_8430745C(unk_D_84390010* arg0) { +} + +void func_84307464(unk_D_84390010* arg0) { +} + +void func_8430746C(unk_D_84390010* arg0) { +} + +void func_84307474(unk_D_84390010* arg0, s32 arg1) { +} + +void func_84307480(unk_D_84390010* arg0, s32 arg1) { +} + +void func_8430748C(unk_D_84390010* arg0) { +} diff --git a/src/fragments/62/fragment62_2F1D60.c b/src/fragments/62/fragment62_2F1D60.c index f1a3f7f..6fda260 100644 --- a/src/fragments/62/fragment62_2F1D60.c +++ b/src/fragments/62/fragment62_2F1D60.c @@ -1,36 +1,192 @@ -#include "global.h" +#include "fragment62.h" +#include "src/17300.h" +#include "src/1C720.h" +#include "src/334D0.h" +#include "src/F420.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_843074A0.s") +void func_843074A0(unk_D_84390010* arg0) { + func_80017464(&arg0->unk_728.unk_000, arg0->unk_728.unk_180); + func_8001BD04(&arg0->unk_728.unk_000, arg0->unk_728.unk_17C); + func_8430753C(arg0->unk_728.unk_168); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_843074EC.s") +void func_843074EC(unk_D_84390010* arg0) { + arg0->unk_728.unk_170 = 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_843074F4.s") +void func_843074F4(unk_D_84390010* arg0) { + arg0->unk_728.unk_170 = 1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_84307500.s") +void func_84307500(void) { + D_84390010[0]->unk_728.unk_170 = 0; + D_84390010[1]->unk_728.unk_170 = 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_8430751C.s") +void func_8430751C(void) { + D_84390010[0]->unk_728.unk_170 = 1; + D_84390010[1]->unk_728.unk_170 = 1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_8430753C.s") +void func_8430753C(unk_D_84390010_728_0168* arg0) { + arg0->unk_00.unk_01 |= 0x10; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_8430754C.s") +void func_8430754C(unk_D_84390010* arg0) { + s32 var_v0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_843075D0.s") + if (arg0 == D_84390010[0]) { + var_v0 = 0; + } else { + var_v0 = 1; + } + + arg0->unk_728.unk_168->unk_20 = D_843847BC[var_v0].unk_04; + arg0->unk_728.unk_168->unk_1C = D_843847BC[var_v0].unk_00; + arg0->unk_728.unk_168->unk_1E = D_843847BC[var_v0].unk_02; + + arg0->unk_728.unk_178 = D_843847BC[var_v0].unk_14; + + arg0->unk_728.unk_168->unk_34 = D_843847BC[var_v0].unk_0C; + arg0->unk_728.unk_168->unk_38 = D_843847BC[var_v0].unk_10; + arg0->unk_728.unk_168->unk_2C = D_843847BC[var_v0].unk_08; +} + +void func_843075D0(unk_D_84390010* arg0, unk_D_84390010* arg1) { + if (D_84390240.unk_00->unk_1C == 1) { + func_8430751C(); + } else { + func_84307500(); + } + func_8430754C(arg0); + func_8430754C(arg1); +} void func_84307630(void) { } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_84307638.s") +void func_84307638(unk_D_84390010* arg0) { + s32 temp_v0; + unk_D_84390010_728_0168* sp30; + f32 tmp; + f32 tmp2; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_84307748.s") + sp30 = arg0->unk_728.unk_168; + temp_v0 = func_84307F00(arg0); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_84307768.s") + arg0->unk_728.unk_184 = D_84384578[temp_v0]->unk_0C; + if (D_84384578[temp_v0]->unk_10 == 0xFF) { + arg0->unk_728.unk_186 = D_84384578[temp_v0]->unk_0E * arg0->unk_728.unk_178; + tmp = D_84384578[temp_v0]->unk_00.z * arg0->unk_728.unk_178; + } else { + arg0->unk_728.unk_186 = D_84384578[temp_v0]->unk_0E; + tmp = D_84384578[temp_v0]->unk_00.z; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_843077B0.s") + arg0->unk_728.unk_190 = tmp; + arg0->unk_728.unk_188 = D_84384578[temp_v0]->unk_00.x; + arg0->unk_728.unk_180 = D_84384578[temp_v0]->unk_12; + tmp2 = D_84384578[temp_v0]->unk_00.y; + arg0->unk_728.unk_194 = tmp2; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_843078F4.s") + func_8431AE7C(sp30, arg0->unk_728.unk_000.unk_024.x + arg0->unk_728.unk_190, arg0->unk_728.unk_000.unk_024.y + tmp2, + arg0->unk_728.unk_000.unk_024.z, arg0->unk_728.unk_188, arg0->unk_728.unk_184, arg0->unk_728.unk_186); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_843079C4.s") +void func_84307748(unk_D_84390010* arg0) { + func_84307638(arg0); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_84307A14.s") +void func_84307768(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1, unk_D_86002F34_00C* arg2, unk_D_84390010* arg3) { + arg1->unk_728.unk_168 = arg0; + arg3->unk_728.unk_168 = arg2; + func_843075D0(arg1, arg3); + func_84307748(arg1); + func_84307748(arg3); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F1D60/func_84307A50.s") +void func_843077B0(unk_D_84390010* arg0, s32 arg1) { + s16 var_a0; + unk_D_84390010_728_0168* temp_v0; + + arg0->unk_728.unk_168->unk_00.unk_01 |= 1; + arg0->unk_728.unk_000.unk_000.unk_01 |= 1; + + if (arg0->unk_728.unk_178 == 1) { + if ((arg0->unk_728.unk_168->unk_1C == -0x48) && !(arg0->unk_654.unk_34 & 0x800)) { + func_843074A0(arg0); + } + + if ((func_800328D8(0) != 0) && (arg0->unk_728.unk_18C == 0)) { + arg0->unk_728.unk_18C = 2; + func_800328D0(0); + } + arg0->unk_728.unk_168->unk_1C = func_8001046C(arg0->unk_728.unk_168->unk_1C, 0x17, arg1, arg1); + } else { + if ((arg0->unk_728.unk_168->unk_1C == 0x15F) && !(arg0->unk_654.unk_34 & 0x800)) { + func_843074A0(arg0); + } + + arg0->unk_728.unk_168->unk_1C = func_8001046C(arg0->unk_728.unk_168->unk_1C, 0x103, arg1, arg1); + + if ((func_800328D8(1) != 0) && (arg0->unk_728.unk_18C == 0)) { + arg0->unk_728.unk_18C = 2; + func_800328D0(1); + } + } +} + +void func_843078F4(unk_D_84390010* arg0, s32 arg1) { + if (arg0->unk_728.unk_178 == 1) { + arg0->unk_728.unk_18C = 0; + arg0->unk_728.unk_168->unk_1C = func_8001046C(arg0->unk_728.unk_168->unk_1C, -0x48, arg1, arg1); + if (arg0->unk_728.unk_168->unk_1C == -0x48) { + arg0->unk_728.unk_168->unk_00.unk_01 &= ~1; + arg0->unk_728.unk_000.unk_000.unk_01 &= ~1; + } + } else { + arg0->unk_728.unk_18C = 0; + arg0->unk_728.unk_168->unk_1C = func_8001046C(arg0->unk_728.unk_168->unk_1C, 0x15F, arg1, arg1); + if (arg0->unk_728.unk_168->unk_1C == 0x15F) { + arg0->unk_728.unk_168->unk_00.unk_01 &= ~1; + arg0->unk_728.unk_000.unk_000.unk_01 &= ~1; + } + } +} + +void func_843079C4(unk_D_84390010* arg0) { + switch (arg0->unk_728.unk_170) { + case 0: + func_843078F4(arg0, 9); + break; + + case 1: + func_843077B0(arg0, 9); + break; + } +} + +void func_84307A14(unk_D_84390010* arg0, unk_D_84390010* arg1) { + if (D_800AE540.unk_0000 != 0x10) { + func_843079C4(arg0); + func_843079C4(arg1); + } +} + +s32 func_84307A50(s32 arg0, unk_D_86002F34_00C* arg1, unk_D_86002F34_00C* arg2) { + switch (arg0) { + case 0: + func_84307630(); + break; + + case 1: + case 2: + func_84307A14(D_84390010[0], D_84390010[1]); + break; + + case 3: + func_84307768(arg1, D_84390010[0], arg2, D_84390010[1]); + break; + } + return 0; +} diff --git a/src/fragments/62/fragment62_2F23A0.c b/src/fragments/62/fragment62_2F23A0.c index 578eff5..b2a3dc0 100644 --- a/src/fragments/62/fragment62_2F23A0.c +++ b/src/fragments/62/fragment62_2F23A0.c @@ -1,119 +1,614 @@ -#include "global.h" +#include "fragment62.h" +#include "src/17300.h" +#include "src/18140.h" +#include "src/1C720.h" +#include "src/2E110.h" +#include "src/F420.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307AE0.s") +s32 func_84307AE0(u8 arg0, u8* arg1, s32 arg2) { + while (arg2--) { + if (arg0 == *arg1) { + return 1; + } + arg1++; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307B28.s") + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307B60.s") +unk_func_80026268_arg0* func_84307B28(unk_D_84390010* arg0) { + unk_func_80026268_arg0* ptr = &arg0->unk_720->unk_08[arg0->unk_654.unk_2C]->unk_01C[arg0->unk_654.unk_08]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307BAC.s") + return ptr; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307BD8.s") +s32 func_84307B60(unk_D_84390010* arg0) { + unk_func_80026268_arg0* temp_v0 = func_84307B28(arg0); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307C04.s") + if ((arg0->unk_000.unk_01A == 0x19) && (temp_v0->unk_52 & 0x80)) { + return 1; + } + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307C30.s") +f32 func_84307BAC(unk_D_84390010* arg0) { + return D_84390028[func_84307F00(arg0)].unk_08; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307C5C.s") +f32 func_84307BD8(unk_D_84390010* arg0) { + return D_84390028[func_84307F00(arg0)].unk_00; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307DE0.s") +f32 func_84307C04(unk_D_84390010* arg0) { + return D_84390028[func_84307F00(arg0)].unk_04; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307EAC.s") +f32 func_84307C30(unk_D_84390010* arg0) { + return D_84390028[func_84307F00(arg0)].unk_0C; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307EC4.s") +void func_84307C5C(unk_D_84390010* arg0) { + if (func_84307F00(arg0) == 0) { + if (arg0->unk_000.unk_01A == 0x82) { + func_8000E88C(&arg0->unk_000.unk_024, -225.0f, func_84307BAC(arg0), 0.0f); + } else if ((arg0->unk_000.unk_01A == 3) || (arg0->unk_000.unk_01A == 0x83)) { + func_8000E88C(&arg0->unk_000.unk_024, -175.0f, func_84307BAC(arg0), 0.0f); + } else if (arg0->unk_000.unk_01A == 0x5F) { + func_8000E88C(&arg0->unk_000.unk_024, -225.0f, func_84307BAC(arg0), 7.5000005f); + } else { + func_8000E88C(&arg0->unk_000.unk_024, -150.0f, func_84307BAC(arg0), 0.0f); + } + } else if ((arg0->unk_000.unk_01A == 0x82) || (arg0->unk_000.unk_01A == 0x5F)) { + func_8000E88C(&arg0->unk_000.unk_024, 225.0f, func_84307BAC(arg0), 0.0f); + } else if ((arg0->unk_000.unk_01A == 3) || (arg0->unk_000.unk_01A == 0x83)) { + func_8000E88C(&arg0->unk_000.unk_024, 175.0f, func_84307BAC(arg0), 0.0f); + } else { + func_8000E88C(&arg0->unk_000.unk_024, 150.0f, func_84307BAC(arg0), 0.0f); + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307EE0.s") +f32 func_84307DE0(unk_D_84390010* arg0) { + if (func_84307F00(arg0) == 0) { + if ((arg0->unk_000.unk_01A == 0x82) || (arg0->unk_000.unk_01A == 0x5F)) { + return -200.0f; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307F00.s") + if ((arg0->unk_000.unk_01A == 3) || (arg0->unk_000.unk_01A == 0x83)) { + return -175.0f; + } + return -150.0f; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307F24.s") + if ((arg0->unk_000.unk_01A == 0x82) || (arg0->unk_000.unk_01A == 0x5F)) { + return 200.0f; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307F68.s") + if ((arg0->unk_000.unk_01A == 3) || (arg0->unk_000.unk_01A == 0x83)) { + return 175.0f; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307FAC.s") + return 150.0f; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307FE0.s") +void func_84307EAC(unk_D_84390010* arg0, f32 arg1) { + arg0->unk_000.unk_030.x = arg1; + arg0->unk_000.unk_030.y = arg1; + arg0->unk_000.unk_030.z = arg1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308014.s") +s32 func_84307EC4(unk_D_84390010* arg0) { + return arg0->unk_720->unk_08[arg0->unk_654.unk_2B]->unk_002; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308058.s") +s32 func_84307EE0(unk_D_84390010* arg0) { + s32 idx = arg0->unk_654.unk_2B == 0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_8430808C.s") + return arg0->unk_720->unk_08[idx]->unk_002; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308094.s") +s32 func_84307F00(unk_D_84390010* arg0) { + if (arg0 == D_84390018) { + return 0; + } + return 1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308148.s") +u8 func_84307F24(unk_D_84390010* arg0) { + UNUSED s32 pad; + UNUSED s16 pad2; + s16 sp18 = arg0->unk_654.unk_38.unk_5A - 1; + unk_D_8438E7B0_A50* ptr = &D_84384570[func_84307F00(arg0)]->unk_000[sp18]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308164.s") + return ptr->unk_02; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308190.s") +u8 func_84307F68(unk_D_84390010* arg0) { + UNUSED s32 pad; + UNUSED s16 pad2; + s16 sp18 = arg0->unk_654.unk_38.unk_5A - 1; + unk_D_8438E7B0_A50* ptr = &D_84384570[func_84307F00(arg0)]->unk_000[sp18]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843081A4.s") + return ptr->unk_03; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843081BC.s") +s16 func_84307FAC(unk_D_84390010* arg0) { + unk_D_8438E7B0_A50* ptr = &D_84384570[func_84307F00(arg0)]->unk_A80; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843081C4.s") + return ptr->unk_02; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843081D4.s") +s32 func_84307FE0(unk_D_84390010* arg0) { + unk_D_8438E7B0_A50* ptr = &D_84384570[func_84307F00(arg0)]->unk_A80; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843081F0.s") + return ptr->unk_03; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843083A0.s") +f32 func_84308014(unk_D_84390010* arg0) { + return ((func_84307C04(arg0) * 2) / 50.0f) * arg0->unk_000.unk_030.y; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308520.s") +f32 func_84308058(unk_D_84390010* arg0) { + return (func_84307C04(arg0) * 2) / 50.0f; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308548.s") +s16 func_8430808C(unk_D_84390010* arg0) { + return arg0->unk_654.unk_38.unk_5A; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308598.s") +void func_84308094(unk_D_84390010* arg0, Vec3f* arg1) { + arg1->x = ((func_84307BD8(arg0) * 2) / 50.0f) * arg0->unk_000.unk_030.x; + arg1->y = ((func_84307C04(arg0) * 2) / 50.0f) * arg0->unk_000.unk_030.y; + arg1->z = ((func_84307BD8(arg0) * 2) / 50.0f) * arg0->unk_000.unk_030.x; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843085C4.s") +void func_84308148(unk_D_84390010* arg0, Vec3s* arg1) { + arg1->x = arg0->unk_000.unk_01E.x; + arg1->y = arg0->unk_000.unk_01E.y; + arg1->z = arg0->unk_000.unk_01E.z; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843085E0.s") +u16 func_84308164(unk_D_84390010* arg0) { + unk_func_80026268_arg0* ptr = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843085F0.s") + return ptr->unk_02; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_8430862C.s") +s16 func_84308190(unk_D_84390010* arg0) { + return arg0->unk_4B0 << 0xE; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308654.s") +s32 func_843081A4(s32 arg0) { + return D_84390010[arg0]->unk_000.unk_01A; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308660.s") +s32 func_843081BC(unk_D_84390010* arg0) { + return arg0->unk_000.unk_01A; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843087F8.s") +u8 func_843081C4(unk_D_84390010* arg0) { + s32 ret = arg0->unk_000.unk_000.unk_01 & 1; + return ret; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_8430897C.s") +void func_843081D4(unk_D_84390010* arg0, Vec3f* arg1) { + arg1->x = arg0->unk_000.unk_024.x; + arg1->y = arg0->unk_000.unk_024.y; + arg1->z = arg0->unk_000.unk_024.z; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843089DC.s") +void func_843081F0(unk_D_84390010* arg0, Vec3f* arg1) { + f32 var_fs0 = 0.0f; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843089F4.s") + if (func_84307AE0(arg0->unk_000.unk_01A, &D_843845F0, 1) != 0) { + var_fs0 = func_84308548(arg0) / 1.5f; + } else if (func_84307AE0(arg0->unk_000.unk_01A, &D_843845F4, 1) != 0) { + var_fs0 = func_84308548(arg0) * 0.5f; + } else if ((func_84307AE0(arg0->unk_000.unk_01A, &D_843845F8, 1) != 0) && (arg0->unk_654.unk_34 & 0x200)) { + var_fs0 = 2.0f * func_84308548(arg0); + } else if ((func_84307AE0(arg0->unk_000.unk_01A, D_843845FC, 2) != 0) && (arg0->unk_654.unk_34 & 0x200)) { + var_fs0 = func_84308548(arg0) * 1.5f; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843089FC.s") + if (func_84307BAC(arg0) != 0.0f) { + arg1->x = arg0->unk_000.unk_024.x; + arg1->y = arg0->unk_000.unk_024.y + var_fs0; + arg1->z = arg0->unk_000.unk_024.z; + } else { + arg1->x = arg0->unk_000.unk_024.x; + arg1->y = func_84308548(arg0) + arg0->unk_000.unk_024.y + var_fs0; + arg1->z = arg0->unk_000.unk_024.z; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308A04.s") + if (arg1->y < 0.0f) { + arg1->y = func_84308548(arg0); + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308A4C.s") +void func_843083A0(unk_D_84390010* arg0, Vec3f* arg1) { + if (func_84307F00(arg0) == 0) { + if (arg0->unk_000.unk_01A == 0x82) { + func_8000E88C(arg1, -225.0f, func_84307BAC(arg0), 0.0f); + } else if ((arg0->unk_000.unk_01A == 3) || (arg0->unk_000.unk_01A == 0x83)) { + func_8000E88C(arg1, -175.0f, func_84307BAC(arg0), 0.0f); + } else if (arg0->unk_000.unk_01A == 0x5F) { + func_8000E88C(arg1, -225.0f, func_84307BAC(arg0), 7.5000005f); + } else { + func_8000E88C(arg1, -150.0f, func_84307BAC(arg0), 0.0f); + } + } else if ((arg0->unk_000.unk_01A == 0x82) || (arg0->unk_000.unk_01A == 0x5F)) { + func_8000E88C(arg1, 225.0f, func_84307BAC(arg0), 0.0f); + } else if ((arg0->unk_000.unk_01A == 3) || (arg0->unk_000.unk_01A == 0x83)) { + func_8000E88C(arg1, 175.0f, func_84307BAC(arg0), 0.0f); + } else { + func_8000E88C(arg1, 150.0f, func_84307BAC(arg0), 0.0f); + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308BD0.s") +void func_84308520(unk_D_84390010* arg0, Vec3f* arg1) { + arg1->x = arg0->unk_4EC.unk_024.x; + arg1->y = arg0->unk_4EC.unk_024.y + 2.5f; + arg1->z = arg0->unk_4EC.unk_024.z; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308D54.s") +f32 func_84308548(unk_D_84390010* arg0) { + if (arg0->unk_4B4 == 0x10) { + return func_84307C04(arg0); + } + return func_84307C04(arg0) * arg0->unk_000.unk_030.y; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308D90.s") +f32 func_84308598(unk_D_84390010* arg0) { + return func_84307BD8(arg0) * arg0->unk_000.unk_030.y; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308D98.s") +unk_D_86002F58_004_000_004* func_843085C4(unk_D_84390010* arg0, s32 arg1) { + return arg0->unk_720->unk_14->unk_00[2]->unk_00[arg1]; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308DB8.s") +s32 func_843085E0(unk_D_84390010* arg0, UNUSED s32 arg1) { + return arg0->unk_720->unk_02; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308ED4.s") +char* func_843085F0(unk_D_84390010* arg0) { + return func_8002D7C0(NULL, 0, D_843900B8, arg0->unk_654.unk_38.unk_5A - 1); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308F94.s") +u8* func_8430862C(unk_D_84390010* arg0) { + return arg0->unk_724->unk_01C[arg0->unk_654.unk_08].unk_30; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84309110.s") +void func_84308654(unk_D_84390010* arg0, s32 arg1, s32 arg2) { + arg0->unk_4B4 = arg1; + arg0->unk_4B8 = arg2; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84309168.s") +void func_84308660(unk_D_84390010* arg0, unk_D_84390010* arg1) { + s32 idx; + unk_D_8438E7B0_A50* sp30; + unk_D_8438E7B0_A50* sp2C; + unk_D_8438E7B0_A50* sp28; + unk_D_84390010_654* sp20 = &arg0->unk_654; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_8430920C.s") + idx = func_84307F00(arg0); + sp30 = &D_84384570[idx]->unk_A50; + idx = func_84307F00(arg0); + sp2C = &D_84384570[idx]->unk_B00; + idx = func_84307F00(arg0); + sp28 = &D_84384570[idx]->unk_AF0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843092B4.s") + if (!(sp20->unk_34 & 0x4002)) { + if ((func_84301FF0(arg0) == 0) && (arg1->unk_000.unk_040.unk_00 != -1) && + (func_80017514(&arg1->unk_000) == 1)) { + if (sp20->unk_34 & 0x200) { + func_8001BD04(&arg1->unk_000, sp2C->unk_00); + } else if ((sp20->unk_34 & 1) && (func_84307AE0(arg1->unk_000.unk_01A, D_84384590, 8) != 0)) { + func_8001BD04(&arg1->unk_000, sp28->unk_00); + } else { + if (arg1->unk_000.unk_01A == 0x84) { + idx = func_8430C414(5); + func_8001BD04(&arg1->unk_000, idx + 0xE); + } else { + func_8001BD04(&arg1->unk_000, sp30->unk_00); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84309328.s") + if (!(sp20->unk_34 & 1)) { + func_84305A74(arg0, 0xA5, 1); + } + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84309368.s") + func_80017464(&arg1->unk_000, 0); + } + } +} + +void func_843087F8(unk_D_84390010* arg0) { + s32 idx; + unk_D_84390010_654* sp24; + unk_D_8438E7B0_A50* sp34; + unk_D_8438E7B0_A50* sp30; + unk_D_8438E7B0_A50* sp2C; + + sp24 = &arg0->unk_654; + idx = func_84307F00(arg0); + sp34 = &D_84384570[idx]->unk_A50; + idx = func_84307F00(arg0); + sp30 = &D_84384570[idx]->unk_B00; + idx = func_84307F00(arg0); + sp2C = &D_84384570[idx]->unk_AF0; + + if (!(sp24->unk_34 & 0x4002) && (func_84301FF0(arg0) == 0) && (arg0->unk_000.unk_040.unk_00 != -1)) { + func_80017464(&arg0->unk_000, 0); + if (sp24->unk_34 & 0x200) { + func_8001BD04(&arg0->unk_000, sp30->unk_00); + } else if ((sp24->unk_34 & 1) && (func_84307AE0(arg0->unk_000.unk_01A, D_84384590, 8) != 0)) { + func_8001BD04(&arg0->unk_000, sp2C->unk_00); + } else { + if (arg0->unk_000.unk_01A == 0x84) { + func_8001BD04(&arg0->unk_000, func_8430C414(5) + 0xE); + } else { + func_8001BD04(&arg0->unk_000, sp34->unk_00); + } + + if (!(sp24->unk_34 & 1)) { + func_84305A74(arg0, 0xA5, 1); + } + } + } +} + +void func_8430897C(unk_D_84390010* arg0) { + unk_D_8438E7B0_A50* sp1C = &D_84384570[func_84307F00(arg0)]->unk_A80; + + if (arg0->unk_000.unk_040.unk_00 != -1) { + func_80017464(&arg0->unk_000, 0); + func_8001BD04(&arg0->unk_000, sp1C->unk_00); + } +} + +void func_843089DC(unk_D_84390010* arg0, s32 arg1) { + arg0->unk_724 = arg0->unk_720->unk_08[arg1]; +} + +void func_843089F4(unk_D_84390010* arg0, s32 arg1) { + arg0->unk_654.unk_2B = arg1; +} + +void func_843089FC(unk_D_84390010* arg0, Controller* arg1) { + arg0->unk_654.unk_C8 = arg1; +} + +void func_84308A04(unk_D_84390010* arg0, s32 arg1) { + unk_D_84390010_654* temp_v0 = &arg0->unk_654; + + func_843089DC(arg0, arg1); + func_843089F4(arg0, arg1); + temp_v0->unk_08 = temp_v0->unk_18; + arg0->unk_728.unk_16C = temp_v0->unk_2B; +} + +s32 func_84308A4C(unk_D_84390010* arg0) { + s32 i; + unk_D_84390010_654* temp_s0; + unk_func_80026268_arg0* ptr; + + temp_s0 = &arg0->unk_654; + + for (i = 0; i < func_84307EC4(arg0); i++) { + ptr = &arg0->unk_724->unk_01C[i]; + if ((ptr->unk_05 & 0x20) && (arg0->unk_654.unk_38.unk_16[temp_s0->unk_08 + temp_s0->unk_2B * 3] == 0)) { + return 1; + } + } + + if (arg0->unk_720->unk_01 == 2) { + for (i = 0; i < func_84307EE0(arg0); i++) { + ptr = &arg0->unk_720->unk_08[temp_s0->unk_2B == 0]->unk_01C[i]; + if ((ptr->unk_05 & 0x20) && + (arg0->unk_654.unk_38.unk_16[temp_s0->unk_08 + (temp_s0->unk_2B == 0) * 3] == 0)) { + return 1; + } + } + } + + return 0; +} + +s32 func_84308BD0(unk_D_84390010* arg0) { + s32 i; + unk_D_84390010_654* temp_s0; + unk_func_80026268_arg0* ptr; + + temp_s0 = &arg0->unk_654; + + for (i = 0; i < func_84307EC4(arg0); i++) { + ptr = &arg0->unk_724->unk_01C[i]; + if ((ptr->unk_05 & 7) && (arg0->unk_654.unk_38.unk_16[temp_s0->unk_08 + temp_s0->unk_2B * 3] == 0)) { + return 1; + } + } + + if (arg0->unk_720->unk_01 == 2) { + for (i = 0; i < func_84307EE0(arg0); i++) { + ptr = &arg0->unk_720->unk_08[temp_s0->unk_2B == 0]->unk_01C[i]; + if ((ptr->unk_05 & 7) && (arg0->unk_654.unk_38.unk_16[temp_s0->unk_08 + (temp_s0->unk_2B == 0) * 3] == 0)) { + return 1; + } + } + } + return 0; +} + +s32 func_84308D54(unk_D_84390010* arg0) { + if (arg0->unk_720->unk_01 != 2) { + return arg0->unk_720->unk_08[0]->unk_002; + } + return arg0->unk_720->unk_08[1]->unk_002 + arg0->unk_720->unk_08[0]->unk_002; +} + +u8 func_84308D90(unk_D_800AE540_0004* arg0) { + return arg0->unk_002; +} + +s32 func_84308D98(unk_D_84390010* arg0) { + return arg0->unk_720->unk_08[arg0->unk_728.unk_16C]->unk_001 + 1; +} + +void func_84308DB8(unk_D_84390010* arg0, unk_D_84390010* arg1, s32 arg2, s32 arg3) { + UNUSED s32 pad; + unk_D_86002F58_004_000_004* sp20 = func_843085C4(arg0, 0); + + func_84307F00(arg0); + func_8001BCF0(&arg1->unk_000); + + if (arg0 == D_84390010[0]) { + arg1->unk_000.unk_0A6 = 0; + } else { + arg1->unk_000.unk_0A6 = 1; + } + + func_8001BC34(&arg1->unk_000, 0, arg2, sp20); + func_84302658(arg0, arg3); + func_80017464(&arg1->unk_000, 0); + func_8001BD04(&arg1->unk_000, 0); + + if ((arg1->unk_000.unk_01A == 0x32) || (arg1->unk_000.unk_01A == 0x33)) { + arg1->unk_000.unk_000.unk_02 &= 0xFFBF; + } else { + arg1->unk_000.unk_000.unk_02 |= 0x40; + } + + if (!(arg0->unk_654.unk_34 & 0x200)) { + if (arg0 == D_84390010[0]) { + func_84307C5C(arg0); + arg1->unk_000.unk_01E.y = 0x4000; + } else { + func_84307C5C(arg0); + arg1->unk_000.unk_01E.y = -0x4000; + } + } +} + +void func_84308ED4(unk_D_84390010* arg0, unk_D_84390010_728* arg1, s16 arg2) { + unk_D_86002F58_004_000_004* sp24; + + sp24 = func_843085C4(arg0, 0); + func_8001BCF0(&arg1->unk_000); + + if (arg0 == D_84390010[0]) { + arg1->unk_000.unk_0A6 = 0xFF; + } else { + arg1->unk_000.unk_0A6 = 0xFF; + } + + if (arg0 == D_84390010[0]) { + func_8001BC34(&arg1->unk_000, 1, arg2, sp24); + } else { + func_8001BC34(&arg1->unk_000, 2, arg2, sp24); + } + + func_80017464(&arg1->unk_000, 0); + func_8001BD04(&arg1->unk_000, 0); + arg1->unk_000.unk_000.unk_02 &= ~0x40; +} + +void func_84308F94(unk_D_84390010* arg0, s16 arg1) { + s32 i; + unk_D_86002F58_004_000_004* sp58; + unk_D_84390010_168* var_s0; + + sp58 = func_843085C4(arg0, 0); + + for (i = 0; i < 2; i++) { + var_s0 = &arg0->unk_168[i]; + + func_8001BCF0(&var_s0->unk_000); + if (arg0 == D_84390010[0]) { + var_s0->unk_000.unk_0A6 = 0xFF; + } else { + var_s0->unk_000.unk_0A6 = 0xFF; + } + + func_8001BC34(&var_s0->unk_000, 0, arg1, sp58); + func_80017464(&var_s0->unk_000, 0); + func_8001BD04(&var_s0->unk_000, 0); + + var_s0->unk_000.unk_000.unk_02 &= ~0x40; + + if (arg0 == D_84390010[0]) { + func_8000E88C(&var_s0->unk_000.unk_024, -150.0f, 0.0f, 0.0f); + var_s0->unk_000.unk_01E.y = 0x4000; + } else { + func_8000E88C(&var_s0->unk_000.unk_024, 150.0f, 0.0f, 0.0f); + var_s0->unk_000.unk_01E.y = -0x4000; + } + + var_s0->unk_000.unk_000.unk_01 &= ~1; + } +} + +void func_84309110(unk_D_84390010* arg0) { + if (arg0->unk_654.unk_34 & 1) { + func_843059C0(arg0, 0xAF, 2); + } else { + arg0->unk_654.unk_36 = 0; + func_80017804(&arg0->unk_000, 0); + func_8001BD9C(&arg0->unk_000, -1); + } +} + +void func_84309168(unk_D_84390010* arg0) { + unk_D_84390010_654* ptr = &arg0->unk_654; + UNUSED s32 pad[3]; + s16 sp26; + + func_843085C4(arg0, 0); + sp26 = func_843085E0(arg0, 0); + func_84308DB8(arg0, arg0, sp26, 0); + func_84308ED4(arg0, &arg0->unk_728, sp26); + func_84308F94(arg0, sp26); + func_84309110(arg0); + ptr->unk_34 &= 0x1800; + func_8000E88C(&arg0->unk_000.unk_030, 1.0f, 1.0f, 1.0f); +} + +void func_8430920C(unk_D_84390010* arg0) { + unk_D_84390010_654* ptr = &arg0->unk_654; + UNUSED s32 pad[3]; + s16 sp26; + + func_843085C4(arg0, 0); + sp26 = func_843085E0(arg0, 0); + func_84308DB8(arg0, arg0, sp26, 1); + func_84308ED4(arg0, &arg0->unk_728, sp26); + func_84308F94(arg0, sp26); + func_84309110(arg0); + ptr->unk_2D = 0; + ptr->unk_34 &= 0x1800; + func_8000E88C(&arg0->unk_000.unk_030, 1.0f, 1.0f, 1.0f); +} + +void func_843092B4(unk_D_84390010* arg0) { + func_8001BE34(&arg0->unk_000, 0xFF, 0xFF, 0xFF, arg0->unk_654.unk_2E = 0xFF); + arg0->unk_654.unk_BC = arg0->unk_000.unk_01A; + func_84308DB8(arg0, arg0, 0x98, 0); + func_84308F94(arg0, 0x98); + func_84309110(arg0); +} + +void func_84309328(unk_D_84390010* arg0) { + func_84308DB8(arg0, arg0, 0x98, 0); + func_84308F94(arg0, 0x98); + func_84309110(arg0); +} + +void func_84309368(unk_D_84390010* arg0) { + UNUSED s32 pad[3]; + unk_D_84390010_654* ptr = &arg0->unk_654; + s16 sp2E = func_843085E0(arg0, 0); + + ptr->unk_2E = 0xFF; + func_8001BE34(&arg0->unk_000, 0xFF, 0xFF, 0xFF, ptr->unk_2E); + func_84308DB8(arg0, arg0, sp2E, 0); + func_84308F94(arg0, sp2E); + func_84309110(arg0); +} diff --git a/src/fragments/62/fragment62_2F3CB0.c b/src/fragments/62/fragment62_2F3CB0.c index f60d688..d23ed9d 100644 --- a/src/fragments/62/fragment62_2F3CB0.c +++ b/src/fragments/62/fragment62_2F3CB0.c @@ -1,149 +1,1935 @@ -#include "global.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_843093F0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_84309448.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_843095A4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_843096EC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_84309780.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_84309874.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_84309A24.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_84309B0C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_84309C50.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_84309D78.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_84309F0C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_84309F30.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_84309FD4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430A090.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430A0E4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430A17C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430A22C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430A280.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430A308.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430A390.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430A3E4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430A464.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430A4E0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430A4EC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430A558.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430A5D4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430A618.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430A6AC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430A7BC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430A828.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430A848.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430A8DC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430AA18.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430AA84.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430AB00.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430ABF0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430AD10.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430AD7C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430ADE8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430AE3C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430AE90.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430AF08.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430AF80.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430B104.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430B158.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430B1B8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430B244.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430B298.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430B2AC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430B374.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430B3C8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430B40C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430B550.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430B68C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430B6F8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430B734.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430B8FC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430B950.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430B968.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430BAB8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430BB0C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430BB24.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430BBE4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430BC38.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430BC44.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430BD9C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430BDB0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430BDBC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430BE08.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430BEC0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430BF3C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430BFB0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430C004.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F3CB0/func_8430C010.s") +#include "fragment62.h" +#include "src/17300.h" +#include "src/1C720.h" +#include "src/F420.h" + +static f32 D_84384600[] = { 1.0f, 2.0f }; + +void func_843093F0(unk_D_84390010* arg0, f32 arg1, s16 arg2) { + arg0->unk_498 = arg1; + arg0->unk_448.unk_0C.z = COSS(arg2) * arg1; + arg0->unk_448.unk_0C.y = SINS(arg2) * arg1; + arg0->unk_49C = 0.01f; +} + +void func_84309448(unk_D_84390010* arg0, unk_D_84390010* arg1, f32 arg2, f32 arg3, s32 arg4) { + f32 sp54; + f32 sp50; + f32 sp4C; + UNUSED s32 pad; + Vec3f sp3C; + UNUSED s32 pad2; + f32 temp_fa1; + f32 temp_fa2; + f32 var_fa0; + + sp54 = arg1->unk_49C; + sp50 = arg1->unk_498; + sp4C = 18.0f; + arg1->unk_498 = func_800104AC(sp50, arg2, arg3, arg3); + + var_fa0 = arg1->unk_498; + if (arg2 <= var_fa0) { + if (&arg1->unk_448.unk_0C) {} + var_fa0 = 0.0f; + } + + sp3C.z = COSS(arg4) * var_fa0; + sp3C.y = SINS(arg4) * var_fa0; + + temp_fa1 = -sp54 * ((sp50 * arg1->unk_448.unk_0C.z) + sp3C.z); + temp_fa2 = -sp4C - (sp54 * ((sp50 * arg1->unk_448.unk_0C.y) + sp3C.y)); + + arg1->unk_448.unk_0C.z = (arg1->unk_448.unk_0C.z + sp3C.z + (temp_fa1 * 0.05f)); + arg1->unk_448.unk_0C.y = (arg1->unk_448.unk_0C.y + sp3C.y + (temp_fa2 * 0.05f)); + + sp3C.y = arg1->unk_448.unk_0C.y; + arg1->unk_448.unk_0C.x = 0.0f; + + func_8430C19C(&sp3C, arg1->unk_448.unk_0C.z, arg0->unk_000.unk_01E.y + 0x4000); + func_8000E8B0(&arg0->unk_000.unk_024, &sp3C); +} + +void func_843095A4(UNUSED unk_D_84390010* arg0, unk_D_84390010* arg1, f32 arg2, f32 arg3, s32 arg4, s32 arg5) { + f32 sp54; + f32 sp50; + f32 sp4C; + UNUSED s32 pad; + Vec3f sp3C; + UNUSED s32 pad2; + f32 temp_fa1; + f32 temp_fa2; + f32 var_fa0; + + sp54 = arg1->unk_49C; + sp50 = arg1->unk_498; + sp4C = 20.0f; + arg1->unk_498 = func_800104AC(sp50, arg2, arg3, arg3); + + var_fa0 = arg1->unk_498; + if (arg2 <= var_fa0) { + if (&arg1->unk_448.unk_0C) {} + var_fa0 = 0.0f; + } + + sp3C.z = COSS(arg4) * var_fa0; + sp3C.y = SINS(arg4) * var_fa0; + + temp_fa1 = -sp54 * ((sp50 * arg1->unk_448.unk_0C.z) + sp3C.z); + temp_fa2 = -sp4C - (sp54 * ((sp50 * arg1->unk_448.unk_0C.y) + sp3C.y)); + + arg1->unk_448.unk_0C.z = (arg1->unk_448.unk_0C.z + sp3C.z + (temp_fa1 * 0.05f)); + arg1->unk_448.unk_0C.y = (arg1->unk_448.unk_0C.y + sp3C.y + (temp_fa2 * 0.05f)); + sp3C.y = arg1->unk_448.unk_0C.y; + arg1->unk_448.unk_0C.x = 0.0f; + + func_8430C19C(&sp3C, arg1->unk_448.unk_0C.z, arg5); + func_8000E8B0(&arg1->unk_4EC.unk_024, &sp3C); +} + +void func_843096EC(unk_D_84390010* arg0) { + s32 i; + + for (i = 0; i < 2; i++) { + func_8000E88C(&arg0->unk_168[i].unk_000.unk_030, 1.0f, 1.0f, 1.0f); + arg0->unk_168[i].unk_000.unk_000.unk_01 &= ~1; + arg0->unk_168[i].unk_169 = 0; + } +} + +void func_84309780(unk_D_84390010* arg0) { + s32 i; + s16 sp64[] = { 0x0, 0xE38, 0xF1C8 }; // D_84384608 + + for (i = 0; i < 2; i++) { + arg0->unk_168[i].unk_16C = 0; + arg0->unk_168[i].unk_16A = sp64[i]; + arg0->unk_168[i].unk_000.unk_01D = 0; + arg0->unk_168[i].unk_000.unk_000.unk_01 |= 1; + func_8430C1E4(&arg0->unk_168[i].unk_000.unk_024, &arg0->unk_000.unk_024); + func_8430C204(&arg0->unk_168[i].unk_000.unk_01E, &arg0->unk_000.unk_01E); + func_8430C1E4(&arg0->unk_168[i].unk_000.unk_030, &arg0->unk_000.unk_030); + } +} + +void func_84309874(unk_D_84390010* arg0) { + s32 i; + f32 tmp; + Vec3f sp5C = { 0.0f, 0.0f, 0.0f }; // D_84384610 + f32 sp4C[] = { 0.3f, -0.4f, -0.2f, 0.4f }; // D_8438461C + + for (i = 0; i < 2; i++) { + arg0->unk_168[i].unk_000.unk_01D = func_8001046C(arg0->unk_168[i].unk_000.unk_01D, 0x3C, 5, 5); + arg0->unk_168[i].unk_16C = func_8001046C(arg0->unk_168[i].unk_16C, 0x38E, 0x64, 0x64); + arg0->unk_168[i].unk_16C = func_8001046C(arg0->unk_168[i].unk_16C, 0x38E, 0x64, 0x64); + arg0->unk_168[i].unk_16A += arg0->unk_168[i].unk_16C; + + tmp = SINS(arg0->unk_168[i].unk_16A) * (func_84308598(arg0) * sp4C[i]); + func_8430C19C(&sp5C, tmp, arg0->unk_000.unk_01E.y); + + arg0->unk_168[i].unk_000.unk_024.x = arg0->unk_000.unk_024.x + sp5C.x; + arg0->unk_168[i].unk_000.unk_024.y = arg0->unk_000.unk_024.y + sp5C.y; + arg0->unk_168[i].unk_000.unk_024.z = arg0->unk_000.unk_024.z + sp5C.z; + + func_80017464(&arg0->unk_168[i].unk_000, arg0->unk_000.unk_040.unk_08 >> 0x10); + func_8001BD04(&arg0->unk_168[i].unk_000, arg0->unk_000.unk_040.unk_00); + } +} + +void func_84309A24(unk_D_84390010* arg0) { + s32 i; + + for (i = 0; i < 2; i++) { + arg0->unk_168[i].unk_169 = 0; + arg0->unk_168[i].unk_000.unk_01D = 0x3C; + arg0->unk_168[i].unk_000.unk_000.unk_01 |= 1; + func_8000E88C(&arg0->unk_168[i].unk_000.unk_030, 1.0f, 1.0f, 1.0f); + func_8430C1E4(&arg0->unk_168[i].unk_000.unk_024, &arg0->unk_000.unk_024); + func_8430C204(&arg0->unk_168[i].unk_000.unk_01E, &arg0->unk_000.unk_01E); + } +} + +s32 func_84309B0C(unk_D_84390010* arg0) { + s32 i; + f32 temp_fv0_2; + f32 sp5C[] = { 0.007f, 0.005f, 0.039f }; // D_8438462C + + for (i = 0; i < 2; i++) { + func_8430C1E4(&arg0->unk_168[i].unk_000.unk_024, &arg0->unk_000.unk_024); + + temp_fv0_2 = func_800104AC(arg0->unk_168[i].unk_000.unk_030.x, 0.8f, sp5C[i], sp5C[i]); + arg0->unk_168[i].unk_000.unk_030.x = temp_fv0_2; + arg0->unk_168[i].unk_000.unk_030.y = temp_fv0_2; + arg0->unk_168[i].unk_000.unk_030.z = temp_fv0_2; + + func_80017464(&arg0->unk_168[i].unk_000, arg0->unk_000.unk_040.unk_08 >> 0x10); + func_8001BD04(&arg0->unk_168[i].unk_000, arg0->unk_000.unk_040.unk_00); + + if (arg0->unk_168[i].unk_000.unk_030.y < 0.8) { + arg0->unk_168[i].unk_169 = 1; + } + } + + return 0; +} + +void func_84309C50(unk_D_84390010* arg0) { + s32 i; + + for (i = 0; i < 2; i++) { + arg0->unk_168[i].unk_169 = 0; + arg0->unk_168[i].unk_000.unk_01D = 0x41 - i * 4; + arg0->unk_168[i].unk_000.unk_000.unk_01 |= 1; + + func_80017464(&arg0->unk_168[i].unk_000, arg0->unk_000.unk_040.unk_08 >> 0x10); + func_8001BD04(&arg0->unk_168[i].unk_000, arg0->unk_000.unk_040.unk_00); + func_8000E88C(&arg0->unk_168[i].unk_000.unk_030, 1.0f, 1.0f, 1.0f); + func_8430C1E4(&arg0->unk_168[i].unk_000.unk_024, &arg0->unk_000.unk_024); + func_8430C204(&arg0->unk_168[i].unk_000.unk_01E, &arg0->unk_000.unk_01E); + func_8430C1E4(&arg0->unk_168[i].unk_000.unk_030, &arg0->unk_000.unk_030); + } +} + +void func_84309D78(unk_D_84390010* arg0, s16 arg1) { + s32 i; + f32 sp90; + s16 sp8E; + s16 sp8C; + UNUSED s32 pad; + f32 sp7C[3] = { 0.2f, 0.25f, 0.3f }; // D_84384638 + f32 sp70[3] = { 0.98f, 0.96f, 0.95f }; // D_84384644 + + for (i = 0; i < 2; i++) { + func_80017464(&arg0->unk_168[i].unk_000, arg0->unk_000.unk_040.unk_08 >> 0x10); + func_8001BD04(&arg0->unk_168[i].unk_000, arg0->unk_000.unk_040.unk_00); + func_800102A4(&arg0->unk_000.unk_024, &arg0->unk_168[i].unk_000.unk_024, &sp90, &sp8E, &sp8C); + func_80010354(&arg0->unk_000.unk_024, &arg0->unk_168[i].unk_000.unk_024, sp7C[i] * sp90, sp8E, sp8C); + func_8430C4F8(&arg0->unk_168[i].unk_000.unk_01E.y, arg0->unk_000.unk_01E.y, sp70[i] * arg1); + } +} + +void func_84309F0C(unk_D_84390010* arg0) { + func_84308654(arg0, 0, 0); +} + +void func_84309F30(UNUSED unk_D_84390010* arg0, unk_D_84390010* arg1) { + arg1->unk_4EC.unk_000.unk_01 |= 1; + if (arg1 == D_84390010[0]) { + func_8000E88C(&arg1->unk_4EC.unk_024, 35.0f, 50.0f, -250.0f); + } else { + func_8000E88C(&arg1->unk_4EC.unk_024, -35.0f, 50.0f, -250.0f); + } + func_843093F0(arg1, 20.0f, 0x1FFE); + arg1->unk_4B8++; + arg1->unk_4EC.unk_000.unk_02 &= ~0x20; + func_80017464(&arg1->unk_4EC, 0); +} + +void func_84309FD4(unk_D_84390010* arg0, unk_D_84390010* arg1) { + if (arg1 == D_84390018) { + func_843095A4(arg0, arg1, 0, 0, 0x1FFE, 0x4440); + } else { + func_843095A4(arg0, arg1, 0, 0, 0x1FFE, 0x3BB8); + } + + arg1->unk_4EC.unk_01E.x += 0x1555; + arg1->unk_4EC.unk_01E.z += 0xE38; + + if (arg1->unk_4EC.unk_024.y < 0) { + arg1->unk_4EC.unk_000.unk_01 &= ~1; + arg1->unk_4EC.unk_024.y = 0.0f; + arg1->unk_448.unk_0C.y = 0.0f; + func_84309F0C(arg1); + } +} + +void func_8430A090(unk_D_84390010* arg0, unk_D_84390010* arg1) { + switch (arg1->unk_4B8) { + case 0: + func_84309F30(arg0, arg1); + + case 1: + func_84309FD4(arg0, arg1); + break; + } +} + +void func_8430A0E4(UNUSED unk_D_84390010* arg0, unk_D_84390010* arg1) { + func_8000E88C(&arg1->unk_4EC.unk_024, arg1->unk_4B0 * -150.0f, 100.0f, 0.0f); + arg1->unk_4B8++; + func_843093F0(arg1, 0.0f, 0x3FFC); + arg1->unk_4EC.unk_000.unk_01 |= 1; + arg1->unk_4EC.unk_000.unk_02 &= ~0x20; + func_80017464(&arg1->unk_4EC, 0); +} + +void func_8430A17C(unk_D_84390010* arg0, unk_D_84390010* arg1) { + arg1->unk_4EC.unk_01E.x += 0x1555; + arg1->unk_4EC.unk_01E.z += 0xE38; + + func_843095A4(arg0, arg1, 0.0f, 0.0f, 0x4000, 0); + + if (arg1->unk_4EC.unk_024.y < 0) { + arg1->unk_4EC.unk_01E.x = 0; + arg1->unk_4EC.unk_01E.z = 0; + if (arg1 == D_84390018) { + arg1->unk_4EC.unk_01E.y = 0x4000; + } else { + arg1->unk_4EC.unk_01E.y = -0x4000; + } + arg1->unk_448.unk_0C.y = 0.0f; + arg1->unk_4EC.unk_024.y = 2.5f; + func_84309F0C(arg1); + } +} + +void func_8430A22C(unk_D_84390010* arg0, unk_D_84390010* arg1) { + switch (arg1->unk_4B8) { + case 0: + func_8430A0E4(arg0, arg1); + + case 1: + func_8430A17C(arg0, arg1); + break; + } +} + +void func_8430A280(UNUSED unk_D_84390010* arg0, unk_D_84390010* arg1) { + func_8000E88C(&arg1->unk_448, 0.0f, 0.0f, 0.0f); + func_8000E88C(&arg1->unk_448.unk_0C, 0.0f, 0.0f, 0.0f); + func_843093F0(arg1, D_84384600[0], 0x4000); + func_84309C50(arg1); + arg1->unk_4B8++; +} + +void func_8430A308(unk_D_84390010* arg0, unk_D_84390010* arg1) { + func_84309448(arg0, arg1, 1.45f, 0.015f, 0x4000); + func_84309D78(arg1, 0); + if (arg0->unk_000.unk_024.y >= 200.0f) { + arg1->unk_448.unk_0C.y = 0.0f; + func_84309F0C(arg1); + func_843096EC(arg1); + } +} + +void func_8430A390(unk_D_84390010* arg0, unk_D_84390010* arg1) { + switch (arg1->unk_4B8) { + case 0: + func_8430A280(arg0, arg1); + + case 1: + func_8430A308(arg0, arg1); + break; + } +} + +void func_8430A3E4(UNUSED unk_D_84390010* arg0, unk_D_84390010* arg1) { + func_8000E88C(&arg1->unk_448, 0.0f, 0.0f, 0.0f); + func_8000E88C(&arg1->unk_448.unk_0C, 0.0f, 0.0f, 0.0f); + func_843093F0(arg1, D_84384600[0], 0x4000); + arg1->unk_4B8++; +} + +void func_8430A464(unk_D_84390010* arg0, unk_D_84390010* arg1) { + func_84309448(arg0, arg1, 2.0f, 0.002f, 0x4000); + if ((arg0->unk_000.unk_024.y - func_84307BAC(arg1)) >= 90.0f) { + arg1->unk_4B8++; + arg1->unk_448.unk_0C.y = 0.0f; + } +} + +void func_8430A4E0(UNUSED unk_D_84390010* arg0, UNUSED unk_D_84390010* arg1) { +} + +void func_8430A4EC(unk_D_84390010* arg0, unk_D_84390010* arg1) { + switch (arg1->unk_4B8) { + case 0: + func_8430A3E4(arg0, arg1); + + case 1: + func_8430A464(arg0, arg1); + break; + + case 2: + func_8430A4E0(arg0, arg1); + break; + } +} + +s32 func_8430A558(unk_D_84390010* arg0, s16 arg1, s16 arg2) { + arg0->unk_000.unk_01E.y -= arg1; + + if (arg1 > 0) { + if ((arg2 >= arg0->unk_000.unk_01E.y) && ((arg2 - arg1) < arg0->unk_000.unk_01E.y)) { + return 1; + } + } else if ((arg0->unk_000.unk_01E.y >= arg2) && (arg0->unk_000.unk_01E.y < (arg2 - arg1))) { + return 1; + } + + return 0; +} + +void func_8430A5D4(UNUSED unk_D_84390010* arg0, unk_D_84390010* arg1) { + func_84309C50(arg1); + arg1->unk_4A6 = 0; + arg1->unk_4A4 = 0; + arg1->unk_4C0 = 0; + arg1->unk_4B8++; +} + +void func_8430A618(unk_D_84390010* arg0, unk_D_84390010* arg1) { + arg1->unk_4A6 = func_8001046C(arg1->unk_4A6, 0x3330, 0x16C, 0x16C); + + if (func_8430A558(arg0, arg1->unk_4A6, arg1->unk_4B0 << 0xE) != 0) { + arg1->unk_4C0 += 1; + } + + func_84309D78(arg1, arg1->unk_4A6); + + if (arg1->unk_4C0 == 3) { + arg1->unk_4B8 += 1; + } +} + +void func_8430A6AC(unk_D_84390010* arg0, unk_D_84390010* arg1) { + f32 tmp = 0x4000 - arg0->unk_000.unk_01E.y; + f32 var_fa1; + s16 sp26; + s32 sp20; + + var_fa1 = (131072.0 - tmp) / 131072.0; + if (var_fa1 >= 1.0f) { + var_fa1 -= 1.0f; + } + + sp26 = (arg1->unk_4A6 * var_fa1) * 0.8; + if (sp26 < 0xE38) { + sp26 = 0xE38; + } + sp20 = func_8430A558(arg0, sp26, arg1->unk_4B0 << 0xE); + func_84309D78(arg1, sp26); + + if (sp20 != 0) { + arg0->unk_000.unk_01E.y = arg1->unk_4B0 << 0xE; + func_84309F0C(arg1); + func_843096EC(arg1); + } +} + +void func_8430A7BC(unk_D_84390010* arg0, unk_D_84390010* arg1) { + switch (arg1->unk_4B8) { + case 0: + func_8430A5D4(arg0, arg1); + + case 1: + func_8430A618(arg0, arg1); + break; + + case 2: + func_8430A6AC(arg0, arg1); + break; + } +} + +void func_8430A828(UNUSED unk_D_84390010* arg0, unk_D_84390010* arg1) { + arg1->unk_4A6 = 0; + arg1->unk_4A4 = 0; + arg1->unk_4C0 = 0; + arg1->unk_4B8++; +} + +void func_8430A848(unk_D_84390010* arg0, unk_D_84390010* arg1) { + arg1->unk_4A6 = func_8001046C(arg1->unk_4A6, 0x3FFC, 0x16C, 0x16C); + + if (func_8430A558(arg0, arg1->unk_4A6, arg1->unk_4B0 << 0xE) != 0) { + arg1->unk_4C0 += 1; + } + + if (arg1->unk_4C0 >= 3) { + func_84309C50(arg1); + arg1->unk_4B8 += 1; + } +} + +void func_8430A8DC(unk_D_84390010* arg0, unk_D_84390010* arg1) { + f32 sp34; + f32 sp30; + f32 sp2C; + UNUSED s16 pad; + u8 sp28[] = { 0x5F, 0x92 }; // D_84384650 + + func_8430A558(arg0, arg1->unk_4A6, arg1->unk_4B0 << 0xE); + + if (func_84307AE0(arg1->unk_000.unk_01A, sp28, sizeof(sp28)) != 0) { + sp30 = 10.3f; + sp34 = 10.0f; + sp2C = 0.035f; + } else { + sp30 = 3.8f; + sp34 = 3.5f; + sp2C = 0.045f; + } + + func_84309D78(arg1, arg1->unk_4A6); + func_8430C718(&arg0->unk_000.unk_024.y, -(func_84308548(arg1) * sp30), sp2C); + + if (arg0->unk_000.unk_024.y <= -(func_84308548(arg1) * sp34)) { + func_8000EB70(&arg0->unk_000.unk_01E, 0, arg1->unk_4B0 << 0xE, 0); + func_84309F0C(arg1); + func_843096EC(arg1); + } +} + +void func_8430AA18(unk_D_84390010* arg0, unk_D_84390010* arg1) { + switch (arg1->unk_4B8) { + case 0: + func_8430A828(arg0, arg1); + + case 1: + func_8430A848(arg0, arg1); + break; + + case 2: + func_8430A8DC(arg0, arg1); + break; + } +} + +void func_8430AA84(unk_D_84390010* arg0, unk_D_84390010* arg1) { + arg1->unk_4A6 = 0; + arg1->unk_4A4 = 0; + arg1->unk_4C0 = 0; + arg1->unk_4A0 = 0.0f; + func_84307C5C(arg1); + func_8000EB70(&arg0->unk_000.unk_01E, 0, arg1->unk_4B0 << 0xE, 0); + func_84309C50(arg1); + arg1->unk_4B8++; +} + +void func_8430AB00(unk_D_84390010* arg0, unk_D_84390010* arg1) { + f32 tmp; + Vec3f sp20 = { 0.0f, 0.0f, 0.0f }; // D_84384654 + + func_8430C718(&arg1->unk_4A0, 50.0f, 0.1f); + arg1->unk_4A6 += 0xE38; + tmp = SINS(arg1->unk_4A6) * arg1->unk_4A0; + func_8430C19C(&sp20, tmp, arg0->unk_000.unk_01E.y); + func_84307C5C(arg1); + func_8000E8B0(&arg0->unk_000.unk_024, &sp20); + func_84309D78(arg1, 0); + + if (arg1->unk_4A0 > 49.0f) { + arg1->unk_4B8++; + } +} + +void func_8430ABF0(unk_D_84390010* arg0, unk_D_84390010* arg1) { + f32 tmp; + Vec3f sp20 = { 0.0f, 0.0f, 0.0f }; + + func_8430C718(&arg1->unk_4A0, 0.0f, 0.1f); + arg1->unk_4A6 += 0xE38; + + tmp = SINS(arg1->unk_4A6) * arg1->unk_4A0; + func_8430C19C(&sp20, tmp, arg0->unk_000.unk_01E.y); + + func_84307C5C(arg1); + func_8000E8B0(&arg0->unk_000.unk_024, &sp20); + func_84309D78(arg1, 0); + + if (arg1->unk_4A0 <= 0.5f) { + func_84307C5C(arg1); + func_8000EB70(&arg0->unk_000.unk_01E, 0, arg1->unk_4B0 << 0xE, 0); + func_84309F0C(arg1); + func_843096EC(arg1); + } +} + +void func_8430AD10(unk_D_84390010* arg0, unk_D_84390010* arg1) { + switch (arg1->unk_4B8) { + case 0: + func_8430AA84(arg0, arg1); + + case 1: + func_8430AB00(arg0, arg1); + break; + + case 2: + func_8430ABF0(arg0, arg1); + break; + } +} + +void func_8430AD7C(unk_D_84390010* arg0, unk_D_84390010* arg1) { + func_84309780(arg1); + arg1->unk_4AC = 0; + func_84307C5C(arg1); + func_8000EB70(&arg0->unk_000.unk_01E, 0, arg1->unk_4B0 << 0xE, 0); + arg1->unk_4B8++; +} + +void func_8430ADE8(UNUSED unk_D_84390010* arg0, unk_D_84390010* arg1) { + func_84309874(arg1); + arg1->unk_4AC++; + if (arg1->unk_4AC == 0x3C) { + func_84309F0C(arg1); + func_843096EC(arg1); + } +} + +void func_8430AE3C(unk_D_84390010* arg0, unk_D_84390010* arg1) { + switch (arg1->unk_4B8) { + case 0: + func_8430AD7C(arg0, arg1); + + case 1: + func_8430ADE8(arg0, arg1); + break; + } +} + +void func_8430AE90(unk_D_84390010* arg0) { + UNUSED s32 pad; + unk_D_86002F34_00C* sp18 = D_84390240.unk_00->unk_DC; + + func_84307C5C(arg0); + func_8000EB70(&arg0->unk_000.unk_01E, 0, arg0->unk_4B0 << 0xE, 0); + func_8000E88C(&sp18->unk_60.up, 0.0f, 1.0f, 0.0f); + func_84309F0C(arg0); +} + +void func_8430AF08(unk_D_84390010* arg0, unk_D_84390010* arg1) { + arg1->unk_4A6 = 0; + arg1->unk_4A8 = 0; + arg1->unk_4A4 = 0; + arg1->unk_4C0 = 0; + arg1->unk_4A0 = 0.0f; + func_84307C5C(arg1); + func_8000EB70(&arg0->unk_000.unk_01E, 0, arg1->unk_4B0 << 0xE, 0); + arg1->unk_4B8++; +} + +void func_8430AF80(UNUSED unk_D_84390010* arg0, unk_D_84390010* arg1) { + unk_D_86002F34_00C* temp_s0 = D_84390240.unk_00->unk_DC; + f32 temp_fa0; + f32 temp_fa1_2; + f32 temp_ft4; + f32 sp2C; + f32 sp28; + f32 sp24; + f32 temp_fv0_2; + f32 temp_fv1_2; + + func_8430C4F8(&arg1->unk_4A4, 0x5B0, 0x3C); + func_8430C4F8(&arg1->unk_4A8, -0x8000, arg1->unk_4A4); + + sp2C = temp_s0->unk_60.at.x - temp_s0->unk_60.eye.x; + sp28 = temp_s0->unk_60.at.y - temp_s0->unk_60.eye.y; + sp24 = temp_s0->unk_60.at.z - temp_s0->unk_60.eye.z; + + temp_fv0_2 = sqrtf(SQ(sp2C) + SQ(sp28) + SQ(sp24)); + + temp_fa0 = sp2C / temp_fv0_2; + temp_fv1_2 = sp28 / temp_fv0_2; + temp_fa1_2 = sp24 / temp_fv0_2; + + temp_ft4 = 1.0 - COSS(arg1->unk_4A8); + + temp_s0->unk_60.up.x = (temp_ft4 * temp_fa0 * temp_fv1_2) - (SINS(arg1->unk_4A8) * temp_fa1_2); + temp_s0->unk_60.up.y = COSS(arg1->unk_4A8) + ((temp_ft4 * temp_fv1_2) * temp_fv1_2); + temp_s0->unk_60.up.z = (SINS(arg1->unk_4A8) * temp_fa0) + ((temp_ft4 * temp_fv1_2) * temp_fa1_2); + + if (arg1->unk_000.unk_024.y < 0.0f) { + arg1->unk_000.unk_024.y = 0.0f; + } +} + +void func_8430B104(unk_D_84390010* arg0, unk_D_84390010* arg1) { + switch (arg1->unk_4B8) { + case 0: + func_8430AF08(arg0, arg1); + + case 1: + func_8430AF80(arg0, arg1); + break; + } +} + +void func_8430B158(unk_D_84390010* arg0, unk_D_84390010* arg1) { + if (arg0->unk_000.unk_030.y != 1.0f) { + func_84309F0C(arg1); + } else { + func_84309A24(arg1); + arg1->unk_4B8++; + } +} + +void func_8430B1B8(unk_D_84390010* arg0, unk_D_84390010* arg1) { + f32 temp_fv0; + + temp_fv0 = func_800104AC(arg0->unk_000.unk_030.x, 0.8f, 0.01f, 0.01f); + arg0->unk_000.unk_030.x = temp_fv0; + arg0->unk_000.unk_030.y = temp_fv0; + arg0->unk_000.unk_030.z = temp_fv0; + + func_84309B0C(arg1); + + if (arg0->unk_000.unk_030.y <= 0.8) { + func_84309F0C(arg1); + func_843096EC(arg1); + } +} + +void func_8430B244(unk_D_84390010* arg0, unk_D_84390010* arg1) { + switch (arg1->unk_4B8) { + case 0: + func_8430B158(arg0, arg1); + + case 1: + func_8430B1B8(arg0, arg1); + break; + } +} + +void func_8430B298(UNUSED unk_D_84390010* arg0, unk_D_84390010* arg1) { + arg1->unk_4B8++; +} + +void func_8430B2AC(unk_D_84390010* arg0, UNUSED unk_D_84390010* arg1) { + arg0->unk_000.unk_030.x = func_800104AC(arg0->unk_000.unk_030.x, 0.0f, 0.05f, 0.05f); + arg0->unk_000.unk_030.y = func_800104AC(arg0->unk_000.unk_030.y, 0.0f, 0.05f, 0.05f); + arg0->unk_000.unk_030.z = func_800104AC(arg0->unk_000.unk_030.z, 0.0f, 0.05f, 0.05f); + + if (arg0->unk_000.unk_030.y <= 0.1) { + func_8000E88C(&arg0->unk_000.unk_030, 0.001f, 0.001f, 0.001f); + } +} + +void func_8430B374(unk_D_84390010* arg0, unk_D_84390010* arg1) { + switch (arg1->unk_4B8) { + case 0: + func_8430B298(arg0, arg1); + + case 1: + func_8430B2AC(arg0, arg1); + break; + } +} + +void func_8430B3C8(unk_D_84390010* arg0, unk_D_84390010* arg1) { + arg1->unk_4A4 = 0x16C; + arg1->unk_4A6 = 0; + arg1->unk_4A8 = 0; + arg1->unk_4A0 = 0.4f; + arg1->unk_448.unk_0C.x = arg0->unk_000.unk_030.x; + arg1->unk_448.unk_0C.y = arg0->unk_000.unk_030.y; + arg1->unk_448.unk_0C.z = arg0->unk_000.unk_030.z; + arg1->unk_4B8++; +} + +void func_8430B40C(unk_D_84390010* arg0, unk_D_84390010* arg1) { + f32 var_fv0; + + // clang-format off + if ((arg1->unk_4A4 >= 0) && (arg1->unk_4A4 <= 0x8000)) { arg1->unk_4A4 += 0x2D; } + // clang-format on + + arg1->unk_4A8 = SINS(arg1->unk_4A4) * 182.0f * 15.0f; + + if ((arg1->unk_4A6 >= 0) && (arg1->unk_4A6 <= 0x4000)) { + arg1->unk_4A6 += arg1->unk_4A8; + } + + if (arg1->unk_654.unk_38.unk_56 == 0) { + var_fv0 = 1.0f; + } else { + var_fv0 = 0.8f; + } + + arg0->unk_000.unk_030.x = var_fv0 - (SINS(arg1->unk_4A6) * arg1->unk_4A0); + arg0->unk_000.unk_030.y = (SINS(arg1->unk_4A6) * arg1->unk_4A0) + var_fv0; + arg0->unk_000.unk_030.z = var_fv0 - (SINS(arg1->unk_4A6) * arg1->unk_4A0); + + if ((arg1->unk_4A6 >= 0x4000) && (arg1->unk_4A6 >= 0x4000)) { + arg1->unk_4A8 = 0x1554; + arg1->unk_4B8++; + } +} + +void func_8430B550(unk_D_84390010* arg0, unk_D_84390010* arg1) { + f32 var_fv0; + f32 var_fv1; + + arg1->unk_4A6 += arg1->unk_4A8; + var_fv1 = SINS(arg1->unk_4A6) * arg1->unk_4A0; + if (var_fv1 <= 0.01f) { + arg1->unk_4A8 += 0x444; + arg1->unk_4A0 *= 0.8f; + if (1) {} + var_fv1 = SINS(arg1->unk_4A6) * arg1->unk_4A0; + } + + if (arg1->unk_654.unk_38.unk_56 == 0) { + var_fv0 = 1.0f; + } else { + var_fv0 = 0.8f; + } + + arg0->unk_000.unk_030.x = var_fv0 - var_fv1; + arg0->unk_000.unk_030.y = (SINS(arg1->unk_4A6) * arg1->unk_4A0) + var_fv0; + arg0->unk_000.unk_030.z = var_fv0 - (SINS(arg1->unk_4A6) * arg1->unk_4A0); + + if (arg1->unk_4A0 <= 0.01f) { + arg0->unk_000.unk_030.x = var_fv0; + arg0->unk_000.unk_030.y = var_fv0; + arg0->unk_000.unk_030.z = var_fv0; + func_84309F0C(arg1); + } +} + +void func_8430B68C(unk_D_84390010* arg0, unk_D_84390010* arg1) { + switch (arg1->unk_4B8) { + case 0: + func_8430B3C8(arg0, arg1); + + case 1: + func_8430B40C(arg0, arg1); + break; + + case 2: + func_8430B550(arg0, arg1); + break; + } +} + +void func_8430B6F8(unk_D_84390010* arg0, unk_D_84390010* arg1) { + arg1->unk_4A8 = 0x71C; + arg1->unk_4A0 = 0.4f; + arg1->unk_448.unk_0C.x = arg0->unk_000.unk_030.x; + arg1->unk_448.unk_0C.y = arg0->unk_000.unk_030.y; + arg1->unk_448.unk_0C.z = arg0->unk_000.unk_030.z; + arg1->unk_4B8++; +} + +void func_8430B734(unk_D_84390010* arg0, unk_D_84390010* arg1) { + unk_D_800FCB18* temp_a0 = &arg1->unk_654.unk_38; + s16 sp22; + + arg1->unk_4A8 += 0xCCC; + sp22 = arg1->unk_4A8; + + arg1->unk_4A0 = func_800104AC(arg1->unk_4A0, 0.0f, 0.02f, 0.02f); + + if (sp22 > 0) { + sp22 *= -1; + } + + if (temp_a0->unk_56 == 0) { + arg0->unk_000.unk_030.x = 1.0f - (SINS(sp22) * arg1->unk_4A0); + arg0->unk_000.unk_030.y = (SINS(sp22) * arg1->unk_4A0) + 1.0f; + arg0->unk_000.unk_030.z = 1.0f - (SINS(sp22) * arg1->unk_4A0); + } else { + arg0->unk_000.unk_030.x = 0.8 - (SINS(sp22) * arg1->unk_4A0); + arg0->unk_000.unk_030.y = (SINS(sp22) * arg1->unk_4A0) + 0.8; + arg0->unk_000.unk_030.z = 0.8 - (SINS(sp22) * arg1->unk_4A0); + } + + if (arg1->unk_4A0 <= 0.01f) { + if (temp_a0->unk_56 == 0) { + func_8000E88C(&arg0->unk_000.unk_030, 1.0f, 1.0f, 1.0f); + } else { + func_8000E88C(&arg0->unk_000.unk_030, 0.8f, 0.8f, 0.8f); + } + func_84309F0C(arg1); + } +} + +void func_8430B8FC(unk_D_84390010* arg0, unk_D_84390010* arg1) { + switch (arg1->unk_4B8) { + case 0: + func_8430B6F8(arg0, arg1); + + case 1: + func_8430B734(arg0, arg1); + break; + } +} + +void func_8430B950(UNUSED unk_D_84390010* arg0, unk_D_84390010* arg1) { + arg1->unk_4AC = 0; + arg1->unk_4B8++; +} + +void func_8430B968(unk_D_84390010* arg0, unk_D_84390010* arg1) { + unk_D_800FCB18* ptr = &arg1->unk_654.unk_38; + UNUSED s32 pad; + f32 temp_fs0; + + if (ptr->unk_56 == 0) { + temp_fs0 = (1.0f - func_8435FCD0()) * 0.6f; + func_8430C718(&arg0->unk_000.unk_030.x, 1.0f - temp_fs0, 0.5f); + func_8430C718(&arg0->unk_000.unk_030.y, 1.0f + temp_fs0, 0.5f); + func_8430C718(&arg0->unk_000.unk_030.z, 1.0f - temp_fs0, 0.5f); + } else { + temp_fs0 = (1.0f - func_8435FCD0()) * 0.3f; + func_8430C718(&arg0->unk_000.unk_030.x, 0.8 - temp_fs0, 0.5f); + func_8430C718(&arg0->unk_000.unk_030.y, temp_fs0 + 0.8, 0.5f); + func_8430C718(&arg0->unk_000.unk_030.z, 0.8 - temp_fs0, 0.5f); + } +} + +void func_8430BAB8(unk_D_84390010* arg0, unk_D_84390010* arg1) { + switch (arg1->unk_4B8) { + case 0: + func_8430B950(arg0, arg1); + + case 1: + func_8430B968(arg0, arg1); + break; + } +} + +void func_8430BB0C(UNUSED unk_D_84390010* arg0, unk_D_84390010* arg1) { + arg1->unk_4C0 = 0; + arg1->unk_4B8++; +} + +void func_8430BB24(unk_D_84390010* arg0, unk_D_84390010* arg1) { + f32 sp24; + f32 sp20; + + arg1->unk_4C0++; + sp20 = func_8435E158(arg0->unk_000.unk_024.x, arg0->unk_000.unk_024.z, &sp24); + arg0->unk_000.unk_024.y = func_84307BAC(arg1) + sp20; + arg0->unk_000.unk_01E.x = (s16)sp24 * 0xB6; + + if (arg1->unk_4C0 == 0x12C) { + arg0->unk_000.unk_024.y = func_84307BAC(arg1); + arg0->unk_000.unk_01E.x = 0; + func_84309F0C(arg1); + } +} + +void func_8430BBE4(unk_D_84390010* arg0, unk_D_84390010* arg1) { + switch (arg1->unk_4B8) { + case 0: + func_8430BB0C(arg0, arg1); + + case 1: + func_8430BB24(arg0, arg1); + break; + } +} + +void func_8430BC38(UNUSED unk_D_84390010* arg0, UNUSED unk_D_84390010* arg1) { +} + +void func_8430BC44(s32 arg0) { + unk_D_84390010* temp_a1 = D_84390010[arg0]; + unk_D_84390010* temp_a2 = D_84390010[arg0]; + + switch (D_84390010[arg0]->unk_4B4) { + case 0: + func_8430BC38(temp_a1, temp_a2); + break; + + case 1: + func_8430A090(temp_a1, temp_a2); + break; + + case 2: + func_8430A22C(temp_a1, temp_a2); + break; + + case 3: + func_8430A390(temp_a1, temp_a2); + break; + + case 4: + func_8430A7BC(temp_a1, temp_a2); + break; + + case 5: + func_8430AA18(temp_a1, temp_a2); + break; + + case 6: + func_8430AD10(temp_a1, temp_a2); + break; + + case 7: + func_8430AE3C(temp_a1, temp_a2); + break; + + case 8: + func_8430B104(temp_a1, temp_a2); + break; + + case 9: + func_8430B244(temp_a1, temp_a2); + break; + + case 10: + func_8430BBE4(temp_a1, temp_a2); + break; + + case 12: + func_8430B374(temp_a1, temp_a2); + break; + + case 13: + func_8430B68C(temp_a1, temp_a2); + break; + + case 14: + func_8430A4EC(temp_a1, temp_a2); + break; + + case 15: + func_8430B8FC(temp_a1, temp_a2); + break; + + case 16: + func_8430BAB8(temp_a1, temp_a2); + break; + + default: + func_84309F0C(temp_a2); + break; + } +} + +void func_8430BD9C(unk_D_84390010* arg0, u8 arg1, u8 arg2) { + arg0->unk_4E8 = arg1; + arg0->unk_4E9 = arg2; +} + +void func_8430BDB0(unk_D_84390010* arg0) { + arg0->unk_4E8 = 0; + arg0->unk_4E9 = 0; +} + +void func_8430BDBC(unk_D_84390010* arg0, f32 arg1, s16 arg2) { + arg0->unk_4E4 = arg1; + arg0->unk_4D8.z = COSS(arg2) * arg1; + arg0->unk_4D8.y = SINS(arg2) * arg1; +} + +void func_8430BE08(unk_D_84390010* arg0, unk_D_84390010* arg1, UNUSED f32 arg2, UNUSED f32 arg3, UNUSED s32 arg4) { + f32 tmp1 = 0.01f; + f32 tmp2 = 18.0f; + Vec3f sp2C; + f32 temp_fa1; + f32 temp_fa2; + + temp_fa1 = -tmp1 * arg1->unk_4D8.z; + temp_fa2 = -tmp2 - (tmp1 * arg1->unk_4D8.y); + + arg1->unk_4D8.z = arg1->unk_4D8.z + (temp_fa1 * 0.05f); + arg1->unk_4D8.y = arg1->unk_4D8.y + (temp_fa2 * 0.05f); + sp2C.y = arg1->unk_4D8.y; + arg1->unk_4D8.x = 0.0f; + + func_8430C19C(&sp2C, arg1->unk_4D8.z, arg0->unk_000.unk_01E.y + 0x4000); + func_8000E8B0(&arg0->unk_000.unk_024, &sp2C); +} + +void func_8430BEC0(UNUSED unk_D_84390010* arg0, unk_D_84390010* arg1) { + func_8000E88C(&arg1->unk_4CC, 0.0f, 0.0f, 0.0f); + func_8000E88C(&arg1->unk_4D8, 0.0f, 0.0f, 0.0f); + func_8430BDBC(arg1, 23.0f, 0x2E36); + arg1->unk_4E9++; +} + +void func_8430BF3C(unk_D_84390010* arg0, unk_D_84390010* arg1) { + func_8430BE08(arg0, arg1, 0, 0, 0x2E36); + if (arg1->unk_000.unk_024.y < func_84307BAC(arg1)) { + arg1->unk_4D8.y = 0.0f; + arg1->unk_000.unk_024.y = func_84307BAC(arg1); + func_8430BDB0(arg1); + } +} + +void func_8430BFB0(unk_D_84390010* arg0, unk_D_84390010* arg1) { + switch (arg1->unk_4E9) { + case 0: + func_8430BEC0(arg0, arg1); + + case 1: + func_8430BF3C(arg0, arg1); + break; + } +} + +void func_8430C004(UNUSED unk_D_84390010* arg0, UNUSED unk_D_84390010* arg1) { +} + +void func_8430C010(s32 arg0) { + unk_D_84390010* temp_v0 = D_84390010[arg0]; + unk_D_84390010* temp_v1 = D_84390010[arg0]; + + if (temp_v1->unk_4E8 == 0xB) { + func_8430BFB0(temp_v0, temp_v1); + } else { + func_8430C004(temp_v0, temp_v1); + } +} + +static s32 pad_D_8438466C = 0; + +s16 D_84384670[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xA9, 0, 0, 0, 0, 0, 0xAA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xAB, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xAC, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xAD, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xAE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; + +unk_D_843847BC D_843847BC[2] = { + { + 0xFFB8, + 0x0048, + 0x0020, + 10.0f, + 10.0f, + 1280.0f, + 0x0001, + }, + { + 0x015F, + 0x0080, + 0x0020, + 10.0f, + 10.0f, + 1280.0f, + 0xFFFF, + }, +}; + +unk_D_86B0C160 D_843847EC[] = { + { + 0, + 0, + 0, + 0, + 14563, + 0.0f, + 4.5f, + 0, + 0, + 0, + 9102, + 0, + 0.0f, + 8.5f, + 0.10000000149011612f, + 0.019999999552965164f, + 30.0f, + }, + { + 0, + 0, + 0, + 0, + 12743, + 0.0f, + 8.0f, + 0, + 0, + 0, + 0, + 0, + 0.0f, + 4.0f, + 0.15000000596046448f, + 0.009999999776482582f, + 30.0f, + }, + { + 0, + 16384, + 0, + 0, + 7281, + 3.5f, + 3.0f, + 0, + -16384, + 0, + 0, + 0, + 0.0f, + 3.0f, + 0.15000000596046448f, + 0.019999999552965164f, + 50.0f, + }, +}; +unk_D_86B0C160 D_84384888[] = { + { + 0, + 0, + 0, + 364, + 7281, + 0.0f, + 8.0f, + 0, + 0, + 0, + 364, + 0, + 1.0f, + 2.0f, + 0.30000001192092896f, + 0.009999999776482582f, + 70.0f, + }, + { + 0, + 0, + 0, + 0, + 30030, + 0.0f, + 3.5f, + 0, + 0, + 0, + 1820, + 3640, + 0.0f, + 20.0f, + 0.15000000596046448f, + 0.009999999776482582f, + 50.0f, + }, +}; + +unk_D_86B0C160 D_843848F0 = { + 0, 0, 0, 0, 0, 0.0f, 0.0f, 0, 0, 0, 0, 5461, 0.0f, 3.5f, 0.20000000298023224f, 0.05999999865889549f, 200.0f, +}; + +unk_D_86B0C160 D_84384924 = { + 0, 0, 0, 0, 0, 0.0f, 0.0f, 0, 0, 0, 4550, 31850, 0.0f, 6.0f, 0.20000000298023224f, 0.03999999910593033f, 200.0f, +}; + +unk_D_86B0C160 D_84384958 = { + 0, 0, 0, 0, 0, 0.0f, 0.0f, 0, 0, 0, 3640, -32768, 0.0f, 6.0f, 0.20000000298023224f, 0.07999999821186066f, 200.0f, +}; + +unk_D_86B0C160 D_8438498C = { + 0, 0, 0, 0, 0, 0.0f, 0.0f, 0, 0, 0, 0, 0, 0.0f, 3.5f, 0.20000000298023224f, 0.05999999865889549f, 200.0f, +}; + +unk_D_86B0C160 D_843849C0[] = { + { + 0, + 0, + 0, + 0, + 14563, + 1.0f, + 4.5f, + 0, + 0, + 0, + 9102, + 0, + 0.0f, + 8.5f, + 0.10000000149011612f, + 0.019999999552965164f, + 200.0f, + }, + { + 0, + 0, + 0, + 10922, + 0, + 0.0f, + 8.5f, + 0, + 0, + 0, + 0, + 0, + 0.0f, + 4.0f, + 0.25f, + 0.019999999552965164f, + 200.0f, + }, + { + 0, + 0, + 0, + 0, + 14563, + 0.0f, + 3.5f, + 0, + 0, + 0, + 9102, + 7281, + 0.0f, + 8.5f, + 0.15000000596046448f, + 0.019999999552965164f, + 200.0f, + }, + { + 0, + 0, + 0, + 0, + 14563, + 0.0f, + 6.5f, + 0, + 0, + 0, + 0, + 0, + 0.0f, + 4.0f, + 0.20000000298023224f, + 0.019999999552965164f, + 200.0f, + }, + { + 0, + 0, + 0, + 7281, + 16384, + 0.0f, + 7.5f, + 0, + 0, + 0, + 0, + 0, + 0.0f, + 3.5f, + 0.20000000298023224f, + 0.019999999552965164f, + 200.0f, + }, + { + 0, + 0, + 0, + -1820, + 16384, + 0.0f, + 4.5f, + 0, + 0, + 0, + 1820, + 0, + 0.0f, + 3.5f, + 0.20000000298023224f, + 0.019999999552965164f, + 200.0f, + }, +}; + +unk_D_86B0C160 D_84384AF8 = { + 0, 0, 0, 2184, 0, 0.0f, 10.5f, 0, 0, 0, 182, 0, 0.0f, 2.0f, 0.20000000298023224f, 0.014999999664723873f, 50.0f, +}; + +unk_D_86B0C160 D_84384B2C[] = { + { + 0, + 0, + 0, + 10922, + 0, + 0.0f, + 600.0f, + 0, + 0, + 0, + 0, + 0, + 0.0f, + 550.0f, + 0.20000000298023224f, + 0.03999999910593033f, + 40.0f, + }, + { + 0, + 0, + 0, + 10922, + 12743, + 0.0f, + 625.0f, + 0, + 0, + 0, + 0, + 0, + 0.0f, + 450.0f, + 0.20000000298023224f, + 0.029999999329447746f, + 40.0f, + }, + { + 0, + 0, + 0, + -546, + 0, + 0.0f, + 450.0f, + 0, + 0, + 0, + 10922, + 0, + 0.0f, + 500.0f, + 0.20000000298023224f, + 0.02500000037252903f, + 40.0f, + }, + { + 0, + 0, + 0, + 0, + -12743, + 0.0f, + 750.0f, + 0, + 0, + 0, + 0, + 0, + 0.0f, + 450.0f, + 0.20000000298023224f, + 0.03999999910593033f, + 40.0f, + }, + { + 0, + 0, + 0, + -546, + 0, + 0.0f, + 50.0f, + 0, + 0, + 0, + -546, + 0, + 0.0f, + 400.0f, + 0.20000000298023224f, + 0.029999999329447746f, + 80.0f, + }, +}; + +Vec3f D_84384C30[] = { + { 0.17000000178813934f, 11.5f, -1.5f }, + { 0.10999999940395355f, 27.0f, -2.5f }, + { 0.12999999523162842f, 55.0f, 15.0f }, + { 0.2199999988079071f, 0.0f, -0.5f }, + { 0.1599999964237213f, 14.5f, 2.5f }, + { 0.3199999928474426f, 0.0f, 0.0f }, + { 0.20000000298023224f, 7.0f, 0.5f }, + { 0.20999999344348907f, 12.0f, -3.5f }, + { 0.23000000417232513f, -18.5f, 9.5f }, + { 0.4099999964237213f, -2.5f, -1.5f }, + { 0.1899999976158142f, 7.0f, 1.0f }, + { 0.2800000011920929f, 0.0f, 4.0f }, + { 0.2800000011920929f, 2.5f, 0.5f }, + { 0.23999999463558197f, -1.5f, -3.0f }, + { 0.2199999988079071f, 6.0f, 6.5f }, + { 0.6800000071525574f, -1.5f, -1.5f }, + { 0.800000011920929f, 0.0f, -3.5f }, + { 0.49000000953674316f, -0.5f, -55.0f }, + { 0.27000001072883606f, 2.5f, 2.5f }, + { 0.2800000011920929f, 0.0f, 0.0f }, + { 0.28999999165534973f, 4.0f, -2.5f }, + { 0.23999999463558197f, 0.0f, 2.5f }, + { 0.27000001072883606f, 0.0f, -6.0f }, + { 0.2800000011920929f, 7.5f, 17.5f }, + { 0.33000001311302185f, 0.0f, -3.0f }, + { 0.4000000059604645f, 0.0f, -6.0f }, + { 0.4000000059604645f, 0.0f, -7.0f }, + { 0.28999999165534973f, 0.0f, -5.5f }, + { 0.20999999344348907f, 5.5f, 5.0f }, + { 0.20999999344348907f, 6.5f, 0.0f }, + { 0.2199999988079071f, 11.0f, -7.5f }, + { 0.23999999463558197f, 8.5f, 3.0f }, + { 0.1599999964237213f, 17.5f, 0.0f }, + { 0.20999999344348907f, 14.0f, -6.5f }, + { 0.18000000715255737f, 0.0f, 3.0f }, + { 0.15000000596046448f, 9.0f, 9.0f }, + { 0.3100000023841858f, 0.0f, -2.5f }, + { 0.18000000715255737f, 0.0f, 4.5f }, + { 0.23000000417232513f, 0.0f, 0.0f }, + { 0.1899999976158142f, 0.0f, 15.0f }, + { 0.4099999964237213f, -2.0f, 0.0f }, + { 0.5400000214576721f, -34.5f, -43.5f }, + { 0.20999999344348907f, 0.0f, -2.0f }, + { 0.20999999344348907f, 0.0f, 0.0f }, + { 0.23999999463558197f, 0.0f, 14.0f }, + { 0.27000001072883606f, 0.0f, -2.5f }, + { 0.12999999523162842f, 8.5f, 2.5f }, + { 0.12999999523162842f, 14.0f, 11.5f }, + { 0.4000000059604645f, 0.0f, 0.0f }, + { 0.2199999988079071f, 0.0f, 0.0f }, + { 0.20000000298023224f, 0.0f, 0.0f }, + { 0.4000000059604645f, 0.0f, 0.0f }, + { 0.15000000596046448f, 19.5f, -2.5f }, + { 0.1599999964237213f, 3.5f, 3.5f }, + { 0.1899999976158142f, 10.5f, -8.0f }, + { 0.4000000059604645f, 0.0f, 0.0f }, + { 0.20999999344348907f, 0.0f, -5.5f }, + { 0.23999999463558197f, 3.5f, 1.5f }, + { 0.1899999976158142f, 21.5f, 6.0f }, + { 0.28999999165534973f, 0.0f, 0.0f }, + { 0.23000000417232513f, 0.0f, 0.0f }, + { 0.2199999988079071f, -4.5f, -0.5f }, + { 0.23000000417232513f, 4.0f, 0.0f }, + { 0.1899999976158142f, 16.0f, -2.5f }, + { 0.18000000715255737f, 14.0f, -4.0f }, + { 0.15000000596046448f, 11.0f, 0.0f }, + { 0.25f, 8.5f, -6.0f }, + { 0.25f, 10.0f, -4.0f }, + { 0.3700000047683716f, 0.0f, -5.0f }, + { 0.20000000298023224f, 0.0f, 0.0f }, + { 0.14000000059604645f, 17.5f, 16.5f }, + { 0.23999999463558197f, 0.0f, 0.0f }, + { 0.23999999463558197f, 0.0f, 0.0f }, + { 0.28999999165534973f, 0.0f, 0.0f }, + { 0.1899999976158142f, 0.0f, 0.0f }, + { 0.1899999976158142f, 11.0f, 0.0f }, + { 0.1599999964237213f, 8.0f, 0.0f }, + { 0.17000000178813934f, -7.5f, -7.0f }, + { 0.25999999046325684f, 12.5f, 5.0f }, + { 0.1899999976158142f, 0.0f, 2.5f }, + { 0.2800000011920929f, 0.0f, 0.0f }, + { 0.23000000417232513f, 0.0f, 0.0f }, + { 0.28999999165534973f, 0.0f, -3.0f }, + { 0.25f, 0.0f, 0.0f }, + { 0.23000000417232513f, 0.0f, 0.0f }, + { 0.25999999046325684f, 8.5f, 2.5f }, + { 0.23000000417232513f, 22.5f, 7.5f }, + { 0.25f, 0.0f, -2.5f }, + { 0.18000000715255737f, 0.0f, 5.0f }, + { 0.20000000298023224f, 0.0f, 2.0f }, + { 0.28999999165534973f, 0.0f, 0.0f }, + { 0.1599999964237213f, 0.0f, 0.0f }, + { 0.17000000178813934f, 5.0f, 0.0f }, + { 0.25999999046325684f, 0.0f, -10.5f }, + { 0.03999999910593033f, 74.0f, -7.5f }, + { 0.20999999344348907f, 7.5f, -1.0f }, + { 0.20000000298023224f, 0.0f, -0.5f }, + { 0.2199999988079071f, 0.0f, 0.0f }, + { 0.20000000298023224f, 0.0f, 9.5f }, + { 0.17000000178813934f, 0.0f, 0.0f }, + { 0.1899999976158142f, 0.0f, 0.0f }, + { 0.1899999976158142f, 0.0f, -3.5f }, + { 0.25f, 0.0f, 9.0f }, + { 0.2199999988079071f, 1.5f, -1.0f }, + { 0.23999999463558197f, -2.5f, -4.5f }, + { 0.23000000417232513f, -4.0f, 0.0f }, + { 0.23000000417232513f, 0.0f, 0.0f }, + { 0.27000001072883606f, 0.0f, 0.0f }, + { 0.17000000178813934f, 0.0f, 4.0f }, + { 0.20999999344348907f, -11.0f, 5.5f }, + { 0.17000000178813934f, 8.0f, 0.0f }, + { 0.2199999988079071f, 0.0f, 4.5f }, + { 0.1599999964237213f, 0.0f, 12.5f }, + { 0.15000000596046448f, 4.5f, 8.0f }, + { 0.28999999165534973f, 0.0f, 0.0f }, + { 0.25f, 0.0f, 5.0f }, + { 0.25f, 6.5f, 3.0f }, + { 0.3100000023841858f, 0.0f, 0.5f }, + { 0.23999999463558197f, 18.0f, 0.0f }, + { 0.1899999976158142f, 0.0f, 0.0f }, + { 0.14000000059604645f, 0.0f, 0.0f }, + { 0.23999999463558197f, 0.0f, 0.0f }, + { 0.23999999463558197f, 12.5f, 0.0f }, + { 0.18000000715255737f, 0.0f, 0.0f }, + { 0.18000000715255737f, 9.0f, 0.0f }, + { 0.20999999344348907f, 10.0f, -2.5f }, + { 0.20999999344348907f, 0.0f, 0.0f }, + { 0.1599999964237213f, 12.0f, 5.0f }, + { 0.4000000059604645f, -1.5f, 23.0f }, + { 0.14000000059604645f, 49.0f, 28.0f }, + { 0.20000000298023224f, 22.5f, 8.5f }, + { 0.25999999046325684f, 0.0f, 0.0f }, + { 0.2800000011920929f, 0.0f, 0.0f }, + { 0.25999999046325684f, 0.0f, 4.0f }, + { 0.25f, 11.0f, 0.0f }, + { 0.23000000417232513f, 8.0f, 0.0f }, + { 0.18000000715255737f, 5.5f, 4.5f }, + { 0.2199999988079071f, -0.5f, 2.5f }, + { 0.25f, 0.0f, 0.0f }, + { 0.25999999046325684f, 0.0f, -1.5f }, + { 0.20999999344348907f, 0.0f, 3.5f }, + { 0.1599999964237213f, 32.5f, 26.5f }, + { 0.05000000074505806f, -15.5f, -133.5f }, + { 0.27000001072883606f, 5.5f, -10.0f }, + { 0.4000000059604645f, 0.0f, 0.0f }, + { 0.2199999988079071f, 7.5f, -2.5f }, + { 0.3499999940395355f, 0.0f, 0.0f }, + { 0.23999999463558197f, -9.5f, 0.0f }, + { 0.1899999976158142f, 0.0f, 2.5f }, + { 0.25999999046325684f, 0.0f, -6.5f }, + { 0.30000001192092896f, 0.0f, 3.0f }, + { 0.3499999940395355f, -45.0f, -5.0f }, + { 0.4000000059604645f, 0.0f, 0.0f }, + { 0.4000000059604645f, 0.0f, 0.0f }, + { 0.4000000059604645f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, +}; +unk_D_84385384_func D_84385380 = func_843056DC; +unk_D_84385384 D_84385384[] = { + { + 0, + { + func_843020B0, + func_843056DC, + func_843056DC, + func_84301D08, + func_84301DDC, + func_84304C8C, + func_84304D84, + }, + 167, + 5, + 255, + }, + { + 1, + { + func_84303ECC, + func_84305728, + func_84301EEC, + func_84304114, + func_843056DC, + func_843056DC, + func_843056DC, + }, + 166, + 255, + 255, + }, + { + 2, + { + func_843056DC, + func_843020B0, + func_843056DC, + func_843045DC, + func_843056DC, + func_843056DC, + func_843056DC, + }, + 255, + 2, + 255, + }, + { + 3, + { + func_84302A78, + func_843056DC, + func_843056DC, + func_84302C34, + func_84302EF0, + func_8430305C, + func_843056DC, + }, + 255, + 255, + 255, + }, + { + 4, + { + func_843037CC, + func_843056DC, + func_843056DC, + func_84303A48, + func_84303BB8, + func_843056DC, + func_843056DC, + }, + 255, + 255, + 255, + }, + { + 5, + { + func_8430741C, + func_8430203C, + func_843056DC, + func_84307424, + func_8430742C, + func_84307434, + func_8430743C, + }, + 255, + 255, + 255, + }, + { + 6, + { + func_8430741C, + func_8430203C, + func_843056DC, + func_84307464, + func_8430745C, + func_84307454, + func_8430744C, + }, + 255, + 255, + 255, + }, + { + 7, + { + func_843020B0, + func_843056DC, + func_843056DC, + func_84301D08, + func_8430748C, + func_84307444, + func_84304D84, + }, + 167, + 5, + 255, + }, + { + 8, + { + func_84304834, + func_843056DC, + func_843056DC, + func_843048C8, + func_843056DC, + func_843056DC, + func_843056DC, + }, + 255, + 255, + 255, + }, + { + 9, + { + func_843049FC, + func_84304ACC, + func_843056DC, + func_843056DC, + func_843056DC, + func_843056DC, + func_843056DC, + }, + 255, + 255, + 255, + }, + { + 10, + { + func_843056DC, + func_843020B0, + func_843056DC, + func_843045DC, + func_843029D0, + func_843056DC, + func_843056DC, + }, + 255, + 3, + 255, + }, + { + 11, + { + func_8430506C, + func_843056DC, + func_843056DC, + func_84303A48, + func_843055E0, + func_843054F0, + func_843056DC, + }, + 255, + 255, + 255, + }, + { + 12, + { + func_84301EEC, + func_84304B50, + func_843056DC, + func_843056DC, + func_843056DC, + func_843056DC, + func_843056DC, + }, + 255, + 255, + 255, + }, + { + 13, + { + func_84304C20, + func_843056DC, + func_843056DC, + func_843056DC, + func_843056DC, + func_843056DC, + func_843056DC, + }, + 255, + 255, + 255, + }, + { + 14, + { + func_8430506C, + func_843056DC, + func_843056DC, + func_843052C0, + func_843056DC, + func_843056DC, + func_843056DC, + }, + 255, + 255, + 255, + }, + { + 15, + { + func_84303CB4, + func_843056DC, + func_843056DC, + func_843056DC, + func_843056DC, + func_843056DC, + func_843056DC, + }, + 255, + 255, + 255, + }, + { + 16, + { + func_84303ECC, + func_84305728, + func_84301EEC, + func_84304210, + func_843056DC, + func_843056DC, + func_843056DC, + }, + 166, + 255, + 255, + }, + { + 17, + { + func_843056DC, + func_843056DC, + func_843056DC, + func_84301D08, + func_84304F54, + func_843056DC, + func_843056DC, + }, + 177, + 255, + 255, + }, + { + 18, + { + func_84303ECC, + func_84305728, + func_84301EEC, + func_843043FC, + func_843056DC, + func_843056DC, + func_843056DC, + }, + 166, + 255, + 255, + }, + { + 19, + { + func_843033E0, + func_843056DC, + func_843056DC, + func_843034D8, + func_84303674, + func_843056DC, + func_843056DC, + }, + 255, + 255, + 255, + }, + { + 20, + { + func_843056DC, + func_843020B0, + func_843056DC, + func_843045DC, + func_84304758, + func_843056DC, + func_843056DC, + }, + 255, + 1, + 255, + }, + { + 21, + { + func_84303208, + func_843056DC, + func_843056DC, + func_8430334C, + func_843056DC, + func_843056DC, + func_843056DC, + }, + 255, + 255, + 255, + }, +}; diff --git a/src/fragments/62/fragment62_2F6930.c b/src/fragments/62/fragment62_2F6930.c index 0d69928..b883d93 100644 --- a/src/fragments/62/fragment62_2F6930.c +++ b/src/fragments/62/fragment62_2F6930.c @@ -1,45 +1,269 @@ -#include "global.h" +#include "fragment62.h" +#include "src/math_util.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C070.s") +void func_8430C070(Vec3f* arg0, Vec3f* arg1, f32* arg2, s16* arg3, s16* arg4) { + f32 sp2C = arg1->x - arg0->x; + f32 sp28 = arg1->y - arg0->y; + f32 sp24 = arg1->z - arg0->z; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C120.s") + *arg2 = sqrtf(SQ(sp2C) + SQ(sp28) + SQ(sp24)); + *arg3 = MathUtil_Atan2s(sqrtf(SQ(sp2C) + SQ(sp24)), sp28); + *arg4 = MathUtil_Atan2s(sp24, sp2C); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C138.s") +Vec3f* func_8430C120(Vec3f* arg0) { + arg0->x = 0.0f; + arg0->y = 0.0f; + arg0->z = 0.0f; + return arg0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C19C.s") +Vec3f* func_8430C138(Vec3f* arg0, Vec3f* arg1, f32 arg2, s16 arg3) { + arg0->x = (SINS(arg3) * arg2) + arg1->x; + arg0->y = arg1->y; + arg0->z = (COSS(arg3) * arg2) + arg1->z; + return arg0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C1E4.s") +void func_8430C19C(Vec3f* arg0, f32 arg1, s16 arg2) { + arg0->x = COSS(arg2) * arg1; + arg0->z = SINS(arg2) * arg1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C204.s") +Vec3f* func_8430C1E4(Vec3f* arg0, Vec3f* arg1) { + arg0->x = arg1->x; + arg0->y = arg1->y; + arg0->z = arg1->z; + return arg0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C224.s") +Vec3s* func_8430C204(Vec3s* arg0, Vec3s* arg1) { + arg0->x = arg1->x; + arg0->y = arg1->y; + arg0->z = arg1->z; + return arg0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C260.s") +Vec3f* func_8430C224(Vec3f* arg0, f32 arg1, f32 arg2, f32 arg3) { + arg0->x = arg0->x * arg1; + arg0->y = arg0->y * arg2; + arg0->z = arg0->z * arg3; + return arg0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C2A4.s") +s16 func_8430C260(f32 arg0, f32 arg1, f32 arg2, f32 arg3) { + return MathUtil_Atan2s(arg2 - arg0, arg3 - arg1); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C308.s") +f32 func_8430C2A4(Vec3f arg0, Vec3f arg1) { + return sqrtf(SQ(arg1.x - arg0.x) + SQ(arg1.y - arg0.y) + SQ(arg1.z - arg0.z)); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C384.s") +f32 func_8430C308(f32 arg0, f32 arg1, f32 arg2, f32 arg3) { + static f32 D_843900D0; + static f32 D_843900D4; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C414.s") + D_843900D0 = SQ(arg0 - arg2); + D_843900D4 = SQ(arg1 - arg3); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C4F8.s") + if (D_843900D0 + D_843900D4 == 0.0f) { + return 0.0f; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C59C.s") + return sqrtf(D_843900D0 + D_843900D4); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C718.s") +s32 func_8430C384(f32 arg0) { + s32 temp_v1; + s32 var_v1; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C780.s") + temp_v1 = osGetCount() & 0xFF; + while (temp_v1-- > 0) { + MathUtil_Random_ZeroOne(); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C7B4.s") + var_v1 = MathUtil_Random_ZeroOne() * arg0; + if (arg0 <= var_v1) { + var_v1 = (s32)arg0 - 1; + } + return var_v1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C7E4.s") +u16 func_8430C414(s32 arg0) { + f32 tmp = (u32)MathUtil_Random16(); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C8A0.s") + return (tmp / 65535.0) * arg0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430C97C.s") +s32 func_8430C4F8(s16* arg0, s16 arg1, s16 arg2) { + s16 temp_v0 = arg1 - *arg0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430CA4C.s") + if (arg2 < 0) { + arg2 *= -1; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F6930/func_8430CB3C.s") + if (temp_v0 > 0) { + temp_v0 -= arg2; + if (temp_v0 >= 0) { + *arg0 = arg1 - temp_v0; + } else { + *arg0 = arg1; + } + } else { + temp_v0 += arg2; + if (temp_v0 <= 0) { + *arg0 = arg1 - temp_v0; + } else { + *arg0 = arg1; + } + } + + if (arg1 == *arg0) { + return 0; + } + + return 1; +} + +s32 func_8430C59C(s16* arg0, s16 arg1, f32 arg2) { + f32 var_fv0; + s16 temp_v0; + + temp_v0 = arg1 - *arg0; + if (arg2 < 0.0f) { + arg2 = -1.0f * arg2; + } + + var_fv0 = temp_v0 * arg2; + + if (temp_v0 > 0) { + if ((s16)var_fv0 >= 0x444) { + var_fv0 = 1092.0f; + } + + if ((s16)var_fv0 < 0x29) { + var_fv0 = 40.0f; + } + + temp_v0 -= (s16)var_fv0; + if (temp_v0 >= 0) { + *arg0 = arg1 - temp_v0; + } else { + *arg0 = arg1; + } + } else { + if ((s16)var_fv0 < -0x443) { + var_fv0 = -1092.0f; + } + + if ((s16)var_fv0 >= -0x28) { + var_fv0 = -40.0f; + } + + temp_v0 -= (s16)var_fv0; + if (temp_v0 <= 0) { + *arg0 = arg1 - temp_v0; + } else { + *arg0 = arg1; + } + } + + if (arg1 == *arg0) { + return 0; + } + return 1; +} + +void func_8430C718(f32* arg0, f32 arg1, f32 arg2) { + *arg0 = *arg0 + ((arg1 - *arg0) * arg2); + if ((*arg0 < 0.001) && (*arg0 > -0.001)) { + *arg0 = 0.0f; + } +} + +void func_8430C780(s16* arg0, s16 arg1, s16 arg2) { + *arg0 = *arg0 + ((arg1 - *arg0) * arg2); +} + +void func_8430C7B4(u16* arg0, u16 arg1, s16 arg2) { + *arg0 = *arg0 + ((arg1 - *arg0) * arg2); +} + +void func_8430C7E4(f32* arg0, f32 arg1) { + static f32 D_843900D8; + static f32 D_843900DC; + static f32 D_843900E0; + + D_843900E0 = 1.0f - arg1; + D_843900DC = SQ(arg1); + D_843900D8 = D_843900DC * arg1; + + arg0[0] = (SQ(D_843900E0) * D_843900E0) / 6.0f; + arg0[1] = ((0.5f * D_843900D8) - D_843900DC) + 0.6666667f; + arg0[2] = (-0.5f * D_843900D8) + (0.5f * D_843900DC) + (0.5f * arg1) + 0.16666667f; + arg0[3] = D_843900D8 / 6.0; +} + +void func_8430C8A0(f32* arg0, f32 arg1) { + static f32 D_843900E4; + static f32 D_843900E8; + static f32 D_843900EC; + + D_843900EC = 1.0 - arg1; + D_843900E8 = SQ(arg1); + D_843900E4 = D_843900E8 * arg1; + + arg0[0] = SQ(D_843900EC) * D_843900EC; + arg0[1] = (((21.0f * D_843900E4) / 12.0f) - (9.0f * D_843900E8 * 0.5f)) + (3.0f * arg1); + arg0[2] = ((-11.0f * D_843900E4) / 12.0f) + (3.0f * D_843900E8 * 0.5f); + arg0[3] = D_843900E4 / 6.0f; +} + +void func_8430C97C(f32* arg0, f32 arg1) { + static f32 D_843900F0; + static f32 D_843900F4; + static f32 D_843900F8; + + D_843900F8 = 1.0f - arg1; + D_843900F4 = SQ(arg1); + D_843900F0 = D_843900F4 * arg1; + + arg0[0] = SQ(D_843900F8) * D_843900F8 * 0.25f; + arg0[1] = ((0.5833333f * D_843900F0) - (1.25f * D_843900F4)) + (arg1 * 0.25f) + 0.5833333f; + arg0[2] = (-0.5f * D_843900F0) + (0.5f * D_843900F4) + (0.5f * arg1) + 0.16666667f; + arg0[3] = D_843900F0 / 6.0f; +} + +void func_8430CA4C(f32* arg0, f32 arg1) { + static f32 D_843900FC; + static f32 D_84390100; + static f32 D_84390104; + static f32 D_84390108; + + D_84390100 = 1.0f - arg1; + D_84390104 = SQ(D_84390100); + D_84390108 = D_84390104 * D_84390100; + D_843900FC = CB(arg1); + + arg0[0] = D_84390108 / 6.0f; + arg0[1] = (-0.5f * D_84390108) + (0.5f * D_84390104) + (0.5f * D_84390100) + 0.16666667f; + arg0[2] = (((7.0f * D_84390108) / 12.0f) - (5.0f * D_84390104 * 0.25f)) + (D_84390100 * 0.25f) + 0.5833333f; + arg0[3] = D_843900FC * 0.25f; +} + +void func_8430CB3C(f32* arg0, f32 arg1) { + static f32 D_8439010C; + static f32 D_84390110; + static f32 D_84390114; + static f32 D_84390118; + + D_84390110 = 1.0f - arg1; + D_84390114 = SQ(D_84390110); + D_84390118 = D_84390114 * D_84390110; + D_8439010C = CB(arg1); + + arg0[0] = D_84390118 / 6.0f; + arg0[1] = ((-11.0f * D_84390118) / 12.0f) + (3.0f * D_84390114 * 0.5f); + arg0[2] = (((21.0f * D_84390118) / 12.0f) - (9.0f * D_84390114 * 0.5f)) + (3.0f * D_84390110); + arg0[3] = D_8439010C; +} diff --git a/src/fragments/62/fragment62_2F74E0.c b/src/fragments/62/fragment62_2F74E0.c index a562948..e914665 100644 --- a/src/fragments/62/fragment62_2F74E0.c +++ b/src/fragments/62/fragment62_2F74E0.c @@ -1,109 +1,1348 @@ -#include "global.h" +#include "fragment62.h" +#include "src/373A0.h" +#include "src/3D140.h" +#include "src/49790.h" +#include "src/4BDC0.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430CC20.s") +static f32 D_84390120; +f32 D_84390124; +f32 D_84390128; +static f32 D_8439012C; +static f32 D_84390130; +u8 D_84390134; +static s32 D_84390138; +static s32 D_8439013C; +static s32 pad_D_84390140; +static u16 D_84390144; +static Controller* D_84390148; +static Controller* D_8439014C; +static Controller D_84390150; +s32 D_84390174; +unk_D_84390178 D_84390178; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430CC84.s") +static u8 D_84385750[] = { + 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, +}; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430CCC8.s") +void func_8430CC20(void) { + D_8439012C = D_800AE540.unk_11EF * 0x1E; + D_84390130 = D_800AE540.unk_11EE * 0x708; + D_84390128 = D_800AE540.unk_11EE * 0x708; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430CD0C.s") +void func_8430CC84(void) { + s32 tmp = (s32)(D_84390128 / 30.0f) * 0x1E; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430CDAC.s") + D_84390128 = tmp; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430CE00.s") +s32 func_8430CCC8(void) { + if (D_84390128 == 0.0f) { + return 1; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430D02C.s") + D_84390128 -= 1.0f; + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430D124.s") +s32 func_8430CD0C(void) { + if (D_800AE540.unk_11ED == 0) { + return 0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430D268.s") + if ((((s32)D_84390128 % 30) == 0) && (D_84390128 != 0.0f)) { + func_800367A0(0x3E, 0, 0); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430D294.s") + if (D_84390128 == 0.0f) { + return 1; + } + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430D30C.s") +s32 func_8430CDAC(s32 arg0, s32 arg1) { + s32 temp_v0 = arg0 * 0x30; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430D334.s") + if (temp_v0 < (arg1 * 0xA)) { + return 1; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430D364.s") + if (temp_v0 < (arg1 * 0x1B)) { + return 2; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430D434.s") + return 3; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430D574.s") +s32 func_8430CE00(void) { + unk_func_80026268_arg0* ptr; + s32 i; + s32 var_s3 = 0; + s32 var_s4 = 0; + s32 var_s5 = 0; + s32 var_s6 = 0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430D5BC.s") + for (i = 0; i < func_84307EC4(D_84390010[0]); i++) { + ptr = &D_84390010[0]->unk_724->unk_01C[i]; + if (ptr->unk_02 != 0) { + var_s3++; + } + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430D638.s") + for (i = 0; i < func_84307EC4(D_84390010[1]); i++) { + ptr = &D_84390010[1]->unk_724->unk_01C[i]; + if (ptr->unk_02 != 0) { + var_s4++; + } + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430D6D0.s") + if (var_s3 != var_s4) { + if (var_s4 < var_s3) { + return 1; + } + return 2; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430D710.s") + for (i = 0; i < func_84307EC4(D_84390010[0]); i++) { + ptr = &D_84390010[0]->unk_724->unk_01C[i]; + var_s5 += func_8430CDAC(ptr->unk_02, ptr->unk_26); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430D814.s") + for (i = 0; i < func_84307EC4(D_84390010[1]); i++) { + ptr = &D_84390010[1]->unk_724->unk_01C[i]; + var_s6 += func_8430CDAC(ptr->unk_02, ptr->unk_26); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430D8C4.s") + if (var_s5 == var_s6) { + return 3; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430D9EC.s") + if (var_s6 < var_s5) { + return 1; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430DB58.s") + if (var_s5 < var_s6) { + return 2; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430DBA0.s") +s32 func_8430D02C(void) { + s32 sp1C = 0; + s32 var_v0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430DCD4.s") + if (D_800AE540.unk_11ED == 0) { + return 0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430DE20.s") + if (func_8430CD0C() != 0) { + switch (D_84390134) { + case 1: + func_843184E4(0xD); + D_84390134 = 2; + func_800367A0(0x3F, 0, 0); + func_80041688(); + sp1C = 1; + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430DF60.s") + case 2: + sp1C = 1; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430DFCC.s") + var_v0 = 0; + if (D_84390120 >= 120.0f) { + var_v0 = 1; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430E1CC.s") + D_84390120 += 1.0f; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430E490.s") + if (var_v0 != 0) { + D_84390240.unk_00->unk_40 = func_8430CE00(); + func_8004B9C4(0x14); + } + break; + } + } + return sp1C; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430E504.s") +s32 func_8430D124(void) { + if (D_800AE540.unk_11ED == 0) { + return 0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430E580.s") + if (D_84390124 == 329.0f) { + func_800367A0(0x3C, 0, 0); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430E5AC.s") + if (D_84390124 == 91.0f) { + func_800367A0(0x3D, 3, 0); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430E72C.s") + if (D_84390124 == 61.0f) { + func_800367A0(0x3D, 2, 0); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430E8E8.s") + if (D_84390124 == 31.0f) { + func_800367A0(0x3D, 1, 0); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430EB1C.s") + if (D_84390124 == 1.0f) { + func_800367A0(0x3D, 0, 0); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430EBA8.s") + if (D_84390124 == 0.0f) { + return 1; + } + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430ED88.s") +void func_8430D268(void) { + D_84390124 = D_800AE540.unk_11EF * 0x1E; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430EE50.s") +s32 func_8430D294(void) { + if (D_84390124 > 0.0f) { + D_84390124 -= 1.0f; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430EF4C.s") + if (D_84390120 >= 150.0f) { + return 1; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430F044.s") + D_84390120 += 1.0f; + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430F080.s") +void func_8430D30C(void) { + D_84390120 = 0.0f; + func_8430D268(); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430F0C0.s") +s32 func_8430D334(unk_D_84390010* arg0) { + unk_D_84390010_654* temp_v1 = &arg0->unk_654; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430F27C.s") + if (arg0->unk_654.unk_10 == 3) { + temp_v1->unk_1E += 0x38E; + return 1; + } + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430F350.s") +void func_8430D364(void) { + unk_D_800FCB18* temp_a2; + unk_D_800FCB18* temp_a3; + unk_D_84390010_654* ptr1; + unk_D_84390010_654* ptr2; + unk_func_80026268_arg0* ptr3; + unk_func_80026268_arg0* ptr4; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430F458.s") + ptr1 = &D_84390010[0]->unk_654; + ptr2 = &D_84390010[1]->unk_654; + temp_a2 = &D_84390010[0]->unk_654.unk_38; + temp_a3 = &D_84390010[1]->unk_654.unk_38; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430F4AC.s") + ptr3 = &D_84390010[0]->unk_724->unk_01C[ptr1->unk_08]; + ptr4 = &D_84390010[1]->unk_724->unk_01C[ptr2->unk_08]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430F500.s") + if (D_84390288 != 0) { + D_843900A8[0] = temp_a2->unk_0C = temp_a2->unk_28; + D_843900A8[1] = temp_a3->unk_0C = temp_a3->unk_28; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430F598.s") + ptr3->unk_02 = temp_a2->unk_28; + ptr4->unk_02 = temp_a3->unk_28; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430F5F4.s") +s32 func_8430D434(unk_D_84390010* arg0) { + s32 i; + s32 var_v1; + unk_D_84390010_654* temp_v1; + unk_D_800FCB18* temp_v0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430F794.s") + temp_v1 = &arg0->unk_654; + temp_v0 = &arg0->unk_654.unk_38; + var_v1 = 0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430F8B8.s") + if (arg0->unk_654.unk_38.unk_52 != 0) { + for (i = 0; i < 4; i++) { + if (((temp_v0->unk_52 >> 4) != i) && (temp_v0->unk_1F[i] != 0)) { + var_v1 |= temp_v0->unk_32[i] & 0x3F; + } + } + } else { + for (i = 0; i < 4; i++) { + if (temp_v0->unk_1F[i] != 0) { + var_v1 |= temp_v0->unk_32[i] & 0x3F; + } + } + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430FB20.s") + if (var_v1 == 0) { + temp_v1->unk_1E = 0; + temp_v1->unk_10 = 3; + temp_v1->unk_14 = 4; + return 1; + } + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F74E0/func_8430FB68.s") +s32 func_8430D574(unk_D_84390010* arg0, s32 arg1) { + unk_D_800FCB18* ptr = &arg0->unk_654.unk_38; + + if (!(ptr->unk_32[arg1] & 0x3F)) { + return 1; + } + + if ((ptr->unk_52 & 0xF) && (arg1 == (ptr->unk_52 >> 4))) { + return 1; + } + + return 0; +} + +void func_8430D5BC(unk_D_84390010* arg0) { + s32 i; + unk_D_84390010_654* temp_v0 = &arg0->unk_654; + + if (func_8430D434(arg0) == 0) { + for (i = 0; i < 4; i++) { + if (func_8430D574(arg0, i) == 0) { + temp_v0->unk_04 = 1; + temp_v0->unk_10 = 3; + temp_v0->unk_14 = i; + temp_v0->unk_0C = i; + break; + } + } + } +} + +void func_8430D638(unk_D_84390010* arg0) { + s32 i; + unk_D_84390010_654* sp1C = &arg0->unk_654; + + for (i = 0; i < arg0->unk_720->unk_08[0]->unk_002; i++) { + if ((arg0->unk_720->unk_08[0]->unk_01C[i].unk_02 != 0) && (i != sp1C->unk_08)) { + func_8432B4B0(); + sp1C->unk_1C = 0; + sp1C->unk_1E = 0; + sp1C->unk_10 = 3; + sp1C->unk_18 = i; + return; + } + } + + func_8430D5BC(arg0); +} + +void func_8430D6D0(unk_D_84390010* arg0) { + unk_D_84390010_654* ptr = &arg0->unk_654; + + ptr->unk_2C = ptr->unk_2B; + ptr->unk_C8 = &gControllers[arg0->unk_720->unk_08[ptr->unk_2C]->unk_001]; +} + +void func_8430D710(s32 arg0) { + unk_D_84390010_654* sp2C; + unk_D_84390010_654* sp28; + UNUSED s32 pad; + Controller* cont; + + sp2C = &D_84390010[arg0]->unk_654; + sp28 = &D_84390010[arg0 == 0]->unk_654; + cont = sp2C->unk_C8; + + if ((sp2C->unk_10 != 3) || !(cont->buttonPressed & 0x20)) { + return; + } + + if (sp2C->unk_2D == 0x10) { + if (sp2C->unk_04 == 2) { + func_8430D6D0(D_84390010[arg0]); + } + func_8432B4D0(); + sp2C->unk_10 = 2; + } + + if (sp28->unk_2D != 0x10) { + if (sp2C->unk_04 == 2) { + func_8430D6D0(D_84390010[arg0]); + } + func_8432B4D0(); + sp2C->unk_10 = 0; + } +} + +void func_8430D814(void) { + func_8430CC20(); + func_84370B7C(D_84390010[0]); + func_84370B7C(D_84390010[1]); + + D_843900A8[0] = D_84390010[0]->unk_654.unk_38.unk_0C; + D_843900A8[1] = D_84390010[1]->unk_654.unk_38.unk_0C; + + func_8436F9D8(0, 1); + func_8436F9D8(1, 0); +} + +s32 func_8430D8C4(unk_D_84390010* arg0) { + unk_D_800FCB18* temp_v0 = &arg0->unk_654.unk_38; + s32 i; + s32 var_v1 = 0; + + if (temp_v0->unk_52 != 0) { + for (i = 0; i < 4; i++) { + if (((temp_v0->unk_52 >> 4) != i) && (temp_v0->unk_1F[i] != 0)) { + var_v1 |= temp_v0->unk_32[i] & 0x3F; + } + } + } else { + for (i = 0; i < 4; i++) { + if (temp_v0->unk_1F[i] != 0) { + var_v1 |= temp_v0->unk_32[i] & 0x3F; + } + } + } + + if (var_v1 == 0) { + return 1; + } + return 0; +} + +s32 func_8430D9EC(unk_D_84390010* arg0, unk_D_84390010* arg1) { + UNUSED s32 pad[2]; + unk_D_84390010_654* sp1C = &arg0->unk_654; + unk_D_84390010_654* temp_v0 = &arg1->unk_654; + + if ((arg0->unk_654.unk_2D == 0x10) && (arg1->unk_654.unk_2D == 0x10)) { + if (sp1C->unk_10 == 3) { + func_8430D334(arg0); + return 1; + } + + sp1C->unk_04 = 2; + sp1C->unk_10 = 2; + + if (D_84390120 == 20.0f) { + func_8432B4B0(); + D_84390138 = func_84383B5C(0); + sp1C->unk_1C = 0; + sp1C->unk_18 = D_84390138 - 4; + sp1C->unk_1E = 0; + sp1C->unk_10 = 3; + sp1C->unk_04 = 2; + } + return 1; + } + + if (sp1C->unk_2D == 0x10) { + sp1C->unk_04 = 2; + sp1C->unk_10 = 2; + temp_v0->unk_10 = 3; + temp_v0->unk_04 = 1; + + if (D_84390120 == 20.0f) { + func_8432B4B0(); + D_84390138 = func_84383B5C(0); + sp1C->unk_1C = 0; + sp1C->unk_18 = D_84390138 - 4; + sp1C->unk_1E = 0; + sp1C->unk_10 = 3; + sp1C->unk_04 = 2; + } + return 1; + } + + return 0; +} + +void func_8430DB58(unk_D_84390010* arg0, UNUSED unk_D_84390010* arg1) { + unk_D_84390010_654* ptr = &arg0->unk_654; + + func_8430D334(arg0); + ptr->unk_2A = 1; + ptr->unk_04 = 1; + ptr->unk_0C = ptr->unk_14; + ptr->unk_10 = 3; +} + +void func_8430DBA0(unk_D_84390010* arg0, unk_D_84390010* arg1) { + unk_D_84390010_654* sp20 = &arg1->unk_654; + unk_D_84390010_654* sp1C = &arg0->unk_654; + + func_8430D334(arg0); + sp1C->unk_2A = 1; + + if ((D_84390120 == 30.0f) && (D_84390138 < 4)) { + func_8432B4B0(); + } + + if ((D_84390138 < 4) && (D_84390120 >= 30.0f)) { + sp1C->unk_10 = 1; + sp1C->unk_04 = 1; + } + + if (((D_84390120 >= 90.0f) || ((sp20->unk_10 == 3) && (D_84390120 >= 10.0f))) && (D_84390138 < 4)) { + func_8432B4B0(); + sp1C->unk_04 = 1; + sp1C->unk_10 = 3; + sp1C->unk_0C = sp1C->unk_14; + } +} + +void func_8430DCD4(unk_D_84390010* arg0, unk_D_84390010* arg1) { + unk_D_84390010_654* sp18; + unk_D_84390010_654* sp14; + s32 var_v0; + + sp18 = &arg0->unk_654; + sp14 = &arg1->unk_654; + + if ((D_84390120 == 30.0f) && (D_84390138 < 4)) { + func_8432B4B0(); + } + + if (D_84390138 < 4) { + if (D_84390120 >= 30.0f) { + sp18->unk_10 = 1; + sp18->unk_04 = 1; + } + } + + if ((D_84390120 >= 90.0f) || ((sp14->unk_10 == 3) && (D_84390120 >= 10.0f))) { + if (D_84390138 < 4) { + func_8432B4B0(); + sp18->unk_04 = 1; + sp18->unk_10 = 3; + if (func_8430D8C4(arg0) != 0) { + sp18->unk_14 = 4; + sp18->unk_0C = 4; + } else { + var_v0 = D_84390138; + sp18->unk_14 = var_v0; + sp18->unk_0C = var_v0; + } + } + } +} + +s32 func_8430DE20(unk_D_84390010* arg0, unk_D_84390010* arg1) { + unk_D_84390010_654* sp1C = &arg0->unk_654; + unk_D_84390010_654* sp18 = &arg1->unk_654; + + if ((D_84390120 == 30.0f) && (D_84390138 >= 4)) { + func_8432B4B0(); + } + + if (D_84390120 >= 30.0f) { + if (D_84390138 >= 4) { + sp1C->unk_10 = 2; + sp1C->unk_04 = 2; + } + } + + if ((D_84390120 >= 90.0f) || ((sp18->unk_10 == 3) && (D_84390120 >= 10.0f))) { + if (D_84390138 >= 4) { + func_8432B4B0(); + sp1C->unk_1C = 0; + sp1C->unk_18 = D_84390138 - 4; + sp1C->unk_1E = 0; + sp1C->unk_10 = 3; + sp1C->unk_04 = 2; + } + } + + if (D_84390138 >= 4) { + return 1; + } + return 0; +} + +void func_8430DF60(UNUSED unk_D_800FCB18* arg0, UNUSED unk_D_800FCB18* arg1, UNUSED unk_D_84390010_654* arg2, + UNUSED unk_D_84390010_654* arg3, UNUSED unk_D_84390010* arg4) { + if ((D_84390120 == 1.0f) && (D_8439013C == 0)) { + D_8439013C = 1; + D_84390138 = func_84383B5C(0); + } +} + +s32 func_8430DFCC(unk_D_84390010* arg0, unk_D_84390010* arg1) { + unk_D_800FCB18* sp34 = &arg0->unk_654.unk_38; + unk_D_800FCB18* sp30 = &arg1->unk_654.unk_38; + unk_D_84390010_654* sp2C = &arg0->unk_654; + unk_D_84390010_654* sp28 = &arg1->unk_654; + + if (func_8430D9EC(arg0, arg1) != 0) { + return 0; + } + + if (!(sp34->unk_4D & 0x60)) { + sp34->unk_4C &= ~8; + sp30->unk_4C &= ~8; + + if (!(sp34->unk_4C & 0x12)) { + if (func_8430D334(arg0) != 0) { + return 0; + } + + if (D_84390120 == 0.0f) { + D_8439013C = 0; + return 0; + } + + func_8430DF60(sp34, sp30, sp2C, sp28, arg1); + + if (func_8430DE20(arg0, arg1) != 0) { + return 0; + } + + if (!(sp34->unk_15 & 0x27)) { + if (!(sp34->unk_4C & 0x21)) { + if (sp30->unk_4C & 0x20) { + func_8430DBA0(arg0, arg1); + sp34->unk_5A = 0xFF; + } else if (func_8430D334(arg0) != 0) { + return 0; + } else { + if (D_84390120 == 0.0f) { + D_8439013C = 0; + return 0; + } + func_8430DF60(sp34, sp30, sp2C, sp28, arg1); + func_8430DCD4(arg0, arg1); + } + } else { + func_8430DBA0(arg0, arg1); + } + } else { + func_8430DBA0(arg0, arg1); + } + } else { + func_8430DB58(arg0, arg1); + } + } else { + func_8430DB58(arg0, arg1); + } + + return 0; +} + +void func_8430E1CC(unk_D_84390010* arg0) { + unk_D_84390010_654* sp18 = &arg0->unk_654; + unk_D_84390010_654* temp_a0 = &D_84390010[func_84307F00(arg0) == 0]->unk_654; + + if (arg0->unk_720->unk_01 == 1) { + D_84390148 = &gControllers[arg0->unk_720->unk_08[0]->unk_001]; + D_8439014C = &gControllers[arg0->unk_720->unk_08[0]->unk_001]; + } else { + D_84390148 = &gControllers[arg0->unk_720->unk_08[0]->unk_001]; + D_8439014C = &gControllers[arg0->unk_720->unk_08[1]->unk_001]; + } + + if (temp_a0->unk_10 == 4) { + sp18->unk_10 = 0; + sp18->unk_04 = 0; + return; + } + + if (sp18->unk_10 != 4) { + sp18->unk_2F = 0; + } + + sp18->unk_10 = 4; + + if ((D_84390240.unk_00->unk_40 == 0) && + (BTN_IS_PRESSED(D_84390148, BTN_DLEFT) || BTN_IS_PRESSED(D_8439014C, BTN_DLEFT))) { + sp18->unk_2F = 0; + func_80048B90(1); + } + + if ((D_84390240.unk_00->unk_40 == 0) && + (BTN_IS_PRESSED(D_84390148, BTN_DRIGHT) || BTN_IS_PRESSED(D_8439014C, BTN_DRIGHT))) { + sp18->unk_2F = 1; + func_80048B90(1); + } + + if ((sp18->unk_2F == 1) && (BTN_IS_PRESSED(D_84390148, BTN_A) || BTN_IS_PRESSED(D_8439014C, BTN_A)) && + (D_84390240.unk_00->unk_40 == 0)) { + func_80048B90(2); + D_84390240.unk_00->unk_40 = (func_84307F00(arg0) == 0) + 1; + func_8004B9C4(0x14); + } else if ((sp18->unk_2F == 0) && (BTN_IS_PRESSED(D_84390148, BTN_A) || BTN_IS_PRESSED(D_8439014C, BTN_A))) { + sp18->unk_10 = 0; + sp18->unk_04 = 0; + func_80048B90(3); + } +} + +void func_8430E490(unk_D_84390010* arg0) { + unk_D_84390010_654* temp_v0 = &arg0->unk_654; + unk_D_800FCB18* temp_v1 = &D_84390010[func_84307F00(arg0) == 0]->unk_654.unk_38; + + if (temp_v1->unk_4C & 0x20) { + arg0->unk_654.unk_38.unk_5A = 0xFF; + } + + if (temp_v0->unk_2D != 0x10) { + temp_v0->unk_2D = 0xF; + } + + temp_v0->unk_1C = 0; + func_843193F4(arg0); +} + +s32 func_8430E504(unk_D_84390010* arg0) { + if (arg0->unk_720->unk_08[arg0->unk_654.unk_2C]->unk_01C[arg0->unk_654.unk_18].unk_02 != 0) { + return 1; + } + + func_843193F4(arg0); + func_84319408(arg0, 3); + func_8432B4F0(); + return 0; +} + +void func_8430E580(unk_D_84390010* arg0) { + func_843193F4(arg0); + func_84319408(arg0, 4); +} + +void func_8430E5AC(unk_D_84390010* arg0, s32 arg1) { + if (arg1 == 1) { + D_84390148 = &gControllers[arg0->unk_720->unk_08[0]->unk_001]; + D_8439014C = &gControllers[arg0->unk_720->unk_08[0]->unk_001]; + } else { + D_84390148 = &gControllers[arg0->unk_720->unk_08[0]->unk_001]; + D_8439014C = &gControllers[arg0->unk_720->unk_08[1]->unk_001]; + } + + if (arg1 == 1) { + if (BTN_IS_PRESSED(D_84390148, BTN_A | BTN_B | BTN_CUP | BTN_CDOWN | BTN_CLEFT | BTN_CRIGHT)) { + arg0->unk_654.unk_2C = 0; + func_843089FC(arg0, D_84390148); + } else if (BTN_IS_PRESSED(D_8439014C, BTN_A | BTN_B | BTN_CUP | BTN_CDOWN | BTN_CLEFT | BTN_CRIGHT)) { + func_843089FC(arg0, D_8439014C); + arg0->unk_654.unk_2C = 0; + } + } else if (BTN_IS_PRESSED(D_84390148, BTN_A | BTN_B | BTN_CUP | BTN_CDOWN | BTN_CLEFT | BTN_CRIGHT)) { + func_843089FC(arg0, D_84390148); + arg0->unk_654.unk_2C = 0; + } else if (BTN_IS_PRESSED(D_8439014C, BTN_A | BTN_B | BTN_CUP | BTN_CDOWN | BTN_CLEFT | BTN_CRIGHT)) { + func_843089FC(arg0, D_8439014C); + arg0->unk_654.unk_2C = 1; + } +} + +void func_8430E72C(unk_D_84390010* arg0, Controller* arg1) { + unk_D_84390010_654* sp1C; + unk_D_800AE540_0004* temp_a1; + + sp1C = &arg0->unk_654; + + func_8430E5AC(arg0, arg0->unk_720->unk_01); + temp_a1 = arg0->unk_720->unk_08[sp1C->unk_2C]; + arg1 = sp1C->unk_C8; + + if (temp_a1->unk_002 < 4) { + if (BTN_IS_PRESSED(arg1, BTN_CUP)) { + sp1C->unk_18 = 0; + } else if (BTN_IS_PRESSED(arg1, BTN_CRIGHT)) { + sp1C->unk_18 = 1; + } else if (BTN_IS_PRESSED(arg1, BTN_CDOWN)) { + sp1C->unk_18 = 2; + } else { + return; + } + } else { + if (BTN_IS_PRESSED(arg1, BTN_CUP)) { + sp1C->unk_18 = 0; + } + + if (BTN_IS_PRESSED(arg1, BTN_CLEFT)) { + sp1C->unk_18 = 1; + } + + if (BTN_IS_PRESSED(arg1, BTN_B)) { + sp1C->unk_18 = 2; + } + + if (BTN_IS_PRESSED(arg1, BTN_CRIGHT)) { + sp1C->unk_18 = 3; + } + + if (BTN_IS_PRESSED(arg1, BTN_CDOWN)) { + sp1C->unk_18 = 4; + } + + if (BTN_IS_PRESSED(arg1, BTN_A)) { + sp1C->unk_18 = 5; + } + } + + if (BTN_IS_PRESSED(arg1, BTN_A | BTN_B | BTN_CUP | BTN_CDOWN | BTN_CLEFT | BTN_CRIGHT)) { + if ((sp1C->unk_08 == sp1C->unk_18) && (sp1C->unk_2C == sp1C->unk_2B)) { + if (func_8430E504(arg0) != 0) { + func_8432B4F0(); + func_8430E580(arg0); + } + } else if (((temp_a1->unk_002 - 1) >= sp1C->unk_18) && (func_8430E504(arg0) != 0)) { + func_8432B4B0(); + sp1C->unk_1C = 0; + sp1C->unk_1E = 0; + sp1C->unk_10 = 3; + } + } +} + +void func_8430E8E8(unk_D_84390010* arg0) { + UNUSED s32 pad; + s32 idx; + unk_D_84390010_654* sp18 = &arg0->unk_654; + + if (arg0->unk_720->unk_01 == 1) { + D_84390148 = &gControllers[arg0->unk_720->unk_08[0]->unk_001]; + D_8439014C = &gControllers[arg0->unk_720->unk_08[0]->unk_001]; + } else { + + D_84390148 = &gControllers[arg0->unk_720->unk_08[sp18->unk_2C]->unk_001]; + idx = sp18->unk_2C == 0; + D_8439014C = &gControllers[arg0->unk_720->unk_08[idx]->unk_001]; + } + + if (arg0->unk_8C4.unk_00 != 0) { + if (sp18->unk_C8->buttonPressed & 0xE03F) { + func_843193F4(arg0); + } + } else if (sp18->unk_10 == 0) { + sp18->unk_10 = 2; + } else if (((D_84390148->buttonPressed & 0x20) || (D_8439014C->buttonPressed & 0x20)) && (sp18->unk_2D != 0x10) && + !(D_84390148->buttonDown & 0x10) && !(D_8439014C->buttonDown & 0x10)) { + func_8430D6D0(arg0); + func_8432B4D0(); + sp18->unk_10 = 0; + } else { + sp18->unk_1C = 0; + if ((D_84390148->buttonDown & 0x10) || (D_8439014C->buttonDown & 0x10)) { + if ((D_84390148->buttonPressed & 0x10) || (D_8439014C->buttonPressed & 0x10)) { + func_8432B490(); + } + sp18->unk_1C = 1; + } + func_8430E72C(arg0, sp18->unk_C8); + } +} + +void func_8430EB1C(unk_D_84390010* arg0) { + unk_D_84390010_654* temp_v0 = &arg0->unk_654; + unk_D_800FCB18* temp_v1 = &arg0->unk_654.unk_38; + + if (arg0->unk_654.unk_14 != 4) { + temp_v0->unk_0C = temp_v0->unk_14; + if (temp_v0->unk_2A == 0) { + temp_v1->unk_5A = temp_v1->unk_1F[temp_v0->unk_0C]; + } + } else { + if (temp_v1->unk_4C & 0x20) { + temp_v0->unk_0C = temp_v0->unk_14; + } else { + temp_v0->unk_14 = 0; + temp_v0->unk_0C = 0; + temp_v1->unk_5A = 0xA5; + } + } + + temp_v0->unk_1C = 0; + func_843193F4(arg0); +} + +s32 func_8430EBA8(unk_D_84390010* arg0) { + s32 i; + s32 temp_a1; + s32 var_v1; + unk_D_84390010_654* temp_v0; + unk_D_800FCB18* temp_a0; + Controller* cont; + + temp_v0 = &arg0->unk_654; + temp_a0 = &arg0->unk_654.unk_38; + cont = arg0->unk_654.unk_C8; + var_v1 = 0; + + if (temp_a0->unk_52 != 0) { + temp_a1 = temp_a0->unk_52 >> 4; + for (i = 0; i < 4; i++) { + if ((temp_a1 != i) && (temp_a0->unk_1F[i] != 0)) { + var_v1 |= temp_a0->unk_32[i] & 0x3F; + } + } + } else { + for (i = 0; i < 4; i++) { + if (temp_a0->unk_1F[i] != 0) { + var_v1 |= temp_a0->unk_32[i] & 0x3F; + } + } + } + + if (var_v1 == 0) { + if (arg0->unk_8C4.unk_00 == 0) { + if (temp_v0->unk_10 == 0) { + temp_v0->unk_10 = 1; + } + func_843193F4(arg0); + func_84319408(arg0, 0); + } else if (cont->buttonPressed & 0x20) { + func_843193F4(arg0); + temp_v0->unk_10 = 0; + func_8432B4D0(); + } else if (cont->buttonPressed & 0x8000) { + func_843193F4(arg0); + temp_v0->unk_1E = 0; + temp_v0->unk_10 = 3; + temp_v0->unk_14 = 4; + } + return 1; + } + return 0; +} + +s32 func_8430ED88(unk_D_84390010* arg0) { + UNUSED s32 pad[2]; + unk_D_84390010_654* sp24 = &arg0->unk_654; + unk_D_800FCB18* ptr = &arg0->unk_654.unk_38; + + if (!(ptr->unk_32[sp24->unk_14] & 0x3F)) { + func_8432B4F0(); + func_843193F4(arg0); + func_84319408(arg0, 1); + return 1; + } + + if ((ptr->unk_52 & 0xF) && (sp24->unk_14 == (ptr->unk_52 >> 4))) { + func_8432B4F0(); + func_843193F4(arg0); + func_84319408(arg0, 2); + return 1; + } + + func_8432B4B0(); + sp24->unk_1E = 0; + sp24->unk_10 = 3; + sp24->unk_1C = 0; + return 0; +} + +void func_8430EE50(unk_D_84390010* arg0) { + Controller* cont = arg0->unk_654.unk_C8; + + if ((cont->buttonPressed & 8) != 0) { + if ((arg0->unk_654.unk_38.unk_1F[0] != 0) && (arg0->unk_654.unk_38.unk_1F[0] < 0xA6)) { + arg0->unk_654.unk_14 = 0; + func_8430ED88(arg0); + return; + } + } + + if ((cont->buttonPressed & 1) != 0) { + if ((arg0->unk_654.unk_38.unk_1F[1] != 0) && (arg0->unk_654.unk_38.unk_1F[1] < 0xA6)) { + arg0->unk_654.unk_14 = 1; + func_8430ED88(arg0); + return; + } + } + + if ((cont->buttonPressed & 4) != 0) { + if ((arg0->unk_654.unk_38.unk_1F[2] != 0) && (arg0->unk_654.unk_38.unk_1F[2] < 0xA6)) { + arg0->unk_654.unk_14 = 2; + func_8430ED88(arg0); + return; + } + } + + if ((cont->buttonPressed & 2) != 0) { + if ((arg0->unk_654.unk_38.unk_1F[3] != 0) && (arg0->unk_654.unk_38.unk_1F[3] < 0xA6)) { + arg0->unk_654.unk_14 = 3; + func_8430ED88(arg0); + return; + } + } + + if ((cont->buttonPressed & 8) || (cont->buttonPressed & 1) || (cont->buttonPressed & 4) || + (cont->buttonPressed & 2)) { + func_8432B4F0(); + } +} + +void func_8430EF4C(unk_D_84390010* arg0) { + UNUSED s32 pad[2]; + Controller* sp1C = arg0->unk_654.unk_C8; + unk_D_84390010_654* temp_v0 = &arg0->unk_654; + + if ((temp_v0->unk_04 == 1) && (func_8430EBA8(arg0) == 0)) { + if (arg0->unk_8C4.unk_00 != 0) { + if (BTN_IS_PRESSED(sp1C, + BTN_A | BTN_B | BTN_Z | BTN_L | BTN_R | BTN_CUP | BTN_CDOWN | BTN_CLEFT | BTN_CRIGHT)) { + func_843193F4(arg0); + } + } else { + if (temp_v0->unk_10 == 0) { + temp_v0->unk_10 = 1; + } else if (BTN_IS_PRESSED(sp1C, BTN_L) && !BTN_IS_DOWN(sp1C, BTN_R)) { + temp_v0->unk_10 = 0; + func_8432B4D0(); + } else { + temp_v0->unk_1C = 0; + if (BTN_IS_DOWN(sp1C, BTN_R)) { + temp_v0->unk_1C = 1; + } + + if (BTN_IS_PRESSED(sp1C, BTN_R)) { + func_8432B490(); + } + + func_8430EE50(arg0); + } + } + } +} + +s32 func_8430F044(unk_D_84390010* arg0, UNUSED Controller* arg1) { + arg0->unk_654.unk_2A = 1; + func_8430EF4C(arg0); + arg0->unk_654.unk_2A = 1; + return 0; +} + +void func_8430F080(unk_D_84390010* arg0) { + unk_D_84390010_654* ptr = &arg0->unk_654; + + func_8430D334(arg0); + ptr->unk_2A = 1; + ptr->unk_10 = 3; + ptr->unk_0C = ptr->unk_14; +} + +void func_8430F0C0(unk_D_84390010* arg0) { + unk_D_84390010_654* temp_v1 = &arg0->unk_654; + unk_D_84390010_654* temp_t0 = &D_84390010[func_84307F00(arg0) == 0]->unk_654; + + if (temp_v1->unk_10 == 0) { + if (arg0->unk_720->unk_01 == 1) { + D_84390148 = &gControllers[arg0->unk_720->unk_08[0]->unk_001]; + D_8439014C = &gControllers[arg0->unk_720->unk_08[0]->unk_001]; + } else { + D_84390148 = &gControllers[arg0->unk_720->unk_08[0]->unk_001]; + D_8439014C = &gControllers[arg0->unk_720->unk_08[1]->unk_001]; + } + + if (temp_v1->unk_C8->buttonPressed & 0x8000) { + temp_v1->unk_04 = 1; + } else if ((D_84390148->buttonPressed | D_8439014C->buttonPressed) & 0x4000) { + temp_v1->unk_04 = 2; + } else if ((D_84390148->buttonPressed | D_8439014C->buttonPressed) & 0x1000) { + temp_v1->unk_04 = 3; + } else { + temp_v1->unk_04 = 0; + } + + if ((temp_v1->unk_C8->buttonPressed & 0x8000) || + (((D_84390148->buttonPressed | D_8439014C->buttonPressed) & 0x4000) != 0) || + (((D_84390148->buttonPressed | D_8439014C->buttonPressed) & 0x1000) && (temp_t0->unk_10 != 4))) { + func_8432B4B0(); + } + } +} + +s32 func_8430F27C(unk_D_84390010* arg0) { + func_84307F00(arg0); + + if (func_8430D334(arg0) != 0) { + return 1; + } + + if (func_8430D124() != 0) { + if (arg0->unk_654.unk_04 == 2) { + func_8430D638(arg0); + } else { + func_8430D5BC(arg0); + } + return 1; + } + + func_8430F0C0(arg0); + + switch (arg0->unk_654.unk_04) { + case 2: + func_8430E8E8(arg0); + return 1; + + case 3: + func_8430E1CC(arg0); + return 1; + + case 1: + break; + } + return 0; +} + +s32 func_8430F350(unk_D_84390010* arg0, unk_D_84390010* arg1) { + unk_D_84390010_654* sp1C = &arg0->unk_654; + unk_D_84390010_654* temp_v0 = &arg1->unk_654; + + if ((sp1C->unk_2D == 0x10) && (temp_v0->unk_2D == 0x10)) { + if (sp1C->unk_10 == 3) { + func_8430D334(arg0); + return 1; + } + + if (func_8430D124() != 0) { + func_8430D638(arg0); + return 1; + } + + sp1C->unk_04 = 2; + sp1C->unk_10 = 2; + func_8430E8E8(arg0); + return 1; + } + + if (sp1C->unk_2D == 0x10) { + if (func_8430D124() != 0) { + func_8430D638(arg0); + return 1; + } + sp1C->unk_04 = 2; + temp_v0->unk_04 = 1; + sp1C->unk_10 = 2; + temp_v0->unk_10 = 3; + func_8430E8E8(arg0); + return 1; + } + return 0; +} + +void func_8430F458(void) { + D_84390010[0]->unk_728.unk_168->unk_00.unk_01 |= 1; + D_84390010[0]->unk_728.unk_000.unk_000.unk_01 |= 1; + D_84390010[1]->unk_728.unk_168->unk_00.unk_01 |= 1; + D_84390010[1]->unk_728.unk_000.unk_000.unk_01 |= 1; +} + +void func_8430F4AC(void) { + D_84390010[0]->unk_728.unk_168->unk_00.unk_01 &= ~1; + D_84390010[0]->unk_728.unk_000.unk_000.unk_01 &= ~1; + D_84390010[1]->unk_728.unk_168->unk_00.unk_01 &= ~1; + D_84390010[1]->unk_728.unk_000.unk_000.unk_01 &= ~1; +} + +void func_8430F500(void) { + static u16 D_84385758[][3] = { + { 0x17C, 0, 0 }, { 0xA, BTN_L, 0 }, { 0xA, BTN_R, 0 }, { 0xC8, BTN_START, 0 }, + { 0xC8, BTN_START, 0 }, { 0xDC, BTN_A, 0 }, { 0, 0, 0 }, + }; + Controller* controller = &D_84390150; + + controller->buttonPressed = 0; + + if (D_84390178.unk_00 == 0) { + D_84390178.unk_00 = D_84385758[D_84390174][0]; + if (D_84390178.unk_00 != 0) { + controller->buttonPressed = D_84385758[D_84390174][1]; + controller->buttonDown = D_84385758[D_84390174][2]; + D_84390174++; + } + } + + if (D_84390178.unk_00 > 0) { + D_84390178.unk_00--; + } +} + +void func_8430F598(unk_D_84390010* arg0, unk_D_84390010* arg1) { + unk_D_800FCB18* temp_v0 = &arg0->unk_654.unk_38; + unk_D_800FCB18* temp_v1 = &arg1->unk_654.unk_38; + + if (!(arg0->unk_654.unk_38.unk_4D & 0x60)) { + temp_v0->unk_4C &= ~8; + temp_v1->unk_4C &= ~8; + if (temp_v0->unk_4C & 0x12) { + arg0->unk_654.unk_2A = 1; + } + } else { + arg0->unk_654.unk_2A = 1; + } +} + +void func_8430F5F4(void) { + unk_D_84390010_654* sp24 = &D_84390010[0]->unk_654; + unk_D_84390010_654* sp20 = &D_84390010[1]->unk_654; + unk_D_800FCB18* sp1C = &D_84390010[0]->unk_654.unk_38; + unk_D_800FCB18* sp18 = &D_84390010[1]->unk_654.unk_38; + Controller* cont = &D_84390150; + + func_8430F500(); + func_8430F598(D_84390010[0], D_84390010[1]); + func_8430F598(D_84390010[1], D_84390010[0]); + + if (cont->buttonPressed & 0x20) { + func_8430F458(); + func_843074A0(D_84390010[0]); + func_843074A0(D_84390010[1]); + } + + if (cont->buttonPressed & 0x10) { + func_8430F4AC(); + } + + if (cont->buttonPressed & 0x1000) { + sp24->unk_04 = 0; + sp20->unk_04 = 0; + + if (sp24->unk_2A == 0) { + sp1C->unk_5A = func_843841C4(0, 0); + } + + if (sp20->unk_2A == 0) { + sp18->unk_5A = func_843841C4(1, 0); + } + + sp24->unk_10 = 3; + sp20->unk_10 = 3; + + if ((sp24->unk_10 == 3) && (sp20->unk_10 == 3)) { + func_84320108(); + } + } + + func_8430D364(); + + if (cont->buttonPressed & 0x2000) { + D_84390174 = 0; + D_84390178.unk_00 = 0; + } + + if (cont->buttonPressed & 0x8000) { + D_84390240.unk_00->unk_40 = 3; + } +} + +void func_8430F794(unk_D_84390010* arg0, unk_D_84390010* arg1) { + UNUSED s32 pad; + unk_D_800FCB18* sp20 = &arg0->unk_654.unk_38; + unk_D_800FCB18* sp1C = &arg1->unk_654.unk_38; + + if (func_8430F350(arg0, arg1) == 0) { + if (!(sp20->unk_4D & 0x60)) { + sp20->unk_4C &= ~8; + sp1C->unk_4C &= ~8; + if (!(sp20->unk_4C & 0x12)) { + if (func_8430F27C(arg0) == 0) { + if (!(sp20->unk_15 & 0x27)) { + if (!(sp20->unk_4C & 0x21)) { + if (sp1C->unk_4C & 0x20) { + func_8430F044(arg0, arg0->unk_654.unk_C8); + sp20->unk_5A = 0xFF; + } else { + func_8430EF4C(arg0); + } + } else { + func_8430F044(arg0, arg0->unk_654.unk_C8); + } + } else { + func_8430F044(arg0, arg0->unk_654.unk_C8); + } + } + } else { + func_8430F080(arg0); + } + } else { + func_8430F080(arg0); + } + } +} + +void func_8430F8B8(void) { + unk_D_84390010_654* sp24 = &D_84390010[0]->unk_654; + unk_D_84390010_654* sp20 = &D_84390010[1]->unk_654; + unk_D_800FCB18* sp1C = &D_84390010[0]->unk_654.unk_38; + unk_D_800FCB18* sp18 = &D_84390010[1]->unk_654.unk_38; + + if (D_84390010[0]->unk_724->unk_000 & 2) { + D_84390144 = D_843C4DC4; + func_8430DFCC(D_84390010[0], D_84390010[1]); + D_843C4DC4 = D_84390144; + } else { + func_8430F794(D_84390010[0], D_84390010[1]); + } + + if (D_84390010[1]->unk_724->unk_000 & 2) { + D_84390144 = D_843C4DC4; + func_8430DFCC(D_84390010[1], D_84390010[0]); + D_843C4DC4 = D_84390144; + } else { + func_8430F794(D_84390010[1], D_84390010[0]); + } + + if ((sp24->unk_10 == 3) && (sp20->unk_10 == 3)) { + if (func_8430CD0C() != 0) { + D_84390134 = 1; + } + + if (sp24->unk_04 == 2) { + func_8430E490(D_84390010[0]); + } else { + func_8430EB1C(D_84390010[0]); + } + + if (sp20->unk_04 == 2) { + func_8430E490(D_84390010[1]); + } else { + func_8430EB1C(D_84390010[1]); + } + + if ((sp24->unk_04 == 2) || (sp20->unk_04 == 2)) { + func_843202A0(); + } else { + func_84320108(); + } + } else { + if (!(D_84390010[0]->unk_724->unk_000 & 2) && !(sp1C->unk_4D & 0x60) && !(sp1C->unk_4C & 0x12)) { + func_8430D710(0); + } + + if (!(D_84390010[1]->unk_724->unk_000 & 2) && !(sp18->unk_4D & 0x60) && !(sp18->unk_4C & 0x12)) { + func_8430D710(1); + } + } +} + +void func_8430FB20(void) { + D_84390288 = 0; + if (D_800AE540.unk_0000 == 0x10) { + func_8430F5F4(); + } else { + func_8430F8B8(); + } +} + +void func_8430FB68(void) { + unk_D_84390010_654* sp1C = &D_84390010[0]->unk_654; + unk_D_84390010_654* sp18 = &D_84390010[1]->unk_654; + + if (func_8430D02C() == 0) { + D_84390010[0]->unk_4C8 = 0; + D_84390010[1]->unk_4C8 = 0; + + if (sp1C->unk_2A != 1) { + sp1C->unk_2A = 0; + } + + if (sp18->unk_2A != 1) { + sp18->unk_2A = 0; + } + + func_8430FB20(); + func_8430CCC8(); + func_8430D294(); + } +} diff --git a/src/fragments/62/fragment62_2FA4D0.c b/src/fragments/62/fragment62_2FA4D0.c index f2ec720..9377f8f 100644 --- a/src/fragments/62/fragment62_2FA4D0.c +++ b/src/fragments/62/fragment62_2FA4D0.c @@ -1,150 +1,1894 @@ -#include "global.h" +#include "fragment62.h" +#include "src/1CF30.h" +#include "src/20470.h" +#include "src/225A0.h" +#include "src/29BA0.h" +#include "src/2E110.h" +#include "src/3D140.h" +#include "src/6A40.h" +#include "src/6BC0.h" +#include "src/F420.h" +#include "src/controller.h" +#include "src/memmap.h" +#include "src/memory.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_8430FC10.s") +Vec3f D_84390190; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_8430FC28.s") +static unk_D_84385790 D_84385790[] = { + { + 0x00000000, + { + 0xFF, + 0xFF, + 0xFF, + 0xFF, + }, + }, + { + 0x00000001, + { + 0x4D, + 0x4D, + 0x4D, + 0xFF, + }, + }, + { + 0x00000002, + { + 0x9F, + 0x91, + 0xE8, + 0xFF, + }, + }, + { + 0x00000003, + { + 0x96, + 0x50, + 0xFF, + 0xFF, + }, + }, + { + 0x00000004, + { + 0xF0, + 0x5A, + 0x46, + 0xFF, + }, + }, + { + 0x00000005, + { + 0x85, + 0xD5, + 0xF1, + 0xFF, + }, + }, + { + 0x00000006, + { + 0xFF, + 0xFF, + 0x00, + 0xFF, + }, + }, +}; +static u8* D_843857C8[] = { + D_30098F0, D_300B630, D_300A1F0, D_30096B0, D_300AAF0, D_300A8B0, D_30098F0, D_300B3F0, D_3009FB0, D_30098F0, + D_30098F0, D_30098F0, D_30098F0, D_30098F0, D_30098F0, D_30098F0, D_30098F0, D_30098F0, D_30098F0, D_30098F0, + D_300A430, D_300B1B0, D_300AF70, D_300A670, D_3009D70, D_300AD30, D_3009B30, NULL, +}; +static u8* D_84385838[] = { + D_3007A78, D_3007EB0, D_3007910, D_3008018, D_3007BE0, D_3007D48, +}; +static u8* D_84385850[] = { + D_3006D10, + D_3007010, + D_3007310, + D_3007610, +}; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_8430FF8C.s") +static Color_RGB8 D_84385860[] = { + { 0, 0, 0x8B }, { 0, 0x32, 0 }, { 0x1E, 0, 0 }, { 0x65, 0x49, 0x11 }, { 0, 0, 0 }, +}; +static Color_RGB8 D_84385870[] = { + { 0x00, 0x00, 0xEE }, + { 0x00, 0x79, 0x00 }, + { 0x82, 0x00, 0x00 }, + { 0x97, 0x89, 0x13 }, +}; +static Color_RGB8 D_8438587C[] = { + { 0x13, 0x45, 0xFF }, + { 0, 0x99, 0 }, + { 0xCC, 0x51, 0x28 }, + { 0xCC, 0x8F, 0 }, +}; +static Color_RGB8 D_84385888[] = { + { 0x00, 0x00, 0x8B }, + { 0x00, 0x00, 0x8B }, + { 0x00, 0x00, 0x8B }, + { 0x00, 0x00, 0x8B }, +}; +static Color_RGB8 D_84385894[] = { + { 0x00, 0x00, 0xEE }, + { 0x00, 0x00, 0xEE }, + { 0x00, 0x00, 0xEE }, + { 0x00, 0x00, 0xEE }, +}; +static Color_RGB8 D_843858A0[] = { + { 0x00, 0x32, 0x00 }, + { 0x00, 0x32, 0x00 }, + { 0x00, 0x32, 0x00 }, + { 0x00, 0x32, 0x00 }, +}; +static Color_RGB8 D_843858AC[] = { + { 0x00, 0x79, 0x00 }, + { 0x00, 0x79, 0x00 }, + { 0x00, 0x79, 0x00 }, + { 0x00, 0x79, 0x00 }, +}; +static Color_RGB8 D_843858B8[] = { + { 0x1E, 0x00, 0x00 }, + { 0x1E, 0x00, 0x00 }, + { 0x1E, 0x00, 0x00 }, + { 0x1E, 0x00, 0x00 }, +}; +static Color_RGB8 D_843858C4[] = { + { 0x82, 0x00, 0x00 }, + { 0x82, 0x00, 0x00 }, + { 0x82, 0x00, 0x00 }, + { 0x82, 0x00, 0x00 }, +}; +static Color_RGB8 D_843858D0[] = { + { 0x65, 0x49, 0x11 }, + { 0x65, 0x49, 0x11 }, + { 0x65, 0x49, 0x11 }, + { 0x65, 0x49, 0x11 }, +}; +static Color_RGB8 D_843858DC[] = { + { 0x97, 0x89, 0x13 }, + { 0x97, 0x89, 0x13 }, + { 0x97, 0x89, 0x13 }, + { 0x97, 0x89, 0x13 }, +}; +static Gfx D_843858E8[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsDPSetTexturePersp(G_TP_NONE), + gsDPSetRenderMode(G_RM_TEX_EDGE, G_RM_TEX_EDGE2), + gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA), + gsSPClearGeometryMode(G_ZBUFFER | G_LIGHTING), + gsSPEndDisplayList(), +}; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84310334.s") +void func_8430FC10(void) { +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84310368.s") +void func_8430FC18(void) { +} + +void func_8430FC20(void) { +} + +void func_8430FC28(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + unk_D_80068BB0* temp_s1; + Vtx* temp_s2; + Mtx* sp84; + Vp* sp80; + + temp_s1 = func_8000648C(); + temp_s2 = func_80005F5C(sizeof(Vtx) * 4); + sp84 = func_80005F5C(sizeof(Mtx) * 1); + sp80 = func_80005F5C(sizeof(Vp) * 1); + func_8001E6E8(sp80, temp_s1->width, temp_s1->height); + + gSPViewport(gDisplayListHead++, (u32)sp80 & 0x1FFFFFFF); + + guOrtho(sp84, 0.5f, temp_s1->width - 0.5f, temp_s1->height - 0.5f, 0.5f, -2.0f, 2.0f, 1.0f); + + func_8001E680(&temp_s2[0], arg0, arg1, -1, 0, 0, 0, 0, 0, arg4); + func_8001E680(&temp_s2[1], arg0 + arg2, arg1, -1, 0, 0, 0, 0, 0, arg4); + func_8001E680(&temp_s2[2], arg0, arg1 + arg3, -1, 0, 0, 0, 0, 0, arg4); + func_8001E680(&temp_s2[3], arg0 + arg2, arg1 + arg3, -1, 0, 0, 0, 0, 0, arg4); + + gDPPipeSync(gDisplayListHead++); + gDPSetCycleType(gDisplayListHead++, G_CYC_1CYCLE); + gSPClearGeometryMode(gDisplayListHead++, G_ZBUFFER | G_LIGHTING); + gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE); + gDPSetRenderMode(gDisplayListHead++, G_RM_XLU_SURF, G_RM_XLU_SURF2); + gSPPerspNormalize(gDisplayListHead++, 0xFFFF); + gSPMatrix(gDisplayListHead++, (u32)sp84 & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, (u32)&D_8006F010 & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPVertex(gDisplayListHead++, (u32)temp_s2 & 0x1FFFFFFF, 4, 0); + gSP2Triangles(gDisplayListHead++, 0, 2, 3, 0, 0, 3, 1, 0); +} + +void func_8430FF8C(s32 arg0, s32 arg1, s32 arg2, s32 arg3, Color_RGB8* arg4, Color_RGB8* arg5) { + Vtx* temp_s2; + unk_D_80068BB0* temp_s1; + Mtx* sp7C; + Vp* sp78; + + temp_s1 = func_8000648C(); + temp_s2 = func_80005F5C(sizeof(Vtx) * 4); + sp7C = func_80005F5C(sizeof(Mtx) * 1); + sp78 = func_80005F5C(sizeof(Vp) * 1); + func_8001E6E8(sp78, temp_s1->width, temp_s1->height); + + gSPViewport(gDisplayListHead++, (u32)sp78 & 0x1FFFFFFF); + + guOrtho(sp7C, 0.5f, temp_s1->width - 0.5f, temp_s1->height - 0.5f, 0.5f, -2.0f, 2.0f, 1.0f); + func_8001E680(&temp_s2[0], arg0, arg1, -1, 0, 0, arg4->r, arg4->g, arg4->b, 0xFF); + func_8001E680(&temp_s2[1], arg0 + arg2, arg1, -1, 0, 0, arg4->r, arg4->g, arg4->b, 0xFF); + func_8001E680(&temp_s2[2], arg0, arg1 + arg3, -1, 0, 0, arg5->r, arg5->g, arg5->b, 0xFF); + func_8001E680(&temp_s2[3], arg0 + arg2, arg1 + arg3, -1, 0, 0, arg5->r, arg5->g, arg5->b, 0xFF); + + gDPPipeSync(gDisplayListHead++); + gDPSetCycleType(gDisplayListHead++, G_CYC_1CYCLE); + gSPClearGeometryMode(gDisplayListHead++, G_ZBUFFER | G_LIGHTING); + gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE); + gDPSetRenderMode(gDisplayListHead++, G_RM_OPA_SURF, G_RM_OPA_SURF2); + gSPPerspNormalize(gDisplayListHead++, 0xFFFF); + gSPMatrix(gDisplayListHead++, (u32)sp7C & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, (u32)&D_8006F010 & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPVertex(gDisplayListHead++, (u32)temp_s2 & 0x1FFFFFFF, 4, 0); + gSP2Triangles(gDisplayListHead++, 0, 2, 3, 0, 0, 3, 1, 0); +} + +void func_84310334(s32 arg0, s32 arg1, s32 arg2, s32 arg3, Color_RGB8* arg4, Color_RGB8* arg5) { + func_8430FF8C(arg0, arg1, arg2, arg3, arg4, arg5); +} + +void func_84310360(void) { +} + +void func_84310368(s32 arg0, s32 arg1, f32 arg2, s32 arg3) { + u8* spCC; + s32 temp_ft2 = ((arg3 - arg2) * 48.0f) / arg3; + s32 sp14 = 0x30 - temp_ft2; + + if ((arg2 * 48.0f) < (arg3 * 0xA)) { + spCC = D_1003EF0; + } else if ((arg2 * 48.0f) < (arg3 * 0x1B)) { + spCC = D_1003EC8; + } else { + spCC = D_1003EA0; + } + + gSPDisplayList(gDisplayListHead++, D_8006F518); + + gDPLoadTextureBlock(gDisplayListHead++, D_1003DB0, G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 5, 0, + G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + gSPTextureRectangle(gDisplayListHead++, arg0 << 2, arg1 << 2, (arg0 + 0x10) << 2, (arg1 + 5) << 2, G_TX_RENDERTILE, + 0, 0, 0x0400, 0x0400); + + gDPLoadTextureBlock(gDisplayListHead++, D_1003E50, G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 5, 0, G_TX_NOMIRROR | G_TX_CLAMP, + G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gSPTextureRectangle(gDisplayListHead++, (arg0 + 0x40) << 2, arg1 << 2, (arg0 + 0x41) << 2, (arg1 + 5) << 2, + G_TX_RENDERTILE, 0, 0, 0x0400, 0x0400); + + if (sp14 > 0) { + gDPLoadTextureBlock(gDisplayListHead++, spCC, G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 5, 0, G_TX_NOMIRROR | G_TX_CLAMP, + G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gSPTextureRectangle(gDisplayListHead++, (arg0 + 0x10) << 2, arg1 << 2, ((arg0 + sp14) + 0x10) << 2, + (arg1 + 5) << 2, G_TX_RENDERTILE, 0, 0, 0, 0x0400); + } + + if (temp_ft2 > 0) { + gDPLoadTextureBlock(gDisplayListHead++, D_1003E78, G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 5, 0, + G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + gSPTextureRectangle(gDisplayListHead++, ((arg0 + sp14) + 0x10) << 2, arg1 << 2, + ((arg0 + sp14) + temp_ft2 + 0x10) << 2, (arg1 + 5) << 2, G_TX_RENDERTILE, 0, 0, 0, 0x0400); + } + + gSPDisplayList(gDisplayListHead++, D_8006F630); +} void func_843109EC(void) { } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_843109F4.s") +void func_843109F4(s32 arg0, s32 arg1, s32 arg2) { + UNUSED s32 pad[2]; + s8* var_s2; + s8 sp58[2]; + u8** temp_s4; + + var_s2 = &sp58; + temp_s4 = Memmap_GetSegmentVaddr(D_300B870); + sprintf(sp58, "%d", arg2); + + gSPDisplayList(gDisplayListHead++, D_8006F518); + + if (arg2 >= 0x64) { + arg0 -= 2; + func_8001C6AC(arg0, arg1, 8, 6, temp_s4[sp58[0] - '0'], 8, 0); + arg0 += 8; + var_s2 = &sp58[1]; + } else { + func_8001C6AC(arg0, arg1, 4, 6, temp_s4[11], 4, 0); + arg0 += 5; + } + + while (*var_s2 != 0) { + func_8001C6AC(arg0, arg1, 8, 6, temp_s4[*var_s2 - '0'], 8, 0); + arg0 += 8; + var_s2++; + } + + gSPDisplayList(gDisplayListHead++, D_8006F630); +} + +void func_84310B9C(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { + UNUSED s32 pad[2]; + s8 sp70[7]; + UNUSED s32 pad2; + u8** temp_s2; + u8* var_v0; + s32 i; + + temp_s2 = Memmap_GetSegmentVaddr(D_300B870); + sprintf(sp70, "%3d/%3d", arg2, arg3); + + gSPDisplayList(gDisplayListHead++, D_8006F518); + + for (i = 0; i < sizeof(sp70); i++) { + switch (sp70[i]) { + case ' ': + var_v0 = NULL; + break; + + case '/': + var_v0 = temp_s2[10]; + break; + + default: + var_v0 = temp_s2[sp70[i] - '0']; + break; + } + + if (var_v0 != NULL) { + func_8001C6AC(arg0, arg1, 8, 6, var_v0, 8, 0); + } + + arg0 += 8; + } + + gSPDisplayList(gDisplayListHead++, D_8006F630); +} + +void func_84310CE4(s16 arg0, s16 arg1, s32 arg2, char* arg3, s32 arg4) { + func_84310334(arg0, arg1, 0x46, 0x11, &D_84385860[arg2], &D_84385870[arg2]); + func_8001F3F4(); + if (arg4 != 0) { + func_8001F324(0xFF, 0x64, 0xFF, 0xFF); + } + func_8001EBE0(2, 0); + func_8001F1E8((arg0 - (func_8001F5B0(2, 0, arg3) / 2)) + 0x23, arg1 + 2, arg3); + func_8001F444(); +} + +void func_84310DC4(s16 arg0, s16 arg1, s32 arg2, u8* arg3, s32 arg4, s32 arg5) { + s32 sp24; + s16 sp22; + s16 sp20; + + sp22 = COSS(arg4) * 255.0f; + sp20 = sp22; + if (sp22 < 0) { + sp20 = sp22 * -1; + } + + func_84310334(arg0, arg1, 0x46, 0x11, &D_84385860[arg2], &D_84385870[arg2]); + func_8001F3F4(); + func_8001EBE0(2, 0); + + if (arg5 != 0) { + func_8001F324(0xFF, 0x64, 0xFF, (s8)sp20); + } else { + func_8001F324(0xFF, 0xFF, 0xFF, (s8)sp20); + } + + if (sp22 > 0) { + sp24 = func_8001F5B0(2, 0, func_8002D7C0(NULL, 0, D_843900B0, 0xAA)) / 2; + func_8001F1E8((arg0 - sp24) + 0x23, arg1 + 2, func_8002D7C0(NULL, 0, D_843900B0, 0xAA)); + } else { + func_8001F1E8((arg0 - (func_8001F5B0(2, 0, arg3) / 2)) + 0x23, arg1 + 2, arg3); + } + + func_8001F444(); +} + +void func_84310FA4(unk_D_84390010* arg0, unk_D_800AE540_0004* arg1, s16 arg2, s16 arg3, s32 arg4, u16 arg5, s32 arg6) { + unk_D_84390010_654* ptr = &arg0->unk_654; + s32 var_t0 = 0; + s32 i; + + for (i = 0; i < 4; i++) { + if (ptr->unk_C1[i] == 1) { + var_t0 = 1; + } + } + + if (arg6 == 0) { + func_84310CE4(arg2, arg3, arg4, &arg1->unk_008, var_t0); + } else { + func_84310DC4(arg2, arg3, arg4, &arg1->unk_008, arg5, var_t0); + } +} + +void func_84311048(unk_D_84390010* arg0, unk_func_80026268_arg0* arg1, unk_D_84385790* arg2, s32 arg3, s32 arg4, + s32 arg5, s32 arg6, s32 arg7, s32 arg8, s32 arg9, s32 argA) { + s32 sp34; + s32 temp_a2; + + if (arg3 < 0) { + temp_a2 = arg5 + arg3; + if (temp_a2 < 0) { + func_8001F504(0, arg4, 0, arg6, arg7, arg8, arg9, argA); + } else { + func_8001F504(0, arg4, temp_a2, arg6, arg7, arg8, arg9, argA); + } + } else { + func_8001F504(arg3, arg4, arg5, arg6, arg7, arg8, arg9, argA); + } + + func_843109F4(arg3 + 3, arg4 + 0x10, arg1->unk_24); + func_84310368(arg3 + 2, arg4 + 0x19, D_843900A8[func_84307F00(arg0)], arg1->unk_26); + func_84310B9C(arg3 + 0xC, arg4 + 0x1F, arg1->unk_02, arg1->unk_26); + func_8001F3F4(); + func_8001EBE0(2, 0); + + sp34 = func_8001F5B0(2, 0, func_8430862C(arg0)) / 2; + func_8001F1E8((arg3 - sp34) + 0x23, arg4 + 2, func_8430862C(arg0)); + sp34 = func_8001F5B0(1, 0, func_8002D7C0(NULL, 0, D_843900BC, arg2->unk_00)); + + if (sp34 >= 0x28) { + func_8001EBE0(1, -1); + sp34 = arg3 + 0x1A; + } else { + func_8001EBE0(1, 0); + sp34 = (arg3 - (sp34 / 2)) + 0x2C; + } + + func_8001F324(arg2->unk_04.r, arg2->unk_04.g, arg2->unk_04.b, 0xFF); + func_8001F1E8(sp34, arg4 + 0xE, func_8002D7C0(NULL, 0, D_843900BC, arg2->unk_00)); + func_8001F444(); +} + +s32 func_843112C4(s32 arg0, s32 arg1, s32 arg2, s32 arg3, u8* arg4) { + UNUSED s32 pad[4]; + s32 sp2C; + s32 sp28; + + if (arg2 < 9) { + sp2C = 0x400; + } else { + sp2C = 0; + } + + // clang-format off + if (arg3 < 9) { sp28 = 0x400; } else { sp28 = 0; } + // clang-format on + + gDPLoadTextureBlock(gDisplayListHead++, arg4, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 8, 0, G_TX_NOMIRROR | G_TX_CLAMP, + G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + + func_8001C4E4(arg0, arg1, (arg0 + arg2) - 1, (arg1 + arg3) - 1, sp2C, sp28, 0); +} + +void func_84311420(void) { +} + +void func_84311428(s16 arg0, s16 arg1, s16 arg2, s16 arg3) { + s32 i; + + gSPDisplayList(gDisplayListHead++, D_8006F518); + + func_843112C4(arg0, arg1 - 1, 8, 8, D_3008480); + func_843112C4(arg0, (arg1 + arg3) - 6, 8, 8, D_3008400); + func_843112C4((arg0 + arg2) - 6, arg1 - 1, 8, 8, D_3008600); + func_843112C4((arg0 + arg2) - 6, (arg1 + arg3) - 6, 8, 8, D_3008580); + + for (i = 0; i < arg3 / 8; i++) { + if ((arg3 - 4) >= (6 + i * 8)) { + func_843112C4((arg0 + arg2) - 6, arg1 + (i * 8) + 4, 8, 8, D_3008500); + } + } + + for (i = 0; i < arg3 / 8; i++) { + if ((arg3 - 4) >= (6 + i * 8)) { + func_843112C4(arg0, arg1 + (i * 8) + 4, 8, 8, D_3008380); + } + } + + for (i = 0; i < arg2 / 8; i++) { + if ((arg2 - 4) >= (6 + i * 8)) { + func_843112C4(arg0 + (i * 8) + 3, arg1 - 1, 8, 8, D_3008700); + } + + if ((arg2 - 4) >= (6 + i * 8)) { + func_843112C4(arg0 + (i * 8) + 3, (arg1 + arg3) - 6, 8, 8, D_3008680); + } + } + + gSPDisplayList(gDisplayListHead++, D_8006F630); +} + +void func_843116D8(s16 arg0, s16 arg1) { + Color_RGB8 sp54[] = { + { 0xB4, 0x00, 0x00 }, + { 0xCC, 0x8F, 0x00 }, + { 0x00, 0xB4, 0x00 }, + { 0x00, 0x00, 0x00 }, + }; + char sp44[16]; + UNUSED s32 pad[4]; + s32 var_v1; + s32 temp_t0; + + temp_t0 = ((s32)((D_84390124 / 30.0f) / 60.0f) * 0x3C) + ((s32)(D_84390124 / 30.0f) % 60); + if (temp_t0 >= 0xB) { + var_v1 = 2; + } else if (temp_t0 >= 4) { + var_v1 = 1; + } else { + var_v1 = 0; + } + + func_8001F504(arg0 - 1, arg1, 0x14, 0xD, sp54[var_v1].r, sp54[var_v1].g, sp54[var_v1].b, 0xBE); + func_84311428(arg0 - 2, arg1 - 1, 0x14, 0xC); + + sprintf(sp44, "%02d", temp_t0); + + func_8001F3F4(); + func_8001F324(0xFF, 0xFF, 0xFF, 0xFF); + func_8001EBE0(1, 0); + func_8001F1E8(arg0 + 3, arg1, sp44); + func_8001F444(); + func_8430FC28(arg0 - 3, arg1 - 3, 0x19, 0x12, 0); +} + +void func_843118A8(s16 arg0, s16 arg1) { + char sp40[16]; + f32 sp3C = D_84390128 / 30.0f; + UNUSED s32 pad[2]; + + func_8001F504(arg0, arg1, 0x27, 0xC, 0, 0, 0, 0x5A); + func_84311428(arg0 - 2, arg1 - 1, 0x27, 0xC); + func_8001F3F4(); + func_8001EBE0(2, 0); + func_8001F324(0xFF, 0xFF, 0xFF, 0xFF); + sprintf(sp40, "%02d", (s32)(sp3C / 60.0f)); + func_8001EBE0(1, 0); + func_8001F1E8(arg0 + 3, arg1, sp40); + func_8001F1E8(arg0 + 0x10, arg1, ":"); + sprintf(sp40, "%02d", (s32)sp3C % 60); + func_8001EBE0(1, 0); + func_8001F1E8(arg0 + 0x17, arg1, sp40); + func_8001F444(); + func_8430FC28(arg0 - 3, arg1 - 3, 0x2C, 0x11, 0); +} + +void func_84311A38(unk_D_84390010* arg0, s16 arg1, s16 arg2) { + u8* sp74[] = { D_3006170, D_30061D0, D_3006230 }; + UNUSED s32 pad; + s32 i; + s32 j; + s32 var_v0_2; + + gSPDisplayList(gDisplayListHead++, D_8006F518); + + if (arg0 == D_84390010[0]) { + if (arg0->unk_720->unk_01 == 1) { + for (i = 0; i < arg0->unk_720->unk_08[0]->unk_002; i++) { + if (arg0->unk_720->unk_08[0]->unk_01C[i].unk_02 == 0) { + var_v0_2 = 2; + } else if (arg0->unk_720->unk_08[0]->unk_01C[i].unk_05 != 0) { + var_v0_2 = 1; + } else { + var_v0_2 = 0; + } + func_8001C6AC(arg1 + i * 7, arg2, 8, 6, sp74[var_v0_2], 8, 0); + } + } else { + for (i = 0; i < arg0->unk_720->unk_08[0]->unk_002; i++) { + if (arg0->unk_720->unk_08[0]->unk_01C[i].unk_02 == 0) { + var_v0_2 = 2; + } else if (arg0->unk_720->unk_08[0]->unk_01C[i].unk_05 != 0) { + var_v0_2 = 1; + } else { + var_v0_2 = 0; + } + func_8001C6AC(arg1 + i * 7, arg2, 8, 6, sp74[var_v0_2], 8, 0); + } + + for (j = 0; j < arg0->unk_720->unk_08[1]->unk_002; j++) { + if (arg0->unk_720->unk_08[1]->unk_01C[j].unk_02 == 0) { + var_v0_2 = 2; + } else if (arg0->unk_720->unk_08[1]->unk_01C[j].unk_05 != 0) { + var_v0_2 = 1; + } else { + var_v0_2 = 0; + } + func_8001C6AC(arg1 + i * 7 + j * 7, arg2, 8, 6, sp74[var_v0_2], 8, 0); + } + } + } + + if (arg0 == D_84390010[1]) { + if (arg0->unk_720->unk_01 == 1) { + for (i = 0; i < arg0->unk_720->unk_08[0]->unk_002; i++) { + if (arg0->unk_720->unk_08[0]->unk_01C[i].unk_02 == 0) { + var_v0_2 = 2; + } else if (arg0->unk_720->unk_08[0]->unk_01C[i].unk_05 != 0) { + var_v0_2 = 1; + } else { + var_v0_2 = 0; + } + func_8001C6AC(arg1 - i * 7, arg2, 8, 6, sp74[var_v0_2], 8, 0); + } + } else { + for (i = 0; i < arg0->unk_720->unk_08[0]->unk_002; i++) { + if (arg0->unk_720->unk_08[0]->unk_01C[i].unk_02 == 0) { + var_v0_2 = 2; + } else if (arg0->unk_720->unk_08[0]->unk_01C[i].unk_05 != 0) { + var_v0_2 = 1; + } else { + var_v0_2 = 0; + } + func_8001C6AC(arg1 - i * 7, arg2, 8, 6, sp74[var_v0_2], 8, 0); + } + + for (j = 0; j < arg0->unk_720->unk_08[1]->unk_002; j++) { + if (arg0->unk_720->unk_08[1]->unk_01C[j].unk_02 == 0) { + var_v0_2 = 2; + } else if (arg0->unk_720->unk_08[1]->unk_01C[j].unk_05 != 0) { + var_v0_2 = 1; + } else { + var_v0_2 = 0; + } + func_8001C6AC(arg1 - i * 7 - j * 7, arg2, 8, 6, sp74[var_v0_2], 8, 0); + } + } + } + + gSPDisplayList(gDisplayListHead++, D_8006F630); +} + +void func_84311F30(unk_D_84390010* arg0, s16 arg1, s16 arg2, u16 arg3, s32 arg4) { + UNUSED s32 pad[3]; + unk_D_800AE540_0004* sp80; + unk_func_80026268_arg0* sp7C; + Color_RGB8* temp_v0_2; + u32 var_v1; + + sp80 = arg0->unk_720->unk_08[arg0->unk_728.unk_16C]; + sp7C = &arg0->unk_720->unk_08[arg0->unk_728.unk_16C]->unk_01C[arg0->unk_654.unk_08]; + + if (sp7C->unk_02 == 0) { + var_v1 = 1; + } else { + var_v1 = func_800219A0(sp7C->unk_05); + } + + temp_v0_2 = &D_84385860[sp80->unk_001]; + func_84311048(arg0, sp7C, &D_84385790[var_v1], arg1 + 1, arg2 + 0x12, 0x46, 0x28, temp_v0_2->r, temp_v0_2->g, + temp_v0_2->b, 0xB2); + func_84310FA4(arg0, sp80, arg1 + 1, arg2 + 1, sp80->unk_001, arg3, arg4); + + gSPDisplayList(gDisplayListHead++, D_8006F518); + + func_843112C4(arg1, arg2, 8, 8, D_3008480); + func_843112C4(arg1, arg2 + 0xF, 8, 8, D_3008200); + func_843112C4(arg1, arg2 + 0x36, 8, 8, D_3008200); + func_843112C4(arg1 + 0x41, arg2, 8, 8, D_3008600); + func_843112C4(arg1 + 0x41, arg2 + 0xF, 8, 8, D_3008280); + func_843112C4(arg1 + 0x41, arg2 + 0x33, 8, 8, D_3008580); + func_843112C4(arg1 + 8, arg2, 8, 8, D_3008700); + func_843112C4(arg1 + 0x10, arg2, 8, 8, D_3008700); + func_843112C4(arg1 + 0x18, arg2, 8, 8, D_3008700); + func_843112C4(arg1 + 0x20, arg2, 8, 8, D_3008700); + func_843112C4(arg1 + 0x28, arg2, 8, 8, D_3008700); + func_843112C4(arg1 + 0x30, arg2, 8, 8, D_3008700); + func_843112C4(arg1 + 0x38, arg2, 8, 8, D_3008700); + func_843112C4(arg1 + 0x39, arg2, 8, 8, D_3008700); + func_843112C4(arg1 + 8, arg2 + 0x12, 8, 8, D_3008700); + func_843112C4(arg1 + 0x10, arg2 + 0x12, 8, 8, D_3008700); + func_843112C4(arg1 + 0x18, arg2 + 0x12, 8, 8, D_3008700); + func_843112C4(arg1 + 0x20, arg2 + 0x12, 8, 8, D_3008700); + func_843112C4(arg1 + 0x28, arg2 + 0x12, 8, 8, D_3008700); + func_843112C4(arg1 + 0x30, arg2 + 0x12, 8, 8, D_3008700); + func_843112C4(arg1 + 0x38, arg2 + 0x12, 8, 8, D_3008700); + func_843112C4(arg1 + 0x39, arg2 + 0x12, 8, 8, D_3008700); + func_843112C4(arg1 + 8, arg2 + 0x33, 8, 8, D_3008680); + func_843112C4(arg1 + 0x10, arg2 + 0x33, 8, 8, D_3008680); + func_843112C4(arg1 + 0x18, arg2 + 0x33, 8, 8, D_3008680); + func_843112C4(arg1 + 0x20, arg2 + 0x33, 8, 8, D_3008680); + func_843112C4(arg1 + 0x28, arg2 + 0x33, 8, 8, D_3008680); + func_843112C4(arg1 + 0x30, arg2 + 0x33, 8, 8, D_3008680); + func_843112C4(arg1 + 0x38, arg2 + 0x33, 8, 8, D_3008680); + func_843112C4(arg1 + 0x39, arg2 + 0x33, 8, 8, D_3008680); + func_843112C4(arg1, arg2 + 8, 8, 8, D_3008380); + func_843112C4(arg1, arg2 + 0x15, 8, 8, D_3008380); + func_843112C4(arg1, arg2 + 0x1D, 8, 8, D_3008380); + func_843112C4(arg1, arg2 + 0x25, 8, 8, D_3008380); + func_843112C4(arg1, arg2 + 0x2D, 8, 8, D_3008380); + func_843112C4(arg1, arg2 + 0x2E, 8, 8, D_3008380); + func_843112C4(arg1 + 0x41, arg2 + 8, 8, 8, D_3008500); + func_843112C4(arg1 + 0x41, arg2 + 0x15, 8, 8, D_3008500); + func_843112C4(arg1 + 0x41, arg2 + 0x1D, 8, 8, D_3008500); + func_843112C4(arg1 + 0x41, arg2 + 0x25, 8, 8, D_3008500); + func_843112C4(arg1 + 0x41, arg2 + 0x2D, 8, 8, D_3008500); + func_843112C4(arg1 + 0x41, arg2 + 0x2F, 8, 8, D_3008500); + func_843112C4(arg1, arg2 + 0x3D, 8, 8, D_3008380); + func_843112C4(arg1, arg2 + 0x45, 8, 8, D_3008380); + func_843112C4(arg1, arg2 + 0x4D, 8, 8, D_3008380); + func_843112C4(arg1, arg2 + 0x55, 8, 8, D_3008380); + func_843112C4(arg1 + 0x21, arg2 + 0x3A, 8, 8, D_3008500); + func_843112C4(arg1 + 0x21, arg2 + 0x3D, 8, 8, D_3008500); + func_843112C4(arg1 + 0x21, arg2 + 0x45, 8, 8, D_3008500); + func_843112C4(arg1 + 0x21, arg2 + 0x4D, 8, 8, D_3008500); + func_843112C4(arg1 + 0x21, arg2 + 0x55, 8, 8, D_3008500); + func_843112C4(arg1 + 0x21, arg2 + 0x59, 8, 8, D_3008580); + func_843112C4(arg1, arg2 + 0x59, 8, 8, D_3008400); + func_843112C4(arg1 + 4, arg2 + 0x59, 8, 8, D_3008680); + func_843112C4(arg1 + 0xC, arg2 + 0x59, 8, 8, D_3008680); + func_843112C4(arg1 + 0x14, arg2 + 0x59, 8, 8, D_3008680); + func_843112C4(arg1 + 0x1C, arg2 + 0x59, 8, 8, D_3008680); + + gSPDisplayList(gDisplayListHead++, D_8006F630); + + func_8430FC28(arg1 - 3, arg2 - 2, 0x4E, 0x3F, 0); + func_8430FC28(arg1 - 3, arg2 + 0x3A, 0x2D, 0x29, 0); + func_84311A38(arg0, arg1, arg2 + 0x62); +} + +void func_843128A0(unk_D_84390010* arg0, s16 arg1, s16 arg2, u16 arg3, s32 arg4) { + UNUSED s32 pad[3]; + unk_D_800AE540_0004* sp80; + unk_func_80026268_arg0* sp7C; + Color_RGB8* temp_v0; + u32 var_v1; + + sp80 = arg0->unk_720->unk_08[arg0->unk_728.unk_16C]; + sp7C = &arg0->unk_720->unk_08[arg0->unk_728.unk_16C]->unk_01C[arg0->unk_654.unk_08]; + + if (sp7C->unk_02 == 0) { + var_v1 = 1; + } else { + var_v1 = func_800219A0(sp7C->unk_05); + } + + temp_v0 = &D_84385860[sp80->unk_001]; + func_84311048(arg0, sp7C, &D_84385790[var_v1], arg1, arg2 + 0x28, 0x46, 0x28, temp_v0->r, temp_v0->g, temp_v0->b, + 0xB2); + func_84310FA4(arg0, sp80, arg1, arg2 + 0x50, sp80->unk_001, arg3, arg4); + + gSPDisplayList(gDisplayListHead++, D_8006F518); + + func_843112C4(arg1, arg2 + 0x4C, 8, 8, D_3008200); + func_843112C4(arg1, arg2 + 0x5B, 8, 8, D_3008400); + func_843112C4(arg1, arg2 + 0x27, 8, 8, D_3008480); + func_843112C4(arg1 + 0x3F, arg2 + 0x24, 8, 8, D_3008280); + func_843112C4(arg1 + 0x3F, arg2 + 0x4C, 8, 8, D_3008280); + func_843112C4(arg1 + 0x3F, arg2 + 0x5B, 8, 8, D_3008580); + func_843112C4(arg1 + 7, arg2 + 0x27, 8, 8, D_3008700); + func_843112C4(arg1 + 8, arg2 + 0x27, 8, 8, D_3008700); + func_843112C4(arg1 + 0x10, arg2 + 0x27, 8, 8, D_3008700); + func_843112C4(arg1 + 0x18, arg2 + 0x27, 8, 8, D_3008700); + func_843112C4(arg1 + 0x20, arg2 + 0x27, 8, 8, D_3008700); + func_843112C4(arg1 + 0x28, arg2 + 0x27, 8, 8, D_3008700); + func_843112C4(arg1 + 0x30, arg2 + 0x27, 8, 8, D_3008700); + func_843112C4(arg1 + 0x38, arg2 + 0x27, 8, 8, D_3008700); + func_843112C4(arg1 + 7, arg2 + 0x4F, 8, 8, D_3008700); + func_843112C4(arg1 + 8, arg2 + 0x4F, 8, 8, D_3008700); + func_843112C4(arg1 + 0x10, arg2 + 0x4F, 8, 8, D_3008700); + func_843112C4(arg1 + 0x18, arg2 + 0x4F, 8, 8, D_3008700); + func_843112C4(arg1 + 0x20, arg2 + 0x4F, 8, 8, D_3008700); + func_843112C4(arg1 + 0x28, arg2 + 0x4F, 8, 8, D_3008700); + func_843112C4(arg1 + 0x30, arg2 + 0x4F, 8, 8, D_3008700); + func_843112C4(arg1 + 0x38, arg2 + 0x4F, 8, 8, D_3008700); + func_843112C4(arg1 + 7, arg2 + 0x5B, 8, 8, D_3008680); + func_843112C4(arg1 + 8, arg2 + 0x5B, 8, 8, D_3008680); + func_843112C4(arg1 + 0x10, arg2 + 0x5B, 8, 8, D_3008680); + func_843112C4(arg1 + 0x18, arg2 + 0x5B, 8, 8, D_3008680); + func_843112C4(arg1 + 0x20, arg2 + 0x5B, 8, 8, D_3008680); + func_843112C4(arg1 + 0x28, arg2 + 0x5B, 8, 8, D_3008680); + func_843112C4(arg1 + 0x30, arg2 + 0x5B, 8, 8, D_3008680); + func_843112C4(arg1 + 0x38, arg2 + 0x5B, 8, 8, D_3008680); + func_843112C4(arg1, arg2 + 0x2C, 8, 8, D_3008380); + func_843112C4(arg1, arg2 + 0x34, 8, 8, D_3008380); + func_843112C4(arg1, arg2 + 0x3C, 8, 8, D_3008380); + func_843112C4(arg1, arg2 + 0x44, 8, 8, D_3008380); + func_843112C4(arg1, arg2 + 0x52, 8, 8, D_3008380); + func_843112C4(arg1, arg2 + 0x53, 8, 8, D_3008380); + func_843112C4(arg1 + 0x3F, arg2 + 0x2C, 8, 8, D_3008500); + func_843112C4(arg1 + 0x3F, arg2 + 0x34, 8, 8, D_3008500); + func_843112C4(arg1 + 0x3F, arg2 + 0x3C, 8, 8, D_3008500); + func_843112C4(arg1 + 0x3F, arg2 + 0x44, 8, 8, D_3008500); + func_843112C4(arg1 + 0x3F, arg2 + 0x52, 8, 8, D_3008500); + func_843112C4(arg1 + 0x3F, arg2 + 0x53, 8, 8, D_3008500); + func_843112C4(arg1 + 0x3F, arg2, 8, 8, D_3008600); + func_843112C4(arg1 + 0x1E, arg2, 8, 8, D_3008480); + func_843112C4(arg1 + 0x3F, arg2 + 8, 8, 8, D_3008500); + func_843112C4(arg1 + 0x3F, arg2 + 0x10, 8, 8, D_3008500); + func_843112C4(arg1 + 0x3F, arg2 + 0x18, 8, 8, D_3008500); + func_843112C4(arg1 + 0x3F, arg2 + 0x20, 8, 8, D_3008500); + func_843112C4(arg1 + 0x1E, arg2 + 8, 8, 8, D_3008380); + func_843112C4(arg1 + 0x1E, arg2 + 0x10, 8, 8, D_3008380); + func_843112C4(arg1 + 0x1E, arg2 + 0x18, 8, 8, D_3008380); + func_843112C4(arg1 + 0x1E, arg2 + 0x1F, 8, 8, D_3008380); + func_843112C4(arg1 + 0x20, arg2, 8, 8, D_3008700); + func_843112C4(arg1 + 0x28, arg2, 8, 8, D_3008700); + func_843112C4(arg1 + 0x30, arg2, 8, 8, D_3008700); + func_843112C4(arg1 + 0x37, arg2, 8, 8, D_3008700); + + gSPDisplayList(gDisplayListHead++, D_8006F630); + + func_8430FC28(arg1 + 0x1B, arg2 - 2, 0x2F, 0x2A, 0); + func_8430FC28(arg1 - 4, arg2 + 0x26, 0x4D, 0x3D, 0); + func_84311A38(arg0, arg1 + 0x41, arg2 - 7); +} + +void func_84313148(unk_D_84390010* arg0, s16 arg1, s16 arg2, s32 arg3) { + UNUSED s32 pad[2]; + + func_84310334(arg1 + 1, arg2 + 1, 0xC6, 0x10, &D_84385860[arg3], &D_84385870[arg3]); + func_84311428(arg1, arg2, 0xC6, 0x10); + + gSPDisplayList(gDisplayListHead++, D_8006F5A0); + + func_8001D560(arg1 + 7, arg2 + 3, 0x10, 0xC, D_3008C00, D_3008D80, 0x10, 0x100000); + func_8001D560(arg1 + 0x46, arg2 + 3, 0x10, 0xC, D_3008E40, D_3008FC0, 0x10, 0x100000); + func_8001D560(arg1 + 0x86, arg2 + 3, 0x10, 0xC, D_3009080, D_3009200, 0x10, 0x100000); + + gSPDisplayList(gDisplayListHead++, D_8006F630); + + func_8001F3F4(); + func_8001EBE0(1, 0); + func_8001F1E8(arg1 + 0x18, arg2 + 3, func_8002D7C0(NULL, 0, D_843900B0, 0x9E)); + func_8001F1E8(arg1 + 0x58, arg2 + 3, func_8002D7C0(NULL, 0, D_843900B0, 0x9F)); + func_8001F1E8(arg1 + 0x98, arg2 + 3, func_8002D7C0(NULL, 0, D_843900B0, 0xA0)); + func_8001F444(); + func_8430FC28(arg1 - 2, arg2 - 2, 0xCC, 0x16, 0); +} + +void func_843133B4(unk_D_84390010* arg0, s16 arg1, s16 arg2, s32 arg3) { + UNUSED s32 pad[2]; + + func_84310334(arg1, arg2, 0x7D, 0x10, &D_84385860[arg3], &D_84385870[arg3]); + func_84311428(arg1, arg2, 0x7D, 0x10); + + gSPDisplayList(gDisplayListHead++, D_8006F5A0); + + func_8001D560(arg1 + 7, arg2 + 3, 0x10, 0xC, D_3008780, D_3008900, 0x10, 0x100000); + func_8001D560(arg1 + 0x40, arg2 + 3, 0x10, 0xC, D_30089C0, D_3008B40, 0x10, 0x100000); + + gSPDisplayList(gDisplayListHead++, D_8006F630); + + func_8001F3F4(); + func_8001EBE0(1, 0); + func_8001F1E8(arg1 + 0x18, arg2 + 3, func_8002D7C0(NULL, 0, D_843900B0, 0xA9)); + func_8001F1E8(arg1 + 0x51, arg2 + 3, func_8002D7C0(NULL, 0, D_843900B0, 0xA8)); + func_8001F444(); + func_8430FC28(arg1 - 2, arg2 - 2, 0x83, 0x16, 0); +} + +void func_843135B8(unk_D_84390010* arg0, s16 arg1, s16 arg2, s32 arg3) { + s32 pad[2]; + + func_84310334(arg1 + 1, arg2 + 1, 0x47, 0x10, &D_84385860[arg3], &D_84385870[arg3]); + func_84311428(arg1, arg2, 0x47, 0x10); + + gSPDisplayList(gDisplayListHead++, D_8006F5A0); + + func_8001D560(arg1 + 7, arg2 + 3, 0x10, 0xC, D_30089C0, D_3008B40, 0x10, 0x100000); + + gSPDisplayList(gDisplayListHead++, D_8006F630); + + func_8001F3F4(); + func_8001EBE0(1, 0); + func_8001F1E8(arg1 + 0x18, arg2 + 3, func_8002D7C0(NULL, 0, D_843900B0, 0xA8)); + func_8001F444(); + func_8430FC28(arg1 - 2, arg2 - 2, 0x4A, 0x16, 0); +} + +void func_84313750(s32 arg0, s32 arg1, char* arg2) { + func_8001F1E8(arg0 - (strlen(arg2) * 6), arg1, arg2); +} + +s32 func_8431379C(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { + UNUSED s32 pad[2]; + s8 sp70[7]; + s32 i; + u8** temp_s2; + u8* var_v1; + + temp_s2 = Memmap_GetSegmentVaddr(D_300B870); + sprintf(sp70, "%3d/%3d", arg2 & 0x3F, arg3); + + gSPDisplayList(gDisplayListHead++, D_8006F518); + + for (i = 0; i < 7; i++) { + s32 c = sp70[i]; + + switch (c) { + case ' ': + var_v1 = NULL; + break; + + case '/': + var_v1 = temp_s2[10]; + break; + + default: + if ((c >= 0x30) && (c < 0x3A)) { + var_v1 = temp_s2[c - '0']; + } else { + var_v1 = NULL; + } + break; + } + + if (var_v1 != NULL) { + func_8001C6AC(arg0, arg1, 8, 6, var_v1, 8, 0); + arg0 += 8; + } + } + + gSPDisplayList(gDisplayListHead++, D_8006F630); + + return arg0; +} + +s32 func_84313908(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { + UNUSED s32 pad[2]; + s8 sp70[7]; + s32 i; + u8** temp_s2; + u8* var_v1; + + temp_s2 = Memmap_GetSegmentVaddr(D_300B870); + sprintf(sp70, "%3d/%3d", arg2 & 0x3F, arg3); + + gSPDisplayList(gDisplayListHead++, D_8006F518); + + for (i = 7; i > 0; i--) { + s32 c = sp70[i]; + + switch (c) { + case ' ': + var_v1 = NULL; + break; + + case '/': + var_v1 = temp_s2[10]; + break; + + default: + if ((c >= 0x30) && (c < 0x3A)) { + var_v1 = temp_s2[c - '0']; + } else { + var_v1 = NULL; + } + break; + } + + if (var_v1 != NULL) { + func_8001C6AC(arg0, arg1, 8, 6, var_v1, 8, 0); + arg0 -= 8; + } + } + + gSPDisplayList(gDisplayListHead++, D_8006F630); + + return arg0; +} + +void func_84313A74(unk_D_84390010* arg0, s16 arg1, s16 arg2, s32 arg3) { + s32 i; + s32 sp64[] = { 0, 0, 0, 0 }; + u8 sp60[4]; + unk_D_800FCB18* temp_s0; + unk_func_80026268_arg0* sp58; + UNUSED s32 pad; + + sp58 = &arg0->unk_720->unk_08[arg0->unk_728.unk_16C]->unk_01C[arg0->unk_654.unk_08]; + temp_s0 = &arg0->unk_654.unk_38; + + func_84310334(arg1 + 1, arg2 + 1, 0xC7, 0x38, &D_84385860[arg3], &D_84385870[arg3]); + func_84311428(arg1, arg2, 0xC7, 0x38); + + for (i = 0; i < 4; i++) { + if (temp_s0->unk_4E & 8) { + sp60[i] = D_80072B00[temp_s0->unk_1F[i] - 1].unk_05 / 5; + if (sp60[i] >= 8) { + sp60[i] = 7; + } + sp60[i] = D_80072B00[temp_s0->unk_1F[i] - 1].unk_05 + (((temp_s0->unk_32[i] & 0xC0) >> 6) * sp60[i]); + } else { + sp60[i] = D_80072B00[sp58->unk_09[i] - 1].unk_05 / 5; + if (sp60[i] >= 8) { + sp60[i] = 7; + } + sp60[i] = D_80072B00[sp58->unk_09[i] - 1].unk_05 + (((sp58->unk_20[i] & 0xC0) >> 6) * sp60[i]); + } + } + + if (temp_s0->unk_4E & 8) { + if ((temp_s0->unk_1F[0] != 0) && (temp_s0->unk_1F[0] < 0xA6)) { + sp64[0] = func_84313908(arg1 + 0x52, arg2 + 0xF, temp_s0->unk_32[0], sp60[0]); + } + + if ((temp_s0->unk_1F[1] != 0) && (temp_s0->unk_1F[1] < 0xA6)) { + sp64[1] = func_8431379C(arg1 + 0x7C, arg2 + 0x1C, temp_s0->unk_32[1], sp60[1]); + } + + if ((temp_s0->unk_1F[2] != 0) && (temp_s0->unk_1F[2] < 0xA6)) { + sp64[2] = func_8431379C(arg1 + 0x70, arg2 + 0x30, temp_s0->unk_32[2], sp60[2]); + } + + if ((temp_s0->unk_1F[3] != 0) && (temp_s0->unk_1F[3] < 0xA6)) { + sp64[3] = func_84313908(arg1 + 0x44, arg2 + 0x23, temp_s0->unk_32[3], sp60[3]); + } + } else { + if ((sp58->unk_09[0] != 0) && (sp58->unk_09[0] < 0xA6)) { + sp64[0] = func_84313908(arg1 + 0x52, arg2 + 0xF, sp58->unk_20[0], sp60[0]); + } + + if ((sp58->unk_09[1] != 0) && (sp58->unk_09[1] < 0xA6)) { + sp64[1] = func_8431379C(arg1 + 0x7C, arg2 + 0x1C, sp58->unk_20[1], sp60[1]); + } + + if ((sp58->unk_09[2] != 0) && (sp58->unk_09[2] < 0xA6)) { + sp64[2] = func_8431379C(arg1 + 0x70, arg2 + 0x30, sp58->unk_20[2], sp60[2]); + } + + if ((sp58->unk_09[3] != 0) && (sp58->unk_09[3] < 0xA6)) { + sp64[3] = func_84313908(arg1 + 0x44, arg2 + 0x23, sp58->unk_20[3], sp60[3]); + } + } + + gSPDisplayList(gDisplayListHead++, D_8006F5A0); + + func_8001D560(arg1 + 0x5D, arg2 + 6, 0x10, 0xE, &D_3006A70, &D_3006C30, 0x10, 0x100000); + func_8001D560(arg1 + 0x6C, arg2 + 0x16, 0x10, 0xE, &D_3006290, &D_3006450, 0x10, 0x100000); + func_8001D560(arg1 + 0x5D, arg2 + 0x26, 0x10, 0xE, &D_3006530, &D_30066F0, 0x10, 0x100000); + func_8001D560(arg1 + 0x4E, arg2 + 0x16, 0x10, 0xE, &D_30067D0, &D_3006990, 0x10, 0x100000); + + gSPDisplayList(gDisplayListHead++, D_8006F630); + gSPDisplayList(gDisplayListHead++, D_8006F518); + + if (temp_s0->unk_4E & 8) { + if ((temp_s0->unk_1F[0] != 0) && (temp_s0->unk_1F[0] < 0xA6)) { + func_8001C6AC(sp64[0] - 0x19, arg2 + 0xE, 0x20, 9, D_843857C8[D_80072B00[temp_s0->unk_1F[0] - 1].unk_03], + 0x20, 0); + } + + if ((temp_s0->unk_1F[1] != 0) && (temp_s0->unk_1F[1] < 0xA6)) { + func_8001C6AC(sp64[1], arg2 + 0x1B, 0x20, 9, D_843857C8[D_80072B00[temp_s0->unk_1F[1] - 1].unk_03], 0x20, + 0); + } + + if ((temp_s0->unk_1F[2] != 0) && (temp_s0->unk_1F[2] < 0xA6)) { + func_8001C6AC(sp64[2], arg2 + 0x2F, 0x20, 9, D_843857C8[D_80072B00[temp_s0->unk_1F[2] - 1].unk_03], 0x20, + 0); + } + + if ((temp_s0->unk_1F[3] != 0) && (temp_s0->unk_1F[3] < 0xA6)) { + func_8001C6AC(sp64[3] - 0x18, arg2 + 0x22, 0x20, 9, D_843857C8[D_80072B00[temp_s0->unk_1F[3] - 1].unk_03], + 0x20, 0); + } + } else { + if ((temp_s0->unk_1F[0] != 0) && (temp_s0->unk_1F[0] < 0xA6)) { + func_8001C6AC(sp64[0] - 0x19, arg2 + 0xE, 0x20, 9, D_843857C8[D_80072B00[temp_s0->unk_1F[0] - 1].unk_03], + 0x20, 0); + } + + if ((temp_s0->unk_1F[1] != 0) && (temp_s0->unk_1F[1] < 0xA6)) { + func_8001C6AC(sp64[1], arg2 + 0x1B, 0x20, 9, D_843857C8[D_80072B00[temp_s0->unk_1F[1] - 1].unk_03], 0x20, + 0); + } + + if ((temp_s0->unk_1F[2] != 0) && (temp_s0->unk_1F[2] < 0xA6)) { + func_8001C6AC(sp64[2], arg2 + 0x2F, 0x20, 9, D_843857C8[D_80072B00[temp_s0->unk_1F[2] - 1].unk_03], 0x20, + 0); + } + + if ((temp_s0->unk_1F[3] != 0) && (temp_s0->unk_1F[3] < 0xA6)) { + func_8001C6AC(sp64[3] - 0x18, arg2 + 0x22, 0x20, 9, D_843857C8[D_80072B00[temp_s0->unk_1F[3] - 1].unk_03], + 0x20, 0); + } + } + + gSPDisplayList(gDisplayListHead++, D_8006F630); + + func_8001F3F4(); + func_8001EBE0(1, 0); + + if (temp_s0->unk_4E & 8) { + if ((temp_s0->unk_1F[0] != 0) && (temp_s0->unk_1F[0] < 0xA6)) { + if (arg0->unk_654.unk_C1[0] == 1) { + func_8001F324(0xFF, 0x64, 0xFF, 0xFF); + } else { + func_8001F324(0xFF, 0xFF, 0xFF, 0xFF); + } + func_84313750(arg1 + 0x5A, arg2 + 4, func_8002D7C0(NULL, 0, D_843900B8, temp_s0->unk_1F[0] - 1)); + } + + if ((temp_s0->unk_1F[1] != 0) && (temp_s0->unk_1F[1] < 0xA6)) { + if (arg0->unk_654.unk_C1[1] == 1) { + func_8001F324(0xFF, 0x64, 0xFF, 0xFF); + } else { + func_8001F324(0xFF, 0xFF, 0xFF, 0xFF); + } + func_8001F1E8(arg1 + 0x7C, arg2 + 0x11, func_8002D7C0(NULL, 0, D_843900B8, temp_s0->unk_1F[1] - 1)); + } + + if ((temp_s0->unk_1F[2] != 0) && (temp_s0->unk_1F[2] < 0xA6)) { + if (arg0->unk_654.unk_C1[2] == 1) { + func_8001F324(0xFF, 0x64, 0xFF, 0xFF); + } else { + func_8001F324(0xFF, 0xFF, 0xFF, 0xFF); + } + func_8001F1E8(arg1 + 0x6E, arg2 + 0x25, func_8002D7C0(NULL, 0, D_843900B8, temp_s0->unk_1F[2] - 1)); + } + + if ((temp_s0->unk_1F[3] != 0) && (temp_s0->unk_1F[3] < 0xA6)) { + if (arg0->unk_654.unk_C1[3] == 1) { + func_8001F324(0xFF, 0x64, 0xFF, 0xFF); + } else { + func_8001F324(0xFF, 0xFF, 0xFF, 0xFF); + } + func_84313750(arg1 + 0x4C, arg2 + 0x18, func_8002D7C0(NULL, 0, D_843900B8, temp_s0->unk_1F[3] - 1)); + } + } else { + if ((temp_s0->unk_1F[0] != 0) && (temp_s0->unk_1F[0] < 0xA6)) { + if (arg0->unk_654.unk_C1[0] == 1) { + func_8001F324(0xFF, 0x64, 0xFF, 0xFF); + } else { + func_8001F324(0xFF, 0xFF, 0xFF, 0xFF); + } + func_84313750(arg1 + 0x5A, arg2 + 4, func_8002D7C0(NULL, 0, D_843900B8, temp_s0->unk_1F[0] - 1)); + } + + if ((temp_s0->unk_1F[1] != 0) && (temp_s0->unk_1F[1] < 0xA6)) { + if (arg0->unk_654.unk_C1[1] == 1) { + func_8001F324(0xFF, 0x64, 0xFF, 0xFF); + } else { + func_8001F324(0xFF, 0xFF, 0xFF, 0xFF); + } + func_8001F1E8(arg1 + 0x7C, arg2 + 0x11, func_8002D7C0(NULL, 0, D_843900B8, temp_s0->unk_1F[1] - 1)); + } + + if ((temp_s0->unk_1F[2] != 0) && (temp_s0->unk_1F[2] < 0xA6)) { + if (arg0->unk_654.unk_C1[2] == 1) { + func_8001F324(0xFF, 0x64, 0xFF, 0xFF); + } else { + func_8001F324(0xFF, 0xFF, 0xFF, 0xFF); + } + func_8001F1E8(arg1 + 0x6E, arg2 + 0x25, func_8002D7C0(NULL, 0, D_843900B8, temp_s0->unk_1F[2] - 1)); + } + + if ((temp_s0->unk_1F[3] != 0) && (temp_s0->unk_1F[3] < 0xA6)) { + if (arg0->unk_654.unk_C1[3] == 1) { + func_8001F324(0xFF, 0x64, 0xFF, 0xFF); + } else { + func_8001F324(0xFF, 0xFF, 0xFF, 0xFF); + } + func_84313750(arg1 + 0x4C, arg2 + 0x18, func_8002D7C0(NULL, 0, D_843900B8, temp_s0->unk_1F[3] - 1)); + } + } + + func_8001F324(0xFF, 0xFF, 0xFF, 0xFF); + + if (temp_s0->unk_1F[0] >= 0xA6) { + func_84313750(arg1 + 0x5A, arg2 + 4, "?????"); + } + + if (temp_s0->unk_1F[1] >= 0xA6) { + func_8001F1E8(arg1 + 0x7C, arg2 + 0x11, "?????"); + } + + if (temp_s0->unk_1F[2] >= 0xA6) { + func_8001F1E8(arg1 + 0x6E, arg2 + 0x25, "?????"); + } + + if (temp_s0->unk_1F[3] >= 0xA6) { + func_84313750(arg1 + 0x4C, arg2 + 0x18, "?????"); + } + + func_8001F444(); + func_8430FC28(arg1 - 2, arg2 - 2, 0xCD, 0x3E, 0); +} + +void func_8431493C(s16 arg0, s16 arg1, s16 arg2, s32 arg3) { + UNUSED s32 pad[2]; + s32 var_v1; + + if (func_80029074()[arg2].unk_000 & 2) { + var_v1 = 4; + } else { + var_v1 = arg2; + } + + func_84310334(arg0 + 1, arg1 + 1, 0xC6, 0x28, &D_84385860[var_v1], &D_84385870[var_v1]); + func_8001F3F4(); + func_8001EBE0(2, 0); + func_8001F1E8(arg0 + 0x2E, arg1 + 6, "こうさんしますか?"); + func_8001F1E8(arg0 + 0x38, arg1 + 0x18, "いいえ"); + func_8001F1E8(arg0 + 0x81, arg1 + 0x18, "はい"); + func_8001F444(); + + gSPDisplayList(gDisplayListHead++, D_8006F5A0); + + func_8001D560(arg0 + 0x21, arg1 + 0x17, 0x18, 0xE, D_30092C0, D_3009560, 0x18, 0x100000); + + gSPDisplayList(gDisplayListHead++, D_8006F630); + + func_84311428(arg0, arg1, 0xC6, 0x28); + func_8430FC28(arg0 - 3, arg1 - 2, 0xCC, 0x2D, 0); +} + +void func_84314B20(s16 arg0, s16 arg1, char* arg2) { + func_8001F3F4(); + func_8001EBE0(1, 0); + func_8001F1E8(arg0, arg1, arg2); + func_8001F444(); +} + +void func_84314B6C(unk_D_84390010* arg0, unk_D_800AE540_0004* arg1, unk_func_80026268_arg0* arg2, s32 arg3, s32 arg4, + s32 arg5) { + s32 var_t0; + + func_843109F4(arg3 + 3, arg4 + 4, arg2->unk_24); + func_84310368(arg3 + 0x1E, arg4 + 0xE, arg2->unk_02, arg2->unk_26); + func_84310B9C(arg3 + 0x26, arg4 + 0x14, arg2->unk_02, arg2->unk_26); + + gSPDisplayList(gDisplayListHead++, D_8006F5A0); + + if (arg5 == 0) { + func_8001D560(arg3 + 2, arg4 + 0xD, 0x10, 0xE, D_3006A70, D_3006C30, 0x10, 0x100000); + } + + if (arg5 == 1) { + func_8001D560(arg3 + 2, arg4 + 0xD, 0x10, 0xE, D_30067D0, D_3006990, 0x10, 0x100000); + } + + if (arg5 == 2) { + func_8001D560(arg3 + 2, arg4 + 0xD, 0x10, 0xC, D_3008E40, D_3008FC0, 0x10, 0x100000); + } + + if (arg5 == 3) { + func_8001D560(arg3 + 2, arg4 + 0xD, 0x10, 0xE, D_3006290, D_3006450, 0x10, 0x100000); + } + + if (arg5 == 4) { + func_8001D560(arg3 + 2, arg4 + 0xD, 0x10, 0xE, D_3006530, D_30066F0, 0x10, 0x100000); + } + + if (arg5 == 5) { + func_8001D560(arg3 + 2, arg4 + 0xD, 0x10, 0xC, D_3008C00, D_3008D80, 0x10, 0x100000); + } + + gSPDisplayList(gDisplayListHead++, D_8006F630); + + func_8001F3F4(); + func_8001EBE0(1, 0); + func_8001F1E8(arg3 + 0x1D, arg4 + 2, arg2->unk_30); + func_8001F444(); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84310B9C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84310CE4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84310DC4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84310FA4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84311048.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_843112C4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84311428.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_843116D8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_843118A8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84311A38.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84311F30.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_843128A0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84313148.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_843133B4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_843135B8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84313750.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_8431379C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84313908.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84313A74.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_8431493C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84314B20.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84314B6C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84314F60.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_8431524C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84315550.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_8431595C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84315ADC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84315BC0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84315C28.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84315D88.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84315EC0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84315FAC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_843160C0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_843161F8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_843162E4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_843163C8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84316610.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84316640.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_843167D4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_8431694C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84316A1C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84317004.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_8431712C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_843172A0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84317558.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84317810.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_8431790C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84317940.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_843179F4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84317AA8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84317B40.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84317BDC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84317EDC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_843180AC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_843184E4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_843184FC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84318514.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84318640.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84318CE4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_843190A8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_843193F4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84319408.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_843194A0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84319564.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_8431962C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_84319668.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2FA4D0/func_843196A4.s") + if (arg1->unk_01C[arg5].unk_02 == 0) { + var_t0 = 1; + } else { + var_t0 = func_800219A0(arg1->unk_01C[arg5].unk_05); + } + + if (var_t0 != 0) { + gSPDisplayList(gDisplayListHead++, D_8006F518); + + func_8001C6AC(arg3 + 0x11, arg4 + 0x14, 0x14, 9, D_84385838[var_t0 - 1], 0x14, 0); + gSPDisplayList(gDisplayListHead++, D_8006F630); + } +} + +void func_84314F60(unk_D_84390010* arg0, unk_D_800AE540_0004* arg1, unk_func_80026268_arg0* arg2, s32 arg3, s32 arg4, + s32 arg5) { + s32 var_t0; + + func_843109F4(arg3 + 3, arg4 + 4, arg2->unk_24); + func_84310368(arg3 + 0x1E, arg4 + 0xE, arg2->unk_02, arg2->unk_26); + func_84310B9C(arg3 + 0x26, arg4 + 0x14, arg2->unk_02, arg2->unk_26); + + gSPDisplayList(gDisplayListHead++, D_8006F5A0); + + if (arg5 == 0) { + func_8001D560(arg3 + 2, arg4 + 0xD, 0x10, 0xE, D_3006A70, D_3006C30, 0x10, 0x100000); + } + + if (arg5 == 1) { + func_8001D560(arg3 + 2, arg4 + 0xD, 0x10, 0xE, D_3006290, D_3006450, 0x10, 0x100000); + } + + if (arg5 == 2) { + func_8001D560(arg3 + 2, arg4 + 0xD, 0x10, 0xE, D_3006530, D_30066F0, 0x10, 0x100000); + } + + gSPDisplayList(gDisplayListHead++, D_8006F630); + + func_8001F3F4(); + func_8001EBE0(1, 0); + func_8001F1E8(arg3 + 0x1D, arg4 + 2, arg2->unk_30); + func_8001F444(); + + if (arg1->unk_01C[arg5].unk_02 == 0) { + var_t0 = 1; + } else { + var_t0 = func_800219A0(arg1->unk_01C[arg5].unk_05); + } + + if (var_t0 != 0) { + gSPDisplayList(gDisplayListHead++, D_8006F518); + + func_8001C6AC(arg3 + 0x11, arg4 + 0x14, 0x14, 9, D_84385838[var_t0 - 1], 0x14, 0); + + gSPDisplayList(gDisplayListHead++, D_8006F630); + } +} + +void func_8431524C(unk_D_84390010* arg0, unk_D_800AE540_0004* arg1, s16 arg2, s16 arg3, s32 arg4) { + UNUSED s32 pad[2]; + Color_RGB8* sp88[] = { + D_84385888, + D_843858A0, + D_843858B8, + D_843858D0, + }; + Color_RGB8* sp78[] = { + D_84385894, + D_843858AC, + D_843858C4, + D_843858DC, + }; + UNUSED s32 pad2[4]; + + func_84310334(arg2 + 1, arg3 + 1, 0x63, 0xF, &sp88[arg4][0], &sp78[arg4][0]); + func_84310334(arg2 + 1, arg3 + 0x10, 0x63, 0x1D, &sp88[arg4][1], &sp78[arg4][1]); + func_84310334(arg2 + 1, arg3 + 0x2D, 0x63, 0x1D, &sp88[arg4][2], &sp78[arg4][2]); + func_84310334(arg2 + 1, arg3 + 0x4A, 0x63, 0x1D, &sp88[arg4][3], &sp78[arg4][3]); + + func_84314B20((arg2 - (func_8001F5B0(1, 0, arg1->unk_008) / 2)) + 0x32, arg3 + 3, arg1->unk_008); + + if (arg1->unk_002 > 0) { + func_84314F60(arg0, arg1, &arg1->unk_01C[0], arg2 + 1, arg3 + 0x10, 0); + } + + if (arg1->unk_002 >= 2) { + func_84314F60(arg0, arg1, &arg1->unk_01C[1], arg2 + 1, arg3 + 0x2D, 1); + } + + if (arg1->unk_002 >= 3) { + func_84314F60(arg0, arg1, &arg1->unk_01C[2], arg2 + 1, arg3 + 0x4A, 2); + } + + gSPDisplayList(gDisplayListHead++, D_8006F518); + + func_8001C6AC(arg2 + 1, arg3, 0x18, 0x10, D_84385850[arg4], 0x18, 0); + + gSPDisplayList(gDisplayListHead++, D_8006F630); + + func_84311428(arg2, arg3, 0x63, 0x66); + func_8430FC28(arg2 - 2, arg3 - 2, 0x69, 0x6A, 0); +} + +void func_84315550(unk_D_84390010* arg0, s16 arg1, s16 arg2, s32 arg3) { + unk_D_800AE540_0004* temp_s0; + unk_D_800AE540_0004* temp_s1; + unk_func_80026268_arg0* ptr = &arg0->unk_724->unk_01C[0]; + s32 i; + Color_RGB8* sp88[] = { + D_84385888, + D_843858A0, + D_843858B8, + D_843858D0, + }; + Color_RGB8* sp78[] = { + D_84385894, + D_843858AC, + D_843858C4, + D_843858DC, + }; + s32 tmp; + unk_func_80026268_arg0* sp5C[6]; + + temp_s0 = arg0->unk_720->unk_08[arg0->unk_728.unk_16C]; + temp_s1 = arg0->unk_724; + + sp5C[5] = &temp_s1->unk_01C[0]; + sp5C[5] = &temp_s1->unk_01C[0]; + sp5C[4] = &temp_s1->unk_01C[1]; + sp5C[3] = &temp_s1->unk_01C[2]; + sp5C[2] = &temp_s1->unk_01C[3]; + sp5C[1] = &temp_s1->unk_01C[4]; + sp5C[0] = &temp_s1->unk_01C[5]; + + func_84310334(arg1 + 1, arg2 + 1, 0xC8, 0xF, &sp88[arg3][0], &sp78[arg3][0]); + func_84310334(arg1 + 1, arg2 + 0x10, 0xC8, 0x1D, &sp88[arg3][1], &sp78[arg3][1]); + func_84310334(arg1 + 1, arg2 + 0x2D, 0xC8, 0x1D, &sp88[arg3][2], &sp78[arg3][2]); + func_84310334(arg1 + 1, arg2 + 0x4A, 0xC8, 0x1D, &sp88[arg3][3], &sp78[arg3][3]); + tmp = func_8001F5B0(1, 0, temp_s0->unk_008) / 2; + func_84314B20((arg1 - tmp) + 0x32, arg2 + 3, temp_s0->unk_008); + + gSPDisplayList(gDisplayListHead++, D_8006F518); + + func_8001C6AC(arg1 + 1, arg2, 0x18, 0x10, *(D_84385850 + arg3), 0x18, 0); + + gSPDisplayList(gDisplayListHead++, D_8006F630); + + if (temp_s0->unk_002 > 0) { + func_84314B6C(arg0, temp_s0, sp5C[5], arg1 + 1, arg2 + 0x10, 0); + } + + if (temp_s0->unk_002 >= 2) { + func_84314B6C(arg0, temp_s0, sp5C[4], arg1 + 1, arg2 + 0x2D, 1); + } + + if (temp_s0->unk_002 >= 3) { + func_84314B6C(arg0, temp_s0, sp5C[3], arg1 + 1, arg2 + 0x4A, 2); + } + + if (temp_s0->unk_002 >= 4) { + func_84314B6C(arg0, temp_s0, sp5C[2], arg1 + 0x66, arg2 + 0x10, 3); + } + + if (temp_s0->unk_002 >= 5) { + func_84314B6C(arg0, temp_s0, sp5C[1], arg1 + 0x66, arg2 + 0x2D, 4); + } + + if (temp_s0->unk_002 >= 6) { + func_84314B6C(arg0, temp_s0, sp5C[0], arg1 + 0x66, arg2 + 0x4A, 5); + } + + func_84311428(arg1, arg2, 0xC8, 0x66); + func_8430FC28(arg1 - 2, arg2 - 2, 0xCE, 0x6A, 0); +} + +void func_8431595C(unk_D_84390010* arg0, s16 arg1, s16 arg2, s32 arg3) { + UNUSED s32 pad; + Color_RGB8* var_v0; + u32 var_t0; + unk_D_84390010_654* temp_v0; + u16 tmp; + unk_func_80026268_arg0* sp40; + + sp40 = &arg0->unk_720->unk_08[arg0->unk_728.unk_16C]->unk_01C[arg0->unk_654.unk_08]; + temp_v0 = &arg0->unk_654; + + if (sp40->unk_02 == 0) { + var_t0 = 1; + } else { + var_t0 = func_800219A0(sp40->unk_05); + } + + if (temp_v0->unk_30 < 0xFF00) { + temp_v0->unk_30 -= 0x30; + } + + tmp = temp_v0->unk_30; + if ((tmp >> 8) & 1) { + var_v0 = &D_84385860[arg3]; + } else { + var_v0 = &D_8438587C[arg3]; + } + + func_84311048(arg0, sp40, &D_84385790[var_t0], arg1 + 1, arg2 + 1, 0x46, 0x28, var_v0->r, var_v0->g, var_v0->b, + 0xB2); + func_84311428(arg1, arg2, 0x46, 0x28); + func_8430FC28(arg1 - 2, arg2 - 2, 0x4C, 0x2D, 0); +} + +void func_84315ADC(s32 arg0, s16 arg1, s16 arg2, char* arg3) { + func_84310334(arg1 + 1, arg2 + 1, 0xEE, 0x24, &D_84385860[arg0], &D_84385870[arg0]); + func_8001F3F4(); + func_8001EBE0(2, 0); + func_8001F3B4(0x10); + func_8001F1E8(arg1 + 0xA, arg2 + 5, arg3); + func_8001F444(); + func_84311428(arg1, arg2, 0xEE, 0x24); + func_8430FC28(arg1 - 2, arg2 - 1, 0xF4, 0x29, 0); +} + +s32 func_84315BC0(char* arg0, s16 arg1, s16 arg2) { + if (*(s8*)arg0 == 0) { + return 0; + } + func_8001F3F4(); + func_8001EBE0(1, 0); + func_8001F1E8(arg1, arg2, arg0); + func_8001F444(); + return 1; +} + +void func_84315C28(unk_D_843901A0_4C8* arg0, s16 arg1, s16 arg2, Vec3f arg3) { + s16 sp2C; + s16 sp28; + Color_RGB8* temp_v0; + unk_D_84390010* temp_v1; + unk_D_800AE540_0004* tmp; + + temp_v1 = D_84390010[arg0->unk_0C]; + tmp = temp_v1->unk_720->unk_08[temp_v1->unk_728.unk_16C]; + temp_v0 = &D_84385860[tmp->unk_001]; + + sp2C = (arg1 - arg3.x) * 2; + sp28 = (arg2 - arg3.y) * 2; + + func_8001F504(arg3.x, arg3.y, sp2C, sp28, temp_v0->r, temp_v0->g, temp_v0->b, 0x96); + func_84311428(arg3.x, arg3.y, sp2C, sp28); + func_8430FC28(arg0->unk_14.x - 2.0f, arg0->unk_14.y - 1.0f, 0xE0, 0x2B, 0); +} + +void func_84315D88(unk_D_843901A0_4C8* arg0, s16 arg1, s16 arg2) { + Vec3f sp4C; + Vec3f sp40; + Vec3f sp34; + UNUSED s32 pad; + + arg0->unk_08 = 0; + arg0->unk_10 = 0; + func_8000E88C(&sp40, arg1, arg2, 0.0f); + func_8000E88C(&sp34, arg1 - 110.0f, arg2 - 19.0f, 0.0f); + func_800102A4(&sp40, &sp34, &arg0->unk_20, &arg0->unk_28, &arg0->unk_2A); + func_80010354(&sp40, &arg0->unk_14, arg0->unk_20, arg0->unk_28, arg0->unk_2A); + arg0->unk_24 = arg0->unk_20 * 0.3f; + func_80010354(&sp40, &sp4C, arg0->unk_24, arg0->unk_28, arg0->unk_2A); + func_84315C28(arg0, arg1, arg2, sp4C); +} + +s32 func_84315EC0(unk_D_843901A0_4C8* arg0, s16 arg1, s16 arg2) { + Vec3f sp34; + Vec3f sp28; + + func_8000E88C(&sp28, arg1, arg2, 0.0f); + arg0->unk_24 = func_800104AC(arg0->unk_24, arg0->unk_20, 15.0f, 15.0f); + func_80010354(&sp28, &sp34, arg0->unk_24, arg0->unk_28, arg0->unk_2A); + func_84315C28(arg0, arg1, arg2, sp34); + + if (arg0->unk_24 == arg0->unk_20) { + return 1; + } + return 0; +} + +void func_84315FAC(unk_D_843901A0_4C8* arg0, s16 arg1, s16 arg2, Vec3f arg3) { + func_8001F504(arg3.x, arg3.y, (s16)((arg1 - arg3.x) * 2), (s16)((arg2 - arg3.y) * 2), 0, 0, 0, 0x96); + func_84311428(arg3.x, arg3.y, (s16)((arg1 - arg3.x) * 2), (s16)((arg2 - arg3.y) * 2)); + func_8430FC28(arg0->unk_14.x - 2.0f, arg0->unk_14.y - 1.0f, 0xE0, 0x2B, 0); +} + +void func_843160C0(unk_D_843901A0_4C8* arg0, s16 arg1, s16 arg2) { + Vec3f sp4C; + Vec3f sp40; + Vec3f sp34; + UNUSED s32 pad; + + arg0->unk_08 = 0; + arg0->unk_10 = 0; + func_8000E88C(&sp40, arg1, arg2, 0.0f); + func_8000E88C(&sp34, arg1 - 50.0f, arg2 - 10.0f, 0.0f); + func_800102A4(&sp40, &sp34, &arg0->unk_20, &arg0->unk_28, &arg0->unk_2A); + func_80010354(&sp40, &arg0->unk_14, arg0->unk_20, arg0->unk_28, arg0->unk_2A); + arg0->unk_24 = arg0->unk_20 * 0.3f; + func_80010354(&sp40, &sp4C, arg0->unk_24, arg0->unk_28, arg0->unk_2A); + func_84315FAC(arg0, arg1, arg2, sp4C); +} + +s32 func_843161F8(unk_D_843901A0_4C8* arg0, s16 arg1, s16 arg2) { + Vec3f sp34; + Vec3f sp28; + + func_8000E88C(&sp28, arg1, arg2, 0.0f); + arg0->unk_24 = func_800104AC(arg0->unk_24, arg0->unk_20, 15.0f, 15.0f); + func_80010354(&sp28, &sp34, arg0->unk_24, arg0->unk_28, arg0->unk_2A); + func_84315FAC(arg0, arg1, arg2, sp34); + + if (arg0->unk_24 == arg0->unk_20) { + return 1; + } + return 0; +} + +void func_843162E4(s32 arg0, s16 arg1, s16 arg2, char* arg3) { + func_84310334(arg1 + 1, arg2 + 1, 0xC8, 0x24, &D_84385860[arg0], &D_84385870[arg0]); + func_8001F3F4(); + func_8001EBE0(2, 0); + func_8001F3B4(0x10); + func_8001F1E8(arg1 + 0xA, arg2 + 5, arg3); + func_8001F444(); + func_84311428(arg1, arg2, 0xC8, 0x25); + func_8430FC28(arg1 - 2, arg2 - 1, 0xCD, 0x28, 0); +} + +void func_843163C8(unk_D_84390010* arg0, s16 arg1, s16 arg2, s32 arg3) { + UNUSED s32 pad; + s32 sp48; + UNUSED s32 pad2[2]; + + func_84310334(arg1 + 1, arg2 + 1, 0xC8, 0x24, &D_84385860[arg3], &D_84385870[arg3]); + func_8001F3F4(); + func_8001EBE0(2, 0); + sp48 = func_8001F5B0(2, 0, func_8002D7C0(NULL, 0, D_843900B0, 0xA1)) / 2; + func_8001F1E8((arg1 - sp48) + 0x61, arg2 + 5, func_8002D7C0(NULL, 0, D_843900B0, 0xA1)); + func_8001F1E8(arg1 + 0x32, arg2 + 0x14, func_8002D7C0(NULL, 0, D_843900B0, 0xA3)); + func_8001F1E8(arg1 + 0x7A, arg2 + 0x14, func_8002D7C0(NULL, 0, D_843900B0, 0xA2)); + func_8001F444(); + + gSPDisplayList(gDisplayListHead++, D_8006F5A0); + + func_8001D560(arg1 + (arg0->unk_654.unk_2F * 0x49) + 0x1B, arg2 + 0x14, 0x18, 0xE, &D_30092C0, &D_3009560, 0x18, + 0x100000); + + gSPDisplayList(gDisplayListHead++, D_8006F630); + + func_84311428(arg1, arg2, 0xC8, 0x25); + func_8430FC28(arg1 - 2, arg2 - 1, 0xCD, 0x28, 0); +} + +void func_84316610(void) { + if (func_8436EF48() != 0) { + func_8436F664(); + } +} + +void func_84316640(s16 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5, s16 arg6, s16 arg7) { + unk_D_800A7440 sp30; + + func_80005FC0(&sp30, arg0, arg1, (arg0 + arg2) - 1, (arg1 + arg3) - 1); + + if (func_80006030(&sp30) != 0) { + if (arg6 != 0) { + arg4 += ((sp30.x1 - arg0) * arg6) >> 5; + } + + if (arg7 != 0) { + arg5 += ((sp30.y2 - arg1) * arg7) >> 5; + } + + sp30.y1 += 1; + sp30.x2 += 1; + + gSPTextureRectangle(gDisplayListHead++, sp30.x1 << 2, sp30.y2 << 2, sp30.y1 << 2, sp30.x2 << 2, G_TX_RENDERTILE, + arg4, arg5, arg6, arg7); + } +} + +void func_843167D4(s32 arg0, s32 arg1, s32 arg2, s32 arg3, u8* arg4, s32 arg5) { + gDPLoadTextureTile(gDisplayListHead++, arg4, G_IM_FMT_RGBA, G_IM_SIZ_32b, arg2, 0, 0, 0, arg2 - 1, arg3 - 1, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + + func_84316640(arg0, arg1, arg2, arg3, 0, 0, 0x400, 0); +} + +void func_8431694C(void) { + s32 i; + + gSPDisplayList(gDisplayListHead++, D_8006F518); + + for (i = 0; i < 0x30; i++) { + func_843167D4(0x1E, i + 0x17, 0x58, 1, &D_3001F70[i * 0x160], 0x58); + } + + gSPDisplayList(gDisplayListHead++, D_8006F630); + + func_8430FC28(0x1C, 0x16, 0x5E, 0x34, 0); +} + +void func_84316A1C(u8* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, u8 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9, + u8 argA, u8 argB, u8 argC) { + UNUSED s32 pad; + unk_D_80068BB0* temp_s1 = func_8000648C(); + Vtx* temp_s2 = func_80005F5C(sizeof(Vtx) * 4); + Mtx* spC0 = func_80005F5C(sizeof(Mtx) * 1); + Vp* spBC = func_80005F5C(sizeof(Vp)); + + func_8001E6E8(spBC, temp_s1->width, temp_s1->height); + + gSPViewport(gDisplayListHead++, (u32)spBC & 0x1FFFFFFF); + + guOrtho(spC0, 0.5f, temp_s1->width - 0.5f, temp_s1->height - 0.5f, 0.5f, -2.0f, 2.0f, 1.0f); + + func_8001E680(&temp_s2[0], arg1, arg2, -1, argC << 5, 0, 0xFF, 0xF0, 0, 0xFF); + func_8001E680(&temp_s2[1], arg1 + arg3, arg2, -1, argB << 5, 0, 0xFF, 0xF0, 0, 0xFF); + func_8001E680(&temp_s2[2], arg1, arg2 + arg4, -1, argC << 5, arg6 << 5, 0xFF, 0, 0x64, 0xFF); + func_8001E680(&temp_s2[3], arg1 + arg3, arg2 + arg4, -1, argB << 5, arg6 << 5, 0xFF, 0, 0x64, 0xFF); + + gDPPipeSync(gDisplayListHead++); + gDPSetCycleType(gDisplayListHead++, G_CYC_2CYCLE); + gDPSetTexturePersp(gDisplayListHead++, G_TP_PERSP); + gSPClearGeometryMode(gDisplayListHead++, G_ZBUFFER | G_LIGHTING); + gDPSetCombineLERP(gDisplayListHead++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, + SHADE, 0, 0, 0, 0, COMBINED); + gDPSetRenderMode(gDisplayListHead++, G_RM_PASS, G_RM_XLU_SURF2); + gDPSetEnvColor(gDisplayListHead++, 0, 0, 0, 255); + gDPSetPrimColor(gDisplayListHead++, 0, 0, 255, 255, 255, 255); + gDPSetTextureFilter(gDisplayListHead++, G_TF_BILERP); + gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); + + gDPLoadTextureTile(gDisplayListHead++, arg0, G_IM_FMT_IA, G_IM_SIZ_8b, arg5, 0, arg7, arg8, arg9 - 1, argA - 1, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + + gSPPerspNormalize(gDisplayListHead++, 0xFFFF); + gSPMatrix(gDisplayListHead++, (u32)spC0 & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + gSPMatrix(gDisplayListHead++, (u32)&D_8006F010 & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPVertex(gDisplayListHead++, (u32)temp_s2 & 0x1FFFFFFF, 4, 0); + gSP2Triangles(gDisplayListHead++, 0, 2, 3, 0, 0, 3, 1, 0); + gSPDisplayList(gDisplayListHead++, D_8006F630); + gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF); +} + +void func_84317004(void) { + D_84390190.x = func_800104AC(D_84390190.x, 52.0f, 80.0f, 80.0f); + func_84316A1C(D_3000470, D_84390190.x, D_84390190.y, 0x6C, 0x20, 0xD8, 0x20, 0, 0, 0x6C, 0x20, 0x6B, 0); + func_84316A1C(D_3000470, (s32)D_84390190.x + 0x6C, D_84390190.y, 0x6C, 0x20, 0xD8, 0x20, 0x6C, 0, 0xD8, 0x20, 0xD7, + 0x6C); +} + +void func_8431712C(void) { + static s32 D_84385988 = 0; + + s32 sp24; + s16 temp_s0; + + if (!(Cont_GetControllerBits() & 1)) { + sp24 = func_8001F5B0(4, 0, func_8002D7C0(NULL, 0, D_843900C0, 0)); + temp_s0 = 0x50 - D_84385988; + + gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 16, 0, 304, 240); + + func_8001F3F4(); + func_8001EBE0(4, 0); + func_8001F1E8(temp_s0, 0xB3, func_8002D7C0(NULL, 0, D_843900C0, 0)); + + temp_s0 += sp24 + 0x1E; + if (temp_s0 < 0x140) { + func_8001F1E8(temp_s0, 0xB3, func_8002D7C0(NULL, 0, D_843900C0, 0)); + } + func_8001F444(); + + gDPSetScissor(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, 320, 240); + + D_84385988++; + if (D_84385988 >= (sp24 + 0x50)) { + D_84385988 = 0x32; + } + } +} + +void func_843172A0(unk_D_84390010* arg0, unk_D_84390010_654* arg1) { + unk_D_800AE540_0004* sp34 = arg0->unk_720->unk_08[arg0->unk_728.unk_16C]; + UNUSED s32 pad; + s32 var_v1; + + if (D_800AE540.unk_0000 != 0x10) { + if (arg1->unk_10 == 3) { + func_84311F30(arg0, arg0->unk_728.unk_168->unk_1C - 2, arg0->unk_728.unk_168->unk_1E - 0x3A, arg1->unk_1E, + 1); + } else { + func_84311F30(arg0, arg0->unk_728.unk_168->unk_1C - 2, arg0->unk_728.unk_168->unk_1E - 0x3A, arg1->unk_1E, + 0); + } + + if ((arg1->unk_10 != 3) && (arg0->unk_728.unk_168->unk_1C == 0x17)) { + switch (arg1->unk_10) { + case 2: + if (arg1->unk_1C == 1) { + if (arg0->unk_720->unk_01 == 2) { + if (arg0->unk_720->unk_08[1]->unk_001 < arg0->unk_720->unk_08[0]->unk_001) { + var_v1 = 0; + } else { + var_v1 = 1; + } + func_8431524C(arg0, arg0->unk_720->unk_08[var_v1], 0x60, 0xF, + arg0->unk_720->unk_08[var_v1]->unk_001); + func_8431524C(arg0, arg0->unk_720->unk_08[var_v1 == 0], 0xC6, 0xF, + arg0->unk_720->unk_08[var_v1 == 0]->unk_001); + } else if (arg0->unk_724->unk_002 < 4) { + func_8431524C(arg0, arg0->unk_720->unk_08[0], 0x60, 0xF, sp34->unk_001); + } else { + func_84315550(arg0, 0x60, 0xF, sp34->unk_001); + } + } else if (arg1->unk_2D == 0x10) { + func_843135B8(arg0, 0x60, 0xF, sp34->unk_001); + } else { + func_843133B4(arg0, 0x60, 0xF, sp34->unk_001); + } + break; + + case 1: + if (arg1->unk_1C == 1) { + func_84313A74(arg0, 0x60, 0xF, sp34->unk_001); + } else { + func_843133B4(arg0, 0x60, 0xF, sp34->unk_001); + } + break; + + case 4: + func_843163C8(arg0, 0x5F, 0xE, sp34->unk_001); + break; + + default: + func_84313148(arg0, 0x60, 0xF, sp34->unk_001); + break; + } + } + } +} + +void func_84317558(unk_D_84390010* arg0, unk_D_84390010_654* arg1) { + unk_D_800AE540_0004* sp24 = arg0->unk_720->unk_08[arg0->unk_728.unk_16C]; + s32 sp20; + + if (D_800AE540.unk_0000 != 0x10) { + if (arg1->unk_10 == 3) { + func_843128A0(arg0, arg0->unk_728.unk_168->unk_1C - 0x20, arg0->unk_728.unk_168->unk_1E - 2, arg1->unk_1E, + 1); + } else { + func_843128A0(arg0, arg0->unk_728.unk_168->unk_1C - 0x20, arg0->unk_728.unk_168->unk_1E - 2, arg1->unk_1E, + 0); + } + + if ((arg1->unk_10 != 3) && (arg0->unk_728.unk_168->unk_1C == 0x103)) { + switch (arg1->unk_10) { + case 2: + if (arg1->unk_1C == 1) { + if (arg0->unk_720->unk_01 == 2) { + if (arg0->unk_720->unk_08[1]->unk_001 < arg0->unk_720->unk_08[0]->unk_001) { + sp20 = 0; + } else { + sp20 = 1; + } + func_8431524C(arg0, arg0->unk_720->unk_08[sp20 == 0], 0x16, 0x79, + arg0->unk_720->unk_08[sp20 == 0]->unk_001); + func_8431524C(arg0, arg0->unk_720->unk_08[sp20], 0x7C, 0x79, + arg0->unk_720->unk_08[sp20]->unk_001); + } else if (arg0->unk_724->unk_002 < 4) { + func_8431524C(arg0, arg0->unk_720->unk_08[0], 0x7C, 0x79, sp24->unk_001); + } else { + func_84315550(arg0, 0x18, 0x79, sp24->unk_001); + } + } else if (arg1->unk_2D == 0x10) { + func_843135B8(arg0, 0x98, 0xCE, sp24->unk_001); + } else { + func_843133B4(arg0, 0x62, 0xCE, sp24->unk_001); + } + break; + + case 1: + if (arg1->unk_1C == 1) { + func_84313A74(arg0, 0x19, 0xA6, sp24->unk_001); + } else { + func_843133B4(arg0, 0x62, 0xCE, sp24->unk_001); + } + break; + + case 4: + func_843163C8(arg0, 0x17, 0xBB, sp24->unk_001); + break; + + default: + func_84313148(arg0, 0x18, 0xCE, sp24->unk_001); + break; + } + } + } +} diff --git a/src/fragments/62/fragment62_3020D0.c b/src/fragments/62/fragment62_3020D0.c new file mode 100644 index 0000000..01e9050 --- /dev/null +++ b/src/fragments/62/fragment62_3020D0.c @@ -0,0 +1,793 @@ +#include "fragment62.h" +#include "src/1CF30.h" +#include "src/20470.h" +#include "src/225A0.h" +#include "src/29BA0.h" +#include "src/2E110.h" +#include "src/3D140.h" +#include "src/6A40.h" +#include "src/6BC0.h" +#include "src/F420.h" +#include "src/controller.h" +#include "src/memmap.h" +#include "src/memory.h" +#include "stdarg.h" + +unk_D_843901A0* D_843901A0; + +static u8 D_84385990[] = { 0xE, 0x4A }; +static u8 D_84385994[] = { 0x60, 0x69, 0x75, 0x78, 0x85 }; +static u8 D_8438599C[] = { 0x61, 0x64, 0x66, 0x68, 0x8C }; +static u8 D_843859A4[] = { + 1, 0xA, 0xB, 0x11, 0x13, 0x14, 0x15, 0x1E, 0x22, 0x23, 0x25, 0x27, 0x2B, 0x2C, 0x2D, 0x2E, + 0x2F, 0x40, 0x44, 0x46, 0x47, 0x51, 0x59, 0x5A, 0x5B, 0x5C, 0x67, 0x6A, 0x6B, 0x6E, 0x6F, 0x76, + 0x7A, 0x80, 0x84, 0x8B, 0x8D, 0x91, 0x94, 0x96, 0x97, 0x9A, 0x9C, 0x9F, 0xA3, 0xA4, +}; + +void func_84317810(void) { + D_843901A0->unk_088[0] = 0; + D_843901A0->unk_088[1] = 0; + D_843901A0->unk_0C8[0] = 0; + D_843901A0->unk_0C8[1] = 0; + D_843901A0->unk_108[0] = 0; + D_843901A0->unk_108[1] = 0; + D_843901A0->unk_148[0] = 0; + D_843901A0->unk_148[1] = 0; + D_843901A0->unk_188[0] = 0; + D_843901A0->unk_188[1] = 0; + D_843901A0->unk_1C8[0] = 0; + D_843901A0->unk_1C8[1] = 0; + D_843901A0->unk_448[0][0] = 0; + D_843901A0->unk_448[0][1] = 0; + D_843901A0->unk_448[1][0] = 0; + D_843901A0->unk_448[1][1] = 0; + D_843901A0->unk_208[0] = 0; + D_843901A0->unk_208[1] = 0; + D_843901A0->unk_308[0] = 0; + D_843901A0->unk_308[1] = 0; + D_843901A0->unk_2C8[0] = 0; + D_843901A0->unk_2C8[1] = 0; + D_843901A0->unk_348[0] = 0; + D_843901A0->unk_348[1] = 0; + D_843901A0->unk_388[0] = 0; + D_843901A0->unk_388[1] = 0; + D_843901A0->unk_3C8[0] = 0; + D_843901A0->unk_3C8[1] = 0; + D_843901A0->unk_408[0] = 0; + D_843901A0->unk_408[1] = 0; +} + +void func_8431790C(void) { + D_843901A0->unk_004 = 0; + D_843901A0->unk_048[0] = 0; + D_843901A0->unk_048[1] = 0; + D_843901A0->unk_008[0] = 0; + D_843901A0->unk_008[1] = 0; +} + +#ifdef NON_MATCHING +void func_84317940(s8* arg0, s8* arg1, ...) { + va_list args; + s8** temp_v1; + s32 var_v0; + s8* var_a3; + + var_v0 = 0; + temp_v1 = &args; + + while (*arg1 != '\x00') { + if (*arg1 != 0x25) { + arg0[var_v0++] = *arg1; + } else { + arg1++; + if (*arg1 == 0x73) { + temp_v1 = ALIGN4((s32)temp_v1); + var_a3 = *(s8**)temp_v1; + temp_v1++; + + while (*var_a3 != 0) { + arg0[var_v0] = *var_a3; + var_a3++; + var_v0++; + } + } + } + arg1++; + } + arg0[var_v0] = '\x00'; +} +#else +#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3020D0/func_84317940.s") +#endif + +void func_843179F4(s8* arg0, s8 arg1) { + u8 tmp = arg1; + *arg0 = arg1; + + if (tmp >= 0x80) { + if ((tmp - 0x80) >= 0xB) { + func_8002D7C0(arg0 + 1, 0x40, D_843900B0, tmp - 0x48); + } else { + func_8002D7C0(arg0 + 1, 0x40, D_843900B0, tmp - 0x49); + } + } else { + func_8002D7C0(arg0 + 1, 0x40, D_843900B0, D_84385BC0[arg1]); + } +} + +void func_84317AA8(char* arg0, s32 arg1) { + UNUSED s32 pad[3]; + unk_D_84390010_654* sp28 = &D_84390010[arg1]->unk_654; + UNUSED s32 pad2[2]; + + func_8431790C(); + D_843901A0->unk_000 = D_84390010[arg1]->unk_720->unk_08[sp28->unk_2B]->unk_001; + func_84317940(D_843901A0->unk_048, arg0 + 1); + *arg0 = 0; +} + +void func_84317B38(void) { +} + +void func_84317B40(void) { + unk_D_84390010* ptr1 = D_84390010[0]; + unk_D_84390010* ptr2 = D_84390010[1]; + + if ((D_800AE540.unk_0000 != 0x10) && (D_84390240.unk_00->unk_30 == 0)) { + func_8431595C(ptr1, 0x15, 0xF, ptr1->unk_720->unk_08[ptr1->unk_728.unk_16C]->unk_001); + func_8431595C(ptr2, 0xE1, 0xF, ptr2->unk_720->unk_08[ptr2->unk_728.unk_16C]->unk_001); + } +} + +void func_84317BDC(void) { + u32 sp1C; + unk_D_800FCB18* sp18 = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654.unk_38; + + sp18->unk_58 = sp18->unk_44.unk_00; + + if (func_84307AE0(sp18->unk_44.unk_00, D_84385990, 2) != 0) { + sp1C = 0; + } else if (func_84307AE0(sp18->unk_44.unk_00, D_84385994, 5) != 0) { + sp1C = 1; + } else if (func_84307AE0(sp18->unk_44.unk_00, D_8438599C, 5) != 0) { + sp1C = 2; + } else if (func_84307AE0(sp18->unk_44.unk_00, D_843859A4, 0x2E) != 0) { + sp1C = 3; + } else { + sp1C = 4; + } + + if ((sp18->unk_44.unk_00 == 0x76) || (sp18->unk_44.unk_00 == 0x77)) { + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_8002D5D4(0x1D, func_843085F0(D_84390010[D_84390240.unk_00->unk_2C])); + + switch (sp1C) { + case 0: + func_843179F4(D_843901A0->unk_388, 0x14); + break; + + case 1: + func_843179F4(D_843901A0->unk_388, 0x15); + break; + + case 2: + func_843179F4(D_843901A0->unk_388, 0x16); + break; + + case 3: + func_843179F4(D_843901A0->unk_388, 0x17); + break; + + case 4: + func_843179F4(D_843901A0->unk_388, 0x18); + break; + } + } else { + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_8002D5D4(0x1D, func_843085F0(D_84390010[D_84390240.unk_00->unk_2C])); + + switch (sp1C) { + case 0: + func_843179F4(D_843901A0->unk_0C8, 0x14); + break; + + case 1: + func_843179F4(D_843901A0->unk_0C8, 0x15); + break; + + case 2: + func_843179F4(D_843901A0->unk_0C8, 0x16); + break; + + case 3: + func_843179F4(D_843901A0->unk_0C8, 0x17); + break; + + case 4: + func_843179F4(D_843901A0->unk_0C8, 0x18); + break; + } + } +} + +void func_84317EDC(void) { + u32 sp24; + UNUSED s32 pad; + unk_D_800FCB18* sp1C = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654.unk_38; + + if (func_84307AE0(sp1C->unk_5A, D_84385990, 2) != 0) { + sp24 = 0; + } else if (func_84307AE0(sp1C->unk_5A, D_84385994, 5) != 0) { + sp24 = 1; + } else if (func_84307AE0(sp1C->unk_5A, D_8438599C, 5) != 0) { + sp24 = 2; + } else if (func_84307AE0(sp1C->unk_5A, D_843859A4, 0x2E) != 0) { + sp24 = 3; + } else { + sp24 = 4; + } + + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_8002D5D4(0x1D, func_843085F0(D_84390010[D_84390240.unk_00->unk_2C])); + + switch (sp24) { + case 0: + func_843179F4(D_843901A0->unk_0C8, 0x14); + break; + + case 1: + func_843179F4(D_843901A0->unk_0C8, 0x15); + break; + + case 2: + func_843179F4(D_843901A0->unk_0C8, 0x16); + break; + + case 3: + func_843179F4(D_843901A0->unk_0C8, 0x17); + break; + + case 4: + func_843179F4(D_843901A0->unk_0C8, 0x18); + break; + } +} + +void func_843180AC(void) { + s32 sp2C; + s32 tmp; + unk_D_800FCB18* sp24; + + sp24 = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654.unk_38; + + if (func_84307AE0(sp24->unk_5A, D_84385990, 2) != 0) { + sp2C = 0; + } else if (func_84307AE0(sp24->unk_5A, D_84385994, 5) != 0) { + sp2C = 1; + } else if (func_84307AE0(sp24->unk_5A, D_8438599C, 5) != 0) { + sp2C = 2; + } else if (func_84307AE0(sp24->unk_5A, D_843859A4, 0x2E) != 0) { + sp2C = 3; + } else { + sp2C = 4; + } + + if (sp24->unk_5A == 0x76) { + do { + tmp = func_8436F6D8(); + } while ((tmp == 0) || (tmp >= 0xA5) || tmp == 0x76); + + sp24->unk_5A = tmp; + + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_8002D5D4(0x1D, func_843085F0(D_84390010[D_84390240.unk_00->unk_2C])); + + switch (sp2C) { + case 0: + func_843179F4(D_843901A0->unk_0C8, 0x14); + break; + + case 1: + func_843179F4(D_843901A0->unk_0C8, 0x15); + break; + + case 2: + func_843179F4(D_843901A0->unk_0C8, 0x16); + break; + + case 3: + func_843179F4(D_843901A0->unk_0C8, 0x17); + break; + + case 4: + func_843179F4(D_843901A0->unk_0C8, 0x18); + break; + } + + sp24->unk_5A = 0x76; + + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_8002D5D4(0x1D, func_843085F0(D_84390010[D_84390240.unk_00->unk_2C])); + + switch (sp2C) { + case 0: + func_843179F4(D_843901A0->unk_388, 0x14); + break; + + case 1: + func_843179F4(D_843901A0->unk_388, 0x15); + break; + + case 2: + func_843179F4(D_843901A0->unk_388, 0x16); + break; + + case 3: + func_843179F4(D_843901A0->unk_388, 0x17); + break; + + case 4: + func_843179F4(D_843901A0->unk_388, 0x18); + break; + } + } else { + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_8002D5D4(0x1D, func_843085F0(D_84390010[D_84390240.unk_00->unk_2C])); + + switch (sp2C) { + case 0: + func_843179F4(D_843901A0->unk_0C8, 0x14); + break; + + case 1: + func_843179F4(D_843901A0->unk_0C8, 0x15); + break; + + case 2: + func_843179F4(D_843901A0->unk_0C8, 0x16); + break; + + case 3: + func_843179F4(D_843901A0->unk_0C8, 0x17); + break; + + case 4: + func_843179F4(D_843901A0->unk_0C8, 0x18); + break; + } + } +} + +void func_843184E4(s32 arg0) { + unk_D_843901A0_4C8* ptr = &D_843901A0->unk_4C8; + + ptr->unk_00 = 0; + ptr->unk_04 = arg0; +} + +void func_843184FC(void) { + unk_D_843901A0_4C8* ptr = &D_843901A0->unk_4C8; + + ptr->unk_00 = 0xFF; +} + +void func_84318514(s8* arg0) { + s32 temp_v0; + + if (arg0[1] == '\x00') { + return; + } + + temp_v0 = arg0[0] & 0x7F; + + if ((arg0[0] & 0x80) == '\x00') { + func_8003F624(arg0[0]); + } else if (temp_v0 == 'Q') { + func_8003F624(0xBC); + } else if (temp_v0 == 'R') { + func_8003F624(0xB5); + } else if (temp_v0 == 'S') { + func_8003F624(0xB6); + } else if (temp_v0 == 'T') { + func_8003F624(0xB7); + } else if (temp_v0 == 'U') { + func_8003F624(0xB8); + } else if (temp_v0 == 'V') { + func_8003F624(0xB9); + } else if (temp_v0 == 'W') { + func_8003F624(0xBA); + } else if (temp_v0 == 'X') { + func_8003F624(0xBB); + } else { + func_8003F624(temp_v0 + 0x64); + } +} + +void func_84318640(unk_D_843901A0_4C8* arg0, s16 arg1, s16 arg2) { + UNUSED s32 pad; + s32 temp_s1; + + if (1) {} + + switch (arg0->unk_04) { + case 0: + if (func_84315BC0(&D_843901A0->unk_388[1], arg1 + 4, arg2 + (arg0->unk_10 * 0xC) + 3) != 0) { + arg0->unk_10 += 1; + } + + if (func_84315BC0(&D_843901A0->unk_0C8[1], arg1 + 4, arg2 + (arg0->unk_10 * 0xC) + 3) != 0) { + arg0->unk_10 += 1; + } + + if (func_84315BC0(&D_843901A0->unk_188[1], arg1 + 4, arg2 + (arg0->unk_10 * 0xC) + 3) != 0) { + arg0->unk_10 += 1; + } + break; + + case 3: + if (func_84315BC0(&D_843901A0->unk_088[1], arg1 + 4, arg2 + (arg0->unk_10 * 0xC) + 3) != 0) { + arg0->unk_10 += 1; + } + + if (func_84315BC0(&D_843901A0->unk_148[1], arg1 + 4, arg2 + (arg0->unk_10 * 0xC) + 3) != 0) { + arg0->unk_10 += 1; + } + + if (func_84315BC0(&D_843901A0->unk_208[1], arg1 + 4, arg2 + (arg0->unk_10 * 0xC) + 3) != 0) { + arg0->unk_10 += 1; + } + break; + + case 1: + if (func_84315BC0(&D_843901A0->unk_3C8[1], arg1 + 4, arg2 + (arg0->unk_10 * 0xC) + 3) != 0) { + arg0->unk_10 += 1; + } + + if (func_84315BC0(&D_843901A0->unk_088[1], arg1 + 4, arg2 + (arg0->unk_10 * 0xC) + 3) != 0) { + arg0->unk_10 += 1; + } + + if (func_84315BC0(&D_843901A0->unk_148[1], arg1 + 4, arg2 + (arg0->unk_10 * 0xC) + 3) != 0) { + arg0->unk_10 += 1; + } + + if ((arg0->unk_10 < 3) && + (func_84315BC0(&D_843901A0->unk_208[1], arg1 + 4, arg2 + (arg0->unk_10 * 0xC) + 3) != 0)) { + arg0->unk_10 += 1; + } + break; + + case 2: + if (func_84315BC0(&D_843901A0->unk_088[1], arg1 + 4, arg2 + (arg0->unk_10 * 0xC) + 3) != 0) { + arg0->unk_10 += 1; + } + + if (func_84315BC0(&D_843901A0->unk_148[1], arg1 + 4, arg2 + (arg0->unk_10 * 0xC) + 3) != 0) { + arg0->unk_10 += 1; + } + + if (func_84315BC0(&D_843901A0->unk_208[1], arg1 + 4, arg2 + (arg0->unk_10 * 0xC) + 3) != 0) { + arg0->unk_10 += 1; + } + break; + + case 4: + func_84315BC0(&D_843901A0->unk_248[1], arg1 + 4, arg2 + 3); + break; + + case 5: + func_84315BC0(&D_843901A0->unk_288[1], arg1 + 4, arg2 + 3); + break; + + case 6: + func_84315BC0(&D_843901A0->unk_408[1], arg1 + 4, arg2 + 3); + break; + + case 7: + func_84315BC0(&D_843901A0->unk_348[1], arg1 + 4, arg2 + 3); + func_84315BC0(&D_843901A0->unk_2C8[1], arg1 + 4, arg2 + 0x10); + break; + + case 8: + func_84315BC0(&D_843901A0->unk_448[arg0->unk_0C][1], arg1 + 4, arg2 + 3); + break; + + case 9: + case 10: + func_84315BC0(&D_843901A0->unk_1C8[1], arg1 + 4, arg2 + 3); + break; + + case 11: + func_84315BC0(&D_843901A0->unk_088[1], arg1 + 4, arg2 + 3); + break; + + case 12: + func_84315BC0(&D_843901A0->unk_088[1], arg1 + 4, arg2 + 3); + break; + + case 13: + temp_s1 = func_8001F5B0(1, 0, func_8002D7C0(NULL, 0, D_843900B0, 0xA4)) / 2; + func_84315BC0(func_8002D7C0(NULL, 0, D_843900B0, 0xA4), 0xA1 - temp_s1, 0x71); + break; + + case 14: + func_84317004(); + break; + + case 15: + func_84315BC0(&D_843901A0->unk_088[1], arg1 + 4, arg2 + (arg0->unk_10 * 0xC) + 3); + break; + } + + arg0->unk_10 = 0; +} + +s32 func_84318CE4(unk_D_843901A0_4C8* arg0) { + unk_D_843901A0* temp_v0; + s32 tmp; + + arg0->unk_10 = 0; + + switch (arg0->unk_04) { + case 0: + if ((D_843901A0->unk_0C8[1] == 0) && (D_843901A0->unk_388[1] == 0) && (D_843901A0->unk_188[1] == 0)) { + arg0->unk_00 = 0xFF; + return 1; + } + + arg0->unk_0C = D_84390240.unk_00->unk_2C; + if (D_843901A0->unk_0C8[1] != 0) { + func_84318514(D_843901A0->unk_0C8); + } + + if (D_843901A0->unk_388[1] != 0) { + func_84318514(D_843901A0->unk_388); + } + + if (D_843901A0->unk_188[1] != 0) { + func_84318514(D_843901A0->unk_188); + } + arg0->unk_00 += 1; + break; + + case 1: + case 3: + arg0->unk_0C = D_84390240.unk_00->unk_2C; + func_84318514(D_843901A0->unk_088); + func_84318514(D_843901A0->unk_148); + func_84318514(D_843901A0->unk_208); + func_84318514(D_843901A0->unk_3C8); + func_84318514(D_843901A0->unk_308); + if ((D_843901A0->unk_088[1] == 0) && (D_843901A0->unk_148[1] == 0) && (D_843901A0->unk_208[1] == 0) && + (D_843901A0->unk_3C8[1] == 0) && (D_843901A0->unk_308[1] == 0)) { + arg0->unk_00 = 0xFF; + return 1; + } + arg0->unk_00 += 1; + break; + + case 2: + arg0->unk_0C = D_84390240.unk_00->unk_2C; + func_84318514(D_843901A0->unk_088); + func_84318514(D_843901A0->unk_148); + func_84318514(D_843901A0->unk_208); + if ((D_843901A0->unk_088[1] == 0) && (D_843901A0->unk_148[1] == 0) && (D_843901A0->unk_208[1] == 0)) { + arg0->unk_00 = 0xFF; + return 1; + } + arg0->unk_00 += 1; + break; + + case 15: + arg0->unk_0C = D_84390240.unk_00->unk_2C; + func_84318514(D_843901A0->unk_088); + if (D_843901A0->unk_088[1] == 0) { + arg0->unk_00 = 0xFF; + return 1; + } + arg0->unk_00 += 1; + break; + + case 8: + if (D_843901A0->unk_448[arg0->unk_0C][1] == 0) { + arg0->unk_00 = 0xFF; + return 1; + } + tmp = D_84390240.unk_00->unk_2C == 0; + arg0->unk_00 += 1; + arg0->unk_0C = tmp; + break; + + case 9: + tmp = D_84390240.unk_00->unk_2C == 0; + arg0->unk_00 += 1; + arg0->unk_0C = tmp; + break; + + case 4: + case 5: + case 6: + func_84318514(D_843901A0->unk_248); + func_84318514(D_843901A0->unk_288); + func_84318514(D_843901A0->unk_408); + arg0->unk_00 += 1; + break; + + case 14: + D_84390190.z = 0.0f; + D_84390190.x = 321.0f; + D_84390190.y = 160.0f; + arg0->unk_0C = D_84390240.unk_00->unk_2C; + arg0->unk_00 += 1; + break; + + default: + arg0->unk_0C = D_84390240.unk_00->unk_2C; + arg0->unk_00 += 1; + break; + } + return 0; +} + +void func_843190A8(s16 arg0, s16 arg1) { + unk_D_843901A0_4C8* temp_s0 = &D_843901A0->unk_4C8; + + if (D_800AE540.unk_0000 == 0x10) { + return; + } + + switch (temp_s0->unk_00) { + case 0: + temp_s0->unk_08 = 0; + if (temp_s0->unk_04 == 0xD) { + func_843160C0(temp_s0, 0xA0, 0x78); + temp_s0->unk_00++; + } else if (temp_s0->unk_04 == 0xE) { + func_84318CE4(temp_s0); + } else if (func_84318CE4(temp_s0) == 0) { + func_84315D88(temp_s0, arg0, arg1); + } + break; + + case 1: + if (temp_s0->unk_04 == 0xD) { + if (func_843161F8(temp_s0, 0xA0, 0x78) != 0) { + func_84318640(temp_s0, temp_s0->unk_14.x, temp_s0->unk_14.y); + temp_s0->unk_00++; + } + } else { + if (temp_s0->unk_04 == 0xE) { + func_8003F660(func_84308D98(D_84390010[temp_s0->unk_0C])); + func_84318640(temp_s0, temp_s0->unk_14.x, temp_s0->unk_14.y); + temp_s0->unk_00++; + } else if (func_84315EC0(temp_s0, arg0, arg1) != 0) { + func_8003F660(func_84308D98(D_84390010[temp_s0->unk_0C])); + func_84318640(temp_s0, temp_s0->unk_14.x, temp_s0->unk_14.y); + temp_s0->unk_00++; + } + } + break; + + case 2: + if (temp_s0->unk_04 == 0xD) { + func_843161F8(temp_s0, 0xA0, 0x78); + func_84318640(temp_s0, temp_s0->unk_14.x, temp_s0->unk_14.y); + + temp_s0->unk_08++; + if (temp_s0->unk_08 == 0x46) { + temp_s0->unk_00++; + } + } else { + if (temp_s0->unk_04 == 0xE) { + func_84318640(temp_s0, temp_s0->unk_14.x, temp_s0->unk_14.y); + } else { + func_84315EC0(temp_s0, arg0, arg1); + func_84318640(temp_s0, temp_s0->unk_14.x, temp_s0->unk_14.y); + + temp_s0->unk_08++; + if (temp_s0->unk_08 == 0x2D) { + temp_s0->unk_00++; + } + } + } + break; + } +} + +void func_843193F4(unk_D_84390010* arg0) { + arg0->unk_8C4.unk_00 = 0; + arg0->unk_8C4.unk_04 = 0; + arg0->unk_8C4.unk_48[0] = 0; + arg0->unk_8C4.unk_08[0] = 0; +} + +void func_84319408(unk_D_84390010* arg0, s32 arg1) { + D_843901A0->unk_000 = arg0->unk_720->unk_08[arg0->unk_654.unk_2C]->unk_001; + arg0->unk_8C4.unk_00 = 1; + func_8002D5D4(0x19, arg0->unk_724->unk_01C[arg0->unk_654.unk_08].unk_30); + func_8002D7C0(arg0->unk_8C4.unk_48, 0x40, D_843900B0, arg1); +} + +void func_843194A0(unk_D_84390010* arg0) { + unk_D_800AE540_0004* temp_t0 = arg0->unk_720->unk_08[arg0->unk_654.unk_2C]; + + if (arg0->unk_8C4.unk_48[arg0->unk_8C4.unk_04] != '\x00') { + arg0->unk_8C4.unk_08[arg0->unk_8C4.unk_04] = arg0->unk_8C4.unk_48[arg0->unk_8C4.unk_04]; + arg0->unk_8C4.unk_04++; + } + + if (arg0->unk_8C4.unk_48[arg0->unk_8C4.unk_04] != '\x00') { + arg0->unk_8C4.unk_08[arg0->unk_8C4.unk_04] = arg0->unk_8C4.unk_48[arg0->unk_8C4.unk_04]; + arg0->unk_8C4.unk_04++; + } + + arg0->unk_8C4.unk_08[arg0->unk_8C4.unk_04] = '\x00'; + + if (arg0->unk_8C4.unk_48[0] != 0) { + if (arg0 == D_84390018) { + func_843162E4(temp_t0->unk_001, 0x5F, 0xE, &arg0->unk_8C4.unk_08); + } else { + func_843162E4(temp_t0->unk_001, 0x17, 0xBB, &arg0->unk_8C4.unk_08); + } + } +} + +void func_84319564(void) { + unk_D_84390010_654* sp1C = &D_84390010[0]->unk_654; + unk_D_84390010_654* sp18 = &D_84390010[1]->unk_654; + + if ((D_800AE540.unk_11ED != 0) && (D_84390010[1]->unk_728.unk_168->unk_1C == 0x103) && + (D_84390010[0]->unk_728.unk_168->unk_1C == 0x17)) { + func_843118A8(0x101, 0x64); + if (D_84390134 == 0) { + if (sp1C->unk_10 != 3) { + func_843116D8(0x46, 0x4D); + } + + if (sp18->unk_10 != 3) { + func_843116D8(0xE8, 0x96); + } + } + } +} + +void func_8431962C(void) { + D_843901A0 = main_pool_alloc(sizeof(unk_D_843901A0), 0); + bzero(D_843901A0, sizeof(unk_D_843901A0)); +} + +void func_84319668(void) { + D_843901A0->unk_004 = 0; + D_843901A0->unk_008[D_843901A0->unk_004] = 0; + func_8431790C(); +} + +void func_843196A4(void) { + unk_D_84390010_654* sp1C = &D_84390010[0]->unk_654; + unk_D_84390010_654* sp18 = &D_84390010[1]->unk_654; + + if (1) {} + + func_843190A8(0xA0, 0xC8); + + if (D_800AE540.unk_0000 == 0x10) { + func_8431712C(); + func_8431694C(); + } + + switch (D_84390240.unk_00->unk_1C) { + case 1: + func_843172A0(D_84390010[0], sp1C); + func_84317558(D_84390010[1], sp18); + func_843194A0(D_84390010[0]); + func_843194A0(D_84390010[1]); + func_84319564(); + func_84316610(); + break; + + case 2: + func_84317B40(); + func_84316610(); + break; + } +} diff --git a/src/fragments/62/fragment62_304060.c b/src/fragments/62/fragment62_304060.c index 95d289e..e7e41fa 100644 --- a/src/fragments/62/fragment62_304060.c +++ b/src/fragments/62/fragment62_304060.c @@ -1,47 +1,626 @@ -#include "global.h" +#include "fragment62.h" +#include "src/17300.h" +#include "src/F420.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_843197A0.s") +typedef struct unk_D_843859E0 { + /* 0x00 */ u8 unk_00; + /* 0x04 */ f32 unk_04; + /* 0x08 */ s16 unk_08; + /* 0x0A */ s16 unk_0A; + /* 0x0C */ f32 unk_0C; +} unk_D_843859E0; // size = 0x10 -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_84319878.s") +static unk_D_843859E0 D_843859E0[] = { + { + 0x00, + 2002.1199951171875f, + 1367, + -20914, + 50.0f, + }, + { + 0x01, + 1693.1199951171875f, + 183, + -11871, + 50.0f, + }, + { + 0x02, + 1934.97998046875f, + 1217, + 8182, + 50.0f, + }, + { + 0x03, + 1733.780029296875f, + 397, + 6520, + 50.0f, + }, + { + 0x04, + 1102.3900146484375f, + 1577, + -3562, + 50.0f, + }, + { + 0x05, + 1425.7900390625f, + 2285, + -5775, + 50.0f, + }, + { + 0x06, + 871.3599853515625f, + 1825, + -8898, + 50.0f, + }, + { + 0x07, + 1170.8199462890625f, + 4982, + -6725, + 50.0f, + }, + { + 0x11, + 1645.5699462890625f, + 7861, + -122, + 50.0f, + }, + { + 0x01, + 1741.530029296875f, + 6993, + -6029, + 50.0f, + }, + { + 0x06, + 1608.3199462890625f, + 6419, + -16201, + 50.0f, + }, + { + 0x00, + 1122.8599853515625f, + 2584, + -14668, + 50.0f, + }, + { + 0x00, + 1667.239990234375f, + 5360, + 4438, + 50.0f, + }, + { + 0x00, + 1315.9599609375f, + 3001, + -7883, + 50.0f, + }, + { + 0x00, + 1575.4300537109375f, + 5834, + 10901, + 50.0f, + }, + { + 0x00, + 719.8599853515625f, + 3047, + -16384, + 50.0f, + }, + { + 0x00, + 939.3900146484375f, + 2300, + 0, + 50.0f, + }, + { + 0x01, + 560.239990234375f, + 773, + -8863, + 50.0f, + }, + { + 0x01, + 2002.1199951171875f, + 1367, + -20914, + 30.0f, + }, + { + 0x01, + 2002.1199951171875f, + 1367, + -20914, + 30.0f, + }, +}; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_843198EC.s") +s32 func_843197A0(void) { + if (((func_84307C04(D_84390010[0]) + func_84307C04(D_84390010[1])) <= 85.0f) && + (func_84307BAC(D_84390010[0]) == 0.0f) && (func_84307BAC(D_84390010[1]) == 0.0f) && + (D_84390010[0]->unk_000.unk_024.y == 0.0f) && (D_84390010[1]->unk_000.unk_024.y == 0.0f)) { + return 1; + } + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431995C.s") +s32 func_84319878(UNUSED unk_D_84390010* arg0, unk_D_86002F34_00C* arg1) { + unk_D_84390010_654* ptr = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_84319AE8.s") + if ((ptr->unk_2D == 0x10) || ((ptr->unk_34 & 0x4000) != 0)) { + func_8431A4C4(arg1); + return 1; + } + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_84319C58.s") +s32 func_843198EC(UNUSED unk_D_84390010* arg0, UNUSED unk_D_86002F34_00C* arg1) { + unk_D_84390010_654* ptr = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654; + s32 idx = D_84390240.unk_00->unk_2C == 0; + unk_D_84390010_654* ptr2 = &D_84390010[idx]->unk_654; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_84319F10.s") + if ((ptr->unk_34 & 0x4000) || (ptr2->unk_34 & 0x4000)) { + return 1; + } + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431A024.s") +void func_8431995C(unk_D_86002F34_00C* arg0) { + func_8431AE5C(); + arg0->unk_24.fovy = 50.0f; + if (func_843197A0() != 0) { + func_8431BB24(arg0, D_84385B9C, 0, 0, 0.0f, 0.0f); + func_8431BC38(arg0, D_84385B9C, 0x5B0, 0, 550.0f, 0.0f); + } else { + func_8431BB24(arg0, D_84385B90, 0, 0, 0.0f, 0.0f); + func_8431BC38(arg0, D_84385B90, 0x5B0, 0, 550.0f, 0.0f); + } + arg0->unk_60.eye.z *= 0.6; + D_84390240.unk_00->unk_20++; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431A098.s") +void func_84319AE8(unk_D_86002F34_00C* arg0) { + func_8431AE5C(); + arg0->unk_24.fovy = 30.0f; + if (func_843197A0() != 0) { + func_8431BB24(arg0, D_84385B9C, 0, 0, 0.0f, 0.0f); + func_8431BC38(arg0, D_84385B9C, 0x1A4E, 0, 1000.0f, 0.0f); + } else { + func_8431BB24(arg0, D_84385B90, 0, 0, 0.0f, 0.0f); + func_8431BC38(arg0, D_84385B90, 0x1A4E, 0, 1000.0f, 0.0f); + } + D_84390240.unk_00->unk_20++; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431A130.s") +void func_84319C58(unk_D_86002F34_00C* arg0, s32 arg1) { + UNUSED s32 pad; + f32 sp50; + f32 sp4C; + s16 sp4A; + unk_D_84390010_654* sp44; + UNUSED s32 pad2; + u16 sp3E; + unk_D_84390010* temp_s0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431A1C8.s") + sp44 = &D_84390010[arg1]->unk_654; + func_8431BA5C(); + func_8431AE4C(arg1); + temp_s0 = D_84390010[D_84390240.unk_00->unk_2C]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431A2C8.s") + if (func_84319878(temp_s0, arg0) == 0) { + func_843081F0(temp_s0, &D_84390240.unk_00->unk_D0); + if (!(sp44->unk_34 & 2)) { + func_84305760(temp_s0, 1); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431A4C4.s") + sp50 = func_84308598(temp_s0) * 3.5f; + sp3E = func_8430C414(3); + sp50 *= ((func_84308014(temp_s0) * 0.5f * sp3E) + 1.0f); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431A718.s") + if (sp50 > 325.0f) { + sp50 = 325.0f; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431A780.s") + sp3E = func_8430C414(4); + sp4C = func_84308548(temp_s0) * sp3E; + sp4A = func_8430C414(0xB4); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431A7B8.s") + if (sp44->unk_34 & 0x200) { + sp4C = 0.0f; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431A8B0.s") + func_8431BAB4(temp_s0, arg0, D_84390240.unk_00->unk_D0, 0, 0, 0, 0.0f); + func_8431BB80(arg0, D_84390240.unk_00->unk_D0, 0, 0x4000 - (sp4A * 0xB6), sp50, sp4C); + func_8431D5C8(arg0); + func_8431B858(temp_s0, arg0); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431A94C.s") + if (temp_s0->unk_000.unk_01A == 0x5F) { + arg0->unk_24.fovy = 50.0f; + } else { + arg0->unk_24.fovy = 30.0f; + } + D_84390240.unk_00->unk_20++; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431A9E0.s") +void func_84319F10(unk_D_86002F34_00C* arg0, s32 arg1) { + UNUSED s32 pad[2]; + unk_D_86B0C160* sp24; + s32 var_a0; + unk_D_84390010* temp_s0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431AA3C.s") + func_8431BA5C(); + func_8431AE4C(arg1); + temp_s0 = D_84390010[D_84390240.unk_00->unk_2C]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431AA78.s") + if (func_84319878(temp_s0, arg0) == 0) { + if (temp_s0->unk_654.unk_34 & 0x200) { + sp24 = &D_84384888[0]; + } else { + var_a0 = func_8430C414(5); + if (var_a0 >= 5) { + var_a0 = 0; + } + sp24 = &D_843847EC[var_a0]; + } + arg0->unk_24.fovy = sp24->unk_30; + func_843081F0(temp_s0, &D_843901B0.unk_00); + func_8431D7D8(sp24, arg0, temp_s0); + func_8431D5D0(arg0, temp_s0, 1); + func_8431D5C8(arg0); + D_84390240.unk_00->unk_20++; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431AAAC.s") +void func_8431A024(unk_D_86002F34_00C* arg0, s32 arg1) { + arg0->unk_24.fovy = 30.0f; + func_8431AE4C(arg1); + if (func_84319878(D_84390010[arg1], arg0) == 0) { + func_8431B500(arg0, arg1); + D_84390240.unk_00->unk_20++; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_304060/func_8431AAFC.s") +void func_8431A098(unk_D_86002F34_00C* arg0) { + func_8431AE4C(D_84390240.unk_00->unk_54 - 1); + if (func_843198EC(D_84390010[D_84390240.unk_00->unk_2C], arg0) != 0) { + D_84390240.unk_00->unk_54 = 0; + func_8431A4C4(arg0); + } else { + func_8431DC78(arg0, D_84390240.unk_00->unk_2C); + D_84390240.unk_00->unk_20++; + } +} + +void func_8431A130(unk_D_86002F34_00C* arg0) { + func_8431AE4C(D_84390240.unk_00->unk_2C); + D_84390240.unk_00->unk_54 = 0; + if (func_843198EC(D_84390010[D_84390240.unk_00->unk_2C], arg0) != 0) { + func_8431A4C4(arg0); + } else { + func_8431DC78(arg0, D_84390240.unk_00->unk_2C); + D_84390240.unk_00->unk_20++; + } +} + +void func_8431A1C8(unk_D_86002F34_00C* arg0) { + s16 var_v1; + + func_8431AE5C(); + if (D_800AE540.unk_0000 == 0x10) { + var_v1 = D_843859E0[D_800AE540.unk_0001].unk_00; + if (D_800AE540.unk_0001 == 7) { + var_v1 += D_800AE540.unk_0002; + } + } else { + var_v1 = D_843859E0[D_800AE540.unk_0000].unk_00; + if (D_800AE540.unk_0000 == 7) { + var_v1 += D_800AE540.unk_0002; + } + } + arg0->unk_24.fovy = D_843859E0[var_v1].unk_0C; + func_8000E88C(&arg0->unk_60.at, 0.0f, 10.0f, 0.0f); + func_80010354(&arg0->unk_60.at, &arg0->unk_60.eye, D_843859E0[var_v1].unk_04, D_843859E0[var_v1].unk_08, + D_843859E0[var_v1].unk_0A); + D_84390240.unk_00->unk_20++; +} + +void func_8431A2C8(unk_D_86002F34_00C* arg0, s32 arg1) { + UNUSED s32 pad[5]; + s32 var_v1; + unk_D_84390010* temp_s0; + f32 tmp1; + s16 tmp4; + s16 tmp3; + f32 tmp2; + + func_8431AFD0(arg0, 10.0f, 12800.0f); + arg0->unk_24.fovy = 60.0f; + func_8431AE4C(arg1); + temp_s0 = D_84390010[arg1]; + + if (func_84319878(temp_s0, arg0) == 0) { + if ((temp_s0->unk_000.unk_01A == 0x98) || (temp_s0->unk_654.unk_34 & 2)) { + func_8431A4C4(arg0); + return; + } + + if ((temp_s0->unk_000.unk_01A == 0x5F) && (arg1 == 1)) { + var_v1 = 0x97; + } else { + var_v1 = (temp_s0->unk_000.unk_01A - 1) & 0xFF; + } + + tmp2 = (D_84384580[arg1]->unk_00.y + temp_s0->unk_000.unk_024.y) + D_84384C30[var_v1].z; + tmp1 = ((D_84384580[arg1]->unk_00.z + D_84384C30[var_v1].y) * temp_s0->unk_4B0) + temp_s0->unk_000.unk_024.x; + + func_8000E88C(&arg0->unk_60.at, tmp1, tmp2, temp_s0->unk_000.unk_024.z); + + tmp1 = D_84384580[D_84390240.unk_00->unk_2C]->unk_00.x * D_84384C30[var_v1].x; + tmp4 = D_84384580[D_84390240.unk_00->unk_2C]->unk_0C; + tmp3 = (temp_s0->unk_4B0 * D_84384580[D_84390240.unk_00->unk_2C]->unk_0E) + func_84308190(temp_s0); + + func_80010354(&arg0->unk_60.at, &arg0->unk_60.eye, tmp1, tmp4, tmp3); + D_84390240.unk_00->unk_20++; + } +} + +void func_8431A4C4(unk_D_86002F34_00C* arg0) { + UNUSED s32 pad[2]; + s32 sp20[] = { + // D_84385B20 + 0x00000000, 0x00000008, 0x00000004, 0x00000014, 0x0000000A, + 0x00000006, 0x00000002, 0x00000016, 0x00000018, 0x000000FF, + }; + + func_8431AFD0(arg0, 20.0f, 12800.0f); + arg0->unk_24.fovy = 30.0f; + if ((D_84390240.unk_00->unk_54 != 0) && (func_8431DBEC(arg0) != 0)) { + D_84390240.unk_00->unk_20 = 0x10; + } else { + D_84390240.unk_00->unk_54 = 0; + if (sp20[D_84390240.unk_00->unk_0C] == 0xFF) { + D_84390240.unk_00->unk_0C = 0; + } + D_84390240.unk_00->unk_20 = sp20[D_84390240.unk_00->unk_0C]; + D_84390240.unk_00->unk_0C++; + } + + func_843087F8(*D_84390010); + func_843087F8(D_84390010[1]); + func_8431AE5C(); + + switch (D_84390240.unk_00->unk_20) { + case 0: + func_8431995C(arg0); + break; + + case 2: + func_84319AE8(arg0); + break; + + case 4: + func_84319C58(arg0, 0); + break; + + case 6: + func_84319C58(arg0, 1); + break; + + case 8: + func_84319F10(arg0, 0); + break; + + case 10: + func_84319F10(arg0, 1); + break; + + case 12: + func_8431A024(arg0, 0); + break; + + case 14: + func_8431A024(arg0, 1); + break; + + case 16: + func_8431A098(arg0); + break; + + case 18: + func_8431A130(arg0); + break; + + case 20: + func_8431A1C8(arg0); + break; + + case 22: + func_8431A2C8(arg0, 0); + break; + + case 24: + func_8431A2C8(arg0, 1); + break; + } +} + +void func_8431A718(unk_D_86002F34_00C* arg0) { + arg0->unk_24.fovy = 50.0f; + if (func_8431B34C(arg0, 0xB6, 0x78DC) != 0) { + func_8431A4C4(arg0); + } else { + arg0->unk_60.eye.z *= 0.6; + } +} + +void func_8431A780(unk_D_86002F34_00C* arg0) { + if (func_8431B34C(arg0, 0xB6, 0x78DC) != 0) { + func_8431A4C4(arg0); + } +} + +void func_8431A7B8(unk_D_86002F34_00C* arg0) { + UNUSED s32 pad; + unk_D_84390010_654* sp18 = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654; + + if ((sp18->unk_2D == 0x10) || ((sp18->unk_34 & 0x4000) != 0)) { + func_8431A4C4(arg0); + return; + } + + if (!(sp18->unk_34 & 0x200)) { + func_8431C784(arg0, D_84390010[D_84390240.unk_00->unk_2C]); + } + + if ((sp18->unk_34 & 1) || (sp18->unk_34 & 2) || (D_84390010[D_84390240.unk_00->unk_2C]->unk_000.unk_01A == 0x98)) { + if (func_8431ADAC(0x5A) != 0) { + func_8431A4C4(arg0); + } + } else if (func_800174E4(&D_84390010[D_84390240.unk_00->unk_2C]->unk_000) != 0) { + func_8431A4C4(arg0); + } +} + +void func_8431A8B0(unk_D_86002F34_00C* arg0) { + unk_D_84390010* sp1C = D_84390010[D_84390240.unk_00->unk_2C]; + + if ((sp1C->unk_654.unk_2D == 0x10) || (sp1C->unk_654.unk_34 & 0x4000)) { + func_8431A4C4(arg0); + } else if ((func_8431ADAC(0x5A) != 0) || (func_8431D118(arg0, sp1C, 1, 0) != 0)) { + func_8431A4C4(arg0); + } +} + +void func_8431A94C(unk_D_86002F34_00C* arg0) { + unk_D_84390010_654* ptr = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654; + + if ((ptr->unk_2D == 0x10) || (ptr->unk_34 & 0x4000)) { + func_8431A4C4(arg0); + } else { + arg0->unk_24.fovy = 60.0f; + if (func_8431ADAC(0x3C) != 0) { + func_8431A4C4(arg0); + } + } +} + +void func_8431A9E0(unk_D_86002F34_00C* arg0) { + if (func_8431DE30(arg0, D_84390240.unk_00->unk_2C) != 0) { + s32 idx = D_84390240.unk_00->unk_2C == 0; + + D_84390240.unk_00->unk_2C = idx; + D_84390240.unk_00->unk_20 = 0x12; + func_8431A130(arg0); + } +} + +void func_8431AA3C(unk_D_86002F34_00C* arg0) { + if (func_8431DE30(arg0, D_84390240.unk_00->unk_2C) != 0) { + func_8431A4C4(arg0); + } +} + +void func_8431AA78(unk_D_86002F34_00C* arg0) { + if (func_8431ADAC(0x78) != 0) { + func_8431A4C4(arg0); + } +} + +void func_8431AAAC(unk_D_86002F34_00C* arg0) { + func_8431AFD0(arg0, 10.0f, 12800.0f); + arg0->unk_24.fovy = 60.0f; + if (func_8431ADAC(0x3C) != 0) { + func_8431A4C4(arg0); + } +} + +void func_8431AAFC(unk_D_86002F34_00C* arg0) { + if ((D_800AE540.unk_0000 == 0x10) && (D_84390240.unk_00->unk_1C == 1)) { + func_8430FB68(); + } else if (D_84390240.unk_00->unk_1C == 1) { + if ((D_84390240.unk_00->unk_30 == 0) && (D_84390010[0]->unk_728.unk_168->unk_1C == 0x17) && + (D_84390010[1]->unk_728.unk_168->unk_1C == 0x103)) { + func_8430FB68(); + } else if ((D_84390240.unk_00->unk_30 == 0) && (D_84390010[0]->unk_728.unk_168->unk_1C < 0xE) && + (D_84390010[1]->unk_728.unk_168->unk_1C >= 0x10D)) { + func_8430D30C(); + } + } + + switch (D_84390240.unk_00->unk_20) { + case 1: + func_8431A718(arg0); + break; + + case 3: + func_8431A780(arg0); + break; + + case 5: + func_8431A7B8(arg0); + break; + + case 7: + func_8431A7B8(arg0); + break; + + case 9: + func_8431A8B0(arg0); + break; + + case 11: + func_8431A8B0(arg0); + break; + + case 13: + func_8431A94C(arg0); + break; + + case 15: + func_8431A94C(arg0); + break; + + case 17: + func_8431A9E0(arg0); + break; + + case 19: + func_8431AA3C(arg0); + break; + + case 21: + func_8431AA78(arg0); + break; + + case 23: + func_8431AAAC(arg0); + break; + + case 25: + func_8431AAAC(arg0); + break; + + case 50: + func_8431A4C4(arg0); + break; + } +} diff --git a/src/fragments/62/fragment62_3055E0.c b/src/fragments/62/fragment62_3055E0.c index 118485c..8aceabf 100644 --- a/src/fragments/62/fragment62_3055E0.c +++ b/src/fragments/62/fragment62_3055E0.c @@ -1,164 +1,1420 @@ -#include "global.h" +#include "fragment62.h" +#include "src/12D80.h" +#include "src/F420.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431AD20.s") +unk_D_843901B0 D_843901B0; +f32 D_843901F0; +f32 D_843901F4; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431AD68.s") +static s32 D_84385B50 = 0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431ADAC.s") +f32 func_8431AD20(unk_D_84390010* arg0, f32 arg1, f32 arg2) { + f32 temp_fv1 = func_84308598(arg0) * arg1; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431ADF0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431AE20.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431AE4C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431AE5C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431AE6C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431AE7C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431AED8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431AF58.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431AFB4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431AFD0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431AFE4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431B004.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431B078.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431B174.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431B290.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431B2B8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431B34C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431B42C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431B4C0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431B500.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431B830.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431B858.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431BA5C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431BAB4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431BB24.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431BB80.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431BBDC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431BC38.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431BCA4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431BD10.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431BD18.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431BD94.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431C594.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431C71C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431C750.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431C784.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431C7A4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431C8E0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431CB54.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431CC38.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431CCFC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431CEF0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431CFA4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431D048.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431D118.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431D318.s") - -void func_8431D5C8(void) { + if (arg2 < temp_fv1) { + return arg2; + } + return temp_fv1; } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431D5D0.s") +s32 func_8431AD68(s32 arg0) { + D_84390240.unk_00->unk_10++; + if (D_84390240.unk_00->unk_10 >= arg0) { + D_84390240.unk_00->unk_10 = 0; + return 1; + } + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431D704.s") +s32 func_8431ADAC(s32 arg0) { + D_84390240.unk_00->unk_14++; + if (D_84390240.unk_00->unk_14 >= arg0) { + D_84390240.unk_00->unk_14 = 0; + return 1; + } + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431D750.s") +s32 func_8431ADF0(s32 arg0) { + if (D_84390240.unk_00->unk_14 >= arg0) { + return 1; + } + D_84390240.unk_00->unk_14++; + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431D764.s") +s32 func_8431AE20(s32 arg0) { + if (D_84390240.unk_00->unk_14 >= arg0) { + return 1; + } + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431D7B0.s") +void func_8431AE4C(s32 arg0) { + D_84390240.unk_00->unk_2C = arg0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431D7C4.s") +void func_8431AE5C(void) { + D_84390240.unk_00->unk_14 = 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431D7D8.s") +void func_8431AE6C(void) { + D_84390240.unk_00->unk_10 = 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431D968.s") +void func_8431AE7C(unk_D_86002F34_00C* arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, s16 arg5, s16 arg6) { + func_8000E88C(&arg0->unk_60.at, arg1, arg2, arg3); + func_80010354(&arg0->unk_60.at, &arg0->unk_60.eye, arg4, arg5, arg6); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431DA38.s") +void func_8431AED8(unk_D_84390010* arg0, Vec3f* arg1) { + UNUSED s32 pad; + u8 sp18[] = { + 0x52, 0x73, 0x59, 0x91, 0x5F, 0x82, 0x58, 0x66, 0x0A, + }; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431DBEC.s") + if (func_84307AE0(arg0->unk_000.unk_01A, sp18, 9) != 0) { + func_8431AF58(arg0, arg1, 9); + } else { + func_8431AF58(arg0, arg1, 0x64); + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431DC78.s") +void func_8431AF58(unk_D_84390010* arg0, Vec3f* arg1, s32 arg2) { + if (func_80015390(&arg0->unk_000, arg2, arg1) == NULL) { + func_843081F0(arg0, arg1); + arg1->x = func_84307DE0(arg0); + arg1->z = 0.0f; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431DE30.s") +void func_8431AFB4(s32 arg0, s32 arg1) { + D_84390240.unk_00->unk_1C = arg0; + D_84390240.unk_00->unk_20 = arg1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431DF98.s") +void func_8431AFD0(unk_D_86002F34_00C* arg0, f32 arg1, f32 arg2) { + arg0->unk_24.near = arg1; + arg0->unk_24.far = arg2; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431E118.s") +void func_8431AFE4(s32 arg0, u16 arg1) { + D_84390240.unk_00->unk_30 = arg0; + D_84390240.unk_00->unk_2E = arg1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431E1DC.s") +void func_8431B004(void) { + if (D_84390240.unk_00->unk_18 == 2) { + if (D_84390240.unk_00->unk_44 == 1) { + func_8431AFB4(1, 0x32); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431E368.s") + if (D_84390240.unk_00->unk_44 == 2) { + D_84390240.unk_00->unk_2C = D_84390240.unk_00->unk_2A; + func_8431AFB4(2, 0); + } + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431E4DC.s") +void func_8431B078(unk_D_84390010* arg0) { + unk_func_80026268_arg0* ptr = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431E63C.s") + D_84390240.unk_00->unk_68 = ((ptr->unk_02 - arg0->unk_654.unk_38.unk_0C) / 996.0f) * 1400.0f; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431E7D0.s") + if (D_84390240.unk_00->unk_68 == 0.0f) { + D_84390240.unk_00->unk_68 = 0.0f; + } else if (D_84390240.unk_00->unk_68 <= 20.0f) { + D_84390240.unk_00->unk_68 = 20.0f; + } else if (D_84390240.unk_00->unk_68 >= 50.0f) { + D_84390240.unk_00->unk_68 = 50.0f; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431E90C.s") + D_84390240.unk_00->unk_7A = 0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431EA1C.s") + if (D_84390288 != 0) { + D_84390240.unk_00->unk_68 = 25.0f; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431EAB8.s") +void func_8431B174(unk_D_86002F34_00C* arg0) { + UNUSED s32 pad; + f32 sp30; + f32 temp_fv0; + s16 sp2A; + s16 sp28; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431EBD0.s") + func_8430C070(&arg0->unk_60.eye, &arg0->unk_60.at, &sp30, &sp28, &sp2A); + D_84390240.unk_00->unk_7A += 0x38E0; + func_8430C718(&D_84390240.unk_00->unk_68, 0.0f, 0.18f); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431ECEC.s") + temp_fv0 = COSS(D_84390240.unk_00->unk_7A) * D_84390240.unk_00->unk_68; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431EE08.s") + arg0->unk_60.eye.y += temp_fv0 / 3.0f; + arg0->unk_60.at.y += temp_fv0 / 3.0f; + arg0->unk_60.eye.x += temp_fv0 * SINS(sp2A + 0x4000); + arg0->unk_60.at.x += temp_fv0 * SINS(sp2A + 0x4000); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431EF54.s") +void func_8431B290(UNUSED unk_D_84390010* arg0) { + D_84390240.unk_00->unk_68 = 30.0f; + D_84390240.unk_00->unk_7A = 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431F050.s") +s32 func_8431B2B8(s16 arg0, s16 arg1) { + s16 temp_v1; + s16 var_v1; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431F194.s") + temp_v1 = arg1 - arg0; + var_v1 = arg1; + if (temp_v1 > 0) { + temp_v1 -= 0xE38; + if (temp_v1 > 0) { + var_v1 -= temp_v1; + } else { + var_v1 = arg1; + } + } else { + temp_v1 += 0xE38; + if (temp_v1 < 0) { + var_v1 -= temp_v1; + } else { + var_v1 = arg1; + } + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431F290.s") + if (var_v1 == arg1) { + return 1; + } + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431F420.s") +s32 func_8431B34C(unk_D_86002F34_00C* arg0, s16 arg1, s16 arg2) { + if (arg1 > 0) { + D_84390240.unk_00->unk_58 -= arg1; + if ((D_84390240.unk_00->unk_58 < arg2) && ((arg2 - arg1) < D_84390240.unk_00->unk_58)) { + D_84390240.unk_00->unk_58 = arg2; + return 1; + } + } else { + D_84390240.unk_00->unk_58 -= arg1; + if ((arg2 < D_84390240.unk_00->unk_58) && (D_84390240.unk_00->unk_58 < (arg2 - arg1))) { + D_84390240.unk_00->unk_58 = arg2; + return 1; + } + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3055E0/func_8431F500.s") + func_80010354(&arg0->unk_60.at, &arg0->unk_60.eye, D_84390240.unk_00->unk_5C, D_84390240.unk_00->unk_56, + D_84390240.unk_00->unk_58); + return 0; +} + +s32 func_8431B42C(UNUSED unk_D_86002F34_00C* arg0, s16 arg1, s16 arg2) { + D_84390240.unk_00->unk_58 -= arg1; + + if (arg1 > 0) { + if ((arg2 >= D_84390240.unk_00->unk_58) && (D_84390240.unk_00->unk_58 >= (arg2 - arg1))) { + D_84390240.unk_00->unk_58 = arg2; + return 1; + } + } else if ((D_84390240.unk_00->unk_58 >= arg2) && ((arg2 - arg1) >= D_84390240.unk_00->unk_58)) { + D_84390240.unk_00->unk_58 = arg2; + return 1; + } + return 0; +} + +void func_8431B4C0(s16 arg0, s16 arg1, f32 arg2) { + D_84390240.unk_00->unk_56 = arg0; + D_84390240.unk_00->unk_58 = arg1; + D_84390240.unk_00->unk_5C = arg2; +} + +void func_8431B500(unk_D_86002F34_00C* arg0, s32 arg1) { + static u8 D_84385B60 = 0x5F; + static u16 D_84385B64 = 0x38F; + + unk_D_84390010_654* sp6C; + UNUSED s32 pad; + unk_D_84390010* temp_s0; + Vec3f sp58; + f32 sp54; + UNUSED u16 pad2; + UNUSED u8 pad3; + u8 sp50; + UNUSED u16 pad4; + u16 sp4C; + s32 idx = D_84390240.unk_00->unk_2C == 0; + + sp6C = &D_84390010[idx]->unk_654; + sp50 = D_84385B60; + sp4C = D_84385B64; + temp_s0 = D_84390010[arg1 == 0]; + arg0->unk_24.fovy = 60.0f; + + func_8431AE5C(); + func_843081F0(temp_s0, &sp58); + + sp58.y /= 3.0f; + if (temp_s0->unk_654.unk_34 & 0x4000) { + sp58.y = 0.0f; + } + + func_8431BAB4(temp_s0, arg0, sp58, 0, 0, 0.0f, 0.0f); + + if ((sp6C->unk_2D != 0x10) && !(sp6C->unk_34 & 0x4000)) { + func_84305760(temp_s0, 1); + } + + temp_s0 = D_84390010[arg1]; + if (temp_s0->unk_448.unk_24.unk_0C.x == 0.0f) { + func_843081F0(temp_s0, &sp58); + } else { + func_8430C1E4(&sp58, &temp_s0->unk_448.unk_24.unk_0C); + sp58.y += temp_s0->unk_000.unk_024.y - func_84307BAC(temp_s0); + } + + sp54 = func_8431AD20(temp_s0, 3.0f, 300.0f); + if ((func_84307AE0(temp_s0->unk_000.unk_01A, &sp50, 1) != 0) && (arg1 == 1)) { + func_8431BB80(arg0, sp58, 0, func_84308190(temp_s0) - (temp_s0->unk_4B0 * 0x6AA4), sp54, 20.0f); + } else if (func_84307AE0(temp_s0->unk_000.unk_01A, (u8*)&sp4C, 2) != 0) { + func_8431BB80(arg0, sp58, 0, func_84308190(temp_s0) - (temp_s0->unk_4B0 * 0x6AA4), sp54, 20.0f); + } else { + func_8431BB80(arg0, sp58, 0, func_84308190(temp_s0) - (temp_s0->unk_4B0 * 0x754E), sp54, 0.0f); + } +} + +void func_8431B830(unk_D_86002F34_00C* arg0) { + if (arg0->unk_60.eye.y <= 13.0f) { + arg0->unk_60.eye.y = 13.0f; + } +} + +void func_8431B858(unk_D_84390010* arg0, unk_D_86002F34_00C* arg1) { + unk_D_84390010_448* sp38 = &arg0->unk_448; + UNUSED s32 pad[5]; + f32 sp3C = 0.0f; + + if (func_84307AE0(arg0->unk_000.unk_01A, &D_843845F0, 1) != 0) { + sp3C = func_84308548(arg0) / 1.5f; + } else if (func_84307AE0(arg0->unk_000.unk_01A, &D_843845F4, 1) != 0) { + sp3C = func_84308548(arg0) * 0.5f; + } else if ((func_84307AE0(arg0->unk_000.unk_01A, &D_843845F8, 1) != 0) && (arg0->unk_654.unk_34 & 0x200)) { + sp3C = 2.0f * func_84308548(arg0); + } else if ((func_84307AE0(arg0->unk_000.unk_01A, D_843845FC, 2) != 0) && (arg0->unk_654.unk_34 & 0x200)) { + sp3C = func_84308548(arg0) * 1.5f; + } + + func_8000E88C(&arg0->unk_448.unk_18, arg0->unk_448.unk_24.unk_00.x, arg0->unk_448.unk_24.unk_00.y, + arg0->unk_448.unk_24.unk_00.z); + arg0->unk_448.unk_18.y = (arg0->unk_000.unk_024.y - func_84307BAC(arg0)) + arg0->unk_448.unk_18.y + sp3C; + func_8430C1E4(&D_84390240.unk_00->unk_B8, &arg1->unk_60.at); + func_8430C1E4(&D_84390240.unk_00->unk_C4, &arg1->unk_60.eye); + func_800102A4(&D_84390240.unk_00->unk_B8, &D_84390240.unk_00->unk_C4, &D_84390240.unk_00->unk_70, &sp38->unk_44, + &sp38->unk_46); + func_800102A4(&arg0->unk_448.unk_18, &arg1->unk_60.at, &sp38->unk_4C, &sp38->unk_44, &sp38->unk_46); + D_84390240.unk_00->unk_6C = 0.0f; + D_84390240.unk_00->unk_74 = 0.0f; +} + +void func_8431BA5C(void) { + func_8000E88C(&D_84390240.unk_00->unk_94, 0.0f, 0.0f, 0.0f); + func_8000E88C(&D_84390240.unk_00->unk_A0, 0.0f, 0.0f, 0.0f); +} + +void func_8431BAB4(unk_D_84390010* arg0, unk_D_86002F34_00C* arg1, Vec3f arg2, s16 arg3, s16 arg4, f32 arg5, f32 arg6) { + func_80010354(&arg2, &arg1->unk_60.at, arg5, arg3, arg4); + arg1->unk_60.at.y += arg6; + arg1->unk_60.at.y += func_84307C30(arg0); +} + +void func_8431BB24(unk_D_86002F34_00C* arg0, Vec3f arg1, s16 arg2, s16 arg3, f32 arg4, f32 arg5) { + func_80010354(&arg1, &arg0->unk_60.at, arg4, arg2, arg3); + arg0->unk_60.at.y += arg5; +} + +void func_8431BB80(unk_D_86002F34_00C* arg0, Vec3f arg1, s16 arg2, s16 arg3, f32 arg4, f32 arg5) { + func_80010354(&arg1, &arg0->unk_60.eye, arg4, arg2, arg3); + arg0->unk_60.eye.y += arg5; +} + +void func_8431BBDC(unk_D_86002F34_00C* arg0, s16 arg1, s16 arg2, f32 arg3, f32 arg4) { + func_80010354(&arg0->unk_60.at, &arg0->unk_60.eye, arg3, arg1, arg2); + arg0->unk_60.eye.y += arg4; +} + +void func_8431BC38(unk_D_86002F34_00C* arg0, Vec3f arg1, s16 arg2, s16 arg3, f32 arg4, f32 arg5) { + func_8431B4C0(arg2, arg3, arg4); + func_80010354(&arg1, &arg0->unk_60.eye, arg4, arg2, arg3); + arg0->unk_60.eye.y += arg5; +} + +void func_8431BCA4(unk_D_86002F34_00C* arg0, s16 arg1, s16 arg2, f32 arg3, f32 arg4) { + func_8431B4C0(arg1, arg2, arg3); + func_80010354(&arg0->unk_60.at, &arg0->unk_60.eye, arg3, arg1, arg2); + arg0->unk_60.eye.y += arg4; +} + +void func_8431BD10(UNUSED unk_D_86002F34_00C* arg0) { +} + +void func_8431BD18(f32* arg0, f32* arg1) { + f32 tmp; + + if (*arg0 != *arg1) { + if (*arg1 < *arg0) { + tmp = *arg0 - *arg1; + if (tmp <= 1e-05) { + *arg1 = *arg0; + } + } else { + tmp = *arg1 - *arg0; + if (tmp <= 1e-05) { + *arg0 = *arg1; + } + } + } +} + +void func_8431BD94(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1, UNUSED f32 arg2) { + unk_D_84390010_448* sp2C = &arg1->unk_448; + f32 var_fv1; + Vec3f sp64; + Vec3f sp58; + Vec3f sp4C; + Vec3f sp40; + f32 sp3C; + f32 temp_fv1; + s16 sp36; + s16 sp34; + + func_8430C1E4(&sp4C, &arg0->unk_60.at); + func_8430C1E4(&sp40, &arg0->unk_60.at); + func_8431AED8(arg1, &sp64); + func_800102A4(&sp64, &arg1->unk_448.unk_18, &sp3C, &sp36, &sp34); + + switch (arg1->unk_000.unk_01A) { + case 0x5F: + arg0->unk_24.fovy = 50.0f; + return; + + case 0x82: + arg0->unk_24.fovy = 50.0f; + if (sp3C < (func_84307BD8(arg1) * 0.5f)) { + func_8430C1E4(&sp64, &arg1->unk_448.unk_18); + } + break; + + case 0x1D: + case 0x29: + case 0x32: + case 0x33: + case 0x5B: + if (sp3C < (func_84307BD8(arg1) * 5.0f)) { + func_8430C1E4(&sp64, &arg1->unk_448.unk_18); + } + break; + + case 0x12: + if (sp3C < (func_84307BD8(arg1) * 1.5f)) { + func_8430C1E4(&sp64, &arg1->unk_448.unk_18); + } + break; + + case 0x27: + case 0x58: + case 0x59: + case 0x96: + if (sp3C < func_84307BD8(arg1)) { + func_8430C1E4(&sp64, &arg1->unk_448.unk_18); + } + break; + + case 0x4A: + case 0x65: + case 0x67: + if (sp3C < (func_84307BD8(arg1) / 1.2f)) { + func_8430C1E4(&sp64, &arg1->unk_448.unk_18); + } + break; + + case 0x7: + case 0x11: + case 0x16: + case 0x4C: + case 0x5C: + case 0x83: + if (sp3C < (func_84307BD8(arg1) / 3.0f)) { + func_8430C1E4(&sp64, &arg1->unk_448.unk_18); + } + break; + + default: + if (sp3C < (func_84307BD8(arg1) * 0.5f)) { + func_8430C1E4(&sp64, &arg1->unk_448.unk_18); + } + break; + } + + sp64.y = arg1->unk_448.unk_18.y; + func_80010354(&sp64, &sp58, sp2C->unk_4C, sp2C->unk_44, sp2C->unk_46); + sp4C.y = sp58.y; + func_800102A4(&sp4C, &sp58, &sp3C, &sp36, &sp34); + + switch (arg1->unk_000.unk_01A) { + case 0x58: + case 0x59: + case 0x87: + var_fv1 = sp3C / (func_84307BD8(arg1) * 50.0f); + break; + + case 0x16: + case 0x4C: + case 0x96: + var_fv1 = sp3C / (func_84307BD8(arg1) * 1.5f); + break; + + default: + temp_fv1 = sp3C / func_84307BD8(arg1); + if (temp_fv1 <= 0.1f) { + var_fv1 = sp3C / (func_84307BD8(arg1) * 15.0f); + } else if (temp_fv1 <= 0.2f) { + var_fv1 = sp3C / (func_84307BD8(arg1) * 7.0f); + } else if (temp_fv1 <= 0.3f) { + var_fv1 = sp3C / (func_84307BD8(arg1) * 5.0f); + } else if (temp_fv1 <= 0.4f) { + var_fv1 = sp3C / (func_84307BD8(arg1) * 3.0f); + } else if (temp_fv1 <= 0.5f) { + var_fv1 = sp3C / (func_84307BD8(arg1) * 1.5f); + } else { + var_fv1 = sp3C / func_84307BD8(arg1); + } + break; + } + + if (var_fv1 > 1.0f) { + var_fv1 = 1.0f; + } + + func_80010354(&sp4C, &arg0->unk_60.at, sp3C * var_fv1, 0, sp34); + func_8431AED8(arg1, &sp64); + func_80010354(&sp64, &sp58, sp2C->unk_4C, sp2C->unk_44, sp2C->unk_46); + + sp3C = sp40.y - sp58.y; + if (sp3C < 0.0f) { + sp3C *= -1.0f; + } + + if (arg1->unk_4B4 == 0xD) { + var_fv1 = 0; + } else if ((arg1->unk_000.unk_01A == 0x58) || (arg1->unk_000.unk_01A == 0x59)) { + temp_fv1 = sp3C / func_84307BD8(arg1); + if (temp_fv1 <= 0.05f) { + var_fv1 = sp3C / (func_84307BD8(arg1) * 90.0f); + } else if (temp_fv1 <= 0.1f) { + var_fv1 = sp3C / (func_84307BD8(arg1) * 70.0f); + } else if (temp_fv1 <= 0.2f) { + var_fv1 = sp3C / (func_84307BD8(arg1) * 65.0f); + } else if (temp_fv1 <= 0.3f) { + var_fv1 = sp3C / (func_84307BD8(arg1) * 63.0f); + } else { + var_fv1 = sp3C / (func_84307BD8(arg1) * 45.0f); + } + } else { + temp_fv1 = sp3C / func_84307BD8(arg1); + if (temp_fv1 <= 0.05f) { + var_fv1 = sp3C / (func_84307BD8(arg1) * 50.0f); + } else if (temp_fv1 <= 0.1f) { + var_fv1 = sp3C / (func_84307BD8(arg1) * 30.0f); + } else if (temp_fv1 <= 0.2f) { + var_fv1 = sp3C / (func_84307BD8(arg1) * 25.0f); + } else if (temp_fv1 <= 0.3f) { + var_fv1 = sp3C / (func_84307BD8(arg1) * 23.0f); + } else { + var_fv1 = sp3C / (func_84307BD8(arg1) * 15.0f); + } + } + + if (var_fv1 > 1.0f) { + var_fv1 = 1.0f; + } + + func_8430C718(&sp40.y, sp58.y, var_fv1); + arg0->unk_60.at.y = sp40.y; + func_8431BD18(&arg0->unk_60.at.x, &arg0->unk_60.eye.x); + func_8431BD18(&arg0->unk_60.at.y, &arg0->unk_60.eye.y); + func_8431BD18(&arg0->unk_60.at.z, &arg0->unk_60.eye.z); +} + +void func_8431C594(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1) { + UNUSED s32 pad[5]; + f32 var_fv0_2; + f32 sp44; + s32 temp_lo; + s16 sp3E; + s16 sp3C; + f32 sp38; + s16 sp36; + s16 sp34; + u8 sp2C[] = { 0x2D, 0x35, 0x79, 0x2C, 0x6E }; + + func_800102A4(&D_84390240.unk_00->unk_B8, &D_84390240.unk_00->unk_C4, &sp38, &sp36, &sp34); + func_800102A4(&arg0->unk_60.at, &arg0->unk_60.eye, &sp44, &sp3E, &sp3C); + + temp_lo = sp34 / 182; + if ((temp_lo == 0x5A) || (temp_lo == -0x5A)) { + if (func_84307AE0(arg1->unk_000.unk_01A, sp2C, sizeof(sp2C)) != 0) { + sp44 = sp38; + } else { + sp44 = func_800104AC(sp44, sp38, 30.0f, 5.0f); + } + } else { + var_fv0_2 = D_84390240.unk_00->unk_70 - sp44; + if (var_fv0_2 < 0.0f) { + var_fv0_2 *= -1.0f; + } + + if (sp44 < sp38) { + sp44 = func_800104AC(sp44, D_84390240.unk_00->unk_70, var_fv0_2 * 0.4f, var_fv0_2 * 0.08f); + } + } + func_80010354(&arg0->unk_60.at, &arg0->unk_60.eye, sp44, sp36, sp34); +} + +void func_8431C71C(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1) { + func_8431BD94(arg0, arg1, 50.0f); + func_8431C594(arg0, arg1); +} + +void func_8431C750(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1) { + func_8431BD94(arg0, arg1, 90.0f); + func_8431C594(arg0, arg1); +} + +void func_8431C784(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1) { + func_8431BD94(arg0, arg1, 50.0f); +} + +void func_8431C7A4(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1) { + unk_D_84390010_448* ptr = &arg1->unk_448; + UNUSED s32 pad; + Vec3f sp54; + Vec3f sp48; + Vec3f sp3C; + f32 sp38; + f32 var_fa0; + s16 sp32; + s16 sp30; + + func_8430C1E4(&sp3C, &arg0->unk_60.at); + func_8431AED8(arg1, &sp54); + func_800102A4(&sp54, &arg1->unk_448.unk_18, &sp38, &sp32, &sp30); + + if (sp38 < (func_84307BD8(arg1) * 1.1f)) { + func_8430C1E4(&sp54, &arg1->unk_448.unk_18); + } + + func_80010354(&sp54, &sp48, ptr->unk_4C, ptr->unk_44, ptr->unk_46); + func_800102A4(&sp3C, &sp48, &sp38, &sp32, &sp30); + + var_fa0 = (sp38 / (func_84307BD8(arg1) * 80.0f)) * 3.0f; + if (var_fa0 >= 1.0f) { + var_fa0 = 1.0f; + } + + func_80010354(&sp3C, &arg0->unk_60.at, sp38 * var_fa0, sp32, sp30); +} + +s32 func_8431C8E0(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1) { + Vec3f sp84; + UNUSED s32 pad[3]; + Vec3f sp6C; + Vec3f sp60; + UNUSED s32 pad2[3]; + s16 sp52; + s16 sp50; + s16 sp4E; + s16 sp4C; + UNUSED s32 pad3[2]; + unk_D_800FCB18* temp_v1; + + temp_v1 = &D_84390010[func_84307F00(arg1) == 0]->unk_654.unk_38; + + if (arg1->unk_654.unk_34 & 0x4000) { + return 1; + } + + if (temp_v1->unk_5A == 0x53) { + func_8431F500(arg1, arg0, 4); + return 1; + } + + func_8430C1E4(&sp6C, &arg0->unk_60.at); + func_8430C1E4(&sp60, &arg0->unk_60.eye); + + if ((arg1->unk_000.unk_01A != 0x5F) && (arg1->unk_4B4 != 0xD)) { + func_8431C7A4(arg0, arg1); + } + + func_843081F0(arg1, &sp84); + D_843901F0 = func_8431AD20(arg1, 3.5f, 300.0f); + func_8431BB80(arg0, sp84, 0, func_84308190(arg1), D_843901F0, 0.0f); + + if (arg0->unk_60.eye.y <= 13.0f) { + arg0->unk_60.eye.y = 13.0f; + } + + func_8430C070(&sp84, &arg0->unk_60.eye, &D_843901F4, &sp4C, &sp50); + func_8430C070(&sp84, &sp60, &D_843901F0, &sp4E, &sp52); + func_8430C718(&D_843901F0, D_843901F4, 0.2f); + func_8430C718(&D_84390240.unk_00->unk_94.z, 0.2f, 0.03f); + func_8430C59C(&sp52, sp50, D_84390240.unk_00->unk_94.z); + func_8430C59C(&sp4E, sp4C, D_84390240.unk_00->unk_94.z); + func_8431BB80(arg0, sp84, sp4E, sp52, D_843901F0, 0.0f); + + if ((sp4C == sp4E) && (sp50 == sp52)) { + return 1; + } + return 0; +} + +void func_8431CB54(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1) { + unk_D_84390010_448* ptr = &arg1->unk_448; + Vec3f sp58; + Vec3f sp4C; + UNUSED s32 pad[3]; + Vec3f sp34; + f32 sp30; + UNUSED s32 pad2[1]; + s16 sp2A; + s16 sp28; + + func_8430C1E4(&sp34, &arg0->unk_60.at); + func_8431AED8(arg1, &sp58); + func_80010354(&sp58, &sp4C, ptr->unk_4C, ptr->unk_44, ptr->unk_46); + func_800102A4(&sp34, &sp4C, &sp30, &sp2A, &sp28); + D_84390240.unk_00->unk_94.z = func_800104AC(D_84390240.unk_00->unk_94.z, 0.8f, 0.05f, 0.05f); + func_80010354(&sp34, &arg0->unk_60.at, D_84390240.unk_00->unk_94.z * sp30, sp2A, sp28); +} + +void func_8431CC38(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1) { + unk_D_84390010_448* ptr = &arg1->unk_448; + Vec3f sp60; + Vec3f sp54; + UNUSED s32 pad[3]; + Vec3f sp3C; + UNUSED s32 pad2[3]; + + func_8430C1E4(&sp3C, &arg0->unk_60.at); + func_8431AED8(arg1, &sp60); + func_80010354(&sp60, &sp54, ptr->unk_4C, ptr->unk_44, ptr->unk_46); + func_8430C718(&arg0->unk_60.at.y, sp54.y, 0.1f); + if (arg0->unk_60.at.y < -10.0f) { + arg0->unk_60.at.y = -10.0f; + } + func_8430C718(&arg0->unk_60.eye.y, func_84308548(arg1) * 4.0f, 0.04f); +} + +void func_8431CCFC(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1) { + Vec3f sp74; + Vec3f sp68; + Vec3f sp5C; + f32 sp58; + s16 sp56; + s16 sp54; + s16 sp52; + s16 sp50; + s16 sp4E; + s16 sp4C; + + func_8430C1E4(&sp68, &arg0->unk_60.at); + func_8430C1E4(&sp5C, &arg0->unk_60.eye); + func_843081F0(arg1, &sp74); + D_843901F0 = func_8431AD20(arg1, 3.5f, 300.0f); + func_8431BAB4(arg1, arg0, sp74, 0, func_84308190(arg1), 0.0f, 0.0f); + func_8431BB80(arg0, sp74, 0, func_84308190(arg1), D_843901F0, 0.0f); + func_8430C070(&arg0->unk_60.at, &arg0->unk_60.eye, &D_843901F4, &sp4C, &sp50); + func_8430C070(&sp68, &sp5C, &D_843901F0, &sp4E, &sp52); + func_8430C718(&D_843901F0, D_843901F4, 0.05f); + func_8430C4F8(&sp52, sp50, 0x108); + func_8430C4F8(&sp4E, sp4C, 0xB6); + func_8430C070(&sp68, &arg0->unk_60.at, &sp58, &sp56, &sp54); + func_80010354(&sp68, &arg0->unk_60.at, sp58 / 8, sp56, sp54); + func_8431BBDC(arg0, sp4E, sp52, D_843901F0, 0.0f); +} + +void func_8431CEF0(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1, UNUSED s32 arg2) { + unk_D_84390010_448* ptr = &arg1->unk_448; + Vec3f sp50; + Vec3f sp44; + Vec3f sp38; + f32 sp34; + s16 sp32; + s16 sp30; + UNUSED s32 pad; + + func_8431AED8(arg1, &sp50); + func_8430C1E4(&sp38, &arg0->unk_60.at); + func_80010354(&sp50, &sp44, ptr->unk_4C, ptr->unk_44, ptr->unk_46); + func_8430C070(&sp38, &sp44, &sp34, &sp32, &sp30); + func_80010354(&sp38, &arg0->unk_60.at, sp34 * 0.1f, sp32, sp30); +} + +void func_8431CFA4(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1) { + s16 sp26; + s16 sp24; + + D_843901F0 = func_8431AD20(arg1, 8.0f, 500.0f); + func_8430C070(&arg0->unk_60.at, &arg0->unk_60.eye, &D_843901F4, &sp26, &sp24); + func_8430C718(&D_843901F4, D_843901F0, 0.03f); + func_8430C4F8(&sp26, 0xE38, 0x5B); + func_8431BBDC(arg0, sp26, sp24, D_843901F4, 0.0f); +} + +s32 func_8431D048(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1) { + Vec3f sp3C; + Vec3f sp30; + f32 sp2C; + s16 sp2A; + s16 sp28; + + func_8430C1E4(&sp3C, &arg0->unk_60.at); + func_8430C1E4(&sp30, &arg0->unk_60.eye); + func_8431EF54(arg0, arg1); + func_800102A4(&sp30, &arg0->unk_60.eye, &sp2C, &sp28, &sp2A); + func_80010354(&sp30, &arg0->unk_60.eye, sp2C / 2, sp28, sp2A); + func_8430C1E4(&arg0->unk_60.at, &sp3C); + + if (sp2C <= 0.5f) { + return 1; + } + return 0; +} + +s32 func_8431D118(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1, s32 arg2, s32 arg3) { + UNUSED s32 pad; + Vec3f sp60; + Vec3f sp54; + Vec3f sp48; + Vec3f sp3C; + f32 sp38; + f32 sp34; + s16 sp32; + s16 sp30; + + if (D_843901B0.unk_3C != 200.0f) { + arg0->unk_24.fovy = D_843901B0.unk_3C; + } else if (arg3 == 1) { + func_8430C718(&arg0->unk_24.fovy, 30.0f, 0.06f); + } else { + arg0->unk_24.fovy = 30.0f; + } + + func_8430C718(&D_84390240.unk_00->unk_94.z, D_843901B0.unk_34, D_843901B0.unk_38); + func_80010354(&D_843901B0.unk_00, &sp54, D_843901B0.unk_30, D_843901B0.unk_26, D_843901B0.unk_28); + func_8430C1E4(&sp48, &arg0->unk_60.eye); + func_8430C070(&sp48, &sp54, &sp38, &sp32, &sp30); + func_80010354(&sp48, &arg0->unk_60.eye, D_84390240.unk_00->unk_94.z * sp38, sp32, sp30); + func_80010354(&D_843901B0.unk_00, &sp3C, D_843901B0.unk_2C, D_843901B0.unk_20, D_843901B0.unk_22); + + if (arg2 == 1) { + sp3C.y += func_84307C30(arg1); + } + + func_8430C1E4(&sp60, &arg0->unk_60.at); + func_8430C070(&sp60, &sp3C, &sp34, &sp32, &sp30); + func_80010354(&sp60, &arg0->unk_60.at, D_84390240.unk_00->unk_94.z * sp34, sp32, sp30); + + if ((sp38 <= 1.75f) && (sp34 <= 1.75f)) { + return 1; + } + return 0; +} + +s32 func_8431D318(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1) { + Vec3f sp6C; + Vec3f sp60; + Vec3f sp54; + Vec3f sp48; + f32 sp44; + f32 sp40; + f32 sp3C; + f32 var_fa1; + s16 sp36; + s16 sp34; + + if (D_843901B0.unk_3C != 200.0f) { + arg0->unk_24.fovy = D_843901B0.unk_3C; + } else { + arg0->unk_24.fovy = 30.0f; + } + + func_8430C718(&D_84390240.unk_00->unk_94.z, D_843901B0.unk_34, D_843901B0.unk_38); + func_8431AED8(arg1, &sp6C); + func_800102A4(&D_843901B0.unk_00, &sp6C, &sp44, &sp36, &sp34); + + var_fa1 = sp44 / (func_84307BD8(arg1) * 40.0f); + if (var_fa1 >= 0.6f) { + var_fa1 = 1.0f; + } + + sp44 *= var_fa1; + sp44 += D_843901B0.unk_30; + + func_80010354(&D_843901B0.unk_00, &sp60, sp44, D_843901B0.unk_26, D_843901B0.unk_28); + func_8430C1E4(&sp54, &arg0->unk_60.eye); + func_8430C070(&sp54, &sp60, &sp40, &sp36, &sp34); + func_80010354(&sp54, &arg0->unk_60.eye, D_84390240.unk_00->unk_94.z * sp40, sp36, sp34); + func_8431AED8(arg1, &sp6C); + func_800102A4(&D_843901B0.unk_00, &sp6C, &sp44, &sp36, &sp34); + + var_fa1 = sp44 / (func_84307BD8(arg1) * 40.0f); + if (var_fa1 >= 0.6f) { + var_fa1 = 1; + } + sp44 *= var_fa1; + sp44 += D_843901B0.unk_2C; + + func_80010354(&D_843901B0.unk_00, &sp48, sp44, D_843901B0.unk_20, D_843901B0.unk_22); + sp48.y += func_84307C30(arg1); + func_8430C1E4(&sp6C, &arg0->unk_60.at); + func_8430C070(&sp6C, &sp48, &sp3C, &sp36, &sp34); + func_80010354(&sp6C, &arg0->unk_60.at, D_84390240.unk_00->unk_94.z * sp3C, sp36, sp34); + + if ((sp40 <= 1.0f) && (sp3C <= 1.0f)) { + return 1; + } + return 0; +} + +void func_8431D5C8(UNUSED unk_D_86002F34_00C* arg0) { + if (arg0) {} +} + +void func_8431D5D0(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1, s32 arg2) { + func_8431BB24(arg0, D_843901B0.unk_00, D_843901B0.unk_0C, D_843901B0.unk_0E, D_843901B0.unk_18, 0.0f); + if (arg2 == 1) { + arg0->unk_60.at.y += func_84307C30(arg1); + func_8431BB80(arg0, arg0->unk_60.at, D_843901B0.unk_12, D_843901B0.unk_14, D_843901B0.unk_1C, 0.0f); + } else { + func_8431BB80(arg0, D_843901B0.unk_00, D_843901B0.unk_12, D_843901B0.unk_14, D_843901B0.unk_1C, 0.0f); + } +} + +void func_8431D704(s16 arg0, s16 arg1, s16 arg2, s16 arg3) { + D_843901B0.unk_0C = arg0; + D_843901B0.unk_0E = arg1; + D_843901B0.unk_20 = arg2; + D_843901B0.unk_22 = arg3; +} + +void func_8431D750(f32 arg0, f32 arg1) { + D_843901B0.unk_18 = arg0; + D_843901B0.unk_2C = arg1; +} + +void func_8431D764(s16 arg0, s16 arg1, s16 arg2, s16 arg3) { + D_843901B0.unk_12 = arg0; + D_843901B0.unk_14 = arg1; + D_843901B0.unk_26 = arg2; + D_843901B0.unk_28 = arg3; +} + +void func_8431D7B0(f32 arg0, f32 arg1) { + D_843901B0.unk_1C = arg0; + D_843901B0.unk_30 = arg1; +} + +void func_8431D7C4(f32 arg0, f32 arg1) { + D_843901B0.unk_34 = arg0; + D_843901B0.unk_38 = arg1; +} + +void func_8431D7D8(unk_D_86B0C160* arg0, unk_D_86002F34_00C* arg1, unk_D_84390010* arg2) { + f32 sp34; + f32 sp30; + f32 sp2C; + f32 sp28; + f32 temp_fv1; + UNUSED s16 pad; + s16 sp20; + + func_8431BA5C(); + if (arg0->unk_30 != 200.0f) { + temp_fv1 = arg0->unk_30; + D_843901B0.unk_3C = temp_fv1; + arg1->unk_24.fovy = temp_fv1; + } else { + D_843901B0.unk_3C = arg0->unk_30; + } + + sp34 = func_8431AD20(arg2, arg0->unk_0C, 500.0f); + sp30 = func_8431AD20(arg2, arg0->unk_20, 500.0f); + sp2C = func_8431AD20(arg2, arg0->unk_10, 500.0f); + sp28 = func_8431AD20(arg2, arg0->unk_24, 500.0f); + sp20 = func_84308190(arg2); + + func_8431D704(arg0->unk_00, sp20 - (arg0->unk_02 * arg2->unk_4B0), arg0->unk_14, + func_84308190(arg2) - (arg0->unk_16 * arg2->unk_4B0)); + func_8431D750(sp34, sp30); + sp20 = func_84308190(arg2); + func_8431D764(arg0->unk_06, sp20 - (arg0->unk_08 * arg2->unk_4B0), arg0->unk_1A, + func_84308190(arg2) - (arg0->unk_1C * arg2->unk_4B0)); + func_8431D7B0(sp2C, sp28); + func_8431D7C4(arg0->unk_28, arg0->unk_2C); +} + +void func_8431D968(unk_D_86B0C160* arg0, unk_D_86002F34_00C* arg1) { + f32 sp2C; + f32 sp28; + f32 sp24; + f32 sp20; + f32 tmp; + + func_8431BA5C(); + + if (arg0->unk_30 != 200.0f) { + tmp = arg0->unk_30; + D_843901B0.unk_3C = tmp; + arg1->unk_24.fovy = tmp; + } else { + D_843901B0.unk_3C = arg0->unk_30; + } + + sp2C = arg0->unk_0C; + sp28 = arg0->unk_20; + sp24 = arg0->unk_10; + sp20 = arg0->unk_24; + + func_8431D704(arg0->unk_00, arg0->unk_02, arg0->unk_14, arg0->unk_16); + func_8431D750(sp2C, sp28); + func_8431D764(arg0->unk_06, arg0->unk_08, arg0->unk_1A, arg0->unk_1C); + func_8431D7B0(sp24, sp20); + func_8431D7C4(arg0->unk_28, arg0->unk_2C); +} + +s32 func_8431DA38(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1) { + Vec3f sp64; + Vec3f sp58; + Vec3f sp4C; + Vec3f sp40; + Vec3f sp34; + f32 sp30; + UNUSED s32 pad; + s16 sp2A; + s16 sp28; + + func_8430C718(&arg0->unk_24.fovy, 30.0f, 0.06f); + func_8000E88C(&sp64, arg1->unk_4B0 * -150.0f, 5.0f, 0.0f); + func_8430C718(&D_84390240.unk_00->unk_94.z, 0.2f, 0.06f); + func_80010354(&sp64, &sp4C, 100.0f, 0, func_84308190(arg1)); + func_8430C1E4(&sp40, &arg0->unk_60.eye); + func_8430C070(&sp40, &sp4C, &sp30, &sp2A, &sp28); + func_80010354(&sp40, &arg0->unk_60.eye, D_84390240.unk_00->unk_94.z * sp30, sp2A, sp28); + func_80010354(&sp64, &sp34, 0.0f, 0, func_84308190(arg1)); + func_8430C1E4(&sp58, &arg0->unk_60.at); + func_8430C070(&sp58, &sp34, &sp30, &sp2A, &sp28); + + if (sp30 >= 1.0f) { + func_80010354(&sp58, &arg0->unk_60.at, D_84390240.unk_00->unk_94.z * sp30, sp2A, sp28); + return 0; + } + return 1; +} + +s32 func_8431DBEC(UNUSED unk_D_86002F34_00C* arg0) { + Vec3f sp2C; + Vec3f sp20; + f32 var_fv0; + + func_843081F0(D_84390010[0], &sp2C); + func_843081F0(D_84390010[1], &sp20); + + var_fv0 = sp2C.y - sp20.y; + if (sp2C.y < sp20.y) { + var_fv0 *= -1.0f; + } + + if (var_fv0 > 35.0f) { + return 1; + } + return 0; +} + +void func_8431DC78(unk_D_86002F34_00C* arg0, s32 arg1) { + UNUSED s32 pad; + Vec3f sp60; + Vec3f sp54; + Vec3f sp48; + unk_D_84390010* sp40; + + func_8431BA5C(); + arg0->unk_24.fovy = 30.0f; + + sp40 = D_84390010[arg1]; + func_843081F0(sp40, &sp60); + func_8431BB80(arg0, sp60, 0, sp40->unk_4B0 << 0xE, 100.0f, 0.0f); + func_843081F0(D_84390010[arg1], &sp54); + + func_843081F0(D_84390010[arg1 == 0], &sp48); + sp40 = D_84390010[arg1 == 0]; + func_843081F0(sp40, &sp60); + + if (sp48.y < sp54.y) { + sp60.y = sp54.y * 1.8f; + func_8431BAB4(sp40, arg0, sp60, 0, 0, 0, 0); + } else { + sp60.y = 0.0f; + func_8431BAB4(sp40, arg0, sp60, 0, 0, 0, 0); + } +} + +s32 func_8431DE30(unk_D_86002F34_00C* arg0, s32 arg1) { + UNUSED s32 pad; + Vec3f sp58; + Vec3f sp4C; + Vec3f sp40; + Vec3f sp34; + f32 sp30; + s16 sp2E; + s16 sp2C; + + func_8430C718(&D_84390240.unk_00->unk_94.z, 0.1f, 0.05f); + func_843081F0(D_84390010[arg1], &sp40); + func_843081F0(D_84390010[!arg1], &sp34); + + if (sp34.y < sp40.y) { + func_843081F0(D_84390010[!arg1], &sp4C); + } else { + func_843081F0(D_84390010[!arg1], &sp4C); + sp4C.y *= 1.3f; + } + + func_8430C1E4(&sp58, &arg0->unk_60.at); + func_8430C070(&sp58, &sp4C, &sp30, &sp2E, &sp2C); + func_80010354(&sp58, &arg0->unk_60.at, D_84390240.unk_00->unk_94.z * sp30, sp2E, sp2C); + + if (sp30 <= 1.0f) { + return 1; + } + return 0; +} + +void func_8431DF98(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1) { + func_843081F0(arg1, &D_84390240.unk_00->unk_D0); + + D_84390240.unk_00->unk_D0.x = func_84307DE0(arg1); + D_84390240.unk_00->unk_D0.z = 0.0f; + + if (arg1->unk_654.unk_38.unk_44.unk_00 == 0x6E) { + D_843901F0 = func_8431AD20(arg1, 4.5f, 300.0f); + if (D_843901F0 <= 100.0f) { + D_843901F0 = 100.0f; + } + + if (D_84390240.unk_00->unk_D0.y < 20.0f) { + D_84390240.unk_00->unk_D0.y = 20.0f; + } + } else { + D_843901F0 = func_8431AD20(arg1, 3.5f, 300.0f); + } + + func_8431BAB4(arg1, arg0, D_84390240.unk_00->unk_D0, 0, func_84308190(arg1), 0.0f, 0.0f); + func_8431BB80(arg0, D_84390240.unk_00->unk_D0, 0, func_84308190(arg1), D_843901F0, 0.0f); +} + +void func_8431E118(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1) { + f32 sp3C; + + func_843081F0(arg1, &D_84390240.unk_00->unk_D0); + sp3C = func_8431AD20(arg1, 8.0f, 300.0f); + func_8431BAB4(arg1, arg0, D_84390240.unk_00->unk_D0, 0, func_84308190(arg1), 0.0f, 0.0f); + func_8431BBDC(arg0, 0, arg1->unk_4B0 << 0xE, sp3C, 0.0f); +} + +void func_8431E1DC(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1, s32 arg2) { + func_843081F0(arg1, &D_84390240.unk_00->unk_D0); + D_843901F0 = func_8431AD20(arg1, 0.5f, 100.0f); + D_843901F4 = func_8431AD20(arg1, 5.0f, 300.0f); + func_8431BAB4(arg1, arg0, D_84390240.unk_00->unk_D0, 0, func_84308190(arg1), D_843901F0, 0.0f); + func_8431BB80(arg0, D_84390240.unk_00->unk_D0, 0, func_84308190(arg1) - (arg1->unk_4B0 * 0x31C7), D_843901F4, 0.0f); + + if (arg2 == 1) { + func_8431B858(arg1, arg0); + } else { + func_8431C71C(arg0, arg1); + func_8431C71C(arg0, arg1); + } + + func_8431C71C(arg0, arg1); +} + +void func_8431E368(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1, s32 arg2) { + func_843081F0(arg1, &D_84390240.unk_00->unk_D0); + D_843901F0 = func_8431AD20(arg1, 0.5f, 100.0f); + D_843901F4 = func_8431AD20(arg1, 5.0f, 300.0f); + func_8431BAB4(arg1, arg0, D_84390240.unk_00->unk_D0, 0, func_84308190(arg1), D_843901F0, 0.0f); + func_8431BB80(arg0, D_84390240.unk_00->unk_D0, 0x71C, func_84308190(arg1) - (arg1->unk_4B0 * 0x1555), D_843901F4, + 0.0f); + if (arg2 == 1) { + func_8431B858(arg1, arg0); + } else { + func_8431C71C(arg0, arg1); + func_8431C71C(arg0, arg1); + } + func_8431C71C(arg0, arg1); +} + +void func_8431E4DC(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1, s32 arg2) { + func_843081F0(arg1, &D_84390240.unk_00->unk_D0); + D_843901F0 = func_8431AD20(arg1, 0.5f, 100.0f); + D_843901F4 = func_8431AD20(arg1, 5.0f, 300.0f); + func_8431BAB4(arg1, arg0, D_84390240.unk_00->unk_D0, 0, func_84308190(arg1), D_843901F0, 0.0f); + func_8431BB80(arg0, D_84390240.unk_00->unk_D0, 0xE38, func_84308190(arg1), D_843901F4, 0.0f); + if (arg2 == 1) { + func_8431B858(arg1, arg0); + } else { + func_8431C71C(arg0, arg1); + func_8431C71C(arg0, arg1); + } + func_8431C71C(arg0, arg1); +} + +void func_8431E63C(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1, s32 arg2) { + UNUSED s32 pad[4]; + s16 sp3E; + + func_843081F0(arg1, &D_84390240.unk_00->unk_D0); + D_843901F0 = func_8431AD20(arg1, 0.5f, 100.0f); + D_843901F4 = func_8431AD20(arg1, 5.0f, 300.0f); + func_8431BAB4(arg1, arg0, D_84390240.unk_00->unk_D0, 0, func_84308190(arg1), D_843901F0, 0.0f); + sp3E = func_84308190(arg1); + func_8431BB80(arg0, D_84390240.unk_00->unk_D0, 0, sp3E - (arg1->unk_4B0 * 0x1555), D_843901F4, + -func_84308548(arg1) * 0.8); + if (arg2 == 1) { + func_8431B858(arg1, arg0); + } else { + func_8431C71C(arg0, arg1); + func_8431C71C(arg0, arg1); + } + func_8431C71C(arg0, arg1); +} + +void func_8431E7D0(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1, s32 arg2) { + func_843081F0(arg1, &D_84390240.unk_00->unk_D0); + D_843901F0 = func_8431AD20(arg1, 3.5f, 300.0f); + func_8431BAB4(arg1, arg0, D_84390240.unk_00->unk_D0, 0, func_84308190(arg1), 0.0f, 0.0f); + func_8431BB80(arg0, D_84390240.unk_00->unk_D0, 0, func_84308190(arg1), D_843901F0, 0.0f); + if (arg2 == 1) { + func_8431B858(arg1, arg0); + } else { + func_8431C71C(arg0, arg1); + func_8431C71C(arg0, arg1); + } + func_8431C71C(arg0, arg1); +} + +void func_8431E90C(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1, s32 arg2) { + func_843081F0(arg1, &D_84390240.unk_00->unk_D0); + D_843901F0 = func_8431AD20(arg1, 3.5f, 300.0f); + func_8431BAB4(arg1, arg0, D_84390240.unk_00->unk_D0, 0, func_84308190(arg1), 0.0f, 0.0f); + func_8431BB80(arg0, D_84390240.unk_00->unk_D0, 0, func_84308190(arg1), D_843901F0, 0.0f); + if (arg2 == 1) { + func_8431B858(arg1, arg0); + } +} + +void func_8431EA1C(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1, s32 arg2, s32 arg3) { + func_843081F0(arg1, &D_843901B0.unk_00); + func_8431D7D8(&D_843849C0[arg2], arg0, arg1); + func_8431D5D0(arg0, arg1, 1); + func_8431D5C8(arg0); + if (arg3 == 1) { + func_8431B858(arg1, arg0); + } +} + +void func_8431EAB8(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1) { + func_8431BA5C(); + func_843081F0(arg1, &D_84390240.unk_00->unk_D0); + D_843901F0 = func_8431AD20(arg1, 5.0f, 400.0f); + func_8431BAB4(arg1, arg0, D_84390240.unk_00->unk_D0, 0, arg1->unk_4B0 << 0xE, 0.0f, 0.0f); + func_8431BB80(arg0, D_84390240.unk_00->unk_D0, 0, arg1->unk_4B0 * 0xE38, D_843901F0, 0.0f); + func_8431B858(arg1, arg0); +} + +void func_8431EBD0(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1) { + func_8431BA5C(); + func_843081F0(arg1, &D_84390240.unk_00->unk_D0); + D_843901F0 = func_8431AD20(arg1, 5.0f, 400.0f); + func_8431BAB4(arg1, arg0, D_84390240.unk_00->unk_D0, 0, arg1->unk_4B0 << 0xE, 0.0f, 0.0f); + func_8431BB80(arg0, D_84390240.unk_00->unk_D0, 0x1555, arg1->unk_4B0 * 0xE38, D_843901F0, 0.0f); + func_8431B858(arg1, arg0); +} + +void func_8431ECEC(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1) { + func_843081F0(arg1, &D_84390240.unk_00->unk_D0); + D_843901F0 = func_8431AD20(arg1, 5.0f, 400.0f); + func_8431BAB4(arg1, arg0, D_84390240.unk_00->unk_D0, 0, arg1->unk_4B0 << 0xE, 0.0f, 0.0f); + func_8431BB80(arg0, D_84390240.unk_00->unk_D0, 0, arg1->unk_4B0 * 0xE38, D_843901F0, 2.0f * func_84308548(arg1)); + func_8431B858(arg1, arg0); +} + +void func_8431EE08(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1) { + func_843081F0(arg1, &D_84390240.unk_00->unk_D0); + D_843901F0 = func_8431AD20(arg1, 5.0f, 400.0f); + func_8431BAB4(arg1, arg0, D_84390240.unk_00->unk_D0, 0, arg1->unk_4B0 << 0xE, 0.0f, 0.0f); + func_8431BB80(arg0, D_84390240.unk_00->unk_D0, 0, arg1->unk_4B0 * 0xE38, D_843901F0, -func_84308548(arg1) * 0.8f); + if (arg0->unk_60.eye.y <= 15.0f) { + arg0->unk_60.eye.y = 15.0f; + } + func_8431B858(arg1, arg0); +} + +void func_8431EF54(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1) { + func_843081F0(arg1, &D_84390240.unk_00->unk_D0); + D_843901F0 = func_8431AD20(arg1, 3.5f, 300.0f); + func_8431BAB4(arg1, arg0, D_84390240.unk_00->unk_D0, 0, func_84308190(arg1), 0.0f, 0.0f); + func_8431BB80(arg0, D_84390240.unk_00->unk_D0, 0, func_84308190(arg1), D_843901F0, 0.0f); + func_8431B858(arg1, arg0); +} + +void func_8431F050(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1, s32 arg2) { + func_843081F0(arg1, &D_84390240.unk_00->unk_D0); + D_843901F0 = func_8431AD20(arg1, 3.5f, 300.0f); + D_843901F4 = func_8431AD20(arg1, 0.5f, 100.0f); + func_8431BAB4(arg1, arg0, D_84390240.unk_00->unk_D0, 0, func_84308190(arg1), D_843901F4, 0.0f); + func_8431BB80(arg0, D_84390240.unk_00->unk_D0, 0, func_84308190(arg1) - (arg1->unk_4B0 * 0x1555), D_843901F0, 0.0f); + if (arg2 == 1) { + func_8431B858(arg1, arg0); + } +} + +void func_8431F194(unk_D_86002F34_00C* arg0, unk_D_84390010* arg1) { + func_843081F0(arg1, &D_84390240.unk_00->unk_D0); + D_843901F0 = func_8431AD20(arg1, 3.5f, 300.0f); + func_8431BAB4(arg1, arg0, D_84390240.unk_00->unk_D0, 0, func_84308190(arg1), 0.0f, 0.0f); + func_8431BB80(arg0, D_84390240.unk_00->unk_D0, 0, func_84308190(arg1), D_843901F0, 0.0f); + func_8431B858(arg1, arg0); +} + +void func_8431F290(unk_D_84390010* arg0, unk_D_86002F34_00C* arg1, s32 arg2, s32 arg3) { + func_8431BA5C(); + switch (arg2) { + case 0: + func_8431E7D0(arg1, arg0, arg3); + break; + + case 1: + func_8431E90C(arg1, arg0, arg3); + break; + + case 2: + func_8431E1DC(arg1, arg0, arg3); + break; + + case 3: + func_8431E4DC(arg1, arg0, arg3); + break; + + case 4: + func_8431EA1C(arg1, arg0, 0, arg3); + break; + + case 5: + func_8431EA1C(arg1, arg0, 1, arg3); + break; + + case 6: + func_8431E368(arg1, arg0, arg3); + break; + + case 7: + func_8431E63C(arg1, arg0, arg3); + break; + + case 8: + func_8431EA1C(arg1, arg0, 2, arg3); + break; + + case 9: + func_8431EA1C(arg1, arg0, 3, arg3); + break; + + case 10: + func_8431EA1C(arg1, arg0, 4, arg3); + break; + + case 11: + func_8431EA1C(arg1, arg0, 5, arg3); + break; + + default: + func_8431E1DC(arg1, arg0, arg3); + break; + } +} + +void func_8431F420(unk_D_84390010* arg0, unk_D_86002F34_00C* arg1, s32 arg2) { + func_8431BA5C(); + switch (arg2) { + case 0: + func_8431E1DC(arg1, arg0, 1); + break; + case 1: + func_8431E368(arg1, arg0, 1); + break; + case 2: + func_8431E63C(arg1, arg0, 1); + break; + case 3: + func_8431E7D0(arg1, arg0, 1); + break; + case 4: + func_8431F050(arg1, arg0, 1); + break; + default: + func_8431E1DC(arg1, arg0, 1); + break; + } +} + +void func_8431F500(unk_D_84390010* arg0, unk_D_86002F34_00C* arg1, s32 arg2) { + func_8431BA5C(); + switch (arg2) { + case 0: + func_8431EAB8(arg1, arg0); + break; + + case 1: + func_8431ECEC(arg1, arg0); + break; + + case 2: + func_8431EE08(arg1, arg0); + break; + + case 3: + func_8431EF54(arg1, arg0); + break; + + case 4: + func_8431EBD0(arg1, arg0); + break; + + case 5: + func_8431ECEC(arg1, arg0); + break; + + case 6: + func_8431EE08(arg1, arg0); + break; + + case 7: + func_8431EF54(arg1, arg0); + break; + + default: + func_8431EF54(arg1, arg0); + break; + } +} diff --git a/src/fragments/62/fragment62_309ED0.c b/src/fragments/62/fragment62_309ED0.c index dba5708..61ef027 100644 --- a/src/fragments/62/fragment62_309ED0.c +++ b/src/fragments/62/fragment62_309ED0.c @@ -1,229 +1,3560 @@ -#include "global.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_8431F610.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_8431F680.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_8431F690.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_8431F7B0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_8431F888.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_8431F998.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_8431FAB4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_8431FC74.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_8431FCCC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_8431FF18.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_8431FF28.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_8431FF3C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_8431FF5C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_8431FF70.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_8431FF8C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_8431FFD0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84320020.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84320064.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_843200B4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84320108.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_843202A0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84320400.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_8432056C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84320658.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_843206B8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84320710.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84320768.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_8432079C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84320864.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_843208B0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84320A8C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84320B48.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84320C38.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84320CEC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84320E54.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84320EA0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_8432103C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_843210BC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_8432113C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84321184.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84321208.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84321594.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84321698.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84321860.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84321A40.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84321AAC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84321B54.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84321D34.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84321D3C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84321F2C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84321F74.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84321FB8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_843221A8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84322284.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84322350.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_843223FC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_843224C8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84322600.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84322640.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84322698.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_843226A4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_843226E0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_843229A4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84322B04.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84322E70.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_843230D8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_843233E0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_843234A0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_843234FC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84323538.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_843235F4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84323740.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84323808.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84323928.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_843239EC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84323AFC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84323B2C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84323B50.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84323BCC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84323CE4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84323E44.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84323FA0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84324414.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_843248B8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84324988.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_843249F8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84324A68.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84324C28.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84324F1C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84325080.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_843251D4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_843255DC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84325724.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84325A10.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84325CAC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84325CDC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84325E94.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_843261CC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84326460.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84326570.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_843266D4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_8432691C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84326A78.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84326AC4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84326CB4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84326E84.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_8432734C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_843275F8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84327720.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84327B90.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84327D98.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84327DC0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84328250.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_309ED0/func_84328734.s") +#include "fragment62.h" +#include "src/17300.h" +#include "src/1C720.h" +#include "src/373A0.h" +#include "src/3D140.h" +#include "src/4BDC0.h" +#include "src/4F410.h" +#include "src/F420.h" + +unk_D_84390010* D_84390200; +unk_D_84390010* D_84390204; +static f32 D_84390208; +static s32 pad_D_84390210[4]; +static s32 D_84390220; +static s32 D_84390224; +static s32 D_84390228; +s32 D_8439022C; +s32 D_84390230; +s32 D_84390234; + +u8 D_84385B70[] = { + 0x00, 0x03, 0x02, 0x06, 0x07, +}; +u8 D_84385B78[] = { + 0x00, + 0x02, + 0x06, + 0x07, +}; +u8 D_84385B7C[] = { + 0x02, + 0x06, + 0x07, +}; +u8 D_84385B80[] = { + 0x04, 0x05, 0x08, 0x09, 0x0A, 0x0B, +}; +u8 D_84385B88[] = { + 0x05, + 0x09, + 0x0A, + 0x0B, +}; +u16 D_84385B8C = 0x5F92; +Vec3f D_84385B90 = { 0.0f, 100.0f, 0.0f }; +Vec3f D_84385B9C = { 0.0f, 10.0f, 0.0f }; + +void func_8431F610(unk_D_84390010* arg0) { + unk_D_84390010_654* ptr = &arg0->unk_654; + + if ((arg0->unk_000.unk_01A == 0x32) && (ptr->unk_34 & 0x4000)) { + unk_D_8438E7B0_A50* tmp = &D_84384570[func_84307F00(arg0)]->unk_000[0x5A]; + + func_8001BD04(&arg0->unk_000, tmp->unk_00); + arg0->unk_000.unk_000.unk_02 &= ~0x20; + } +} + +void func_8431F680(void) { + D_84390240.unk_00->unk_24 = 0; +} + +s32 func_8431F690(unk_D_84390010* arg0) { + unk_D_84390010_654* ptr = &arg0->unk_654; + UNUSED s32 pad; + s32 sp1C = 0; + + if (!(ptr->unk_34 & 0x800)) { + return 0; + } + + if (D_84390240.unk_00->unk_48 == 0x19) { + return 0; + } + + if ((ptr->unk_34 & 0x800) && (D_84390240.unk_00->unk_48 == 0x1C)) { + return 0; + } + + switch (D_84390240.unk_00->unk_24) { + case 0: + func_84302148(arg0); + sp1C = 1; + D_84390240.unk_00->unk_24++; + break; + + case 1: + sp1C = 1; + if (arg0->unk_720->unk_00 & 0x10) { + arg0->unk_720->unk_00 &= ~0x90; + func_84309368(arg0); + func_8431F610(arg0); + D_84390240.unk_00->unk_24++; + } + break; + + case 2: + func_8431F680(); + break; + } + return sp1C; +} + +s32 func_8431F7B0(unk_D_84390010* arg0) { + UNUSED s32 pad[2]; + s32 sp1C = 0; + + if (!(arg0->unk_654.unk_34 & 0x800)) { + return 0; + } + + switch (D_84390240.unk_00->unk_24) { + case 0: + func_84302128(arg0); + sp1C = 1; + D_84390240.unk_00->unk_24++; + break; + + case 1: + sp1C = 1; + if (arg0->unk_720->unk_00 & 0x10) { + arg0->unk_720->unk_00 &= ~0x90; + func_84309328(arg0); + D_84390240.unk_00->unk_24++; + } + break; + + case 2: + func_8431F680(); + break; + } + return sp1C; +} + +s32 func_8431F888(unk_D_84390010* arg0) { + UNUSED s32 pad[2]; + Vec3f sp34; + s32 var_s0 = 0; + + if (!(arg0->unk_654.unk_34 & 0x1000)) { + return 0; + } + + switch (D_84390240.unk_00->unk_24) { + case 0: + func_84302148(arg0); + var_s0 = 1; + D_84390240.unk_00->unk_24++; + break; + + case 1: + var_s0 = 1; + if (arg0->unk_720->unk_00 & 0x10) { + arg0->unk_720->unk_00 &= ~0x90; + func_84309368(arg0); + func_84306200(arg0, 0x1800); + var_s0 = 0; + func_8431F680(); + D_84390240.unk_00->unk_24++; + } + break; + + case 2: + func_8431F680(); + func_843081F0(arg0, &sp34); + func_8430C1E4(&D_84390240.unk_00->unk_DC->unk_60.at, &sp34); + break; + } + return var_s0; +} + +s32 func_8431F998(unk_D_84390010* arg0) { + UNUSED s32 pad[2]; + s32 sp1C = 0; + + if (D_84390240.unk_00->unk_44 != 2) { + return 0; + } + + if (!(arg0->unk_654.unk_34 & 0x800)) { + return 0; + } + + if ((D_84390240.unk_00->unk_48 == 0x19) || (D_84390240.unk_00->unk_48 == 0x1C)) { + return 0; + } + + switch (D_84390240.unk_00->unk_24) { + case 0: + func_84302148(arg0); + sp1C = 1; + D_84390240.unk_00->unk_24 += 1; + break; + + case 1: + sp1C = 1; + if (arg0->unk_720->unk_00 & 0x10) { + arg0->unk_720->unk_00 &= ~0x90; + func_84309368(arg0); + func_8431F610(arg0); + D_84390240.unk_00->unk_24 += 1; + } + break; + + case 2: + func_8431F680(); + break; + } + return sp1C; +} + +s32 func_8431FAB4(void) { + UNUSED s32 pad[2]; + s32 sp1C = 0; + unk_D_84390010_654* temp_a1 = &D_84390010[0]->unk_654; + unk_D_84390010_654* temp_a2 = &D_84390010[1]->unk_654; + + if (D_84390240.unk_00->unk_44 != 1) { + return 0; + } + + if (!(temp_a1->unk_34 & 0x800) && !(temp_a2->unk_34 & 0x800)) { + return 0; + } + + switch (D_84390240.unk_00->unk_24) { + case 0: + if (temp_a1->unk_34 & 0x800) { + func_84302128(D_84390010[0]); + } + sp1C = 1; + D_84390240.unk_00->unk_24 = D_84390240.unk_00->unk_24 + 1; + break; + + case 1: + sp1C = 1; + if (temp_a1->unk_34 & 0x800) { + if (D_84390010[0]->unk_720->unk_00 & 0x10) { + D_84390010[0]->unk_720->unk_00 &= ~0x90; + func_84309328(D_84390010[0]); + D_84390240.unk_00->unk_24 += 1; + } + } else { + D_84390240.unk_00->unk_24 = D_84390240.unk_00->unk_24 + 1; + } + break; + + case 2: + if (temp_a2->unk_34 & 0x800) { + func_84302128(D_84390010[1]); + } + sp1C = 1; + D_84390240.unk_00->unk_24 = D_84390240.unk_00->unk_24 + 1; + break; + + case 3: + sp1C = 1; + if (temp_a2->unk_34 & 0x800) { + if (D_84390010[1]->unk_720->unk_00 & 0x10) { + D_84390010[1]->unk_720->unk_00 &= ~0x90; + func_84309328(D_84390010[1]); + D_84390240.unk_00->unk_24 += 1; + } + } else { + D_84390240.unk_00->unk_24 = D_84390240.unk_00->unk_24 + 1; + } + break; + + case 4: + func_8431F680(); + break; + } + + return sp1C; +} + +void func_8431FC74(void) { + unk_D_800FCB18* temp_v0 = &D_84390010[0]->unk_654.unk_38; + unk_D_800FCB18* temp_v1 = &D_84390010[1]->unk_654.unk_38; + + if (temp_v0->unk_4F == 0) { + temp_v0->unk_4C &= ~0x20; + } + + if (temp_v1->unk_4F == 0) { + temp_v1->unk_4C &= ~0x20; + } +} + +void func_8431FCC4(void) { +} + +s32 func_8431FCCC(unk_D_84390010* arg0) { + unk_D_800FCB18* temp_s1 = &arg0->unk_654.unk_38; + unk_func_80026268_arg0* temp_s2 = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08]; + f32 temp_fs0; + UNUSED s16 pad; + s16 sp30; + + if (D_84390288 != 0) { + return 1; + } + + if (temp_s2->unk_02 == temp_s1->unk_0C) { + return 1; + } + + temp_fs0 = temp_s1->unk_28 / 90.0f; + sp30 = func_84307F00(arg0); + D_843900A8[sp30] = func_800104AC(D_843900A8[func_84307F00(arg0)], temp_s1->unk_0C, temp_fs0, temp_fs0); + temp_s2->unk_02 = D_843900A8[func_84307F00(arg0)]; + if (temp_s2->unk_02 == temp_s1->unk_0C) { + temp_fs0 = D_843900A8[func_84307F00(arg0)] - temp_s2->unk_02; + D_843900A8[func_84307F00(arg0)] -= temp_fs0; + if (arg0->unk_000.unk_01A == 0x98) { + return 1; + } + return 1; + } + return 0; +} + +void func_8431FF18(void) { + D_84390240.unk_00->unk_3C = 0; +} + +void func_8431FF28(void) { + D_84390240.unk_00->unk_3C = 1; +} + +void func_8431FF3C(UNUSED unk_D_86002F34_00C* arg0, s32 arg1) { + D_84390240.unk_00->unk_38 = arg1; + D_84390240.unk_00->unk_20 = 0; +} + +void func_8431FF5C(unk_D_86002F34_00C* arg0) { + D_84390240.unk_00->unk_60 = arg0->unk_24.fovy; +} + +void func_8431FF70(unk_D_86002F34_00C* arg0) { + arg0->unk_24.fovy = 30.0f; + D_84390240.unk_00->unk_60 = 30.0f; +} + +s32 func_8431FF8C(unk_D_84390010* arg0) { + unk_D_8438E7B0_A50* ptr = &D_84384570[func_84307F00(arg0)]->unk_000[arg0->unk_654.unk_38.unk_5A - 1]; + + return ptr->unk_0D; +} + +s32 func_8431FFD0(unk_D_84390010* arg0) { + UNUSED s32 pad; + s32 sp18 = D_84384670[arg0->unk_654.unk_38.unk_5A - 1]; + unk_D_8438E7B0_A50* ptr = &D_84384570[func_84307F00(arg0)]->unk_000[sp18]; + + return ptr->unk_0D; +} + +s32 func_84320020(unk_D_84390010* arg0) { + unk_D_8438E7B0_A50* ptr = &D_84384570[func_84307F00(arg0)]->unk_000[arg0->unk_654.unk_38.unk_5A - 1]; + + return ptr->unk_0E; +} + +s32 func_84320064(unk_D_84390010* arg0) { + UNUSED s32 pad; + s32 sp18 = D_84384670[arg0->unk_654.unk_38.unk_5A - 1]; + unk_D_8438E7B0_A50* ptr = &D_84384570[func_84307F00(arg0)]->unk_000[sp18]; + + return ptr->unk_0E; +} + +s32 func_843200B4(unk_D_84390010* arg0) { + unk_D_8438E7B0_A50* ptr = &D_84384570[func_84307F00(arg0)]->unk_000[arg0->unk_654.unk_38.unk_5A - 1]; + + if (ptr->unk_0F == 0) { + return 0xF; + } + return ptr->unk_0F; +} + +void func_84320108(void) { + s32 sp2C; + unk_D_84390010_654* temp_s0; + unk_D_84390010_654* temp_s1; + unk_D_800FCB18* ptr; + + temp_s0 = &D_84390010[0]->unk_654; + temp_s1 = &D_84390010[1]->unk_654; + func_8431AFE4(1, 1); + + sp2C = D_84390240.unk_00->unk_2C; + D_84390240.unk_00->unk_2C = func_8436FC7C(D_84390010[0], D_84390010[1]); + + ptr = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654.unk_38; + if ((ptr->unk_5A & 0xF0) == 0xF0) { + D_84390240.unk_00->unk_2C = !D_84390240.unk_00->unk_2C; + } + + if (D_84390010[0]->unk_724->unk_000 & 2) { + if (D_84390240.unk_00->unk_2C == 0) { + func_8438363C(temp_s0->unk_08, temp_s1->unk_08, 0); + } else { + func_8438363C(temp_s0->unk_08, temp_s1->unk_08, 1); + } + } else if (D_84390010[1]->unk_724->unk_000 & 2) { + if (D_84390240.unk_00->unk_2C == 1) { + func_8438363C(temp_s1->unk_08, temp_s0->unk_08, 0); + } else { + func_8438363C(temp_s1->unk_08, temp_s0->unk_08, 1); + } + } + + D_84390240.unk_00->unk_2A = D_84390240.unk_00->unk_2C; + D_84390240.unk_00->unk_38 = 0; + temp_s0->unk_30 = 0; + temp_s1->unk_30 = 0; + D_84390240.unk_00->unk_44 = 2; + func_8437345C(); + D_84390240.unk_00->unk_2C = sp2C; +} + +void func_843202A0(void) { + s32 sp2C; + unk_D_84390010_654* sp28; + unk_D_84390010_654* sp24; + + sp28 = &D_84390010[0]->unk_654; + sp24 = &D_84390010[1]->unk_654; + func_8431AFE4(1, 1); + + sp2C = D_84390240.unk_00->unk_2C; + + if ((sp28->unk_2D == 0xF) || (sp28->unk_2D == 0x10)) { + if (D_84390010[0]->unk_724->unk_000 & 2) { + func_8438363C(sp28->unk_08, sp24->unk_08, 2); + } + D_84390240.unk_00->unk_2C = 0; + D_84390240.unk_00->unk_2A = 0; + D_84390240.unk_00->unk_38 = 0; + D_84390240.unk_00->unk_44 = 2; + func_84373570(D_84390010[0]); + D_84390240.unk_00->unk_2C = sp2C; + } else { + if (D_84390010[0]->unk_724->unk_000 & 2) { + func_8438363C(sp24->unk_08, sp28->unk_08, 2); + } + D_84390240.unk_00->unk_2C = 1; + D_84390240.unk_00->unk_2A = 1; + D_84390240.unk_00->unk_38 = 0; + D_84390240.unk_00->unk_44 = 2; + func_84373570(D_84390010[1]); + D_84390240.unk_00->unk_2C = sp2C; + } +} + +s32 func_84320400(void) { + unk_D_84390010_654* sp24 = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654; + unk_D_84390010_654* temp_a3 = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654; + unk_D_84390010_654* sp20 = &D_84390010[!D_84390240.unk_00->unk_2C]->unk_654; + + if ((D_84390010[D_84390240.unk_00->unk_2C]->unk_654.unk_2D == 0xF) || (sp24->unk_2D == 0x10)) { + if (D_84390010[D_84390240.unk_00->unk_2C]->unk_724->unk_000 & 2) { + func_8438363C(temp_a3->unk_08, sp20->unk_08, 2); + } + func_84306200(D_84390010[D_84390240.unk_00->unk_2C], 0x1800); + D_84390240.unk_00->unk_20 = 0; + D_84390240.unk_00->unk_14 = 0; + if (sp24->unk_2D == 0x10) { + D_84390240.unk_00->unk_38 = 0x12; + } else { + func_843081F0(D_84390010[D_84390240.unk_00->unk_2C], &D_843901B0.unk_00); + func_8431D7D8(&D_843848F0, D_84390240.unk_00->unk_DC, D_84390010[D_84390240.unk_00->unk_2C]); + D_84390240.unk_00->unk_38 = 0xB; + } + return 1; + } + + return 0; +} + +void func_8432056C(void) { + unk_D_84390010_654* sp1C = &D_84390010[0]->unk_654; + unk_D_84390010_654* sp18 = &D_84390010[1]->unk_654; + + if ((func_8430CD0C() == 0) && (D_84390134 != 1)) { + func_8003DB84(1); + } + + func_8431FC74(); + sp1C->unk_10 = 0; + sp18->unk_10 = 0; + + if ((sp1C->unk_2D == 0x10) || (sp18->unk_2D == 0x10) || (D_84390240.unk_00->unk_2E == 2)) { + func_8431AFE4(1, 0); + } else { + func_8431AFE4(1, 1); + } + + D_84390240.unk_00->unk_44 = 1; + D_84390240.unk_00->unk_20 += 1; +} + +s32 func_84320658(s32 arg0) { + func_8431FF18(); + func_8431AE5C(); + D_84390240.unk_00->unk_48 = 0; + D_84390240.unk_00->unk_4C = 0; + D_84390240.unk_00->unk_20 = 0; + D_84390240.unk_00->unk_14 = 0; + D_84390240.unk_00->unk_38 = arg0; + return 1; +} + +s32 func_843206B8(s32 arg0) { + func_8431FF18(); + func_8431AE5C(); + D_84390240.unk_00->unk_4C = 0; + D_84390240.unk_00->unk_20 = 0; + D_84390240.unk_00->unk_14 = 0; + D_84390240.unk_00->unk_38 = arg0; + return 1; +} + +s32 func_84320710(s32 arg0) { + func_8431FF18(); + func_8431AE5C(); + D_84390240.unk_00->unk_4C = 0; + D_84390240.unk_00->unk_20 = 0; + D_84390240.unk_00->unk_14 = 0; + D_84390240.unk_00->unk_38 = arg0; + return 1; +} + +void func_84320768(unk_D_86002F34_00C* arg0) { + D_84390240.unk_00->unk_2C = !D_84390240.unk_00->unk_2C; + func_8431FF3C(arg0, 5); +} + +void func_8432079C(u8 arg0) { + unk_D_84390010_654* temp_a3; + + D_84390240.unk_00->unk_2C = !D_84390240.unk_00->unk_2C; + temp_a3 = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654; + + if ((temp_a3->unk_2D == 0xF) || (temp_a3->unk_2D == 0x10)) { + func_84373570(D_84390010[D_84390240.unk_00->unk_2C]); + } else { + func_8437345C(); + } + + D_84390240.unk_00->unk_34 = 1; + D_84390240.unk_00->unk_A0.z = 0.0f; + func_8431FF3C(D_84390240.unk_00->unk_DC, 0x24); + D_84390240.unk_00->unk_78 = arg0; +} + +void func_84320864(void) { + if (func_8431F690(D_84390010[D_84390240.unk_00->unk_2C]) == 0) { + D_84390240.unk_00->unk_38 = D_84390240.unk_00->unk_78; + } +} + +void func_843208B0(void) { + unk_D_800FCB18* sp24; + unk_D_800FCB18* sp20; + unk_D_84390010_654* sp1C; + + if (D_84390240.unk_00->unk_34 == 0) { + func_84301F80(D_84390010[D_84390240.unk_00->unk_2C]); + func_80048014(); + func_8431F680(); + + sp24 = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654.unk_38; + sp20 = &D_84390010[!D_84390240.unk_00->unk_2C]->unk_654.unk_38; + sp1C = &D_84390010[!D_84390240.unk_00->unk_2C]->unk_654; + + if ((((sp24->unk_5A & 0xF0) == 0xF0) || ((sp20->unk_5A & 0xF0) == 0xF0)) && (sp1C->unk_2D != 0xF) && + (sp1C->unk_2D != 0x10)) { + D_84390240.unk_00->unk_20 = 0; + D_84390240.unk_00->unk_14 = 0; + D_84390240.unk_00->unk_38 = 4; + + if ((sp24->unk_5A & 0xF0) == 0xF0) { + sp24->unk_5A = 0xA5; + } + + if ((sp20->unk_5A & 0xF0) == 0xF0) { + sp20->unk_5A = 0xA5; + } + } else { + func_8432079C(3); + D_84390240.unk_00->unk_20 = 0; + D_84390240.unk_00->unk_14 = 0; + } + } else { + sp24 = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654.unk_38; + sp20 = &D_84390010[!D_84390240.unk_00->unk_2C]->unk_654.unk_38; + + func_84301F80(D_84390010[D_84390240.unk_00->unk_2C]); + func_80048014(); + func_8431F680(); + + D_84390240.unk_00->unk_20 = 0; + D_84390240.unk_00->unk_14 = 0; + D_84390240.unk_00->unk_38 = 4; + + if ((sp24->unk_5A & 0xF0) == 0xF0) { + sp24->unk_5A = 0xA5; + } + + if ((sp20->unk_5A & 0xF0) == 0xF0) { + sp20->unk_5A = 0xA5; + } + } +} + +s32 func_84320A8C(void) { + unk_D_800FCB18* temp_v0 = &D_84390200->unk_654.unk_38; + + if (((temp_v0->unk_4D & 0x80) || (temp_v0->unk_15 & 0x18)) && ((temp_v0->unk_5A & 0xF0) == 0xF0)) { + func_84301F80(D_84390010[D_84390240.unk_00->unk_2C]); + func_80048014(); + func_8431F680(); + func_8432079C(3); + D_84390240.unk_00->unk_20 = 0; + D_84390240.unk_00->unk_48 = 0; + D_84390240.unk_00->unk_14 = 0; + return 1; + } + return 0; +} + +void func_84320B48(void) { + if ((D_84390240.unk_00->unk_34 == 0) && ((D_84390200->unk_654.unk_38.unk_5A & 0xF0) != 0xF0)) { + func_84301F80(D_84390010[D_84390240.unk_00->unk_2C]); + func_80048014(); + func_8431F680(); + func_8432079C(3); + D_84390240.unk_00->unk_20 = 0; + D_84390240.unk_00->unk_14 = 0; + } else if (func_84320A8C() == 0) { + func_84301F80(D_84390010[D_84390240.unk_00->unk_2C]); + func_80048014(); + func_8431F680(); + D_84390240.unk_00->unk_20 = 0; + D_84390240.unk_00->unk_14 = 0; + D_84390240.unk_00->unk_38 = 4; + } +} + +void func_84320C38(unk_D_86002F34_00C* arg0) { + if ((D_84390220 == 1) && (D_84390224 == 1)) { + if (func_84308164(D_84390010[D_84390240.unk_00->unk_2C]) == 0) { + func_84320768(arg0); + } else if (func_84308164(D_84390010[!D_84390240.unk_00->unk_2C]) == 0) { + func_8431FF3C(arg0, 5); + } else { + func_84320B48(); + } + } +} + +void func_84320CEC(unk_D_86002F34_00C* arg0) { + unk_D_800FCB18* sp1C = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654.unk_38; + + D_84390220 = func_8431FCCC(D_84390010[0]); + D_84390224 = func_8431FCCC(D_84390010[1]); + func_8431FF18(); + func_8431AE5C(); + + if (func_84308164(D_84390010[D_84390240.unk_00->unk_2C]) == 0) { + func_84320768(arg0); + } else if (func_84308164(D_84390010[!D_84390240.unk_00->unk_2C]) == 0) { + func_84320C38(arg0); + } else if (D_84390240.unk_00->unk_4C == 0xA) { + func_84320710(0xA); + } else if (D_84390240.unk_00->unk_48 == 9) { + func_84320658(9); + } else if ((sp1C->unk_15 & 0x18) || (sp1C->unk_4D & 0x80)) { + func_84320658(6); + } else { + func_84320C38(arg0); + } +} + +void func_84320E54(unk_D_86002F34_00C* arg0) { + if ((D_84390220 == 1) && (D_84390224 == 1)) { + func_843184FC(); + func_84320CEC(arg0); + } +} + +s32 func_84320EA0(void) { + switch (D_84390240.unk_00->unk_48) { + case 7: + case 38: + case 39: + func_84305760(D_84390204, 3); + return func_843206B8(0x25); + + case 30: + func_84305760(D_84390204, 3); + return func_843206B8(0x25); + + case 28: + return func_843206B8(0x25); + + case 21: + func_84305760(D_84390204, 3); + return func_843206B8(0x25); + + case 15: + return func_843206B8(0x25); + + case 25: + return func_843206B8(0x25); + + case 27: + return func_843206B8(0x25); + + case 29: + func_84305760(D_84390204, 3); + return func_843206B8(0x25); + + case 12: + func_84305760(D_84390204, 8); + return func_843206B8(0x25); + + case 13: + func_84305760(D_84390204, 8); + return func_843206B8(0x25); + + case 14: + func_84305760(D_84390204, 8); + return func_843206B8(0x25); + + case 17: + func_84305760(D_84390204, 9); + return func_843206B8(0x25); + + case 31: + return func_843206B8(0x25); + } + return 0; +} + +s32 func_8432103C(void) { + s32 tmp = D_84390240.unk_00->unk_48; + + if (tmp != 0x10) { + if (D_84390240.unk_00->unk_48 == 0x14) { + return func_84320658(0x14); + } + } else { + return func_84320658(0x10); + } + + if ((D_843C4DA4 != 0) || (D_84390240.unk_00->unk_48 == 8)) { + return func_84320658(8); + } + return 0; +} + +s32 func_843210BC(void) { + s32 idx = D_84390240.unk_00->unk_2C; + unk_D_800FCB18* temp_v1_2 = &D_84390010[idx]->unk_654.unk_38; + + if (((temp_v1_2->unk_4D & 0x80) || (temp_v1_2->unk_15 & 0x18)) && ((temp_v1_2->unk_5A & 0xF0) == 0xF0)) { + return func_84320658(0x23); + } + return 0; +} + +void func_8432113C(void) { + s32 idx; + + D_84390204 = D_84390010[D_84390240.unk_00->unk_2C]; + idx = D_84390240.unk_00->unk_2C == 0; + D_84390200 = D_84390010[idx]; +} + +void func_84321184(unk_D_86002F34_00C* arg0) { + func_8003DB84(0); + func_8431AFD0(arg0, 20.0f, 12800.0f); + func_8431F680(); + D_84390240.unk_00->unk_34 = 0; + func_8431FF18(); + D_84390240.unk_00->unk_14 = 0; + func_843087F8(D_84390010[0]); + func_843087F8(D_84390010[1]); + D_84390240.unk_00->unk_20++; +} + +void func_84321208(unk_D_86002F34_00C* arg0) { + unk_D_84390010_654* temp_t2 = &D_84390010[!D_84390240.unk_00->unk_2C]->unk_654; + unk_D_84390010_654* temp_t1 = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654; + s16 sp2E = D_84390010[D_84390240.unk_00->unk_2C]->unk_000.unk_01A; + unk_D_8438E7B0_A50* sp28 = &D_84384570[D_84390240.unk_00->unk_2C]->unk_A50; + unk_D_84390010* sp24 = D_84390010[D_84390240.unk_00->unk_2C]; + + if (((temp_t2->unk_2D == 0x13) && (temp_t1->unk_2D == 0x13)) || + ((temp_t2->unk_2D == 0x10) && (temp_t1->unk_2D == 0x13)) || + ((temp_t1->unk_2D == 0x10) && (temp_t2->unk_2D == 0x13))) { + func_843184E4(0xE); + func_8000E88C(&arg0->unk_60.at, 0.0f, 75.0f, 0.0f); + func_8000E88C(&arg0->unk_60.eye, 0.0f, 80.0f, 400.0f); + func_8004153C(); + D_84390240.unk_00->unk_20 = 8; + return; + } + + if (temp_t1->unk_34 & 0x4008) { + sp24->unk_000.unk_01D = 0xFF; + func_8432C80C(4, sp24); + sp24->unk_000.unk_024.y = D_84390028[D_84390240.unk_00->unk_2C].unk_08; + sp24->unk_000.unk_000.unk_02 &= ~0x2; + sp24->unk_000.unk_000.unk_02 |= 0x20; + sp24->unk_000.unk_000.unk_01 |= 1; + func_84306200(sp24, 0x4608); + } + + if (D_84390010[D_84390240.unk_00->unk_2C]->unk_4B4 == 0xA) { + func_84308654(D_84390010[D_84390240.unk_00->unk_2C], 0, 0); + } + + if (D_84390010[D_84390240.unk_00->unk_2C]->unk_4B4 == 0xD) { + func_84308654(D_84390010[D_84390240.unk_00->unk_2C], 0, 0); + } + + if (D_84390010[D_84390240.unk_00->unk_2C]->unk_4B4 == 0x10) { + func_84308654(D_84390010[D_84390240.unk_00->unk_2C], 0, 0); + } + + D_84390010[D_84390240.unk_00->unk_2C]->unk_000.unk_01E.x = 0; + if ((sp2E == 0x32) || (sp2E == 0x33)) { + D_84390010[D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_02 |= 0x20; + D_84390010[D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 |= 1; + func_8001BD04(&D_84390010[D_84390240.unk_00->unk_2C]->unk_000, sp28->unk_00); + } + + func_843087F8(D_84390010[D_84390240.unk_00->unk_2C]); + func_8000E88C(&D_84390010[D_84390240.unk_00->unk_2C]->unk_000.unk_030, 1.0f, 1.0f, 1.0f); + D_84390010[D_84390240.unk_00->unk_2C]->unk_000.unk_024.y = func_84307BAC(D_84390010[D_84390240.unk_00->unk_2C]); + func_843081F0(D_84390010[D_84390240.unk_00->unk_2C], &D_843901B0.unk_00); + func_8431D7D8(&D_84384AF8, arg0, D_84390010[D_84390240.unk_00->unk_2C]); + func_8431D5D0(arg0, D_84390010[D_84390240.unk_00->unk_2C], 1); + func_8004153C(); + D_84390240.unk_00->unk_20 = 6; +} + +s32 func_84321594(unk_D_84390010* arg0) { + UNUSED s32 pad; + unk_D_84390010_654* sp28 = &arg0->unk_654; + + D_84390240.unk_00->unk_54 = 0; + func_8432B13C(arg0); + + if (sp28->unk_34 & 0x200) { + func_84306200(arg0, 0x60C); + return 1; + } + + if (sp28->unk_34 & 0x4008) { + arg0->unk_000.unk_01D = 0xFF; + func_8432C80C(4, arg0); + arg0->unk_000.unk_024.y = D_84390028[func_84307F00(arg0)].unk_08; + arg0->unk_000.unk_000.unk_02 &= ~0x2; + arg0->unk_000.unk_000.unk_02 |= 0x20; + arg0->unk_000.unk_000.unk_01 |= 1; + func_84306200(arg0, 0x4608); + } + + func_8432B38C(arg0); + sp28->unk_2E = 0xFF; + func_8001BE34(&arg0->unk_000, 0xFF, 0xFF, 0xFF, sp28->unk_2E); + func_843066E0(arg0); + arg0->unk_000.unk_01E.x = 0; + return 0; +} + +void func_84321698(unk_D_86002F34_00C* arg0) { + if (func_8431F690(D_84390010[!D_84390240.unk_00->unk_2C]) == 0) { + func_84306200(D_84390010[!D_84390240.unk_00->unk_2C], 0x1800); + func_80048014(); + func_8432E9D8(2); + func_8431AE5C(); + func_8003F1AC(func_84308D98(D_84390010[!D_84390240.unk_00->unk_2C])); + + if (func_84321594(D_84390010[!D_84390240.unk_00->unk_2C]) != 0) { + func_84305760(D_84390010[!D_84390240.unk_00->unk_2C], 0x11); + func_8431BA5C(); + D_84390240.unk_00->unk_20 = 0xA; + } else { + func_84305760(D_84390010[!D_84390240.unk_00->unk_2C], 0); + func_8431BA5C(); + D_84390240.unk_00->unk_20++; + } + + func_8431F500(D_84390010[!D_84390240.unk_00->unk_2C], arg0, 3); + + if (func_84307B60(D_84390010[!D_84390240.unk_00->unk_2C]) != 0) { + func_8004E810(0xC8, 1); + } else { + func_8004E810(D_84390010[!D_84390240.unk_00->unk_2C]->unk_000.unk_01A, 1); + } + } +} + +void func_84321860(unk_D_86002F34_00C* arg0) { + UNUSED s32 pad[2]; + unk_D_84390010_654* sp24 = &D_84390010[!D_84390240.unk_00->unk_2C]->unk_654; + unk_D_8438E7B0_A50* sp20 = &D_84384570[!D_84390240.unk_00->unk_2C]->unk_A70; + + if (func_84301FB0(D_84390010[!D_84390240.unk_00->unk_2C]) == 0) { + if (D_84390240.unk_00->unk_14 == 0x1D) { + func_8431F500(D_84390010[!D_84390240.unk_00->unk_2C], arg0, 4); + } + + if (func_8431ADF0(0x1E) != 0) { + func_8431CFA4(arg0, D_84390010[!D_84390240.unk_00->unk_2C]); + } + + if (((sp20->unk_04 >> 1) == (D_84390010[!D_84390240.unk_00->unk_2C]->unk_000.unk_040.unk_08 >> 0x10)) && + (sp24->unk_2D != 0x12)) { + func_843184E4(9); + } + + if (sp20->unk_0A == ((D_84390010[!D_84390240.unk_00->unk_2C]->unk_000.unk_040.unk_08 >> 0x10) + 3)) { + D_84390010[!D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_02 &= ~0x20; + func_843061EC(D_84390010[!D_84390240.unk_00->unk_2C], 0x100); + func_8431AE5C(); + D_84390240.unk_00->unk_20 += 1; + } + func_8431CEF0(arg0, D_84390010[!D_84390240.unk_00->unk_2C], 0); + } +} + +void func_84321A40(unk_D_86002F34_00C* arg0) { + func_8431CEF0(arg0, D_84390010[!D_84390240.unk_00->unk_2C], 1); + if (func_8431ADAC(0x19) != 0) { + func_80048014(); + D_84390240.unk_00->unk_20++; + } +} + +void func_84321AAC(unk_D_86002F34_00C* arg0) { + unk_D_84390010_654* temp_s0 = &D_84390010[!D_84390240.unk_00->unk_2C]->unk_654; + + func_8431CEF0(arg0, D_84390010[!D_84390240.unk_00->unk_2C], 1); + + if (func_8431ADAC(5) != 0) { + func_8432E9D8(1); + func_80037234(3, 0); + + if (temp_s0->unk_2D != 0x12) { + temp_s0->unk_2D = 0x10; + } + + if (temp_s0->unk_2D == 0x12) { + temp_s0->unk_2D = 0x13; + } + + D_84390240.unk_00->unk_20++; + } +} + +void func_84321B54(unk_D_86002F34_00C* arg0) { + unk_D_84390010_654* sp24 = &D_84390010[!D_84390240.unk_00->unk_2C]->unk_654; + unk_D_84390010_654* sp20 = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654; + + if (func_8431ADAC(0xA) != 0) { + func_8431AE5C(); + func_8431FF18(); + D_84390240.unk_00->unk_20++; + if (sp24->unk_2D == 0x10) { + D_84390240.unk_00->unk_14 = 0; + D_84390240.unk_00->unk_20 = 0; + + if ((sp20->unk_2D == 0x11) || (sp20->unk_2D == 0x12)) { + D_84390240.unk_00->unk_38 = 5; + D_84390240.unk_00->unk_2C = !D_84390240.unk_00->unk_2C; + } else if ((sp24->unk_2D == 0x13) || (sp20->unk_2D == 0x13)) { + func_843184E4(0xE); + func_8000E88C(&arg0->unk_60.at, 0.0f, 75.0f, 0.0f); + func_8000E88C(&arg0->unk_60.eye, 0.0f, 80.0f, 400.0f); + func_8004153C(); + D_84390240.unk_00->unk_2C = !D_84390240.unk_00->unk_2C; + D_84390240.unk_00->unk_20 = 8; + } else { + D_84390240.unk_00->unk_38 = 4; + } + } else if ((sp20->unk_2D == 0x12) || (sp20->unk_2D == 0x11)) { + D_84390240.unk_00->unk_14 = 0; + D_84390240.unk_00->unk_20 = 0; + D_84390240.unk_00->unk_38 = 5; + D_84390240.unk_00->unk_2C = !D_84390240.unk_00->unk_2C; + } else { + func_84321208(arg0); + } + func_80048014(); + } +} + +void func_84321D34(UNUSED unk_D_86002F34_00C* arg0) { +} + +void func_84321D3C(unk_D_86002F34_00C* arg0) { + unk_D_84390010* temp_s0; + UNUSED s32 pad; + f32 sp44; + f32 sp40; + s16 sp3E; + UNUSED s16 pad2; + u8 sp3B; + s16 tmp1; + + temp_s0 = D_84390010[D_84390240.unk_00->unk_2C]; + sp3B = temp_s0->unk_000.unk_01A - 1; + + if (func_8431D118(arg0, temp_s0, 1, 0) != 0) { + func_8431AE5C(); + func_843184E4(0xE); + func_8431AFD0(arg0, 10.0f, 12800.0f); + arg0->unk_24.fovy = 60.0f; + if ((D_84390010[D_84390240.unk_00->unk_2C]->unk_000.unk_01A == 0x5F) && (D_84390240.unk_00->unk_2C == 1)) { + sp3B = 0x97; + } + + sp44 = (D_84384580[D_84390240.unk_00->unk_2C]->unk_00.y + temp_s0->unk_000.unk_024.y) + D_84384C30[sp3B].z; + sp40 = ((D_84384580[D_84390240.unk_00->unk_2C]->unk_00.z + D_84384C30[sp3B].y) * temp_s0->unk_4B0) + + temp_s0->unk_000.unk_024.x; + + func_8000E88C(&arg0->unk_60.at, sp40, sp44, temp_s0->unk_000.unk_024.z); + + sp40 = D_84384580[D_84390240.unk_00->unk_2C]->unk_00.x * D_84384C30[sp3B].x; + sp3E = D_84384580[D_84390240.unk_00->unk_2C]->unk_0C; + tmp1 = (temp_s0->unk_4B0 * D_84384580[D_84390240.unk_00->unk_2C]->unk_0E) + func_84308190(temp_s0); + func_80010354(&arg0->unk_60.at, &arg0->unk_60.eye, sp40, sp3E, tmp1); + D_84390240.unk_00->unk_20++; + } +} + +void func_84321F2C(UNUSED unk_D_86002F34_00C* arg0) { + if (func_8431ADAC(0x50) != 0) { + D_84390240.unk_00->unk_40 = D_84390240.unk_00->unk_2C + 1; + func_843184FC(); + func_8004B9C4(0x14); + } +} + +void func_84321F74(UNUSED unk_D_86002F34_00C* arg0) { + if (func_8431ADAC(0x7D) != 0) { + D_84390240.unk_00->unk_40 = D_84390240.unk_00->unk_2C + 1; + func_8004B9C4(0x14); + } +} + +void func_84321FB8(unk_D_86002F34_00C* arg0) { + UNUSED s32 pad[2]; + unk_D_84390010_654* sp24 = &D_84390010[!D_84390240.unk_00->unk_2C]->unk_654; + unk_D_8438E7B0_A50* sp20 = &D_84384570[!D_84390240.unk_00->unk_2C]->unk_B10; + + if (func_84301FB0(D_84390010[!D_84390240.unk_00->unk_2C]) == 0) { + if (D_84390240.unk_00->unk_14 == 0x1D) { + func_8431F500(D_84390010[!D_84390240.unk_00->unk_2C], arg0, 4); + } + + if (func_8431ADF0(0x1E) != 0) { + func_8431CFA4(arg0, D_84390010[!D_84390240.unk_00->unk_2C]); + } + + if (((sp20->unk_04 >> 1) == (D_84390010[!D_84390240.unk_00->unk_2C]->unk_000.unk_040.unk_08 >> 0x10)) && + (sp24->unk_2D != 0x12)) { + func_843184E4(9); + } + + if (sp20->unk_0A == ((D_84390010[!D_84390240.unk_00->unk_2C]->unk_000.unk_040.unk_08 >> 0x10) + 3)) { + D_84390010[!D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_02 &= ~0x20; + func_843061EC(D_84390010[!D_84390240.unk_00->unk_2C], 0x100); + func_8431AE5C(); + func_8431B858(D_84390010[!D_84390240.unk_00->unk_2C], arg0); + D_84390240.unk_00->unk_20 = 2; + } + + func_8431CEF0(arg0, D_84390010[!D_84390240.unk_00->unk_2C], 0); + } +} + +void func_843221A8(unk_D_86002F34_00C* arg0) { + switch (D_84390240.unk_00->unk_20) { + case 0: + func_84321698(arg0); + break; + + case 1: + func_84321860(arg0); + break; + + case 2: + func_84321A40(arg0); + break; + + case 3: + func_84321AAC(arg0); + break; + + case 4: + func_84321B54(arg0); + break; + + case 5: + func_84321D34(arg0); + break; + + case 6: + func_84321D3C(arg0); + break; + + case 7: + func_84321F2C(arg0); + break; + + case 8: + func_84321F74(arg0); + break; + + case 10: + func_84321FB8(arg0); + break; + } +} + +void func_84322284(UNUSED unk_D_86002F34_00C* arg0) { + unk_D_84390010_654* sp1C = &D_84390010[!D_84390240.unk_00->unk_2C]->unk_654; + + if (func_8431ADAC(2) != 0) { + func_8431AE5C(); + func_8431FF18(); + D_84390240.unk_00->unk_20 += 1; + if (sp1C->unk_2D == 0x10) { + D_84390240.unk_00->unk_14 = 0; + D_84390240.unk_00->unk_20 = 0; + D_84390240.unk_00->unk_38 = 4; + } else { + D_84390240.unk_00->unk_40 = D_84390240.unk_00->unk_2C + 1; + } + func_80048014(); + } +} + +void func_84322350(unk_D_86002F34_00C* arg0) { + switch (D_84390240.unk_00->unk_20) { + case 0: + func_84321698(arg0); + break; + + case 1: + func_84321860(arg0); + break; + + case 2: + func_84321A40(arg0); + break; + + case 3: + func_84321AAC(arg0); + break; + + case 4: + func_84322284(arg0); + break; + + case 5: + func_84321D34(arg0); + break; + + case 10: + func_84321FB8(arg0); + break; + } +} + +void func_843223FC(unk_D_84390010* arg0) { + unk_D_84390010_654* ptr = &arg0->unk_654; + + if (ptr->unk_34 & 0x200) { + arg0->unk_000.unk_024.y = D_84390028[func_84307F00(arg0)].unk_08; + func_84306200(arg0, 0x608); + } else if (ptr->unk_34 & 0x4008) { + arg0->unk_000.unk_01D = 0xFF; + func_8432C80C(4, arg0); + arg0->unk_000.unk_024.y = D_84390028[func_84307F00(arg0)].unk_08; + arg0->unk_000.unk_000.unk_02 &= ~0x2; + arg0->unk_000.unk_000.unk_02 |= 0x20; + arg0->unk_000.unk_000.unk_01 |= 1; + func_84306200(arg0, 0x4608); + } +} + +void func_843224C8(unk_D_86002F34_00C* arg0) { + s32 sp24; + unk_D_84390010_654* sp20 = &D_84390010[0]->unk_654; + unk_D_84390010_654* sp1C = &D_84390010[1]->unk_654; + + func_84301B00(); + func_8431F680(); + + sp24 = func_8430C414(5); + if (sp24 >= 5) { + sp24 = 0; + } + + if ((sp20->unk_34 & 0x4000) || ((sp1C->unk_34 & 0x4000) != 0)) { + sp24 = 2; + } else if ((sp20->unk_34 & 0x200) || (sp1C->unk_34 & 0x200)) { + sp24 = 4; + } else if ((sp20->unk_2D == 0x10) || (sp1C->unk_2D == 0x10)) { + sp24 = 2; + } + + func_8430C1E4(&D_843901B0.unk_00, &D_84385B90); + func_8431D968(&D_84384B2C[sp24], arg0); + func_8431D5D0(arg0, D_84390204, 0); + D_84390240.unk_00->unk_20++; +} + +void func_84322600(unk_D_86002F34_00C* arg0) { + if (func_8431D118(arg0, D_84390204, 0, 1) != 0) { + func_8431FF3C(arg0, 2); + } +} + +void func_84322640(unk_D_86002F34_00C* arg0) { + switch (D_84390240.unk_00->unk_20) { + case 0: + func_843224C8(arg0); + break; + + case 1: + func_84322600(arg0); + break; + } +} + +void func_84322698(unk_D_84390010* arg0) { + arg0->unk_654.unk_30 = 0x800; +} + +void func_843226A4(UNUSED unk_D_86002F34_00C* arg0) { + func_8432E9D8(2); + func_84322698(D_84390204); + func_8430203C(D_84390204); +} + +void func_843226E0(unk_D_86002F34_00C* arg0) { + unk_D_800FCB18* sp1C = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654.unk_38; + unk_D_84390010_654* sp18 = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654; + s32 var_t0; + + if (D_84390240.unk_00->unk_48 == 0xE) { + var_t0 = func_8431FFD0(D_84390010[D_84390240.unk_00->unk_2C]); + } else if ((D_84390240.unk_00->unk_48 == 0x1C) || (D_84390240.unk_00->unk_48 == 0x11) || + (D_84390240.unk_00->unk_48 == 0x1F)) { + var_t0 = 0; + } else { + var_t0 = func_8431FF8C(D_84390010[D_84390240.unk_00->unk_2C]); + } + + if ((sp1C->unk_5A == 0x3A) || (sp1C->unk_5A == 0x8F)) { + if ((D_84390240.unk_00->unk_48 != 0x1C) && (D_84390240.unk_00->unk_48 != 0x11) && + (D_84390240.unk_00->unk_48 != 0x1F)) { + var_t0 = 0x16; + } + } + + switch (var_t0) { + case 20: + func_8431F290(D_84390204, arg0, + D_84390240.unk_00->unk_50 = D_84385B70[func_8430C384(ARRAY_COUNT(D_84385B70))], 1); + break; + + case 21: + func_8431F290(D_84390204, arg0, + D_84390240.unk_00->unk_50 = D_84385B78[func_8430C384(ARRAY_COUNT(D_84385B78))], 1); + break; + + case 22: + func_8431F290(D_84390204, arg0, + D_84390240.unk_00->unk_50 = D_84385B7C[func_8430C384(ARRAY_COUNT(D_84385B7C))], 1); + break; + + case 23: + func_8431F290(D_84390204, arg0, + D_84390240.unk_00->unk_50 = D_84385B80[func_8430C384(ARRAY_COUNT(D_84385B80))], 1); + break; + + case 24: + func_8431F290(D_84390204, arg0, + D_84390240.unk_00->unk_50 = D_84385B88[func_8430C384(ARRAY_COUNT(D_84385B88))], 1); + break; + + default: + func_8431F290(D_84390204, arg0, D_84390240.unk_00->unk_50 = var_t0, 1); + if (sp18->unk_34 & 0x4000) { + arg0->unk_60.at.y = 0.0f; + } + break; + } +} + +s32 func_843229A4(unk_D_86002F34_00C* arg0) { + UNUSED s32 pad; + unk_D_84390010_654* sp20 = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654; + + func_8431AE5C(); + func_843226E0(arg0); + + if (func_84320EA0() != 0) { + return 0; + } + + if (D_84390240.unk_00->unk_48 == 0x14) { + func_84305760(D_84390010[D_84390240.unk_00->unk_2C], 0x15); + } else if (D_84390240.unk_00->unk_48 == 0x18) { + func_84305760(D_84390010[D_84390240.unk_00->unk_2C], 3); + } else if (sp20->unk_34 & 0x4400) { + func_84305760(D_84390010[D_84390240.unk_00->unk_2C], 3); + func_8431F290(D_84390010[D_84390240.unk_00->unk_2C], arg0, D_84390240.unk_00->unk_50 = 2, 1); + } else { + func_84305760(D_84390010[D_84390240.unk_00->unk_2C], 3); + } + + func_8431FF18(); + return 1; +} + +void func_84322B04(unk_D_86002F34_00C* arg0) { + unk_D_84390010_654* sp1C = &D_84390204->unk_654; + + func_8430C718(&arg0->unk_24.fovy, 30.0f, 0.05f); + + switch (D_84390240.unk_00->unk_3C) { + case 0: + func_843066E0(D_84390010[0]); + func_843066E0(D_84390010[1]); + + if ((func_84320400() == 0) && (func_843210BC() == 0)) { + func_84306470(D_84390204); + func_843226A4(arg0); + func_8431FF28(); + + if ((D_84390240.unk_00->unk_34 == 1) && (D_84390200->unk_4C8 == 1)) { + func_843223FC(D_84390200); + } + + func_843081F0(D_84390204, &D_843901B0.unk_00); + + if (sp1C->unk_34 & 0x4000) { + D_843901B0.unk_00.y = 15.000001f; + } + + if (D_84390240.unk_00->unk_34 == 1) { + func_8431FF70(arg0); + + if ((D_84390240.unk_00->unk_48 == 0x1C) || (D_84390240.unk_00->unk_48 == 0x11) || + (D_84390240.unk_00->unk_48 == 0x1F)) { + func_8431F420(D_84390204, arg0, 3); + } else { + func_8431F420(D_84390204, arg0, 4); + } + + if (sp1C->unk_34 & 0x4000) { + arg0->unk_60.at.y = 15.000001f; + } + func_843087F8(D_84390204); + } else if ((D_84390240.unk_00->unk_48 == 0x1C) || (D_84390240.unk_00->unk_48 == 0x11) || + (D_84390240.unk_00->unk_48 == 0x1F)) { + func_8431D7D8(&D_8438498C, arg0, D_84390204); + } else { + func_8431D7D8(&D_843848F0, arg0, D_84390204); + } + } + break; + + case 1: + if (func_84302000(D_84390204) != 0) { + D_84390234 = D_84390230 = D_8439022C; + func_843184E4(0); + func_8431AE5C(); + D_84390240.unk_00->unk_3C += 1; + } + break; + + case 2: + if (D_84390240.unk_00->unk_34 == 1) { + if ((D_84390240.unk_00->unk_48 == 0x1C) || (D_84390240.unk_00->unk_48 == 0x11) || + (D_84390240.unk_00->unk_48 == 0x1F)) { + if (func_8431ADAC(0xA) != 0) { + func_8431FF70(arg0); + if (func_843229A4(arg0) != 0) { + D_84390240.unk_00->unk_20 = 1; + } + } + } else if (func_8431ADAC(0x28) != 0) { + func_8431FF70(arg0); + if (func_843229A4(arg0) != 0) { + D_84390240.unk_00->unk_20 = 1; + } + } + } else if (func_8431D118(arg0, D_84390204, 1, 1) != 0) { + func_8431FF70(arg0); + if (func_843229A4(arg0) != 0) { + D_84390240.unk_00->unk_20 = 1; + } + } + break; + } +} + +void func_84322E70(unk_D_86002F34_00C* arg0) { + s32 temp_v0; + s32 temp_t0; + + if (D_84390230 != D_8439022C) { + temp_v0 = func_84320020(D_84390010[D_84390240.unk_00->unk_2C]) & 0xFFFFFFFF; + switch (temp_v0) { + case 20: + do { + temp_t0 = D_84385B70[func_8430C384(5.0f)]; + } while (temp_t0 == D_84390240.unk_00->unk_50); + D_84390240.unk_00->unk_50 = temp_t0; + func_8431F290(D_84390204, arg0, D_84390240.unk_00->unk_50, 1); + break; + + case 21: + do { + temp_t0 = D_84385B78[func_8430C384(4.0f)]; + } while (temp_t0 == D_84390240.unk_00->unk_50); + D_84390240.unk_00->unk_50 = temp_t0; + func_8431F290(D_84390204, arg0, D_84390240.unk_00->unk_50, 1); + break; + + case 22: + do { + temp_t0 = D_84385B7C[func_8430C384(3.0f)]; + } while (temp_t0 == D_84390240.unk_00->unk_50); + D_84390240.unk_00->unk_50 = temp_t0; + func_8431F290(D_84390204, arg0, D_84390240.unk_00->unk_50, 1); + break; + + case 23: + do { + temp_t0 = D_84385B80[func_8430C384(6.0f)]; + } while (temp_t0 == D_84390240.unk_00->unk_50); + D_84390240.unk_00->unk_50 = temp_t0; + if (1) {} + if (1) {} + if (1) {} + if (1) {} + func_8431F290(D_84390204, arg0, D_84390240.unk_00->unk_50, 1); + break; + + case 24: + do { + temp_t0 = D_84385B88[func_8430C384(4.0f)]; + } while (temp_t0 == D_84390240.unk_00->unk_50); + D_84390240.unk_00->unk_50 = temp_t0; + func_8431F290(D_84390204, arg0, D_84390240.unk_00->unk_50, 1); + break; + + default: + if (temp_v0 != D_84390240.unk_00->unk_50) { + func_8431F290(D_84390204, arg0, temp_v0, 1); + } + break; + } + } +} + +void func_843230D8(unk_D_86002F34_00C* arg0, s32 arg1) { + unk_D_800FCB18* sp1C = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654.unk_38; + s32 sp18; + + if ((D_84390240.unk_00->unk_50 != 1) && (D_84390240.unk_00->unk_50 != 4) && (D_84390240.unk_00->unk_50 != 5) && + (D_84390240.unk_00->unk_50 != 8) && (D_84390240.unk_00->unk_50 != 9) && (D_84390240.unk_00->unk_50 != 0xA) && + (D_84390240.unk_00->unk_50 != 0xB)) { + if (arg1 == 1) { + sp18 = func_84320064(D_84390010[D_84390240.unk_00->unk_2C]); + } else { + sp18 = func_84320020(D_84390010[D_84390240.unk_00->unk_2C]); + } + + if ((sp1C->unk_5A == 0x3A) || (sp1C->unk_5A == 0x8F)) { + sp18 = 0x19; + } + + if (sp18 == 25) { + return; + } + + switch (sp18) { + case 20: + D_84390240.unk_00->unk_50 = D_84385B70[func_8430C384(ARRAY_COUNT(D_84385B70))]; + if (sp18 != D_84390240.unk_00->unk_50) { + func_8431F290(D_84390204, arg0, D_84390240.unk_00->unk_50, 1); + } + break; + + case 21: + D_84390240.unk_00->unk_50 = D_84385B78[func_8430C384(ARRAY_COUNT(D_84385B78))]; + if (sp18 != D_84390240.unk_00->unk_50) { + func_8431F290(D_84390204, arg0, D_84390240.unk_00->unk_50, 1); + } + break; + + case 22: + D_84390240.unk_00->unk_50 = D_84385B7C[func_8430C384(ARRAY_COUNT(D_84385B7C))]; + if (sp18 != D_84390240.unk_00->unk_50) { + func_8431F290(D_84390204, arg0, D_84390240.unk_00->unk_50, 1); + } + break; + + case 23: + D_84390240.unk_00->unk_50 = D_84385B80[func_8430C384(ARRAY_COUNT(D_84385B80))]; + if (sp18 != D_84390240.unk_00->unk_50) { + func_8431F290(D_84390204, arg0, D_84390240.unk_00->unk_50, 1); + } + break; + + case 24: + D_84390240.unk_00->unk_50 = D_84385B88[func_8430C384(ARRAY_COUNT(D_84385B88))]; + if (sp18 != D_84390240.unk_00->unk_50) { + func_8431F290(D_84390204, arg0, D_84390240.unk_00->unk_50, 1); + } + break; + + default: + if (sp18 != D_84390240.unk_00->unk_50) { + if (1) {} + func_8431F290(D_84390204, arg0, sp18, 1); + } + break; + } + } +} + +s32 func_843233E0(unk_D_86002F34_00C* arg0, s32 arg1) { + UNUSED s32 pad; + s32 sp18 = 0; + + switch (D_84390240.unk_00->unk_50) { + case 1: + func_8430C718(&arg0->unk_24.fovy, 60.0f, 0.03f); + sp18 = 1; + break; + + case 4: + case 5: + case 8: + case 9: + case 10: + case 11: + func_8431D318(arg0, D_84390204); + sp18 = 1; + break; + + default: + if ((D_84390204->unk_4B4 != 6) && (D_84390204->unk_4B4 != 4) && (arg1 != 0)) { + func_8431C71C(arg0, D_84390204); + } + break; + } + return sp18; +} + +void func_843234A0(UNUSED unk_D_86002F34_00C* arg0) { + func_84306584(D_84390204); + func_84306200(D_84390204, 0x10); + if (func_8432103C() == 0) { + D_84390240.unk_00->unk_20 = 2; + } + func_8432E9D8(1); +} + +s32 func_843234FC(UNUSED unk_D_86002F34_00C* arg0) { + if (func_8431ADAC(func_843200B4(D_84390204)) != 0) { + return 1; + } + return 0; +} + +void func_84323538(unk_D_86002F34_00C* arg0) { + switch (D_84390240.unk_00->unk_3C) { + case 0: + func_843233E0(arg0, 1); + if (func_843234FC(arg0) != 0) { + func_8431AE5C(); + func_8431FF28(); + func_843230D8(arg0, 0); + } + break; + + case 1: + func_843233E0(arg0, 1); + if (func_84305CAC(D_84390204, 0x32) != 0) { + func_8431AE5C(); + func_8431FF18(); + func_843234A0(arg0); + } + break; + } +} + +void func_843235F4(unk_D_86002F34_00C* arg0) { + switch (D_84390240.unk_00->unk_3C) { + case 0: + func_8431C71C(arg0, D_84390204); + if (func_84305CAC(D_84390204, 0x32) != 0) { + func_8431FF5C(arg0); + D_84390230--; + func_84322E70(arg0); + if ((D_84390230 < 0) || (D_843C4DA4 != 0)) { + D_84390230 = D_8439022C; + D_84390240.unk_00->unk_3C++; + } else { + func_84305760(D_84390010[D_84390240.unk_00->unk_2C], 0x13); + func_80048014(); + func_8432E9D8(1); + D_84390240.unk_00->unk_3C = 0; + } + } + break; + + case 1: + func_8431C71C(arg0, D_84390204); + func_8431AE5C(); + func_8431FF18(); + D_84390240.unk_00->unk_48 = 0; + func_80048014(); + func_843234A0(arg0); + break; + } +} + +void func_84323740(unk_D_86002F34_00C* arg0) { + switch (D_84390240.unk_00->unk_3C) { + case 0: + if (func_8431ADAC(0xF) != 0) { + func_8432C7A0(7, D_84390204); + func_8431AE5C(); + func_8431FF28(); + func_8431F420(D_84390204, arg0, 3); + } + break; + + case 1: + func_8431C71C(arg0, D_84390204); + if (func_84305CAC(D_84390204, 0x1E) != 0) { + func_8431AE5C(); + func_8431FF18(); + func_843234A0(arg0); + } + break; + } +} + +void func_84323808(unk_D_86002F34_00C* arg0) { + UNUSED s32 pad; + unk_D_800FCB18* sp18 = &D_84390204->unk_654.unk_38; + + func_84307F00(D_84390204); + + switch (D_84390240.unk_00->unk_3C) { + case 0: + func_8431AE5C(); + func_8431FF28(); + func_8000E88C(&D_843901B0.unk_00, D_84390204->unk_4B0 * -175.0f, 25.0f, 0.0f); + func_8431D7D8(&D_84384958, arg0, D_84390204); + if ((D_84390204->unk_000.unk_01A != 0x33) && (D_84390204->unk_000.unk_01A != 0x32)) { + func_84301B84(D_84390204, sp18->unk_5A); + } + break; + + case 1: + if (func_8431D118(arg0, D_84390204, 1, 0) != 0) { + func_8431AE5C(); + func_8431FF18(); + func_843234A0(arg0); + } + break; + } +} + +void func_84323928(unk_D_86002F34_00C* arg0) { + switch (D_84390240.unk_00->unk_3C) { + case 0: + func_8431AE5C(); + func_8431FF28(); + func_843081F0(D_84390204, &D_843901B0.unk_00); + func_8431D7D8(&D_84384924, arg0, D_84390204); + break; + + case 1: + func_8431D318(arg0, D_84390204); + if (func_84305CAC(D_84390204, 0x1E) != 0) { + func_8431AE5C(); + func_8431FF18(); + func_843234A0(arg0); + } + break; + } +} + +void func_843239EC(unk_D_86002F34_00C* arg0) { + unk_D_84390010_654* temp_a2 = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654; + u32 var_v1 = 0; + + if (D_84390240.unk_00->unk_48 == 0x18) { + var_v1 = 0xA; + } else if (D_84390240.unk_00->unk_48 == 0x14) { + var_v1 = 0xB; + } else if (temp_a2->unk_34 & 0x4000) { + var_v1 = 0xC; + } else if (temp_a2->unk_34 & 0x10) { + var_v1 = 0xC; + } else if (temp_a2->unk_34 & 0x400) { + var_v1 = 0xD; + } + + switch (var_v1) { + case 0: + func_84323538(arg0); + break; + + case 10: + func_843235F4(arg0); + break; + + case 11: + func_84323740(arg0); + break; + + case 12: + func_84323808(arg0); + break; + + case 13: + func_84323928(arg0); + break; + + default: + func_84323538(arg0); + break; + } +} + +void func_84323AFC(unk_D_84390010* arg0) { + if (arg0->unk_654.unk_38.unk_5A == 0x45) { + func_8430AE90(arg0); + } +} + +s32 func_84323B2C(unk_D_84390010* arg0) { + if (arg0->unk_654.unk_38.unk_5A == 0x53) { + return 1; + } + return 0; +} + +void func_84323B50(unk_D_86002F34_00C* arg0, s32* arg1, s32* arg2) { + if ((*arg1 == 1) && (*arg2 == 1)) { + func_843184FC(); + func_843087F8(D_84390204); + D_84390240.unk_00->unk_1A = 0; + func_8431AE5C(); + func_8431AE6C(); + func_8431FF18(); + func_8431F680(); + func_84320CEC(arg0); + } +} + +void func_84323BCC(unk_D_86002F34_00C* arg0) { + switch (D_84390240.unk_00->unk_3C) { + case 0: + if (func_8431F7B0(D_84390200) == 0) { + func_8431F500(D_84390200, arg0, 0); + func_8431AE5C(); + func_8431FF28(); + func_84305760(D_84390204, 0xE); + func_843065C4(D_84390200); + func_84370ADC(D_84390200); + func_843184E4(1); + } + break; + + case 1: + func_8431C8E0(arg0, D_84390200); + if ((func_84303D50(D_84390200) != 0) || (func_8431ADAC(0x5A) != 0)) { + D_84390220 = func_8431FCCC(D_84390200); + D_84390224 = func_8431FCCC(D_84390204); + func_84323B50(arg0, &D_84390220, &D_84390224); + } + break; + } +} + +void func_84323CE4(unk_D_86002F34_00C* arg0) { + s32 sp1C; + + switch (D_84390240.unk_00->unk_3C) { + case 0: + if (func_8431F7B0(D_84390200) == 0) { + func_84370ADC(D_84390200); + func_8431F500(D_84390200, arg0, 0); + func_8431AE5C(); + func_8431FF28(); + func_84305760(D_84390204, 0xB); + func_843065C4(D_84390200); + func_843184E4(1); + } + break; + + case 1: + func_8431C8E0(arg0, D_84390200); + D_84390220 = func_8431FCCC(D_84390200); + D_84390224 = func_8431FCCC(D_84390204); + sp1C = func_84305458(D_84390204); + if ((sp1C == 2) && ((func_84303D50(D_84390200) != 0) || (func_8431ADAC(0x64) != 0))) { + func_84323B50(arg0, &D_84390220, &D_84390224); + } else if (sp1C == 1) { + func_84323B50(arg0, &D_84390220, &D_84390224); + } + break; + } +} + +void func_84323E44(unk_D_86002F34_00C* arg0) { + unk_D_800FCB18* sp34 = &D_84390204->unk_654.unk_38; + UNUSED s32 pad; + UNUSED s16 pad2; + s16 sp2C; + + switch (D_84390240.unk_00->unk_3C) { + case 0: + if (func_8431F7B0(D_84390200) == 0) { + func_84370ADC(D_84390200); + func_8431F500(D_84390200, arg0, 0); + func_8431AE5C(); + func_8431FF28(); + func_843065C4(D_84390200); + func_843184E4(1); + sp2C = func_84307FAC(D_84390200); + func_8432C604(sp34->unk_5A, D_84390204, D_84390200, sp2C, func_84307FE0(D_84390200)); + func_84308654(D_84390200, 0x10, 0); + } + break; + + case 1: + func_8431C8E0(arg0, D_84390200); + D_84390220 = func_8431FCCC(D_84390200); + D_84390224 = func_8431FCCC(D_84390204); + if ((func_84303D50(D_84390200) != 0) || (func_8431ADAC(0x5A) != 0)) { + func_84323B50(arg0, &D_84390220, &D_84390224); + } + break; + } +} + +void func_84323FA0(unk_D_86002F34_00C* arg0) { + unk_D_800FCB18* sp24 = &D_84390200->unk_654.unk_38; + UNUSED s32 pad; + s32 sp1C; + s32 temp_v0; + s32 var_a0; + + switch (D_84390240.unk_00->unk_3C) { + case 0: + if (func_8431F7B0(D_84390200) == 0) { + func_84323AFC(D_84390204); + func_843184E4(1); + func_8431AE5C(); + func_8431FF28(); + func_8431B078(D_84390200); + if (D_84390240.unk_00->unk_1A == 3) { + func_84305760(D_84390204, 0xB); + } else { + func_84305760(D_84390204, 4); + } + func_8431F500(D_84390200, arg0, 0); + func_84370ADC(D_84390200); + func_843065C4(D_84390200); + func_8432B1BC(D_84390200); + } + break; + + case 1: + if (func_8431ADAC(5) != 0) { + func_843223FC(D_84390204); + D_84390240.unk_00->unk_3C++; + } + break; + + case 2: + func_8431F680(); + D_84390220 = func_8431FCCC(D_84390200); + D_84390224 = func_8431FCCC(D_84390204); + if (sp24->unk_0C != 0) { + if (func_84303D50(D_84390200) != 0) { + D_84390240.unk_00->unk_3C = 4; + } else if (func_8430602C(D_84390200, 2) != 0) { + D_84390240.unk_00->unk_3C = 5; + } else if (func_8431C8E0(arg0, D_84390200) != 0) { + D_84390240.unk_00->unk_3C = 3; + } + } else if (func_8431C8E0(arg0, D_84390200) != 0) { + D_84390240.unk_00->unk_3C = 4; + } + break; + + case 3: + D_84390220 = func_8431FCCC(D_84390200); + D_84390224 = func_8431FCCC(D_84390204); + func_8431C8E0(arg0, D_84390200); + if (func_84303D50(D_84390200) != 0) { + D_84390240.unk_00->unk_3C++; + } else if (func_8430602C(D_84390200, 0xF) != 0) { + D_84390240.unk_00->unk_3C++; + } + break; + + case 4: + D_84390220 = func_8431FCCC(D_84390200); + D_84390224 = func_8431FCCC(D_84390204); + temp_v0 = func_8431C8E0(arg0, D_84390200); + if ((D_84390220 == 1) && (D_84390224 == 1) && (temp_v0 != 0) && (func_8431ADAC(0xF) != 0)) { + D_84390240.unk_00->unk_3C = 6; + } + break; + + case 5: + D_84390220 = func_8431FCCC(D_84390200); + D_84390224 = func_8431FCCC(D_84390204); + sp1C = func_8431C8E0(arg0, D_84390200); + if ((func_84323B2C(D_84390204) != 0) && ((D_843C4DEC < 0xA) || (D_843C4DA4 != 0)) && + !(sp24->unk_15 & 0x20)) { + var_a0 = 0x5A; + } else { + var_a0 = 0xF; + } + + if ((D_84390220 == 1) && (D_84390224 == 1) && (sp1C != 0) && (func_8431ADAC(var_a0) != 0)) { + D_84390240.unk_00->unk_3C++; + } + break; + + case 6: + if (func_8431F888(D_84390200) == 0) { + D_84390220 = func_8431FCCC(D_84390200); + D_84390224 = func_8431FCCC(D_84390204); + func_8431C8E0(arg0, D_84390200); + func_84323B50(arg0, &D_84390220, &D_84390224); + } + break; + } +} + +void func_84324404(void) { +} + +void func_8432440C(void) { +} + +void func_84324414(unk_D_86002F34_00C* arg0) { + unk_D_800FCB18* sp24 = &D_84390204->unk_654.unk_38; + unk_D_8438E7B0_A50* temp_v1 = &D_84384570[func_84307F00(D_84390200)]->unk_000[sp24->unk_5A - 1]; + volatile s32 sp1C; + s32 temp_v0_2; + + if (D_84390200->unk_000.unk_01A == 0x98) { + sp1C = 0xF; + } else if (temp_v1->unk_0A == 0xFF) { + sp1C = D_84390204->unk_000.unk_040.unk_04->unk_0A - temp_v1->unk_06; + } else { + sp1C = temp_v1->unk_0A - temp_v1->unk_06; + } + + switch (D_84390240.unk_00->unk_3C) { + case 0: + if (func_8431F7B0(D_84390200) == 0) { + func_8431F680(); + func_8431B078(D_84390200); + func_84305760(D_84390204, 4); + D_84390230--; + func_8431F500(D_84390200, arg0, D_84390230 + 1); + if (D_84390230 < 0) { + func_8431F500(D_84390200, arg0, D_84390230 + 1); + func_8431C8E0(arg0, D_84390200); + func_84370ADC(D_84390200); + func_8431AE5C(); + D_84390240.unk_00->unk_3C = 2; + func_843065C4(D_84390200); + func_843184E4(1); + } else { + D_84390240.unk_00->unk_3C++; + } + } + break; + + case 1: + func_8431C71C(arg0, D_84390200); + if (func_8431ADAC(sp1C) != 0) { + func_80048014(); + func_8432E9D8(1); + D_84390240.unk_00->unk_3C = 0; + } + break; + + case 2: + D_84390220 = func_8431FCCC(D_84390200); + D_84390224 = func_8431FCCC(D_84390204); + + if (sp24->unk_0C != 0) { + if (func_84303D50(D_84390200) != 0) { + D_84390240.unk_00->unk_3C = 5; + } + + if (func_8430602C(D_84390200, 0xF) != 0) { + D_84390240.unk_00->unk_3C = 5; + } + + if (func_8431C8E0(arg0, D_84390200) != 0) { + D_84390240.unk_00->unk_3C = 4; + } + } else if (func_8431C8E0(arg0, D_84390200) != 0) { + func_8431AE5C(); + D_84390240.unk_00->unk_3C = 5; + } + break; + + case 3: + D_84390220 = func_8431FCCC(D_84390200); + D_84390224 = func_8431FCCC(D_84390204); + + if (func_84303D50(D_84390200) != 0) { + D_84390240.unk_00->unk_3C = 5; + } + + if (func_8431C8E0(arg0, D_84390200) != 0) { + D_84390240.unk_00->unk_3C = 9; + } + break; + + case 4: + D_84390220 = func_8431FCCC(D_84390200); + D_84390224 = func_8431FCCC(D_84390204); + + if (func_84303D50(D_84390200) != 0) { + D_84390240.unk_00->unk_3C = 5; + } + + func_8431C8E0(arg0, D_84390200); + + if (func_8430602C(D_84390200, 0xF) != 0) { + D_84390240.unk_00->unk_3C++; + } + break; + + case 5: + D_84390220 = func_8431FCCC(D_84390200); + D_84390224 = func_8431FCCC(D_84390204); + temp_v0_2 = func_8431C8E0(arg0, D_84390200); + if ((D_84390220 == 1) && (D_84390224 == 1) && (temp_v0_2 != 0) && (func_8431ADAC(0xF) != 0)) { + D_84390240.unk_00->unk_3C++; + } + break; + + case 6: + if (func_8431F888(D_84390200) == 0) { + D_84390220 = func_8431FCCC(D_84390200); + D_84390224 = func_8431FCCC(D_84390204); + func_8431C8E0(arg0, D_84390200); + func_84323B50(arg0, &D_84390220, &D_84390224); + } + break; + } +} + +void func_843248B8(unk_D_86002F34_00C* arg0) { + func_8431FF70(arg0); + func_84370ADC(D_84390010[!D_84390240.unk_00->unk_2C]); + if (D_84390240.unk_00->unk_48 == 0x16) { + func_84323BCC(arg0); + } else if (D_84390240.unk_00->unk_48 == 0x20) { + func_84323E44(arg0); + } else if (D_84390240.unk_00->unk_48 == 0x1A) { + func_84323CE4(arg0); + } else if (D_84390240.unk_00->unk_1A == 1) { + func_84324414(arg0); + } else { + func_84323FA0(arg0); + } +} + +void func_84324988(unk_D_86002F34_00C* arg0) { + switch (D_84390240.unk_00->unk_20) { + case 0: + func_84322B04(arg0); + break; + + case 1: + func_843239EC(arg0); + break; + + case 2: + func_843248B8(arg0); + break; + } +} + +void func_843249F8(unk_D_86002F34_00C* arg0) { + switch (D_84390240.unk_00->unk_20) { + case 0: + func_84322B04(arg0); + break; + + case 1: + func_843239EC(arg0); + break; + + case 2: + func_843248B8(arg0); + break; + } +} + +s32 func_84324A68(void) { + func_843233E0(D_84390240.unk_00->unk_DC, 0); + + if (func_8431ADAC(func_843200B4(D_84390204)) == 0) { + return 0; + } + + if ((D_84390240.unk_00->unk_48 != 0x1E) && (D_84390240.unk_00->unk_48 != 0x27)) { + func_843184E4(3); + } + + if (D_84390240.unk_00->unk_48 == 0x1B) { + func_800414B8(func_84308D98(D_84390204)); + } + + switch (D_84390240.unk_00->unk_48) { + case 7: + return func_84320658(7); + + case 21: + return func_84320658(7); + + case 39: + return func_84320658(7); + + case 27: + return func_84320658(0x1B); + + case 30: + return func_84320658(0x1E); + + case 28: + return func_84320658(0x1C); + + case 15: + return func_84320658(0xF); + + case 25: + return func_84320658(0x19); + + case 29: + return func_84320658(0x1D); + + case 38: + return func_84320658(0x26); + + case 12: + return func_84320658(0xC); + + case 13: + return func_84320658(0xD); + + case 14: + return func_84320658(0xE); + + case 17: + return func_84320658(0x11); + + case 31: + return func_84320658(0x1F); + } + + return 0; +} + +void func_84324C28(unk_D_86002F34_00C* arg0) { + unk_D_800FCB18* sp1C = &D_84390204->unk_654.unk_38; + unk_D_8438E7B0_A50* sp18 = &D_84384570[func_84307F00(D_84390204)]->unk_000[sp1C->unk_5A - 1]; + + switch (D_84390240.unk_00->unk_20) { + case 0: + func_8431FF5C(arg0); + func_843230D8(arg0, 0); + func_8431AE5C(); + func_8431AE6C(); + if (sp18->unk_04 < 0x15) { + func_84370ADC(D_84390204); + } + D_84390240.unk_00->unk_20++; + break; + + case 1: + func_843233E0(arg0, 1); + if (D_84390204->unk_4C4 == (sp18->unk_04 + 1)) { + func_84370ADC(D_84390204); + } + + if (D_84390204->unk_4C4 >= (sp18->unk_04 + 0xA)) { + D_84390220 = func_8431FCCC(D_84390010[D_84390240.unk_00->unk_2C]); + D_84390224 = func_8431FCCC(D_84390010[!D_84390240.unk_00->unk_2C]); + } + + if ((D_84390204->unk_4C4 == (sp18->unk_04 + 0x12)) && (sp1C->unk_5A == 0x64)) { + func_843184E4(0xF); + } + + if (func_84305CAC(D_84390204, 0x3C) != 0) { + func_8431AE5C(); + D_84390240.unk_00->unk_20++; + } + break; + + case 2: + if (D_84390204->unk_4C4 == (sp18->unk_04 + 1)) { + func_84370ADC(D_84390204); + } + func_843233E0(arg0, 1); + D_84390220 = func_8431FCCC(D_84390010[D_84390240.unk_00->unk_2C]); + D_84390224 = func_8431FCCC(D_84390010[!D_84390240.unk_00->unk_2C]); + if ((D_84390220 == 1) && (D_84390224 == 1) && (func_8431ADAC(0xF) != 0)) { + if ((D_84390200->unk_654.unk_38.unk_5A & 0xF0) == 0xF0) { + D_84390240.unk_00->unk_34 = 3; + } + func_8431AE5C(); + func_8431F680(); + func_84320E54(arg0); + } + break; + } +} + +void func_84324F1C(unk_D_86002F34_00C* arg0) { + switch (D_84390240.unk_00->unk_20) { + case 0: + func_8431FF5C(arg0); + func_8431DF98(arg0, D_84390204); + func_8431B858(D_84390204, arg0); + func_84370ADC(D_84390204); + func_8431AE5C(); + func_8431AE6C(); + D_84390240.unk_00->unk_20++; + break; + + case 1: + if (func_84305CAC(D_84390204, 0x3C) != 0) { + D_84390240.unk_00->unk_20 += 1; + } + break; + + case 2: + D_84390220 = func_8431FCCC(D_84390010[D_84390240.unk_00->unk_2C]); + D_84390224 = func_8431FCCC(D_84390010[!D_84390240.unk_00->unk_2C]); + if ((D_84390200->unk_654.unk_38.unk_5A & 0xF0) == 0xF0) { + D_84390240.unk_00->unk_34 = 3; + } + func_8431AE5C(); + func_8431F680(); + func_84320E54(arg0); + break; + } +} + +void func_84325080(unk_D_86002F34_00C* arg0) { + switch (D_84390240.unk_00->unk_20) { + case 0: + func_8431FF5C(arg0); + func_84370ADC(D_84390204); + func_843230D8(arg0, 0); + func_8431AE5C(); + D_84390240.unk_00->unk_20++; + break; + + case 1: + func_843233E0(arg0, 1); + if (func_8431ADAC(0x28) != 0) { + D_84390240.unk_00->unk_20 += 1; + } + break; + + case 2: + func_843233E0(arg0, 1); + D_84390220 = func_8431FCCC(D_84390010[D_84390240.unk_00->unk_2C]); + D_84390224 = func_8431FCCC(D_84390010[!D_84390240.unk_00->unk_2C]); + if ((D_84390200->unk_654.unk_38.unk_5A & 0xF0) == 0xF0) { + D_84390240.unk_00->unk_34 = 3; + } + func_8431AE5C(); + func_8431F680(); + func_84320E54(arg0); + break; + } +} + +void func_843251D4(unk_D_86002F34_00C* arg0) { + unk_D_800FCB18* sp1C = &D_84390200->unk_654.unk_38; + + switch (D_84390240.unk_00->unk_20) { + case 0: + func_84306200(D_84390204, 0x1800); + func_8431FF5C(arg0); + func_8431AE5C(); + func_843230D8(arg0, 0); + func_84370ADC(D_84390204); + func_8431AE5C(); + D_84390240.unk_00->unk_20++; + break; + + case 1: + func_843233E0(arg0, 1); + if (func_84305CAC(D_84390204, 0x3C) != 0) { + func_8431AE5C(); + D_84390240.unk_00->unk_20++; + } + break; + + case 2: + if (func_8431F7B0(D_84390200) == 0) { + func_8432E9D8(1); + func_80048014(); + func_8431F500(D_84390200, arg0, func_8430C414(2)); + func_84305760(D_84390204, 4); + func_8431AE5C(); + D_84390240.unk_00->unk_20++; + } + break; + + case 3: + if (func_8431F888(D_84390200) == 0) { + func_8431C71C(arg0, D_84390200); + if (D_84390240.unk_00->unk_14 == 0) { + func_843184E4(1); + } + D_84390220 = func_8431FCCC(D_84390010[D_84390240.unk_00->unk_2C]); + D_84390224 = func_8431FCCC(D_84390010[!D_84390240.unk_00->unk_2C]); + if (func_8431ADAC(0x32) != 0) { + D_84390240.unk_00->unk_20 += 1; + } + if (func_84303D50(D_84390200) != 0) { + func_8431AE5C(); + D_84390240.unk_00->unk_20++; + } + } + break; + + case 4: + func_8431C71C(arg0, D_84390200); + D_84390220 = func_8431FCCC(D_84390010[D_84390240.unk_00->unk_2C]); + D_84390224 = func_8431FCCC(D_84390010[!D_84390240.unk_00->unk_2C]); + if ((D_84390224 == 1) && (D_84390220 == 1)) { + if (sp1C->unk_0C != 0) { + func_8432E9D8(1); + func_80048014(); + func_8431F420(D_84390204, arg0, 3); + D_84390240.unk_00->unk_20++; + } else { + if ((D_84390200->unk_654.unk_38.unk_5A & 0xF0) == 0xF0) { + D_84390240.unk_00->unk_34 = 3; + } + func_8431AE5C(); + func_8431F680(); + func_8431FF3C(arg0, 5); + } + } + break; + + case 5: + func_8431F420(D_84390204, arg0, 3); + D_84390220 = func_8431FCCC(D_84390010[D_84390240.unk_00->unk_2C]); + D_84390224 = func_8431FCCC(D_84390010[!D_84390240.unk_00->unk_2C]); + if ((D_84390200->unk_654.unk_38.unk_5A & 0xF0) == 0xF0) { + D_84390240.unk_00->unk_34 = 3; + } + func_8431AE5C(); + func_8431F680(); + func_84320C38(arg0); + break; + } +} + +void func_843255DC(unk_D_86002F34_00C* arg0) { + switch (D_84390240.unk_00->unk_20) { + case 0: + func_8431FF5C(arg0); + func_84370ADC(D_84390204); + func_8431F420(D_84390204, arg0, 3); + func_8431AE5C(); + D_84390240.unk_00->unk_20 += 1; + break; + + case 1: + if (func_8431ADAC(0x28) != 0) { + D_84390240.unk_00->unk_20 += 1; + } + break; + + case 2: + D_84390220 = func_8431FCCC(D_84390010[D_84390240.unk_00->unk_2C]); + D_84390224 = func_8431FCCC(D_84390010[!D_84390240.unk_00->unk_2C]); + if ((D_84390200->unk_654.unk_38.unk_5A & 0xF0) == 0xF0) { + D_84390240.unk_00->unk_34 = 3; + } + func_8431AE5C(); + func_8431F680(); + func_84320E54(arg0); + break; + } +} + +void func_84325724(unk_D_86002F34_00C* arg0) { + UNUSED s32 pad[3]; + unk_D_800FCB18* sp30 = &D_84390204->unk_654.unk_38; + unk_D_800FCB18* sp2C = &D_84390200->unk_654.unk_38; + unk_D_84390010_654* sp28 = &D_84390204->unk_654; + unk_D_84390010_654* sp24 = &D_84390200->unk_654; + + switch (D_84390240.unk_00->unk_20) { + case 0: + func_843230D8(arg0, 0); + func_8431CCFC(arg0, D_84390204); + if (sp30->unk_4D & 0x10) { + if (sp2C->unk_4E & 8) { + sp28->unk_BC = D_84390204->unk_720->unk_02 = sp24->unk_BE; + } else if (D_84390200->unk_720->unk_02 == 0x98) { + sp28->unk_BC = D_84390204->unk_720->unk_02 = sp2C->unk_0B; + } else { + sp28->unk_BC = D_84390204->unk_720->unk_02 = D_84390200->unk_720->unk_02; + } + } else if (sp2C->unk_4E & 8) { + D_84390204->unk_720->unk_02 = sp24->unk_BE; + } else if (D_84390200->unk_720->unk_02 == 0x98) { + D_84390204->unk_720->unk_02 = sp2C->unk_0B; + } else { + D_84390204->unk_720->unk_02 = D_84390200->unk_720->unk_02; + } + D_84390204->unk_720->unk_04 = &D_84390204->unk_724->unk_01C[D_84390204->unk_654.unk_08]; + D_84390204->unk_720->unk_00 |= 0x80; + D_84390240.unk_00->unk_20 += 1; + break; + + case 1: + func_8431CCFC(arg0, D_84390204); + if (D_84390204->unk_720->unk_00 & 0x10) { + D_84390204->unk_720->unk_00 &= ~0x90; + func_84309168(D_84390204); + func_84307748(D_84390204); + func_84301B84(D_84390204, sp30->unk_5A); + func_8432B5B8(D_84390204, sp30, 0); + D_84390240.unk_00->unk_20 += 1; + } + break; + + case 2: + func_8431CCFC(arg0, D_84390204); + func_8432B5B8(D_84390204, sp30, 0); + func_84305760(D_84390204, 0x12); + D_84390240.unk_00->unk_20 += 1; + break; + + case 3: + func_8431CCFC(arg0, D_84390204); + D_84390204->unk_728.unk_168->unk_00.unk_01 |= 1; + D_84390204->unk_728.unk_000.unk_000.unk_01 |= 1; + func_843074A0(D_84390204); + if (func_84305B6C(D_84390204, 0x32) != 0) { + func_8431F680(); + func_84320CEC(arg0); + } + break; + } +} + +void func_84325A10(unk_D_86002F34_00C* arg0) { + unk_D_800FCB18* sp1C = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654.unk_38; + unk_D_84390010_654* sp18 = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654; + + switch (D_84390240.unk_00->unk_20) { + case 0: + func_8431FF5C(arg0); + func_84301B84(D_84390204, sp1C->unk_5A); + func_843230D8(arg0, 0); + if (!(sp18->unk_34 & 0x800)) { + func_84302128(D_84390204); + } + D_84390240.unk_00->unk_20 += 1; + break; + + case 1: + func_843233E0(arg0, 0); + if (!(sp18->unk_34 & 0x800)) { + func_84304800(D_84390204); + } + if (func_84301FF0(D_84390204) == 0) { + func_8432B5B8(D_84390204, sp1C, 0); + func_8431F420(D_84390204, arg0, 3); + func_8431AE5C(); + D_84390240.unk_00->unk_20 += 1; + } + break; + + case 2: + func_8431F420(D_84390204, arg0, 3); + D_84390220 = func_8431FCCC(D_84390010[D_84390240.unk_00->unk_2C]); + D_84390224 = func_8431FCCC(D_84390010[!D_84390240.unk_00->unk_2C]); + if (func_8431ADAC(0x2E) != 0) { + D_84390240.unk_00->unk_20 += 1; + } + break; + + case 3: + if (!(sp18->unk_34 & 0x800)) { + func_843061EC(D_84390204, 0x800); + } + D_84390220 = func_8431FCCC(D_84390010[D_84390240.unk_00->unk_2C]); + D_84390224 = func_8431FCCC(D_84390010[!D_84390240.unk_00->unk_2C]); + if ((D_84390200->unk_654.unk_38.unk_5A & 0xF0) == 0xF0) { + D_84390240.unk_00->unk_34 = 3; + } + func_8431F680(); + func_84320E54(arg0); + break; + } +} + +s32 func_84325CAC(unk_D_84390010* arg0) { + func_8432B0E4(arg0); + func_8432B38C(arg0); + func_84370ADC(arg0); +} + +void func_84325CDC(unk_D_86002F34_00C* arg0) { + switch (D_84390240.unk_00->unk_20) { + case 0: + func_8431FF5C(arg0); + func_84370ADC(D_84390204); + func_843230D8(arg0, 0); + func_8431AE5C(); + func_8431AE6C(); + D_84390240.unk_00->unk_20 += 1; + break; + + case 1: + func_843233E0(arg0, 1); + if (func_84305CAC(D_84390204, 0x3C) != 0) { + func_84325CAC(D_84390200); + D_84390240.unk_00->unk_20 += 1; + } + break; + + case 2: + func_843233E0(arg0, 1); + D_84390220 = func_8431FCCC(D_84390010[D_84390240.unk_00->unk_2C]); + D_84390224 = func_8431FCCC(D_84390010[!D_84390240.unk_00->unk_2C]); + if ((D_84390200->unk_654.unk_38.unk_5A & 0xF0) == 0xF0) { + D_84390240.unk_00->unk_34 = 3; + } + func_8000E88C(&D_84390204->unk_000.unk_030, 1.0f, 1.0f, 1.0f); + func_8000E88C(&D_84390200->unk_000.unk_030, 1.0f, 1.0f, 1.0f); + func_8431AE5C(); + func_8431F680(); + func_84320E54(arg0); + break; + } +} + +void func_84325E94(unk_D_86002F34_00C* arg0) { + unk_D_8438E7B0_A50* sp4C = &D_84384570[D_84390240.unk_00->unk_2C]->unk_B00; + UNUSED s32 pad; + Vec3f sp3C; + + switch (D_84390240.unk_00->unk_20) { + case 0: + func_8431AE5C(); + func_8431FF18(); + func_8431F420(D_84390204, arg0, 3); + func_8431CB54(arg0, D_84390204); + func_843061EC(D_84390204, 0x200); + D_84390240.unk_00->unk_20 += 1; + break; + + case 1: + if (D_84390204->unk_000.unk_024.y >= 100.0f) { + func_843081F0(D_84390204, &sp3C); + sp3C.y += func_84308548(D_84390204); + D_84390208 = func_8431AD20(D_84390204, 3.0f, 500.0f); + func_8431BB80(arg0, sp3C, 0x11C6, func_84308190(D_84390204) - (D_84390204->unk_4B0 * 0x754E), + D_84390208, func_84308548(D_84390204)); + func_8000E88C(&sp3C, 0.0f, 200.0f, 0.0f); + func_8430C1E4(&arg0->unk_60.at, &sp3C); + func_8432E9D8(2); + func_8001BD04(&D_84390204->unk_000, sp4C->unk_00); + arg0->unk_24.fovy = 60.0f; + D_84390240.unk_00->unk_20 += 1; + } else { + func_8431CB54(arg0, D_84390204); + } + break; + + case 2: + func_8430C718(&arg0->unk_24.fovy, 60.0f, 0.2f); + if (D_84390204->unk_000.unk_024.y >= 200.0f) { + D_84390240.unk_00->unk_20 += 1; + } + break; + + case 3: + D_84390220 = func_8431FCCC(D_84390010[D_84390240.unk_00->unk_2C]); + D_84390224 = func_8431FCCC(D_84390010[!D_84390240.unk_00->unk_2C]); + if ((D_84390220 == 1) && (D_84390224 == 1) && (func_8431ADF0(0x1E) != 0)) { + func_843061EC(D_84390010[D_84390240.unk_00->unk_2C], 4); + func_8432F9B4(); + func_8431AE5C(); + func_8431F680(); + func_84320CEC(arg0); + } + break; + } +} + +void func_843261CC(unk_D_86002F34_00C* arg0) { + UNUSED s32 pad; + f32 sp28; + UNUSED s16 pad2; + u16 sp24 = D_84385B8C; + + switch (D_84390240.unk_00->unk_20) { + case 0: + func_8431FF5C(arg0); + func_8431AE5C(); + func_8431FF18(); + func_8431F420(D_84390204, arg0, 3); + D_84390240.unk_00->unk_20 += 1; + break; + + case 1: + if (D_84390204->unk_4B8 == 2) { + func_8431CC38(arg0, D_84390204); + D_84390204->unk_000.unk_000.unk_02 &= 0xFFBF; + } + + if ((D_84390204->unk_000.unk_01A == 0x32) || (D_84390204->unk_000.unk_01A == 0x33)) { + if (func_84305B6C(D_84390204, 0x1E) != 0) { + func_843184FC(); + func_843061EC(D_84390204, 0x4000); + D_84390204->unk_000.unk_000.unk_02 &= 0xFFDF; + D_84390240.unk_00->unk_20 += 1; + } + } else if (func_84301FB0(D_84390204) == 0) { + if (func_84307AE0(D_84390204->unk_000.unk_01A, (u8*)&sp24, 2) != 0) { + sp28 = 10.0f; + } else { + sp28 = 3.5f; + } + + if (D_84390204->unk_000.unk_024.y <= (-func_84308548(D_84390204) * sp28)) { + func_843061EC(D_84390204, 0x4000); + D_84390204->unk_000.unk_000.unk_02 &= 0xFFDF; + D_84390240.unk_00->unk_20 += 1; + } + } + break; + + case 2: + if ((D_84390204->unk_000.unk_01A != 0x32) && (D_84390204->unk_000.unk_01A != 0x33)) { + D_84390204->unk_000.unk_000.unk_02 |= 0x40; + } + func_8431CC38(arg0, D_84390204); + D_84390220 = func_8431FCCC(D_84390010[D_84390240.unk_00->unk_2C]); + D_84390224 = func_8431FCCC(D_84390010[!D_84390240.unk_00->unk_2C]); + func_8431F680(); + func_84320E54(arg0); + break; + } +} + +void func_84326460(unk_D_86002F34_00C* arg0) { + switch (D_84390240.unk_00->unk_20) { + case 0: + func_843230D8(arg0, 1); + func_8431FF5C(arg0); + func_8431AE5C(); + func_8431AE6C(); + func_84370ADC(D_84390204); + D_84390240.unk_00->unk_20 += 1; + break; + + case 1: + func_843233E0(arg0, 1); + D_84390220 = func_8431FCCC(D_84390010[D_84390240.unk_00->unk_2C]); + D_84390224 = func_8431FCCC(D_84390010[!D_84390240.unk_00->unk_2C]); + if (func_84305E54(D_84390204, 0x1E) != 0) { + func_8431F680(); + func_84320E54(arg0); + } + break; + } +} + +void func_84326570(unk_D_86002F34_00C* arg0) { + unk_D_84390010_654* sp1C = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654; + + switch (D_84390240.unk_00->unk_20) { + case 0: + func_8431AE5C(); + func_8431FF5C(arg0); + func_84370ADC(D_84390204); + if (!(sp1C->unk_34 & 2)) { + func_843230D8(arg0, 0); + } + D_84390240.unk_00->unk_20 += 1; + break; + + case 1: + D_84390220 = func_8431FCCC(D_84390010[D_84390240.unk_00->unk_2C]); + D_84390224 = func_8431FCCC(D_84390010[!D_84390240.unk_00->unk_2C]); + if (func_8431ADAC(0x3C) != 0) { + D_84390240.unk_00->unk_20 += 1; + } + break; + + case 2: + D_84390220 = func_8431FCCC(D_84390010[D_84390240.unk_00->unk_2C]); + D_84390224 = func_8431FCCC(D_84390010[!D_84390240.unk_00->unk_2C]); + func_8431F680(); + func_84320E54(arg0); + break; + } +} + +void func_843266D4(unk_D_86002F34_00C* arg0) { + func_8431FF70(arg0); + + switch (D_84390240.unk_00->unk_20) { + case 0: + if (func_8431F7B0(D_84390204) == 0) { + func_843184E4(2); + func_843223FC(D_84390204); + D_84390240.unk_00->unk_20 += 1; + } + break; + + case 1: + func_8431F680(); + func_84301B00(); + func_84305760(D_84390204, 0xF); + func_8431F500(D_84390204, arg0, 3); + func_8431B078(D_84390204); + func_8432C7A0(8, D_84390204); + D_84390240.unk_00->unk_20 += 1; + break; + + case 2: + D_84390220 = func_8431FCCC(D_84390010[D_84390240.unk_00->unk_2C]); + D_84390224 = func_8431FCCC(D_84390010[!D_84390240.unk_00->unk_2C]); + func_8431C8E0(arg0, D_84390204); + if (func_84303DEC(D_84390204) != 0) { + D_84390240.unk_00->unk_20 += 1; + } else if (func_84305B6C(D_84390204, 0x32) != 0) { + D_84390240.unk_00->unk_20 += 1; + } + break; + + case 3: + func_8431C8E0(arg0, D_84390204); + if (func_8431F888(D_84390204) == 0) { + D_84390240.unk_00->unk_20 += 1; + } + break; + + case 4: + D_84390220 = func_8431FCCC(D_84390010[D_84390240.unk_00->unk_2C]); + D_84390224 = func_8431FCCC(D_84390010[!D_84390240.unk_00->unk_2C]); + func_8431C8E0(arg0, D_84390204); + func_8431F680(); + func_84320CEC(arg0); + break; + } +} + +void func_8432691C(unk_D_86002F34_00C* arg0) { + switch (D_84390240.unk_00->unk_20) { + case 0: + func_8431FF5C(arg0); + func_84370ADC(D_84390204); + D_84390204->unk_4C8 = 1; + func_8431AE5C(); + D_84390240.unk_00->unk_20 += 1; + break; + + case 1: + D_84390220 = func_8431FCCC(D_84390010[D_84390240.unk_00->unk_2C]); + D_84390224 = func_8431FCCC(D_84390010[!D_84390240.unk_00->unk_2C]); + if (func_8431ADAC(0x3C) != 0) { + D_84390240.unk_00->unk_20 += 1; + } + break; + + case 2: + D_84390220 = func_8431FCCC(D_84390010[D_84390240.unk_00->unk_2C]); + D_84390224 = func_8431FCCC(D_84390010[!D_84390240.unk_00->unk_2C]); + func_8431F680(); + func_84320E54(arg0); + break; + } +} + +void func_84326A70(void) { +} + +void func_84326A78(UNUSED unk_D_86002F34_00C* arg0) { + switch (D_84390240.unk_00->unk_20) { + case 0: + func_8432056C(); + + case 1: + break; + } +} + +void func_84326AC4(unk_D_86002F34_00C* arg0) { + UNUSED s32 pad; + s32 idx = D_84390240.unk_00->unk_2C; + unk_D_8438E7B0_A50* sp1C = &D_84384570[idx]->unk_A80; + + func_8431FF70(arg0); + + switch (D_84390240.unk_00->unk_20) { + case 0: + func_8431F680(); + func_843184E4(2); + D_84390240.unk_00->unk_20 += 1; + break; + + case 1: + if (func_8431F7B0(D_84390204) == 0) { + func_843087F8(D_84390204); + func_8432E9D8(1); + func_84305760(D_84390204, 0xF); + func_8431F500(D_84390204, arg0, 3); + func_8431B078(D_84390204); + func_8431F680(); + func_8001BD04(&D_84390204->unk_000, sp1C->unk_00); + D_84390240.unk_00->unk_20 += 1; + } + break; + + case 2: + if (func_8431ADAC(0x28) != 0) { + D_84390240.unk_00->unk_20 += 1; + } + break; + + case 3: + if (func_8431F888(D_84390204) == 0) { + func_843184FC(); + D_84390240.unk_00->unk_20 += 1; + } + break; + + case 4: + D_84390220 = func_8431FCCC(D_84390010[D_84390240.unk_00->unk_2C]); + D_84390224 = func_8431FCCC(D_84390010[!D_84390240.unk_00->unk_2C]); + if ((D_84390220 != 0) && (D_84390224 != 0)) { + func_8431F680(); + func_84320CEC(arg0); + } + break; + } +} + +void func_84326CB4(unk_D_86002F34_00C* arg0) { + unk_D_84390010_654* sp1C = &D_84390200->unk_654; + + switch (D_84390240.unk_00->unk_20) { + case 0: + if (func_8431F7B0(D_84390200) == 0) { + func_843184E4(2); + func_84323AFC(D_84390204); + func_8431FF70(arg0); + func_8432E9D8(1); + + if (sp1C->unk_34 & 0x200) { + func_8431F500(D_84390200, arg0, D_84390228 = 2); + } else { + if (D_84390200->unk_000.unk_01A == 0xF) { + func_8431F500(D_84390200, arg0, 0); + } + func_8431F500(D_84390200, arg0, D_84390228 = func_8430C414(2)); + } + + func_84305760(D_84390204, 0xC); + func_8431AE5C(); + func_8432E8BC(); + D_84390240.unk_00->unk_20 += 1; + func_8430663C(D_84390200); + } + break; + + case 1: + if ((D_84390200->unk_000.unk_01A == 0xF) && !(sp1C->unk_34 & 0x200)) { + func_8431C8E0(arg0, D_84390200); + } + + if (func_8431ADAC(0x32) != 0) { + func_843184FC(); + func_843223FC(D_84390204); + func_843066E0(D_84390204); + func_8431FF18(); + func_8431AE5C(); + func_8431F680(); + func_84320CEC(arg0); + } + break; + } +} + +void func_84326E84(unk_D_86002F34_00C* arg0) { + unk_D_800FCB18* sp24 = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654.unk_38; + unk_D_800FCB18* sp20 = &D_84390010[!D_84390240.unk_00->unk_2C]->unk_654.unk_38; + + switch (D_84390240.unk_00->unk_20) { + case 0: + func_843058A8(D_84390204); + func_8431F194(arg0, D_84390010[D_84390240.unk_00->unk_2C]); + func_8431F680(); + func_843066E0(D_84390204); + func_8432E9D8(2); + D_84390240.unk_00->unk_20 += 1; + break; + + case 1: + if (func_8431F690(D_84390010[D_84390240.unk_00->unk_2C]) == 0) { + func_843087F8(D_84390204); + func_80048014(); + func_8432E9D8(1); + func_8431F194(arg0, D_84390010[D_84390240.unk_00->unk_2C]); + func_84305760(D_84390010[D_84390240.unk_00->unk_2C], 0xD); + + if (sp24->unk_15 & 0x18) { + func_843184E4(4); + sp24->unk_0C = sp24->unk_0E; + sp20->unk_0C = sp20->unk_0E; + if (sp24->unk_15 & 0x10) { + func_8432C7A0(6, D_84390204); + } else { + func_8432C7A0(5, D_84390204); + } + D_84390240.unk_00->unk_20 += 1; + } else { + func_843184E4(5); + func_800367A0(0x22, 0, 0); + sp24->unk_0C = sp24->unk_10; + sp20->unk_0C = sp20->unk_10; + func_8432C7A0(0xA, D_84390204); + func_8431AE5C(); + D_84390240.unk_00->unk_20 = 3; + } + } + break; + + case 2: + func_8431F194(arg0, D_84390010[D_84390240.unk_00->unk_2C]); + D_84390220 = func_8431FCCC(D_84390010[D_84390240.unk_00->unk_2C]); + D_84390224 = func_8431FCCC(D_84390010[!D_84390240.unk_00->unk_2C]); + + if ((D_84390220 == 1) && (D_84390224 == 1) && (func_8431ADF0(0x32) != 0)) { + func_8431AE5C(); + if (func_84308164(D_84390010[D_84390240.unk_00->unk_2C]) == 0) { + func_8431FF18(); + func_8431FF3C(arg0, 5); + D_84390240.unk_00->unk_2C = !D_84390240.unk_00->unk_2C; + } else if (sp24->unk_4D & 0x80) { + func_8431AE5C(); + func_800367A0(0x22, 0, 0); + sp24->unk_0C = sp24->unk_10; + sp20->unk_0C = sp20->unk_10; + func_8432C7A0(0xA, D_84390204); + D_84390240.unk_00->unk_20 += 1; + } else { + D_84390240.unk_00->unk_20 = 4; + } + } + break; + + case 3: + func_8431F194(arg0, D_84390010[D_84390240.unk_00->unk_2C]); + D_84390220 = func_8431FCCC(D_84390010[D_84390240.unk_00->unk_2C]); + D_84390224 = func_8431FCCC(D_84390010[!D_84390240.unk_00->unk_2C]); + + if ((func_8431ADF0(0x32) != 0) && (D_84390220 == 1) && (D_84390224 == 1)) { + D_84390240.unk_00->unk_20 += 1; + func_8431AE5C(); + } + break; + + case 4: + if (func_8431F888(D_84390200) == 0) { + D_84390240.unk_00->unk_20 += 1; + } + break; + + case 5: + func_8431F680(); + func_8431F194(arg0, D_84390010[D_84390240.unk_00->unk_2C]); + D_84390220 = func_8431FCCC(D_84390010[D_84390240.unk_00->unk_2C]); + D_84390224 = func_8431FCCC(D_84390010[!D_84390240.unk_00->unk_2C]); + func_84320C38(arg0); + break; + } +} + +void func_8432734C(unk_D_86002F34_00C* arg0) { + unk_D_800FCB18* sp1C = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654.unk_38; + unk_D_800FCB18* sp18 = &D_84390010[!D_84390240.unk_00->unk_2C]->unk_654.unk_38; + + switch (D_84390240.unk_00->unk_20) { + case 0: + func_843066E0(D_84390204); + func_8432E9D8(2); + func_8431E118(arg0, D_84390010[D_84390240.unk_00->unk_2C]); + D_84390240.unk_00->unk_20 += 1; + break; + + case 1: + if (func_8431F690(D_84390010[D_84390240.unk_00->unk_2C]) == 0) { + func_843087F8(D_84390204); + func_80048014(); + func_8432E9D8(1); + func_8432C7A0(9, D_84390204); + func_8431AE5C(); + func_8431E118(arg0, D_84390010[D_84390240.unk_00->unk_2C]); + sp1C->unk_0C = sp1C->unk_12; + sp18->unk_0C = sp18->unk_12; + func_843184E4(6); + D_84390240.unk_00->unk_20 += 1; + } + break; + + case 2: + if (func_8431D048(arg0, D_84390010[D_84390240.unk_00->unk_2C]) != 0) { + func_8431F500(D_84390204, arg0, 3); + func_84303E58(D_84390204); + func_8432BF88(D_84390204, 0x1F); + func_8431B078(D_84390204); + D_84390240.unk_00->unk_20 += 1; + } + break; + + case 3: + if (func_8431F888(D_84390200) == 0) { + func_8431C8E0(arg0, D_84390204); + D_84390240.unk_00->unk_20 += 1; + } + break; + + case 4: + func_8431F680(); + D_84390220 = func_8431FCCC(D_84390010[D_84390240.unk_00->unk_2C]); + D_84390224 = func_8431FCCC(D_84390010[!D_84390240.unk_00->unk_2C]); + func_8431C8E0(arg0, D_84390204); + if ((D_84390220 == 1) && (D_84390224 == 1) && (func_8431ADF0(0x3C) != 0)) { + func_84320CEC(arg0); + } + break; + } +} + +void func_843275F8(unk_D_86002F34_00C* arg0) { + switch (D_84390240.unk_00->unk_20) { + case 0: + func_843066E0(D_84390204); + if (func_8431F690(D_84390010[D_84390240.unk_00->unk_2C]) == 0) { + func_843087F8(D_84390204); + func_80048014(); + func_8432E9D8(1); + func_8431AE5C(); + func_8432C6C4(3, D_84390200); + func_800367A0(0x23, 0, 0); + func_8431F194(arg0, D_84390200); + func_843184E4(7); + D_84390240.unk_00->unk_20 += 1; + } + break; + + case 1: + if (func_8431ADAC(0x37) != 0) { + D_84390240.unk_00->unk_20 += 1; + } + + case 2: + if (func_8431ADAC(0x3C) != 0) { + func_84320CEC(arg0); + } + break; + } +} + +void func_84327720(unk_D_86002F34_00C* arg0) { + unk_D_800FCB18* sp24 = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654.unk_38; + unk_D_800FCB18* sp20 = &D_84390010[!D_84390240.unk_00->unk_2C]->unk_654.unk_38; + + switch (D_84390240.unk_00->unk_20) { + case 0: + func_843066E0(D_84390204); + func_8432E9D8(2); + D_84390240.unk_00->unk_20 += 1; + break; + + case 1: + if (func_8431F690(D_84390010[D_84390240.unk_00->unk_2C]) == 0) { + func_843087F8(D_84390204); + func_80048014(); + func_8432E9D8(1); + func_8431F194(arg0, D_84390010[D_84390240.unk_00->unk_2C]); + func_84305760(D_84390010[D_84390240.unk_00->unk_2C], 0xD); + + if (sp24->unk_15 & 0x18) { + func_843184E4(4); + sp24->unk_0C = sp24->unk_0E; + sp20->unk_0C = sp20->unk_0E; + if (sp24->unk_15 & 0x10) { + func_8432C7A0(6, D_84390204); + } else { + func_8432C7A0(5, D_84390204); + } + D_84390240.unk_00->unk_20 += 1; + } else { + func_843184E4(5); + sp24->unk_0C = sp24->unk_10; + sp20->unk_0C = sp20->unk_10; + func_8432C7A0(0xA, D_84390204); + D_84390240.unk_00->unk_20 = 3; + } + } + break; + + case 2: + func_8431F194(arg0, D_84390010[D_84390240.unk_00->unk_2C]); + D_84390220 = func_8431FCCC(D_84390010[D_84390240.unk_00->unk_2C]); + D_84390224 = func_8431FCCC(D_84390010[!D_84390240.unk_00->unk_2C]); + if ((D_84390220 == 1) && (D_84390224 == 1) && (func_8431ADF0(0x32) != 0)) { + func_8431AE5C(); + if (func_84308164(D_84390010[D_84390240.unk_00->unk_2C]) == 0) { + func_8431FF18(); + func_8431FF3C(arg0, 5); + D_84390240.unk_00->unk_2C = !D_84390240.unk_00->unk_2C; + } else if (sp24->unk_4D & 0x80) { + func_800367A0(0x22, 0, 0); + sp24->unk_0C = sp24->unk_10; + sp20->unk_0C = sp20->unk_10; + func_8432C7A0(0xA, D_84390204); + D_84390240.unk_00->unk_20 += 1; + } else { + D_84390240.unk_00->unk_20 = 4; + } + } + break; + + case 3: + func_8431F194(arg0, D_84390010[D_84390240.unk_00->unk_2C]); + D_84390220 = func_8431FCCC(D_84390010[D_84390240.unk_00->unk_2C]); + D_84390224 = func_8431FCCC(D_84390010[!D_84390240.unk_00->unk_2C]); + if ((func_8431ADF0(0x32) != 0) && (D_84390220 == 1) && (D_84390224 == 1)) { + D_84390240.unk_00->unk_20 += 1; + func_8431AE5C(); + } + break; + + case 4: + if (func_8431F888(D_84390200) == 0) { + D_84390240.unk_00->unk_20 += 1; + } + break; + + case 5: + func_8431F680(); + func_8431F194(arg0, D_84390010[D_84390240.unk_00->unk_2C]); + D_84390220 = func_8431FCCC(D_84390010[D_84390240.unk_00->unk_2C]); + D_84390224 = func_8431FCCC(D_84390010[!D_84390240.unk_00->unk_2C]); + func_84320C38(arg0); + break; + } +} + +void func_84327B90(unk_D_86002F34_00C* arg0) { + unk_D_800FCB18* sp1C = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654.unk_38; + unk_D_800FCB18* sp18 = &D_84390010[!D_84390240.unk_00->unk_2C]->unk_654.unk_38; + + switch (D_84390240.unk_00->unk_20) { + case 0: + func_843066E0(D_84390204); + func_8432E9D8(2); + D_84390240.unk_00->unk_20 += 1; + break; + + case 1: + func_843087F8(D_84390204); + func_80048014(); + func_8432E9D8(1); + func_8431EF54(arg0, D_84390010[D_84390240.unk_00->unk_2C]); + func_84305760(D_84390010[D_84390240.unk_00->unk_2C], 0xD); + sp1C->unk_0C = sp1C->unk_0E; + sp18->unk_0C = sp18->unk_0E; + D_84390240.unk_00->unk_20 += 1; + break; + + case 2: + func_8431EF54(arg0, D_84390010[D_84390240.unk_00->unk_2C]); + D_84390220 = func_8431FCCC(D_84390010[D_84390240.unk_00->unk_2C]); + D_84390224 = 1; + + if ((D_84390220 == 1) && (D_84390224 == 1) && (func_8431ADF0(0x32) != 0)) { + func_8431AE5C(); + if (func_84308164(D_84390010[D_84390240.unk_00->unk_2C]) == 0) { + func_8431FF18(); + func_8431FF3C(arg0, 0x22); + D_84390240.unk_00->unk_2C = !D_84390240.unk_00->unk_2C; + } else { + func_843208B0(); + } + } + break; + } +} + +void func_84327D98(unk_D_84390010* arg0) { + func_8432B0E4(arg0); + func_8432B448(arg0); +} + +void func_84327DC0(unk_D_86002F34_00C* arg0) { + unk_D_84390010_654* sp34 = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654; + unk_D_84390010* temp_s0 = D_84390010[D_84390240.unk_00->unk_2C]; + unk_D_800FCB18* sp2C = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654.unk_38; + + if (D_84390240.unk_00->unk_2C) {} + + switch (D_84390240.unk_00->unk_20) { + case 0: + if (D_84390240.unk_00->unk_34 == 1) { + func_8431FF70(arg0); + func_8431F420(temp_s0, arg0, 4); + func_8003F4C0(func_84308D98(temp_s0)); + D_84390240.unk_00->unk_20 += 1; + } else if (func_8431D118(arg0, temp_s0, 1, 1) != 0) { + func_843184E4(0xA); + func_8003F4C0(func_84308D98(temp_s0)); + D_84390240.unk_00->unk_20 += 1; + } + break; + + case 1: + func_8431CFA4(arg0, temp_s0); + func_84305760(temp_s0, 2); + func_84327D98(temp_s0); + D_84390240.unk_00->unk_20 += 1; + break; + + case 2: + func_8431CFA4(arg0, temp_s0); + if (func_8431ADAC(0x69) != 0) { + func_8000E88C(&arg0->unk_60.at, temp_s0->unk_4B0 * -150.0f, 0.0, 0.0f); + if (D_84390240.unk_00 && D_84390240.unk_00) {} + func_8000E88C(&arg0->unk_60.eye, temp_s0->unk_4B0 * -50.0f, 5.0f, 0.0f); + func_84308654(temp_s0, 2, 0); + func_8432C68C(0xD, temp_s0, temp_s0, 0xFF, 0xFF); + D_84390240.unk_00->unk_20 += 1; + } + break; + + case 3: + if (temp_s0->unk_4EC.unk_024.y == 2.5f) { + temp_s0->unk_4EC.unk_000.unk_02 |= 0x20; + } + + if (func_800174E4(&temp_s0->unk_4EC) == 1) { + D_84390240.unk_00->unk_20 += 1; + } + break; + + case 4: + temp_s0->unk_4EC.unk_000.unk_01 &= ~1; + temp_s0->unk_720->unk_04 = &temp_s0->unk_720->unk_08[sp34->unk_2C]->unk_01C[sp34->unk_18]; + temp_s0->unk_720->unk_00 |= 0x80; + D_84390240.unk_00->unk_20 += 1; + break; + + case 5: + if (temp_s0->unk_720->unk_00 & 0x10) { + temp_s0->unk_720->unk_00 &= ~0x90; + func_8430920C(temp_s0); + func_84307748(temp_s0); + D_843900A8[D_84390240.unk_00->unk_2C] = temp_s0->unk_654.unk_38.unk_0C; + func_8432C68C(3, temp_s0, temp_s0, 0xFF, 0xFF); + func_800367A0(2, 0, 0); + func_84308A04(temp_s0, sp34->unk_2C); + arg0->unk_24.fovy = 40.0f; + func_843184E4(0xC); + func_8432B588(temp_s0); + D_843C4DC4 = 0; + D_84390240.unk_00->unk_20 += 1; + } + break; + + case 6: + func_84305760(temp_s0, 0x12); + func_8431F420(temp_s0, arg0, 3); + func_8431AE5C(); + D_84390240.unk_00->unk_20 += 1; + break; + + case 7: + func_8431C750(arg0, temp_s0); + if (func_84305BD8(temp_s0, 0x3C) != 0) { + func_80048014(); + func_8432E9D8(2); + func_8431AE5C(); + func_8000E88C(&temp_s0->unk_000.unk_030, 1.0f, 1.0f, 1.0f); + if (sp2C->unk_5A == 0xFE) { + sp2C->unk_5A = 0xA5; + } + func_843208B0(); + sp34->unk_34 &= ~0x1800; + func_843184FC(); + D_84390240.unk_00->unk_54 = !D_84390240.unk_00->unk_2C + 1; + } + break; + } +} + +void func_84328250(unk_D_86002F34_00C* arg0) { + unk_D_84390010_654* sp3C = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654; + unk_D_84390010_654* sp38 = &D_84390010[!D_84390240.unk_00->unk_2C]->unk_654; + UNUSED s32 pad; + unk_D_84390010* temp_s0 = D_84390010[D_84390240.unk_00->unk_2C]; + unk_D_800FCB18* sp2C = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654.unk_38; + + switch (D_84390240.unk_00->unk_20) { + case 0: + if (D_84390240.unk_00->unk_34 == 1) { + func_8431FF70(arg0); + func_8431AE5C(); + func_843184E4(0xB); + func_8432C9C0(temp_s0->unk_720, 3); + func_8000E88C(&arg0->unk_60.at, temp_s0->unk_4B0 * -150.0f, 0.0, 0.0f); + func_8000E88C(&arg0->unk_60.eye, temp_s0->unk_4B0 * -50.0f, 5.0f, 0.0f); + func_8000E88C(&temp_s0->unk_000.unk_024, temp_s0->unk_4B0 * -150.0f, 25.0f, 0.0f); + D_84390240.unk_00->unk_20 += 1; + } else { + func_8430C718(&arg0->unk_24.fovy, 30.0f, 0.05f); + if (func_8431DA38(arg0, temp_s0) != 0) { + func_8431FF70(arg0); + func_8431AE5C(); + func_843184E4(0xB); + func_8432C9C0(temp_s0->unk_720, 3); + D_84390240.unk_00->unk_20 += 1; + } + } + break; + + case 1: + if (func_84302000(temp_s0) != 0) { + temp_s0->unk_720->unk_02 = sp2C->unk_0B; + func_84308654(temp_s0, 2, 0); + func_8432C68C(0xD, temp_s0, temp_s0, 0xFF, 0xFF); + D_84390240.unk_00->unk_20 += 1; + } + break; + + case 2: + if (temp_s0->unk_4EC.unk_024.y == 2.5f) { + temp_s0->unk_4EC.unk_000.unk_02 |= 0x20; + } + + if (func_800174E4(&temp_s0->unk_4EC) == 1) { + D_84390240.unk_00->unk_20 += 1; + } + break; + + case 3: + temp_s0->unk_4EC.unk_000.unk_01 &= ~1; + temp_s0->unk_720->unk_00 |= 0x80; + temp_s0->unk_720->unk_04 = &temp_s0->unk_720->unk_08[sp3C->unk_2C]->unk_01C[sp3C->unk_18]; + D_84390240.unk_00->unk_20 += 1; + break; + + case 4: + if (temp_s0->unk_720->unk_00 & 0x10) { + temp_s0->unk_720->unk_00 &= ~0x90; + func_8430920C(temp_s0); + func_84307748(temp_s0); + D_843900A8[func_84307F00(temp_s0)] = temp_s0->unk_654.unk_38.unk_0C; + func_800367A0(2, 0, 0); + func_84308A04(temp_s0, sp3C->unk_2C); + func_8431AE5C(); + func_8432C68C(3, temp_s0, temp_s0, 0xFF, 0xFF); + arg0->unk_24.fovy = 40.0f; + func_8432B588(temp_s0); + D_843C4DC4 = 0; + D_84390240.unk_00->unk_20 += 1; + } + break; + + case 5: + func_84305760(temp_s0, 0x12); + func_8431F420(temp_s0, arg0, 3); + D_84390240.unk_00->unk_20 += 1; + break; + + case 6: + func_8431C750(arg0, temp_s0); + if (func_84305BD8(temp_s0, 0x3C) != 0) { + if ((sp2C->unk_5A & 0xF0) == 0xF0) { + sp2C->unk_5A = 0xA5; + } + func_80048014(); + func_8432E9D8(2); + func_8431AE5C(); + func_8000E88C(&temp_s0->unk_000.unk_030, 1.0f, 1.0f, 1.0f); + if (sp38->unk_2D != 0x10) { + D_84390240.unk_00->unk_34 = 3; + } + D_84390240.unk_00->unk_2E = 2; + func_843208B0(); + sp3C->unk_34 &= 0xE7FF; + D_84390240.unk_00->unk_54 = !D_84390240.unk_00->unk_2C + 1; + } + break; + } +} + +void func_84328734(unk_D_86002F34_00C* arg0) { + func_8432113C(); + + switch (D_84390240.unk_00->unk_38) { + case 0: + func_84321184(arg0); + func_8431FF3C(arg0, 1); + + case 1: + func_84322640(arg0); + break; + case 2: + func_84324988(arg0); + break; + case 3: + func_843249F8(arg0); + break; + case 4: + func_84326A78(arg0); + break; + case 7: + func_84324C28(arg0); + break; + case 38: + func_84324F1C(arg0); + break; + case 27: + func_84325080(arg0); + break; + case 30: + func_843251D4(arg0); + break; + case 29: + func_84325CDC(arg0); + break; + case 28: + func_843255DC(arg0); + break; + case 25: + func_84325A10(arg0); + break; + case 12: + func_84325E94(arg0); + break; + case 13: + func_843261CC(arg0); + break; + case 14: + func_84326460(arg0); + break; + case 15: + func_84325724(arg0); + break; + case 17: + func_84326570(arg0); + break; + case 31: + func_8432691C(arg0); + break; + case 20: + func_843266D4(arg0); + break; + case 8: + func_84326CB4(arg0); + break; + case 10: + func_843275F8(arg0); + break; + case 6: + func_84326E84(arg0); + break; + case 33: + func_84327B90(arg0); + break; + case 35: + func_84327720(arg0); + break; + case 9: + func_8432734C(arg0); + break; + case 16: + func_84326AC4(arg0); + break; + case 11: + func_84327DC0(arg0); + break; + case 18: + func_84328250(arg0); + break; + case 5: + func_843221A8(arg0); + break; + case 34: + func_84322350(arg0); + break; + case 36: + func_84320864(); + break; + case 37: + func_84324A68(); + break; + } +} diff --git a/src/fragments/62/fragment62_313250.c b/src/fragments/62/fragment62_313250.c index 56c958f..bb31d71 100644 --- a/src/fragments/62/fragment62_313250.c +++ b/src/fragments/62/fragment62_313250.c @@ -1,72 +1,216 @@ -#include "global.h" +#include "fragment62.h" +#include "src/11BA0.h" +#include "src/17300.h" +#include "src/2E110.h" +#include "src/373A0.h" +#include "src/F420.h" +#include "src/memory.h" +#include "src/util.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_84328990.s") +void func_84328990(unk_D_86002F34_00C* arg0) { + func_8431AE5C(); + func_8431AFD0(arg0, 20.0f, 12800.0f); + func_8432C9C0(D_84390010[0]->unk_720, 3); + arg0->unk_24.fovy = 40.0f; + D_84390010[0]->unk_000.unk_000.unk_01 &= ~1; + D_84390010[1]->unk_000.unk_000.unk_01 &= ~1; + func_8000E88C(&arg0->unk_60.at, 0.0f, 75.0f, 0.0f); + func_8000E88C(&arg0->unk_60.eye, -1.79f, 0.075f, 155.2f); + D_84390240.unk_00->unk_54 = 1; + func_8432BBC0(); + D_84390240.unk_00->unk_20 += 1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_84328A70.s") +void func_84328A70(UNUSED unk_D_86002F34_00C* arg0) { + if ((func_8431ADF0(0xA) != 0) && (func_84302000(D_84390010[0]) != 0)) { + D_84390010[0]->unk_000.unk_000.unk_01 &= ~1; + D_84390010[1]->unk_000.unk_000.unk_01 &= ~1; + func_84308654(D_84390010[0], 1, 0); + func_800367A0(1, 0xFE, 0); + func_8432C68C(8, D_84390010[0], D_84390010[0], 0xFF, 0xFF); + D_84390240.unk_00->unk_20 += 1; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_84328B30.s") +void func_84328B30(UNUSED unk_D_86002F34_00C* arg0) { + D_84390010[0]->unk_000.unk_000.unk_01 &= ~1; + D_84390010[1]->unk_000.unk_000.unk_01 &= ~1; + if (D_84390010[0]->unk_4EC.unk_024.y == 0.0f) { + func_8432B808(); + func_800367A0(1, 1, 0); + func_84308654(D_84390010[1], 1, 0); + func_8432C68C(0xA, D_84390010[1], D_84390010[1], 0xFF, 0xFF); + D_84390240.unk_00->unk_20 += 1; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_84328BF0.s") +void func_84328BF0(unk_D_86002F34_00C* arg0) { + Vec3f sp3C; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_84328D70.s") + D_84390010[0]->unk_000.unk_000.unk_01 &= ~1; + D_84390010[1]->unk_000.unk_000.unk_01 &= ~1; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_84328EC0.s") + if (D_84390010[1]->unk_4EC.unk_024.y == 0.0f) { + arg0->unk_24.fovy = 30.0f; + func_84308654(D_84390010[0], 2, 0); + func_8432C68C(0xB, D_84390010[0], D_84390010[0], 0xFF, 0xFF); + func_8000E88C(&sp3C, -150.0f, 5.0f, 0.0f); + func_8431BAB4(D_84390010[0], arg0, sp3C, 0, 0, 0.0f, 0.0f); + func_8431BB80(arg0, sp3C, D_84390240.unk_00->unk_56 = 0x71C, 0x4000, D_84390240.unk_00->unk_84 = 300.0f, 0.0f); + D_84390240.unk_00->unk_20 += 1; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_84328F2C.s") +void func_84328D70(unk_D_86002F34_00C* arg0) { + Vec3f sp2C; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_843290A0.s") + func_8000E88C(&sp2C, -150.0f, 5.0f, 0.0f); + D_84390010[0]->unk_000.unk_000.unk_01 &= ~1; + D_84390010[1]->unk_000.unk_000.unk_01 &= ~1; + func_8430C718(&D_84390240.unk_00->unk_84, 40.0f, 0.1f); + func_8430C4F8(&D_84390240.unk_00->unk_56, 0xB6, 0x1E); + func_8431BB80(arg0, sp2C, D_84390240.unk_00->unk_56, 0x4000, D_84390240.unk_00->unk_84, 0.0f); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_84329164.s") + if ((D_84390240.unk_00->unk_56 >= 0x2E) && (D_84390010[0]->unk_4EC.unk_024.y == 2.5f)) { + func_800367A0(2, 0, 0); + D_84390010[0]->unk_4EC.unk_000.unk_02 |= 0x20; + D_84390240.unk_00->unk_20 += 1; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_843292D8.s") +void func_84328EC0(UNUSED unk_D_86002F34_00C* arg0) { + D_84390010[0]->unk_000.unk_000.unk_01 &= ~1; + D_84390010[1]->unk_000.unk_000.unk_01 &= ~1; + if (func_800174E4(&D_84390010[0]->unk_4EC) == 1) { + D_84390240.unk_00->unk_20 += 1; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_843293A8.s") +void func_84328F2C(unk_D_86002F34_00C* arg0) { + unk_D_84390010_654* sp2C = &D_84390010[0]->unk_654; + unk_D_800AE540_0004* sp28 = D_84390010[0]->unk_720->unk_08[sp2C->unk_2C]; + + D_84390010[0]->unk_728.unk_168->unk_00.unk_01 |= 1; + D_84390010[0]->unk_728.unk_000.unk_000.unk_01 |= 1; + func_843074A0(D_84390010[0]); + D_84390010[0]->unk_000.unk_000.unk_01 &= ~1; + D_84390010[1]->unk_000.unk_000.unk_01 &= ~1; + func_8432C68C(3, D_84390010[0], D_84390010[0], 0xFF, 0xFF); + D_84390010[0]->unk_000.unk_000.unk_01 |= 1; + D_84390010[0]->unk_4EC.unk_000.unk_01 &= ~1; + func_8431F420(D_84390010[0], arg0, 3); + func_84305760(D_84390010[0], 0x10); + D_84390240.unk_00->unk_2C = 0; + func_8002D5D4(0x19, (u32)sp28->unk_01C[sp2C->unk_18].unk_30); + func_843179F4(D_843901A0->unk_088, 0x21); + func_843184E4(0xC); + func_8432B588(D_84390010[0]); + D_84390240.unk_00->unk_10 = 0; + D_84390240.unk_00->unk_20 += 1; +} + +void func_843290A0(unk_D_86002F34_00C* arg0) { + if (D_84390240.unk_00->unk_10++ == 1) { + func_8431F420(D_84390010[0], arg0, 3); + } + + D_84390010[0]->unk_728.unk_168->unk_00.unk_01 &= ~1; + D_84390010[0]->unk_728.unk_000.unk_000.unk_01 &= ~1; + D_84390010[1]->unk_000.unk_000.unk_01 &= ~1; + func_8431C750(arg0, D_84390010[0]); + + if (func_84305BD8(D_84390010[0], 0x3C) != 0) { + D_84390240.unk_00->unk_20 += 1; + } +} + +void func_84329164(unk_D_86002F34_00C* arg0) { + unk_D_84390010_654* sp2C = &D_84390010[1]->unk_654; + unk_D_800AE540_0004* sp28 = D_84390010[1]->unk_720->unk_08[sp2C->unk_2C]; + + D_84390010[1]->unk_728.unk_168->unk_00.unk_01 |= 1; + D_84390010[1]->unk_728.unk_000.unk_000.unk_01 |= 1; + func_843074A0(D_84390010[1]); + func_800367A0(2, 0, 0); + func_8432C68C(3, D_84390010[1], D_84390010[1], 0xFF, 0xFF); + func_8431AE5C(); + D_84390010[1]->unk_000.unk_000.unk_01 |= 1; + func_8431F420(D_84390010[1], arg0, 3); + func_84305760(D_84390010[1], 0x10); + D_84390240.unk_00->unk_10 = 0; + D_84390240.unk_00->unk_2C = 1; + func_8002D5D4(0x19, (u32)sp28->unk_01C[sp2C->unk_18].unk_30); + func_843179F4(D_843901A0->unk_088, 0x21); + if (D_800AE540.unk_0000 != 8) { + func_843184E4(0xC); + } + func_8432B588(D_84390010[1]); + D_84390240.unk_00->unk_20 += 1; +} + +void func_843292D8(unk_D_86002F34_00C* arg0) { + if (D_84390240.unk_00->unk_10++ == 1) { + func_8431F420(D_84390010[1], arg0, 3); + } + D_84390010[1]->unk_728.unk_168->unk_00.unk_01 &= ~1; + D_84390010[1]->unk_728.unk_000.unk_000.unk_01 &= ~1; + D_84390010[0]->unk_000.unk_000.unk_01 &= ~1; + func_8431C750(arg0, D_84390010[1]); + if (func_84305BD8(D_84390010[1], 0x3C) != 0) { + func_8432056C(); + D_84390240.unk_00->unk_20 += 1; + } +} + +void func_843293A8(UNUSED unk_D_86002F34_00C* arg0) { +} void func_843293B0(void) { } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_843293B8.s") +void func_843293B8(unk_D_86002F34_00C* arg0) { + switch (D_84390240.unk_00->unk_20) { + case 0: + func_84328990(arg0); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_843294A0.s") + case 1: + func_84328A70(arg0); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_843295D0.s") + case 2: + func_84328B30(arg0); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_843296B8.s") + case 3: + func_84328BF0(arg0); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_843297AC.s") + case 4: + func_84328D70(arg0); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_843297E8.s") + case 5: + func_84328EC0(arg0); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_843297F0.s") + case 6: + func_84328F2C(arg0); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_843297F8.s") + case 7: + func_843290A0(arg0); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_84329858.s") + case 8: + func_84329164(arg0); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_84329B04.s") + case 9: + func_843292D8(arg0); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_84329DB8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_84329DFC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_8432A024.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_8432A2D4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_8432A398.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_8432A41C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_8432A448.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_8432A4B0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_8432A510.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_8432A578.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_8432ABBC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_8432ADD8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_313250/func_8432AEE4.s") + case 10: + func_843293A8(arg0); + break; + } +} diff --git a/src/fragments/62/fragment62_313D60.c b/src/fragments/62/fragment62_313D60.c new file mode 100644 index 0000000..0ce907a --- /dev/null +++ b/src/fragments/62/fragment62_313D60.c @@ -0,0 +1,746 @@ +#include "fragment62.h" +#include "src/11BA0.h" +#include "src/17300.h" +#include "src/2E110.h" +#include "src/373A0.h" +#include "src/F420.h" +#include "src/memory.h" +#include "src/util.h" + +unk_D_84390240 D_84390240; +static s32 pad_D_84390280; +static s32 D_84390284; +s32 D_84390288; +static s32 pad_D_84390290[4]; + +void func_843294A0(unk_D_86002F34_00C* arg0) { + f32 sp3C; + + func_8431AFD0(arg0, 20.0f, 12800.0f); + func_843081F0(D_84390010[D_84390284], &D_84390240.unk_00->unk_D0); + sp3C = func_8431AD20(D_84390010[D_84390284], 3.5f, 300.0f); + func_8431BAB4(D_84390010[D_84390284], arg0, D_84390240.unk_00->unk_D0, 0, func_84308190(D_84390010[D_84390284]), + 0.0f, 0.0f); + func_8431BBDC(arg0, 0, func_84308190(D_84390010[D_84390284]), sp3C, 0.0f); + + if (D_84390010[0]) {} + D_84390240.unk_00->unk_20 += 1; + if (D_84390284) {} +} + +void func_843295D0(unk_D_86002F34_00C* arg0) { + f32 sp3C; + + func_8431AFD0(arg0, 20.0f, 12800.0f); + func_843081F0(D_84390010[0], &D_84390240.unk_00->unk_D0); + sp3C = func_8431AD20(D_84390010[0], 3.5f, 300.0f); + func_8431BAB4(D_84390010[0], arg0, D_84390240.unk_00->unk_D0, 0, func_84308190(*D_84390010), 0.0f, 0.0f); + func_8431BBDC(arg0, 0, func_84308190(*D_84390010), sp3C, 0.0f); + + if (D_84390010[0]) {} + D_84390240.unk_00->unk_20 += 1; +} + +void func_843296B8(unk_D_86002F34_00C* arg0, UNUSED unk_D_84390010* arg1, UNUSED unk_D_84390010* arg2) { + D_84390240.unk_00->unk_40 = 0; + D_84390240.unk_00->unk_60 = 30.0f; + D_84390240.unk_00->unk_6C = 10.0f; + + switch (D_84390240.unk_00->unk_1C) { + case 0: + func_843294A0(arg0); + break; + + case 1: + func_8431A4C4(arg0); + break; + + case 2: + func_84321184(arg0); + func_8431FF3C(arg0, 1); + break; + + case 3: + func_843295D0(arg0); + break; + + case 4: + func_84328990(arg0); + break; + } + D_84390240.unk_00->unk_DC = arg0; +} + +void func_843297AC(void) { + D_84390240.unk_00 = main_pool_alloc(sizeof(unk_D_84390240_000), 0); + bzero(D_84390240.unk_00, sizeof(unk_D_84390240_000)); +} + +void func_843297E8(UNUSED unk_D_86002F34_00C* arg0) { +} + +void func_843297F0(UNUSED unk_D_86002F34_00C* arg0) { +} + +void func_843297F8(unk_D_86002F34_00C* arg0) { + if (func_8430C308(arg0->unk_60.at.x, arg0->unk_60.at.z, arg0->unk_60.eye.x, arg0->unk_60.eye.z) < 0.0001f) { + arg0->unk_60.at.z += 0.001f; + } +} + +void func_84329858(unk_D_86002F34_00C* arg0) { + switch (D_84390240.unk_00->unk_30) { + case 0: + D_84390240.unk_00->unk_18 = 0; + break; + + case 1: + if (D_84390240.unk_00->unk_44 == 2) { + func_84307500(); + } + D_84390240.unk_00->unk_30++; + break; + + case 2: + if (D_84390010[0]->unk_728.unk_168->unk_1C == -0x48) { + D_84390240.unk_00->unk_30++; + } + break; + + case 3: + func_80012044(arg0, 0x12C, 0xA, 2, Util_ConvertAddrToVirtAddr((u32)D_1000000)); + func_80011FC8(arg0, 5, 0xA, 0, 0, 0); + D_84390240.unk_00->unk_18 = 0; + D_84390240.unk_00->unk_30 += 1; + + case 4: + if (arg0->unk_CC.unk_0A == 0xA) { + func_8431F680(); + func_843062F0(); + func_843066E0(D_84390010[0]); + func_843066E0(D_84390010[1]); + D_84390240.unk_00->unk_30 += 1; + D_84390240.unk_00->unk_18 = 1; + } + break; + + case 5: + if ((func_8431FAB4() == 0) && (func_8431F998(D_84390010[D_84390240.unk_00->unk_2A]) == 0)) { + if (D_84390240.unk_00->unk_44 == 1) { + func_8432E9D8(2); + func_8430CC84(); + } + func_843058A8(D_84390010[0]); + func_843058A8(D_84390010[1]); + D_84390240.unk_00->unk_18 = 2; + func_80012044(arg0, 0xA, 0x12C, 2, Util_ConvertAddrToVirtAddr((u32)D_1000000)); + func_80011FC8(arg0, 4, 0xA, 0, 0, 0); + arg0->unk_24.fovy = 30.0f; + D_84390240.unk_00->unk_60 = 30.0f; + D_84390240.unk_00->unk_30 += 1; + } + break; + + case 6: + func_8431F680(); + arg0->unk_24.fovy = 30.0f; + D_84390240.unk_00->unk_60 = 30.0f; + D_84390240.unk_00->unk_18 = 0; + if (arg0->unk_CC.unk_0A == 0xA) { + D_84390240.unk_00->unk_30 = 0; + if (D_84390240.unk_00->unk_44 == 1) { + func_8430751C(); + } + } + break; + } +} + +void func_84329B04(unk_D_86002F34_00C* arg0) { + switch (D_84390240.unk_00->unk_30) { + case 0: + D_84390240.unk_00->unk_18 = 0; + break; + + case 1: + if (D_84390240.unk_00->unk_44 == 2) { + func_84307500(); + } + D_84390240.unk_00->unk_30++; + break; + + case 2: + if (D_84390010[0]->unk_728.unk_168->unk_1C == -0x48) { + D_84390240.unk_00->unk_30++; + } + break; + + case 3: + func_8436EEF0(3, 0x1E); + func_8436EF54(); + D_84390240.unk_00->unk_18 = 0; + D_84390240.unk_00->unk_30 += 1; + + case 4: + func_8436EF54(); + if (func_8436EF48() == 1) { + func_8431F680(); + func_843062F0(); + func_843066E0(D_84390010[0]); + func_843066E0(D_84390010[1]); + D_84390240.unk_00->unk_30 += 1; + D_84390240.unk_00->unk_18 = 1; + } + break; + + case 5: + D_84390240.unk_00->unk_18 = 1; + D_84390240.unk_00->unk_30 += 1; + break; + + case 6: + D_84390240.unk_00->unk_18 = 1; + D_84390240.unk_00->unk_30 += 1; + break; + + case 7: + D_84390240.unk_00->unk_18 = 1; + D_84390240.unk_00->unk_30 += 1; + break; + + case 8: + if ((func_8431FAB4() == 0) && (func_8431F998(D_84390010[D_84390240.unk_00->unk_2A]) == 0)) { + if (D_84390240.unk_00->unk_44 == 1) { + func_8432E9D8(2); + func_8430CC84(); + } + func_843058A8(D_84390010[0]); + func_843058A8(D_84390010[1]); + D_84390240.unk_00->unk_18 = 2; + func_8436EEF0(2, 0x1E); + func_8436EF54(); + arg0->unk_24.fovy = 30.0f; + D_84390240.unk_00->unk_60 = 30.0f; + D_84390240.unk_00->unk_30 += 1; + } + break; + + case 9: + func_8431F680(); + arg0->unk_24.fovy = 30.0f; + D_84390240.unk_00->unk_60 = 30.0f; + D_84390240.unk_00->unk_18 = 0; + func_8436EF54(); + if (func_8436EF48() == 0) { + D_84390240.unk_00->unk_30 = 0; + if (D_84390240.unk_00->unk_44 == 1) { + func_8430751C(); + } + } + break; + } +} + +void func_84329DB8(unk_D_86002F34_00C* arg0) { + if (D_84390240.unk_00->unk_2E == 0) { + func_84329858(arg0); + } else { + func_84329B04(arg0); + } +} + +u16 func_84329DFC(unk_D_84390010* arg0, unk_D_86002F34_00C* arg1, unk_D_84390010* a2, s16 arg3, f32 arg4) { + UNUSED s32 pad[6]; + f32 sp6C; + f32 sp68; + f32 sp64; + f32 sp60; + f32 sp5C; + UNUSED s32 pad2; + f32 sp54; + f32 sp50; + UNUSED s32 pad3; + f32 sp48; + s16 sp46; + s16 sp44; + f32 sp40; + unk_D_84390010* arg2; + f32 sp38; + s32 sp34 = 0; + + func_8430C070(&arg1->unk_60.at, &arg1->unk_60.eye, &sp48, &sp46, &sp44); + sp40 = (COSS((sp44 - 0x8000)) * 50.0f) + arg1->unk_60.eye.z; + sp38 = (SINS((sp44 - 0x8000)) * 30.0f) + arg1->unk_60.eye.x; + sp54 = (COSS(((sp44 - arg3) + 0x8000)) * arg4) + sp40; + sp60 = (SINS(((sp44 - arg3) + 0x8000)) * arg4) + sp38; + sp50 = (COSS((sp44 + arg3 + 0x8000)) * arg4) + sp40; + sp5C = (SINS((sp44 + arg3 + 0x8000)) * arg4) + sp38; + + arg2 = a2; + + sp6C = ((sp54 - arg2->unk_000.unk_024.z) * (sp5C - arg2->unk_000.unk_024.x)) - + ((sp50 - arg2->unk_000.unk_024.z) * (sp60 - arg2->unk_000.unk_024.x)); + sp68 = ((sp50 - arg2->unk_000.unk_024.z) * (sp38 - arg2->unk_000.unk_024.x)) - + ((sp40 - arg2->unk_000.unk_024.z) * (sp5C - arg2->unk_000.unk_024.x)); + sp64 = ((sp40 - arg2->unk_000.unk_024.z) * (sp60 - arg2->unk_000.unk_024.x)) - + ((sp54 - arg2->unk_000.unk_024.z) * (sp38 - arg2->unk_000.unk_024.x)); + + if (((sp6C >= 0.0f) && (sp68 >= 0.0f) && (sp64 >= 0.0f)) || ((sp6C <= 0.0f) && (sp68 <= 0.0f) && (sp64 <= 0.0f))) { + sp34 = 1; + } + return sp34; +} + +u16 func_8432A024(unk_D_84390010* arg0, unk_D_86002F34_00C* arg1, unk_D_84390010* a2, s16 arg3, f32 arg4) { + UNUSED s32 pad[6]; + f32 sp94; + f32 sp90; + f32 sp8C; + f32 sp88; + f32 sp84; + UNUSED s32 pad2; + f32 sp7C; + f32 sp78; + unk_D_84390010* arg2; + f32 sp70; + s16 sp6E; + s16 sp6C; + Vec3f sp60; + s32 sp5C; + + sp5C = 0; + func_8430C070(&arg1->unk_60.at, &arg1->unk_60.eye, &sp70, &sp6E, &sp6C); + sp60.z = (COSS((sp6C - 0x8000)) * 30.0f) + arg1->unk_60.eye.z; + sp60.x = (SINS((sp6C - 0x8000)) * 30.0f) + arg1->unk_60.eye.x; + sp7C = (COSS(((sp6C - arg3) + 0x8000)) * arg4) + sp60.z; + sp88 = (SINS(((sp6C - arg3) + 0x8000)) * arg4) + sp60.x; + sp78 = (COSS((sp6C + arg3 + 0x8000)) * arg4) + sp60.z; + sp84 = (SINS((sp6C + arg3 + 0x8000)) * arg4) + sp60.x; + + arg2 = a2; + + sp94 = ((sp7C - arg2->unk_000.unk_024.z) * (sp84 - arg2->unk_000.unk_024.x)) - + ((sp78 - arg2->unk_000.unk_024.z) * (sp88 - arg2->unk_000.unk_024.x)); + sp90 = ((sp78 - arg2->unk_000.unk_024.z) * (sp60.x - arg2->unk_000.unk_024.x)) - + ((sp60.z - arg2->unk_000.unk_024.z) * (sp84 - arg2->unk_000.unk_024.x)); + sp8C = ((sp60.z - arg2->unk_000.unk_024.z) * (sp88 - arg2->unk_000.unk_024.x)) - + ((sp7C - arg2->unk_000.unk_024.z) * (sp60.x - arg2->unk_000.unk_024.x)); + + if (((sp94 >= 0.0f) && (sp90 >= 0.0f) && (sp8C >= 0.0f)) || ((sp94 <= 0.0f) && (sp90 <= 0.0f) && (sp8C <= 0.0f))) { + sp5C = 1; + } + + sp60.x = a2->unk_000.unk_024.x; + sp60.y = a2->unk_000.unk_024.y; + sp60.z = a2->unk_000.unk_024.z; + + if ((func_84308598(arg0) * 2.5f) >= func_8430C2A4(arg1->unk_60.eye, sp60)) { + sp5C = 0; + } + return sp5C; +} + +void func_8432A2D4(unk_D_86002F34_00C* arg0) { + if (func_84329DFC(D_84390010[0], arg0, D_84390010[0], 0x2AA8, 2500.0f) != 0) { + D_84390010[0]->unk_000.unk_000.unk_01 |= 1; + } else { + D_84390010[0]->unk_000.unk_000.unk_01 &= ~1; + } + + if (func_84329DFC(D_84390010[1], arg0, D_84390010[1], 0x2AA8, 2500.0f) != 0) { + D_84390010[1]->unk_000.unk_000.unk_01 |= 1; + } else { + D_84390010[1]->unk_000.unk_000.unk_01 &= ~1; + } +} + +void func_8432A398(unk_D_86002F34_00C* arg0) { + unk_D_84390010* sp24 = D_84390010[!D_84390240.unk_00->unk_2C]; + + if (func_8432A024(sp24, arg0, sp24, 0x2AA8, 2500.0f) != 0) { + sp24->unk_000.unk_000.unk_01 |= 1; + } else { + sp24->unk_000.unk_000.unk_01 &= 0xFFFE; + } +} + +void func_8432A414(void) { +} + +void func_8432A41C(void) { + D_84390010[0]->unk_000.unk_000.unk_01 |= 1; + D_84390010[1]->unk_000.unk_000.unk_01 |= 1; +} + +void func_8432A448(void) { + func_843087F8(D_84390010[!D_84390240.unk_00->unk_2C]); + D_84390010[!D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 &= ~1; +} + +void func_8432A4B0(void) { + D_84390010[D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 &= ~1; + func_843087F8(D_84390010[D_84390240.unk_00->unk_2C]); +} + +void func_8432A510(void) { + unk_D_84390010* ptr1 = D_84390010[0]; + unk_D_84390010* ptr2 = D_84390010[1]; + + if ((ptr1->unk_654.unk_2D == 0x10) || ((ptr1 = D_84390010[0])->unk_654.unk_2D == 0x13)) { + ptr1->unk_000.unk_000.unk_01 &= ~1; + } + + if ((ptr2->unk_654.unk_2D == 0x10) || (ptr2->unk_654.unk_2D == 0x13)) { + ptr2->unk_000.unk_000.unk_01 &= ~1; + } +} + +void func_8432A578(unk_D_86002F34_00C* arg0) { + UNUSED s32 pad; + unk_D_84390010_654* sp40 = &D_84390204->unk_654; + s32 temp_lo; + unk_D_84390010_654* sp38 = &D_84390200->unk_654; + f32 sp34; + s16 sp32; + s16 sp30; + + switch (D_84390240.unk_00->unk_1C) { + case 0: + case 3: + break; + + case 1: + func_8432A41C(); + + switch (D_84390240.unk_00->unk_20) { + case 12: + case 13: + case 14: + case 15: + case 21: + func_8432A41C(); + break; + + case 16: + case 17: + case 18: + case 19: + D_84390010[D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 &= ~1; + break; + + default: + func_8432A398(arg0); + break; + } + break; + + case 2: + func_8432A41C(); + + switch (D_84390240.unk_00->unk_38) { + case 2: + case 3: + switch (D_84390240.unk_00->unk_20) { + case 0: + if ((sp40->unk_2D == 0xF) && (D_84390240.unk_00->unk_34 == 1)) { + func_8432A4B0(); + } else { + func_800102A4(&D_84390240.unk_00->unk_B8, &D_84390240.unk_00->unk_C4, &sp34, &sp32, + &sp30); + temp_lo = sp30 / 182; + if (((temp_lo == 0x5A) || (temp_lo == -0x5A)) && (D_84390240.unk_00->unk_34 == 1)) { + func_8432A448(); + } else { + func_8432A398(arg0); + } + } + break; + + case 1: + D_84390240.unk_00->unk_08 = 0; + if (!(sp40->unk_34 & 0x4400)) { + func_8432A448(); + } + break; + + case 2: + if ((D_84390240.unk_00->unk_3C == 0) && (D_84390240.unk_00->unk_24 >= 0) && + (D_84390240.unk_00->unk_24 < 2) && (sp38->unk_34 & 0x800)) { + func_8432A448(); + } else if (((D_84390240.unk_00->unk_3C == 0) || (D_84390240.unk_00->unk_3C == 1)) && + (D_84390240.unk_00->unk_48 == 0) && (D_84390240.unk_00->unk_1A != 1)) { + func_843087F8(D_84390204); + D_84390204->unk_000.unk_01D = 0; + } else { + if (sp40->unk_34 & 0x4000) { + if ((D_84390204->unk_000.unk_01A != 0x32) && + (D_84390204->unk_000.unk_01A != 0x33)) { + D_84390204->unk_000.unk_01D = 0; + } else { + D_84390204->unk_000.unk_01D = 0xFF; + } + } else { + D_84390204->unk_000.unk_01D = 0xFF; + } + func_8432A4B0(); + } + D_84390240.unk_00->unk_08 = 1; + break; + } + break; + + case 36: + if (D_84390240.unk_00->unk_08 == 1) { + func_8432A448(); + } else if (D_84390240.unk_00->unk_08 == 2) { + D_84390010[!D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 &= ~1; + } else if (D_84390240.unk_00->unk_08 == 3) { + D_84390010[D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 &= ~1; + } else if (D_84390240.unk_00->unk_08 == 4) { + D_84390010[D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 &= ~1; + } + break; + + case 4: + if (D_84390240.unk_00->unk_08 == 1) { + func_8432A4B0(); + } else if (D_84390240.unk_00->unk_08 == 2) { + D_84390010[!D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 &= ~1; + } else if (D_84390240.unk_00->unk_08 == 3) { + D_84390010[!D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 &= ~1; + } else if (D_84390240.unk_00->unk_08 == 4) { + D_84390010[!D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 &= ~1; + } + break; + + case 11: + D_84390240.unk_00->unk_08 = 4; + if (D_84390240.unk_00->unk_34 == 1) { + func_8432A448(); + } else if (D_84390240.unk_00->unk_20 == 0) { + func_8432A2D4(arg0); + } else { + func_8432A448(); + } + break; + + case 18: + D_84390240.unk_00->unk_08 = 3; + switch (D_84390240.unk_00->unk_20) { + case 0: + func_8432A2D4(arg0); + break; + + default: + func_8432A448(); + break; + } + break; + + case 12: + D_84390240.unk_00->unk_08 = 0; + switch (D_84390240.unk_00->unk_20) { + case 2: + case 3: + case 4: + func_8432A41C(); + break; + + default: + func_8432A448(); + break; + } + break; + + case 37: + D_84390240.unk_00->unk_08 = 0; + func_8432A448(); + break; + + case 7: + case 13: + case 14: + case 15: + case 16: + case 17: + case 20: + case 21: + case 25: + case 27: + case 28: + case 29: + case 31: + case 38: + D_84390240.unk_00->unk_08 = 3; + func_8432A448(); + break; + + case 9: + case 35: + D_84390240.unk_00->unk_08 = 3; + func_8432A448(); + break; + + case 6: + D_84390240.unk_00->unk_08 = 0; + func_8432A448(); + break; + + case 8: + case 10: + D_84390240.unk_00->unk_08 = 0; + func_8432A4B0(); + break; + + case 30: + D_84390240.unk_00->unk_08 = 0; + + switch (D_84390240.unk_00->unk_20) { + case 0: + case 1: + case 2: + func_8432A448(); + break; + + default: + func_8432A4B0(); + break; + } + break; + + case 5: + case 34: + D_84390240.unk_00->unk_08 = 0; + switch (D_84390240.unk_00->unk_20) { + case 0: + case 1: + D_84390010[D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 &= ~1; + break; + } + break; + } + break; + } + func_8432A510(); +} + +void func_8432ABBC(unk_D_86002F34_00C* arg0) { + switch (D_84390240.unk_00->unk_1C) { + case 1: + func_8432A41C(); + + switch (D_84390240.unk_00->unk_20) { + case 12: + case 13: + case 14: + case 15: + case 21: + func_8432A41C(); + break; + + case 16: + case 17: + case 18: + case 19: + D_84390010[D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 &= ~1; + break; + + default: + func_8432A398(arg0); + break; + } + break; + + case 2: + switch (D_84390240.unk_00->unk_38) { + case 30: + switch (D_84390240.unk_00->unk_20) { + case 0: + case 1: + case 2: + case 5: + D_84390010[!D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 &= ~1; + D_84390010[D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 |= 1; + break; + + default: + D_84390010[D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 &= ~1; + D_84390010[!D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 |= 1; + } + break; + + case 5: + case 34: + switch (D_84390240.unk_00->unk_20) { + case 0: + case 1: + D_84390010[D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 &= ~1; + D_84390010[!D_84390240.unk_00->unk_2C]->unk_000.unk_000.unk_01 |= 1; + break; + } + break; + } + break; + } + func_8432A510(); +} + +void func_8432ADD8(unk_D_86002F34_00C* arg0) { + func_84329DB8(arg0); + func_8431B004(); + func_8432A578(arg0); + + switch (D_84390240.unk_00->unk_1C) { + case 0: + func_843297E8(arg0); + break; + + case 1: + func_8431AAFC(arg0); + break; + + case 2: + func_8430CCC8(); + func_84328734(arg0); + break; + + case 3: + func_843297F0(arg0); + break; + + case 4: + func_843293B8(arg0); + break; + + default: + D_84390240.unk_00->unk_40 = 3; + break; + } + + func_8432ABBC(arg0); + func_84305808(); + func_84306914(D_84390018); + func_84306914(D_8439001C); + func_8431B174(arg0); + func_8431B830(arg0); + func_8431BD10(arg0); + func_843297F8(arg0); +} + +s32 func_8432AEE4(s32 arg0, unk_D_86002F34_00C* arg1) { + switch (arg0) { + case 0: + func_843297AC(); + break; + + case 1: + case 2: + func_8432ADD8(arg1); + break; + + case 3: + func_843296B8(arg1, D_84390010[0], D_84390010[1]); + break; + } + return D_84390240.unk_00->unk_40; +} diff --git a/src/fragments/62/fragment62_315830.c b/src/fragments/62/fragment62_315830.c index fc34e9f..2dcc8e5 100644 --- a/src/fragments/62/fragment62_315830.c +++ b/src/fragments/62/fragment62_315830.c @@ -1,17 +1,119 @@ -#include "global.h" +#include "fragment62.h" +#include "src/17300.h" +#include "src/18140.h" +#include "src/1C720.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315830/func_8432AF70.s") +void func_8432AF70(unk_D_84390010* arg0) { + UNUSED s32 pad[2]; + unk_func_80026268_arg0* ptr; + unk_D_84390010_654* sp2C; + unk_D_800FCB18* sp28; + unk_D_8438E7B0_A50* sp20; + s32 idx = func_84307F00(arg0); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315830/func_8432B0A4.s") + sp28 = &arg0->unk_654.unk_38; + sp2C = &arg0->unk_654; + ptr = &arg0->unk_724->unk_01C[sp2C->unk_08]; + sp20 = &D_84384570[idx]->unk_A80; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315830/func_8432B0E4.s") + if ((ptr->unk_05 & 0x20) && (sp2C->unk_34 & 2)) { + arg0->unk_000.unk_000.unk_02 &= ~0x20; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315830/func_8432B13C.s") + if ((sp28->unk_15 & 0x20) && (ptr->unk_05 & 0x20) && !(sp2C->unk_34 & 2) && + ((arg0->unk_000.unk_040.unk_08 >> 0x10) >= 3)) { + func_8001BD04(&arg0->unk_000, sp20->unk_00); + func_80017464(&arg0->unk_000, 4); + func_8001BD9C(&arg0->unk_000, sp20->unk_01); + func_80017804(&arg0->unk_000, 3); + arg0->unk_000.unk_000.unk_02 &= ~0x20; + func_843061EC(arg0, 2); + func_8432C7A0(1, arg0); + func_8432BF88(arg0, 0x13); + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315830/func_8432B1BC.s") +void func_8432B0A4(unk_D_84390010* arg0) { + unk_D_8438E7B0_A50* ptr = &D_84384570[func_84307F00(arg0)]->unk_A50; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315830/func_8432B228.s") + func_8001BD04(&arg0->unk_000, ptr->unk_00); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315830/func_8432B38C.s") +void func_8432B0E4(unk_D_84390010* arg0) { + if (arg0->unk_654.unk_34 & 2) { + func_8432C80C(1, arg0); + arg0->unk_000.unk_000.unk_02 |= 0x20; + func_84306200(arg0, 2); + func_8432B0A4(arg0); + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315830/func_8432B448.s") +void func_8432B13C(unk_D_84390010* arg0) { + unk_func_80026268_arg0* ptr = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08]; + + if (arg0->unk_654.unk_34 & 2) { + ptr->unk_05 = 0; + func_8432C80C(1, arg0); + arg0->unk_000.unk_000.unk_02 |= 0x20; + func_84306200(arg0, 2); + func_8432B0A4(arg0); + } +} + +void func_8432B1BC(unk_D_84390010* arg0) { + if ((arg0->unk_654.unk_34 & 2) && !(arg0->unk_654.unk_38.unk_15 & 0x20)) { + func_8432C80C(1, arg0); + arg0->unk_000.unk_000.unk_02 |= 0x20; + func_84306200(arg0, 2); + func_8432B0A4(arg0); + } +} + +void func_8432B228(unk_D_84390010* arg0) { + unk_D_84390010_654* sp24 = &arg0->unk_654; + unk_D_800FCB18* sp28 = &sp24->unk_38; + unk_func_80026268_arg0* sp2C = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08]; + + if ((D_84390240.unk_00->unk_38 != 0xB) || (D_84390240.unk_00->unk_20 >= 6)) { + if ((sp2C->unk_05 & 7) && (sp28->unk_15 & 7) && !(arg0->unk_654.unk_34 & 1)) { + func_84305A74(arg0, 0xAF, 2); + func_8432C7A0(3, arg0); + func_8432BF88(arg0, 0x32); + func_843061EC(arg0, 1); + } + + if (!(sp2C->unk_05 & 7) && (sp24->unk_34 & 1)) { + if (D_84384570[func_84307F00(arg0)]->unk_B81 == 0xFF) { + sp24->unk_36 = 0; + func_843058C4(arg0, 0xA5); + } else { + func_84305A74(arg0, 0xB8, 1); + } + func_8432C80C(3, arg0); + func_84306200(arg0, 1); + } + } +} + +void func_8432B38C(unk_D_84390010* arg0) { + unk_func_80026268_arg0* ptr = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08]; + + if (arg0->unk_654.unk_34 & 1) { + ptr->unk_05 = 0; + if (D_84384570[func_84307F00(arg0)]->unk_B81 == 0xFF) { + arg0->unk_654.unk_36 = 0; + func_843058C4(arg0, 0xA5); + } else { + func_84305A74(arg0, 0xB8, 1); + } + func_8432C80C(3, arg0); + func_84306200(arg0, 1); + } +} + +void func_8432B448(unk_D_84390010* arg0) { + if (arg0->unk_654.unk_34 & 1) { + func_8432C80C(3, arg0); + func_84306200(arg0, 1); + } +} diff --git a/src/fragments/62/fragment62_315D50.c b/src/fragments/62/fragment62_315D50.c index 6e1f678..0c5f08d 100644 --- a/src/fragments/62/fragment62_315D50.c +++ b/src/fragments/62/fragment62_315D50.c @@ -1,139 +1,5204 @@ -#include "global.h" +#include "fragment62.h" +#include "src/17300.h" +#include "src/19840.h" +#include "src/1C720.h" +#include "src/373A0.h" +#include "src/3D140.h" +#include "src/485C0.h" +#include "src/49790.h" +#include "src/4BDC0.h" +#include "src/4F410.h" +#include "src/F420.h" +#include "src/math_util.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432B490.s") +typedef struct unk_D_84392040 { + /* 0x00 */ char unk00[0xC]; + /* 0x0C */ f32 unk_0C; + /* 0x10 */ f32 unk_10; + /* 0x14 */ char unk14[0x4]; +} unk_D_84392040; // size = 0x18 -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432B4B0.s") +s32 D_843902A0; +#include "prevent_bss_reordering.h" +s32 D_843902A4; +s32 D_843902A8; +static s32 D_843902AC; +static s32 D_843902B0; +static s32 D_843902B4; +static s32 D_843902B8; +static s32 D_843902BC; +static s32 D_843902C0; +static s32 D_843902C4; +static s32 D_843902C8; +static s32 D_843902CC; +static s32 D_843902D0; +static s32 D_843902D4; +static s32 D_843902D8; +static s32 D_843902DC; +static s8 D_843902E0; +s16 D_843902E2; +s16 D_843902E4; +static s16 D_843902E6; +unk_D_84390010* D_843902E8; +unk_D_84390010* D_843902EC; +unk_D_84390010* D_843902F0; +s32 D_843902F4; +s32 D_843902F8; +static s8 D_843902FC; +func_D_84390300 D_84390300[8]; +func_D_84390320 D_84390320[8]; +s32 D_84390340; +static f32 D_84390344; +Vec3f D_84390348; +static Vec3s D_84390354; +static Vec3f D_84390360; +static Vec3s D_8439036C; +static Vec3s D_84390374; +s16 D_8439037A; +s16 D_8439037C; +s16 D_8439037E; +s16 D_84390380; +s16 D_84390382; +s16 D_84390384; +s16 D_84390386; +s16 D_84390388; +s16 D_8439038A; +s16 D_8439038C; +s16 D_8439038E; +s16 D_84390390; +s16 D_84390392; +s16 D_84390394; +s16 D_84390396; +s16 D_84390398; +s16 D_8439039A; +s16 D_8439039C; +s16 D_8439039E; +s16 D_843903A0; +s32 pad_D_843903A8[2]; +static s32 D_843903B0; +static s32 D_843903B4; +s32 pad_D_843903B8[6]; +static unk_D_86002F58_004_000 D_843903D0[16]; +static s32 D_84391A50[16]; +static unk_D_86002F58_004_000 D_84391A90[4]; +static s32 D_84392030[4]; +static unk_D_84392040 D_84392040; +f32 D_84392058[26]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432B4D0.s") +static s32 D_84385BB0[] = { 0, 0, 0, 0 }; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432B4F0.s") +u32 D_84385BC0[] = { + 0x00000005, 0x00000006, 0x00000007, 0x00000008, 0x00000009, 0x0000000A, 0x0000000B, 0x0000000C, + 0x0000000D, 0x0000000E, 0x0000000F, 0x00000010, 0x00000011, 0x00000012, 0x00000013, 0x00000014, + 0x00000015, 0x00000016, 0x00000017, 0x00000018, 0x00000019, 0x0000001A, 0x0000001B, 0x0000001C, + 0x0000001D, 0x0000001E, 0x0000001F, 0x00000020, 0x00000021, 0x00000026, 0x00000027, 0x00000028, + 0x00000029, 0x0000002A, 0x0000002B, 0x0000002C, 0x0000002D, 0x0000002E, 0x0000002F, 0x00000030, + 0x00000031, 0x00000032, 0x00000033, 0x00000034, 0x00000035, 0x00000036, 0x00000000, 0x00000000, +}; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432B510.s") +Vtx D_84385C80[] = { + VTX(-64, -63, 0, 0, 2016, 0xFF, 0xFF, 0xFF, 0xFF), + VTX(62, -63, 0, 2016, 2016, 0xFF, 0xFF, 0xFF, 0xFF), + VTX(62, 0, 0, 2016, 0, 0xFF, 0xFF, 0xFF, 0xFF), + VTX(-64, 0, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF), +}; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432B554.s") +Vtx D_84385CC0[] = { + VTX(-16, 96, 0, 0, 3040, 0xFF, 0xFF, 0xFF, 0xFF), + VTX(15, 96, 0, 992, 3040, 0xFF, 0xFF, 0xFF, 0xFF), + VTX(15, 0, 0, 992, 0, 0xFF, 0xFF, 0xFF, 0xFF), + VTX(-16, 0, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF), +}; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432B588.s") +Vtx D_84385D00[] = { + VTX(-8, 96, 0, 0, 3040, 0xFF, 0xFF, 0xFF, 0xFF), + VTX(7, 96, 0, 992, 3040, 0xFF, 0xFF, 0xFF, 0xFF), + VTX(7, 0, 0, 992, 0, 0xFF, 0xFF, 0xFF, 0xFF), + VTX(-8, 0, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF), +}; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432B5B8.s") +Vtx D_84385D40[] = { + VTX(-4, 96, 0, 0, 3040, 0xFF, 0xFF, 0xFF, 0xFF), VTX(3, 96, 0, 992, 3040, 0xFF, 0xFF, 0xFF, 0xFF), + VTX(3, 0, 0, 992, 0, 0xFF, 0xFF, 0xFF, 0xFF), VTX(-4, 0, 0, 0, 0, 0xFF, 0xFF, 0xFF, 0xFF), + VTX(-160, -120, 0, 0, 2048, 0x00, 0x00, 0x78, 0xFF), VTX(160, -120, 0, 2048, 2048, 0x00, 0x00, 0x78, 0xFF), + VTX(160, 120, 0, 2048, 0, 0x00, 0x00, 0x78, 0xFF), VTX(-160, 120, 0, 0, 0, 0x00, 0x00, 0x78, 0xFF), +}; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432B604.s") +Vtx D_84385DC0[] = { + VTX(-160, -120, 0, 0, 4096, 0x00, 0x00, 0x78, 0xFF), + VTX(160, -120, 0, 4096, 4096, 0x00, 0x00, 0x78, 0xFF), + VTX(160, 120, 0, 4096, 0, 0x00, 0x00, 0x78, 0xFF), + VTX(-160, 120, 0, 0, 0, 0x00, 0x00, 0x78, 0xFF), +}; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432B704.s") +Vtx D_84385E00[] = { + VTX(-160, -120, 0, 0, 8192, 0x00, 0x00, 0x78, 0xFF), + VTX(160, -120, 0, 8192, 8192, 0x00, 0x00, 0x78, 0xFF), + VTX(160, 120, 0, 8192, 0, 0x00, 0x00, 0x78, 0xFF), + VTX(-160, 120, 0, 0, 0, 0x00, 0x00, 0x78, 0xFF), +}; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432B808.s") +unk_D_8140E728_01C_004_1 D_84385E40[] = { + { + 0x01, + 0x01, + 0x0000, + func_8140C880, + func_8140CB90, + &D_843920C0[4], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C930, + func_8140CDDC, + &D_843920C0[5], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C9EC, + func_8140D0E4, + &D_843920C0[20], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C9EC, + func_8140D1FC, + &D_843920C0[20], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C930, + func_8140CDDC, + &D_843920C0[5], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C930, + func_8140CE68, + &D_843920C0[5], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C9EC, + func_8140D1FC, + &D_843920C0[20], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140CA30, + func_8140D0E4, + &D_843920C0[9], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C820, + func_8140CB90, + &D_843920C0[3], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C880, + func_8140CDDC, + &D_843920C0[23], + }, + { + 0x00, + 0x01, + 0x0001, + func_8140C8B8, + func_8140CDDC, + &D_843920C0[14], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C78C, + func_8140CDDC, + &D_843920C0[17], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C880, + func_8140CDDC, + &D_843920C0[14], + }, + { + 0x00, + 0x01, + 0x0001, + func_8140C9B0, + func_8140CC04, + &D_843920C0[8], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C9B0, + func_8140CC04, + &D_843920C0[8], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C9B0, + func_8140CC90, + &D_843920C0[8], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140CA90, + func_8140D288, + &D_843920C0[18], + }, + { + 0x00, + 0x01, + 0x0001, + func_8140C78C, + func_8140CDDC, + &D_843920C0[17], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C78C, + func_8140CDDC, + &D_843920C0[17], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C930, + func_8140CDDC, + &D_843920C0[5], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140CA90, + func_8140D288, + &D_843920C0[18], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C880, + func_8140CDDC, + &D_843920C0[23], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C880, + func_8140CDDC, + &D_843920C0[13], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C8F4, + func_8140CDDC, + &D_843920C0[13], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140CAC8, + func_8140D288, + &D_843920C0[18], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C8B8, + func_8140CDDC, + &D_843920C0[23], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140CA64, + func_8140D314, + &D_843920C0[11], + }, + { + 0x00, + 0x01, + 0x0001, + func_8140C78C, + func_8140CDDC, + &D_843920C0[82], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C820, + func_8140CFBC, + &D_843920C0[16], + }, + { + 0x00, + 0x01, + 0x0001, + func_8140C7C0, + func_8140CDDC, + &D_843920C0[84], + }, + { + 0x00, + 0x01, + 0x0001, + func_8140C820, + func_8140CDDC, + &D_843920C0[169], + }, + { + 0x00, + 0x01, + 0x0001, + func_8140C820, + func_8140CDDC, + &D_843920C0[172], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C820, + func_8140CDDC, + &D_843920C0[166], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C820, + func_8140CDDC, + &D_843920C0[167], + }, + { + 0x00, + 0x01, + 0x0001, + func_8140C84C, + func_8140CDDC, + &D_843920C0[83], + }, + { + 0x00, + 0x01, + 0x0001, + func_8140C84C, + func_8140CDDC, + &D_843920C0[83], + }, + { + 0x00, + 0x01, + 0x0001, + func_8140CB04, + func_8140D288, + &D_843920C0[89], + }, + { + 0x00, + 0x01, + 0x0001, + func_8140C7C0, + func_8140CFBC, + &D_843920C0[95], + }, + { + 0x01, + 0x01, + 0x0000, + func_8140C7C0, + func_84330170, + &D_843920C0[95], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C78C, + func_8140CDDC, + &D_843920C0[2], + }, + { + 0x00, + 0x01, + 0x0001, + func_8140C78C, + func_8140CDDC, + &D_843920C0[100], + }, + { + 0x00, + 0x01, + 0x0001, + func_8140C84C, + func_8140CF30, + &D_843920C0[83], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C84C, + func_8140CF30, + &D_843920C0[83], + }, + { + 0x00, + 0x01, + 0x0001, + func_8140C84C, + func_8140CDDC, + &D_843920C0[101], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C84C, + func_8140CDDC, + &D_843920C0[83], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140CB38, + func_8140D404, + &D_843920C0[63], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140CB64, + func_8140D404, + &D_843920C0[112], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C84C, + func_8140CED4, + &D_843920C0[83], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C7EC, + func_8140D170, + &D_843920C0[117], + }, + { + 0x00, + 0x01, + 0x0001, + func_8140C78C, + func_8140CDDC, + &D_843920C0[122], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C78C, + func_8140CDDC, + &D_843920C0[82], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C7C0, + func_8140CFBC, + &D_843920C0[95], + }, + { + 0x00, + 0x01, + 0x0001, + func_8140C78C, + func_8140CFBC, + &D_843920C0[82], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C78C, + func_8140CFBC, + &D_843920C0[82], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C84C, + func_8140CDDC, + &D_843920C0[83], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C8B8, + func_8140CDDC, + &D_843920C0[14], + }, + { + 0x00, + 0x01, + 0x0000, + func_8140C78C, + func_8140CE68, + &D_843920C0[17], + }, +}; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432BBC0.s") +unk_D_8140E728_01C D_843861D0[] = { + { + 0x00000001, + &D_84385E40[0], + }, + { + 0x00000001, + &D_84385E40[1], + }, + { + 0x00000001, + &D_84385E40[2], + }, + { + 0x00000001, + &D_84385E40[3], + }, + { + 0x00000001, + &D_84385E40[4], + }, + { + 0x00000001, + &D_84385E40[7], + }, + { + 0x00000003, + func_84331094, + }, + { + 0x00000001, + &D_84385E40[8], + }, + { + 0x00000001, + &D_84385E40[9], + }, + { + 0x00000001, + &D_84385E40[10], + }, + { + 0x00000001, + &D_84385E40[55], + }, + { + 0x00000001, + &D_84385E40[11], + }, + { + 0x00000001, + &D_84385E40[12], + }, + { + 0x00000001, + &D_84385E40[13], + }, + { + 0x00000001, + &D_84385E40[14], + }, + { + 0x00000003, + func_843310A0, + }, + { + 0x00000003, + func_843311D8, + }, + { + 0x00000003, + func_84331314, + }, + { + 0x00000003, + func_84331450, + }, + { + 0x00000003, + func_8433157C, + }, + { + 0x00000003, + func_843316A8, + }, + { + 0x00000001, + &D_84385E40[16], + }, + { + 0x00000001, + &D_84385E40[22], + }, + { + 0x00000001, + &D_84385E40[23], + }, + { + 0x00000001, + &D_84385E40[17], + }, + { + 0x00000001, + &D_84385E40[18], + }, + { + 0x00000001, + &D_84385E40[56], + }, + { + 0x00000001, + &D_84385E40[5], + }, + { + 0x00000003, + func_843317D4, + }, + { + 0x00000003, + func_843318F8, + }, + { + 0x00000003, + func_84331A1C, + }, + { + 0x00000001, + &D_84385E40[19], + }, + { + 0x00000001, + &D_84385E40[20], + }, + { + 0x00000001, + &D_84385E40[24], + }, + { + 0x00000001, + &D_84385E40[21], + }, + { + 0x00000001, + &D_84385E40[25], + }, + { + 0x00000001, + &D_84385E40[26], + }, + { + 0x00000003, + func_84331D60, + }, + { + 0x00000003, + func_84331B58, + }, + { + 0x00000003, + func_84331C34, + }, + { + 0x00000003, + func_84330AF0, + }, + { + 0x00000003, + func_84330B40, + }, + { + 0x00000001, + &D_84385E40[15], + }, + { + 0x00000003, + func_84330C70, + }, + { + 0x00000003, + func_84330D64, + }, + { + 0x00000003, + func_84330E58, + }, + { + 0x00000003, + func_84330F4C, + }, + { + 0x00000003, + func_84330388, + }, + { + 0x00000003, + func_843304AC, + }, + { + 0x00000003, + func_84330574, + }, + { + 0x00000003, + func_84330688, + }, + { + 0x00000003, + func_8433079C, + }, + { + 0x00000001, + &D_84385E40[27], + }, + { + 0x00000001, + &D_84385E40[6], + }, + { + 0x00000001, + &D_84385E40[45], + }, + { + 0x00000001, + &D_84385E40[28], + }, + { + 0x00000001, + &D_84385E40[29], + }, + { + 0x00000001, + &D_84385E40[30], + }, + { + 0x00000001, + &D_84385E40[31], + }, + { + 0x00000001, + &D_84385E40[32], + }, + { + 0x00000001, + &D_84385E40[33], + }, + { + 0x00000001, + &D_84385E40[34], + }, + { + 0x00000001, + &D_84385E40[35], + }, + { + 0x00000001, + &D_84385E40[54], + }, + { + 0x00000001, + &D_84385E40[36], + }, + { + 0x00000003, + func_84330B18, + }, + { + 0x00000001, + &D_84385E40[37], + }, + { + 0x00000001, + &D_84385E40[38], + }, + { + 0x00000001, + &D_84385E40[51], + }, + { + 0x00000001, + &D_84385E40[39], + }, + { + 0x00000001, + &D_84385E40[40], + }, + { + 0x00000001, + &D_84385E40[41], + }, + { + 0x00000001, + &D_84385E40[42], + }, + { + 0x00000001, + &D_84385E40[43], + }, + { + 0x00000001, + &D_84385E40[44], + }, + { + 0x00000001, + &D_84385E40[46], + }, + { + 0x00000001, + &D_84385E40[47], + }, + { + 0x00000001, + &D_84385E40[48], + }, + { + 0x00000003, + func_84330300, + }, + { + 0x00000003, + func_84330344, + }, + { + 0x00000001, + &D_84385E40[49], + }, + { + 0x00000001, + &D_84385E40[50], + }, + { + 0x00000003, + func_84330934, + }, + { + 0x00000001, + &D_84385E40[52], + }, + { + 0x00000001, + &D_84385E40[53], + }, + { + 0x00000000, + NULL, + }, +}; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432BF88.s") +static func_D_84390320 D_84386480[] = { + func_8432F998, func_84342CF0, func_8433B2E8, func_8434DE6C, func_8433BAA8, func_8432F998, func_8433B4AC, + func_84356AC8, func_84344A4C, func_8432F998, func_843473BC, func_84357AB8, func_84343288, func_84356FAC, + func_84343988, func_8433B290, func_8435811C, func_8434A324, func_8433DC80, func_8432F998, func_843378CC, + func_8434C590, func_84336B8C, func_84336EE8, func_8434BF2C, func_8432F998, func_8433BC38, func_8432F998, + func_843443E0, func_84358DE4, func_84358F6C, func_84357E60, func_8432F998, func_8432F998, func_84345038, + func_843371C0, func_8434CE14, func_8434A898, func_84342808, func_8433BD08, func_84345D74, func_84356254, + func_8432F998, func_8432F998, func_8432F998, func_8434ED48, func_8432F998, func_8433B988, func_8433B374, + func_8434D8D8, func_84348630, func_8432F998, func_84349628, func_84344508, func_8432F998, func_84349830, + func_843579C0, func_84357B80, func_8433B6FC, func_8433E124, func_84358DE4, func_84356DBC, func_8432F998, + func_84346B58, func_84346EEC, func_84344248, func_84346F40, func_8432F998, func_84349384, func_84349504, + func_8433BDFC, func_84349058, func_84347448, func_8433E46C, func_84349108, func_84346DC4, func_84344474, + func_8433BB78, func_8433BECC, func_843498D8, func_84349A14, func_84358034, func_84348630, func_8434A7DC, + func_843374A4, func_84358288, func_84345EC0, func_8434A9EC, func_8434AA6C, func_84358A5C, func_8434AC8C, + func_8434AD1C, func_8434AD70, func_8434C618, func_8434B000, func_8434BA70, func_8434C070, func_8434C0C4, + func_8432F998, func_8434CAD8, func_8434D0F8, func_8434D448, func_8432E9B8, func_8434E0CC, func_8434E02C, + func_8434E74C, func_8434DA94, func_8434DB40, func_8435674C, func_84358EA0, func_84358EDC, func_843490A8, + func_8434ACEC, func_8434E8E0, func_8435839C, func_843584C0, func_84358538, func_84357700, func_8434EBA0, + func_8434EC08, func_8433BB78, func_8434E9A0, func_8433FD30, func_8435727C, func_8435742C, func_84344094, + func_8433765C, func_8434EF68, func_8434EFBC, func_8434F010, func_8434F060, func_8434F0B8, func_8434F350, + func_8433FAF8, func_8433F758, func_8433F5D4, func_8432F998, func_84356CA4, func_84356D04, func_8433F414, + func_8433F4CC, func_8433F4EC, func_8433F5B4, func_8433F974, func_8432F998, +}; +static func_D_84390320 D_843866C4[] = { + func_8432F9A0, func_8432F9A0, func_8433B58C, func_84357A64, func_84357AE0, func_84357110, func_8434575C, + func_8434A384, func_8433DECC, func_8432F9A0, func_84346BE0, func_8432F9A0, func_8432F9A0, func_84344BDC, + func_84355E58, func_843372D8, func_8434CF64, func_84342908, func_84357CC8, func_8432F9A0, func_8433BF54, + func_84345B84, func_84337000, func_843450B4, func_8432F9A0, func_8434E1B8, func_84340CB0, func_8433B7E4, + func_8433E33C, func_843375B0, func_84356EF4, func_84344B04, func_8432F9A0, func_8432F9A0, func_8433B3D8, + func_84355EF0, func_84355F88, func_84356148, func_843561A0, func_843567F4, func_8433766C, func_8434915C, + func_8435643C, func_843565DC, func_84356020, func_843568C8, func_843569A0, func_843561F8, func_8432F9A0, + func_84345B28, func_84346E50, func_8434C5F0, func_84356AF0, func_8433C3A0, func_84336DD8, func_84357F64, + func_84336C80, func_843581FC, func_8434A930, func_843378D4, func_8434C720, func_8434B064, func_8434BCD4, + func_8434C144, func_8434CC68, func_8434D5EC, func_8434D938, func_8433C06C, func_8433C284, func_8433C4EC, + func_8433C604, func_8433C784, func_8433DFF4, func_8434DD08, func_8434DBEC, func_8434A9CC, func_8434E870, + func_8434E940, func_8434967C, func_8434ECF4, func_843560B4, func_843489FC, func_843489FC, func_8434917C, + func_8434EA10, func_8435783C, func_8433CAFC, func_84340D14, func_843574FC, func_8432F9A0, +}; +static u8 D_8438682C[] = { + 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, + 0x3F, 0x00, 0x00, 0x00, 0x01, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432C0D0.s") +}; +static u8 D_84386844[] = { + 0x03, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432C14C.s") +}; +static u8 D_84386848[] = { + 0x04, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432C194.s") +}; +static u8 D_8438684C[] = { + 0x05, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432C1E0.s") +}; +static u8 D_84386850[] = { + 0x06, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432C3F8.s") +}; +static u8 D_84386854[] = { + 0x09, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432C4CC.s") +}; +static u8 D_84386858[] = { + 0x0A, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432C504.s") +}; +static u8 D_8438685C[] = { + 0x0B, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432C518.s") +}; +static u8 D_84386860[] = { + 0x0C, 0x3F, 0x00, 0x00, 0x0D, 0x3F, 0x00, 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432C524.s") +}; +static u8 D_84386868[] = { + 0x0E, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432C538.s") +}; +static u8 D_8438686C[] = { + 0x0F, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432C544.s") +}; +static u8 D_84386870[] = { + 0x10, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432C550.s") +}; +static u8 D_84386874[] = { + 0x11, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432C5D4.s") +}; +static u8 D_84386878[] = { + 0x11, + 0x3D, + 0x3F, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432C604.s") +}; +static u8 D_8438687C[] = { + 0x12, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432C654.s") +}; +static u8 D_84386880[] = { + 0x13, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432C68C.s") +}; +static u8 D_84386884[] = { + 0x14, 0x3F, 0x00, 0x00, 0x15, 0x3F, 0x00, 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432C6C4.s") +}; +static u8 D_8438688C[] = { + 0x16, 0x3F, 0x00, 0x00, 0x17, 0x3F, 0x00, 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432C714.s") +}; +static u8 D_84386894[] = { + 0x18, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432C748.s") +}; +static u8 D_84386898[] = { + 0x19, + 0x32, + 0x3F, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432C768.s") +}; +static u8 D_8438689C[] = { + 0x1A, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432C7A0.s") +}; +static u8 D_843868A0[] = { + 0x1B, + 0x27, + 0x3F, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432C80C.s") +}; +static u8 D_843868A4[] = { + 0x1C, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432C830.s") +}; +static u8 D_843868A8[] = { + 0x27, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432C86C.s") +}; +static u8 D_843868AC[] = { + 0x1E, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432C8BC.s") +}; +static u8 D_843868B0[] = { + 0x1F, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432C958.s") +}; +static u8 D_843868B4[] = { + 0x20, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432C9C0.s") +}; +static u8 D_843868B8[] = { + 0x21, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432CA48.s") +}; +static u8 D_843868BC[] = { + 0x22, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432CAA8.s") +}; +static u8 D_843868C0[] = { + 0x23, 0x3F, 0x00, 0x00, 0x24, 0x3F, 0x00, 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432CAD0.s") +}; +static u8 D_843868C8[] = { + 0x25, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432CB60.s") +}; +static u8 D_843868CC[] = { + 0x26, + 0x11, + 0x3F, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432CB68.s") +}; +static u8 D_843868D0[] = { + 0x27, + 0x32, + 0x3F, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432CBF8.s") +}; +static u8 D_843868D4[] = { + 0x28, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432CC54.s") +}; +static u8 D_843868D8[] = { + 0x29, + 0x03, + 0x3F, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432CD14.s") +}; +static u8 D_843868DC[] = { + 0x2A, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432CD70.s") +}; +static u8 D_843868E0[] = { + 0x2B, + 0x11, + 0x3F, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432CDD8.s") +}; +static u8 D_843868E4[] = { + 0x17, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432CE00.s") +}; +static u8 D_843868E8[] = { + 0x09, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432CE3C.s") +}; +static u8 D_843868EC[] = { + 0x0B, 0x3F, 0x00, 0x00, 0x0E, 0x3F, 0x00, 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432CE78.s") +}; +static u8 D_843868F4[] = { + 0x14, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432CED4.s") +}; +static u8 D_843868F8[] = { + 0x15, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432CEF0.s") +}; +static u8 D_843868FC[] = { + 0x1E, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432CF74.s") +}; +static u8 D_84386900[] = { + 0x10, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432CFCC.s") +}; +static u8 D_84386904[] = { + 0x14, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432D0D8.s") +}; +static u8 D_84386908[] = { + 0x0C, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432D150.s") +}; +static u8 D_8438690C[] = { + 0x07, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432D178.s") +}; +static u8 D_84386910[] = { + 0x36, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432D340.s") +}; +static u8 D_84386914[] = { + 0x18, + 0x0D, + 0x3F, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432D398.s") +}; +static u8 D_84386918[] = { + 0x03, 0x3F, 0x00, 0x00, 0x14, 0x3F, 0x00, 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432D424.s") +}; +static u8 D_84386920[] = { + 0x2C, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432D468.s") +}; +static u8 D_84386924[] = { + 0x2C, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432D4F4.s") +}; +static u8 D_84386928[] = { + 0x3C, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432D538.s") +}; +static u8 D_8438692C[] = { + 0x2D, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432D55C.s") +}; +static u8 D_84386930[] = { + 0x08, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432D570.s") +}; +static u8 D_84386934[] = { + 0x2E, + 0x3F, + 0x00, + 0x00, -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_315D50/func_8432D594.s") +}; +static u8 D_84386938[] = { + 0x2F, + 0x3F, + 0x00, + 0x00, + +}; +static u8 D_8438693C[] = { + 0x30, + 0x3F, + 0x00, + 0x00, + +}; +static u8 D_84386940[] = { + 0x31, + 0x3F, + 0x00, + 0x00, + +}; +static u8 D_84386944[] = { + 0x32, + 0x3F, + 0x00, + 0x00, + +}; +static u8 D_84386948[] = { + 0x33, + 0x3F, + 0x00, + 0x00, + +}; +static u8 D_8438694C[] = { + 0x34, + 0x3F, + 0x00, + 0x00, + +}; +static u8 D_84386950[] = { + 0x35, + 0x3F, + 0x00, + 0x00, + +}; +static u8 D_84386954[] = { + 0x37, + 0x3F, + 0x00, + 0x00, + +}; +static u8 D_84386958[] = { + 0x38, + 0x3F, + 0x00, + 0x00, + +}; +static u8 D_8438695C[] = { + 0x39, + 0x3F, + 0x00, + 0x00, + +}; +static u8 D_84386960[] = { + 0x3A, + 0x0B, + 0x3F, + 0x00, + +}; +static u8 D_84386964[] = { + 0x3B, + 0x2C, + 0x3F, + 0x00, + +}; +static u8 D_84386968[] = { + 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + +}; +static u8 D_84386970[] = { + 0x90, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386974[] = { + 0x01, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386978[] = { + 0x02, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_8438697C[] = { + 0x03, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386980[] = { + 0x66, 0x04, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + +}; +static u8 D_84386988[] = { + 0x06, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_8438698C[] = { + 0x3A, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386990[] = { + 0x66, + 0x07, + 0x00, + 0x00, + +}; +static u8 D_84386994[] = { + 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, + +}; +static u8 D_8438699C[] = { + 0x0A, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_843869A0[] = { + 0x66, 0x0B, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, + +}; +static u8 D_843869A8[] = { + 0x0D, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_843869AC[] = { + 0x7B, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_843869B0[] = { + 0x7C, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_843869B4[] = { + 0x0E, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_843869B8[] = { + 0x0F, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_843869BC[] = { + 0x10, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_843869C0[] = { + 0x11, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_843869C4[] = { + 0x12, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_843869C8[] = { + 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + +}; +static u8 D_843869D0[] = { + 0x15, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_843869D4[] = { + 0x16, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_843869D8[] = { + 0x17, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_843869DC[] = { + 0x18, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_843869E0[] = { + 0x19, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, + +}; +static u8 D_843869E8[] = { + 0x1C, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_843869EC[] = { + 0x4C, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_843869F0[] = { + 0x1D, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, + +}; +static u8 D_843869F8[] = { + 0x1F, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_843869FC[] = { + 0x20, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386A00[] = { + 0x21, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386A04[] = { + 0x22, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386A08[] = { + 0x23, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386A0C[] = { + 0x66, + 0x24, + 0x00, + 0x00, + +}; +static u8 D_84386A10[] = { + 0x25, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386A14[] = { + 0x26, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386A18[] = { + 0x66, + 0x27, + 0x00, + 0x00, + +}; +static u8 D_84386A1C[] = { + 0x28, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386A20[] = { + 0x29, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386A24[] = { + 0x66, + 0x2A, + 0x00, + 0x00, + +}; +static u8 D_84386A28[] = { + 0x2B, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386A2C[] = { + 0x2C, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386A30[] = { + 0x66, 0x2D, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, + +}; +static u8 D_84386A38[] = { + 0x66, + 0x2F, + 0x00, + 0x00, + +}; +static u8 D_84386A3C[] = { + 0x30, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386A40[] = { + 0x31, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386A44[] = { + 0x32, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386A48[] = { + 0x52, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386A4C[] = { + 0x59, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386A50[] = { + 0x34, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, + +}; +static u8 D_84386A5C[] = { + 0x37, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386A60[] = { + 0x35, + 0x05, + 0x00, + 0x00, + +}; +static u8 D_84386A64[] = { + 0x6A, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386A68[] = { + 0x6B, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386A6C[] = { + 0x1B, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386A70[] = { + 0x56, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386A74[] = { + 0x1E, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386A78[] = { + 0x5D, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386A7C[] = { + 0x1C, + 0x36, + 0x00, + 0x00, + +}; +static u8 D_84386A80[] = { + 0x0E, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386A84[] = { + 0x40, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386A88[] = { + 0x0C, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386A8C[] = { + 0x42, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386A90[] = { + 0x5F, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386A94[] = { + 0x66, + 0x4E, + 0x00, + 0x00, + +}; +static u8 D_84386A98[] = { + 0x3B, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386A9C[] = { + 0x38, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386AA0[] = { + 0x66, + 0x39, + 0x00, + 0x00, + +}; +static u8 D_84386AA4[] = { + 0x3D, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386AA8[] = { + 0x3E, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386AAC[] = { + 0x7D, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386AB0[] = { + 0x7E, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386AB4[] = { + 0x7F, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386AB8[] = { + 0x80, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386ABC[] = { + 0x81, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386AC0[] = { + 0x82, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386AC4[] = { + 0x83, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386AC8[] = { + 0x84, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386ACC[] = { + 0x8B, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386AD0[] = { + 0x8C, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386AD4[] = { + 0x8D, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386AD8[] = { + 0x8E, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386ADC[] = { + 0x85, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386AE0[] = { + 0x86, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386AE4[] = { + 0x8F, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386AE8[] = { + 0x87, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386AEC[] = { + 0x88, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386AF0[] = { + 0x89, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386AF4[] = { + 0x8A, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386AF8[] = { + 0x3F, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386AFC[] = { + 0x41, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B00[] = { + 0x43, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B04[] = { + 0x71, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B08[] = { + 0x79, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B0C[] = { + 0x44, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B10[] = { + 0x45, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B14[] = { + 0x66, + 0x46, + 0x00, + 0x00, + +}; +static u8 D_84386B18[] = { + 0x47, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B1C[] = { + 0x6F, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B20[] = { + 0x48, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B24[] = { + 0x49, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B28[] = { + 0x4A, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B2C[] = { + 0x4B, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B30[] = { + 0x66, + 0x78, + 0x00, + 0x00, + +}; +static u8 D_84386B34[] = { + 0x4F, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B38[] = { + 0x50, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B3C[] = { + 0x51, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B40[] = { + 0x53, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B44[] = { + 0x54, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B48[] = { + 0x55, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B4C[] = { + 0x72, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B50[] = { + 0x73, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B54[] = { + 0x74, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B58[] = { + 0x57, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B5C[] = { + 0x58, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B60[] = { + 0x59, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B64[] = { + 0x5A, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B68[] = { + 0x5B, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B6C[] = { + 0x5C, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B70[] = { + 0x5E, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B74[] = { + 0x60, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B78[] = { + 0x61, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B7C[] = { + 0x62, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B80[] = { + 0x63, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B84[] = { + 0x64, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B88[] = { + 0x65, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B8C[] = { + 0x66, + 0x1A, + 0x00, + 0x00, + +}; +static u8 D_84386B90[] = { + 0x67, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B94[] = { + 0x68, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B98[] = { + 0x69, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386B9C[] = { + 0x6C, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386BA0[] = { + 0x6D, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386BA4[] = { + 0x6E, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386BA8[] = { + 0x70, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386BAC[] = { + 0x75, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386BB0[] = { + 0x76, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386BB4[] = { + 0x77, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386BB8[] = { + 0x7A, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386BBC[] = { + 0x00, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + +}; +static u8 D_84386BC4[] = { + 0x01, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386BC8[] = { + 0x30, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + +}; +static u8 D_84386BD0[] = { + 0x04, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386BD4[] = { + 0x05, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386BD8[] = { + 0x58, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, + +}; +static u8 D_84386BE0[] = { + 0x07, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386BE4[] = { + 0x08, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386BE8[] = { + 0x48, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386BEC[] = { + 0x09, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386BF0[] = { + 0x0A, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, + +}; +static u8 D_84386C00[] = { + 0x0E, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386C04[] = { + 0x23, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386C08[] = { + 0x24, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386C0C[] = { + 0x25, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386C10[] = { + 0x54, + 0x25, + 0x00, + 0x00, + +}; +static u8 D_84386C14[] = { + 0x4D, + 0x0E, + 0x00, + 0x00, + +}; +static u8 D_84386C18[] = { + 0x26, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386C1C[] = { + 0x0F, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386C20[] = { + 0x10, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386C24[] = { + 0x11, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386C28[] = { + 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, + +}; +static u8 D_84386C34[] = { + 0x15, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386C38[] = { + 0x16, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386C3C[] = { + 0x17, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386C40[] = { + 0x18, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386C44[] = { + 0x19, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386C48[] = { + 0x0D, + 0x0E, + 0x00, + 0x00, + +}; +static u8 D_84386C4C[] = { + 0x03, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386C50[] = { + 0x07, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386C54[] = { + 0x22, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386C58[] = { + 0x35, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386C5C[] = { + 0x45, 0x00, 0x00, 0x00, 0x0E, 0x04, 0x00, 0x00, + +}; +static u8 D_84386C64[] = { + 0x1A, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386C68[] = { + 0x09, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386C6C[] = { + 0x06, + 0x0E, + 0x00, + 0x00, + +}; +static u8 D_84386C70[] = { + 0x1B, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, + +}; +static u8 D_84386C78[] = { + 0x1D, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386C7C[] = { + 0x1E, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386C80[] = { + 0x55, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386C84[] = { + 0x1F, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386C88[] = { + 0x20, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386C8C[] = { + 0x21, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386C90[] = { + 0x4F, + 0x27, + 0x00, + 0x00, + +}; +static u8 D_84386C94[] = { + 0x28, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386C98[] = { + 0x29, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386C9C[] = { + 0x2A, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386CA0[] = { + 0x2B, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386CA4[] = { + 0x2C, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386CA8[] = { + 0x2D, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386CAC[] = { + 0x4F, + 0x2D, + 0x00, + 0x00, + +}; +static u8 D_84386CB0[] = { + 0x2E, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386CB4[] = { + 0x2F, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386CB8[] = { + 0x31, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386CBC[] = { + 0x32, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386CC0[] = { + 0x3F, 0x23, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, + +}; +static u8 D_84386CC8[] = { + 0x34, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386CCC[] = { + 0x36, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386CD0[] = { + 0x37, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386CD4[] = { + 0x39, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386CD8[] = { + 0x49, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386CDC[] = { + 0x4A, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386CE0[] = { + 0x3A, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386CE4[] = { + 0x4B, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386CE8[] = { + 0x3B, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386CEC[] = { + 0x3C, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386CF0[] = { + 0x3D, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386CF4[] = { + 0x3E, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386CF8[] = { + 0x40, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386CFC[] = { + 0x2D, + 0x1E, + 0x00, + 0x00, + +}; +static u8 D_84386D00[] = { + 0x41, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386D04[] = { + 0x42, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386D08[] = { + 0x43, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386D0C[] = { + 0x44, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386D10[] = { + 0x46, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386D14[] = { + 0x47, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386D18[] = { + 0x50, + 0x4C, + 0x00, + 0x00, + +}; +static u8 D_84386D1C[] = { + 0x38, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, + +}; +static u8 D_84386D24[] = { + 0x4E, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x00, + +}; +static u8 D_84386D2C[] = { + 0x51, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386D30[] = { + 0x52, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386D34[] = { + 0x02, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386D38[] = { + 0x56, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386D3C[] = { + 0x53, + 0x00, + 0x00, + 0x00, + +}; +static u8 D_84386D40[] = { + 0x57, + 0x23, + 0x00, + 0x00, +}; +static u8* D_84386D44[][2] = { + { + D_84386968, + D_8438682C, + }, + { + D_84386ADC, + D_84386920, + }, + { + D_84386AE0, + D_84386920, + }, + { + D_84386AE8, + D_84386924, + }, + { + D_84386AEC, + D_84386924, + }, + { + D_84386AF0, + D_8438692C, + }, + { + D_84386AF4, + D_8438682C, + }, + { + D_84386968, + D_8438682C, + }, + { + D_84386ACC, + D_84386924, + }, + { + D_843869D0, + D_84386870, + }, + { + D_84386AD0, + D_84386928, + }, + { + D_84386AD4, + D_84386928, + }, + { + D_84386AE4, + D_84386920, + }, + { + D_84386AD8, + D_84386928, + }, + { + D_84386BB8, + D_8438682C, + }, +}; +static u8* D_84386DBC[] = { + D_84386968, D_84386AAC, D_84386AB0, D_84386974, D_84386B10, D_84386AB4, + D_84386AB8, D_84386ABC, D_84386AC0, D_84386AC4, D_84386AC8, D_84386970, +}; +static u8* D_84386DEC[] = { + D_84386BBC, D_84386BC4, D_84386BEC, D_84386BC8, D_84386CB8, +}; +static u8* D_84386E00[] = { D_84386968, D_84386A2C }; +static u8* D_84386E08[][5] = { + { + D_84386968, + D_84386968, + D_84386BBC, + D_8438682C, + D_8438682C, + }, + { + D_84386968, + D_84386968, + D_84386CA4, + D_8438682C, + D_84386894, + }, + { + D_84386968, + D_84386968, + D_84386CA4, + D_8438682C, + D_84386894, + }, + { + D_84386968, + D_84386968, + D_84386C00, + D_8438682C, + D_84386894, + }, + { + D_84386968, + D_84386968, + D_84386C04, + D_8438682C, + D_84386894, + }, + { + D_843869B8, + D_84386968, + D_84386D18, + D_84386844, + D_84386894, + }, + { + D_84386968, + D_84386968, + D_84386C48, + D_8438682C, + D_843868E4, + }, + { + D_84386A9C, + D_84386968, + D_84386CCC, + D_84386874, + D_84386894, + }, + { + D_84386A20, + D_84386968, + D_84386C9C, + D_843868B0, + D_84386894, + }, + { + D_84386B24, + D_84386968, + D_84386CA0, + D_8438686C, + D_84386894, + }, + { + D_843869A8, + D_84386968, + D_84386BD4, + D_8438685C, + D_8438682C, + }, + { + D_84386B18, + D_84386968, + D_84386C98, + D_84386930, + D_84386894, + }, + { + D_84386B1C, + D_84386968, + D_84386D3C, + D_84386930, + D_84386894, + }, + { + D_8438699C, + D_84386B20, + D_84386C4C, + D_843868E8, + D_843868EC, + }, + { + D_84386B0C, + D_84386968, + D_84386BBC, + D_84386934, + D_8438682C, + }, + { + D_84386AA4, + D_84386968, + D_84386C7C, + D_8438685C, + D_8438682C, + }, + { + D_8438699C, + D_84386968, + D_84386CB4, + D_84386854, + D_84386894, + }, + { + D_84386968, + D_84386968, + D_84386D40, + D_84386858, + D_84386894, + }, + { + D_8438699C, + D_84386968, + D_84386BBC, + D_84386854, + D_8438682C, + }, + { + D_84386968, + D_84386A1C, + D_84386CAC, + D_843868AC, + D_84386894, + }, + { + D_843869C8, + D_84386968, + D_84386BEC, + D_8438682C, + D_8438682C, + }, + { + D_84386968, + D_84386968, + D_84386CA8, + D_8438682C, + D_84386894, + }, + { + D_84386BAC, + D_84386968, + D_84386C80, + D_8438685C, + D_84386858, + }, + { + D_84386968, + D_84386968, + D_84386C90, + D_8438682C, + D_84386894, + }, + { + D_84386968, + D_84386968, + D_84386C04, + D_8438682C, + D_84386894, + }, + { + D_84386978, + D_84386968, + D_84386D18, + D_84386844, + D_84386894, + }, + { + D_84386968, + D_84386968, + D_84386CA4, + D_8438682C, + D_84386894, + }, + { + D_84386968, + D_84386968, + D_84386CA4, + D_8438682C, + D_84386894, + }, + { + D_843869F8, + D_84386968, + D_84386CD0, + D_8438688C, + D_84386894, + }, + { + D_84386968, + D_84386968, + D_84386C00, + D_8438682C, + D_84386894, + }, + { + D_84386BB4, + D_84386968, + D_84386C0C, + D_84386850, + D_84386894, + }, + { + D_84386BB0, + D_84386968, + D_84386CB4, + D_84386850, + D_84386894, + }, + { + D_84386B08, + D_84386968, + D_84386C10, + D_84386850, + D_84386894, + }, + { + D_84386968, + D_84386968, + D_84386CA4, + D_8438682C, + D_84386894, + }, + { + D_84386B54, + D_84386968, + D_84386CAC, + D_8438682C, + D_84386894, + }, + { + D_843869C8, + D_84386968, + D_84386BEC, + D_8438682C, + D_8438682C, + }, + { + D_84386B50, + D_84386968, + D_84386CA4, + D_84386944, + D_84386894, + }, + { + D_84386B4C, + D_84386968, + D_84386CA8, + D_8438682C, + D_84386894, + }, + { + D_84386B50, + D_84386968, + D_84386CA8, + D_84386944, + D_84386894, + }, + { + D_84386968, + D_84386968, + D_84386BBC, + D_8438682C, + D_8438682C, + }, + { + D_84386B00, + D_84386968, + D_84386C18, + D_84386850, + D_84386894, + }, + { + D_84386B00, + D_84386968, + D_84386C18, + D_84386850, + D_84386894, + }, + { + D_84386B00, + D_84386968, + D_84386C0C, + D_84386850, + D_84386894, + }, + { + D_84386B40, + D_84386968, + D_84386BBC, + D_8438693C, + D_8438682C, + }, + { + D_84386B28, + D_84386968, + D_84386C98, + D_84386930, + D_84386894, + }, + { + D_84386968, + D_84386968, + D_84386BBC, + D_8438682C, + D_8438682C, + }, + { + D_84386968, + D_84386968, + D_84386BBC, + D_8438682C, + D_8438682C, + }, + { + D_84386A28, + D_84386968, + D_84386BBC, + D_843868B8, + D_8438682C, + }, + { + D_84386A2C, + D_84386968, + D_84386BBC, + D_843868BC, + D_8438682C, + }, + { + D_84386A30, + D_84386968, + D_84386C04, + D_843868C0, + D_84386894, + }, + { + D_84386B7C, + D_84386968, + D_84386C8C, + D_8438682C, + D_8438682C, + }, + { + D_843869C0, + D_84386968, + D_84386C50, + D_84386868, + D_8438682C, + }, + { + D_843869D4, + D_84386968, + D_84386D1C, + D_84386874, + D_84386894, + }, + { + D_843869D8, + D_84386968, + D_84386C38, + D_84386874, + D_84386894, + }, + { + D_84386A60, + D_84386968, + D_84386BBC, + D_843868F4, + D_8438682C, + }, + { + D_84386988, + D_84386968, + D_84386D34, + D_84386844, + D_84386868, + }, + { + D_8438698C, + D_84386968, + D_84386C70, + D_84386844, + D_84386868, + }, + { + D_84386A0C, + D_84386968, + D_84386C20, + D_8438689C, + D_84386844, + }, + { + D_84386A38, + D_84386968, + D_84386D08, + D_843868D8, + D_8438682C, + }, + { + D_84386A04, + D_84386968, + D_84386C3C, + D_84386898, + D_84386844, + }, + { + D_84386980, + D_84386968, + D_84386D0C, + D_8438682C, + D_843868D8, + }, + { + D_84386B30, + D_84386968, + D_84386C58, + D_8438682C, + D_843868D8, + }, + { + D_84386B8C, + D_84386968, + D_84386C5C, + D_8438682C, + D_843868D8, + }, + { + D_84386A18, + D_84386968, + D_84386D10, + D_843868A8, + D_843868D8, + }, + { + D_84386BB0, + D_84386968, + D_84386C0C, + D_84386850, + D_84386894, + }, + { + D_84386B04, + D_84386968, + D_84386C14, + D_84386850, + D_84386894, + }, + { + D_84386B9C, + D_84386968, + D_84386CB0, + D_8438682C, + D_84386894, + }, + { + D_84386968, + D_84386968, + D_84386C08, + D_8438682C, + D_84386894, + }, + { + D_84386968, + D_84386968, + D_84386CA4, + D_8438682C, + D_84386894, + }, + { + D_843869E0, + D_84386968, + D_84386CAC, + D_8438682C, + D_84386894, + }, + { + D_84386B2C, + D_84386968, + D_84386CBC, + D_8438687C, + D_8438682C, + }, + { + D_843869DC, + D_84386968, + D_84386C34, + D_84386880, + D_843868CC, + }, + { + D_843869DC, + D_84386968, + D_84386C34, + D_84386880, + D_843868CC, + }, + { + D_84386994, + D_84386968, + D_84386C84, + D_8438684C, + D_8438682C, + }, + { + D_84386BA0, + D_84386968, + D_84386BBC, + D_8438682C, + D_8438682C, + }, + { + D_843869A0, + D_84386968, + D_84386BD0, + D_84386858, + D_84386894, + }, + { + D_84386B14, + D_84386B98, + D_84386D14, + D_843868F8, + D_843868D8, + }, + { + D_84386AFC, + D_84386968, + D_84386C28, + D_843868C8, + D_84386894, + }, + { + D_84386AFC, + D_84386968, + D_84386C28, + D_843868C8, + D_84386894, + }, + { + D_84386AFC, + D_84386968, + D_84386C28, + D_843868C8, + D_84386894, + }, + { + D_84386AA0, + D_84386968, + D_84386C64, + D_84386858, + D_84386894, + }, + { + D_84386A00, + D_84386968, + D_84386C88, + D_8438682C, + D_8438682C, + }, + { + D_84386A08, + D_84386968, + D_84386C1C, + D_84386874, + D_84386894, + }, + { + D_84386B44, + D_84386968, + D_84386C78, + D_84386878, + D_84386894, + }, + { + D_84386A98, + D_84386968, + D_84386BE4, + D_8438686C, + D_8438682C, + }, + { + D_843869C4, + D_84386968, + D_84386BE4, + D_8438686C, + D_8438682C, + }, + { + D_84386A14, + D_84386968, + D_84386C24, + D_843868A4, + D_8438682C, + }, + { + D_843869C4, + D_84386968, + D_84386BE8, + D_8438686C, + D_8438682C, + }, + { + D_84386AF8, + D_84386968, + D_84386BF0, + D_8438682C, + D_8438687C, + }, + { + D_84386A10, + D_84386968, + D_84386CE4, + D_843868A0, + D_84386894, + }, + { + D_84386A10, + D_84386968, + D_84386CE0, + D_843868A0, + D_84386894, + }, + { + D_84386A50, + D_84386968, + D_84386D24, + D_843868D4, + D_84386894, + }, + { + D_843869C0, + D_84386968, + D_84386BE0, + D_84386868, + D_8438682C, + }, + { + D_84386A68, + D_84386968, + D_84386CD8, + D_843868CC, + D_84386894, + }, + { + D_84386A64, + D_84386968, + D_84386CDC, + D_843868CC, + D_84386894, + }, + { + D_84386A24, + D_84386968, + D_84386BBC, + D_843868B4, + D_8438682C, + }, + { + D_84386B74, + D_84386968, + D_84386BBC, + D_84386954, + D_8438682C, + }, + { + D_84386A6C, + D_84386968, + D_84386BBC, + D_8438682C, + D_8438682C, + }, + { + D_84386B64, + D_84386968, + D_84386CA4, + D_84386944, + D_84386894, + }, + { + D_84386B48, + D_84386968, + D_84386CA4, + D_843868CC, + D_84386894, + }, + { + D_84386A70, + D_84386968, + D_84386BBC, + D_843868FC, + D_8438682C, + }, + { + D_84386B78, + D_84386968, + D_84386CC0, + D_84386958, + D_84386894, + }, + { + D_843869F0, + D_84386968, + D_84386BBC, + D_8438682C, + D_8438682C, + }, + { + D_84386A24, + D_84386968, + D_84386BBC, + D_843868B4, + D_8438682C, + }, + { + D_84386A6C, + D_84386968, + D_84386BBC, + D_8438682C, + D_8438682C, + }, + { + D_84386BA4, + D_84386968, + D_84386BBC, + D_8438682C, + D_8438682C, + }, + { + D_84386A74, + D_84386968, + D_84386BBC, + D_8438682C, + D_8438682C, + }, + { + D_84386968, + D_84386968, + D_84386BBC, + D_8438682C, + D_8438682C, + }, + { + D_843869E8, + D_84386968, + D_84386BBC, + D_84386884, + D_84386894, + }, + { + D_84386A78, + D_84386968, + D_84386CEC, + D_84386900, + D_84386894, + }, + { + D_84386B68, + D_84386968, + D_84386BBC, + D_84386948, + D_8438682C, + }, + { + D_84386B58, + D_84386968, + D_84386BBC, + D_84386940, + D_84386894, + }, + { + D_843869B4, + D_84386968, + D_84386BBC, + D_84386860, + D_8438682C, + }, + { + D_843869B4, + D_84386968, + D_84386BBC, + D_84386860, + D_8438682C, + }, + { + D_84386A7C, + D_84386968, + D_84386BBC, + D_84386904, + D_8438682C, + }, + { + D_84386A80, + D_84386968, + D_84386BBC, + D_84386908, + D_8438682C, + }, + { + D_8438697C, + D_84386968, + D_84386BBC, + D_843868CC, + D_8438682C, + }, + { + D_84386B48, + D_84386968, + D_84386CA4, + D_843868CC, + D_84386894, + }, + { + D_843869FC, + D_84386968, + D_84386C40, + D_8438682C, + D_8438682C, + }, + { + D_84386968, + D_84386968, + D_84386C40, + D_8438682C, + D_8438682C, + }, + { + D_84386A44, + D_84386968, + D_84386D2C, + D_843868D0, + D_84386874, + }, + { + D_84386A84, + D_84386968, + D_84386C94, + D_8438690C, + D_84386874, + }, + { + D_84386B6C, + D_84386968, + D_84386BE0, + D_8438694C, + D_84386868, + }, + { + D_843869EC, + D_84386968, + D_84386C28, + D_84386884, + D_84386894, + }, + { + D_843869C0, + D_84386968, + D_84386BE0, + D_84386868, + D_8438682C, + }, + { + D_84386B34, + D_84386968, + D_84386C00, + D_84386938, + D_84386894, + }, + { + D_843869D8, + D_84386968, + D_84386CE8, + D_84386874, + D_84386894, + }, + { + D_84386B80, + D_84386968, + D_84386CF8, + D_8438695C, + D_84386844, + }, + { + D_84386B18, + D_84386968, + D_84386C98, + D_84386930, + D_84386894, + }, + { + D_84386990, + D_84386968, + D_84386CC8, + D_84386848, + D_84386894, + }, + { + D_84386BA8, + D_84386968, + D_84386D18, + D_84386944, + D_84386894, + }, + { + D_84386AA8, + D_84386968, + D_84386C0C, + D_84386850, + D_84386894, + }, + { + D_843869C8, + D_84386968, + D_84386C68, + D_8438682C, + D_8438682C, + }, + { + D_84386A88, + D_84386968, + D_84386BBC, + D_8438682C, + D_8438682C, + }, + { + D_84386A5C, + D_84386A2C, + D_84386BBC, + D_843868DC, + D_843868BC, + }, + { + D_84386A8C, + D_84386968, + D_84386BBC, + D_8438690C, + D_8438682C, + }, + { + D_84386B64, + D_84386968, + D_84386CA4, + D_84386944, + D_84386894, + }, + { + D_84386B40, + D_84386968, + D_84386BBC, + D_8438693C, + D_8438682C, + }, + { + D_84386A90, + D_84386968, + D_84386CF4, + D_84386910, + D_8438682C, + }, + { + D_843869E8, + D_84386968, + D_84386C28, + D_84386884, + D_84386894, + }, + { + D_84386B88, + D_84386968, + D_84386D00, + D_84386964, + D_84386894, + }, + { + D_843869DC, + D_84386968, + D_84386C34, + D_84386880, + D_843868CC, + }, + { + D_84386B70, + D_84386968, + D_84386CF0, + D_84386950, + D_8438682C, + }, + { + D_84386B90, + D_84386B94, + D_84386C44, + D_843868E0, + D_843868D8, + }, + { + D_84386B60, + D_84386968, + D_84386BBC, + D_8438682C, + D_8438682C, + }, + { + D_84386A3C, + D_84386968, + D_84386C54, + D_84386844, + D_84386894, + }, + { + D_84386968, + D_84386968, + D_84386C6C, + D_8438682C, + D_84386914, + }, + { + D_84386AFC, + D_84386968, + D_84386C28, + D_843868C8, + D_84386894, + }, + { + D_843869BC, + D_84386968, + D_84386CD4, + D_8438682C, + D_84386894, + }, + { + D_84386A40, + D_84386968, + D_84386D04, + D_843868CC, + D_84386894, + }, + { + D_84386968, + D_84386968, + D_84386BBC, + D_8438682C, + D_8438682C, + }, + { + D_84386B3C, + D_84386968, + D_84386BBC, + D_84386868, + D_84386894, + }, + { + D_84386B84, + D_84386968, + D_84386CFC, + D_84386960, + D_84386894, + }, + { + D_84386A48, + D_84386968, + D_84386D30, + D_843868D0, + D_84386874, + }, + { + D_843869B0, + D_843869AC, + D_84386BD8, + D_8438685C, + D_8438682C, + }, + { + D_84386B38, + D_84386968, + D_84386CA4, + D_84386938, + D_84386894, + }, + { + D_84386968, + D_84386968, + D_84386BBC, + D_8438682C, + D_8438682C, + }, + { + D_84386AF8, + D_84386968, + D_84386BF0, + D_8438682C, + D_8438687C, + }, + { + D_84386B28, + D_84386968, + D_84386C98, + D_84386930, + D_84386894, + }, + { + D_84386B5C, + D_84386968, + D_84386BBC, + D_84386940, + D_84386894, + }, + { + D_843869F0, + D_84386968, + D_84386BBC, + D_8438682C, + D_8438682C, + }, + { + D_84386A94, + D_84386968, + D_84386D38, + D_84386918, + D_84386894, + }, + { + D_84386B28, + D_84386968, + D_84386C98, + D_84386930, + D_84386894, + }, + { + D_843869A8, + D_84386968, + D_84386BD4, + D_8438685C, + D_8438682C, + }, + { + D_84386A4C, + D_84386968, + D_84386BBC, + D_8438682C, + D_8438682C, + }, + { + D_84386B4C, + D_84386968, + D_84386CA4, + D_8438682C, + D_84386894, + }, +}; + +void func_8432B490(void) { + func_80048B90(1); +} + +void func_8432B4B0(void) { + func_80048B90(2); +} + +void func_8432B4D0(void) { + func_80048B90(3); +} + +void func_8432B4F0(void) { + func_80048B90(8); +} + +void func_8432B510(unk_D_84390010* arg0, s16 arg1) { + if (func_84307B60(arg0) != 0) { + func_8004E810(0xC8, 2); + } else { + func_8004E810(arg1, 2); + } +} + +void func_8432B554(unk_D_84390010* arg0) { + s16 sp1E = arg0->unk_000.unk_01A; + + func_84307C04(arg0); + func_800367A0(0x33, sp1E, 0); +} + +void func_8432B588(unk_D_84390010* arg0) { + func_8003EB40(func_84308D98(arg0), &arg0->unk_654.unk_38); +} + +void func_8432B5B8(unk_D_84390010* arg0, unk_D_800FCB18* arg1, s32 arg2) { + func_800479C0(arg1->unk_5A, arg0->unk_000.unk_01A, arg2); + func_80040A70(arg1, arg1->unk_5A, arg0->unk_000.unk_01A, arg2); +} + +void func_8432B604(void) { + unk_D_84390010* ptr1 = D_84390010[0]; + unk_D_84390010* ptr2 = D_84390010[1]; + u8 i; + u8 sp20[4]; + + sp20[0] = 0xA; + sp20[1] = 0xA; + sp20[2] = 0xA; + sp20[3] = 0xA; + + sp20[ptr1->unk_720->unk_08[0]->unk_001] = 1; + if (ptr1->unk_720->unk_01 == 2) { + sp20[ptr1->unk_720->unk_08[1]->unk_001] = 1; + } + sp20[ptr2->unk_720->unk_08[0]->unk_001] = 2; + if (ptr2->unk_720->unk_01 == 2) { + sp20[ptr2->unk_720->unk_08[1]->unk_001] = 2; + } + + for (i = 0; i < 4; i++) { + if (sp20[i] == 0xA) { + sp20[i] = 0; + } + } + + func_8003D828(sp20[0], sp20[1], sp20[2], sp20[3]); +} + +void func_8432B704(void) { + unk_D_84390010* ptr1 = D_84390010[0]; + unk_D_84390010* ptr2 = D_84390010[1]; + u8 sp24[4]; + + sp24[0] = 0; + sp24[1] = 0; + sp24[2] = 0; + sp24[3] = 0; + + sp24[ptr1->unk_720->unk_08[0]->unk_001] = func_84308D90(ptr1->unk_720->unk_08[0]); + if (ptr1->unk_720->unk_01 == 2) { + sp24[ptr1->unk_720->unk_08[1]->unk_001] = func_84308D90(ptr1->unk_720->unk_08[1]); + } + + sp24[ptr2->unk_720->unk_08[0]->unk_001] = func_84308D90(ptr2->unk_720->unk_08[0]); + if (ptr2->unk_720->unk_01 == 2) { + sp24[ptr2->unk_720->unk_08[1]->unk_001] = func_84308D90(ptr2->unk_720->unk_08[1]); + } + func_8003D6B0(sp24[0], sp24[1], sp24[2], sp24[3]); +} + +void func_8432B808(void) { + switch (D_800AE540.unk_0000) { + case 0: + switch (D_800AE540.unk_0001) { + case 0: + func_8003D918(0, 0xE); + break; + + case 1: + func_8003D918(0, 0xA); + break; + + case 2: + func_8003D918(0, 0xB); + break; + + case 3: + func_8003D918(0, 6); + break; + + case 4: + func_8003D918(0, 5); + break; + + case 5: + func_8003D918(0, 4); + break; + + case 6: + func_8003D918(0, 0); + break; + + case 7: + func_8003D918(0, 0xC); + break; + + case 8: + func_8003D918(0, 0xC); + break; + } + break; + + case 1: + func_8003D918(D_800AE540.unk_0003, 0xA); + break; + + case 2: + func_8003D918(D_800AE540.unk_0003, 0xB); + break; + + case 3: + switch (D_800AE540.unk_0002) { + case 0: + func_8003D918(D_800AE540.unk_0003, 6); + break; + + case 1: + func_8003D918(D_800AE540.unk_0003, 7); + break; + + case 2: + func_8003D918(D_800AE540.unk_0003, 8); + break; + + case 3: + func_8003D918(D_800AE540.unk_0003, 9); + break; + } + break; + + case 4: + func_8003D918(D_800AE540.unk_0003, 5); + break; + + case 5: + func_8003D918(D_800AE540.unk_0003, 4); + break; + + case 6: + switch (D_800AE540.unk_0002) { + case 0: + func_8003D918(D_800AE540.unk_0003, 0); + break; + + case 1: + func_8003D918(D_800AE540.unk_0003, 1); + break; + + case 2: + func_8003D918(D_800AE540.unk_0003, 2); + break; + + case 3: + func_8003D918(D_800AE540.unk_0003, 3); + break; + } + break; + + case 7: + if (D_800AE540.unk_0002 == 9) { + func_8003D918(5, 0xD); + } else if (D_800AE540.unk_0002 == 8) { + func_8003D918(D_800AE540.unk_0003, 0xD); + } else { + func_8003D918((D_800AE540.unk_0002 * 4) + D_800AE540.unk_0003, 0xC); + } + break; + + case 8: + func_8003D918(D_800AE540.unk_0003, 0xF); + break; + + case 10: + switch (D_800AE540.unk_0001) { + case 0: + func_8003D918(0xFF, 0xE); + break; + + case 1: + func_8003D918(0xFF, 0xA); + break; + + case 2: + func_8003D918(0xFF, 0xB); + break; + + case 3: + func_8003D918(0xFF, 6); + break; + + case 4: + func_8003D918(0xFF, 5); + break; + + case 5: + func_8003D918(0xFF, 4); + break; + + case 6: + func_8003D918(0xFF, 0); + break; + + case 7: + func_8003D918(0xFF, 0xC); + break; + + case 8: + func_8003D918(0xFF, 0xC); + break; + } + break; + + case 9: + func_8003D918(0, 0x10); + break; + } +} + +void func_8432BBC0(void) { + switch (D_800AE540.unk_0000) { + case 16: + func_8004B1CC(1); + break; + + case 0: + switch (D_800AE540.unk_0001) { + case 0: + func_8004BA88(0, 0xE); + break; + + case 1: + func_8004BA88(0, 0xA); + break; + + case 2: + func_8004BA88(0, 0xB); + break; + + case 3: + func_8004BA88(0, 6); + break; + + case 4: + func_8004BA88(0, 5); + break; + + case 5: + func_8004BA88(0, 4); + break; + + case 6: + func_8004BA88(0, 0); + break; + + case 7: + func_8004BA88(0, 0xC); + break; + + case 8: + func_8004BA88(0, 0xC); + break; + } + break; + + case 1: + func_8004BA88(D_800AE540.unk_0003, 0xA); + break; + + case 2: + func_8004BA88(D_800AE540.unk_0003, 0xB); + break; + + case 3: + switch (D_800AE540.unk_0002) { + case 0: + func_8004BA88(D_800AE540.unk_0003, 6); + break; + + case 1: + func_8004BA88(D_800AE540.unk_0003, 7); + break; + + case 2: + func_8004BA88(D_800AE540.unk_0003, 8); + break; + + case 3: + func_8004BA88(D_800AE540.unk_0003, 9); + break; + } + break; + + case 4: + func_8004BA88(D_800AE540.unk_0003, 5); + break; + + case 5: + func_8004BA88(D_800AE540.unk_0003, 4); + break; + + case 6: + switch (D_800AE540.unk_0002) { + case 0: + func_8004BA88(D_800AE540.unk_0003, 0); + break; + + case 1: + func_8004BA88(D_800AE540.unk_0003, 1); + break; + + case 2: + func_8004BA88(D_800AE540.unk_0003, 2); + break; + + case 3: + func_8004BA88(D_800AE540.unk_0003, 3); + break; + } + break; + + case 7: + if (D_800AE540.unk_0002 == 9) { + func_8004BA88(5, 0xD); + } else if (D_800AE540.unk_0002 == 8) { + func_8004BA88(D_800AE540.unk_0003, 0xD); + } else { + func_8004BA88((D_800AE540.unk_0002 * 4) + D_800AE540.unk_0003, 0xC); + } + break; + + case 8: + func_8004BA88(D_800AE540.unk_0003, 0xF); + break; + + case 10: + switch (D_800AE540.unk_0001) { + case 0: + func_8004BA88(0xFF, 0xE); + break; + + case 1: + func_8004BA88(0xFF, 0xA); + break; + + case 2: + func_8004BA88(0xFF, 0xB); + break; + + case 3: + func_8004BA88(0xFF, 6); + break; + + case 4: + func_8004BA88(0xFF, 5); + break; + + case 5: + func_8004BA88(0xFF, 4); + break; + + case 6: + func_8004BA88(0xFF, 0); + break; + + case 7: + func_8004BA88(0xFF, 0xC); + break; + + case 8: + func_8004BA88(0xFF, 0xC); + break; + } + break; + + case 9: + func_8004BA88(0, 0x10); + break; + } +} + +void func_8432BF88(unk_D_84390010* arg0, s32 arg1) { + s16 sp1E = arg0->unk_000.unk_01A; + + if ((func_84307B60(arg0) != 0) && (arg1 == 0x32)) { + func_800367A0(0x32, 0xC8, 0); + } else if (arg1 == 0x14) { + func_800367A0(0x14, 0, 0); + } else if (arg1 == 0x12) { + func_800367A0(0x12, 0, 0); + } else if (arg1 == 0x32) { + func_800367A0(0x32, sp1E, 0); + } else if (arg1 == 0x21) { + func_800367A0(0x21, 0, 0); + } else if (arg1 == 0x13) { + func_800367A0(0x13, 0, 0); + } else if (arg1 == 0x1E) { + func_800367A0(0x1E, 0, 0); + } else if (arg1 == 0x1F) { + func_800367A0(0x1F, 0, 0); + } else if (arg1 == 0x20) { + func_800367A0(0x20, 0, 0); + } +} + +void func_8432C0D0(s16 arg0) { + D_843902E2 = D_843902E4; + D_84386480[arg0](); + if (D_843902E6 != 0xFF) { + D_843902E2 = D_843902E6; + D_84386480[arg0](); + } +} + +void func_8432C14C(s16 arg0) { + D_843902E2 = D_843902E4; + D_843866C4[arg0](); +} + +void func_8432C194(func_D_84390300 arg0, func_D_84390320 arg1) { + if (D_843902FC >= 8) { + D_843902FC = 0; + } + + if (D_84390300[D_843902FC]) {} + + D_84390300[D_843902FC] = arg0; + D_84390320[D_843902FC] = arg1; + D_843902FC++; +} + +void func_8432C1E0(s32 arg0, s32 arg1, s32 arg2) { + u8* sp2C; + + D_843902E0 = arg1; + + if (arg2 == 1) { + switch (arg1) { + case 0: + sp2C = D_84386E08[arg0][0]; + break; + + case 1: + sp2C = D_84386E08[arg0][1]; + break; + + case 3: + sp2C = D_84386D44[arg0][0]; + break; + + case 4: + sp2C = D_84386DBC[arg0]; + break; + + case 9: + sp2C = D_84386E00[arg0]; + break; + } + + while (*sp2C != 0) { + func_8432C0D0(*sp2C); + D_84388280[*sp2C](); + func_8432C194(D_84388668[*sp2C], D_84388A50[*sp2C]); + sp2C++; + } + } else { + switch (arg1) { + case 2: + sp2C = D_84386E08[arg0][2]; + break; + + case 6: + sp2C = D_84386DEC[arg0]; + break; + } + + while (*sp2C != 0) { + func_8432C14C(*sp2C); + D_843884D8[*sp2C](); + func_8432C194(D_843888C0[*sp2C], D_84388CA8[*sp2C]); + sp2C++; + } + } +} + +void func_8432C3F8(void) { + if (D_843902B0 != 0) { + func_8432EB44(); + func_8432C1E0(D_843902AC, D_843902B8, D_843902B0); + D_843902B0 = 0; + } + + if (D_843902C8 != 0) { + func_8432C1E0(D_843902CC, D_843902D0, D_843902C8); + D_843902C8 = 0; + } + + if (D_843902D4 != 0) { + func_8432C1E0(D_843902D8, D_843902DC, D_843902D4); + D_843902D4 = 0; + } + + if (D_843902C0 != 0) { + func_8432C1E0(D_843902C4, 4, D_843902C0); + D_843902C0 = 0; + } +} + +void func_8432C4CC(UNUSED unk_D_86002F34_00C* arg0) { + func_8140C5D0(); + func_8432C3F8(); + func_8432E68C(); + func_843592E0(); +} + +void func_8432C504(u8 arg0) { + D_843902B8 = arg0; +} + +u8 func_8432C518(void) { + return D_843902E0; +} + +void func_8432C524(u8 arg0) { + D_843902C4 = arg0; +} + +u8 func_8432C538(void) { + return D_843902C4; +} + +s16 func_8432C544(void) { + return D_843902AC; +} + +void func_8432C550(s32 arg0, unk_D_84390010* arg1, unk_D_84390010* arg2, s16 arg3, s16 arg4) { + func_8432C504(0); + D_843902B0 = 1; + D_843902AC = arg0; + D_843902A4 = 0; + D_843902E4 = arg3; + D_843902E6 = arg4; + D_843902E8 = arg1; + D_843902EC = arg1; + D_843902F0 = arg2; +} + +void func_8432C5D4(s32 arg0, unk_D_84390010* arg1, unk_D_84390010* arg2, s16 arg3, s16 arg4) { + func_8432C550(arg0, arg1, arg2, arg3, arg4); +} + +void func_8432C604(s32 arg0, unk_D_84390010* arg1, unk_D_84390010* arg2, s16 arg3, s16 arg4) { + func_8432C550(arg0, arg1, arg2, arg3, arg4); + func_8432C504(2); + D_843902E8 = arg2; + D_843902B0 = 2; +} + +void func_8432C654(s32 arg0, unk_D_84390010* arg1, unk_D_84390010* arg2, s16 arg3, s16 arg4) { + func_8432C550(arg0, arg1, arg2, arg3, arg4); + func_8432C504(1); +} + +void func_8432C68C(s32 arg0, unk_D_84390010* arg1, unk_D_84390010* arg2, s16 arg3, s16 arg4) { + func_8432C550(arg0, arg1, arg2, arg3, arg4); + func_8432C504(3); +} + +void func_8432C6C4(s32 arg0, unk_D_84390010* arg1) { + D_843902C8 = 2; + D_843902CC = arg0; + D_843902D0 = 6; + D_843902E4 = 0xFF; + D_843902E6 = 0xFF; + D_843902E8 = arg1; + D_843902EC = arg1; + D_843902F0 = arg1; +} + +void func_8432C714(s32 arg0, unk_D_84390010* arg1) { + func_8432C6C4(arg0, arg1); + D_843902C8 = 1; + D_843902D0 = 5; +} + +void func_8432C748(s32 arg0, unk_D_84390010* arg1) { + func_8432C6C4(arg0, arg1); +} + +void func_8432C768(s32 arg0) { + D_843902D4 = 1; + D_843902DC = 9; + D_843902D8 = arg0; + D_843902E4 = 0xFF; + D_843902E6 = 0xFF; +} + +void func_8432C7A0(u8 arg0, unk_D_84390010* arg1) { + D_843902C0 = 1; + func_8432C524(arg0); + D_843902E8 = arg1; + D_843902E4 = 0xFF; + D_843902E6 = 0xFF; + if (arg0 == 3) { + D_843902E4 = 7; + } +} + +void func_8432C80C(u8 arg0, unk_D_84390010* arg1) { + func_8432EA60(arg0, arg1); +} + +void func_8432C830(arg1_func_80019420* arg0) { + if (arg0 != NULL) { + do { + if (arg0->unk_02 != 0) { + D_843920C0[arg0->unk_02] = arg0->unk_04; + arg0++; + } + } while (arg0->unk_00 != 0); + } +} + +void func_8432C86C(void) { + s32 i; + + // clang-format off + for (i = 0; i < 256; i++) { D_843920C0[i] = NULL; } + // clang-format on + + func_8432C830(func_80019EA0(0)); +} + +void func_8432C8BC(s16 arg0) { + s32 var_v0 = 0; + u8* temp_a1 = D_84386E08[arg0][3]; + + while (*temp_a1 != 0x3F) { + D_843924C0[var_v0] = *temp_a1; + temp_a1++; + var_v0++; + } + + temp_a1 = D_84386E08[arg0][4]; + while (*temp_a1 != 0x3F) { + D_843924C0[var_v0] = *temp_a1; + temp_a1++; + var_v0++; + } + + D_843924C0[var_v0] = -1; +} + +void func_8432C958(unk_D_800AE540_1194* arg0, s16 arg1) { + if (arg1 != 0xFF) { + func_8432C8BC(arg1); + arg0->unk_1D |= 0x80; + arg0->unk_20 = D_843924C0; + arg0->unk_24 = D_843924E0; + } +} + +void func_8432C9C0(unk_D_800AE540_1194* arg0, s16 arg1) { + s32 var_v0 = 0; + u8* var_v1 = D_84386D44[arg1][1]; + + while (*var_v1 != 0x3F) { + D_843924C0[var_v0] = *var_v1; + var_v1++; + var_v0++; + } + + D_843924C0[var_v0] = -1; + arg0->unk_20 = D_843924C0; + arg0->unk_1D |= 0x80; + arg0->unk_24 = D_843924E0; +} + +void func_8432CA48(void) { + s32 i = 0; + arg1_func_80019420* var_v0; + arg1_func_80019420** var_s1 = D_843924E0; + + while (*var_s1 != NULL) { + var_v0 = *var_s1; + if (i) {} + func_8432C830(var_v0); + var_s1++; + i++; + } +} + +void func_8432CAA8(unk_D_800AE540_1194* arg0) { + arg0->unk_1D &= ~0x10; + func_8432CA48(); +} + +void func_8432CAD0(void) { + s32 i; + + for (i = 0; i < 16; i++) { + func_8001BB58(&D_843903D0[i]); + D_84391A50[i] = 0; + } + + for (i = 0; i < 4; i++) { + func_8001BBC8(&D_84391A90[i]); + D_84392030[i] = 0; + } +} + +unk_D_8140E720* func_8432CB60(unk_D_86002F58_004_000* arg0) { + return arg0->unk_000.unk_14; +} + +unk_D_86002F58_004_000* func_8432CB68(unk_D_8140E720* arg0) { + s32 i; + s32 var_v0 = -1; + unk_D_86002F58_004_000* temp_a0; + + for (i = 0; i < 16; i++) { + if (D_84391A50[i] == 0) { + var_v0 = i; + break; + } + } + + if (var_v0 >= 0) { + temp_a0 = &D_843903D0[var_v0]; + D_84391A50[var_v0] = 1; + temp_a0->unk_000.unk_14 = arg0; + } else { + temp_a0 = NULL; + } + return temp_a0; +} + +void func_8432CBF8(unk_D_86002F58_004_000* arg0) { + s32 i; + + for (i = 0; i < 16; i++) { + if (arg0 == &D_843903D0[i]) { + break; + } + } + + if (i != 16) { + D_84391A50[i] = 0; + func_8001BCF0(arg0); + } +} + +unk_D_86002F58_004_000* func_8432CC54(unk_D_8140E720* arg0) { + s32 i; + s32 var_a2 = -1; + unk_D_86002F58_004_000* sp1C; + + for (i = 0; i < 4; i++) { + if (D_84392030[i] == 0) { + var_a2 = i; + break; + } + } + + if (var_a2 >= 0) { + sp1C = &D_84391A90[var_a2]; + D_84392030[var_a2] = 1; + func_814082B4(arg0, 0x400); + sp1C->unk_000.unk_14 = arg0; + } else { + sp1C = NULL; + } + return sp1C; +} + +void func_8432CD14(unk_D_86002F58_004_000* arg0) { + s32 i; + + for (i = 0; i < 4; i++) { + if (arg0 == &D_84391A90[i]) { + break; + } + } + + if (i != 4) { + D_84392030[i] = 0; + func_8001BCF0(arg0); + } +} + +void func_8432CD70(unk_D_86002F58_004_000* arg0, s16 arg1, s16 arg2) { + func_8001BC34(arg0, 0, 0, D_843920C0[arg1]); + func_800173DC(arg0, 0, D_843920C0[arg2], 0x10000); +} + +void func_8432CDD8(unk_D_86002F58_004_000* arg0, s16 arg1) { + func_80017464(arg0, arg1); +} + +void func_8432CE00(unk_D_86002F58_004_000* arg0, s16 arg1) { + func_8001BC34(arg0, 0, 0, D_843920C0[arg1]); +} + +void func_8432CE3C(unk_D_86002F58_004_000* arg0, s16 arg1) { + func_800173DC(arg0, 0, D_843920C0[arg1], 0x10000); +} + +void func_8432CE78(unk_D_86002F58_004_000* arg0, s16 arg1) { + func_800173DC(arg0, 0, D_843920C0[arg1], -0x10000); + func_80017464(arg0, arg0->unk_040.unk_04->unk_0A - 1); +} + +s32 func_8432CED4(unk_D_86002F58_004_000* arg0) { + s32 ret = 0; + + if (arg0->unk_040.unk_08 == 0) { + ret = 1; + } + return ret; +} + +void func_8432CEF0(UNUSED unk_D_86002F34_00C* arg0) { + s32 i; + + for (i = 0; i < 8; i++) { + if ((D_84390300[i] != NULL) && (D_84390300[i]() != 0)) { + D_84390300[i] = NULL; + D_84390320[i] = 0; + } + } +} + +void func_8432CF74(UNUSED unk_D_86002F34_00C* arg0) { + s32 i; + + for (i = 0; i < 8; i++) { + if (D_84390320[i] != NULL) { + D_84390320[i](); + } + } +} + +void func_8432CFCC(unk_D_86002F34_00C* arg0) { + D_8140E628.unk_0C = arg0; + D_8140E6B4 = &D_8140E628.unk_10; + + func_8000ED4C(&D_8140E6B4->unk_00, &arg0->unk_60.mtxf); + func_81400930(&D_8140E6B4->unk_40, &arg0->unk_60.eye); + func_81400930(&D_8140E6B4->unk_4C, &arg0->unk_60.at); + func_8432D468(&D_8140E6B4->unk_70, &D_8140E6B4->unk_72); + func_8432D398(&D_8140E6B4->unk_76, &D_8140E6B4->unk_78); + func_81400F44(&D_8140E6B4->unk_58, D_8140E6B4->unk_40, D_8140E6B4->unk_4C); + func_81400F44(&D_8140E6B4->unk_64, D_8140E6B4->unk_4C, D_8140E6B4->unk_40); +} + +s32 func_8432D0D8(s32 arg0, unk_D_86002F34_00C* arg1) { + switch (arg0) { + case 1: + case 3: + case 4: + break; + + case 0: + func_8432D150(); + break; + + case 2: + func_8432CFCC(arg1); + func_8432C4CC(arg1); + func_8432CEF0(arg1); + break; + + case 5: + func_843590E0(arg1); + break; + } + + return 0; +} + +void func_8432D150(void) { + func_8432D5B0(); + func_8432D178(); +} + +void func_8432D178(void) { + s32 i; + + D_843902E8 = NULL; + D_843902BC = 0; + D_8140E628.unk_00.x = 1.0f; + D_8140E628.unk_00.y = 1.0f; + D_8140E628.unk_00.z = 1.0f; + D_843902F4 = 0; + D_84392040.unk_0C = 1.0f; + D_84392040.unk_10 = 1.0f; + D_843902FC = 0; + + for (i = 0; i < 8; i++) { + D_84390300[i] = NULL; + D_84390320[i] = NULL; + } + + D_8439037A = 0xFF; + D_8439037C = 0xFF; + D_8439037E = 0xFF; + D_84390388 = 0xFF; + D_84390382 = 0xFF; + D_84390384 = 0xFF; + D_84390386 = 0xFF; + D_8439038A = 0xFF; + D_8439038C = 0xFF; + D_8439038E = 0x64; + D_84390392 = 0; + D_84390394 = 0; + D_84390396 = 0; + D_84390344 = 1.0f; + + func_8000E88C(&D_84390360, 0.0f, 0.0f, 0.0f); + func_8000EB70(&D_8439036C, 0, 0, 0); + func_8000EB70(&D_84390374, 0, 0, 0); + func_8000E88C(&D_84390348, 0.0f, 0.0f, 0.0f); + func_8000EB70(&D_84390354, 0, 0, 0); + func_8432C86C(); + func_8432CAD0(); + D_843903B0 = 0; + D_843903B4 = 0; + func_8432E9AC(); +} + +void func_8432D340(Vec3f* arg0, f32 arg1) { + arg0->x = D_8140E6B4->unk_40.x + (arg1 * D_8140E6B4->unk_58.x); + arg0->y = D_8140E6B4->unk_40.y + (arg1 * D_8140E6B4->unk_58.y); + arg0->z = D_8140E6B4->unk_40.z + (arg1 * D_8140E6B4->unk_58.z); +} + +void func_8432D398(s16* arg0, s16* arg1) { + unk_D_86002F34_00C* temp_v0 = func_8432FD64(); + f32 sp20 = temp_v0->unk_60.eye.x - temp_v0->unk_60.at.x; + f32 sp1C = temp_v0->unk_60.eye.y - temp_v0->unk_60.at.y; + f32 sp18 = temp_v0->unk_60.eye.z - temp_v0->unk_60.at.z; + + *arg0 = MathUtil_Atan2s(sqrtf(SQ(sp20) + SQ(sp18)), sp1C); + *arg1 = MathUtil_Atan2s(sp18, sp20); +} + +void func_8432D424(s16* arg0) { + unk_D_86002F34_00C* temp_v0 = func_8432FD64(); + f32 x = temp_v0->unk_60.eye.x - temp_v0->unk_60.at.x; + f32 z = temp_v0->unk_60.eye.z - temp_v0->unk_60.at.z; + + *arg0 = MathUtil_Atan2s(z, x); +} + +void func_8432D468(s16* arg0, s16* arg1) { + unk_D_86002F34_00C* temp_v0 = func_8432FD64(); + f32 sp20 = temp_v0->unk_60.at.x - temp_v0->unk_60.eye.x; + f32 sp1C = temp_v0->unk_60.at.y - temp_v0->unk_60.eye.y; + f32 sp18 = temp_v0->unk_60.at.z - temp_v0->unk_60.eye.z; + + *arg0 = MathUtil_Atan2s(sqrtf(SQ(sp20) + SQ(sp18)), sp1C); + *arg1 = MathUtil_Atan2s(sp18, sp20); +} + +void func_8432D4F4(s16* arg0) { + unk_D_86002F34_00C* temp_v0 = func_8432FD64(); + f32 x = temp_v0->unk_60.at.x - temp_v0->unk_60.eye.x; + f32 z = temp_v0->unk_60.at.z - temp_v0->unk_60.eye.z; + + *arg0 = MathUtil_Atan2s(z, x); +} + +void func_8432D538(s16* arg0, s16* arg1) { + *arg0 = D_8140E6B4->unk_76; + *arg1 = D_8140E6B4->unk_78; +} + +void func_8432D55C(s16* arg0) { + *arg0 = D_8140E6B4->unk_78; +} + +void func_8432D570(s16* arg0, s16* arg1) { + *arg0 = D_8140E6B4->unk_70; + *arg1 = D_8140E6B4->unk_72; +} + +void func_8432D594(s16* arg0) { + *arg0 = D_8140E6B4->unk_72; +} diff --git a/src/fragments/62/fragment62_317E70.c b/src/fragments/62/fragment62_317E70.c index 7d6cabd..bbe5a52 100644 --- a/src/fragments/62/fragment62_317E70.c +++ b/src/fragments/62/fragment62_317E70.c @@ -1,193 +1,958 @@ -#include "global.h" +#include "fragment62.h" +#include "src/12D80.h" +#include "src/1C720.h" +#include "src/F420.h" +#include "src/fragments/34/fragment34.h" +#include "src/memory.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432D5B0.s") +void func_8432D5B0(void) { + D_8140E724 = main_pool_alloc(sizeof(*D_8140E724) * 300, 0); + D_8140E720 = main_pool_alloc(sizeof(*D_8140E720) * 300, 0); + bzero(D_8140E724, sizeof(*D_8140E724) * 300); + bzero(D_8140E720, sizeof(*D_8140E720) * 300); + D_8140E730 = 0; + D_8140E72C = 0; +} +#ifdef NON_MATCHING +unk_D_8140E724* func_8432D61C(void) { + s32 i; + s32 var_v0 = D_8140E730; + unk_D_8140E724* var_v1 = &D_8140E724[var_v0]; + + for (i = 0; i < 300; i++) { + if (var_v1->unk_15 == 0) { + break; + } + + var_v0++; + + if (var_v0 >= 300) { + var_v0 = 0; + var_v1 = &D_8140E724[0]; + } else { + var_v1++; + } + } + + if (i >= 300) { + return -1; + } + + var_v1->unk_15 = 1; + + D_8140E730 = var_v0 + 1; + if (D_8140E730 >= 300) { + D_8140E730 = 0; + } + return var_v1; +} +#else #pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432D61C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432D6B0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432D6C8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432D76C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432D844.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432D8E8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432D9BC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432DA64.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432DAB8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432DAEC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432DE0C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432E0A4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432E144.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432E184.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432E200.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432E30C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432E434.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432E454.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432E474.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432E4B0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432E5A4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432E68C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432E6B4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432E784.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432E8B0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432E8BC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432E8EC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432E97C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432E99C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432E9AC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432E9B8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432E9D8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432EA60.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432EB14.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432EB20.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432EB2C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432EB44.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432EB64.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432EC28.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432ECA0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432ED0C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432ED74.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432EDE8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432EE5C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432EED0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432EF40.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432EFB4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432F028.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432F098.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432F104.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432F174.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432F1E0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432F254.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432F2C8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432F344.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432F3C4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432F440.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432F4BC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432F538.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432F5B8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432F638.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432F6B8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432F728.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432F7A0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432F818.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432F884.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432F8E8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432F93C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432F9A8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432F9B4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432F9C0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432F9CC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432FA0C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432FA30.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432FA54.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432FB38.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432FB64.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432FB90.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432FBBC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432FC14.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432FC40.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432FC60.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432FC94.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432FCB4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432FCD4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432FCF8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432FD1C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432FD40.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432FD64.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432FD70.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432FDF0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432FE24.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432FE44.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432FEC4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_317E70/func_8432FEEC.s") +#endif + +void func_8432D6B0(unk_D_8140E724* arg0) { + arg0->unk_0E = 0; + arg0->unk_15 = 0; + arg0->unk_14 = 0; + arg0->unk_0C = arg0->unk_0E; +} + +void func_8432D6C8(unk_D_8140E720* arg0, Vec3f arg1, Vec3s arg2, s32 arg3, s32 arg4) { + while (arg0 != NULL) { + func_81400930(&arg0->unk_68, &arg1); + func_8140094C(&arg0->unk_94, &arg2); + arg0->unk_08 = arg3; + arg0->unk_0C = arg4; + arg0->unk_10 = 0; + arg0->unk_14 = 0; + arg0->unk_CD = 0xFF; + + arg0 = arg0->next; + } +} + +void func_8432D76C(unk_D_8140E720* arg0, unk_D_8140E720* arg1, func_unk_D_8140E724_008 arg2, unk_D_8140E728_01C* arg3, + s32 arg4) { + arg0->unk_08 = arg2; + arg0->unk_0C = arg3; + arg0->unk_10 = arg1->unk_10; + arg0->unk_CF = arg1->unk_CF; + arg0->unk_CA = arg1->unk_CA; + arg0->unk_CC = 0x1C; + arg0->unk_CD = 0xFF; + arg0->unk_CE = arg1->unk_CE; + arg0->unk_CB = arg1->unk_CB; + arg0->unk_74 = arg1->unk_74; + + func_8140BED8(arg0, arg4); + + func_81400930(&arg0->unk_38, &arg1->unk_38); + func_81400930(&arg0->unk_50, &arg1->unk_50); + func_81400930(&arg0->unk_68, &arg1->unk_68); + func_81400930(&arg0->unk_7C, &arg1->unk_7C); + func_8140094C(&arg0->unk_94, &arg1->unk_94); + func_8140094C(&arg0->unk_9A, &arg1->unk_9A); + + if (arg1->unk_CA == 4) { + arg0->unk_CA = 0; + } +} + +void func_8432D844(unk_D_8140E720* arg0, func_unk_D_8140E724_008 arg1, unk_D_8140E728_01C* arg2, s16 arg3) { + s16 i; + unk_D_8140E720* temp_v0; + + for (i = 0; i < arg3; i++) { + temp_v0 = func_81407B3C(); + if ((u32)temp_v0 == -1) { + break; + } + func_8432D76C(temp_v0, arg0, arg1, arg2, i); + } +} + +void func_8432D8E8(unk_D_8140E720* arg0, func_unk_D_8140E724_008 arg1, unk_D_8140E728_01C* arg2, s16 arg3, s16 arg4, + s16 arg5) { + s16 i; + unk_D_8140E720* temp_v0; + + for (i = 0; i < arg3; i++) { + temp_v0 = func_81407B3C(); + if ((u32)temp_v0 == -1) { + break; + } + func_8432D76C(temp_v0, arg0, arg1, arg2, i); + temp_v0->unk_CE = arg5; + temp_v0->unk_CF = arg4; + } +} + +unk_D_8140E720* func_8432D9BC(s16 arg0, s16 arg1, s32 arg2, f32 arg3) { + unk_D_8140E720* temp_v0 = func_81407B3C(); + + if ((u32)temp_v0 != -1) { + func_8000E88C(&temp_v0->unk_38, arg0, arg1, 0.0f); + func_81408AF0(temp_v0); + func_8000EB70(&temp_v0->unk_94, arg2, arg2, arg2); + temp_v0->unk_1C = arg3; + func_814082B4(temp_v0, 0x108); + } + return temp_v0; +} + +void func_8432DA64(unk_D_8140E720* arg0) { + if (arg0->unk_14 != NULL) { + if (func_814082E8(arg0, 0x400) != 0) { + func_8432CD14(arg0->unk_14); + } else { + func_8432CBF8(arg0->unk_14); + } + } +} + +void func_8432DAB8(unk_D_8140E720* arg0) { + func_8432DA64(arg0); + arg0->unk_18 = 0; + func_81408158(arg0); + func_81407B04(arg0); +} + +void func_8432DAEC(unk_D_8140E720* arg0) { + Vec3f sp3C; + Vec3f sp30; + Vec3s sp28; + + switch (arg0->unk_CC) { + case 0: + func_843081D4(arg0->unk_10, &arg0->unk_68); + break; + + case 1: + func_843081F0(arg0->unk_10, &arg0->unk_68); + break; + + case 27: + func_843081F0(arg0->unk_10, &arg0->unk_68); + arg0->unk_68.y = 0.0f; + break; + + case 9: + func_8432FA54(arg0->unk_10, 0x64, &arg0->unk_68); + break; + + case 10: + func_8432FA54(arg0->unk_10, 0x64, &arg0->unk_68); + arg0->unk_68.y = 0.0f; + break; + + case 11: + func_8432FA54(arg0->unk_10, 0x64, &arg0->unk_68); + func_84308148(arg0->unk_10, &sp28); + func_84308094(arg0->unk_10, &sp30); + func_81400D6C(&sp3C, sp30.x * 25.0f, sp28.y); + func_81400968(&arg0->unk_68, &sp3C); + break; + + case 12: + func_8432FA54(arg0->unk_10, 0x64, &arg0->unk_68); + func_84308148(arg0->unk_10, &sp28); + func_84308094(arg0->unk_10, &sp30); + func_81400D6C(&sp3C, sp30.x * 25.0f, sp28.y + 0x8000); + func_81400968(&arg0->unk_68, &sp3C); + break; + + case 13: + func_8432FA54(arg0->unk_10, 0x64, &arg0->unk_68); + func_84308094(arg0->unk_10, &sp30); + arg0->unk_68.y += sp30.y * 25.0f; + break; + + case 14: + func_8432FA54(arg0->unk_10, 0x64, &arg0->unk_68); + func_84308094(arg0->unk_10, &sp30); + arg0->unk_68.y -= sp30.y * 25.0f; + if (arg0->unk_68.y <= 0.0f) { + arg0->unk_68.y = 0.0f; + } + break; + + case 15: + func_8432FA54(arg0->unk_10, 0x64, &arg0->unk_68); + func_84308148(arg0->unk_10, &sp28); + func_84308094(arg0->unk_10, &sp30); + func_81400D6C(&sp3C, sp30.x * 25.0f, sp28.y); + func_81400968(&arg0->unk_68, &sp3C); + arg0->unk_68.y = 0.0f; + break; + + case 17: + func_8432FA54(arg0->unk_10, arg0->unk_CD, &arg0->unk_68); + break; + + case 19: + func_8432FA54(arg0->unk_10, arg0->unk_CD, &arg0->unk_68); + func_84308148(arg0->unk_10, &sp28); + func_84308094(arg0->unk_10, &sp30); + func_81400D6C(&sp3C, sp30.x * 25.0f, sp28.y); + func_81400968(&arg0->unk_68, &sp3C); + break; + + case 30: + func_84308520(arg0->unk_10, &arg0->unk_68); + break; + } +} + +void func_8432DE0C(unk_D_8140E720* arg0) { + Vec3f sp3C; + Vec3f sp30; + Vec3s sp28; + + switch (arg0->unk_CC) { + case 2: + func_8432FA54(arg0->unk_10, 0x64, &arg0->unk_68); + break; + + case 3: + func_8432FA54(arg0->unk_10, 0x64, &arg0->unk_68); + arg0->unk_68.y = 0.0f; + break; + + case 4: + func_8432FA54(arg0->unk_10, 0x64, &arg0->unk_68); + func_84308148(arg0->unk_10, &sp28); + func_84308094(arg0->unk_10, &sp30); + func_81400D6C(&sp3C, sp30.x * 25.0f, sp28.y); + func_81400968(&arg0->unk_68, &sp3C); + break; + + case 5: + func_8432FA54(arg0->unk_10, 0x64, &arg0->unk_68); + func_84308148(arg0->unk_10, &sp28); + func_84308094(arg0->unk_10, &sp30); + func_81400D6C(&sp3C, sp30.x * 25.0f, sp28.y + 0x8000); + func_81400968(&arg0->unk_68, &sp3C); + break; + + case 6: + func_8432FA54(arg0->unk_10, 0x64, &arg0->unk_68); + func_84308094(arg0->unk_10, &sp30); + arg0->unk_68.y += sp30.y * 25.0f; + break; + + case 7: + func_8432FA54(arg0->unk_10, 0x64, &arg0->unk_68); + func_84308094(arg0->unk_10, &sp30); + arg0->unk_68.y -= sp30.y * 25.0f; + if (arg0->unk_68.y <= 0.0f) { + arg0->unk_68.y = 0.0f; + } + break; + + case 8: + func_8432FA54(arg0->unk_10, 0x64, &arg0->unk_68); + func_84308148(arg0->unk_10, &sp28); + func_84308094(arg0->unk_10, &sp30); + func_81400D6C(&sp3C, sp30.x * 25.0f, sp28.y); + func_81400968(&arg0->unk_68, &sp3C); + arg0->unk_68.y = 0.0f; + break; + + case 16: + func_8432FA54(arg0->unk_10, arg0->unk_CD, &arg0->unk_68); + break; + + case 18: + func_8432FA54(arg0->unk_10, arg0->unk_CD, &arg0->unk_68); + break; + + case 29: + func_84308520(arg0->unk_10, &arg0->unk_68); + break; + } +} + +void func_8432E0A4(unk_D_8140E720* arg0) { + if ((arg0->unk_10 == NULL) || (func_814082E8(arg0, 0x108) != 0)) { + D_8140E628.unk_00.x = 1.0f; + D_8140E628.unk_00.y = 1.0f; + D_8140E628.unk_00.z = 1.0f; + } else if (func_81408308(arg0, 0x800) != 0) { + D_8140E628.unk_00.x = func_8432FC94(arg0->unk_10); + D_8140E628.unk_00.y = func_8432FC94(arg0->unk_10); + D_8140E628.unk_00.z = func_8432FC94(arg0->unk_10); + } +} + +void func_8432E144(unk_D_8140E720* arg0) { + if (func_81408180(arg0) != 0) { + func_8432DAB8(arg0); + } else { + func_81408AF0(arg0); + } +} + +void func_8432E184(void) { + s32 i; + unk_D_8140E720* var_s0 = D_8140E720; + + for (i = 0; i < 300; i++, var_s0++) { + if (var_s0->unk_D0 != 0) { + func_8432DE0C(var_s0); + func_8432E0A4(var_s0); + var_s0->unk_08(var_s0); + func_8432E144(var_s0); + } + } +} + +void func_8432E200(unk_D_8140E720* arg0, unk_D_84390010* arg1, unk_D_8140E724* arg2, s16 arg3) { + if ((u32)arg0 == -1) { + return; + } + + if (1) {} + if (1) {} + if (1) {} + if (1) {} + if (1) {} + if (1) {} + + while (arg0 != NULL) { + arg0->unk_10 = arg1; + arg0->unk_AC = arg3++; + arg0->unk_08 = arg2->unk_00; + arg0->unk_0C = arg2->unk_04; + arg0->unk_CD = arg2->unk_19; + arg0->unk_CE = arg2->unk_1A; + arg0->unk_AA = arg2->unk_12; + arg0->unk_CF = arg2->unk_1B; + arg0->unk_CA = arg2->unk_17; + arg0->unk_CC = arg2->unk_16; + arg0->unk_CB = arg2->unk_18; + arg0->unk_A6 = arg2->unk_10; + + if (arg1 != NULL) { + func_8432DAEC(arg0); + func_84308148(arg0->unk_10, &arg0->unk_94); + } + + if ((arg2->unk_16 & 0xFFFFu) == 0x12) { + arg0->unk_A6 = arg2->unk_10 * arg3; + } + + arg0 = arg0->next; + } +} + +void func_8432E30C(unk_D_8140E724* arg0, s32 arg1) { + s16 i; + s16 var_s2; + unk_D_8140E728_01C* temp_a2 = arg0->unk_04; + unk_D_8140E728_01C_004_1* temp_a3 = arg0->unk_04->unk_04.a; + unk_D_84390010* tmp08 = arg0->unk_08; + s16 tmp12 = arg0->unk_12; + + switch (arg1) { + case 0: + var_s2 = tmp12; + break; + + case 1: + var_s2 = arg0->unk_10 / tmp12; + arg0->unk_10 = tmp12; + break; + } + + if ((temp_a2->unk_00 == 1) && (temp_a3->unk_00 == 1)) { + func_8432E200(func_81407B5C(var_s2), tmp08, arg0, 0); + return; + } + + for (i = 0; i < var_s2; i++) { + func_8432E200(func_81407B3C(), tmp08, arg0, i); + } +} + +void func_8432E434(unk_D_8140E724* arg0) { + func_8432E30C(arg0, 0); +} + +void func_8432E454(unk_D_8140E724* arg0) { + func_8432E30C(arg0, 1); +} + +void func_8432E474(unk_D_8140E724* arg0) { + UNUSED s32 pad; + unk_D_84390010* sp18 = arg0->unk_08; + + func_8432E200(func_81407B3C(), sp18, arg0, 0); +} + +void func_8432E4B0(unk_D_8140E724* arg0) { + switch (arg0->unk_16) { + case 18: + func_8432E454(arg0); + break; + + case 22: + func_8432E200(func_8432D9BC(0xA0, 0x78, 0, 1.0f), 0, arg0, 0); + break; + + case 24: + func_8432E200(func_8432D9BC(0, 0, 0, 1.0f), 0, arg0, 0); + break; + + case 23: + func_8432F9A8(arg0->unk_19); + break; + + case 25: + func_8432C768(arg0->unk_19); + break; + + case 26: + func_8432E474(arg0); + break; + + default: + func_8432E434(arg0); + break; + } +} + +void func_8432E5A4(void) { + s32 i; + unk_D_8140E724* var_s0 = D_8140E724; + + for (i = 0; i < 300; i++, var_s0++) { + if (var_s0->unk_15 != 0) { + var_s0->unk_0E--; + if (var_s0->unk_0E <= 0) { + if (var_s0->unk_14 >= 0) { + func_8432E4B0(var_s0); + if (var_s0->unk_14 != 0x7F) { + var_s0->unk_14--; + } + + if (var_s0->unk_14 <= 0) { + func_8432D6B0(var_s0); + } else { + var_s0->unk_0E = var_s0->unk_0C; + } + } else if (var_s0->unk_14 == -1) { + var_s0->unk_0E = var_s0->unk_0C; + func_8432E4B0(var_s0); + } + } + } + } +} + +void func_8432E68C(void) { + func_8432E5A4(); + func_8432E184(); +} + +void func_8432E6B4(void) { + s32 i; + unk_D_8140E724* var_s0 = D_8140E724; + unk_D_8140E720* var_s2 = D_8140E720; + + func_8432EB14(); + + for (i = 0; i < 300; i++, var_s0++) { + if (var_s0->unk_15 != 0) { + if ((var_s0->unk_17 != 4) && (var_s0->unk_17 != 7)) { + func_8432D6B0(var_s0); + } + } + } + + for (i = 0; i < 300; i++, var_s2++) { + if (var_s2->unk_D0 != 0) { + if ((var_s2->unk_CA != 4) && (var_s2->unk_CA != 7)) { + func_8432DAB8(var_s2); + } + } + } +} + +void func_8432E784(void) { + s32 i; + unk_D_8140E724* var_s0 = D_8140E724; + unk_D_8140E720* var_s2 = D_8140E720; + + for (i = 0; i < 300; i++, var_s0++) { + if ((var_s0->unk_15 != 0) && (var_s0->unk_17 != 4)) { + func_8432D6B0(var_s0); + } + } + + for (i = 0; i < 300; i++, var_s2++) { + if ((var_s2->unk_D0 != 0) && (var_s2->unk_CA != 4)) { + func_8432DAB8(var_s2); + } + } + + func_8001BE34(&D_84390010[0]->unk_000, 0xFF, 0xFF, 0xFF, 0); + func_8001BE34(&D_84390010[1]->unk_000, 0xFF, 0xFF, 0xFF, 0); + func_8001BE78(&D_84390010[0]->unk_000, 0xFF); + func_8001BE78(&D_84390010[1]->unk_000, 0xFF); + + D_8439037E = 0xFF; + D_8439037C = D_8439037E; + D_8439037A = D_8439037C; +} + +s32 func_8432E8B0(void) { + return D_84390340; +} + +void func_8432E8BC(void) { + if (D_843C4DA4 != 0) { + D_84390340 = 1; + } else { + D_84390340 = 0; + } +} + +void func_8432E8EC(void) { + s32 i; + + for (i = 0; i < 8; i++) { + if (D_84390300[i] != NULL) { + D_84390300[i] = NULL; + D_84390320[i] = NULL; + } + } + + D_84390340 = 0; +} + +s32 func_8432E97C(void) { + s32 var_v1 = 0; + + if (D_843902F8 == 0) { + var_v1 = 1; + } + return var_v1; +} + +void func_8432E99C(void) { + D_843902F8 = 1; +} + +void func_8432E9AC(void) { + D_843902F8 = 0; +} + +void func_8432E9B8(void) { + func_8432E99C(); +} + +void func_8432E9D8(s32 arg0) { + func_8432EB14(); + switch (arg0) { + case 1: + func_8432E6B4(); + if (func_8432E97C() != 0) { + func_8432E8EC(); + } + break; + + case 2: + func_8432E784(); + func_8432E8EC(); + func_8432E9AC(); + func_84359380(); + break; + } +} + +void func_8432EA60(u8 arg0, unk_D_84390010* arg1) { + s32 i; + unk_D_8140E720* var_s0 = D_8140E720; + + for (i = 0; i < 300; i++, var_s0++) { + if ((var_s0->unk_D0 != 0) && (var_s0->unk_CA == 4) && (var_s0->unk_CB == arg0) && (arg1 == var_s0->unk_10)) { + func_814082B4(var_s0, 0x1000); + func_814081BC(var_s0); + } + } +} + +void func_8432EB14(void) { + D_843902A8 = 0; +} + +void func_8432EB20(s32 arg0) { + D_843902A8 = arg0; +} + +void func_8432EB2C(s32 arg0) { + D_843902A8 += arg0; +} + +void func_8432EB44(void) { + func_8432EB14(); +} + +unk_D_8140E724* func_8432EB64(s32 arg0, s32 arg1, s8 arg2, func_unk_D_8140E724 arg3, unk_D_8140E728_01C* arg4, + unk_D_84390010* arg5, s16 arg6, s16 arg7, u8 arg8, u8 arg9, u8 argA, u8 argB) { + unk_D_8140E724* sp1C = func_8432D61C(); + + if ((u32)sp1C != -1) { + sp1C->unk_0E = arg0 + D_843902A8; + sp1C->unk_0C = arg1; + sp1C->unk_14 = arg2; + sp1C->unk_00 = arg3; + sp1C->unk_04 = arg4; + sp1C->unk_08 = arg5; + sp1C->unk_16 = arg8; + sp1C->unk_10 = arg6; + sp1C->unk_12 = arg7; + sp1C->unk_19 = arg9; + sp1C->unk_1A = argB; + sp1C->unk_1B = argA; + sp1C->unk_17 = func_8432C518(); + sp1C->unk_18 = func_8432C538(); + } + return sp1C; +} + +unk_D_8140E724* func_8432EC28(s32 arg0, func_unk_D_8140E724 arg1, unk_D_8140E728_01C* arg2, s16 arg3, s16 arg4, u8 arg5, + u8 arg6, u8 arg7, u8 arg8) { + return func_8432EB64(arg0, 0, 1, arg1, arg2, D_843902E8, arg3, arg4, arg5, arg6, arg7, arg8); +} + +unk_D_8140E724* func_8432ECA0(s32 arg0, s32 arg1, s8 arg2, func_unk_D_8140E724 arg3, unk_D_8140E728_01C* arg4, s16 arg5, + s16 arg6, u8 arg7, u8 arg8, u8 arg9, u8 argA) { + return func_8432EB64(arg0, arg1, arg2, arg3, arg4, D_843902E8, arg5, arg6, arg7, arg8, arg9, argA); +} + +unk_D_8140E724* func_8432ED0C(s32 arg0, s16 arg1, u8 arg2) { + return func_8432EB64(arg0, 0, 1, func_84331DC8, &D_8140E460, NULL, 0, arg1, 0x16, 0, arg2, 0); +} + +unk_D_8140E724* func_8432ED74(s32 arg0, s16 arg1, s16 arg2, u8 arg3, u8 arg4) { + return func_8432EB64(arg0, 0, 1, func_84332CD0, &D_843861D0[37], NULL, arg1, arg2, 0x16, arg4, arg3, 0); +} + +unk_D_8140E724* func_8432EDE8(s32 arg0, s16 arg1, s16 arg2, u8 arg3) { + return func_8432EB64(arg0, 0, 1, func_84332DB0, &D_843861D0[37], NULL, arg1, arg2, 0x16, 0xFF, arg3, 0); +} + +unk_D_8140E724* func_8432EE5C(s32 arg0, s16 arg1, s16 arg2, u8 arg3, u8 arg4) { + return func_8432EB64(arg0, 0, 1, func_84332DB0, &D_843861D0[37], NULL, arg1, arg2, 0x16, arg4, arg3, 0); +} + +unk_D_8140E724* func_8432EED0(s32 arg0, s32 arg1, s8 arg2, s16 arg3, s16 arg4, u8 arg5, u8 arg6) { + return func_8432EB64(arg0, arg1, arg2, func_84332DB0, &D_843861D0[37], NULL, arg3, arg4, 0x16, arg6, arg5, 0); +} + +unk_D_8140E724* func_8432EF40(s32 arg0, s16 arg1, s16 arg2, u8 arg3) { + return func_8432EB64(arg0, 0, 1, func_84332E6C, &D_843861D0[37], NULL, arg1, arg2, 0x16, 0xFF, arg3, 0); +} + +unk_D_8140E724* func_8432EFB4(s32 arg0, s16 arg1, s16 arg2, u8 arg3, u8 arg4) { + return func_8432EB64(arg0, 0, 1, func_84332E6C, &D_843861D0[37], NULL, arg1, arg2, 0x16, arg4, arg3, 0); +} + +unk_D_8140E724* func_8432F028(s32 arg0, s32 arg1, s8 arg2, s16 arg3, s16 arg4, u8 arg5, u8 arg6) { + return func_8432EB64(arg0, arg1, arg2, func_84332E6C, &D_843861D0[37], NULL, arg3, arg4, 0x16, arg6, arg5, 0); +} + +unk_D_8140E724* func_8432F098(s32 arg0, s16 arg1, u8 arg2) { + return func_8432EB64(arg0, 0, 1, func_84332F30, &D_843861D0[37], NULL, arg1, 0, 0x16, 0xFF, arg2, 0); +} + +unk_D_8140E724* func_8432F104(s32 arg0, s16 arg1, u8 arg2, u8 arg3) { + return func_8432EB64(arg0, 0, 1, func_84332F30, &D_843861D0[37], NULL, arg1, 0, 0x16, arg3, arg2, 0); +} + +unk_D_8140E724* func_8432F174(s32 arg0, s32 arg1, s8 arg2, s16 arg3, u8 arg4, u8 arg5) { + return func_8432EB64(arg0, arg1, arg2, func_84332F30, &D_843861D0[37], NULL, arg3, 0, 0x16, arg5, arg4, 0); +} + +unk_D_8140E724* func_8432F1E0(s32 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4) { + return func_8432EB64(arg0, 0, 1, func_84332FD0, &D_843861D0[37], NULL, arg1, arg2, 0x16, arg4, arg3, 0); +} + +unk_D_8140E724* func_8432F254(s32 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4) { + return func_8432EB64(arg0, 0, 1, func_843330A0, &D_843861D0[37], NULL, arg1, arg2, 0x16, arg4, arg3, 0); +} + +unk_D_8140E724* func_8432F2C8(s32 arg0, u8 arg1, s16 arg2, s16 arg3, s16 arg4) { + return func_8432EB64(arg0, 0, 1, func_84331EAC, &D_8140E460, D_843902E8, arg2, arg4, 0x1A, arg3, arg1, 0); +} + +unk_D_8140E724* func_8432F344(s32 arg0, s16 arg1, u8 arg2, s16 arg3, s16 arg4, s16 arg5) { + return func_8432EB64(arg0, 0, 1, func_84331FAC, &D_8140E460, D_843902E8, arg1, arg5, 0x1A, arg4, arg2, arg3); +} + +unk_D_8140E724* func_8432F3C4(s32 arg0, s16 arg1, u8 arg2, s16 arg3, s16 arg4) { + return func_8432EB64(arg0, 0, 1, func_843320A4, &D_8140E460, D_843902E8, arg1, arg4, 0x1A, 0, arg2, arg3); +} + +unk_D_8140E724* func_8432F440(s32 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4) { + return func_8432EB64(arg0, 0, 1, func_843321BC, &D_8140E460, D_843902E8, arg4, arg3, 0x1A, arg2, arg1, 0); +} + +unk_D_8140E724* func_8432F4BC(s32 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4) { + return func_8432EB64(arg0, 0, 1, func_843321BC, &D_8140E460, D_843902E8, arg4, arg3, 0x1A, arg2, arg1, 0); +} + +unk_D_8140E724* func_8432F538(s32 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5) { + return func_8432EB64(arg0, 0, 1, func_843323BC, &D_8140E460, D_843902E8, arg4, arg3, 0x1A, arg2, arg1, arg5); +} + +unk_D_8140E724* func_8432F5B8(s32 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5) { + return func_8432EB64(arg0, 0, 1, func_843323BC, &D_8140E460, D_843902E8, arg4, arg3, 0x1A, arg2, arg1, arg5); +} + +unk_D_8140E724* func_8432F638(s32 arg0, s16 arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5) { + return func_8432EB64(arg0, 0, 1, func_84332604, &D_8140E460, D_843902E8, arg4, arg3, 0x1A, arg2, arg1, arg5); +} + +unk_D_8140E724* func_8432F6B8(s32 arg0, s16 arg1, u8 arg2) { + return func_8432EB64(arg0, 0, 1, func_843327B8, &D_8140E460, D_843902E8, 0, arg1, 0x1A, arg2, 0, 0); +} + +unk_D_8140E724* func_8432F728(s32 arg0, s16 arg1, s16 arg2, u8 arg3) { + return func_8432EB64(arg0, 0, 1, func_84332964, &D_8140E460, D_843902E8, arg1, arg2, 0x1A, arg3, 0, 0); +} + +unk_D_8140E724* func_8432F7A0(s32 arg0, s16 arg1, s16 arg2, s16 arg3) { + return func_8432EB64(arg0, 0, 1, func_84332AFC, &D_8140E460, D_843902E8, arg1, arg3, 0x1A, arg2, 0, 0); +} + +unk_D_8140E724* func_8432F818(s32 arg0) { + return func_8432EB64(arg0, 0, 1, func_84332AFC, &D_8140E460, D_843902E8, 0xFF, 0xFF, 0x1A, 0xFF, 0, 0); +} + +unk_D_8140E724* func_8432F884(s32 arg0) { + return func_8432EB64(arg0, 0, 1, func_84332AFC, &D_8140E460, D_843902E8, 0, 0xFF, 0x1A, 0, 0, 0); +} + +unk_D_8140E724* func_8432F8E8(s32 arg0, u8 arg1) { + return func_8432EB64(arg0, 0, 1, NULL, NULL, 0, 0, 0, 0x17, arg1, 0, 0); +} + +unk_D_8140E724* func_8432F93C(s32 arg0, u8 arg1) { + return func_8432EB64(arg0, 0, 1, NULL, NULL, D_843902E8, 0, 0, 0x19, arg1, 0, 0); +} + +void func_8432F998(void) { +} + +void func_8432F9A0(void) { +} + +void func_8432F9A8(s32 arg0) { + D_843902F4 = arg0; +} + +void func_8432F9B4(void) { + D_843902F4 = 0; +} + +s32 func_8432F9C0(void) { + return D_843902F4; +} + +s32 func_8432F9CC(s32 arg0) { + s32 sp1C = 0; + + if (func_843081BC(D_843902E8) == arg0) { + sp1C = 1; + } + return sp1C; +} + +s32 func_8432FA0C(void) { + return func_843081BC(D_843902EC); +} + +s32 func_8432FA30(void) { + return func_843081BC(D_843902F0); +} + +void func_8432FA54(unk_D_84390010* arg0, s16 arg1, Vec3f* arg2) { + s32 sp24 = 0; + + if (arg0 != NULL) { + if (arg1 == 0x64) { + if (func_80015390(&arg0->unk_000, 0xA, arg2) != NULL) { + sp24 = 1; + } else if (func_80015390(&arg0->unk_000, 0x64, arg2) != NULL) { + sp24 = 2; + } + } else { + if (func_80015390(&arg0->unk_000, arg1, arg2) == NULL) { + if (func_80015390(&arg0->unk_000, 0x64, arg2) != NULL) { + sp24 = 3; + } + } else { + sp24 = 4; + } + } + } + + if (sp24 == 0) { + arg2->x = 0.0f; + arg2->y = 0.0f; + arg2->z = 0.0f; + } +} + +void func_8432FB38(Vec3f* arg0) { + func_8432FA54(D_843902E8, 0x64, arg0); +} + +void func_8432FB64(Vec3f* arg0) { + func_8432FA54(D_843902EC, 0x64, arg0); +} + +void func_8432FB90(Vec3f* arg0) { + func_8432FA54(D_843902F0, 0x64, arg0); +} + +void func_8432FBBC(Vec3f* arg0) { + if (D_843902E4 == 0xFF) { + func_843081F0(D_843902EC, arg0); + } else { + func_8432FA54(D_843902EC, D_843902E2, arg0); + } +} + +void func_8432FC14(Vec3f* arg0) { + func_8432FA54(D_843902F0, 9, arg0); +} + +void func_8432FC40(unk_D_84390010* arg0, Vec3f* arg1) { + func_84308094(arg0, arg1); +} + +f32 func_8432FC60(unk_D_84390010* arg0) { + f32 ret = D_80075E40[arg0->unk_000.unk_01A] * 0.01f; + + return ret; +} + +f32 func_8432FC94(unk_D_84390010* arg0) { + return func_8432FC60(arg0); +} + +void func_8432FCB4(unk_D_84390010* arg0) { + func_8432FC60(arg0); +} + +f32 func_8432FCD4(void) { + return func_8432FC94(D_843902EC); +} + +void func_8432FCF8(void) { + func_8432FCB4(D_843902EC); +} + +f32 func_8432FD1C(void) { + return func_8432FC94(D_843902F0); +} + +void func_8432FD40(void) { + func_8432FCB4(D_843902F0); +} + +unk_D_86002F34_00C* func_8432FD64(void) { + return D_8140E628.unk_0C; +} + +unk_D_8140E720* func_8432FD70(Vec3f arg0, u8 arg1) { + unk_D_8140E720* sp1C = func_81407B3C(); + + if ((u32)sp1C != -1) { + func_81400930(&sp1C->unk_68, &arg0); + func_8433010C(sp1C, arg1); + sp1C->unk_10 = D_843902EC; + sp1C->unk_14 = NULL; + sp1C->unk_CD = 0xFF; + sp1C->unk_CC = 0x15; + sp1C->unk_CA = 0; + } + return sp1C; +} + +void func_8432FDF0(unk_D_8140E720* arg0, Vec3f arg1) { + if ((u32)arg0 != -1) { + arg0->unk_68.x = arg1.x; + arg0->unk_68.y = arg1.y; + arg0->unk_68.z = arg1.z; + } +} + +void func_8432FE24(unk_D_8140E720* arg0) { + func_81408150(arg0); +} + +s16 func_8432FE44(unk_D_8140E720* arg0) { + Vec3f sp24; + s16 ret; + + func_843081F0(D_843902F0, &sp24); + ret = func_814011E0(arg0->unk_68, sp24) + arg0->unk_94.y; + return ret; +} + +void func_8432FEC4(unk_D_8140E720* arg0) { + D_8439037A = arg0->prim_r; + D_8439037C = arg0->prim_g; + D_8439037E = arg0->prim_b; +} + +void func_8432FEEC(unk_D_8140E720* arg0) { + arg0->prim_r = D_8439037A; + arg0->prim_g = D_8439037C; + arg0->prim_b = D_8439037E; +} diff --git a/src/fragments/62/fragment62_31A7E0.c b/src/fragments/62/fragment62_31A7E0.c index b5ac246..a498d6e 100644 --- a/src/fragments/62/fragment62_31A7E0.c +++ b/src/fragments/62/fragment62_31A7E0.c @@ -1,11 +1,62 @@ -#include "global.h" +#include "fragment62.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31A7E0/func_8432FF20.s") +void func_8432FF20(unk_D_8140E720* arg0) { + func_8140B938(arg0, 0.1f); + func_8140BAC8(arg0, 0xFF, 0xFF, 0xFF); + func_8140BB74(arg0, 0x64, 0xC8, 0xFF); + func_8140BC20(arg0, 0xFF); + func_814081BC(arg0); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31A7E0/func_8432FF8C.s") +void func_8432FF8C(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8432FF20(arg0); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31A7E0/func_84330048.s") + case 2: + func_814084D8(arg0, 0, 7, 1, 2, 0); + func_8140BC2C(arg0, 0x20, 8); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31A7E0/func_843300B4.s") + case 3: + func_81408150(arg0); + break; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31A7E0/func_8433010C.s") + if (func_8140819C(arg0) != 0) { + func_8140B98C(arg0, 0.5f, 0.05f); + } +} + +void func_84330048(unk_D_8140E720* arg0) { + func_8140B938(arg0, 0.1f); + func_8140BAC8(arg0, 0xFF, 0xFF, 0xFF); + func_8140BB74(arg0, 0x64, 0xC8, 0xFF); + func_8140BC20(arg0, 0xFF); + func_814081BC(arg0); +} + +void func_843300B4(unk_D_8140E720* arg0) { + if (arg0->unk_B2 == 1) { + func_84330048(arg0); + } + + if (func_8140819C(arg0) != 0) { + func_8140B98C(arg0, 0.8f, 0.08f); + } +} + +void func_8433010C(unk_D_8140E720* arg0, u8 arg1) { + switch (arg1) { + case 1: + arg0->unk_08 = func_8432FF8C; + arg0->unk_0C = &D_843861D0[25]; + break; + + case 2: + arg0->unk_08 = func_843300B4; + arg0->unk_0C = &D_843861D0[22]; + break; + } +} diff --git a/src/fragments/62/fragment62_31AA30.c b/src/fragments/62/fragment62_31AA30.c index 800081b..257ce0a 100644 --- a/src/fragments/62/fragment62_31AA30.c +++ b/src/fragments/62/fragment62_31AA30.c @@ -1,63 +1,302 @@ -#include "global.h" +#include "fragment62.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330170.s") +s32 func_84330170(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) { + func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a); + func_8140213C(arg1, arg0->unk_2C, arg0->unk_1C); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330218.s") + gSPDisplayList(gDisplayListHead++, D_8140E418); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330300.s") +void func_84330218(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) { + func_81403F8C(D_843920C0[0x76] + (arg0->unk_C7 << 0xB), 0x20, 0x40); + func_814044FC(D_843920C0[0x77], 0x40, 0x40, 2, 1); + func_81406168(0, 0xA, 0x40, 0x40); + func_81405FAC(0x80, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->prim_a, arg0->env_r, arg0->env_g, arg0->env_b); + func_81404DB4(arg1, arg0->unk_2C, arg0->unk_1C, D_8140E1F8); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330344.s") +void func_84330300(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) { + gSPDisplayList(gDisplayListHead++, D_8140DCD8); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330388.s") + func_84330218(arg0, arg1); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_843304AC.s") +void func_84330344(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) { + gSPDisplayList(gDisplayListHead++, D_8140DD58); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330574.s") + func_84330218(arg0, arg1); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330688.s") +void func_84330388(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) { + func_8140213C(arg1, arg0->unk_2C, arg0->unk_1C); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_8433079C.s") + gSPDisplayList(gDisplayListHead++, D_8140DD58); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330934.s") + func_8140441C(D_843920C0[0x1F], 0x20, 0x40); + func_814060D4(0, 8, 0x20, 0x40); + func_81405E04(0xFF, 0xFF, 0xFF, arg0->prim_a, 0xFF, 0xFF, 0xFF, 0xFF); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330A18.s") + gDPSetRenderMode(gDisplayListHead++, G_RM_PASS, G_RM_AA_ZB_XLU_SURF2); + gSPDisplayList(gDisplayListHead++, D_843920C0[0x20]); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330AF0.s") +s32 func_843304AC(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) { + func_81401FC0(arg0->unk_2C, arg0->unk_94, arg0->unk_1C); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330B18.s") + gSPDisplayList(gDisplayListHead++, D_8140DBA8); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330B40.s") + func_81403AB8(D_843920C0[0xBC], 0x20, 0x20); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330C70.s") + gSPDisplayList(gDisplayListHead++, D_843920C0[0xBD]); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330D64.s") +void func_84330574(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) { + func_814015A0(arg0->unk_2C.x, arg0->unk_2C.y, arg0->unk_94.z, arg0->unk_1C); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330E58.s") + gSPDisplayList(gDisplayListHead++, D_8140DCD8); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84330F4C.s") + func_81405ED8(0x80, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->prim_a, arg0->env_r, arg0->env_g, arg0->env_b); + func_8140441C(D_843920C0[0x27], 0x40, 0x40); + func_814060D4(2, -2, 0x40, 0x40); + func_81404484(D_843920C0[0x28], 0x40, 0x40); + func_81406168(0, -1, 0x40, 0x40); + func_81404A6C(D_84385DC0); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84331094.s") +void func_84330688(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) { + func_814015A0(arg0->unk_2C.x, arg0->unk_2C.y, arg0->unk_94.z, arg0->unk_1C); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_843310A0.s") + gSPDisplayList(gDisplayListHead++, D_8140DCD8); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_843311D8.s") + func_81405ED8(0x80, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->prim_a, arg0->env_r, arg0->env_g, arg0->env_b); + func_8140441C(D_843920C0[0x27], 0x40, 0x40); + func_814060D4(1, -3, 0x40, 0x40); + func_81404484(D_843920C0[0x28], 0x40, 0x40); + func_81406168(-2, -2, 0x40, 0x40); + func_81404A6C(D_84385E00); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84331314.s") +void func_8433079C(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) { + func_814015A0(arg0->unk_2C.x, arg0->unk_2C.y, arg0->unk_94.z, arg0->unk_1C); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84331450.s") + gSPDisplayList(gDisplayListHead++, D_8140DCD8); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_8433157C.s") + func_81405ED8(0x80, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->prim_a, arg0->env_r, arg0->env_g, arg0->env_b); + func_81403754(D_843920C0[0x29], 0, 0, 4, 0x20, 0x20, 1, 1, 5, 5, 2, 0); + func_814060D4(1, 1, 0x20, 0x20); + func_81403754(D_843920C0[0x29], 0x100, 1, 4, 0x20, 0x20, 1, 1, 5, 5, 1, 0xF); + func_81406168(-1, 1, 0x20, 0x20); + func_81404A6C(D_8140E3B8); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_843316A8.s") +void func_84330934(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) { + func_814015A0(arg0->unk_2C.x, arg0->unk_2C.y, arg0->unk_94.z, arg0->unk_1C); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_843317D4.s") + gSPDisplayList(gDisplayListHead++, D_8140DCD8); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_843318F8.s") + func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a); + func_8140441C(D_843920C0[0x87], 0x20, 0x20); + func_814060D4(0, 2, 0x20, 0x20); + func_81404A6C(D_8140E3B8); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84331A1C.s") +void func_84330A18(unk_D_8140E720* arg0, u8* arg1) { + func_814015F8(arg0->unk_2C.x, arg0->unk_2C.y, arg0->unk_94.z, arg0->unk_1C); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84331B58.s") + gSPDisplayList(gDisplayListHead++, D_8140DCD8); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84331C34.s") + func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a); + func_81405660(arg1, D_84385C80, 0x40, 0x40, 0x40, 0x40); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31AA30/func_84331D60.s") +void func_84330AF0(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) { + func_84330A18(arg0, D_843920C0[0x19]); +} + +void func_84330B18(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) { + func_84330A18(arg0, D_843920C0[0x5E]); +} + +void func_84330B40(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) { + gSPDisplayList(gDisplayListHead++, D_8140DD58); + gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK); + + func_8140437C(D_843920C0[0x1A] + (arg0->unk_C7 << 9), 0x20, 0x20); + func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a); + func_81404ABC(arg0->unk_2C, arg0->unk_94, arg0->unk_1C, D_8140E018); + + gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); +} + +void func_84330C70(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) { + gSPDisplayList(gDisplayListHead++, D_8140DC00); + gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK); + + func_81403AB8(D_843920C0[0x1C], 0x20, 0x20); + func_81404ABC(arg0->unk_2C, arg0->unk_94, arg0->unk_1C, D_8140E018); + + gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); +} + +void func_84330D64(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) { + gSPDisplayList(gDisplayListHead++, D_8140DC00); + gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK); + + func_81403AB8(D_843920C0[0x1E], 0x20, 0x20); + func_81404ABC(arg0->unk_2C, arg0->unk_94, arg0->unk_1C, D_8140E018); + + gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); +} + +void func_84330E58(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) { + gSPDisplayList(gDisplayListHead++, D_8140DC00); + gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK); + + func_81403AB8(D_843920C0[0xC3], 0x20, 0x20); + func_81404ABC(arg0->unk_2C, arg0->unk_94, arg0->unk_1C, D_8140E018); + + gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); +} + +void func_84330F4C(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) { + Vec3s sp40; + + gSPDisplayList(gDisplayListHead++, D_8140DCD8); + gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK); + + func_8140437C(D_843920C0[0x1D], 0x20, 0x20); + func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a); + sp40.x = arg0->unk_94.x + 0x4000; + sp40.y = arg0->unk_94.y + 0x4000; + sp40.z = arg0->unk_94.z; + func_81404ABC(arg0->unk_2C, sp40, arg0->unk_1C, D_8140E018); + + gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); +} + +void func_84331094(UNUSED unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) { +} + +void func_843310A0(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) { + gSPDisplayList(gDisplayListHead++, D_8140DD58); + + func_8140437C(D_843920C0[0x13] + (D_8140E6C8 * 0x600), 0x20, 0x60); + func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a); + + gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK); + + func_81404B78(arg0->unk_2C, arg0->unk_94, arg0->unk_1C, D_84385CC0); + + gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); +} + +void func_843311D8(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) { + gSPDisplayList(gDisplayListHead++, D_8140DD58); + gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK); + + func_8140437C(D_843920C0[0x13] + (D_8140E6C8 * 0x600), 0x20, 0x60); + func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a); + func_81404B78(arg0->unk_2C, arg0->unk_94, arg0->unk_1C, D_84385D00); + + gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); +} + +void func_84331314(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) { + gSPDisplayList(gDisplayListHead++, D_8140DD58); + gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK); + + func_8140437C(D_843920C0[0x13] + (D_8140E6C8 * 0x600), 0x20, 0x60); + func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a); + func_81404B78(arg0->unk_2C, arg0->unk_94, arg0->unk_1C, D_84385D40); + + gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); +} + +void func_84331450(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) { + gSPDisplayList(gDisplayListHead++, D_8140DD58); + gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK); + + func_8140437C(D_843920C0[0x13] + (D_8140E6C8 * 0x600), 0x20, 0x60); + func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a); + func_81404F84(arg1, arg0->unk_2C, arg0->unk_1C, D_84385CC0, arg0->unk_94.z); + + gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); +} + +void func_8433157C(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) { + gSPDisplayList(gDisplayListHead++, D_8140DD58); + gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK); + + func_8140437C(D_843920C0[0x13] + (D_8140E6C8 * 0x600), 0x20, 0x60); + func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a); + func_81404F84(arg1, arg0->unk_2C, arg0->unk_1C, D_84385D00, arg0->unk_94.z); + + gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); +} + +void func_843316A8(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) { + gSPDisplayList(gDisplayListHead++, D_8140DD58); + gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK); + + func_8140437C(D_843920C0[0x13] + (D_8140E6C8 * 0x600), 0x20, 0x60); + func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a); + func_81404F84(arg1, arg0->unk_2C, arg0->unk_1C, D_84385D40, arg0->unk_94.z); + + gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); +} + +void func_843317D4(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) { + gSPDisplayList(gDisplayListHead++, D_8140DCD8); + gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK); + + func_8140437C(D_843920C0[0x1B], 0x10, 0x100); + func_81405C70(0xFF, 0xFF, 0xFF, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->prim_a); + func_81404CF8(arg0->unk_2C, arg0->unk_94, arg0->unk_1C, D_8140DF78); + + gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); +} + +void func_843318F8(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) { + gSPDisplayList(gDisplayListHead++, D_8140DCD8); + gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK); + + func_8140437C(D_843920C0[0x1B], 0x10, 0x100); + func_81405C70(0xFF, 0xFF, 0xFF, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->prim_a); + func_81404CF8(arg0->unk_2C, arg0->unk_94, arg0->unk_1C, D_8140DFA8); + + gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); +} + +void func_84331A1C(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) { + gSPDisplayList(gDisplayListHead++, D_8140DCD8); + gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK); + + func_8140437C(D_843920C0[0x13] + ((D_8140E6F0 & 7) * 0x600), 0x20, 0x60); + func_81405C70(0xFF, 0xFF, 0xFF, 0, 0x64, 0xC8, 0xFF); + func_81404ABC(arg0->unk_2C, arg0->unk_94, arg0->unk_1C, D_8140E238); + + gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); +} + +void func_84331B58(unk_D_8140E720* arg0, unk_D_86002F34_00C* arg1) { + gSPDisplayList(gDisplayListHead++, D_8140DD58); + + func_8140437C(D_843920C0[0x18] + (arg0->unk_C7 << 9), 0x20, 0x20); + func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a); + func_81404E4C(arg1, arg0->unk_2C, arg0->unk_1C, D_8140E018, arg0->unk_94.z); +} + +void func_84331C34(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) { + gSPDisplayList(gDisplayListHead++, D_8140DD58); + gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK); + + func_8140437C(D_843920C0[0xA9], 0x20, 0x20); + func_81405C70(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->env_r, arg0->env_g, arg0->env_b, arg0->prim_a); + func_81404C34(arg0->unk_2C, arg0->unk_94, arg0->unk_1C, arg0->unk_20, D_8140E098); + + gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); +} + +void func_84331D60(unk_D_8140E720* arg0, UNUSED unk_D_86002F34_00C* arg1) { + func_84359000(arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->prim_a); +} diff --git a/src/fragments/62/fragment62_31C660.c b/src/fragments/62/fragment62_31C660.c index c0eafdf..3e5a299 100644 --- a/src/fragments/62/fragment62_31C660.c +++ b/src/fragments/62/fragment62_31C660.c @@ -1,221 +1,554 @@ -#include "global.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84331DA0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84331DC8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84331E64.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84331EAC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84331F64.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84331FAC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843320A4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332174.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843321BC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_8433227C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843322C4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_8433237C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843323BC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843324A4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843324EC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843325C4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332604.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843326EC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843327B8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843328A8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332964.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332AD8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332AFC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332BA4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332BE4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332C90.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332CD0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332D68.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332DB0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332E2C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332E6C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332EE8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332F30.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332F90.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84332FD0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84333060.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843330A0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84333130.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84333210.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843332B4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843334DC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84333570.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84333600.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_8433378C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84333884.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84333928.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84333A20.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84333B04.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84333BA8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84333DC4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84333E28.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84333EE8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84333FBC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843340B8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84334154.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84334294.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84334350.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843343F8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843344A0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84334558.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843345A0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84334654.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843346BC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843347A4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84334808.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843348DC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84334994.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84334A78.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84334B0C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84334BAC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84334D7C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84334E4C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84334F84.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_8433507C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843351C8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843352AC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843353C4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843354E0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84335668.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_8433574C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84335848.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_8433595C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84335A84.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84335BA0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84335D10.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84335DEC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84335EF8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84336014.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_8433617C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84336320.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84336340.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84336360.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84336480.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84336520.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_8433661C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_8433679C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84336830.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843369AC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84336A58.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84336B8C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84336C80.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84336DD8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84336EE8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_84337000.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843371C0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843372D8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843374A4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843375B0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_8433766C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_31C660/func_843378D4.s") +#include "fragment62.h" +#include "src/1C720.h" + +void func_84331DA0(unk_D_8140E720* arg0) { + func_8432FEEC(arg0); + func_814081BC(arg0); +} + +void func_84331DC8(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84331DA0(arg0); + break; + + case 2: + if (func_8140D7C8(arg0, arg0->unk_CF, func_8140C068(arg0)) != 0) { + func_814081BC(arg0); + } + break; + + case 3: + func_81408158(arg0); + break; + } + + func_8432FEC4(arg0); +} + +void func_84331E64(unk_D_8140E720* arg0) { + func_8140D530(arg0, func_8140C058(arg0)); + func_8140BF4C(arg0, arg0->unk_A6); + func_814081BC(arg0); +} + +void func_84331EAC(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84331E64(arg0); + break; + + case 2: + if (func_8140BF60(arg0, arg0->unk_CD, arg0->unk_AA) != 0) { + func_814081BC(arg0); + } + break; + + case 3: + func_81408158(arg0); + break; + } + + if (func_8140819C(arg0) != 0) { + func_8001BE34(&arg0->unk_10->unk_000, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->unk_AE); + } +} + +void func_84331F64(unk_D_8140E720* arg0) { + func_8140D530(arg0, func_8140C058(arg0)); + func_8140BF4C(arg0, arg0->unk_CE); + func_814081BC(arg0); +} + +void func_84331FAC(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84331F64(arg0); + break; + + case 2: + if (func_8140BF60(arg0, arg0->unk_CD, arg0->unk_AA) != 0) { + func_814081BC(arg0); + } + break; + + case 3: + func_8140BDD0(arg0); + break; + + case 4: + if (func_8140BF60(arg0, 0, arg0->unk_AA) != 0) { + func_814081BC(arg0); + } + break; + + case 5: + func_81408158(arg0); + break; + } + + if (func_8140819C(arg0) != 0) { + func_8001BE34(&arg0->unk_10->unk_000, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->unk_AE); + } +} + +void func_8433209C(void) { +} + +void func_843320A4(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84331F64(arg0); + break; + + case 2: + func_8140BDD0(arg0); + break; + + case 3: + if (func_8140BF60(arg0, 0, arg0->unk_AA) != 0) { + func_814081BC(arg0); + } + break; + + case 4: + func_81408158(arg0); + break; + } + + if (func_8140819C(arg0) != 0) { + func_8001BE34(&arg0->unk_10->unk_000, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->unk_AE); + } +} + +void func_84332174(unk_D_8140E720* arg0) { + func_8140D530(arg0, func_8140C058(arg0)); + func_8140BF4C(arg0, arg0->unk_A6); + func_814081BC(arg0); +} + +void func_843321BC(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84332174(arg0); + break; + + case 2: + if (func_8140D7C8(arg0, arg0->unk_CD, arg0->unk_AA) != 0) { + func_8140BF4C(arg0, 0); + func_814081BC(arg0); + } + break; + + case 3: + func_81408150(arg0); + break; + } + + if (func_8140819C(arg0) != 0) { + func_8001BE34(&arg0->unk_10->unk_000, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->unk_AE); + } +} + +void func_8433227C(unk_D_8140E720* arg0) { + func_8140D530(arg0, func_8140C058(arg0)); + func_8140BF4C(arg0, arg0->unk_A6); + func_814081BC(arg0); +} + +void func_843322C4(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433227C(arg0); + break; + + case 2: + if (func_8140D7C8(arg0, arg0->unk_CD, arg0->unk_AA) != 0) { + func_814081BC(arg0); + } + break; + + case 3: + func_81408150(arg0); + break; + } + + if (func_8140819C(arg0) != 0) { + func_8001BE34(&arg0->unk_10->unk_000, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->unk_AE); + } +} + +void func_8433237C(unk_D_8140E720* arg0) { + func_8140D530(arg0, func_8140C058(arg0)); + func_8140BF4C(arg0, 0); + func_814081BC(arg0); +} + +void func_843323BC(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433237C(arg0); + break; + + case 2: + func_8140BF98(arg0, arg0->unk_A6, arg0->unk_CE); + break; + + case 3: + if (func_8140D7C8(arg0, arg0->unk_CD, arg0->unk_AA) != 0) { + func_814081BC(arg0); + } + break; + + case 4: + func_8140BF98(arg0, 0, arg0->unk_CE); + break; + + case 5: + func_81408150(arg0); + break; + } + + if (func_8140819C(arg0) != 0) { + func_8001BE34(&arg0->unk_10->unk_000, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->unk_AE); + } +} + +void func_843324A4(unk_D_8140E720* arg0) { + func_8140D530(arg0, func_8140C058(arg0)); + func_8140BF4C(arg0, arg0->unk_A6); + func_814081BC(arg0); +} + +void func_843324EC(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_843324A4(arg0); + break; + + case 2: + if (func_8140D7C8(arg0, arg0->unk_CD, arg0->unk_AA) != 0) { + func_814081BC(arg0); + } + break; + + case 3: + func_8140BF98(arg0, 0, arg0->unk_CE); + break; + + case 4: + func_81408150(arg0); + break; + } + + if (func_8140819C(arg0) != 0) { + func_8001BE34(&arg0->unk_10->unk_000, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->unk_AE); + } +} + +void func_843325C4(unk_D_8140E720* arg0) { + func_8140D530(arg0, func_8140C058(arg0)); + func_8140BF4C(arg0, 0); + func_814081BC(arg0); +} + +void func_84332604(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_843325C4(arg0); + break; + + case 2: + if (func_8140BF60(arg0, arg0->unk_A6, arg0->unk_CE) != 0) { + func_814081BC(arg0); + } + break; + + case 3: + if (func_8140D7C8(arg0, arg0->unk_CD, arg0->unk_AA) != 0) { + func_814081BC(arg0); + } + break; + + case 4: + func_81408150(arg0); + break; + } + + if (func_8140819C(arg0) != 0) { + func_8001BE34(&arg0->unk_10->unk_000, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->unk_AE); + } +} + +void func_843326EC(unk_D_8140E720* arg0) { + func_8140D530(arg0, D_8140E538[func_81400A78(6)]); + func_8140BEEC(arg0, D_8140E538[func_81400A78(6)]); + func_8140BC20(arg0, arg0->unk_CD); + + if (arg0->unk_AA == 0) { + arg0->unk_AA = 1; + } + + func_8140BCA8(arg0, 0xFF / arg0->unk_AA); + func_814081BC(arg0); +} + +void func_843327B8(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_843326EC(arg0); + break; + + case 2: + func_8140D7C8(arg0, arg0->unk_CF, arg0->unk_AA); + if (func_8140BDAC(arg0) != 0) { + func_8140BCA8(arg0, 0xFF / arg0->unk_AA); + func_8140BEEC(arg0, D_8140E538[func_81400A78(6)]); + } + func_8001BE34(&arg0->unk_10->unk_000, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->prim_a); + break; + } +} + +void func_843328A8(unk_D_8140E720* arg0) { + func_8140D530(arg0, D_8140E538[0]); + func_8140BF4C(arg0, 1); + func_8140BEEC(arg0, D_8140E538[1]); + func_8140BC20(arg0, arg0->unk_CD); + + if (arg0->unk_AA == 0) { + arg0->unk_AA = 1; + } + + func_8140BE14(arg0, 0xFF / arg0->unk_AA); + func_814081BC(arg0); +} + +void func_84332964(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_843328A8(arg0); + break; + + case 2: + func_8140BDD0(arg0); + if (func_8140BE6C(arg0) != 0) { + func_8140BE14(arg0, 0xFF / arg0->unk_AA); + arg0->unk_AE = (arg0->unk_AE + 1) % 6; + func_8140BEEC(arg0, D_8140E538[arg0->unk_AE]); + } + func_8140D7C8(arg0, arg0->unk_CF, arg0->unk_AA); + func_8001BE34(&arg0->unk_10->unk_000, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->prim_a); + break; + + case 3: + if (func_8140BC2C(arg0, 0, 8) != 0) { + func_814081BC(arg0); + } + func_8001BE34(&arg0->unk_10->unk_000, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->prim_a); + break; + + case 4: + func_81408158(arg0); + break; + } +} + +void func_84332AD8(unk_D_8140E720* arg0) { + arg0->prim_a = arg0->unk_A6; + func_814081BC(arg0); +} + +void func_84332AFC(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84332AD8(arg0); + break; + + case 2: + if (func_8140BC2C(arg0, arg0->unk_CD, arg0->unk_AA) != 0) { + func_814081BC(arg0); + } + break; + + case 3: + func_81408150(arg0); + break; + } + + if (func_8140819C(arg0) != 0) { + func_8001BE78(&arg0->unk_10->unk_000, arg0->prim_a); + } +} + +void func_84332BA4(unk_D_8140E720* arg0) { + func_8140D530(arg0, func_8140C058(arg0)); + func_8140BC20(arg0, 0); + func_814081BC(arg0); +} + +void func_84332BE4(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84332BA4(arg0); + break; + + case 2: + func_8140BC2C(arg0, 0x80, 4); + break; + + case 3: + if (func_8140BC2C(arg0, 0, 8) != 0) { + func_81408158(arg0); + } + break; + } + + func_8001BE34(&arg0->unk_10->unk_000, arg0->prim_r, arg0->prim_g, arg0->prim_b, arg0->prim_a); +} + +void func_84332C90(unk_D_8140E720* arg0) { + func_8140D530(arg0, func_8140C058(arg0)); + func_8140BC20(arg0, 0); + func_814081BC(arg0); +} + +void func_84332CD0(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84332C90(arg0); + break; + + case 2: + func_8140BC5C(arg0, arg0->unk_CD, arg0->unk_AA); + break; + + case 3: + func_8140BDD0(arg0); + break; + + case 4: + if (func_8140BC2C(arg0, 0, arg0->unk_AA) != 0) { + func_81408150(arg0); + } + break; + } +} + +void func_84332D68(unk_D_8140E720* arg0) { + func_8140D530(arg0, func_8140C058(arg0)); + func_8140BC20(arg0, arg0->unk_CD); + func_814081BC(arg0); +} + +void func_84332DB0(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84332D68(arg0); + break; + + case 2: + func_8140BDD0(arg0); + break; + + case 3: + if (func_8140BC2C(arg0, 0, arg0->unk_AA) != 0) { + func_81408150(arg0); + } + break; + } +} + +void func_84332E2C(unk_D_8140E720* arg0) { + func_8140D530(arg0, func_8140C058(arg0)); + func_8140BC20(arg0, 0); + func_814081BC(arg0); +} + +void func_84332E6C(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84332E2C(arg0); + break; + + case 2: + func_8140BC5C(arg0, arg0->unk_CD, arg0->unk_AA); + break; + + case 3: + if (func_8140BDAC(arg0) != 0) { + func_81408150(arg0); + } + break; + } +} + +void func_84332EE8(unk_D_8140E720* arg0) { + func_8140D530(arg0, func_8140C058(arg0)); + func_8140BC20(arg0, arg0->unk_CD); + func_814081BC(arg0); +} + +void func_84332F30(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84332EE8(arg0); + break; + + case 2: + if (func_8140BDAC(arg0) != 0) { + func_81408158(arg0); + } + break; + } +} + +void func_84332F90(unk_D_8140E720* arg0) { + func_8140D530(arg0, func_8140C058(arg0)); + func_8140BC20(arg0, 0xFF); + func_814081BC(arg0); +} + +void func_84332FD0(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84332F90(arg0); + break; + + case 2: + func_8140BDD0(arg0); + break; + + case 3: + func_8140D7C8(arg0, arg0->unk_CD, arg0->unk_AA); + if (func_8140BC2C(arg0, 0, arg0->unk_AA) != 0) { + func_81408150(arg0); + } + break; + } +} + +void func_84333060(unk_D_8140E720* arg0) { + func_8140D530(arg0, func_8140C058(arg0)); + func_8140BC20(arg0, 0); + func_814081BC(arg0); +} + +void func_843330A0(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84333060(arg0); + break; + + case 2: + func_8140D7C8(arg0, arg0->unk_CD, arg0->unk_AA); + func_8140BC5C(arg0, 0xFF, arg0->unk_AA); + break; + + case 3: + if (func_8140BDAC(arg0) != 0) { + func_81408150(arg0); + } + break; + } +} diff --git a/src/fragments/62/fragment62_31D9F0.c b/src/fragments/62/fragment62_31D9F0.c new file mode 100644 index 0000000..6228157 --- /dev/null +++ b/src/fragments/62/fragment62_31D9F0.c @@ -0,0 +1,1710 @@ +#include "fragment62.h" +#include "src/1C720.h" + +void func_84333130(unk_D_8140E720* arg0, s16 arg1) { + UNUSED s32 pad[3]; + s16 sp22 = func_8140C038(arg0); + + func_8140B938(arg0, 0.25f); + func_8140A578(arg0, func_81400B28(0x400, 0xE00)); + func_8140A594(arg0, func_81400B00(0x400)); + func_8140AD8C(arg0, 2.5f); + + switch (arg1) { + case 0: + func_8140D5A0(arg0, 0x17); + break; + + case 1: + func_8140D5A0(arg0, 0x18); + break; + } + + func_8140BCA8(arg0, sp22 * 2); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84333210(unk_D_8140E720* arg0) { + switch (arg0->unk_B8) { + case 1: + if (func_81408A78(arg0, 2) != 0) { + func_81408A68(arg0); + } + break; + + case 2: + func_8140A7DC(arg0, -0x400, 0x200); + if (func_81408A78(arg0, 0x10) != 0) { + func_81408A68(arg0); + } + break; + } + + if (arg0->unk_B8 > 0) { + func_81409D0C(arg0); + } +} + +void func_843332B4(unk_D_8140E720* arg0) { + s16 sp2E = func_8140C058(arg0); + + switch (arg0->unk_B2) { + case 1: + func_84333130(arg0, sp2E); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408A1C(arg0); + func_81408328(arg0); + func_8140BCA8(arg0, 0xB); + } + break; + + case 3: + func_8140B98C(arg0, 0.75f, 0.03f); + + switch (sp2E) { + case 0: + func_8140BB44(arg0, 0, 0x18); + func_8140BBF0(arg0, 0, 0x18); + break; + + case 1: + func_8140BAE4(arg0, 0, 0x18); + func_8140BBF0(arg0, 0x78, 0xC); + break; + } + + if (func_8140BDD0(arg0) != 0) { + func_8140BCA8(arg0, 0xC); + } + break; + + case 4: + func_8140B98C(arg0, 0.75f, 0.02f); + switch (sp2E) { + case 0: + func_8140BB14(arg0, 0, 0x10); + func_8140BB90(arg0, 0, 0x10); + break; + + case 1: + func_8140BB14(arg0, 0x78, 0xC); + func_8140BBF0(arg0, 0, 0xA); + break; + } + + if ((func_8140BDAC(arg0) != 0) && (func_8140BC2C(arg0, 0, 0x18) != 0)) { + func_814081BC(arg0); + } + break; + + case 5: + func_81408150(arg0); + break; + } + + if (func_81408368(arg0) != 0) { + func_814083FC(arg0, 0, 7, 1, 2, -1); + func_84333210(arg0); + } +} + +void func_843334DC(unk_D_8140E720* arg0) { + UNUSED s32 pad[3]; + s16 sp22 = func_8140C038(arg0); + + func_8140B938(arg0, 0.25f); + func_8140A594(arg0, func_81400B00(0x400)); + func_8140AD8C(arg0, D_84392058[0]); + func_8140D5A0(arg0, 0x17); + func_8140BCA8(arg0, sp22 * 2); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84333570(unk_D_8140E720* arg0) { + switch (arg0->unk_B8) { + case 1: + if (func_81408A78(arg0, 2) != 0) { + func_81408A68(arg0); + func_8140A5B0(arg0, 0x2900); + } + break; + + case 2: + func_8140A578(arg0, 0xC00); + break; + } + + if (arg0->unk_B8 > 0) { + func_81409E24(arg0); + } +} + +void func_84333600(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_843334DC(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408A1C(arg0); + func_81408328(arg0); + func_8140BCA8(arg0, 0xB); + } + break; + + case 3: + func_8140B98C(arg0, 0.75f, 0.03f); + func_8140BB44(arg0, 0, 0x18); + func_8140BBF0(arg0, 0, 0x20); + if (func_8140BDD0(arg0) != 0) { + func_8140BCA8(arg0, 0xC); + } + break; + + case 4: + func_8140B98C(arg0, 0.75f, 0.02f); + func_8140BB14(arg0, 0, 0x10); + func_8140BB90(arg0, 0, 0x10); + if ((func_8140BDAC(arg0) != 0) && (func_8140BC2C(arg0, 0, 0xC) != 0)) { + func_814081BC(arg0); + } + break; + + case 5: + func_81408150(arg0); + break; + } + + if (func_81408368(arg0) != 0) { + func_814083FC(arg0, 0, 7, 1, 2, -1); + func_84333570(arg0); + } +} + +void func_8433378C(unk_D_8140E720* arg0) { + UNUSED s32 pad[3]; + s16 sp22 = func_8140C038(arg0); + s16 sp20 = func_8140C058(arg0); + + func_8140B938(arg0, 0.4f); + func_8140A578(arg0, func_81400B28(0x200, 0xE00)); + func_8140A594(arg0, func_81400B00(0x1800)); + func_8140AD8C(arg0, 2.0f); + + switch (sp20) { + case 0: + func_8140D5A0(arg0, 0x1A); + break; + + case 1: + func_8140D5A0(arg0, 6); + break; + } + + func_8140BC20(arg0, 0xC8); + func_8140BCA8(arg0, sp22 * 2); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84333884(unk_D_8140E720* arg0) { + switch (arg0->unk_B8) { + case 1: + if (func_81408A78(arg0, 1) != 0) { + func_81408A68(arg0); + } + break; + + case 2: + func_8140A7DC(arg0, -0x1800, 0x800); + if (func_81408A78(arg0, 0x10) != 0) { + func_81408A68(arg0); + } + break; + } + + if (arg0->unk_B8 > 0) { + func_81409D0C(arg0); + } +} + +void func_84333928(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433378C(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408A1C(arg0); + func_81408328(arg0); + } + break; + + case 3: + func_814084D8(arg0, 0, 7, 1, 2, 0); + func_8140BC2C(arg0, 0x20, 4); + func_8140B98C(arg0, 0.75f, 0.05f); + break; + + case 4: + func_81408150(arg0); + break; + } + + if (func_81408368(arg0) != 0) { + func_84333884(arg0); + } +} + +void func_84333A20(unk_D_8140E720* arg0, s16 arg1) { + UNUSED s32 pad[3]; + s16 sp22 = func_8140C038(arg0); + + func_8140B938(arg0, 0.2f); + func_8140A578(arg0, func_81400B28(0x200, 0xE00)); + func_8140A594(arg0, func_81400B00(0x2000)); + func_8140AD8C(arg0, 2.0f); + + switch (arg1) { + case 0: + func_8140D5A0(arg0, 0x17); + break; + + case 1: + func_8140D5A0(arg0, 0x18); + break; + } + + func_8140BCA8(arg0, sp22 * 2); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84333B04(unk_D_8140E720* arg0) { + switch (arg0->unk_B8) { + case 1: + if (func_81408A78(arg0, arg0->unk_AE) != 0) { + func_81408A68(arg0); + } + break; + + case 2: + func_8140A76C(arg0, 0x4000, 0x800); + if (func_81408A78(arg0, 0x10) != 0) { + func_81408A68(arg0); + } + break; + } + + if (arg0->unk_B8 > 0) { + func_81409D0C(arg0); + } +} + +void func_84333BA8(unk_D_8140E720* arg0) { + s16 temp_v0 = func_8140C058(arg0); + + switch (arg0->unk_B2) { + case 1: + func_84333A20(arg0, temp_v0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408A1C(arg0); + func_81408328(arg0); + func_8140BF4C(arg0, func_81400A78(3)); + func_8140BCA8(arg0, 8); + } + break; + + case 3: + switch (temp_v0) { + case 0: + func_8140BB44(arg0, 0, 0x20); + func_8140BBF0(arg0, 0, 0x20); + break; + + case 1: + func_8140BAE4(arg0, 0, 0x20); + func_8140BBF0(arg0, 0x78, 0x10); + break; + } + func_8140BDD0(arg0); + break; + + case 4: + switch (temp_v0) { + case 0: + func_8140BB14(arg0, 0, 0x20); + func_8140BB90(arg0, 0, 0x20); + break; + + case 1: + func_8140BB14(arg0, 0x78, 0xC); + func_8140BBF0(arg0, 0, 0xA); + break; + } + + if (func_8140BC2C(arg0, 0, 0x18) != 0) { + func_814081BC(arg0); + } + break; + + case 5: + func_81408150(arg0); + break; + } + + if (func_81408368(arg0) != 0) { + func_814083FC(arg0, 0, 7, 1, 2, -1); + func_8140B98C(arg0, 0.02f, 0.015f); + func_84333B04(arg0); + if (arg0->unk_2C.y <= 0.0f) { + func_81408150(arg0); + } + } +} + +void func_84333DC4(unk_D_8140E720* arg0) { + func_81408F38(arg0, 33.0f); + func_8140B938(arg0, 0.67f); + func_8140D530(arg0, func_8140C058(arg0)); + func_8140BC20(arg0, 0xC8); + func_814081BC(arg0); +} + +void func_84333E28(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84333DC4(arg0); + break; + + case 2: + if (func_8140B98C(arg0, 6.67f, 0.67f) != 0) { + func_814081BC(arg0); + } + break; + + case 3: + func_8140826C(arg0, 0); + break; + + case 4: + if (func_8140BC2C(arg0, 0x20, 8) != 0) { + func_814081BC(arg0); + } + break; + + case 5: + func_81408158(arg0); + break; + } +} + +void func_84333EE8(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84333DC4(arg0); + break; + + case 2: + if (func_8140B98C(arg0, 8.0f, 1.0f) != 0) { + func_814081BC(arg0); + } + break; + + case 3: + func_8140826C(arg0, 8); + break; + + case 4: + if (func_8140BC2C(arg0, 0x20, 8) != 0) { + func_814081BC(arg0); + } + break; + + case 5: + func_81408158(arg0); + break; + } + + func_8140A5B0(arg0, 0x1000); +} + +void func_84333FBC(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84333DC4(arg0); + break; + + case 2: + if (func_8140B98C(arg0, 8.0f, 1.0f) != 0) { + func_814081BC(arg0); + } + break; + + case 3: + func_8140826C(arg0, 8); + break; + + case 4: + if (func_8140BC2C(arg0, 0x20, 8) != 0) { + func_814081BC(arg0); + } + break; + + case 5: + func_81408158(arg0); + break; + } + + func_8140A5B0(arg0, 0x1000); + + if (D_8140E6CC == 0) { + func_8140D658(arg0, func_81400A78(6)); + } +} + +void func_843340B8(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + + func_8140B938(arg0, 0.5f); + func_8140AF24(arg0, 2.0f); + func_8140A3D8(arg0, func_81400A78(0x10000)); + func_8140D5A0(arg0, 0x1A); + func_8140BC20(arg0, 0xFF); + func_8140BCA8(arg0, sp26 * 4); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84334154(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_843340B8(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + func_8140BCA8(arg0, 0x10); + } + break; + + case 3: + func_814084D8(arg0, 0, 7, 1, 2, -1); + func_8140B98C(arg0, 1.0f, 0.1f); + func_814099E0(arg0, 2.0f); + func_8140B7C8(arg0, 10.0f, 0x800); + func_8140BB14(arg0, 0, 4); + func_8140BB90(arg0, 0, 4); + if ((func_8140BDAC(arg0) != 0) && (func_8140BC2C(arg0, 0, 0x18) != 0)) { + func_814081BC(arg0); + } + break; + + case 4: + func_81408158(arg0); + break; + } +} + +void func_84334294(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + + func_8140B938(arg0, 0.5f); + func_81408CA0(arg0, 10.0f); + func_8140AF24(arg0, 1.0f); + func_8140D5A0(arg0, 0x1A); + func_8140BC20(arg0, 0xFF); + func_81408348(arg0); + func_8140A3D8(arg0, (sp26 << 0x10) / 18); + func_8140BCA8(arg0, sp26 * 3); + func_814081BC(arg0); +} + +void func_84334350(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84334294(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + } + break; + + case 3: + func_8140B98C(arg0, 1.0f, 0.1f); + break; + } + + if (func_81408368(arg0) != 0) { + func_8140B7C8(arg0, 50.0f, 0); + } +} + +void func_843343F8(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + + func_8140B938(arg0, 1.0f); + func_81408CA0(arg0, 10.0f); + func_8140AF24(arg0, 1.0f); + func_8140D5A0(arg0, 0x1A); + func_8140BC20(arg0, 0xFF); + func_81408348(arg0); + func_8140A3D8(arg0, (sp26 << 0x10) / 18); + func_8140BCA8(arg0, 0); + func_814081BC(arg0); +} + +void func_843344A0(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 3: + break; + + case 1: + func_843343F8(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + } + break; + + case 4: + func_8140BC5C(arg0, 0, 0x10); + break; + + case 5: + func_81408158(arg0); + break; + } + + if (func_81408368(arg0) != 0) { + func_8140B7C8(arg0, 50.0f, 0); + } +} + +void func_84334558(unk_D_8140E720* arg0) { + func_8140B938(arg0, 0.4f); + func_8140D5A0(arg0, 0x1A); + func_8140BC20(arg0, 0xA0); + func_814081BC(arg0); +} + +void func_843345A0(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84334558(arg0); + break; + + case 2: + func_814084D8(arg0, 2, 7, 1, 2, 0); + func_8140BC2C(arg0, 0x20, 0x18); + break; + + case 3: + func_81408158(arg0); + break; + } + + func_8140B98C(arg0, 0.6f, 0.05f); +} + +void func_84334654(unk_D_8140E720* arg0) { + func_8140B938(arg0, 0.4f); + func_8140AD8C(arg0, 8.0f); + func_8140D5A0(arg0, 0x29); + func_814083E8(arg0, 2); + func_8140BC20(arg0, 0xFF); + func_814081BC(arg0); +} + +void func_843346BC(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84334654(arg0); + break; + + case 2: + func_814084D8(arg0, 3, 5, 1, 1, 0); + break; + + case 3: + func_8140826C(arg0, 0xF); + break; + + case 4: + func_81408158(arg0); + break; + } + + if (func_81408368(arg0) != 0) { + func_8140D908(arg0, 0x2A, 0x1C); + func_81409D0C(arg0); + func_8432D844(arg0, func_843345A0, &D_843861D0[0x4A], 1); + } +} + +void func_843347A4(unk_D_8140E720* arg0) { + func_8140C038(arg0); + func_8140AD8C(arg0, 0.2f); + func_8140B938(arg0, 1.0f); + func_8140D5A0(arg0, 0x1D); + func_8140BC20(arg0, 0xFF); + func_814081BC(arg0); +} + +void func_84334808(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_843347A4(arg0); + break; + + case 2: + func_8140826C(arg0, 1); + break; + + case 3: + func_814084D8(arg0, 0, 3, 1, 2, 0); + func_81409EA0(arg0); + func_8140D908(arg0, 0, 0x20); + func_8140B98C(arg0, 1.5f, 0.1f); + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_843348DC(unk_D_8140E720* arg0) { + Vec3s sp28; + UNUSED s32 pad[1]; + + func_8140C058(arg0); + func_8140C038(arg0); + func_8140B938(arg0, 0.45f); + sp28.x = func_81400B00(0x2000); + sp28.y = func_81400B28(0x3000, 0); + sp28.z = 0; + func_8140A4F0(arg0, sp28); + func_8140D5A0(arg0, 0x1D); + func_8140BC20(arg0, 0x64); + func_8140AD8C(arg0, 2.5f); + func_814081BC(arg0); +} + +void func_84334994(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_843348DC(arg0); + break; + + case 2: + func_814084D8(arg0, 0, 7, 1, 2, 0); + func_8140ADBC(arg0, 0.5, 0.5f); + func_8140BC2C(arg0, 0x20, 4); + break; + + case 3: + func_81408150(arg0); + break; + } + + if (func_8140819C(arg0) != 0) { + func_8140B98C(arg0, 0.75f, 0.1f); + func_81409D0C(arg0); + func_8140D908(arg0, 0x1A, 0x10); + } +} + +void func_84334A78(unk_D_8140E720* arg0, u8 arg1) { + u16 sp1E; + + func_8140BEF8(arg0, arg1); + + switch (arg1) { + case 0: + sp1E = 0x1A; + break; + + case 1: + sp1E = 0x2A; + break; + + case 2: + sp1E = 0x24; + break; + + case 3: + sp1E = 0x2C; + break; + } + + func_8140D5A0(arg0, sp1E); +} + +void func_84334B04(void) { +} + +void func_84334B0C(unk_D_8140E720* arg0) { + UNUSED u16 pad; + u16 sp1C; + u16 sp1A; + + switch (func_8140C058(arg0)) { + case 0: + sp1C = 0x2E; + sp1A = 0x10; + break; + + case 1: + sp1C = 0x2D; + sp1A = 0x10; + break; + + case 2: + sp1C = 0x2D; + sp1A = 0x10; + break; + + case 3: + sp1C = 0x2B; + sp1A = 0x10; + break; + } + + func_8140D908(arg0, sp1C, sp1A); +} + +void func_84334BAC(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + s16 sp24 = func_8140C058(arg0); + s16 sp22 = func_8140C040(arg0); + + switch (sp26) { + case 0: + func_81408BE0(arg0, 0.0f, -5.0f, 0.0f); + break; + + case 1: + func_81408BE0(arg0, 0.0f, 5.0f, 5.0f); + break; + + case 2: + func_81408BE0(arg0, 0.0f, 5.0f, -5.0f); + break; + } + + switch (sp22) { + case 0: + func_8140B938(arg0, 0.5f); + func_8140B95C(arg0, 1.0f); + func_8140B974(arg0, 0.1f); + break; + + case 1: + func_8140B938(arg0, 0.75f); + func_8140B95C(arg0, 1.5f); + func_8140B974(arg0, 0.15f); + break; + + case 2: + func_8140B938(arg0, 1.0f); + func_8140B95C(arg0, 2.0f); + func_8140B974(arg0, 0.2f); + break; + } + + func_8140D5A0(arg0, sp24); + func_814083E8(arg0, 1); + func_8140BC20(arg0, 0xC8); + func_8140BCA8(arg0, sp26 * 2); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84334D7C(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84334BAC(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + } + break; + + case 3: + func_8140BA1C(arg0); + func_814084D8(arg0, 2, 7, 1, 1, 0); + if (arg0->unk_C7 >= 6) { + func_8140BC2C(arg0, 0x64, 0x4E); + } + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_84334E4C(unk_D_8140E720* arg0) { + Vec3f sp2C; + s16 sp2A; + s16 sp28; + + sp2A = func_8140C038(arg0); + sp28 = func_8140C058(arg0); + sp2C.x = func_81400B00(0xA); + sp2C.y = func_81400B28(0xF, 0xA); + sp2C.z = func_81400B00(0xF); + func_81408D78(arg0, sp2C); + func_8140AD8C(arg0, (func_81400A78(5) * 0.25f) + 3.0f); + func_8140B938(arg0, 0.75f); + func_8140D5A0(arg0, sp28); + func_8140BC20(arg0, 0xFF); + func_8140BCA8(arg0, sp2A * 2); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84334F84(unk_D_8140E720* arg0) { + func_8140C040(arg0); + + switch (arg0->unk_B2) { + case 1: + func_84334E4C(arg0); + break; + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + } + break; + + case 3: + func_81409EA0(arg0); + func_8140BA1C(arg0); + func_814084D8(arg0, 1, 7, 1, 1, 0); + + if (arg0->unk_C7 >= 6) { + func_8140BC2C(arg0, 0x64, 0x4E); + } + + if (arg0->unk_C7 >= 4) {} + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_8433507C(unk_D_8140E720* arg0) { + Vec3s sp30; + Vec3f sp24; + s16 sp22; + s16 sp20; + + sp22 = func_8140C038(arg0); + sp20 = func_8140C058(arg0); + sp24.x = func_81400B00(0xA); + sp24.y = func_81400B28(0xA, 5); + sp24.z = func_81400B00(0xA); + func_81408D78(arg0, sp24); + func_8140B938(arg0, 1.0f); + func_8140AD8C(arg0, 0.5f); + sp30.x = func_81400B00(0x2000); + sp30.y = func_81400B00(0x2000); + sp30.z = 0; + func_8140A4F0(arg0, sp30); + func_8140D5A0(arg0, sp20); + func_8140BC20(arg0, 0xC8); + func_8140BCA8(arg0, sp22 * 2); + func_814083E8(arg0, 2); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_843351C8(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433507C(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + } + break; + + case 3: + func_814084D8(arg0, 2, 7, 1, 1, 0); + func_8140B98C(arg0, 1.2f, 0.05f); + func_8140BC2C(arg0, 0x64, 0x10); + func_81409D0C(arg0); + break; + + case 4: + func_81408158(arg0); + break; + } +} + +void func_843352AC(unk_D_8140E720* arg0) { + s16 sp36 = func_8140C038(arg0); + Vec3s sp30; + UNUSED s32 pad[3]; + + func_8140959C(arg0, 5, 5, 5); + func_8140B938(arg0, 0.5f); + func_8140AD8C(arg0, 1.0f); + sp30.x = 0x2000 - func_81400A78(0x4000); + sp30.y = 0x2000 - func_81400A78(0x4000); + sp30.z = 0; + func_8140A4F0(arg0, sp30); + func_8140A5CC(arg0, sp30.x, sp30.y); + func_8140A3A0(arg0, 0, 0); + func_8140D5A0(arg0, 0x1A); + func_8140BC20(arg0, 0xC8); + func_8140BCA8(arg0, sp36 * 3); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_843353C4(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_843352AC(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_8140BCA8(arg0, 0xA); + func_81408328(arg0); + } + break; + + case 3: + func_8140B98C(arg0, 1.0f, 0.1f); + func_8140BAE4(arg0, 0, 0xC); + func_8140BB14(arg0, 0, 0x20); + func_81409D0C(arg0); + func_81408E90(arg0, 0.4f); + func_84334B0C(arg0); + if ((func_8140BDAC(arg0) != 0) && (func_8140BC2C(arg0, 0x20, 0x10) != 0)) { + func_814081BC(arg0); + } + break; + + case 4: + func_81408158(arg0); + break; + } +} + +void func_843354E0(unk_D_8140E720* arg0) { + s16 sp36 = func_8140C038(arg0); + Vec3s sp30; + Vec3f sp24; + + sp24.x = func_81400B00(0x19); + sp24.y = func_81400B28(0xF, 5); + sp24.z = func_81400B00(0xA); + func_81408D78(arg0, sp24); + func_8140B938(arg0, 0.15f); + func_8140AD8C(arg0, 0.5f); + sp30.x = 0x2000 - func_81400A78(0x4000); + sp30.y = 0x2000 - func_81400A78(0x4000); + sp30.z = 0; + func_8140A4F0(arg0, sp30); + func_8140A5CC(arg0, sp30.x, sp30.y); + func_8140A3A0(arg0, 0, 0); + func_84334A78(arg0, (sp36 % 4) & 0xFF); + func_8140BC20(arg0, 0xC8); + func_8140BCA8(arg0, sp36 * 1); + func_814083E8(arg0, 2); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84335668(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_843354E0(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + } + break; + + case 3: + func_814084D8(arg0, 2, 7, 1, 1, 0); + func_8140B98C(arg0, 0.45000002f, 0.075f); + func_8140BC2C(arg0, 0x64, 0x10); + func_81409D0C(arg0); + break; + + case 4: + func_81408158(arg0); + break; + } +} + +void func_8433574C(unk_D_8140E720* arg0) { + s16 sp36 = func_8140C038(arg0); + Vec3s sp30; + UNUSED s32 pad[3]; + + func_8140959C(arg0, 5, 0xA, 0xA); + func_8140B938(arg0, 0.90000004f); + func_8140AD8C(arg0, 1.0f); + sp30.x = func_81400B00(0x2000); + sp30.y = func_81400A78(0x10000); + sp30.z = 0; + func_8140A4F0(arg0, sp30); + func_84334A78(arg0, (sp36 % 4) & 0xFF); + func_8140BC20(arg0, 0xC8); + func_8140BCA8(arg0, 0); + func_814083E8(arg0, 2); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84335848(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433574C(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_8140BCA8(arg0, 5); + func_81408328(arg0); + } + break; + + case 3: + func_814084D8(arg0, 0, 7, 1, 2, 0); + func_8140B98C(arg0, 1.05f, 0.075f); + func_8140ADBC(arg0, 0.5, 0.5f); + func_81409D0C(arg0); + if (func_8140BDAC(arg0) != 0) { + func_814099E0(arg0, 0.5f); + func_8140BC2C(arg0, 0x64, 0x10); + } + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_8433595C(unk_D_8140E720* arg0) { + s16 sp36 = func_8140C038(arg0); + Vec3s sp30; + UNUSED s32 pad[3]; + + func_8140959C(arg0, 5, 5, 5); + func_8140B938(arg0, 0.75f); + func_8140AD8C(arg0, 1.0f); + sp30.x = 0x2000 - func_81400A78(0x4000); + sp30.y = func_81400A78(0x10000); + sp30.z = 0; + func_8140A4F0(arg0, sp30); + func_8140A5CC(arg0, sp30.x, sp30.y); + func_8140A3A0(arg0, 0, 0); + func_84334A78(arg0, (sp36 % 4) & 0xFF); + func_8140BC20(arg0, 0xC8); + func_8140BCA8(arg0, sp36 * 3); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84335A84(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433595C(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_8140BCA8(arg0, 0xA); + func_81408328(arg0); + } + break; + + case 3: + func_8140BAE4(arg0, 0, 0xC); + func_8140BB14(arg0, 0, 0x20); + func_8140B98C(arg0, 1.5f, 0.15f); + func_84334B0C(arg0); + func_81409D0C(arg0); + func_81408E90(arg0, 0.4f); + if ((func_8140BDAC(arg0) != 0) && (func_8140BC2C(arg0, 0x20, 0x10) != 0)) { + func_814081BC(arg0); + } + break; + + case 4: + func_81408158(arg0); + break; + } +} + +void func_84335BA0(unk_D_8140E720* arg0) { + s16 sp36; + Vec3s sp30; + Vec3f sp24; + + sp36 = func_8140C038(arg0); + sp24.x = func_81400B00(0x14); + sp24.y = func_81400B28(0xF, 0xA); + sp24.z = func_81400B00(0xF); + func_81408D78(arg0, sp24); + func_8140B938(arg0, 0.1f); + sp30.x = func_81400A78(0x10000); + sp30.y = func_81400A78(0x10000); + sp30.z = 0; + func_8140A4F0(arg0, sp30); + func_8140A5CC(arg0, sp30.x, sp30.y); + func_8140A3A0(arg0, 0, 0); + func_84334A78(arg0, (sp36 % 4) & 0xFF); + func_8140BC20(arg0, 0xC8); + func_8140BCA8(arg0, sp36 * 2); + func_814083E8(arg0, 2); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84335D10(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84335BA0(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + } + break; + + case 3: + func_814084D8(arg0, 2, 7, 1, 1, 0); + func_8140B98C(arg0, 0.3f, 0.05f); + func_8140BC2C(arg0, 0x64, 0x10); + break; + + case 4: + func_81408158(arg0); + break; + } +} + +void func_84335DEC(unk_D_8140E720* arg0) { + s16 temp_s1 = func_8140C038(arg0); + + func_8140B938(arg0, 0.75f); + + switch (temp_s1) { + case 0: + func_81408BE0(arg0, 0.0f, -3.0f, 0.0f); + break; + + case 1: + func_81408BE0(arg0, 0.0f, 3.0f, 3.0f); + break; + + case 2: + func_81408BE0(arg0, 0.0f, 3.0f, -3.0f); + break; + } + + func_8140D5A0(arg0, 0x17); + func_8140BC20(arg0, 0xFF); + func_8140BCA8(arg0, temp_s1 * 4); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84335EF8(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84335DEC(arg0); + break; + + case 2: + if (func_8140826C(arg0, arg0->unk_A6) != 0) { + func_81408328(arg0); + } + break; + + case 3: + func_814084D8(arg0, 0, 7, 1, 1, 0); + func_8140B98C(arg0, 1.0f, 0.02f); + func_8140BB44(arg0, 0, 0x20); + func_8140BBF0(arg0, 0, 0x20); + if (arg0->unk_C7 >= 6) { + func_8140BB14(arg0, 0, 0x20); + func_8140BC2C(arg0, 0x64, 0x4E); + } + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_84336014(unk_D_8140E720* arg0, s16 arg1, s16 arg2) { + UNUSED s32 pad[2]; + s16 sp26 = func_8140C038(arg0); + + func_81408CA0(arg0, -10.0f); + func_81408ED0(arg0, 50.0f); + func_8140B938(arg0, 0.5f); + func_8140AD8C(arg0, 5.0f); + + switch (arg1) { + case 0: + func_8140A578(arg0, func_81400B00(0x800)); + func_8140A594(arg0, func_81400B28(0x1000, 0x8000)); + break; + + case 1: + func_8140A578(arg0, func_81400B00(0xA00)); + func_8140A594(arg0, func_81400B4C(0xD00, 0xF400) + 0x8000); + break; + } + + switch (arg2) { + case 0: + func_8140D5A0(arg0, 0x1A); + break; + + case 1: + func_8140D5A0(arg0, 6); + break; + } + + func_8140BC20(arg0, 0xC8); + func_8140BCA8(arg0, sp26 * 4); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_8433617C(unk_D_8140E720* arg0, s32 arg1) { + s16 temp_v0 = func_8140C058(arg0); + + switch (arg0->unk_B2) { + case 1: + func_84336014(arg0, arg1, temp_v0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + } + break; + + case 3: + func_8140BCA8(arg0, 0xC); + func_814081BC(arg0); + break; + + case 4: + switch (temp_v0) { + case 0: + func_8140BB14(arg0, 0, 0x10); + func_8140BB90(arg0, 0, 0x10); + break; + + case 1: + func_8140BB14(arg0, 0, 0xA); + func_8140BBF0(arg0, 0, 5); + break; + } + + if ((func_8140BDAC(arg0) != 0) && (func_8140BC2C(arg0, 0, 0x18) != 0)) { + func_814081BC(arg0); + } + break; + + case 5: + func_81408158(arg0); + break; + } + + if (func_81408368(arg0) != 0) { + func_8140A76C(arg0, -0xC00, 0x100); + func_8140B98C(arg0, 1.2f, 0.04f); + func_81409D0C(arg0); + func_814083FC(arg0, 0, 7, 1, 2, -1); + } +} + +void func_84336320(unk_D_8140E720* arg0) { + func_8433617C(arg0, 0); +} + +void func_84336340(unk_D_8140E720* arg0) { + func_8433617C(arg0, 1); +} + +void func_84336360(unk_D_8140E720* arg0) { + s16 sp36 = func_8140C058(arg0); + UNUSED s32 pad[3]; + s16 sp26 = func_8140C038(arg0); + + func_8140B938(arg0, 0.4f); + func_81408ED0(arg0, 15.0f); + func_8140A578(arg0, func_81400B28(0x200, 0xE00)); + func_8140A594(arg0, func_81400B28(0x3800, 0x8000)); + func_8140A400(arg0, -0x4000); + func_8140A3C4(arg0, 0x1000); + func_8140AD8C(arg0, 3.0f); + + switch (sp36) { + case 0: + func_8140D5A0(arg0, 0x1A); + break; + + case 1: + func_8140D5A0(arg0, 6); + break; + } + + func_8140BC20(arg0, 0xC8); + func_8140BCA8(arg0, sp26 * 2); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84336480(unk_D_8140E720* arg0) { + switch (arg0->unk_B8) { + case 1: + if (func_81408A78(arg0, 1) != 0) { + func_81408A68(arg0); + } + break; + + case 2: + func_8140A690(arg0); + if (func_81408A78(arg0, 0x10) != 0) { + func_81408A68(arg0); + } + break; + } + + if (arg0->unk_B8 > 0) { + func_81409D0C(arg0); + } +} + +void func_84336520(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84336360(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408A1C(arg0); + func_81408328(arg0); + } + break; + + case 3: + func_814084D8(arg0, 0, 7, 1, 2, 0); + func_8140BC2C(arg0, 0x20, 4); + func_8140B98C(arg0, 1.2f, 0.1f); + break; + + case 4: + func_81408150(arg0); + break; + } + + if (func_81408368(arg0) != 0) { + func_84336480(arg0); + } +} + +void func_8433661C(unk_D_8140E720* arg0) { + UNUSED s32 pad[3]; + s16 sp22 = func_8140C038(arg0); + s16 sp20 = func_8140C058(arg0); + + func_8140B938(arg0, 0.6f); + func_81408E90(arg0, 15.0f); + func_81408F38(arg0, 20.0f); + + switch (sp20) { + case 0: + func_8140AD8C(arg0, 1.5f); + func_8140A578(arg0, -0x4000); + break; + + case 1: + func_8140AD8C(arg0, 2.0f); + func_8140A594(arg0, 0x4000); + func_8140A578(arg0, -0xE00); + break; + + case 2: + func_8140AD8C(arg0, 2.0f); + func_8140A594(arg0, -0x4000); + func_8140A578(arg0, -0xE00); + break; + + case 3: + func_8140AD8C(arg0, 2.5f); + func_8140A594(arg0, 0x4000); + func_8140A578(arg0, 0x2000); + break; + + case 4: + func_8140AD8C(arg0, 2.5f); + func_8140A594(arg0, -0x4000); + func_8140A578(arg0, 0x2000); + break; + } + + func_8140D5A0(arg0, 0x17); + func_8140BCA8(arg0, sp22 * 2); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_8433679C(unk_D_8140E720* arg0) { + switch (arg0->unk_B8) { + case 1: + if (func_81408A78(arg0, 2) != 0) { + func_81408A68(arg0); + } + break; + + case 2: + if (func_81408A78(arg0, 0x10) != 0) { + func_81408A68(arg0); + } + break; + } + + if (arg0->unk_B8 > 0) { + func_81409DAC(arg0); + } +} + +void func_84336830(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433661C(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408A1C(arg0); + func_81408328(arg0); + func_8140BCA8(arg0, 0xB); + } + break; + + case 3: + func_8140BB44(arg0, 0, 0x18); + func_8140BBF0(arg0, 0, 0x18); + if (func_8140BDD0(arg0) != 0) { + func_8140BCA8(arg0, 0xC); + } + break; + + case 4: + func_8140BB14(arg0, 0, 0x10); + func_8140BB90(arg0, 0, 0x10); + if ((func_8140BDAC(arg0) != 0) && (func_8140BC2C(arg0, 0, 0x40) != 0)) { + func_814081BC(arg0); + } + break; + + case 5: + func_81408150(arg0); + break; + } + + if (func_81408368(arg0) != 0) { + func_8140B98C(arg0, 0.8f, 0.025f); + func_814083FC(arg0, 0, 7, 1, 2, -1); + func_8433679C(arg0); + } +} + +void func_843369AC(unk_D_8140E720* arg0) { + UNUSED s32 pad[3]; + s16 sp22 = func_8140C038(arg0); + + func_8140C058(arg0); + func_8140B938(arg0, 0.7f); + func_81409248(arg0, 0xF); + func_8140935C(arg0, 0xF, 0xA); + func_814092C8(arg0, 0xF); + func_8140D5A0(arg0, 0x1A); + func_8140BC20(arg0, 0xC8); + func_8140BCA8(arg0, sp22 * 4); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84336A58(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_843369AC(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408A1C(arg0); + func_81408328(arg0); + func_8140BCA8(arg0, 8); + } + break; + + case 3: + func_8140BB14(arg0, 0, 0x10); + func_8140BB90(arg0, 0, 0x10); + if ((func_8140BDAC(arg0) != 0) && (func_8140BC2C(arg0, 0x20, 0x18) != 0)) { + func_814081BC(arg0); + } + break; + + case 4: + func_81408150(arg0); + break; + } + + if (func_81408368(arg0) != 0) { + func_8140B98C(arg0, 1.0f, 0.025f); + func_814083FC(arg0, 0, 7, 1, 2, 0); + } +} + +void func_84336B8C(void) { + func_8432EE5C(0, 0, 0x40, 0xA, 0xC8); + func_8432EC28(1, func_84334808, &D_843861D0[0x34], 0, 1, 0x10, D_843902E2, 0, 0); + func_8432EC28(2, func_84334994, &D_843861D0[0x3D], 0, 3, 0x11, D_843902E2, 0, 0); + func_8432EC28(4, func_843346BC, &D_843861D0[0x46], 0, 1, 0x11, D_843902E2, 0, 0); +} + +void func_84336C80(void) { + func_8432EE5C(2, 0, 0x40, 0xA, 0xC8); + func_8432F2C8(0, 0xC, 0xFF, 0, 0x30); + func_8432EC28(4, func_84335668, &D_843861D0[0x46], 0, 6, 0x10, 9, 0, 0); + func_8432EC28(8, func_84335668, &D_843861D0[0x46], 0, 6, 0x10, 9, 0, 0); + func_8432ECA0(0, 2, 2, func_84335A84, &D_843861D0[0x3D], 0, 4, 0x10, 9, 0, 0); + func_8432ECA0(0, 2, 2, func_84335848, &D_843861D0[0x47], 0, 4, 0x10, 9, 0, 0); +} + +void func_84336DD8(void) { + func_8432EE5C(2, 0, 0x40, 0xA, 0xC8); + func_8432F2C8(2, 0xB, 0xC8, 0, 0x10); + func_8432EC28(0, func_84335EF8, &D_843861D0[0x46], 0, 3, 0x10, 9, 0, 0); + func_8432EC28(0xA, func_84335D10, &D_843861D0[0x46], 0, 8, 0x11, 9, 0, 0); + func_8432ECA0(0xC, 2, 2, func_84335A84, &D_843861D0[0x3D], 0, 4, 0x11, 9, 0, 0); +} + +void func_84336EE8(void) { + func_8432F8E8(0x64, 1); + func_8432ED0C(0, 8, 6); + func_8432ECA0(0, 2, 0x3C, func_843332B4, &D_843861D0[0x4F], 0, 1, 0x11, D_843902E2, 0, 0); + func_8432ECA0(0, 4, 0x1E, func_84333928, &D_843861D0[0x3D], 0, 1, 0x11, D_843902E2, 0, 0); + func_8432ECA0(0, 4, 0x1E, func_84333BA8, &D_843861D0[0x4F], 0, 1, 0x11, D_843902E2, 0, 0); +} + +void func_84337000(void) { + func_8432F638(0xA, 0xB, 0x10, 8, 0xC8, 0x10); + func_8432ECA0(0, 2, 0x14, func_84336320, &D_843861D0[0x4E], 0, 1, 0x11, 9, 0, 0); + func_8432ECA0(0, 2, 2, func_84336340, &D_843861D0[0x4E], 0, 0xC, 0x11, 9, 0, 0); + func_8432ECA0(0xE, 8, 5, func_84336520, &D_843861D0[0x3D], 0, 2, 0x11, 9, 0, 0); + func_8432F2C8(0x3C, 0x10, 0xC8, 0, 8); + func_8432ECA0(0x3A, 2, 2, func_84354A10, &D_843861D0[0x3D], 0, 1, 9, 0, 0x33, 0); + func_8432ECA0(0x3C, 2, 2, func_84354A10, &D_843861D0[0x3D], 0, 1, 9, 0, 0x33, 0); +} + +void func_843371C0(void) { + func_8432ED0C(0, 8, 6); + func_8432ECA0(0, 2, 0x3C, func_843332B4, &D_843861D0[0x4F], 0, 1, 0x11, D_843902E2, 1, 0); + func_8432ECA0(0, 4, 0x1E, func_84333928, &D_843861D0[0x3D], 0, 1, 0x11, D_843902E2, 1, 0); + func_8432ECA0(0, 4, 0x1E, func_84333BA8, &D_843861D0[0x4F], 0, 1, 0x11, D_843902E2, 1, 0); +} + +void func_843372D8(void) { + func_8432F638(0xA, 0x35, 0x2E, 8, 0xC8, 0x10); + func_8432ECA0(0, 2, 0x14, func_84336320, &D_843861D0[0x4E], 0, 1, 0x11, 9, 1, 0); + func_8432ECA0(0, 2, 2, func_84336340, &D_843861D0[0x4E], 0, 0xC, 0x11, 9, 1, 0); + func_8432ECA0(0xE, 8, 5, func_84336520, &D_843861D0[0x3D], 0, 2, 0x11, 9, 1, 0); + func_8432F2C8(0x3C, 0x2E, 0xC8, 0, 8); + func_8432ECA0(0x3A, 2, 2, func_84354A10, &D_843861D0[0x3D], 0, 1, 9, 0, 0x18, 0); + func_8432ECA0(0x3C, 2, 2, func_84354A10, &D_843861D0[0x3D], 0, 1, 9, 0, 0x18, 0); +} + +void func_843374A4(void) { + func_8432ED0C(0, 8, 6); + func_8432ECA0(0, 2, 0x50, func_843332B4, &D_843861D0[0x4F], 0, 1, 0x11, D_843902E2, 0, 0); + func_8432ECA0(0, 4, 0x28, func_84333928, &D_843861D0[0x3D], 0, 1, 0x11, D_843902E2, 0, 0); + func_8432ECA0(0, 4, 0x28, func_84333BA8, &D_843861D0[0x4F], 0, 1, 0x11, D_843902E2, 0, 0); +} + +void func_843375B0(void) { + func_8432EC28(0, func_84334350, &D_843861D0[2], 0, 0x12, 0xE, 0, 0, 0); + func_8432EC28(8, func_84334154, &D_843861D0[0x4F], 0, 0x20, 7, 0, 0, 0); + func_8432F638(8, 0xB, 0x10, 8, 0xC8, 0x10); +} + +void func_8433765C(void) { +} + +void func_84337664(void) { +} + +void func_8433766C(void) { + func_8432EC28(0, func_84333E28, &D_843861D0[4], 0, 1, 0x10, 9, 0x14, 0); + func_8432EE5C(0, 0, 0x40, 0xA, 0xC8); + func_8432F440(4, 0xA, 0x19, 0x20, 0xFF); + func_8432EC28(0, func_84334D7C, &D_843861D0[0x46], 0, 3, 0x10, 9, 0x17, 2); + func_8432EC28(6, func_84334D7C, &D_843861D0[0x46], 0, 3, 0x10, 9, 0x2C, 1); + func_8432EC28(0xC, func_84334D7C, &D_843861D0[0x46], 0, 3, 0x10, 9, 0x1A, 1); + func_8432EC28(0x12, func_84334D7C, &D_843861D0[0x46], 0, 2, 0x10, 9, 0x1A, 0); + func_8432EC28(0x14, func_843351C8, &D_843861D0[0x48], 0, 3, 0x11, 9, 0x1A, 0); + func_8432ECA0(0x14, 2, 2, func_843353C4, &D_843861D0[0x3D], 0, 6, 0x11, 9, 0, 0); + func_8432EC28(0x18, func_84335D10, &D_843861D0[0x46], 0, 8, 0x11, 9, 0, 0); +} + +void func_843378CC(void) { +} + +void func_843378D4(void) { + func_8432ED0C(0, 0xFF, 0); + func_8432F638(0xA, 0xB, 0x10, 8, 0xC8, 0x10); + func_8432ECA0(4, 8, 0x14, func_84336520, &D_843861D0[0x3D], 0, 2, 0xE, 0, 0, 0); + func_8432ECA0(4, 8, 0x14, func_84336A58, &D_843861D0[0x4F], 0, 2, 9, 0, 0, 0); + func_8432ECA0(0, 6, 0x28, func_84336830, &D_843861D0[0x4F], 0, 1, 9, 0, 0, 0); + func_8432ECA0(0, 4, 0x3C, func_84336830, &D_843861D0[0x4F], 0, 1, 9, 0, 1, 0); + func_8432ECA0(0, 4, 0x3C, func_84336830, &D_843861D0[0x4F], 0, 1, 9, 0, 2, 0); + func_8432ECA0(0, 3, 0x50, func_84336830, &D_843861D0[0x4F], 0, 1, 9, 0, 3, 0); + func_8432ECA0(0, 3, 0x50, func_84336830, &D_843861D0[0x4F], 0, 1, 9, 0, 4, 0); +} diff --git a/src/fragments/62/fragment62_3223B0.c b/src/fragments/62/fragment62_3223B0.c index 24b552a..82e29ce 100644 --- a/src/fragments/62/fragment62_3223B0.c +++ b/src/fragments/62/fragment62_3223B0.c @@ -1,183 +1,1605 @@ -#include "global.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84337AF0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84337C6C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84337D70.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84337E64.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84337F6C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_843380B0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_843380F0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84338204.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433837C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84338468.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84338620.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_843386B0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84338778.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_843388A8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84338978.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84338A2C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84338AC4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84338B44.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84338C0C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84338C84.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84338D28.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84338D84.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84338E6C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84338EF0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84338FA4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433903C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_843390E0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433913C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84339248.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84339398.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_843393E8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_843394D4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433958C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84339628.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84339688.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84339710.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_843397A0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84339874.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_843398F8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84339994.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84339A30.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84339B20.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84339C0C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84339CDC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84339D74.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84339E38.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84339ECC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_84339F8C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433A024.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433A0E8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433A208.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433A378.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433A4D8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433A5C4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433A698.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433A790.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433A858.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433A954.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433AA28.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433AB08.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433AC00.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433AD70.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433ADE0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433AF20.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433B014.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433B120.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433B1B8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433B290.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433B2E8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433B374.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433B3D8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433B4AC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433B58C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433B6FC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433B7E4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433B988.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433BAA8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433BB78.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433BC38.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433BD08.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433BDFC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433BECC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433BF54.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433C06C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433C284.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433C3A0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433C4EC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433C604.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433C784.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433C940.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3223B0/func_8433CAFC.s") +#include "fragment62.h" +#include "src/math_util.h" + +void func_84337AF0(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + s16 sp24 = func_8140C058(arg0); + + func_8140B938(arg0, (func_81400A78(0xA) * 0.01f) + 0.05f); + func_8140AF24(arg0, (func_81400A78(0x1E) * 0.1f) + 1.0f); + func_8140A3D8(arg0, func_81400A78(0x10000)); + func_8140AD8C(arg0, 5.0f); + func_8140ADA4(arg0, func_81400A78(0xF) + 5.0f); + func_8140BF4C(arg0, func_81400ADC(0x1000, 0x800)); + func_8140D5A0(arg0, sp24); + func_8140BCA8(arg0, sp26); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84337C6C(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84337AF0(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + func_8140BCA8(arg0, 0xA); + } + break; + + case 3: + if (func_8140BDAC(arg0) != 0) { + func_814084D8(arg0, 0, 3, 1, 1, 0); + } + break; + + case 4: + func_81408158(arg0); + break; + } + + if (func_81408368(arg0) != 0) { + func_81409C6C(arg0); + func_8140ADBC(arg0, arg0->unk_78, 0.5f); + func_8140B7C8(arg0, arg0->unk_74, arg0->unk_AE); + } +} + +void func_84337D70(unk_D_8140E720* arg0, s16 arg1) { + s16 sp2E = func_8140C038(arg0); + + func_8140BECC(arg0, 7); + func_8140B938(arg0, 0.1f); + func_8140A52C(arg0, func_81400B00(0xC00), func_81400B00(0x1000), 0); + func_8140D78C(arg0); + func_8140AD8C(arg0, (func_81400A78(6) * 0.5f) + 4.0f); + func_8140BCA8(arg0, sp2E * 2); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84337E64(unk_D_8140E720* arg0) { + s16 temp_a1 = func_8140C058(arg0); + + switch (arg0->unk_B2) { + case 1: + func_84337D70(arg0, temp_a1); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_8140BCA8(arg0, func_81400A78(0xA) + 0x19); + func_81408328(arg0); + } + break; + + case 3: + func_8140B98C(arg0, 0.15f, 0.01f); + func_81409D0C(arg0); + if ((func_8140BDAC(arg0) != 0) && (func_8140BC2C(arg0, 0x20, 0x20) != 0)) { + func_814081BC(arg0); + } + break; + + case 4: + func_81408158(arg0); + break; + } +} + +void func_84337F6C(unk_D_8140E720* arg0) { + UNUSED s32 pad[3]; + s16 sp22 = func_8140C038(arg0); + + func_8140C058(arg0); + func_8140B938(arg0, 0.05f); + func_8140959C(arg0, 4, 2, 2); + func_8140A578(arg0, func_81400B28(0x200, 0xE00)); + func_8140A3C4(arg0, func_81400A78(0x1000) + 0x100); + func_8140BFEC(arg0, -0x1800 - func_81400A78(0x1000)); + func_8140A594(arg0, func_81400B00(0x3000)); + func_8140AD8C(arg0, (func_81400A78(0xF) * 0.1f) + 1.0f); + func_8140D78C(arg0); + func_8140BCA8(arg0, sp22 * 2); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_843380B0(unk_D_8140E720* arg0) { + if (arg0->unk_B8 == 1) { + func_8140A7DC(arg0, arg0->unk_B0, arg0->unk_9A.x); + func_81409D0C(arg0); + } +} + +void func_843380F0(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84337F6C(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408A1C(arg0); + func_81408328(arg0); + func_8140BCA8(arg0, func_81400A78(0xA) + 8); + } + break; + + case 3: + func_8140B98C(arg0, 0.15f, 0.02f); + if (func_8140BDAC(arg0) != 0) { + func_814084D8(arg0, 0, 3, 1, 1, 0); + } + break; + + case 4: + func_81408150(arg0); + break; + } + + if (func_81408368(arg0) != 0) { + func_843380B0(arg0); + } +} + +void func_84338204(unk_D_8140E720* arg0) { + s16 sp56 = func_8140C038(arg0); + f32 var_fa0; + UNUSED s32 pad[2]; + Vec3f sp3C; + Vec3f sp30; + s16 sp2E; + + func_8140BECC(arg0, 7); + func_8140B938(arg0, 0.1f); + func_8140B95C(arg0, 0.2f); + func_8140B974(arg0, 0.02f); + func_8432FBBC(&sp3C); + func_8432FC14(&sp30); + var_fa0 = sp30.x - sp3C.x; + if (var_fa0 <= 0.0f) { + var_fa0 = -var_fa0; + } + sp2E = -MathUtil_Atan2s(var_fa0, sp30.y - sp3C.y); + func_8140A52C(arg0, sp2E + func_81400B00(0x800), func_81400B00(0x800), 0); + func_8140959C(arg0, 4, 2, 2); + func_8140D78C(arg0); + func_8140AD8C(arg0, (func_81400A78(6) * 0.5f) + 5.0f); + func_8140BCA8(arg0, sp56 * 2); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_8433837C(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84338204(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_8140BCA8(arg0, func_81400A78(0x14) + 0xF); + func_81408328(arg0); + } + break; + + case 3: + func_8140BA1C(arg0); + func_81409D0C(arg0); + if (func_8140BDAC(arg0) != 0) { + func_814084D8(arg0, 0, 3, 1, 1, 0); + } + break; + + case 4: + func_81408158(arg0); + break; + } +} + +void func_84338468(unk_D_8140E720* arg0) { + UNUSED s32 pad[2]; + f32 temp_fv0; + Vec3f sp40; + Vec3f sp34; + s16 sp32; + s16 sp30 = func_8140C038(arg0); + s16 sp2E = func_8140C040(arg0); + + func_8140BECC(arg0, 7); + func_8140B938(arg0, 0.1f); + func_8432FBBC(&sp40); + func_8432FC14(&sp34); + + temp_fv0 = sp34.x - sp40.x; + if (temp_fv0 <= 0.0f) { + temp_fv0 = -temp_fv0; + } + + sp32 = MathUtil_Atan2s(temp_fv0, sp34.y - sp40.y) * -1; + func_8140A594(arg0, func_81400B00(0x400)); + + switch (sp2E) { + case 0: + func_8140BF4C(arg0, sp32 + 0x800); + func_8140BFEC(arg0, 0x1800); + break; + + case 1: + func_8140BF4C(arg0, sp32 - 0x1000); + func_8140BFEC(arg0, 0x1000); + break; + + case 2: + func_8140BF4C(arg0, sp32 + 0xC00); + func_8140BFEC(arg0, -0x1400); + break; + + case 3: + func_8140BF4C(arg0, sp32 - 0xA00); + func_8140BFEC(arg0, -0x2000); + break; + } + + func_8140AD8C(arg0, 5.25f); + func_8140D78C(arg0); + func_8140BCA8(arg0, sp30 * 2); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84338620(unk_D_8140E720* arg0) { + switch (arg0->unk_B8) { + case 1: + if (func_81408A78(arg0, 2) != 0) { + func_81408A68(arg0); + func_8140A578(arg0, arg0->unk_AE); + } + break; + + case 2: + func_8140A5B0(arg0, arg0->unk_B0); + break; + } + + if (arg0->unk_B8 > 0) { + func_81409DAC(arg0); + } +} + +void func_843386B0(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84338468(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408A1C(arg0); + func_81408328(arg0); + func_8140BCA8(arg0, 0x1E); + } + break; + + case 3: + func_8140BDD0(arg0); + break; + + case 4: + func_81408150(arg0); + break; + } + + if (func_81408368(arg0) != 0) { + func_84338620(arg0); + } +} + +void func_84338778(unk_D_8140E720* arg0) { + s16 sp4E = func_8140C040(arg0); + Vec3f sp40; + Vec3f sp34; + s16 temp_v1; + + func_8140BECC(arg0, 7); + func_8140B938(arg0, 0.1f); + func_8140B95C(arg0, 0.1f); + func_8432FBBC(&sp40); + func_8432FC14(&sp34); + + temp_v1 = func_8140119C(sp40, sp34); + + switch (sp4E) { + case 0: + func_8140A578(arg0, temp_v1 + 0x2000); + func_8140A594(arg0, -0x4000); + break; + + case 1: + func_8140A578(arg0, temp_v1 + 0x6000); + func_8140A594(arg0, -0x4000); + break; + } + + func_8140D5A0(arg0, func_8140C058(arg0)); + func_814081BC(arg0); +} + +void func_843388A8(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84338778(arg0); + break; + + case 2: + func_8140BC5C(arg0, 0xFF, 4); + break; + + case 3: + func_8140826C(arg0, 0x46); + break; + + case 4: + func_8140BC5C(arg0, 0, 0x10); + break; + + case 5: + func_81408158(arg0); + break; + } + + func_8140B98C(arg0, 50.0f, 0.2f); + func_8140BA84(arg0, 1.0f, 0.1f); +} + +void func_84338978(unk_D_8140E720* arg0) { + switch (func_8140C040(arg0)) { + case 0: + func_8140B938(arg0, 0.5f); + func_8140B95C(arg0, 1.2f); + func_8140B974(arg0, 0.1f); + break; + + case 1: + func_8140B938(arg0, 0.3f); + func_8140B95C(arg0, 0.8f); + func_8140B974(arg0, 0.05f); + break; + } + + func_8140D5A0(arg0, 0x26); + func_814081BC(arg0); +} + +void func_84338A2C(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84338978(arg0); + break; + + case 2: + func_8140BA1C(arg0); + func_814084D8(arg0, 0, 7, 1, 2, 0); + func_8140BC2C(arg0, 0x20, 8); + break; + + case 3: + func_81408150(arg0); + break; + } +} + +void func_84338AC4(unk_D_8140E720* arg0) { + UNUSED s32 pad; + + func_8140C038(arg0); + func_8140B938(arg0, 0.5f); + func_8140A52C(arg0, func_81400A78(0x10000), func_81400A78(0x10000), 0); + func_8140AD8C(arg0, 1.0f); + func_8140D5A0(arg0, 0x27); + func_814081BC(arg0); +} + +void func_84338B44(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84338AC4(arg0); + break; + + case 2: + func_8140B98C(arg0, 0.3f, 0.05f); + func_8140BC2C(arg0, 0x20, 0x10); + func_8140ADBC(arg0, 0.5f, 0.05f); + func_81409D0C(arg0); + func_81408E90(arg0, -1.0f); + func_8140826C(arg0, 0x10); + break; + + case 3: + func_81408150(arg0); + break; + } +} + +void func_84338C0C(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C040(arg0); + + func_8140B938(arg0, 0.6f); + + if (sp26 == 1) { + func_81408F38(arg0, 6.0f); + } + + func_8140D5A0(arg0, 0x28); + func_8140BC20(arg0, 0xC8); + func_814081BC(arg0); +} + +void func_84338C84(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84338C0C(arg0); + break; + + case 2: + if (func_8140BC2C(arg0, 0x80, 0x20) != 0) { + func_814081BC(arg0); + } + break; + + case 3: + func_81408158(arg0); + break; + } + + func_8140B98C(arg0, 0.35f, 0.05f); +} + +void func_84338D28(unk_D_8140E720* arg0) { + func_8140B938(arg0, 0.7f); + func_8140AD8C(arg0, 12.0f); + func_8140D5A0(arg0, 0x28); + func_8140BC20(arg0, 0xFF); + func_814081BC(arg0); +} + +void func_84338D84(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84338D28(arg0); + break; + + case 2: + func_8432D8E8(arg0, func_84338C84, &D_843861D0[8], 1, 0, 0); + func_8432D8E8(arg0, func_84338C84, &D_843861D0[8], 1, 0, 1); + func_8432D844(arg0, func_84338B44, &D_843861D0[0xA], 4); + func_8140826C(arg0, 0x14); + break; + + case 3: + func_81408158(arg0); + break; + } + + func_81409D0C(arg0); +} + +void func_84338E6C(unk_D_8140E720* arg0) { + UNUSED s32 pad; + + func_8140C038(arg0); + func_8140B938(arg0, 0.2f); + func_8140A52C(arg0, func_81400A78(0x10000), func_81400A78(0x10000), 0); + func_8140AD8C(arg0, 0.5f); + func_8140D5A0(arg0, 0x27); + func_814081BC(arg0); +} + +void func_84338EF0(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84338E6C(arg0); + break; + + case 2: + func_8140B98C(arg0, 0.1f, 0.02f); + func_8140BC2C(arg0, 0x20, 0xC); + func_81409D0C(arg0); + func_81408E90(arg0, -0.5f); + func_8140826C(arg0, 0x10); + break; + + case 3: + func_81408150(arg0); + break; + } +} + +void func_84338FA4(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C040(arg0); + + func_8140B938(arg0, 0.2f); + + switch (sp26) { + case 1: + func_81408F38(arg0, 3.0f); + break; + + case 2: + func_81408F38(arg0, 6.0f); + break; + } + + func_8140D5A0(arg0, 0x28); + func_8140BC20(arg0, 0xC8); + func_814081BC(arg0); +} + +void func_8433903C(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84338FA4(arg0); + break; + + case 2: + if (func_8140BC2C(arg0, 0x80, 0x20) != 0) { + func_814081BC(arg0); + } + break; + + case 3: + func_81408158(arg0); + break; + } + + func_8140B98C(arg0, 0.1f, 0.02f); +} + +void func_843390E0(unk_D_8140E720* arg0) { + func_8140B938(arg0, 0.2f); + func_8140AD8C(arg0, 10.0f); + func_8140D5A0(arg0, 0x28); + func_8140BC20(arg0, 0xFF); + func_814081BC(arg0); +} + +void func_8433913C(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_843390E0(arg0); + break; + + case 2: + func_8432D8E8(arg0, func_8433903C, &D_843861D0[8], 1, 0, 0); + func_8432D8E8(arg0, func_8433903C, &D_843861D0[8], 1, 0, 1); + func_8432D8E8(arg0, func_8433903C, &D_843861D0[8], 1, 0, 2); + func_8432D844(arg0, func_84338EF0, &D_843861D0[0xA], 4); + func_8140826C(arg0, 0x20); + break; + + case 3: + func_81408158(arg0); + break; + } + func_81409D0C(arg0); +} + +void func_84339248(unk_D_8140E720* arg0) { + UNUSED s32 pad[3]; + s16 sp22 = func_8140C038(arg0); + s16 sp20 = func_8140C058(arg0); + + func_8140B938(arg0, 0.25f); + func_8140959C(arg0, 4, 2, 2); + func_8140A578(arg0, func_81400B28(0x200, -0xE00)); + func_8140A3C4(arg0, func_81400A78(0x400) + 0x100); + func_8140BFEC(arg0, func_81400A78(0x1000) + 0x1000); + func_8140A594(arg0, func_81400B00(0x1800)); + func_8140AD8C(arg0, (func_81400A78(0x28) * 0.1f) + 1.0f); + func_8140D5A0(arg0, sp20); + func_8140BC20(arg0, 0xC8); + func_8140BCA8(arg0, sp22 * 2); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84339398(unk_D_8140E720* arg0) { + if (arg0->unk_B8 == 1) { + func_8140A76C(arg0, arg0->unk_B0, arg0->unk_9A.x); + func_81409D0C(arg0); + func_81408E90(arg0, -0.2f); + } +} + +void func_843393E8(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84339248(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408A1C(arg0); + func_81408328(arg0); + } + break; + + case 3: + func_8140B98C(arg0, 0.7f, 0.1f); + func_814084D8(arg0, 0, 7, 1, 2, 0); + break; + + case 4: + func_81408150(arg0); + break; + } + + if (func_81408368(arg0) != 0) { + func_84339398(arg0); + } +} + +void func_843394D4(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + + func_8140B938(arg0, 0.75f - (sp26 * 0.1f)); + func_8140AD8C(arg0, 10.0f); + func_8140D5A0(arg0, 0x28); + func_8140BC20(arg0, (0xFF - (sp26 << 5)) & 0xFF); + func_8140BCA8(arg0, sp26 + 1); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_8433958C(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_843394D4(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + } + break; + + case 3: + func_8140826C(arg0, 0xA); + func_81409D0C(arg0); + break; + + case 4: + func_81408158(arg0); + break; + } +} + +void func_84339628(unk_D_8140E720* arg0) { + func_8140B938(arg0, 1.0f); + func_8140B95C(arg0, 2.0f); + func_8140B974(arg0, 0.75f); + func_8140D5A0(arg0, func_8140C058(arg0)); + func_814081BC(arg0); +} + +void func_84339688(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84339628(arg0); + break; + + case 2: + func_814084D8(arg0, 0, 3, 1, 1, 0); + func_8140BA1C(arg0); + break; + + case 3: + func_81408158(arg0); + break; + } +} + +void func_84339710(unk_D_8140E720* arg0) { + func_8140B938(arg0, 0.4f); + func_8140B95C(arg0, 0.7f); + func_8140B974(arg0, 0.1f); + func_8140D5A0(arg0, func_8140C058(arg0)); + func_814083E8(arg0, 1); + func_8140A2CC(arg0, func_81400A78(0x10000)); + func_814081BC(arg0); +} + +void func_843397A0(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84339710(arg0); + break; + + case 2: + if (func_8140BA48(arg0) != 0) { + func_8140B95C(arg0, 0.2f); + } + break; + + case 3: + func_8140BA48(arg0); + break; + + case 4: + func_8140B95C(arg0, 0.7f); + func_8140B974(arg0, 0.1f); + arg0->unk_B2 = 2; + break; + } + + if (func_8140BDAC(arg0) != 0) { + func_81408158(arg0); + } +} + +void func_84339874(unk_D_8140E720* arg0) { + func_8140B938(arg0, 2.0f); + func_81408F38(arg0, 10.0f); + func_8140D5A0(arg0, func_8140C058(arg0)); + func_8140BC20(arg0, 0xFF); + func_814083E8(arg0, 1); + func_8140A2CC(arg0, func_81400A78(0x10000)); + func_814081BC(arg0); +} + +void func_843398F8(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84339874(arg0); + break; + + case 2: + func_8140B9D0(arg0, 5.0f, 1.0f); + break; + + case 3: + func_8140B9D0(arg0, 0.0f, 1.0f); + func_8140BC2C(arg0, 0x40, 0x20); + break; + + case 4: + func_81408158(arg0); + break; + } +} + +void func_84339994(unk_D_8140E720* arg0) { + func_8140C058(arg0); + func_8140B938(arg0, 2.0f); + func_81408F38(arg0, 10.0f); + func_8140D658(arg0, func_81400A78(6)); + func_8140D68C(arg0, func_81400A78(6)); + func_814083E8(arg0, 1); + func_8140A2CC(arg0, func_81400A78(0x10000)); + func_814081BC(arg0); +} + +void func_84339A30(unk_D_8140E720* arg0) { + func_8140C058(arg0); + + switch (arg0->unk_B2) { + case 1: + func_84339994(arg0); + break; + + case 2: + func_8140B9D0(arg0, 5.0f, 1.0f); + break; + + case 3: + func_8140B9D0(arg0, 0.0f, 1.0f); + func_8140BC2C(arg0, 0x40, 0x20); + break; + + case 4: + func_81408158(arg0); + break; + } + + if (D_8140E6C4 == 0) { + func_8140D658(arg0, func_81400A78(6)); + func_8140D68C(arg0, func_81400A78(6)); + } +} + +void func_84339B20(unk_D_8140E720* arg0) { + UNUSED s16 pad; + s16 sp24; + + func_8140C058(arg0); + sp24 = func_8140C038(arg0); + func_8140B938(arg0, 2.0f); + func_81408F38(arg0, 10.0f); + func_8140D530(arg0, 0xA); + func_8140D624(arg0, sp24 % 6); + func_814083E8(arg0, 1); + func_8140BCA8(arg0, sp24 * 2); + func_8140A5B0(arg0, (sp24 << 0x10) / 10); + func_8140A3EC(arg0, func_81400B4C(0x800, 0x400)); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84339C0C(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84339B20(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + } + break; + + case 3: + func_8140B9D0(arg0, 4.0f, 1.0f); + break; + + case 4: + func_8140826C(arg0, 8); + break; + + case 5: + func_8140B9D0(arg0, 0.0f, 1.0f); + break; + + case 6: + func_81408158(arg0); + break; + } + + func_8140A4DC(arg0); +} + +void func_84339CDC(unk_D_8140E720* arg0) { + func_8140C038(arg0); + func_8140D5A0(arg0, func_8140C058(arg0)); + func_8140B938(arg0, 1.35f); + func_81408ED0(arg0, 5.0f); + func_8140AD8C(arg0, 5.5f); + func_8140A52C(arg0, func_81400A78(0x10000), func_81400A78(0x10000), 0); + func_814081BC(arg0); +} + +void func_84339D74(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84339CDC(arg0); + break; + + case 2: + func_8140BC2C(arg0, 0x20, 0x16); + func_814084D8(arg0, 0, 7, 1, 2, 0); + break; + + case 3: + func_81408150(arg0); + break; + } + + if (func_8140819C(arg0) != 0) { + func_8140ADBC(arg0, 3.4f, 1.0f); + func_81409D0C(arg0); + } +} + +void func_84339E38(unk_D_8140E720* arg0) { + func_8140C038(arg0); + func_8140D5A0(arg0, func_8140C058(arg0)); + func_8140B938(arg0, 1.0f); + func_81408ED0(arg0, 5.0f); + func_8140AD8C(arg0, 4.0f); + func_8140A52C(arg0, func_81400A78(0x10000), func_81400A78(0x10000), 0); + func_814081BC(arg0); +} + +void func_84339ECC(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84339E38(arg0); + break; + + case 2: + func_8140BC2C(arg0, 0x20, 0x16); + func_814084D8(arg0, 0, 7, 1, 2, 0); + break; + + case 3: + func_81408150(arg0); + break; + } + + if (func_8140819C(arg0) != 0) { + func_8140ADBC(arg0, 2.5f, 0.75f); + func_81409D0C(arg0); + } +} + +void func_84339F8C(unk_D_8140E720* arg0) { + func_8140C038(arg0); + func_8140D5A0(arg0, func_8140C058(arg0)); + func_8140B938(arg0, 0.6f); + func_81408ED0(arg0, 5.0f); + func_8140AD8C(arg0, 3.0f); + func_8140A52C(arg0, func_81400A78(0x10000), func_81400A78(0x10000), 0); + func_814081BC(arg0); +} + +void func_8433A024(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84339F8C(arg0); + break; + + case 2: + func_8140BC2C(arg0, 0x20, 0x16); + func_814084D8(arg0, 0, 7, 1, 2, 0); + break; + + case 3: + func_81408150(arg0); + break; + } + + if (func_8140819C(arg0) != 0) { + func_8140ADBC(arg0, 1.5f, 0.4f); + func_81409D0C(arg0); + } +} + +void func_8433A0E8(unk_D_8140E720* arg0) { + UNUSED s32 pad; + + switch (func_8140C058(arg0)) { + case 0: + func_8140D530(arg0, 0xA); + func_8140D624(arg0, func_81400A78(6)); + break; + + case 1: + func_8140D658(arg0, func_81400A78(6)); + func_8140D68C(arg0, func_81400A78(6)); + break; + + case 2: + func_8140D708(arg0, func_81400A78(6)); + break; + } + + func_8140B938(arg0, 0.8f); + func_81408ED0(arg0, 5.0f); + func_8140AD8C(arg0, 3.0f); + func_8140A52C(arg0, func_81400A78(0x10000), func_81400A78(0x10000), 0); + func_814081BC(arg0); +} + +void func_8433A208(unk_D_8140E720* arg0) { + s16 sp2E = func_8140C058(arg0); + + switch (arg0->unk_B2) { + case 1: + func_8433A0E8(arg0); + break; + + case 2: + func_8140BC2C(arg0, 0x20, 0x16); + func_814084D8(arg0, 0, 7, 1, 2, 0); + break; + + case 3: + func_81408150(arg0); + break; + } + + if (func_8140819C(arg0) != 0) { + func_8140ADBC(arg0, 1.5f, 0.5f); + func_81409D0C(arg0); + + switch (sp2E) { + case 0: + func_8140D624(arg0, func_81400A78(6)); + break; + + case 1: + if (D_8140E6C8 == 0) { + func_8140D658(arg0, func_81400A78(6)); + func_8140D68C(arg0, func_81400A78(6)); + } + break; + + case 2: + func_8140D708(arg0, func_81400A78(6)); + break; + } + } +} + +void func_8433A378(unk_D_8140E720* arg0) { + s16 sp2E; + s16 sp2C; + s16 sp2A; + + sp2E = func_8140C038(arg0); + sp2C = func_8140C058(arg0); + sp2A = func_8140C040(arg0); + + func_8140D5A0(arg0, sp2C); + func_8140B938(arg0, 0.6f); + func_8140B95C(arg0, 1.2f); + func_8140B974(arg0, 0.2f); + + switch (sp2A) { + case 0: + func_81408BE0(arg0, 0.0f, 10.0f, 0.0f); + break; + + case 1: + func_81408BE0(arg0, 0.0f, -5.0f, 10.0f); + break; + + case 2: + func_81408BE0(arg0, 0.0f, -5.0f, -10.0f); + break; + } + + func_81408ED0(arg0, 5.0f); + func_8140AD8C(arg0, 1.0f); + func_8140A52C(arg0, func_81400A78(0x10000), func_81400A78(0x10000), 0); + func_8140BCA8(arg0, sp2E); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_8433A4D8(unk_D_8140E720* arg0) { + func_8140C040(arg0); + + switch (arg0->unk_B2) { + case 1: + func_8433A378(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + } + break; + + case 3: + func_8140BA1C(arg0); + func_8140BC2C(arg0, 0x20, 0x16); + func_814084D8(arg0, 0, 7, 1, 2, 0); + func_8140ADBC(arg0, 1.5f, 0.1f); + func_81409D0C(arg0); + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_8433A5C4(unk_D_8140E720* arg0) { + s16 sp2E = func_8140C038(arg0); + s16 sp2C = func_8140C058(arg0); + + func_8140959C(arg0, 0, 0xF, 0x14); + func_81408E90(arg0, 5.0f); + func_8140B938(arg0, 0.2f); + func_8140AD8C(arg0, 2.5f); + func_8140A52C(arg0, func_81400B00(0x2000), func_81400B00(0x2000), 0); + func_8140D5A0(arg0, sp2C); + func_8140BCA8(arg0, sp2E * 4); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_8433A698(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433A5C4(arg0); + break; + + case 2: + if (func_8140826C(arg0, arg0->unk_A6) != 0) { + func_8140BCA8(arg0, 2); + func_81408328(arg0); + } + break; + + case 3: + func_814084D8(arg0, 0, 7, 1, 1, 0); + func_8140B98C(arg0, 0.5f, 0.1f); + func_81409D0C(arg0); + if (func_8140BDAC(arg0) != 0) { + func_8140BC2C(arg0, 0, 0x20); + } + break; + + case 4: + func_81408158(arg0); + break; + } +} + +void func_8433A790(unk_D_8140E720* arg0) { + s16 sp2E = func_8140C038(arg0); + + func_8140C058(arg0); + func_8140959C(arg0, 0xA, 0x14, 0x14); + func_8140B938(arg0, 0.25f); + func_8140AD8C(arg0, 2.5f); + func_8140A52C(arg0, func_81400B00(0x2000), func_81400B00(0x2000), 0); + func_8140D750(arg0); + func_8140BC20(arg0, 0xC8); + func_8140BCA8(arg0, sp2E * 4); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_8433A858(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433A790(arg0); + break; + + case 2: + if (func_8140826C(arg0, arg0->unk_A6) != 0) { + func_8140BCA8(arg0, 2); + func_81408328(arg0); + } + break; + + case 3: + func_814084D8(arg0, 0, 7, 1, 1, 0); + func_8140B98C(arg0, 0.4f, 0.1f); + func_81409D0C(arg0); + if (func_8140BDAC(arg0) != 0) { + func_8140BC2C(arg0, 0, 0x20); + } + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_8433A954(unk_D_8140E720* arg0) { + s16 sp2E = func_8140C038(arg0); + + func_8140C058(arg0); + func_8140959C(arg0, 0xA, 0x14, 0x14); + func_8140B938(arg0, 0.4f); + func_8140AD8C(arg0, 2.5f); + func_8140A52C(arg0, func_81400B00(0x2000), func_81400B00(0x2000), 0); + func_8140BAC8(arg0, 0xFF, 0xFF, 0xFF); + func_8140D78C(arg0); + func_8140BCA8(arg0, sp2E * 4); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_8433AA28(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433A954(arg0); + break; + + case 2: + if (func_8140826C(arg0, arg0->unk_A6) != 0) { + func_81408328(arg0); + func_814083E8(arg0, 1); + } + break; + + case 3: + func_8140B98C(arg0, 0.5f, 0.025f); + func_814084D8(arg0, 2, 7, 1, 1, 0); + func_81409D0C(arg0); + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_8433AB08(unk_D_8140E720* arg0) { + Vec3s sp28; + UNUSED s16 pad; + s16 sp24; + + func_8140C058(arg0); + sp24 = func_8140C038(arg0); + func_8140B938(arg0, 0.05f); + func_8140A428(arg0, arg0->unk_94.x, arg0->unk_94.y + 0x8000); + func_8140A3A0(arg0, 0x800, 0x300); + sp28.x = sp24 << 0xC; + sp28.y = func_81400B4C(0x3000, 0x1000); + sp28.z = 0; + func_8140A4F0(arg0, sp28); + func_8140D78C(arg0); + func_8140BCA8(arg0, func_81400A78(0x10) + 8); + func_8140AD8C(arg0, 4.0f); + func_814081BC(arg0); +} + +void func_8433AC00(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433AB08(arg0); + break; + + case 2: + func_8140B98C(arg0, 0.15f, 0.01f); + func_8140ADBC(arg0, 1.0f, 0.7f); + func_8140A6BC(arg0); + if (func_8140BDD0(arg0) != 0) { + func_8140BCA8(arg0, func_81400ADC(0xC, 0x20)); + if (arg0->unk_94.y >= arg0->unk_A0.y) { + func_8140A400(arg0, -0x4000); + } else { + func_8140A400(arg0, 0x4000); + } + } + break; + + case 3: + func_8140A690(arg0); + func_8140ADBC(arg0, 0.5f, 0.2f); + func_8140BDD0(arg0); + break; + + case 4: + func_8140A690(arg0); + func_814084D8(arg0, 0, 3, 1, 1, 0); + break; + + case 5: + func_81408150(arg0); + break; + } + + if (func_8140819C(arg0) != 0) { + func_81409D5C(arg0); + } +} + +void func_8433AD70(unk_D_8140E720* arg0) { + func_8140B938(arg0, 0.2f); + func_8140D5A0(arg0, func_8140C058(arg0)); + func_8140BC20(arg0, 0xC8); + func_8140BCA8(arg0, 0x18); + arg0->unk_74 = 0.02f; + func_814081BC(arg0); +} + +void func_8433ADE0(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433AD70(arg0); + break; + + case 2: + func_8140B98C(arg0, 2.0f, 0.02f); + func_8140BBF0(arg0, 0xC8, 2); + func_8140BDD0(arg0); + break; + + case 3: + func_81400760(&arg0->unk_74, 0.008f, 0.001f); + func_8140B98C(arg0, 2.0f, arg0->unk_74); + func_8140BAE4(arg0, 0x78, 8); + func_8140BB44(arg0, 0x96, 8); + func_8140BB14(arg0, 0x96, 8); + func_8140BB90(arg0, 0x78, 8); + func_8140BBC0(arg0, 0x96, 8); + func_8140BBF0(arg0, 0x96, 8); + func_8140BC5C(arg0, 0, 0xC); + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_8433AF20(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C040(arg0); + + func_8140B938(arg0, 0.05f); + func_8140B95C(arg0, 0.3f); + func_8140B974(arg0, 0.005f); + + switch (sp26) { + case 0: + func_8140A2B8(arg0, 0); + break; + + case 1: + func_8140A2B8(arg0, 0x5500); + break; + + case 2: + func_8140A2B8(arg0, -0x5600); + break; + } + + func_8140908C(arg0, 10.0f); + func_8140D5A0(arg0, func_8140C058(arg0)); + func_8140BC20(arg0, 0xC8); + func_8140BCA8(arg0, 0x18); + func_814081BC(arg0); +} + +void func_8433B014(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433AF20(arg0); + break; + + case 2: + func_8140BBF0(arg0, 0xC8, 2); + func_8140BDD0(arg0); + break; + + case 3: + func_8140BAE4(arg0, 0x78, 8); + func_8140BB44(arg0, 0x96, 8); + func_8140BB14(arg0, 0x96, 8); + func_8140BB90(arg0, 0x78, 8); + func_8140BBC0(arg0, 0x96, 8); + func_8140BBF0(arg0, 0x96, 8); + func_8140BC5C(arg0, 0, 0xC); + break; + + case 4: + func_81408150(arg0); + break; + } + + func_8140BA1C(arg0); +} + +void func_8433B120(unk_D_8140E720* arg0) { + UNUSED s16 pad; + s16 sp2C; + + func_8140C038(arg0); + sp2C = func_8140C058(arg0); + func_8140B938(arg0, 0.5f); + func_8140A52C(arg0, func_81400A78(0x10000), func_81400A78(0x10000), 0); + func_81408ED0(arg0, 5.0f); + func_8140AD8C(arg0, 1.0f); + func_8140D5A0(arg0, sp2C); + func_814081BC(arg0); +} + +void func_8433B1B8(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433B120(arg0); + break; + + case 2: + func_8140B98C(arg0, 0.3f, 0.02f); + func_8140BC2C(arg0, 0x20, 0xC); + func_81409D0C(arg0); + func_81408E90(arg0, -1.0f); + func_8140826C(arg0, 0x10); + break; + + case 3: + func_81408150(arg0); + break; + } + + if (arg0->unk_2C.y < 0.0f) { + func_81408150(arg0); + } +} + +void func_8433B290(void) { + func_8432EC28(4, func_8433958C, &D_843861D0[8], 0, 4, 0x11, D_843902E2, 0, 0); +} + +void func_8433B2E8(void) { + s32 sp34 = 0; + + if (func_8432F9CC(0x7C) != 0) { + sp34 = 1; + } + + if (func_8432F9CC(4) != 0) { + sp34 = 1; + } + + if (sp34 == 0) { + func_8432EC28(0, func_8433958C, &D_843861D0[8], 0, 4, 0x11, D_843902E2, 0, 0); + } +} + +void func_8433B374(void) { + func_8432ECA0(0, 1, 0x3C, func_84337E64, &D_843861D0[0x45], 0, 1, 0x11, D_843902E2, 0, 0); +} + +void func_8433B3D8(void) { + func_8432EC28(0, func_843529D8, &D_843861D0[0x34], 0, 1, 0x11, 9, 3, 5); + func_8432EC28(0, func_8433AC00, &D_843861D0[0x45], 0, 0x10, 0x11, 9, 0, 0); + func_8432EC28(8, func_8433AC00, &D_843861D0[0x45], 0, 0x10, 0x11, 9, 0, 0); +} + +void func_8433B4AC(void) { + func_8432EC28(3, func_84338A2C, &D_843861D0[0xE], 0, 1, 0x11, D_843902E2, 0, 1); + func_8432EC28(3, func_84338A2C, &D_843861D0[0x19], 0, 1, 0x11, D_843902E2, 0, 1); + func_8432EC28(4, func_8433913C, &D_8140E460, 0, 1, 0x11, D_843902E2, 0, 0); +} + +void func_8433B58C(void) { + func_8432ECA0(0, 1, 0xF, func_8433A024, &D_843861D0[0x19], 0, 1, 0x10, D_843902E2, 0x26, 0); + func_8432EC28(0xC, func_8433B014, &D_843861D0[0x4B], 0, 1, 0xA, 0, 0x4C, 0); + func_8432EC28(0xC, func_8433B014, &D_843861D0[0x4B], 0, 1, 0xA, 0, 0x4C, 1); + func_8432EC28(0xC, func_8433B014, &D_843861D0[0x4B], 0, 1, 0xA, 0, 0x4C, 2); + func_8432ECA0(4, 1, 0x10, func_8433B1B8, &D_843861D0[0xA], 0, 2, 0x11, D_843902E2, 0x4C, 0); +} + +void func_8433B6FC(void) { + func_8432ED0C(0, 0x40, 6); + func_8432EC28(3, func_84338A2C, &D_843861D0[0xE], 0, 1, 0x11, D_843902E2, 0, 0); + func_8432EC28(3, func_84338A2C, &D_843861D0[0x19], 0, 1, 0x11, D_843902E2, 0, 0); + func_8432EC28(4, func_84338D84, &D_843861D0[8], 0, 1, 0x11, D_843902E2, 0, 0); +} + +void func_8433B7E4(void) { + func_8432F440(4, 0xA, 0x35, 0x10, 0xFF); + func_8432EC28(0, func_84333E28, &D_843861D0[4], 0, 1, 0x10, D_843902E2, 0x35, 0); + func_8432ECA0(0, 5, 3, func_84339D74, &D_843861D0[0x19], 0, 8, 0x10, D_843902E2, 0x26, 0); + func_8432ECA0(0xA, 1, 8, func_8433A698, &D_843861D0[0x19], 0, 3, 0x11, D_843902E2, 0x26, 0); + func_8432EC28(0xC, func_8433ADE0, &D_843861D0[0x4B], 0, 1, 0xA, 0, 0x4C, 0); + func_8432ECA0(2, 1, 0x10, func_8433B1B8, &D_843861D0[0xA], 0, 4, 0x11, D_843902E2, 0x4C, 0); +} + +void func_8433B988(void) { + func_8432ED74(0, 0, 0x20, 0xA, 0xA0); + func_8432ED0C(0, 8, 0x35); + func_8432EC28(0, func_84339688, &D_843861D0[0x53], 0, 1, 0x10, D_843902E2, 0x40, 0); + func_8432EC28(6, func_843397A0, &D_843861D0[0x53], 0x6E, 1, 0x10, D_843902E2, 0x40, 1); + func_8432ECA0(0, 3, 0x1E, func_843393E8, &D_843861D0[0x4A], 0, 1, 0x11, D_843902E2, 0x13, 0); +} + +void func_8433BAA8(void) { + func_8432ED74(0, 0, 0x20, 0xA, 0xA0); + func_8432ED0C(0, 8, 6); + func_8432EC28(0, func_84339688, &D_843861D0[0x53], 0, 1, 0x10, D_843902E2, 0xD, 0); + func_8432EC28(6, func_843397A0, &D_843861D0[0x53], 0x46, 1, 0x10, D_843902E2, 0xD, 1); +} + +void func_8433BB78(void) { + func_8432ED0C(0, 8, 6); + func_8432ECA0(0, 1, 0x3C, func_8433837C, &D_843861D0[0x45], 0, 4, 0x11, D_843902E2, 0, 0); + func_8432ECA0(0, 1, 0x3C, func_843380F0, &D_843861D0[0x45], 0, 1, 0x11, D_843902E2, 0, 0); +} + +void func_8433BC38(void) { + func_8432ED74(0, 0, 0x20, 0xA, 0xA0); + func_8432ED0C(0, 8, 6); + func_8432EC28(0, func_84339688, &D_843861D0[0x53], 0, 1, 0x10, D_843902E2, 0x41, 0); + func_8432EC28(6, func_843397A0, &D_843861D0[0x53], 0x46, 1, 0x10, D_843902E2, 0x41, 1); +} + +void func_8433BD08(void) { + func_8432ED74(0, 0, 0x20, 0xA, 0xA0); + func_8432F2C8(0, 0xA, 0xFF, 0, 0x10); + func_8432ED0C(0, 0x20, 0x10); + func_8432EC28(0, func_84339688, &D_843861D0[0x53], 0, 1, 0x10, D_843902E2, 0x2C, 0); + func_8434A844(); + func_8432EC28(6, func_843397A0, &D_843861D0[0x53], 0x46, 1, 0x10, D_843902E2, 0x2C, 1); +} + +void func_8433BDFC(void) { + func_8432ED74(0, 0, 0x20, 0xA, 0xA0); + func_8432ED0C(0, 8, 0x22); + func_8432EC28(0, func_84339688, &D_843861D0[0x53], 0, 1, 0x10, D_843902E2, 0x17, 0); + func_8432EC28(6, func_843397A0, &D_843861D0[0x53], 0x46, 1, 0x10, D_843902E2, 0x17, 1); +} + +void func_8433BECC(void) { + func_8432ED74(0, 0, 0x20, 0xA, 0xA0); + func_8432ED0C(0, 8, 0x22); + func_8432EC28(0, func_84339688, &D_843861D0[0x53], 0, 1, 0x10, D_843902E2, 0x17, 0); +} + +void func_8433BF54(void) { + func_8432F440(4, 0xA, 0x35, 0xC, 0xFF); + func_8432EC28(0, func_84333E28, &D_843861D0[4], 0, 1, 0x10, D_843902E2, 0x35, 0); + func_8432ECA0(0, 5, 3, func_84339D74, &D_843861D0[0x19], 0, 8, 0x10, D_843902E2, 0x26, 0); + func_8432ECA0(0xA, 1, 3, func_8433A698, &D_843861D0[0x19], 0, 8, 0x11, D_843902E2, 0x26, 0); +} + +void func_8433C06C(void) { + func_8432F538(0, 0xA, 0x35, 0x10, 0xDC, 0x20); + func_8432EC28(3, func_84333E28, &D_843861D0[4], 0, 1, 0x10, D_843902E2, 0x35, 0); + func_8432ECA0(0, 5, 3, func_84339D74, &D_843861D0[0x19], 0, 8, 0x10, D_843902E2, 0x26, 0); + func_8432ECA0(4, 4, 2, func_843398F8, &D_843861D0[0x54], 0, 1, 0x10, D_843902E2, 0x33, 0); + func_8432ECA0(0xC, 1, 3, func_8433A698, &D_843861D0[0x19], 0, 8, 0x11, D_843902E2, 0x26, 0); + func_8432ECA0(0xE, 4, 2, func_84350FC0, &D_843861D0[0x3D], 0, 6, 0x10, 0x64, 0, 0); + func_8432ECA0(0, 2, 6, func_84352530, &D_843861D0[0x42], 0, 8, 0x11, 9, 0x18, 0xB); + func_8432ED0C(0x30, 0x20, 0xA); +} + +void func_8433C284(void) { + func_8432F728(4, 0x32, 0x20, 0xA0); + func_8432ECA0(4, 4, 3, func_84339A30, &D_843861D0[0x54], 0, 1, 0x10, D_843902E2, 0, 0); + func_8432EC28(3, func_84333EE8, &D_843861D0[0x1B], 0, 1, 0x10, D_843902E2, 0x23, 0); + func_8432ECA0(3, 5, 3, func_8433A208, &D_843861D0[0x19], 0, 8, 0x10, D_843902E2, 1, 0); + func_8432ED0C(0x30, 0x20, 0xA); +} + +void func_8433C3A0(void) { + func_8432F440(4, 0xA, 0x23, 0x10, 0xFF); + func_8432EC28(3, func_84333E28, &D_843861D0[4], 0, 1, 0x10, D_843902E2, 0x35, 0); + func_8432ECA0(3, 5, 3, func_8433A208, &D_843861D0[0x19], 0, 8, 0x10, D_843902E2, 0, 0); + func_8432EC28(0, func_8433AC00, &D_843861D0[0x45], 0, 0x10, 0x11, 9, 0, 0); + func_8432EC28(8, func_8433AC00, &D_843861D0[0x45], 0, 0x10, 0x11, 9, 0, 0); + func_8432ED0C(0x30, 0x20, 0xA); +} + +void func_8433C4EC(void) { + func_8432F728(4, 0x32, 0x20, 0xA0); + func_8432EC28(4, func_84339C0C, &D_843861D0[0x54], 0, 9, 0x10, D_843902E2, 0, 0); + func_8432ECA0(3, 5, 3, func_8433A208, &D_843861D0[0x19], 0, 8, 0x10, D_843902E2, 0, 0); + func_8432ECA0(0xC, 1, 3, func_8433A698, &D_843861D0[0x19], 0, 8, 0x11, D_843902E2, 0x39, 0); + func_8432ED0C(0x16, 0x20, 0xA); +} + +void func_8433C604(void) { + UNUSED s32 pad; + + func_8432F2C8(0, 0x19, 0xFF, 0, 8); + func_8432F440(4, 0x19, 0x19, 0x10, 0xFF); + func_8432EC28(3, func_84333E28, &D_843861D0[4], 0, 1, 0x10, D_843902E2, 0x19, 0); + func_8432EC28(0, func_843398F8, &D_843861D0[0x34], 0, 1, 0x10, D_843902E2, 0x2C, 0); + func_8432ECA0(4, 8, 1, func_843398F8, &D_843861D0[0x54], 0, 1, 0x10, D_843902E2, 0x2C, 0); + func_8432ECA0(3, 5, 2, func_84339D74, &D_843861D0[0x19], 0, 8, 0x10, D_843902E2, 0xF, 0); + func_8433E524(); +} + +void func_8433C784(void) { + UNUSED s32 pad; + + func_8432F440(4, 0xA, 0x19, 0x10, 0xFF); + func_8432EC28(0, func_843398F8, &D_843861D0[0x34], 0, 1, 0x10, D_843902E2, 0x17, 0); + func_8432ECA0(4, 4, 1, func_843398F8, &D_843861D0[0x54], 0, 1, 0x10, D_843902E2, 0x17, 0); + func_8432EC28(3, func_84333E28, &D_843861D0[4], 0, 1, 0x10, D_843902E2, 0x1A, 0); + func_8432ECA0(3, 5, 3, func_84339D74, &D_843861D0[0x19], 0, 8, 0x10, D_843902E2, 0x17, 0); + func_8432ECA0(0xC, 1, 3, func_8433A698, &D_843861D0[0x19], 0, 8, 0x11, D_843902E2, 0x17, 0); + func_8432ED0C(0x16, 0x20, 0xA); +} + +void func_8433C940(void) { + UNUSED s32 pad; + + func_8432F440(4, 0xA, 0x19, 0x10, 0xFF); + func_8432EC28(0, func_843398F8, &D_843861D0[0x34], 0, 1, 0x10, D_843902E2, 0x29, 0); + func_8432ECA0(4, 4, 1, func_843398F8, &D_843861D0[0x54], 0, 1, 0x10, D_843902E2, 0x29, 0); + func_8432EC28(3, func_84333E28, &D_843861D0[4], 0, 1, 0x10, D_843902E2, 0x1A, 0); + func_8432ECA0(3, 5, 3, func_84339D74, &D_843861D0[0x19], 0, 8, 0x10, D_843902E2, 0x29, 0); + func_8432ECA0(0xC, 1, 3, func_8433A698, &D_843861D0[0x19], 0, 8, 0x11, D_843902E2, 0x29, 0); + func_8432ED0C(0x16, 0x20, 0xA); +} + +void func_8433CAFC(void) { + func_8432ECA0(0, 2, 8, func_8433A4D8, &D_843861D0[0x19], 0, 1, 0x11, D_843902E2, 0x49, 0); + func_8432ECA0(0, 2, 8, func_8433A4D8, &D_843861D0[0x19], 0, 1, 0x11, D_843902E2, 0x4A, 1); + func_8432ECA0(0, 2, 8, func_8433A4D8, &D_843861D0[0x19], 0, 1, 0x11, D_843902E2, 0x4B, 2); +} diff --git a/src/fragments/62/fragment62_3274D0.c b/src/fragments/62/fragment62_3274D0.c index c84bac3..4dfea1f 100644 --- a/src/fragments/62/fragment62_3274D0.c +++ b/src/fragments/62/fragment62_3274D0.c @@ -1,57 +1,514 @@ -#include "global.h" +#include "fragment62.h" +#include "src/math_util.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433CC10.s") +void func_8433CC10(unk_D_8140E720* arg0) { + UNUSED s32 pad; + Vec3s sp2C; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433CCFC.s") + func_8140C038(arg0); + func_8140B938(arg0, 0.05f); + sp2C.x = func_81400A78(0x8000) - 0x4000; + sp2C.y = func_81400A78(0x10000); + sp2C.z = func_81400A78(0x800) - 0x400; + func_8140A4F0(arg0, sp2C); + func_8140910C(arg0, func_81400A78(0xA)); + func_8140A578(arg0, 0x4000); + func_8140D5A0(arg0, func_8140C058(arg0)); + func_814081BC(arg0); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433CDAC.s") +void func_8433CCFC(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433CC10(arg0); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433CEA4.s") + case 2: + func_8140BDD0(arg0); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433CEFC.s") + case 3: + func_8140BC5C(arg0, 0, 0x40); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433CFA8.s") + case 4: + func_81408158(arg0); + break; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433D070.s") + func_8140B98C(arg0, 1.0f, 0.05f); + func_81409DAC(arg0); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433D154.s") +void func_8433CDAC(unk_D_8140E720* arg0) { + f32 sp1C = 0.0f; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433D224.s") + switch (func_843081BC(arg0->unk_10)) { + case 0x6: + sp1C = 15.0f; + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433D308.s") + case 0x73: + sp1C = 15.0f; + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433D3B0.s") + case 0x87: + sp1C = 10.0f; + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433D460.s") + case 0x95: + sp1C = 10.0f; + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433D560.s") + case 0x1F: + sp1C = 10.0f; + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433D604.s") + case 0x22: + sp1C = 10.0f; + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433D6EC.s") + case 0x71: + sp1C = 10.0f; + break; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433D790.s") + func_81408F38(arg0, sp1C); + func_81408FAC(arg0, 5.0f); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433D868.s") +void func_8433CEA4(unk_D_8140E720* arg0) { + func_8140B938(arg0, 0.1f); + func_8140AD8C(arg0, 0.0f); + func_8433CDAC(arg0); + func_8140D5A0(arg0, 0x17); + func_814081BC(arg0); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433D90C.s") +void func_8433CEFC(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433CEA4(arg0); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433DA54.s") + case 2: + func_8140B98C(arg0, 4.0f, 0.5f); + func_8140BDD0(arg0); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433DAF8.s") + case 3: + func_8140B98C(arg0, 0.1f, 0.5f); + func_8140BC5C(arg0, 0, 0x20); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433DBDC.s") + case 4: + func_81408158(arg0); + break; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433DC80.s") +void func_8433CFA8(unk_D_8140E720* arg0) { + s16 sp2E = func_8140C038(arg0); + Vec3s sp28; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433DECC.s") + func_81408CA0(arg0, 15.0f); + func_8140B938(arg0, 0.1f); + func_8140AD8C(arg0, 0.0f); + sp28.x = 0x4000 - func_81400A78(0x8000); + sp28.y = sp2E << 0xD; + sp28.z = 0; + func_8140A4F0(arg0, sp28); + func_8140D5A0(arg0, func_8140C058(arg0)); + func_81408348(arg0); + func_814081BC(arg0); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433DFF4.s") +void func_8433D070(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433CFA8(arg0); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433E124.s") + case 2: + if (func_8140826C(arg0, func_8140C038(arg0)) != 0) { + func_81408328(arg0); + } + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433E33C.s") + case 3: + func_8140B98C(arg0, 3.0f, 0.1f); + func_8140BDD0(arg0); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433E46C.s") + case 4: + func_8140BC5C(arg0, 0, 0x40); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3274D0/func_8433E524.s") + case 5: + func_81408158(arg0); + break; + } + + func_8140A594(arg0, 0x400); + func_81409D0C(arg0); +} + +void func_8433D154(unk_D_8140E720* arg0) { + s16 sp2E = func_8140C038(arg0); + Vec3s sp28; + + func_81408CA0(arg0, 15.0f); + func_8140B938(arg0, 0.1f); + func_8140AD8C(arg0, MathUtil_Random_ZeroOne()); + sp28.x = 0x3000 - func_81400A78(0x6000); + sp28.y = sp2E << 0xD; + sp28.z = 0; + func_8140A4F0(arg0, sp28); + func_8140D5A0(arg0, func_8140C058(arg0)); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_8433D224(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433D154(arg0); + break; + + case 2: + if (func_8140826C(arg0, func_8140C038(arg0)) != 0) { + func_81408328(arg0); + } + break; + + case 3: + func_8140B98C(arg0, 3.5f, 0.1f); + func_8140BDD0(arg0); + break; + + case 4: + func_8140BC5C(arg0, 0, 0x40); + break; + + case 5: + func_81408158(arg0); + break; + } + + func_8140A594(arg0, 0x400); + func_81409D0C(arg0); +} + +void func_8433D308(unk_D_8140E720* arg0) { + Vec3s sp28; + + func_8140C038(arg0); + func_8140B938(arg0, 0.5f); + func_8140AD8C(arg0, 0.0f); + sp28.x = -0x4000; + sp28.y = 0; + sp28.z = (func_81400A78(0x10) << 0xB) - 0x4000; + func_8140A4F0(arg0, sp28); + func_8140D5A0(arg0, func_8140C058(arg0)); + func_814081BC(arg0); +} + +void func_8433D3B0(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433D308(arg0); + break; + + case 2: + func_8140B98C(arg0, 2.0f, 0.2f); + func_8140BDD0(arg0); + break; + + case 3: + func_8140BC5C(arg0, 0, 0x40); + break; + + case 4: + func_81408158(arg0); + break; + } + func_81409DAC(arg0); +} + +void func_8433D460(unk_D_8140E720* arg0) { + UNUSED s32 pad; + Vec3s sp2C; + + func_8140C038(arg0); + func_8140B938(arg0, 0.5f); + func_8140B95C(arg0, (MathUtil_Random_ZeroOne() * 5.0f) + 1.0f); + func_8140B974(arg0, 0.2f); + func_8140AD8C(arg0, MathUtil_Random_ZeroOne() * 4.0f); + sp2C.x = -0x4000; + sp2C.y = 0; + sp2C.z = (func_81400A78(0x10) << 0xB) - 0x4000; + func_8140A4F0(arg0, sp2C); + func_8140D5A0(arg0, func_8140C058(arg0)); + func_814081BC(arg0); +} + +void func_8433D560(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433D460(arg0); + break; + + case 2: + func_8140BA1C(arg0); + func_8140BDD0(arg0); + break; + + case 3: + func_8140BC5C(arg0, 0, 0x40); + break; + + case 4: + func_81408158(arg0); + break; + } + + func_81409DAC(arg0); +} + +void func_8433D604(unk_D_8140E720* arg0) { + UNUSED s32 pad; + Vec3s sp2C; + UNUSED s32 pad2[2]; + + func_8140C038(arg0); + func_8140B938(arg0, 0.1f); + func_8140B95C(arg0, 1.4f); + func_8140B974(arg0, 0.1f); + MathUtil_Random_ZeroOne(); + func_8140AD8C(arg0, 0.0f); + sp2C.x = -0x4000; + sp2C.y = 0; + sp2C.z = (func_81400A78(0x10) << 0xB) - 0x4000; + func_8140A4F0(arg0, sp2C); + func_8140910C(arg0, 150.0f); + func_8140A334(arg0); + func_8140D5A0(arg0, func_8140C058(arg0)); + func_814081BC(arg0); +} + +void func_8433D6EC(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433D604(arg0); + break; + + case 2: + func_8140BDD0(arg0); + break; + + case 3: + func_8140BC5C(arg0, 0, 0x10); + break; + + case 4: + func_81408158(arg0); + break; + } + + func_8140BA1C(arg0); + func_81409DAC(arg0); +} + +void func_8433D790(unk_D_8140E720* arg0) { + UNUSED s32 pad; + Vec3s sp2C; + UNUSED s32 pad2[2]; + + func_8140C038(arg0); + func_8140B938(arg0, 0.1f); + func_8140B95C(arg0, 1.4f); + func_8140B974(arg0, 0.1f); + MathUtil_Random_ZeroOne(); + func_8140AD8C(arg0, 0.0f); + sp2C.x = -0x4000; + sp2C.y = 0; + sp2C.z = 0; + func_8140A4F0(arg0, sp2C); + func_8140910C(arg0, 150.0f); + func_8140A334(arg0); + func_8140D5A0(arg0, func_8140C058(arg0)); + func_814081BC(arg0); +} + +void func_8433D868(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433D790(arg0); + break; + + case 2: + func_8140BDD0(arg0); + break; + + case 3: + func_8140BC5C(arg0, 0, 0x10); + break; + + case 4: + func_81408158(arg0); + break; + } + + func_8140BA1C(arg0); + func_81409DAC(arg0); +} + +void func_8433D90C(unk_D_8140E720* arg0) { + UNUSED s32 pad; + Vec3f sp30; + Vec3s sp28; + + func_8140C038(arg0); + func_8140B938(arg0, 0.1f); + func_8140B95C(arg0, 2.0f); + func_8140B974(arg0, 0.1f); + sp28.x = 0; + sp28.y = 0; + sp28.z = -0x8000; + func_8140A4F0(arg0, sp28); + sp30.x = func_81400A78(0x64) + -50.0f; + sp30.y = 200.0f; + sp30.z = func_81400A78(0x64) + -50.0f; + func_81408D78(arg0, sp30); + func_8140D5A0(arg0, func_8140C058(arg0)); + func_814081BC(arg0); +} + +void func_8433DA54(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433D90C(arg0); + break; + + case 2: + func_8140BDD0(arg0); + break; + + case 3: + func_8140BC5C(arg0, 0, 0x40); + break; + + case 4: + func_81408158(arg0); + break; + } + + func_8140BA1C(arg0); + func_81409DAC(arg0); +} + +void func_8433DAF8(unk_D_8140E720* arg0) { + UNUSED s32 pad[4]; + Vec3s sp28; + + func_8140C038(arg0); + func_8140B938(arg0, 0.1f); + func_8140B95C(arg0, 2.0f); + func_8140B974(arg0, 0.1f); + sp28.x = -0x1000 - func_81400A78(0x6000); + sp28.y = func_81400A78(0x10000); + sp28.z = func_81400A78(0x800) - 0x400; + func_8140A4F0(arg0, sp28); + func_8140910C(arg0, 200.0f); + func_8140A578(arg0, -0x4000); + func_8140D5A0(arg0, func_8140C058(arg0)); + func_814081BC(arg0); +} + +void func_8433DBDC(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433DAF8(arg0); + break; + + case 2: + func_8140BDD0(arg0); + break; + + case 3: + func_8140BC5C(arg0, 0, 0x40); + break; + + case 4: + func_81408158(arg0); + break; + } + + func_8140BA1C(arg0); + func_81409DAC(arg0); +} + +void func_8433DC80(void) { + func_8432F8E8(0x64, 1); + func_8432ED0C(0, 0x20, 3); + func_8432ECA0(0, 3, 8, func_8433CCFC, &D_843861D0[0x11], 8, 4, 2, 0, 0x25, 0); + func_8432EB2C(0x19); + func_8432EC28(0, func_8433CEFC, &D_843861D0[0x15], 0xE, 1, 2, 0, 0x25, 0); + func_8432EC28(0, func_8433CEFC, &D_843861D0[0x16], 0xE, 1, 2, 0, 0x25, 0); + func_8432EE5C(8, 2, 8, 0xA, 0xFF); + func_8432ECA0(8, 4, 2, func_8433D070, &D_843861D0[0xF], 0x14, 4, 7, 0, 0x25, 0); + func_8432ECA0(8, 4, 2, func_8433D224, &D_843861D0[0xF], 0x14, 4, 7, 0, 0x25, 0); + func_8432ECA0(8, 4, 2, func_8433D560, &D_843861D0[0x13], 0x14, 4, 7, 0, 0x25, 0); + func_8432ECA0(8, 4, 2, func_8433D3B0, &D_843861D0[0x13], 0x14, 4, 7, 0, 0x25, 0); +} + +void func_8433DECC(void) { + func_8432EE5C(0x2C, 4, 0x10, 0xA, 0xFF); + func_8432ED0C(0x30, 0x20, 0xA); + func_8432ECA0(0, 8, 5, func_8433D3B0, &D_843861D0[0x12], 8, 3, 3, 0, 0x25, 0); + func_8432ECA0(0, 4, 2, func_8433D070, &D_843861D0[0xF], 0x14, 4, 3, 0, 0x25, 0); + func_8432ECA0(0, 4, 2, func_8433D224, &D_843861D0[0xF], 0x14, 4, 3, 0, 0x25, 0); +} + +void func_8433DFF4(void) { + func_8432EE5C(0, 4, 8, 0xA, 0xC8); + func_8432ED0C(0x30, 0x20, 0xA); + func_8432ECA0(0, 8, 5, func_8433D3B0, &D_843861D0[0x12], 8, 3, 3, 0, 0x25, 0); + func_8432ECA0(0, 4, 2, func_8433D070, &D_843861D0[0xF], 0x14, 4, 3, 0, 0x25, 0); + func_8432ECA0(0, 4, 2, func_8433D224, &D_843861D0[0xF], 0x14, 4, 3, 0, 0x25, 0); + func_8434E6F4(); +} + +void func_8433E124(void) { + func_8432F8E8(0x64, 1); + func_8432ED0C(0, 0x10, 3); + func_8432ECA0(0, 8, 3, func_8433D6EC, &D_843861D0[0x14], 2, 1, 2, 0, 0x25, 0); + func_8432ECA0(0, 5, 5, func_8433D6EC, &D_843861D0[0x13], 2, 1, 2, 0, 0x25, 0); + func_8432EB2C(0x23); + func_8432EDE8(8, 4, 8, 0xA); + func_8432ECA0(0, 4, 2, func_8433D560, &D_843861D0[0x13], 0x14, 4, 2, 0, 0x25, 0); + func_8432ECA0(0, 5, 2, func_8433D3B0, &D_843861D0[0x13], 0x14, 4, 2, 0, 0x25, 0); + func_8432ECA0(0, 6, 2, func_8433D070, &D_843861D0[0xF], 0x14, 2, 1, 0, 0x25, 0); + func_8432ECA0(0, 4, 2, func_8433D224, &D_843861D0[0xF], 0x14, 2, 1, 0, 0x25, 0); +} + +void func_8433E33C(void) { + func_8432EDE8(0x22, 4, 0x10, 0xA); + func_8432ED0C(0, 0x20, 3); + func_8432ED0C(0x30, 0x20, 0xA); + func_8432ECA0(0, 0xA, 2, func_8433DA54, &D_843861D0[0x10], 0xC, 1, 3, 0, 0x25, 0); + func_8432ECA0(0, 5, 3, func_8433DBDC, &D_843861D0[0x10], 0xC, 2, 3, 0, 0x25, 0); + func_8432ECA0(0, 8, 2, func_8433D6EC, &D_843861D0[0x13], 0xC, 3, 3, 0, 0x25, 0); +} + +void func_8433E46C(void) { + func_8432ECA0(0, 4, 5, func_8433CCFC, &D_843861D0[0x11], 8, 4, 0x10, D_843902E2, 0x25, 0); + func_8432ECA0(0, 1, 0x24, func_8435375C, &D_843861D0[0x15], 0, 1, 0x11, D_843902E2, 0, 0); +} + +void func_8433E524(void) { + func_8432ECA0(8, 4, 2, func_8433D560, &D_843861D0[0x13], 0x14, 4, 7, 0, 0x2C, 0); + func_8432ECA0(8, 4, 2, func_8433D3B0, &D_843861D0[0x13], 0x14, 3, 7, 0, 0xF, 0); + func_8432EC28(8, func_8433D070, &D_843861D0[0xF], 0x14, 1, 7, 0, 0x2C, 0); + func_8432EC28(8, func_8433D224, &D_843861D0[0xF], 0x14, 1, 7, 0, 0xF, 0); +} diff --git a/src/fragments/62/fragment62_328F10.c b/src/fragments/62/fragment62_328F10.c index 512ee56..155d8a5 100644 --- a/src/fragments/62/fragment62_328F10.c +++ b/src/fragments/62/fragment62_328F10.c @@ -1,49 +1,473 @@ -#include "global.h" +#include "fragment62.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433E650.s") +void func_8433E650(unk_D_8140E720* arg0) { + Vec3s sp28; + s16 sp26 = func_8140C058(arg0); + s16 sp24 = func_8140C038(arg0); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433E758.s") + func_81408CA0(arg0, 2.5f); + func_8140B938(arg0, 0.065789476f); + func_8140AD8C(arg0, 0.0f); + sp28.x = func_81400B00(0x5000); + sp28.y = sp24 * (0x10000 / arg0->unk_AA); + sp28.z = 0; + func_8140A4F0(arg0, sp28); + func_8140D530(arg0, sp26); + func_8140BC20(arg0, 0x80); + func_81408348(arg0); + func_814081BC(arg0); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433E840.s") +void func_8433E758(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433E650(arg0); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433E8A8.s") + case 2: + if (func_8140826C(arg0, func_8140C038(arg0)) != 0) { + func_81408328(arg0); + } + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433E950.s") + case 3: + func_8140B98C(arg0, 1.3157895f, 0.16447368f); + func_8140BDD0(arg0); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433EA04.s") + case 4: + func_8140BC5C(arg0, 0, 0x10); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433EB0C.s") + case 5: + func_81408158(arg0); + break; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433EB9C.s") + func_8140A594(arg0, 0x400); + func_81409D0C(arg0); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433EC40.s") +void func_8433E840(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C058(arg0); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433ED3C.s") + func_8140B938(arg0, 0.65789473f); + func_8140D5A0(arg0, sp26); + func_814083E8(arg0, 2); + func_8140BC20(arg0, 0xC8); + func_814081BC(arg0); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433EE10.s") +void func_8433E8A8(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433E840(arg0); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433F06C.s") + case 2: + func_8140B98C(arg0, 6.5789475f, 0.32894737f); + func_8140826C(arg0, 0xF); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433F208.s") + case 3: + func_8140BDD0(arg0); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433F270.s") + case 4: + func_8140BC5C(arg0, 0, 0x20); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433F3B4.s") + case 5: + func_81408158(arg0); + break; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433F414.s") +void func_8433E950(unk_D_8140E720* arg0) { + s16 sp2E = func_8140C058(arg0); + s16 sp2C = func_8140C038(arg0); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433F4CC.s") + func_8140B938(arg0, 0.05f); + func_8140A270(arg0, func_81400A78(0x10000), func_81400A78(0x10000), 0); + func_8140AD8C(arg0, 1.2f); + func_8140D5A0(arg0, sp2E); + func_8140BCA8(arg0, sp2C * 1); + func_81408348(arg0); + func_814081BC(arg0); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433F4EC.s") +void func_8433EA04(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433E950(arg0); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433F5B4.s") + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + } + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433F5D4.s") + case 3: + if (func_8140B98C(arg0, 0.15f, 0.025f) != 0) { + func_814081BC(arg0); + } + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433F758.s") + case 4: + if (func_8140B98C(arg0, 0.0f, 0.04f) != 0) { + func_814081BC(arg0); + } + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433F974.s") + case 5: + func_81408158(arg0); + break; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433FAF8.s") + func_8140ADBC(arg0, 0.2, 0.2f); + func_81409D0C(arg0); + func_81408E90(arg0, -1.0f); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_328F10/func_8433FD30.s") +void func_8433EB0C(unk_D_8140E720* arg0) { + UNUSED s16 pad; + s16 sp2C; + + func_8140C038(arg0); + sp2C = func_8140C058(arg0); + func_8140B938(arg0, 0.175f); + func_8140A270(arg0, func_81400A78(0x10000), func_81400A78(0x10000), 0); + func_8140D5A0(arg0, sp2C); + func_8140BC20(arg0, 0x80); + func_814081BC(arg0); +} + +void func_8433EB9C(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433EB0C(arg0); + break; + + case 2: + func_8140B98C(arg0, 0.1f, 0.01f); + func_8140BC2C(arg0, 0, 8); + func_81409D0C(arg0); + func_8140BDD0(arg0); + break; + + case 3: + func_81408158(arg0); + break; + } +} + +void func_8433EC40(unk_D_8140E720* arg0) { + s16 sp2E; + s16 sp2C; + s16 temp_v0; + Vec3s sp24; + + temp_v0 = func_8140C038(arg0); + sp2E = temp_v0 / 8; + sp2C = temp_v0 % 8; + + func_8140B938(arg0, 0.5f); + sp24.x = 0x6000 - (sp2E * 0xC00); + sp24.y = (sp2C << 0xC) + 0xB000; + sp24.z = 0; + func_8140A4F0(arg0, sp24); + func_8140BAC8(arg0, 0xC8, 0xFF, 0xFF); + func_8140BC20(arg0, 0x60); + func_8140BCA8(arg0, sp2E); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_8433ED3C(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433EC40(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_8140BCA8(arg0, 0xA); + func_81408328(arg0); + } + break; + + case 3: + func_8140A594(arg0, 0x200); + func_8140B98C(arg0, 2.0f, 0.01f); + func_8140BDD0(arg0); + break; + + case 4: + func_8140BC5C(arg0, 0, 0x10); + break; + + case 5: + func_81408150(arg0); + break; + } +} + +void func_8433EE10(unk_D_8140E720* arg0) { + s16 sp36; + s16 sp34; + s16 sp32 = func_8140C038(arg0); + s16 sp30 = func_8140C058(arg0); + s16 sp2E = func_8140C040(arg0); + + func_8140A270(arg0, func_81400A78(0x10000), func_81400A78(0x10000), 0); + func_8140B938(arg0, 0.01f); + func_8140D5A0(arg0, sp30); + + switch (sp2E) { + case 0: + func_8140BF4C(arg0, func_81400ADC(0x14, 0x14)); + func_8140BFEC(arg0, 0); + sp36 = func_81400B4C(0x200, 0x200); + sp34 = func_81400B4C(0x200, 0x200); + func_8140BE14(arg0, 8); + break; + + case 1: + func_8140BF4C(arg0, func_81400ADC(0x28, 0x14)); + func_8140BFEC(arg0, 1); + sp36 = func_81400B4C(0x200, 0x200); + sp34 = func_81400B4C(0x200, 0x200); + func_8140BE14(arg0, 0x10); + break; + + case 2: + func_8140BF4C(arg0, func_81400ADC(0x1E, 0x14)); + func_8140BFEC(arg0, 2); + sp36 = func_81400B4C(0x200, 0x200); + sp34 = func_81400B4C(0x200, 0x200); + func_8140BE14(arg0, 0xA); + break; + + case 3: + func_8140BF4C(arg0, 0x1E - sp32); + func_8140BFEC(arg0, 2); + sp36 = func_81400B4C(0x200, 0x200); + sp34 = func_81400B4C(0x200, 0x200); + func_8140BE14(arg0, 0xA); + break; + } + + func_8140A3C4(arg0, sp36); + func_8140A3D8(arg0, sp34); + func_8140BCA8(arg0, sp32 * 2); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_8433F06C(unk_D_8140E720* arg0) { + func_8140C040(arg0); + + switch (arg0->unk_B2) { + case 1: + func_8433EE10(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + func_81408A68(arg0); + } + break; + + case 3: + if (func_8140B9D0(arg0, 0.3f, 0.05f) != 0) {} + break; + + case 4: + if (func_8140826C(arg0, arg0->unk_A8) != 0) { + func_81408A68(arg0); + } + break; + + case 5: + func_8140B9D0(arg0, 0.0f, 0.05f); + break; + + case 6: + func_81408150(arg0); + break; + } + + if (func_81408368(arg0) != 0) { + switch (arg0->unk_B8) { + case 1: + func_8140A4B4(arg0); + func_81408CD0(arg0, arg0->unk_AE); + break; + + case 2: + func_8140A4B4(arg0); + func_8140BF60(arg0, 0, arg0->unk_B0); + func_81408CD0(arg0, arg0->unk_AE); + break; + } + } + + func_81408E90(arg0, 10.0f); +} + +void func_8433F208(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C058(arg0); + + func_8140B938(arg0, 0.2f); + func_81408E90(arg0, 5.0f); + func_8140D5A0(arg0, sp26); + func_8140BC20(arg0, 0x40); + func_814081BC(arg0); +} + +void func_8433F270(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433F208(arg0); + break; + + case 2: + func_8140B98C(arg0, 4.0f, 0.1f); + func_8140BC2C(arg0, 0xC8, 8); + func_8140BDD0(arg0); + break; + + case 3: + func_8140B98C(arg0, 0.25f, 0.5f); + func_8432D8E8(arg0, func_8435226C, &D_843861D0[0x42], 6, 0x18, 7); + if (func_8140826C(arg0, 6) != 0) { + func_8140BF04(arg0, 9); + } + break; + + case 4: + func_814099E0(arg0, 15.0f); + func_8140826C(arg0, 0xA); + func_8432D8E8(arg0, func_8435226C, &D_843861D0[0x42], 6, 0x18, 7); + break; + + case 5: + func_81408158(arg0); + break; + } +} + +s16 func_8433F3B4(void) { + s16 var_v1 = 0x3B; + + switch (D_800AE540.unk_0000) { + case 0: + var_v1 = 0xD; + break; + + case 1: + var_v1 = 0x3C; + break; + + case 2: + var_v1 = 0x3C; + break; + + case 3: + var_v1 = 3; + break; + + case 4: + var_v1 = 3; + break; + + case 5: + var_v1 = 3; + break; + } + return var_v1; +} + +void func_8433F414(void) { + s16 sp3E = func_8433F3B4(); + + func_8432ECA0(0, 1, 0x1E, func_8433EB9C, &D_843861D0[0x22], 0x10, 1, 0x1E, 0, sp3E, 0); + func_8432ECA0(0, 1, 0x1E, func_8433EA04, &D_843861D0[0x42], 0x10, 2, 0x1E, 0, sp3E, 0); +} + +void func_8433F4CC(void) { + func_8433F414(); +} + +void func_8433F4EC(void) { + func_8432ECA0(0xB, 1, 5, func_8435226C, &D_843861D0[0x42], 0, 5, 0x1E, 0, func_8433F3B4(), 8); + func_8432EFB4(0xA, 2, 0x16, 7, 0xFF); + func_8432EB20(0x10); + func_8432EC28(0, func_8433ED3C, &D_843861D0[0x1C], 0, 0x40, 0x1E, 0, 0xA, 0); +} + +void func_8433F5B4(void) { + func_8433F4EC(); +} + +void func_8433F5D4(void) { + UNUSED s32 pad; + + func_8432EDE8(0, 0, 0x10, 7); + func_8432F2C8(0, 0xA, 0xFF, 0xFF, 0xFF); + func_8432F7A0(0, 0xFF, 0xFF, 0xFF); + func_8432F2C8(0x14, 0xA, 0xFF, 0, 8); + func_8432EC28(0, func_8433E8A8, &D_843861D0[0x21], 4, 1, 2, 0, 0x50, 0); + func_8432EC28(0, func_8433E8A8, &D_843861D0[0x23], 4, 1, 2, 0, 0x50, 0); + func_8432EC28(0, func_8433E8A8, &D_843861D0[0x17], 4, 1, 2, 0, 0x50, 0); + func_8432ECA0(0, 1, 4, func_8433E758, &D_843861D0[0x1C], 5, 0x10, 7, 0, 0x39, 0); + func_8432ED0C(0x32, 0x10, 0xA); +} + +void func_8433F758(void) { + func_8432ED0C(0, 8, 6); + func_8432ECA0(0, 4, 5, func_8433F06C, &D_843861D0[0x44], 0, 4, 9, 0, 0x3C, 1); + func_8432ECA0(0, 4, 5, func_8433F06C, &D_843861D0[0x44], 0, 4, 9, 0, 0x3C, 1); + func_8432ECA0(0x18, 1, 4, func_8433F06C, &D_843861D0[0x44], 0, 8, 9, 0, 0x3C, 2); + func_8432ECA0(0x1E, 1, 8, func_8433F06C, &D_843861D0[0x44], 0, 8, 9, 0, 0x3C, 3); + func_8432ECA0(0x1E, 1, 8, func_8433F06C, &D_843861D0[0x44], 0, 8, 9, 0, 0x3C, 3); + func_8432F2C8(0x26, 0xA, 0, 0xFF, 4); + func_8432EC28(0x2D, func_8433F270, &D_843861D0[0x38], 0x1A, 1, 2, 0, 0x3C, 0); + func_8432F7A0(0x48, 0x40, 0, 0xFF); + func_8432ED0C(0x55, 6, 0xA); +} + +void func_8433F974(void) { + UNUSED s32 pad; + + func_8432ED0C(0, 8, 6); + func_8432ECA0(0, 1, 4, func_8433F06C, &D_843861D0[0x44], 0, 8, 9, 0, 0x3C, 2); + func_8432ECA0(6, 1, 8, func_8433F06C, &D_843861D0[0x44], 0, 8, 9, 0, 0x3C, 3); + func_8432ECA0(6, 1, 8, func_8433F06C, &D_843861D0[0x44], 0, 8, 9, 0, 0x3C, 3); + func_8432F2C8(0xE, 0xA, 0, 0xFF, 4); + func_8432EC28(0x14, func_8433F270, &D_843861D0[0x38], 0x1A, 1, 2, 0, 0x3C, 0); + func_8432F7A0(0x2D, 0x40, 0, 0xFF); + func_8432ED0C(0x32, 6, 0xA); +} + +void func_8433FAF8(void) { + func_8432ED0C(0, 8, 6); + func_8432ECA0(0, 4, 5, func_8433F06C, &D_843861D0[0x44], 0, 4, 9, 0, 0x3C, 1); + func_8432ECA0(0, 4, 5, func_8433F06C, &D_843861D0[0x44], 0, 4, 9, 0, 0x3C, 1); + func_8432ECA0(0x18, 1, 4, func_8433F06C, &D_843861D0[0x44], 0, 8, 9, 0, 0x3C, 2); + func_8432ECA0(0x1E, 1, 8, func_8433F06C, &D_843861D0[0x44], 0, 8, 9, 0, 0x3C, 3); + func_8432ECA0(0x1E, 1, 8, func_8433F06C, &D_843861D0[0x44], 0, 8, 9, 0, 0x3C, 3); + func_8432F2C8(0x26, 0xA, 0, 0xFF, 8); + func_8432EC28(0x28, func_8433F270, &D_843861D0[0x38], 0x18, 1, 2, 0, 0x3C, 0); + func_8432ED74(0x3C, 0, 0x40, 0xA, 0xFF); + func_8432F7A0(0x40, 0xFF, 0, 0xFF); + func_8432EB20(0x50); + func_8433F5D4(); +} + +void func_8433FD30(void) { + func_8432ED0C(0, 0xFF, 0); + func_8432F2C8(0x14, 0, 0, 0xFF, 0x10); +} diff --git a/src/fragments/62/fragment62_32A640.c b/src/fragments/62/fragment62_32A640.c index d0ec334..44e5a50 100644 --- a/src/fragments/62/fragment62_32A640.c +++ b/src/fragments/62/fragment62_32A640.c @@ -1,27 +1,338 @@ -#include "global.h" +#include "fragment62.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32A640/func_8433FD80.s") +void func_8433FD80(unk_D_8140E720* arg0) { + func_8140BAC8(arg0, 0xFF, 0xFF, 0xFF); + func_8140BC20(arg0, 0xFF); + func_814081BC(arg0); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32A640/func_8433FDC0.s") +void func_8433FDC0(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 0: + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32A640/func_8433FE80.s") + case 1: + func_8433FD80(arg0); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32A640/func_8433FF44.s") + case 2: + func_8140B98C(arg0, 3.0f, 0.025f); + func_8140826C(arg0, 0x12C); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32A640/func_843400BC.s") + case 3: + if (func_8140BC2C(arg0, 0x20, 0x20) != 0) { + func_814081BC(arg0); + } + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32A640/func_8434016C.s") + case 4: + func_81408158(arg0); + break; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32A640/func_84340230.s") + func_8140B7C8(arg0, 32.0f, 0x400); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32A640/func_843403D8.s") +void func_8433FE80(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32A640/func_84340690.s") + func_8140B938(arg0, 0.2f); + func_8140AF24(arg0, 1.0f); + func_8140A2A4(arg0, func_81400A78(0x10000)); + func_8140A2CC(arg0, func_81400A78(0x10000)); + func_8140A3D8(arg0, func_81400A78(0x10000)); + func_8140AD8C(arg0, 5.0f); + func_8140BCA8(arg0, sp26 * 4); + func_81408348(arg0); + func_814081BC(arg0); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32A640/func_84340940.s") +void func_8433FF44(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8433FE80(arg0); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32A640/func_84340ACC.s") + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + func_81408A1C(arg0); + } + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32A640/func_84340CB0.s") + case 3: + if (func_8140826C(arg0, 0x32) != 0) { + func_81408A68(arg0); + } + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32A640/func_84340D14.s") + case 4: + if (func_8140826C(arg0, 0x14) != 0) {} + break; + + case 5: + func_81408158(arg0); + break; + } + + switch (arg0->unk_B8) { + case 1: + func_8140ADBC(arg0, 50.0f, 0.5f); + func_814099E0(arg0, 1.0f); + func_8140B7C8(arg0, arg0->unk_74, 0x1000); + func_8140A578(arg0, 0x2000); + func_8140A5B0(arg0, 0x3000); + break; + + case 2: + func_8140ADBC(arg0, 0.0f, 1.0f); + func_814099E0(arg0, -2.0f); + func_8140B7C8(arg0, arg0->unk_74, 0x1000); + func_8140A578(arg0, 0x2000); + func_8140A5B0(arg0, 0x3000); + break; + } +} + +void func_843400BC(unk_D_8140E720* arg0) { + s16 sp2E = func_8140C038(arg0); + + func_8140B938(arg0, 0.5f); + func_8140AD8C(arg0, 10.0f); + func_8140A52C(arg0, func_81400B00(0x1000), func_81400B00(0x1000), 0); + func_8140BCA8(arg0, sp2E * 4); + func_8140D530(arg0, 0x24); + func_8140D568(arg0, 0x24); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_8434016C(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_843400BC(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + } + break; + + case 3: + func_8140826C(arg0, 0x46); + break; + + case 4: + func_81408158(arg0); + break; + } + + if (func_81408368(arg0) != 0) { + func_81409D0C(arg0); + func_8140A5B0(arg0, 0x2000); + } +} + +void func_84340230(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + + func_8140B938(arg0, 0.12f); + func_8140AF24(arg0, (func_81400A78(0x14) * 0.02f) + 0.25f); + func_8140A2A4(arg0, func_81400A78(0x10000)); + func_8140A2CC(arg0, func_81400A78(0x10000)); + func_8140AD8C(arg0, 5.0f); + func_8140BF4C(arg0, func_81400A78(0x800) + 0xC00); + func_8140A3C4(arg0, func_81400B4C(0x800, 0x300)); + func_8140BFEC(arg0, func_81400B4C(0x800, 0x300)); + func_8140A3D8(arg0, func_81400A78(0x10000)); + func_8140A3EC(arg0, func_81400B4C(0x800, 0x300)); + func_81408E90(arg0, func_81400A78(0x1E)); + func_8140BCA8(arg0, sp26 * 2); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_843403D8(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84340230(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + func_81408A1C(arg0); + func_8140BCA8(arg0, func_81400A78(0xA) + 0x1E); + } + break; + + case 3: + if (func_8140BDD0(arg0) != 0) { + func_8140BCA8(arg0, 8); + func_81408A68(arg0); + } + break; + + case 4: + if (func_8140BDD0(arg0) != 0) { + func_8140A3C4(arg0, func_81400B4C(0x1000, 0x600)); + func_8140BFEC(arg0, func_81400B4C(0x400, 0x400)); + func_8140A3EC(arg0, func_81400B4C(0x1000, 0x600)); + arg0->unk_38.x += arg0->unk_50.x; + arg0->unk_50.x = 0; + arg0->unk_38.z += arg0->unk_50.z; + arg0->unk_50.z = 0; + func_81408A68(arg0); + arg0->unk_7C.y = -((func_81400A78(8) * 0.1f) + 0.5f); + } + break; + + case 5: + func_8140826C(arg0, 0x46); + break; + + case 6: + func_81408150(arg0); + break; + } + + switch (arg0->unk_B8) { + case 1: + func_8140ADBC(arg0, 20.0f, 0.5f); + func_814099E0(arg0, arg0->unk_7C.y); + func_8140B7C8(arg0, arg0->unk_74, arg0->unk_AE); + break; + + case 2: + func_8140BF60(arg0, 0, 0x200); + func_814099E0(arg0, arg0->unk_7C.y); + func_8140B7C8(arg0, arg0->unk_74, arg0->unk_AE); + break; + + case 3: + func_814099E0(arg0, arg0->unk_7C.y); + func_8140B7C8(arg0, 5.0f, 0x400); + break; + } + + if (func_81408368(arg0) != 0) { + func_8140A4B4(arg0); + func_8140A594(arg0, arg0->unk_B0); + func_8140A4DC(arg0); + if (arg0->unk_2C.y < 0.0f) { + func_81408150(arg0); + } + } +} + +void func_84340690(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + s16 sp24 = func_8140C040(arg0); + + func_8140AF24(arg0, 0.5f); + + switch (sp24) { + case 0: + func_8140B938(arg0, 0.12f); + arg0->unk_5C.y = -((func_81400A78(0xA) * 0.1f) + 0.5f); + func_81408E90(arg0, func_81400A78(0x28) + 0x1E); + func_81409404(arg0, 0x1E, 0); + func_81409514(arg0, 0x1E, 0); + break; + + case 1: + func_8140B938(arg0, 0.2f); + arg0->unk_5C.y = -((func_81400A78(4) * 0.1f) + 0.2f); + func_81408E90(arg0, func_81400B00(0x14) + 0x1E); + func_81409404(arg0, 0xF, 5); + func_81409514(arg0, 0x14, 5); + break; + } + + func_8140A2A4(arg0, func_81400A78(0x10000)); + func_8140A2CC(arg0, func_81400A78(0x10000)); + func_8140AD8C(arg0, func_81400A78(0x14) + 15.0f); + func_8140BF4C(arg0, func_81400A78(0x300) + 0x400); + func_8140A3D8(arg0, func_81400A78(0x10000)); + func_8140A3C4(arg0, func_81400B4C(0x800, 0x400)); + func_8140A3EC(arg0, func_81400B4C(0x800, 0x400)); + func_8140BCA8(arg0, sp26 * 2); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84340940(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C040(arg0); + + switch (arg0->unk_B2) { + case 1: + func_84340690(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + func_81408A1C(arg0); + switch (sp26) { + case 0: + func_8140BCA8(arg0, func_81400A78(0x1E) + 0x32); + break; + + case 1: + func_8140BCA8(arg0, func_81400A78(0x1E) + 0x64); + break; + } + } + break; + + case 3: + func_8140BDD0(arg0); + break; + + case 4: + func_81408150(arg0); + break; + } + + if (arg0->unk_B8 == 1) { + func_814099E0(arg0, arg0->unk_5C.y); + func_8140B7C8(arg0, 5.0f, 0x400); + } + + if (func_81408368(arg0) != 0) { + func_8140A4B4(arg0); + func_8140A4C8(arg0); + func_8140A4DC(arg0); + if (arg0->unk_2C.y < 0.0f) { + func_81408150(arg0); + } + } +} + +void func_84340AC4(void) { +} + +void func_84340ACC(void) { + func_8432F8E8(0x80, 1); + func_8432EC28(0, func_8433FF44, &D_843861D0[0x2B], 0, 0x10, 0xA, 0, 0, 0); + func_8432EC28(2, func_8433FF44, &D_843861D0[0x2B], 0, 0x10, 0xA, 0, 0, 0); + func_8432EC28(4, func_8433FF44, &D_843861D0[0x2B], 0, 0x10, 0xA, 0, 0, 0); + func_8432EC28(8, func_8433FF44, &D_843861D0[0x2B], 0, 8, 0xA, 0, 0, 0); + func_8432EB2C(0x3A); + func_8432EC28(0, func_8434016C, &D_843861D0[0x2E], 0, 0x10, 2, 0, 0, 0); + func_8432EC28(0, func_8434016C, &D_843861D0[0x2E], 0, 0x10, 2, 0, 0, 0); + func_8432EC28(0, func_8434016C, &D_843861D0[0x2E], 0, 0x10, 2, 0, 0, 0); + func_8432EC28(0, func_8434016C, &D_843861D0[0x2E], 0, 0x10, 2, 0, 0, 0); +} + +void func_84340CB0(void) { + func_8432ECA0(0, 2, 0x14, func_843403D8, &D_843861D0[0x2C], 0, 4, 0xE, 0, 0, 0); + func_84357BA8(); +} + +void func_84340D14(void) { + func_8432ECA0(0, 2, 5, func_84340940, &D_843861D0[0x2D], 0, 1, 0xE, 0, 0, 1); + func_8432ECA0(0, 4, 5, func_84340940, &D_843861D0[0x2D], 0, 1, 0xE, 0, 0, 1); +} diff --git a/src/fragments/62/fragment62_32B680.c b/src/fragments/62/fragment62_32B680.c index 77cd641..31523b6 100644 --- a/src/fragments/62/fragment62_32B680.c +++ b/src/fragments/62/fragment62_32B680.c @@ -1,863 +1,5240 @@ -#include "global.h" - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84340DC0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84340E40.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843416B0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434171C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434174C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843417AC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84341830.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84341860.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843418C0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84341B84.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84341E50.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84341F08.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84341F44.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84342304.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434234C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843423C8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84342478.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434261C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84342758.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84342808.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84342908.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84342980.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84342C54.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84342C7C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84342CF0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84342D48.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84343064.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843431B0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84343288.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843432E4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84343988.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84343B9C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84343D24.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84343D6C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84343E44.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84343EB4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84343FA4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84344050.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84344094.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434411C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843441F8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84344248.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84344318.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84344390.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843443E0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84344474.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84344508.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434459C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843445E4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84344698.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84344734.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84344888.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843448D8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434495C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84344A4C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84344B04.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84344BDC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84344C7C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84344CE8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84344D28.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84344DA4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84344E20.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84344F58.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84345038.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843450B4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434523C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843452F0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84345338.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434539C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843453E4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84345448.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84345498.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84345618.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843456DC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434575C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84345838.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84345920.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843459A0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84345A20.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84345AE0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84345B28.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84345B84.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84345C78.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84345CF0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84345D74.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84345DC4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84345E3C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84345EC0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84345F38.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84346014.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434605C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843460EC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84346134.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843461D0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84346250.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843463C8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84346488.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84346634.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434669C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843466EC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843467B0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843467F8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84346960.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843469A8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84346B10.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84346B58.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84346BE0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84346DC4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84346E50.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84346EEC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84346F40.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84347080.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84347108.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434719C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84347254.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434729C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84347374.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843473BC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84347448.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434749C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84347670.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843476D8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434775C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843477F8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84347904.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84347A20.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84347AF0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84347BF4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84347D2C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84347D74.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84347E9C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84348058.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84348194.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843482D4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843483D4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84348514.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84348630.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843489FC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84348C6C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84348C78.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84348C84.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84348D4C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84348F24.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84349010.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84349058.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843490A8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84349108.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434915C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434917C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843491D4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84349264.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843492AC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434933C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84349384.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84349424.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843494AC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84349504.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843495F0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84349628.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434967C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843497A8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84349830.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843498D8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84349940.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84349A14.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84349A70.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84349AE8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84349B50.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84349C74.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84349D10.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84349F80.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84349FC8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434A18C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434A1D4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434A244.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434A2B4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434A324.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434A384.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434A574.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434A654.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434A6D8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434A720.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434A794.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434A7DC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434A844.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434A898.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434A930.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434A9CC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434A9EC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434AA6C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434AAEC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434AC44.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434AC8C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434ACEC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434AD1C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434AD70.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434AE68.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434B000.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434B064.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434B0D8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434B14C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434B21C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434B2B8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434BA28.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434BA70.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434BCD4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434BF2C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434C070.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434C0C4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434C144.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434C214.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434C29C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434C320.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434C3A8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434C3F0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434C548.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434C590.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434C5F0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434C618.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434C720.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434C814.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434CA48.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434CA90.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434CAD8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434CC68.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434CE14.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434CF64.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434D0F8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434D168.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434D1B0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434D260.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434D2E0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434D448.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434D4A0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434D530.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434D5EC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434D6C0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434D72C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434D77C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434D890.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434D8D8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434D938.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434D9F8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434DA94.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434DB40.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434DBEC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434DD08.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434DE24.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434DE6C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434DFC0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434E02C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434E0CC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434E1B8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434E21C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434E6AC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434E6F4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434E74C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434E7CC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434E870.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434E8E0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434E940.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434E9A0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434EA10.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434EAA8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434EBA0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434EC08.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434EC68.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434ECF4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434ED48.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434ED70.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434EEA4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434EF68.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434EFBC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434F010.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434F060.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434F0B8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434F110.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434F248.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434F350.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434F3E0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434F554.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434F610.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434F7A4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434F888.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434FA98.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434FB3C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434FBE4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434FCC4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434FD6C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434FE58.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8434FF40.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8435000C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84350100.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843501CC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84350260.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84350330.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8435043C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84350520.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84350634.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84350728.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84350828.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843508F0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84350A04.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84350AFC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84350BE4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84350CD8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84350DAC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84350EC8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84350FC0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84351090.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84351144.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84351264.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843512AC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84351330.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843513F4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843514B4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843515C8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843516A0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84351984.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84351ADC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84351BCC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84351CE4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84351D20.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84351D70.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8435226C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8435235C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84352464.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84352530.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84352620.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843526A8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84352754.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843529D8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84352A8C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84352E64.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84352F90.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84353098.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8435324C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843532B0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84353354.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843534BC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843535F4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8435375C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84353894.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84353998.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84353AEC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84353BD0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84353C40.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84353D30.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84353E10.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84353F08.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843540FC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84354A10.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84354ADC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84354BE4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84354D58.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84354E44.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84354F0C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84354FA8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84355040.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84355164.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84355240.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84355330.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843553BC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84355498.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84355500.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84355584.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84355670.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84355794.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8435581C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8435586C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8435593C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84355B08.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84355B8C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84355C54.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84355D70.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84355E58.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84355EF0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84355F88.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84356020.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843560B4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84356148.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843561A0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843561F8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84356254.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8435643C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843565DC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843566F4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8435674C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843567F4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843568C8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843569A0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84356A74.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84356AC8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84356AF0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84356CA4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84356D04.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84356DBC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84356EF4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84356FAC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84357110.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8435727C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8435742C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843574FC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84357700.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8435783C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843579C0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84357A64.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84357AB8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84357AE0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84357B80.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84357BA8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84357CC8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84357E60.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84357F64.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84358034.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8435811C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843581FC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84358288.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_8435839C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843584C0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84358538.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84358598.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84358738.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_843588D8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84358A5C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84358C18.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84358DE4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84358E24.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84358EA0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84358EDC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_32B680/func_84358F6C.s") +#include "fragment62.h" +#include "src/17300.h" +#include "src/12D80.h" +#include "src/6A40.h" +#include "src/F420.h" +#include "src/math_util.h" + +static f32 D_84387B00[] = { + 0.0f, 1.0f, 1.0f, 1.3f, 0.8f, 0.9f, 1.3f, 0.8f, 1.0f, 0.9f, 0.6f, 1.2f, 1.2f, 0.6f, 0.9f, 1.5f, 0.8f, + 1.5f, 1.5f, 0.8f, 1.0f, 0.8f, 1.0f, 0.65f, 1.1f, 0.75f, 0.8f, 0.8f, 0.8f, 0.8f, 1.0f, 1.0f, 0.8f, 1.2f, + 1.0f, 0.8f, 1.25f, 1.0f, 1.5f, 0.8f, 1.0f, 1.0f, 0.8f, 0.8f, 1.2f, 1.35f, 0.9f, 1.2f, 1.2f, 1.1f, 0.7f, + 1.1f, 0.9f, 1.5f, 1.0f, 0.9f, 1.0f, 1.3f, 1.0f, 1.38f, 1.15f, 1.4f, 1.3f, 1.2f, 1.0f, 1.0f, 0.9f, 1.3f, + 1.2f, 0.8f, 0.9f, 1.0f, 0.9f, 1.3f, 1.35f, 1.35f, 1.4f, 1.35f, 1.3f, 1.35f, 1.4f, 1.2f, 1.2f, 1.5f, 1.0f, + 1.0f, 0.85f, 1.0f, 1.2f, 1.7f, 1.2f, 1.3f, 1.2f, 1.2f, 0.9f, 1.5f, 1.0f, 1.0f, 1.3f, 2.0f, 0.8f, 1.2f, + 1.2f, 1.2f, 0.8f, 1.2f, 0.8f, 0.8f, 1.2f, 0.8f, 1.2f, 1.25f, 1.4f, 0.9f, 1.2f, 1.25f, 0.9f, 1.2f, 0.7f, + 1.1f, 1.0f, 1.2f, 1.0f, 0.8f, 1.2f, 1.2f, 1.2f, 1.2f, 1.2f, 1.2f, 1.35f, 1.2f, 0.8f, 0.8f, 1.2f, 0.9f, + 1.0f, 1.2f, 1.0f, 1.2f, 1.0f, 1.1f, 1.5f, 1.55f, 1.5f, 1.6f, 1.6f, 1.75f, 1.6f, 1.5f, 1.6f, 1.0f, +}; +static f32 D_84387D60[] = { + 0.0f, 0.0f, -8.0f, 0.0f, -5.0f, 0.0f, -10.0f, 0.0f, -10.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, + -35.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, -10.0f, 0.0f, 0.0f, -10.0f, -10.0f, -10.0f, -5.0f, 0.0f, + -10.0f, -10.0f, 0.0f, -10.0f, 0.0f, 0.0f, -10.0f, 0.0f, 0.0f, 0.0f, -15.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, -15.0f, 0.0f, 0.0f, 0.0f, 0.0f, -10.0f, -17.0f, 0.0f, -10.0f, 0.0f, 0.0f, + 0.0f, -10.0f, -5.0f, -10.0f, -10.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, -10.0f, + 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, -5.0f, 0.0f, -22.0f, 0.0f, -25.0f, -20.0f, + 10.0f, 0.0f, 0.0f, 0.0f, 10.0f, -15.0f, 0.0f, -5.0f, 0.0f, -10.0f, 0.0f, -10.0f, 0.0f, 10.0f, + 0.0f, 0.0f, 0.0f, 0.0f, -35.0f, -10.0f, 0.0f, 0.0f, 0.0f, 0.0f, -5.0f, 0.0f, 0.0f, 5.0f, + -10.0f, 0.0f, 0.0f, -2.0f, 0.0f, 0.0f, -10.0f, -10.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, + -15.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 15.0f, -5.0f, 0.0f, 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, -15.0f, 0.0f, -10.0f, -25.0f, -20.0f, -20.0f, 0.0f, +}; + +void func_84340DC0(void) { + Mtx* sp3C = func_80005F5C(sizeof(Mtx) * 1); + LookAt* sp38 = func_80005F5C(sizeof(LookAt) * 1); + unk_D_86002F34_00C* temp_v0 = func_8432FD64(); + + guLookAtReflect(sp3C, sp38, temp_v0->unk_60.eye.x, temp_v0->unk_60.eye.y, temp_v0->unk_60.eye.z, + temp_v0->unk_60.at.x, temp_v0->unk_60.at.y, temp_v0->unk_60.at.z, temp_v0->unk_60.up.x, + temp_v0->unk_60.up.y, temp_v0->unk_60.up.z); +} + +void func_84340E40(unk_D_8140E720* arg0, s32 arg1) { + f32 sp2C = 1.0f; + s16 sp2A; + s16 sp28; + s16 sp26; + s16 sp24 = func_8140C048(arg0); + + switch (func_8140C058(arg0)) { + case 30: + sp2A = 0x23; + sp28 = 0x24; + func_843432E4(arg0); + break; + + case 0: + sp2A = 0x66; + sp28 = 0x67; + sp2C = 0.5f; + func_843497A8(arg0); + break; + + case 1: + sp2A = 0x68; + sp28 = 0x69; + sp2C = 0.5f; + break; + + case 2: + sp2A = 0x6A; + sp28 = 0x6B; + sp2C = 0.5f; + func_84349940(arg0); + break; + + case 3: + sp2A = 0x73; + sp28 = 0x74; + sp2C = func_8434A574(arg0); + break; + + case 4: + sp2A = 0x78; + sp28 = 0x79; + func_8140BAC8(arg0, 0x50, 0x46, 0x3C); + func_8140BB74(arg0, 0xFF, 0, 0); + break; + + case 5: + sp2A = 0x7B; + sp28 = 0x7C; + break; + + case 6: + sp2A = 0x7D; + sp28 = 0x7E; + break; + + case 7: + sp2A = 0x7F; + sp28 = 0x80; + break; + + case 8: + sp2A = 0x81; + sp28 = 0x82; + sp2C = 5.0f; + func_8140D5A0(arg0, 0x17); + func_8140BC20(arg0, 0x64); + break; + + case 42: + sp2A = 0x81; + sp28 = 0x82; + func_81408F38(arg0, 300.0f); + sp2C = 5.0f; + func_8140D5A0(arg0, 0xC); + func_8140BC20(arg0, 0x64); + break; + + case 43: + sp2A = 0x81; + sp28 = 0x82; + sp2C = 5.0f; + func_8140D5A0(arg0, 0xF); + func_8140BC20(arg0, 0x32); + break; + + case 9: + sp2A = 0x83; + sp28 = 0x84; + func_814082B4(arg0, 0x800); + func_81408E90(arg0, 5.0f); + break; + + case 10: + sp2A = 0x85; + sp28 = 0x86; + sp2C = 0.5f; + break; + + case 11: + sp2A = 0x88; + sp28 = 0x89; + sp2C = func_8434AE68(arg0); + break; + + case 12: + sp2A = 0x8A; + sp28 = 0x8B; + break; + + case 13: + sp2A = 0x9A; + sp28 = 0x9B; + sp2C = 1.5f; + func_8434B0D8(arg0); + + switch (sp24) { + case 1: + func_8140A594(arg0, 0x6000); + break; + + case 2: + func_8140A594(arg0, -0x4000); + break; + } + break; + + case 14: + sp2A = 0x9C; + sp2C = func_8434CA90(arg0); + func_8140BC20(arg0, 0); + break; + + case 15: + sp2A = 0x9C; + sp2C = 1.5f; + func_8140BC20(arg0, 0); + break; + + case 16: + sp2A = 0x9D; + sp28 = 0x9E; + + switch (func_843081BC(arg0->unk_10)) { + case 0x5F: + func_81408F38(arg0, 15.0f); + func_81408CA0(arg0, 15.0f); + break; + + case 0x82: + func_81408F38(arg0, 15.0f); + break; + } + break; + + case 17: + sp2A = 0xA3; + sp28 = 0xA5; + break; + + case 18: + sp2A = 0xA3; + sp28 = 0xA4; + sp2C = 1.5f; + break; + + case 19: + sp2A = 0xA3; + sp28 = 0xBB; + sp2C = 1.5f; + break; + + case 20: + sp2A = 0xAA; + sp28 = 0xAB; + sp2C = 1.5f; + break; + + case 21: + sp2A = 0xAD; + func_8140BF4C(arg0, 0xBE); + func_8140BC20(arg0, 0); + break; + + case 22: + sp2A = 0x5C; + sp28 = 0x5D; + func_843495F0(arg0); + break; + + case 23: + sp2A = 0xAE; + func_8140BC20(arg0, 0); + break; + + case 24: + sp2A = 0xAE; + func_8140BC20(arg0, 0); + break; + + case 25: + sp2A = 0xAF; + sp28 = 0xB0; + func_8140BAC8(arg0, 0xFF, 0xFF, 0); + func_8140BB74(arg0, 0xFF, 0, 0); + func_81408CA0(arg0, 10.0f); + break; + + case 26: + sp2A = 0xB6; + sp2C = func_8434DE24(arg0); + func_8140BC20(arg0, 0); + break; + + case 27: + sp2A = 0xB3; + sp28 = 0xB4; + func_8140BC20(arg0, 0x64); + func_8140BAC8(arg0, 0xFF, 0xFF, 0); + func_8140BB74(arg0, 0xFF, 0, 0); + sp2C = 0.8f; + break; + + case 28: + sp2A = 0xB3; + sp28 = 0xB5; + func_8140BC20(arg0, 0x64); + func_8140BAC8(arg0, 0xFF, 0xFF, 0); + func_8140BB74(arg0, 0xFF, 0, 0); + sp2C = 0.8f; + break; + + case 29: + sp2A = 0xBE; + sp28 = 0xBF; + break; + + case 31: + sp2A = 0xC0; + sp28 = 0xC1; + func_8140D5A0(arg0, 0x17); + func_8140BC20(arg0, 0x32); + sp2C = 1.2f; + break; + + case 32: + sp2A = 0xB1; + sp28 = 0xB2; + func_8140D5A0(arg0, 0); + func_8140BC20(arg0, 0); + break; + + case 33: + sp2A = 0xB7; + break; + + case 34: + sp2A = 0x2E; + sp28 = 0x2F; + func_8140A594(arg0, -0x4000); + sp2C = 0.5f; + break; + + case 35: + sp2A = 0x3B; + sp28 = 0x3C; + break; + + case 36: + sp2A = 0x3D; + sp28 = 0x3E; + + switch (sp24) { + case 0: + sp26 = 0x6000; + break; + + case 1: + sp26 = 0x4000; + break; + + case 2: + sp26 = 0x2000; + break; + } + func_8140A594(arg0, sp26); + break; + + case 37: + sp2A = 0x40; + sp28 = 0x41; + break; + + case 38: + sp2A = 0x4B; + sp28 = 0x4C; + break; + + case 39: + sp2A = 0x4D; + sp28 = 0x4E; + func_8434749C(arg0); + func_8140BAC8(arg0, 0xFF, 0xFF, 0xFF); + func_8140BB74(arg0, 0x37, 0xFF, 0xFF); + break; + + case 40: + sp2A = 0x57; + sp28 = 0x58; + break; + + case 41: + sp2A = 0x5A; + sp28 = 0x5B; + sp2C = func_84349424(arg0); + break; + } + + arg0->unk_14 = func_8432CB68(arg0); + if (arg0->unk_14 != NULL) { + switch (arg1) { + case 0: + func_8432CD70(arg0->unk_14, sp2A, sp28); + break; + + case 1: + func_8432CE00(arg0->unk_14, sp2A); + func_8432CE78(arg0->unk_14, sp28); + break; + + case 2: + func_8432CE00(arg0->unk_14, sp2A); + break; + } + func_8140B938(arg0, sp2C); + func_814081BC(arg0); + } else { + func_81408158(arg0); + } +} + +void func_843416B0(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84340E40(arg0, 0); + break; + + case 2: + if (func_80017514(arg0->unk_14) != 0) { + func_81408150(arg0); + } + break; + } +} + +void func_8434171C(unk_D_8140E720* arg0) { + if (arg0->unk_B2 == 1) { + func_84340E40(arg0, 0); + } +} + +void func_8434174C(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84340E40(arg0, 0); + break; + + case 2: + func_8140BC5C(arg0, arg0->unk_A6, func_8140C040(arg0)); + break; + } +} + +void func_843417AC(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84340E40(arg0, 1); + break; + + case 2: + if (func_8432CED4(arg0->unk_14) != 0) { + func_814081BC(arg0); + } + break; + + case 3: + func_81408158(arg0); + break; + } +} + +void func_84341830(unk_D_8140E720* arg0) { + if (arg0->unk_B2 == 1) { + func_84340E40(arg0, 2); + } +} + +void func_84341860(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84340E40(arg0, 2); + break; + + case 2: + func_8140BC5C(arg0, arg0->unk_A6, func_8140C040(arg0)); + break; + } +} + +Gfx* func_843418C0(Gfx* arg0, u8* arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5, s16 arg6, s16 arg7, s16 arg8, s16 arg9, + s16 argA, s16 argB) { + gDPLoadTextureTile_4b(arg0++, arg1, G_IM_FMT_I, arg2, 0, 0, 0, arg2 - 1, arg2 - 1, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, arg3, arg3, arg6, arg7); + + func_81406204(arg0++, arg4, arg5, arg2, arg2); + + gDPLoadMultiTile_4b(arg0++, arg1, 0x0100, 1, G_IM_FMT_I, arg2, 0, 0, 0, arg2 - 1, arg2 - 1, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, arg3, arg3, argA, argB); + + func_81406288(arg0++, arg8, arg9, arg2, arg2); + return arg0; +} + +Gfx* func_84341B84(Gfx* arg0, arg1_func_8434E21C* arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5, s16 arg6, s16 arg7, + s16 arg8, s16 arg9, s16 argA, s16 argB) { + gDPLoadTextureTile_4b(arg0++, arg1->unk_00, G_IM_FMT_I, arg2, arg2, 0, 0, arg2 - 1, arg2 - 1, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, arg3, arg3, arg6, arg7); + + func_81406204(arg0++, arg4, arg5, arg2, arg2); + + gDPLoadMultiTile_4b(arg0++, arg1->unk_04, 0x0100, 1, G_IM_FMT_I, arg2, arg2, 0, 0, arg2 - 1, arg2 - 1, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, arg3, arg3, argA, argB); + func_81406288(arg0++, arg8, arg9, arg2, arg2); + return arg0; +} + +void func_84341E50(Gfx* arg0) { + unk_D_8140E720* temp_v0 = func_8432CB60(D_8006F09C); + + gDPPipeSync(arg0++); + + gDPSetPrimColor(arg0++, 0, 0, temp_v0->prim_r, temp_v0->prim_g, temp_v0->prim_b, temp_v0->prim_a); + gDPSetEnvColor(arg0++, temp_v0->env_r, temp_v0->env_g, temp_v0->env_b, 255); + + gSPEndDisplayList(arg0++); +} + +void func_84341F08(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 30); + func_84341E50(arg1->unk_18); + } +} + +void func_84341F44(Gfx* arg0, arg1_func_8434E21C* arg1, UNUSED u16 arg2) { + s16 mask = 5; + unk_D_8140E720* sp40; + s16 var_a2; + s16 sp3C; + s16 sp3A; + s16 sp38; + s16 sp36; + s16 w = 32; + s16 h = 32; + s16 sp30; + s16 sp2E; + s16 sp2C; + s16 sp2A; + s32 temp_v0_2; + + sp40 = func_8432CB60(D_8006F09C); + temp_v0_2 = func_8140C040(sp40); + var_a2 = 0x80; + + switch (temp_v0_2) { + case 0: + var_a2 = 0x96; + sp3C = 2; + sp3A = 0; + sp38 = -2; + sp36 = 0; + sp30 = 0xC; + sp2E = 0; + sp2C = 0xF; + sp2A = 0; + break; + + case 1: + var_a2 = 0xFF; + sp3C = 0; + sp3A = 0; + sp38 = 0xF; + sp36 = 0; + sp30 = 0xF; + sp2E = 0; + sp2C = 0xE; + sp2A = 0xD; + break; + + case 2: + var_a2 = 0xFF; + sp3C = 0; + sp3A = 0; + sp38 = 1; + sp36 = 0; + sp30 = 1; + sp2E = 1; + sp2C = 7; + sp2A = 1; + break; + } + + gDPPipeSync(arg0++); + gDPSetPrimColor(arg0++, 0, var_a2, sp40->prim_r, sp40->prim_g, sp40->prim_b, sp40->prim_a); + gDPSetEnvColor(arg0++, sp40->env_r, sp40->env_g, sp40->env_b, 255); + + gDPLoadTextureTile_4b(arg0++, arg1->unk_00, G_IM_FMT_I, w, h, 0, 0, w - 1, h - 1, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, mask, mask, sp30, sp2E); + + func_81406204(arg0++, sp3C, sp3A, w, h); + + gDPLoadMultiTile_4b(arg0++, arg1->unk_04, 0x0100, 1, G_IM_FMT_I, w, h, 0, 0, w - 1, h - 1, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, mask, mask, sp2C, sp2A); + + func_81406288(arg0++, sp38, sp36, w, h); + + gSPEndDisplayList(arg0++); +} + +void func_84342304(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 30); + func_84341F44(arg1->unk_18, arg1->unk_14, D_8006F084); + } +} + +void func_8434234C(unk_D_8140E720* arg0) { + func_8140B938(arg0, 3.0f); + func_81408E90(arg0, 10.0f); + func_81408ED0(arg0, 15.0f); + func_8140AD8C(arg0, -5.0f); + func_8140D530(arg0, 0xA); + func_8140D568(arg0, 0x19); + func_8140BC20(arg0, 0x96); + func_814081BC(arg0); +} + +void func_843423C8(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8434234C(arg0); + break; + + case 2: + func_8140BDD0(arg0); + break; + + case 3: + func_8140BC5C(arg0, 0, 0x20); + break; + + case 4: + func_81408158(arg0); + break; + } + + func_8140B98C(arg0, 0.0f, 0.1f); + func_81409CBC(arg0); +} + +void func_84342478(unk_D_8140E720* arg0) { + f32 sp1C = 0.0f; + f32 sp18 = 0.0f; + + switch (func_843081BC(arg0->unk_10)) { + case 0x2D: + sp1C = 15.0f; + break; + + case 0x36: + sp18 = 10.0f; + break; + + case 0x3B: + sp1C = 10.0f; + sp18 = 10.0f; + break; + + case 0x4D: + sp1C = 10.0f; + break; + + case 0x4F: + sp1C = 10.0f; + sp18 = -10.0f; + break; + + case 0x59: + sp1C = 20.0f; + sp18 = -10.0f; + break; + + case 0x60: + sp1C = 15.0f; + break; + + case 0x66: + sp1C = 10.0f; + break; + + case 0x67: + sp1C = 15.0f; + break; + + case 0x6C: + sp1C = 15.0f; + break; + + case 0x6F: + sp1C = 15.0f; + break; + + case 0x73: + sp1C = 15.0f; + break; + + case 0x7A: + sp1C = 15.0f; + break; + + case 0x7D: + sp1C = 15.0f; + break; + + case 0x7F: + sp18 = 15.0f; + break; + + case 0x82: + sp1C = 15.0f; + sp18 = 5.0f; + break; + + case 0x94: + sp1C = 15.0f; + break; + } + func_81408ED0(arg0, sp1C); + func_81408E90(arg0, sp18); +} + +void func_8434261C(unk_D_8140E720* arg0) { + Vec3f sp34; + UNUSED s32 pad[2]; + s16 sp2A = func_8140C048(arg0); + + func_8140B938(arg0, 0.05f); + + switch (sp2A) { + case 0: + sp34.x = 0; + sp34.y = -5.0f; + sp34.z = 0.0f; + break; + + case 1: + sp34.x = 0; + sp34.y = 5.0f; + sp34.z = 10.0f; + break; + + case 2: + sp34.x = 0; + sp34.y = 5.0f; + sp34.z = -10.0f; + break; + } + + func_81408D78(arg0, sp34); + func_81408E90(arg0, 10.0f); + func_84342478(arg0); + func_8140AD8C(arg0, 0.0f); + func_8140D530(arg0, 0xA); + func_8140D568(arg0, 0x19); + func_8140BC20(arg0, 0x96); + func_814081BC(arg0); +} + +void func_84342758(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8434261C(arg0); + break; + + case 2: + func_8140BDD0(arg0); + break; + + case 3: + func_8140BC5C(arg0, 0, 0x10); + break; + + case 4: + func_81408158(arg0); + break; + } + + func_8140B98C(arg0, 10.0f, 0.05f); + func_81409CBC(arg0); +} + +void func_84342808(void) { + func_8432F8E8(0x55, 1); + func_8432ECA0(0, 8, 0xC, func_84342758, &D_843861D0[0x24], 0xA, 1, 4, 0, 0, 0); + func_8432ECA0(0, 8, 0xC, func_84342758, &D_843861D0[0x24], 0xA, 1, 4, 1, 0, 0); + func_8432ECA0(0, 8, 0xC, func_84342758, &D_843861D0[0x24], 0xA, 1, 4, 2, 0, 0); +} + +void func_84342908(void) { + func_8432ED0C(0x30, 0x20, 0xA); + func_8432ECA0(0, 0xC, 0xA, func_843423C8, &D_843861D0[0x24], 0x14, 1, 4, D_843902E2, 0, 0); +} + +void func_84342980(unk_D_8140E720* arg0) { + f32 sp24 = 0.0f; + f32 sp20 = 0.0f; + f32 sp1C = 0.12f; + + switch (func_843081BC(arg0->unk_10)) { + case 0x4: + sp24 = 5.0f; + break; + case 0xF: + sp24 = 5.0f; + break; + case 0x16: + sp24 = 3.0f; + break; + case 0x1F: + sp24 = 5.0f; + break; + case 0x22: + sp24 = 3.0f; + break; + case 0x24: + sp24 = 15.0f; + sp20 = 15.0f; + break; + case 0x2A: + sp20 = 12.0f; + break; + case 0x2D: + sp24 = -15.0f; + sp20 = 20.0f; + break; + case 0x39: + sp24 = 10.0f; + break; + case 0x41: + sp24 = 8.0f; + break; + case 0x4A: + sp24 = 10.0f; + break; + case 0x4C: + sp24 = 2.0f; + break; + case 0x4F: + sp20 = 8.0f; + sp24 = 7.0f; + break; + case 0x50: + sp20 = 5.0f; + sp24 = 7.0f; + break; + case 0x54: + sp20 = 20.0f; + sp24 = 20.0f; + break; + case 0x55: + sp24 = 20.0f; + sp20 = 25.0f; + break; + case 0x5A: + sp24 = -15.0f; + sp20 = 7.0f; + break; + case 0x5B: + sp24 = -10.0f; + break; + case 0x5E: + sp24 = 5.0f; + break; + case 0x61: + sp24 = 5.0f; + break; + case 0x73: + sp24 = 12.0f; + break; + case 0x7F: + sp24 = 3.0f; + break; + case 0x80: + sp24 = 3.0f; + break; + case 0x82: + sp1C = 0.08f; + sp20 = 5.0f; + break; + case 0x83: + sp1C = 0.08f; + sp24 = 5.0f; + break; + case 0x86: + sp24 = 3.0f; + break; + case 0x88: + sp24 = 3.0f; + break; + case 0x8A: + sp24 = 15.0f; + break; + case 0x8C: + sp24 = 12.0f; + sp20 = 10.0f; + break; + case 0x8E: + sp24 = 10.0f; + break; + case 0x91: + sp24 = 3.0f; + break; + } + + func_81408ED0(arg0, sp24 + 5.0f); + func_81408E90(arg0, sp20); + func_8140B938(arg0, sp1C); +} + +void func_84342C54(unk_D_8140E720* arg0) { + func_84342980(arg0); + func_814081BC(arg0); +} + +void func_84342C7C(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84342C54(arg0); + break; + + case 3: + func_8140BC5C(arg0, 0, 0x20); + break; + + case 4: + func_81408158(arg0); + + case 2: + break; + } +} + +void func_84342CF0(void) { + func_8432EC28(0, func_84342C7C, &D_843861D0[0x2F], 0, 1, 0x10, D_843902E2, 0, 0); +} + +void func_84342D48(unk_D_8140E720* arg0) { + f32 var_fs0 = 0.0f; + + switch (func_843081BC(arg0->unk_10)) { + case 0xF: + var_fs0 = -13.0f; + break; + case 0x10: + var_fs0 = -35.0f; + func_81408ED0(arg0, -5.0f); + break; + case 0x11: + var_fs0 = -45.0f; + func_81408ED0(arg0, -10.0f); + break; + case 0x12: + var_fs0 = -45.0f; + func_81408ED0(arg0, -10.0f); + break; + case 0x16: + var_fs0 = -15.0f; + break; + case 0x19: + var_fs0 = -10.0f; + break; + case 0x22: + var_fs0 = 10.0f; + break; + case 0x29: + func_81408ED0(arg0, -10.0f); + var_fs0 = -60.0f; + break; + case 0x34: + var_fs0 = -10.0f; + break; + case 0x36: + var_fs0 = -5.0f; + break; + case 0x3B: + var_fs0 = 25.0f; + break; + case 0x4A: + var_fs0 = -30.0f; + break; + case 0x4C: + var_fs0 = -10.0f; + break; + case 0x4D: + var_fs0 = -5.0f; + break; + case 0x51: + var_fs0 = -30.0f; + break; + case 0x52: + var_fs0 = -8.0f; + break; + case 0x5A: + var_fs0 = -12.0f; + break; + case 0x5B: + var_fs0 = -15.0f; + break; + case 0x64: + var_fs0 = -12.0f; + break; + case 0x66: + var_fs0 = -20.0f; + break; + case 0x67: + var_fs0 = 5.0f; + func_81408ED0(arg0, 10.0f); + break; + case 0x6C: + var_fs0 = 10.0f; + break; + case 0x70: + var_fs0 = 15.0f; + func_81408ED0(arg0, -10.0f); + break; + case 0x74: + var_fs0 = -20.0f; + break; + case 0x75: + var_fs0 = -10.0f; + break; + case 0x79: + var_fs0 = -8.0f; + break; + case 0x7A: + var_fs0 = -5.0f; + break; + case 0x7B: + var_fs0 = -5.0f; + break; + case 0x7F: + var_fs0 = 5.0f; + break; + case 0x80: + var_fs0 = -12.0f; + break; + case 0x82: + var_fs0 = -10.0f; + func_8140B938(arg0, 0.15f); + break; + case 0x86: + var_fs0 = -5.0f; + func_8140901C(arg0, 5.0f); + break; + case 0x87: + var_fs0 = -15.0f; + break; + case 0x89: + var_fs0 = -30.0f; + break; + case 0x93: + var_fs0 = 18.0f; + func_81408ED0(arg0, -15.0f); + break; + case 0x94: + var_fs0 = 15.0f; + break; + case 0x97: + var_fs0 = -13.0f; + break; + } + func_81408E90(arg0, var_fs0); +} + +void func_84343064(unk_D_8140E720* arg0, s16 arg1) { + Vec3f sp24; + + arg0->unk_14 = func_8432CB68(arg0); + + if (arg0->unk_14 != NULL) { + func_8432CD70(arg0->unk_14, 0x21, 0x22); + func_8140B938(arg0, 0.2f); + func_84342D48(arg0); + func_8000E88C(&sp24, (arg1 * 5.0f * 2) + -10.0f, 5.0f, 10.0f); + func_814091B4(arg0, sp24); + + switch (arg1) { + case 0: + func_8140A2CC(arg0, 0x1400); + break; + + case 1: + func_81408E90(arg0, 2.0f); + func_8140A2CC(arg0, 0); + break; + + case 2: + func_8140A2CC(arg0, -0x1400); + break; + } + + func_814081BC(arg0); + } else { + func_81408158(arg0); + } +} + +void func_843431B0(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + + switch (arg0->unk_B2) { + case 1: + func_8140BCA8(arg0, sp26 * 8); + func_814081BC(arg0); + break; + + case 2: + if (func_8140BDAC(arg0) != 0) { + func_84343064(arg0, sp26); + } + break; + + case 3: + if (func_80017514(arg0->unk_14) != 0) { + func_814081BC(arg0); + } + break; + + case 4: + func_81408158(arg0); + break; + } +} + +void func_84343288(void) { + func_8432F8E8(0x55, 1); + func_8432EC28(0, func_843431B0, &D_8140E460, 0x1E, 3, 6, 0, 0, 0); +} + +void func_843432E4(unk_D_8140E720* arg0) { + f32 sp1C = 10.0f; + f32 sp18 = 0.0f; + + switch (func_843081BC(arg0->unk_10)) { + case 0x5: + sp18 = 10.0f; + break; + case 0xB: + sp1C = 20.0f; + break; + case 0xC: + sp1C = 8.0f; + break; + case 0xD: + sp1C = 15.0f; + break; + case 0xF: + sp1C = -10.0f; + break; + case 0x11: + sp18 = 35.0f; + sp1C = 0.0f; + break; + case 0x12: + sp18 = 35.0f; + sp1C = -5.0f; + break; + case 0x15: + sp1C = 4.0f; + break; + case 0x16: + sp18 = 5.0f; + sp1C = 0.0f; + break; + case 0x18: + sp18 = 8.0f; + break; + case 0x1C: + sp18 = 5.0f; + break; + case 0x21: + sp18 = 5.0f; + break; + case 0x26: + sp1C = 15.0f; + sp18 = 15.0f; + break; + case 0x28: + sp1C = 15.0f; + sp18 = 5.0f; + break; + case 0x29: + sp1C = 0.0f; + break; + case 0x2A: + sp18 = 20.0f; + break; + case 0x2B: + sp1C = 15.0f; + break; + case 0x2D: + sp1C = 10.0f; + sp18 = 15.0f; + func_8140901C(arg0, -1.0f); + break; + case 0x30: + sp18 = 30.0f; + sp1C = -2.0f; + func_8140901C(arg0, -5.0f); + break; + case 0x31: + sp1C = 5.0f; + break; + case 0x32: + sp1C = 20.0f; + break; + case 0x33: + sp1C = 25.0f; + break; + case 0x34: + sp1C = 20.0f; + break; + case 0x36: + sp1C = 15.0f; + break; + case 0x3B: + sp1C = 20.0f; + sp18 = 10.0f; + break; + case 0x3C: + sp1C = 5.0f; + break; + case 0x3D: + sp1C = 5.0f; + break; + case 0x3F: + sp1C = 5.0f; + break; + case 0x40: + sp18 = 10.0f; + sp1C = 0.0f; + break; + case 0x41: + sp1C = 20.0f; + break; + case 0x43: + sp1C = 0.0f; + break; + case 0x44: + sp18 = 8.0f; + break; + case 0x46: + sp1C = -15.0f; + break; + case 0x47: + sp1C = -5.0f; + break; + case 0x48: + sp1C = -8.0f; + break; + case 0x49: + sp1C = 0.0f; + break; + case 0x4B: + sp1C = 0.0f; + break; + case 0x4C: + sp1C = 0.0f; + break; + case 0x4D: + sp1C = -10.0f; + sp18 = 15.0f; + break; + case 0x4E: + sp1C = -5.0f; + break; + case 0x4F: + sp18 = 10.0f; + break; + case 0x51: + sp1C = 0.0f; + break; + case 0x54: + sp1C = 5.0f; + break; + case 0x55: + sp1C = 5.0f; + break; + case 0x56: + sp1C = 15.0f; + sp18 = 15.0f; + break; + case 0x58: + sp18 = 15.0f; + break; + case 0x59: + sp18 = 40.0f; + break; + case 0x5B: + sp1C = 0.0f; + break; + case 0x5C: + sp18 = 10.0f; + break; + case 0x5D: + sp18 = 15.0f; + break; + case 0x5E: + sp1C = 5.0f; + sp18 = 5.0f; + break; + case 0x5F: + func_8140901C(arg0, 23.0f); + sp1C = -10.0f; + sp18 = 0.0f; + break; + case 0x60: + sp1C = 5.0f; + sp18 = 10.0f; + break; + case 0x61: + sp18 = 10.0f; + break; + case 0x62: + sp18 = 10.0f; + break; + case 0x63: + sp1C = 15.0f; + sp18 = 60.0f; + break; + case 0x65: + sp1C = 0.0f; + sp18 = 20.0f; + break; + case 0x66: + sp18 = 10.0f; + break; + case 0x67: + sp18 = 40.0f; + break; + case 0x68: + sp1C = 15.0f; + break; + case 0x6A: + sp1C = 8.0f; + break; + case 0x6B: + sp1C = 15.0f; + break; + case 0x6C: + sp18 = 15.0f; + break; + case 0x6D: + sp1C = 5.0f; + break; + case 0x6E: + sp1C = 5.0f; + break; + case 0x6F: + sp18 = 15.0f; + sp1C = 0.0f; + break; + case 0x70: + sp1C = 17.0f; + sp18 = 10.0f; + break; + case 0x73: + sp18 = 50.0f; + break; + case 0x75: + sp1C = -10.0f; + sp18 = 25.0f; + break; + case 0x77: + sp1C = 0.0f; + break; + case 0x79: + sp18 = 10.0f; + sp1C = 5.0f; + func_8140901C(arg0, -3.0f); + break; + case 0x7B: + sp1C = 5.0f; + break; + case 0x7C: + sp18 = 10.0f; + break; + case 0x7D: + sp18 = 10.0f; + break; + case 0x7F: + sp1C = 25.0f; + break; + case 0x80: + sp18 = 5.0f; + sp1C = -5.0f; + func_8140901C(arg0, 3.0f); + break; + case 0x82: + sp1C = 15.0f; + sp18 = 20.0f; + func_8140901C(arg0, 3.0f); + break; + case 0x83: + sp18 = 10.0f; + break; + case 0x84: + sp1C = 15.0f; + break; + case 0x85: + sp1C = 20.0f; + break; + case 0x86: + sp18 = 10.0f; + break; + case 0x8B: + sp1C = 5.0f; + break; + case 0x8D: + sp18 = 15.0f; + sp1C = 0.0f; + break; + case 0x8E: + sp1C = -15.0f; + sp18 = 25.0f; + break; + case 0x8F: + sp1C = 15.0f; + sp18 = 30.0f; + break; + case 0x90: + sp18 = 15.0f; + break; + case 0x91: + sp1C = 15.0f; + sp18 = 10.0f; + break; + case 0x92: + sp1C = 15.0f; + sp18 = 20.0f; + break; + case 0x94: + sp18 = 15.0f; + break; + case 0x95: + func_81408FAC(arg0, 1.0f); + sp1C = 10.0f; + sp18 = 15.0f; + break; + case 0x96: + sp18 = 20.0f; + sp1C = 7.0f; + break; + case 0x97: + break; + } + func_81408E90(arg0, sp1C); + func_81408ED0(arg0, sp18); +} + +void func_84343988(void) { + func_8432EC28(0, func_8434171C, &D_8140E460, 0x1E, 1, 0xB, 0, 0x1E, 0); + func_8432EB2C(0xF); + + switch (func_8432C544()) { + case 0x70: + func_8432ECA0(0, 0x10, 8, func_8435226C, &D_843861D0[0x44], 0, 4, 0xB, 0, 0x18, 5); + break; + + case 0x71: + func_8432ED0C(0, 0x10, 0x20); + func_8432F344(0, 0, 0xA, 0, 0xFF, 0x30); + func_8432ECA0(0, 0x10, 8, func_8435226C, &D_843861D0[0x44], 0, 8, 0xB, 0, 0x17, 5); + func_8432ED74(0, 1, 0x20, 0xA, 0xFF); + break; + + case 0x73: + func_8432ED0C(0, 0x10, 0x20); + func_8432F344(0, 0, 0xA, 0, 0xFF, 0x30); + func_8432ECA0(0, 0x10, 8, func_8435226C, &D_843861D0[0x44], 0, 8, 0xB, 0, 0, 5); + func_8432ED74(0, 1, 0x20, 0xA, 0xFF); + break; + } +} + +void func_84343B9C(Gfx* arg0, s32 arg1, u16 arg2) { + func_84340DC0(); + + switch (func_8432C544()) { + case 0x70: + gDPPipeSync(arg0++); + gDPSetPrimColor(arg0++, 0, 0x80, 255, 255, 255, 255); + gDPSetEnvColor(arg0++, 155, 255, 255, 255); + break; + + case 0x71: + gDPPipeSync(arg0++); + gDPSetPrimColor(arg0++, 0, 0x80, 255, 255, 255, 255); + gDPSetEnvColor(arg0++, 255, 255, 100, 255); + break; + + case 0x73: + gDPPipeSync(arg0++); + gDPSetPrimColor(arg0++, 0, 0x80, 255, 255, 100, 255); + gDPSetEnvColor(arg0++, 255, 100, 0, 255); + break; + } + + arg0 = func_843418C0(arg0, arg1, 0x20, 5, 0, 2, 0, 0, 0, 1, 0, 0); + + gSPEndDisplayList(arg0++); +} + +void func_84343D24(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 30); + func_84343B9C(arg1->unk_18, arg1->unk_14, D_8006F084); + } +} + +void func_84343D6C(unk_D_8140E720* arg0) { + f32 sp24 = 1.2f; + f32 sp20 = 0.0f; + s32 temp_v0 = func_843081BC(arg0->unk_10); + + if (temp_v0 < 0x98) { + sp24 = D_84387B00[temp_v0]; + sp20 = D_84387D60[temp_v0]; + } + + switch (temp_v0) { + case 0x29: + func_81408E90(arg0, 35.0f); + break; + + case 0x57: + func_81408E90(arg0, -10.0f); + break; + + case 0x94: + func_8140901C(arg0, 15.0f); + break; + } + + func_8140B938(arg0, sp24); + func_81408ED0(arg0, sp20); +} + +void func_84343E44(unk_D_8140E720* arg0, UNUSED s16 arg1) { + arg0->unk_14 = func_8432CB68(arg0); + if (arg0->unk_14 != NULL) { + func_8432CD70(arg0->unk_14, 0x25, 0x26); + func_84343D6C(arg0); + func_8140BCA8(arg0, 0x20); + func_814081BC(arg0); + } else { + func_81408158(arg0); + } +} + +void func_84343EB4(unk_D_8140E720* arg0) { + s16 temp_a1 = func_8140C038(arg0); + + switch (arg0->unk_B2) { + case 1: + func_84343E44(arg0, temp_a1); + break; + + case 2: + if (func_8140BDAC(arg0) != 0) { + func_8432D8E8(arg0, func_8435226C, &D_843861D0[0x42], 8, 0x18, 3); + func_8140BCA8(arg0, 0x10); + } + break; + + case 3: + func_8140B9D0(arg0, 0.0f, 0.05f); + func_8140BC2C(arg0, 0, 8); + break; + + case 4: + func_81408158(arg0); + break; + } +} + +void func_84343FA4(Gfx* arg0, u16 arg1) { + unk_D_86002F58_004_000* tmp = D_8006F09C; + + gDPPipeSync(arg0++); + + gDPSetPrimColor(arg0++, 0, 0x80, 255, 255, 255, tmp->unk_01D); + + func_81406204(arg0++, 1, 1, 0x20, 0x20); + func_81406288(arg0++, 2, 2, 0x20, 0x20); + + gSPEndDisplayList(arg0++); +} + +void func_84344050(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 10); + func_84343FA4(arg1->unk_18, D_8006F084); + } +} + +void func_84344094(void) { + func_8432EC28(0, func_84343EB4, &D_8140E460, 0x1E, 1, 7, 0, 0, 0); + func_8432EC28(0x14, func_84332BE4, &D_8140E460, 0x50, 1, 0, 0, 0x35, 0); +} + +void func_8434411C(unk_D_8140E720* arg0) { + s16 sp26; + u16 sp24; + u16 sp22; + + sp26 = func_8432C544(); + sp24 = 0x19; + sp22 = 0xA; + func_8140BECC(arg0, 7); + func_8140B938(arg0, 1.0f); + func_81408BE0(arg0, 160.0f, 120.0f, 0.0f); + + switch (sp26) { + case 0x4E: + case 0x93: + break; + + case 0x4D: + sp24 = 0x3E; + sp22 = 0; + break; + + case 0x4F: + sp24 = 0x35; + break; + } + + func_8140D530(arg0, sp24); + func_8140D568(arg0, sp22); + func_8140BC20(arg0, 0); + func_814081BC(arg0); +} + +void func_843441F8(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8434411C(arg0); + break; + + case 2: + func_8140BC5C(arg0, 0xFF, 4); + break; + } +} + +void func_84344248(void) { + func_8432EC28(8, func_843441F8, &D_843861D0[0x32], 0, 1, 0x18, 0, 0, 0); + func_8432EC28(8, func_843441F8, &D_843861D0[0x31], 0, 1, 0x18, 0, 0, 0); + func_8432ECA0(0, 3, 0x14, func_84353AEC, &D_843861D0[0x47], 0, 1, 0x10, 0x64, 0, 0); +} + +void func_84344318(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C058(arg0); + + func_8140BECC(arg0, 7); + func_8140B938(arg0, 1.0f); + func_81408BE0(arg0, 160.0f, 120.0f, 0.0f); + func_8140D5A0(arg0, sp26); + func_8140BC20(arg0, 0); + func_814081BC(arg0); +} + +void func_84344390(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84344318(arg0); + break; + + case 2: + func_8140BC5C(arg0, 0xB4, 8); + break; + } +} + +void func_843443E0(void) { + func_8432EC28(8, func_84344390, &D_843861D0[0x33], 0, 1, 0x18, 0, 0x1C, 0); + func_8432EC28(0, func_84353AEC, &D_843861D0[0x47], 0, 0xF, 0x11, D_843902E2, 0, 0); +} + +void func_84344474(void) { + func_8432EC28(8, func_84344390, &D_843861D0[0x33], 0, 1, 0x18, 0, 0x1E, 0); + func_8432EC28(0, func_84353AEC, &D_843861D0[0x47], 0, 0xF, 0x11, D_843902E2, 0, 0); +} + +void func_84344508(void) { + func_8432EC28(8, func_84344390, &D_843861D0[0x33], 0, 1, 0x18, 0, 0x1D, 0); + func_8432EC28(0, func_84353AEC, &D_843861D0[0x47], 0, 0xF, 0x11, D_843902E2, 0, 0); +} + +void func_8434459C(unk_D_8140E720* arg0) { + func_8140B938(arg0, 0.2f); + func_8140D5A0(arg0, 0xD); + func_8140BC20(arg0, 0xFF); + func_814081BC(arg0); +} + +void func_843445E4(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8434459C(arg0); + break; + + case 2: + func_814084D8(arg0, 0, 7, 1, 2, 0); + func_8140BC2C(arg0, 0x20, 0x18); + break; + + case 3: + func_81408158(arg0); + break; + } + + func_8140B98C(arg0, 0.1f, 0.01f); +} + +void func_84344698(unk_D_8140E720* arg0) { + s16 sp2E = func_8140C038(arg0); + + func_8140B938(arg0, 0.5f); + func_8140AD8C(arg0, 4.5f); + func_8140A52C(arg0, func_81400B28(0x800, -0x3800), func_81400B00(0x1400), 0); + func_8140BCA8(arg0, sp2E * 2); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84344734(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84344698(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + arg0->unk_14 = func_8432CB68(arg0); + func_8432CE00(arg0->unk_14, 0x9F); + func_81408328(arg0); + func_8140BCA8(arg0, func_81400A78(3)); + } + break; + + case 3: + if (func_8140BDD0(arg0) != 0) { + func_8432D8E8(arg0, func_8435226C, &D_843861D0[0x42], 1, 0x17, 4); + } + break; + + case 4: + func_8140826C(arg0, 0x1E); + break; + + case 5: + func_81408158(arg0); + break; + } + + if (func_81408368(arg0) != 0) { + func_8140A76C(arg0, 0x1800, 0x400); + func_81409D0C(arg0); + func_8140A5B0(arg0, 0x2000); + func_8432D844(arg0, func_843445E4, &D_843861D0[0x4A], 1); + } +} + +void func_84344888(unk_D_8140E720* arg0) { + f32 sp1C = 0.0f; + + if (func_843081BC(arg0->unk_10) == 0x8C) { + sp1C = 5.0f; + } + func_81408E90(arg0, sp1C); +} + +void func_843448D8(unk_D_8140E720* arg0) { + arg0->unk_14 = func_8432CB68(arg0); + if (arg0->unk_14 != NULL) { + func_8432CD70(arg0->unk_14, 0x2B, 0x2C); + func_8140B938(arg0, 0.25f); + func_8140A2B8(arg0, func_81400A78(0x10000)); + func_84344888(arg0); + func_814081BC(arg0); + } else { + func_81408158(arg0); + } +} + +void func_8434495C(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8140BCA8(arg0, func_81400A78(0x18)); + func_814081BC(arg0); + break; + + case 2: + if (func_8140BDAC(arg0) != 0) { + func_843448D8(arg0); + func_8432EC28(0, func_8435226C, &D_843861D0[0x42], 0, 1, 0x10, arg0->unk_CD, 0x17, 4); + } + break; + + case 3: + if (func_80017514(arg0->unk_14) != 0) { + func_814081BC(arg0); + } + break; + } +} + +void func_84344A4C(void) { + func_8432ECA0(0, 4, 5, func_84344734, &D_8140E460, 0, 2, 0x11, D_843902E2, 0, 0); + func_8432ECA0(0, 8, 3, func_84354A10, &D_843861D0[0x4A], 0, 1, 0x11, D_843902E2, 0x33, 6); +} + +void func_84344B04(void) { + s32 i; + s32 var_s2 = 0; + s32 tmp; + s32 end = D_843902E8->unk_000.unk_0A7; + + if (end != 0) { + for (i = 0; i < end; i++) { + tmp = D_843902E8->unk_000.unk_0A8[i].unk_00; + func_8432EC28(0, func_8434495C, &D_8140E460, 0, 1, 0x10, tmp, 0, 0); + var_s2++; + if (var_s2 >= 8) { + break; + } + } + } +} + +void func_84344BDC(void) { + func_8432EC28(0, func_8434171C, &D_8140E460, 0, 1, 0xA, 0, 0x22, 0); + func_8432ECA0(4, 2, 4, func_8435226C, &D_843861D0[0x42], 0, 4, 9, 0, 0x17, 1); +} + +void func_84344C7C(Gfx* arg0, u8* arg1) { + func_84340DC0(); + arg0 = func_843418C0(arg0, arg1, 0x20, 5, 2, 0, 0, 0, 1, 0, 0, 0); + gSPEndDisplayList(arg0++); +} + +void func_84344CE8(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 30); + func_84344C7C(arg1->unk_18, arg1->unk_14); + } +} + +void func_84344D28(unk_D_8140E720* arg0) { + arg0->unk_14 = func_8432CC54(arg0); + if (arg0->unk_14 != NULL) { + func_8432CE00(arg0->unk_14, 0x30); + func_814082B4(arg0, 0x200); + func_8140B950(arg0, 5.3f); + func_8140BC20(arg0, 0); + func_814081BC(arg0); + } else { + func_81408158(arg0); + } +} + +void func_84344DA4(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84344D28(arg0); + break; + + case 2: + func_8140BC5C(arg0, 0xFF, 0x20); + break; + } + + if (func_8140819C(arg0) != 0) { + func_8432D340(&arg0->unk_50, 3700.0f); + } +} + +void func_84344E20(unk_D_8140E720* arg0) { + UNUSED s32 pad[2]; + s16 sp26 = func_8140C038(arg0); + UNUSED s16 pad2; + s16 sp22; + + func_8140C040(arg0); + sp22 = func_8140C058(arg0); + func_8140BCA8(arg0, sp26 * 2); + func_8140D5A0(arg0, func_8140C058(arg0)); + func_8140B938(arg0, 1.2f); + func_8140B95C(arg0, 1.0f); + func_8140B974(arg0, 0.02f); + func_8140959C(arg0, 5, 0xF, 0xF); + func_81408E90(arg0, 10.0f); + func_8140AD8C(arg0, (func_81400A78(0xA) * 0.5f) + 8.0f); + func_8140D5A0(arg0, sp22); + func_8140BC20(arg0, 0xC8); + func_8140BF4C(arg0, 4); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84344F58(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84344E20(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + func_8140BCA8(arg0, 4); + } + break; + + case 3: + func_8140BA1C(arg0); + func_814084D8(arg0, 1, 7, 1, 2, 0); + func_81409EA0(arg0); + func_8140BC2C(arg0, 0x40, 8); + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_84345038(void) { + func_8432ED0C(0, 0x10, 0x35); + func_8432EFB4(0, 0xFF, 0x10, 0xA, 0x96); + func_8432EC28(0, func_84344DA4, &D_8140E460, 0x1E, 1, 0x14, 0, 0, 0); +} + +void func_843450B4(void) { + func_8432ECA0(0, 0xA, 2, func_843416B0, &D_8140E460, 0, 1, 0xC, 0, 0x2A, 0); + func_8432F538(4, 0xA, 0x35, 8, 0xC8, 0x18); + func_8432EB20(4); + func_8432ECA0(0, 5, 5, func_84344F58, &D_843861D0[0x4A], 0, 4, 0xB, 9, 0x13, 0); + func_8432ECA0(0, 3, 8, func_84352464, &D_843861D0[0x44], 0, 4, 0xB, 9, 0x18, 0xB); + func_8432ECA0(0, 7, 3, func_84339ECC, &D_843861D0[0x19], 0, 6, 0x10, D_843902E2, 0x26, 0); + func_8432ED0C(0x32, 0x20, 0xA); +} + +void func_8434523C(Gfx* arg0, s32 arg1, u16 arg2) { + unk_D_8140E720* temp_v0 = func_8432CB60(D_8006F09C); + + gDPPipeSync(arg0++); + gDPSetPrimColor(arg0++, 0, 0x80, 255, 255, 255, temp_v0->prim_a); + + arg0 = func_84341B84(arg0, arg1, 0x40, 6, -4, 0xF, 0, 0, -0xF, 5, 0, 0); + + gSPEndDisplayList(arg0++); +} + +void func_843452F0(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 30); + func_8434523C(arg1->unk_18, arg1->unk_14, D_8006F084); + } +} + +void func_84345338(Gfx* arg0, arg1_func_8434E21C* arg1, UNUSED u16 arg2) { + arg0 = func_84341B84(arg0, arg1, 0x40, 6, -4, 0xF, 0, 0, -5, 5, 0, 0); + + gSPEndDisplayList(arg0++); +} + +void func_8434539C(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 30); + func_84345338(arg1->unk_18, arg1->unk_14, D_8006F084); + } +} + +void func_843453E4(Gfx* arg0, u8* arg1, UNUSED u16 arg2) { + arg0 = func_843418C0(arg0, arg1, 0x20, 5, -8, -0x1E, 0, 0, -0xB, -0xA, 0, 0); + + gSPEndDisplayList(arg0++); +} + +void func_84345448(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 30); + func_843453E4(arg1->unk_18, arg1->unk_14, D_8006F084); + } +} + +void func_84345490(void) { +} + +void func_84345498(unk_D_8140E720* arg0) { + f32 sp1C = 5.0f; + + switch (func_843081BC(arg0->unk_10)) { + case 0xF: + sp1C = -10.0f; + break; + + case 0x10: + sp1C = -30.0f; + break; + + case 0x11: + sp1C = -35.0f; + break; + + case 0x12: + sp1C = -35.0f; + break; + + case 0x29: + sp1C = -50.0f; + break; + + case 0x3B: + sp1C = 23.0f; + break; + + case 0x4A: + sp1C = -25.0f; + break; + + case 0x5A: + sp1C = -8.0f; + break; + + case 0x5F: + sp1C = -20.0f; + func_8140901C(arg0, 10.0f); + break; + + case 0x64: + sp1C = -10.0f; + break; + + case 0x89: + sp1C = -25.0f; + break; + + case 0x93: + sp1C = 17.0f; + break; + + case 0x97: + sp1C = -10.0f; + break; + } + func_81408E90(arg0, sp1C); +} + +void func_84345618(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C058(arg0); + s16 sp24; + + arg0->unk_14 = func_8432CB68(arg0); + + if (arg0->unk_14 != NULL) { + func_8432CD70(arg0->unk_14, 0x31, 0x32); + func_8140B938(arg0, 0.25f); + func_84345498(arg0); + switch (sp26) { + case 0: + sp24 = 0; + break; + + case 1: + sp24 = 0x5555; + break; + + case 2: + sp24 = -0x5556; + break; + } + + func_8140A594(arg0, sp24); + func_814081BC(arg0); + } else { + func_81408158(arg0); + } +} + +void func_843456DC(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84345618(arg0); + break; + + case 2: + if (func_80017514(arg0->unk_14) != 0) { + func_814081BC(arg0); + } + break; + + case 3: + func_81408158(arg0); + break; + } +} + +void func_8434575C(void) { + func_8432EC28(0, func_843456DC, &D_8140E460, 0x1E, 1, 6, D_843902E2, 0, 0); + func_8432EC28(0, func_843456DC, &D_8140E460, 0x1E, 1, 6, D_843902E2, 1, 0); + func_8432EC28(0, func_843456DC, &D_8140E460, 0x1E, 1, 6, D_843902E2, 2, 0); +} + +void func_84345838(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C058(arg0); + u16 sp24; + + switch (func_8432C544()) { + case 0x47: + sp24 = 0x18; + break; + + case 0x48: + sp24 = 0x1F; + break; + + case 0x8D: + sp24 = 0x21; + break; + } + + func_8140D5A0(arg0, sp24); + + arg0->unk_14 = func_8432CB68(arg0); + if (arg0->unk_14 != NULL) { + func_8432CE00(arg0->unk_14, 0x33); + if (sp26 == 0) { + func_8432CE3C(arg0->unk_14, 0x34); + } else { + func_8432CE78(arg0->unk_14, 0x34); + } + func_8140B938(arg0, 1.0f); + func_814081BC(arg0); + } else { + func_81408158(arg0); + } +} + +void func_84345920(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84345838(arg0); + break; + + case 2: + if (func_8432CED4(arg0->unk_14) != 0) { + func_814081BC(arg0); + } + break; + + case 3: + func_81408158(arg0); + break; + } +} + +void func_843459A0(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84345838(arg0); + break; + + case 2: + if (func_80017514(arg0->unk_14) != 0) { + func_814081BC(arg0); + } + break; + + case 3: + func_81408158(arg0); + break; + } +} + +void func_84345A20(Gfx* arg0, UNUSED s32 arg1, UNUSED u16 arg2) { + unk_D_8140E720* temp_v0 = func_8432CB60(D_8006F09C); + + gDPPipeSync(arg0++); + + gDPSetPrimColor(arg0++, 0, 0, temp_v0->prim_r, temp_v0->prim_g, temp_v0->prim_b, temp_v0->prim_a); + gDPSetEnvColor(arg0++, temp_v0->env_r, temp_v0->env_g, temp_v0->env_b, 0); + + gSPEndDisplayList(arg0++); +} + +void func_84345AE0(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 30); + func_84345A20(arg1->unk_18, arg1->unk_14, D_8006F084); + } +} + +void func_84345B28(void) { + func_8432EC28(0, func_84345920, &D_8140E460, 0, 1, 2, D_843902E2, 1, 0); +} + +void func_84345B84(void) { + switch (func_8432C544()) { + case 0x8D: + func_8432F638(0, 0xC, 0x41, 2, 0xC8, 0x10); + break; + + case 0x47: + func_8432F638(0, 0x37, 0x41, 2, 0xC8, 0x10); + break; + + case 0x48: + func_8432F638(0, 0x29, 0x41, 2, 0xC8, 0x10); + break; + } + + func_8432EC28(0, func_843459A0, &D_8140E460, 0, 1, 2, D_843902E2, 0, 0); +} + +void func_84345C78(unk_D_8140E720* arg0) { + arg0->unk_14 = func_8432CB68(arg0); + if (arg0->unk_14 != NULL) { + func_8432CE00(arg0->unk_14, 0x35); + func_8140B938(arg0, 5.0f); + func_81408E90(arg0, -100.0f); + func_8140BC20(arg0, 0); + func_814081BC(arg0); + } else { + func_81408158(arg0); + } +} + +void func_84345CF0(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84345C78(arg0); + break; + + case 2: + func_8140BC5C(arg0, 0x80, 0x10); + break; + + case 3: + func_8140BDD0(arg0); + break; + + case 4: + func_8140BC5C(arg0, 0, 0x20); + break; + } +} + +void func_84345D74(void) { + func_8432EC28(0, func_84345CF0, &D_8140E460, 0xA, 1, 0xA, 0, 0, 0); +} + +void func_84345DC4(unk_D_8140E720* arg0) { + arg0->unk_14 = func_8432CB68(arg0); + if (arg0->unk_14 != NULL) { + func_8432CE00(arg0->unk_14, 0x35); + func_8140B938(arg0, 5.0f); + func_81408E90(arg0, -100.0f); + func_8140BC20(arg0, 0); + func_814081BC(arg0); + } else { + func_81408158(arg0); + } +} + +void func_84345E3C(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84345DC4(arg0); + break; + + case 2: + func_8140BC5C(arg0, 0x80, 0x10); + break; + + case 3: + func_8140BDD0(arg0); + break; + + case 4: + func_8140BC5C(arg0, 0, 0x20); + break; + } +} + +void func_84345EC0(void) { + func_8432EC28(0, func_84345E3C, &D_8140E460, 0x40, 1, 0xA, 0, 0, 0); + func_8432F7A0(0, 0xFF, 0, 0x10); + func_8432F7A0(0x2D, 0, 0xFF, 0x20); +} + +void func_84345F38(Gfx* arg0, s32 arg1, u16 arg2) { + UNUSED s32 pad; + unk_D_8140E720* sp28 = func_8432CB60(D_8006F09C); + + func_81406204(arg0++, 1, 0x28, 0x20, 0x20); + func_81406288(arg0++, -1, 0x1E, 0x20, 0x20); + + gDPPipeSync(arg0++); + + gDPSetPrimColor(arg0++, 0, 0x80, 255, 255, 255, sp28->prim_a); + gDPSetEnvColor(arg0++, 255, 55, 100, 255); + + gSPEndDisplayList(arg0++); +} + +void func_84346014(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 30); + func_84345F38(arg1->unk_18, arg1->unk_14, D_8006F084); + } +} + +void func_8434605C(Gfx* arg0, UNUSED s32 arg1, UNUSED u16 arg2) { + unk_D_8140E720* temp_v0 = func_8432CB60(D_8006F09C); + + gDPPipeSync(arg0++); + + gDPSetPrimColor(arg0++, 0, 0x80, 255, 255, 255, temp_v0->prim_a); + gDPSetEnvColor(arg0++, 255, 255, 100, 255); + + gSPEndDisplayList(arg0++); +} + +void func_843460EC(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 30); + func_8434605C(arg1->unk_18, arg1->unk_14, D_8006F084); + } +} + +void func_84346134(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C058(arg0); + + arg0->unk_14 = func_8432CB68(arg0); + if (arg0->unk_14 != NULL) { + if (sp26 == 0) { + func_8432CD70(arg0->unk_14, 0x36, 0x37); + func_8140B938(arg0, 0.75f); + } else { + func_8432CD70(arg0->unk_14, 0x61, 0x62); + func_8140B938(arg0, 1.0f); + } + func_814081BC(arg0); + } else { + func_81408158(arg0); + } +} + +void func_843461D0(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84346134(arg0); + break; + + case 2: + if (func_80017514(arg0->unk_14) != 0) { + func_814081BC(arg0); + } + break; + + case 3: + func_81408158(arg0); + break; + } +} + +void func_84346250(unk_D_8140E720* arg0) { + u16 sp26 = func_8140C058(arg0); + + arg0->unk_14 = func_8432CB68(arg0); + if (arg0->unk_14 != NULL) { + func_8432CD70(arg0->unk_14, 0x39, 0x3A); + func_8140B938(arg0, 0.5f); + + switch (sp26) { + case 0: + break; + + case 1: + func_81408E18(arg0, -10.0f, 0.0f, 20.0f); + break; + + case 2: + func_81408E18(arg0, 10.0f, 0.0f, -20.0f); + break; + + case 3: + func_81408E18(arg0, 20.0f, 0.0f, -20.0f); + break; + + case 4: + func_81408E18(arg0, -20.0f, 0.0f, 20.0f); + break; + + case 5: + func_81408E18(arg0, 15.0f, 0.0f, -25.0f); + break; + + case 6: + func_81408E18(arg0, 20.0f, 0.0f, 30.0f); + break; + + case 7: + func_81408E18(arg0, 15.0f, 0.0f, -10.0f); + break; + + case 8: + func_8140B938(arg0, 1.5f); + break; + } + func_8140BAC8(arg0, 0xFF, 0xFF, 0xFF); + func_814081BC(arg0); + } else { + func_81408158(arg0); + } +} + +void func_843463C8(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84346250(arg0); + break; + + case 2: + func_8140826C(arg0, 0xA); + break; + + case 3: + func_8140BAE4(arg0, 0, 0x10); + func_8140BB14(arg0, 0, 0x20); + if (func_80017514(arg0->unk_14) != 0) { + func_814081BC(arg0); + } + break; + + case 4: + func_81408158(arg0); + break; + } +} + +void func_84346488(unk_D_8140E720* arg0) { + f32 sp1C = 0.6f; + f32 sp18 = 0.0f; + + switch (func_843081BC(arg0->unk_10)) { + case 0x3: + sp1C = 1.0f; + sp18 = 5.0f; + break; + + case 0x22: + sp1C = 1.0f; + sp18 = 5.0f; + break; + + case 0x4C: + sp1C = 0.8f; + sp18 = 5.0f; + break; + + case 0x5E: + sp1C = 0.8f; + sp18 = 5.0f; + break; + + case 0x80: + sp1C = 0.8f; + sp18 = 10.0f; + break; + + case 0x82: + sp18 = 20.0f; + break; + + case 0x88: + sp1C = 1.2f; + sp18 = 10.0f; + break; + + case 0x8E: + sp1C = 1.2f; + sp18 = 20.0f; + break; + + case 0x91: + sp1C = 1.2f; + sp18 = 15.0f; + break; + + case 0x95: + sp18 = 10.0f; + break; + } + + func_8140B938(arg0, sp1C); + func_81408F38(arg0, sp18); +} + +void func_84346634(unk_D_8140E720* arg0) { + arg0->unk_14 = func_8432CB68(arg0); + if (arg0->unk_14 != NULL) { + func_8432CE00(arg0->unk_14, 0x38); + func_84346488(arg0); + func_8140BC20(arg0, 0); + func_814081BC(arg0); + } else { + func_81408158(arg0); + } +} + +void func_8434669C(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84346634(arg0); + break; + + case 2: + func_8140BC5C(arg0, 0xFF, 4); + break; + } +} + +void func_843466EC(Gfx* arg0, s32 arg1, u16 arg2) { + unk_D_8140E720* temp_v0 = func_8432CB60(D_8006F09C); + + gDPPipeSync(arg0++); + + gDPSetPrimColor(arg0++, 0, 0xC8, 255, 255, 255, temp_v0->prim_a); + gDPSetEnvColor(arg0++, 255, 155, 0, 255); + + arg0 = func_84341B84(arg0, arg1, 0x20, 5, 1, 0, 0, 0, -1, 0, 0, 0); + + gSPEndDisplayList(arg0++); +} + +void func_843467B0(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 30); + func_843466EC(arg1->unk_18, arg1->unk_14, D_8006F084); + } +} + +void func_843467F8(Gfx* arg0, u8* arg1, UNUSED u16 arg2) { + unk_D_8140E720* temp_v0 = func_8432CB60(D_8006F09C); + + gDPPipeSync(arg0++); + + gDPSetPrimColor(arg0++, 0, 0, 255, 255, 255, temp_v0->prim_r); + gDPSetEnvColor(arg0++, 255, 155, 0, 255); + gDPSetCombineLERP(arg0++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED, + 0, 0, 0, COMBINED); + gDPSetTextureLUT(arg0++, G_TT_NONE); + gSPTexture(arg0++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); + gDPLoadTextureBlock_4b(arg0++, arg1, G_IM_FMT_I, 32, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, + G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + + gSPEndDisplayList(arg0++); +} + +void func_84346960(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 30); + func_843467F8(arg1->unk_18, arg1->unk_14, D_8006F084); + } +} + +void func_843469A8(Gfx* arg0, u8* arg1, UNUSED u16 arg2) { + unk_D_8140E720* temp_v0 = func_8432CB60(D_8006F09C); + + gDPPipeSync(arg0++); + + gDPSetPrimColor(arg0++, 0, 0, 255, 255, 255, temp_v0->prim_g); + gDPSetEnvColor(arg0++, 255, 255, 0, 255); + gDPSetCombineLERP(arg0++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED, + 0, 0, 0, COMBINED); + gDPSetTextureLUT(arg0++, G_TT_NONE); + gSPTexture(arg0++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); + gDPLoadTextureBlock_4b(arg0++, arg1, G_IM_FMT_I, 32, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, + G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + + gSPEndDisplayList(arg0++); +} + +void func_84346B10(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 30); + func_843469A8(arg1->unk_18, arg1->unk_14, D_8006F084); + } +} + +void func_84346B58(void) { + func_8432EC28(0, func_843461D0, &D_8140E460, 0, 1, 0xA, 0, 0, 0); + func_8432EC28(0, func_8434669C, &D_8140E460, 0, 1, 0xA, 0, 0, 0); +} + +void func_84346BE0(void) { + func_8432EC28(0, func_843463C8, &D_8140E460, 0, 1, 0xA, 0, 1, 0); + func_8432EC28(2, func_843463C8, &D_8140E460, 0, 1, 0xA, 0, 2, 0); + func_8432EC28(5, func_843463C8, &D_8140E460, 0, 1, 0xA, 0, 3, 0); + func_8432EC28(8, func_843463C8, &D_8140E460, 0, 1, 0xA, 0, 0, 0); + func_8432EC28(9, func_843463C8, &D_8140E460, 0, 1, 0xA, 0, 5, 0); + func_8432EC28(0xA, func_843463C8, &D_8140E460, 0, 1, 0xA, 0, 6, 0); + func_8432EC28(0xD, func_843463C8, &D_8140E460, 0, 1, 0xA, 0, 7, 0); + func_8432ECA0(0xA, 3, 2, func_84350DAC, &D_843861D0[0x3F], 0, 0x10, 0xA, 0, 0x11, 0); +} + +void func_84346DC4(void) { + func_8432EC28(0, func_843461D0, &D_8140E460, 0, 1, 0xA, 0, 1, 0); + func_8432EC28(0, func_8434669C, &D_8140E460, 0, 1, 0xA, 0, 0, 0); +} + +void func_84346E50(void) { + func_8432EC28(0, func_843463C8, &D_8140E460, 0, 1, 0xA, 0, 8, 0); + func_8432ECA0(0xA, 3, 2, func_84350DAC, &D_843861D0[0x3E], 0, 0x10, 0xA, 0, 0x11, 0); +} + +void func_84346EEC(void) { + func_8432EC28(0, func_843416B0, &D_8140E460, 0, 1, 0xA, 0, 0x23, 0); +} + +void func_84346F40(void) { + func_8432EC28(0, func_843416B0, &D_8140E460, 0, 1, 0xA, 0, 0x24, 0); + func_8432EC28(8, func_843416B0, &D_8140E460, 0, 1, 0xA, 1, 0x24, 0); + func_8432EC28(0x10, func_843416B0, &D_8140E460, 0, 1, 0xA, 2, 0x24, 0); + func_8432F344(0x5F, 0, 0xA, 0, 0xFF, 8); + func_8432ECA0(0x5F, 8, 0xC, func_8435226C, &D_843861D0[0x42], 0, 8, 9, 0, 0x17, 6); +} + +void func_84347080(unk_D_8140E720* arg0) { + arg0->unk_14 = func_8432CB68(arg0); + if (arg0->unk_14 != NULL) { + func_8432CE00(arg0->unk_14, 0x60); + func_8140BECC(arg0, 7); + func_814082B4(arg0, 0x200); + func_8140B950(arg0, 3.3f); + func_8140BC20(arg0, 0); + func_814081BC(arg0); + } else { + func_81408158(arg0); + } +} + +void func_84347108(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84347080(arg0); + break; + + case 2: + func_8140BC2C(arg0, 0x9B, 8); + break; + + case 3: + func_81408150(arg0); + break; + } + + if (func_8140819C(arg0) != 0) { + func_8432D340(&arg0->unk_50, 200.0f); + } +} + +void func_8434719C(Gfx* arg0, arg1_func_8434E21C* arg1, UNUSED u16 arg2) { + func_8432CB60(D_8006F09C); + + gDPPipeSync(arg0++); + gDPSetEnvColor(arg0++, 155, 255, 255, 255); + + arg0 = func_84341B84(arg0, arg1, 0x20, 5, 2, 1, 0xE, 0xF, 0, 4, 0xC, 5); + + gSPEndDisplayList(arg0++); +} + +void func_84347254(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 30); + func_8434719C(arg1->unk_18, arg1->unk_14, D_8006F084); + } +} + +void func_8434729C(Gfx* arg0, arg1_func_8434E21C* arg1, UNUSED u16 arg2) { + unk_D_8140E720* temp_v0 = func_8432CB60(D_8006F09C); + + gDPPipeSync(arg0++); + gDPSetPrimColor(arg0++, 0, 0x80, 255, 255, 255, temp_v0->prim_a); + gDPSetEnvColor(arg0++, 0, 255, 255, 255); + + arg0 = func_84341B84(arg0, arg1, 0x20, 5, -3, -5, 0xD, 3, 0, -2, 0xF, 2); + + gSPEndDisplayList(arg0++); +} + +void func_84347374(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 30); + func_8434729C(arg1->unk_18, arg1->unk_14, D_8006F084); + } +} + +void func_843473BC(void) { + func_8432EC28(0, func_843416B0, &D_8140E460, 0, 1, 0xE, 0, 0x25, 0); + func_8432EC28(0, func_84347108, &D_8140E460, 0, 1, 0x14, 0, 0, 0); +} + +void func_84347448(void) { + func_8432EC28(0, func_843416B0, &D_8140E460, 0, 1, 0xE, 0, 0x25, 0); +} + +void func_8434749C(unk_D_8140E720* arg0) { + f32 var_fs0 = 0.0f; + + switch (func_843081BC(arg0->unk_10)) { + case 0x5: + func_81408F38(arg0, 10.0f); + break; + + case 0xC: + var_fs0 = 20.0f; + break; + + case 0xD: + var_fs0 = -5.0f; + func_81408F38(arg0, 15.0f); + break; + + case 0x34: + var_fs0 = -10.0f; + break; + + case 0x4A: + var_fs0 = 10.0f; + break; + + case 0x4D: + var_fs0 = 10.0f; + func_81408ED0(arg0, 10.0f); + break; + + case 0x5A: + var_fs0 = -5.0f; + func_81408ED0(arg0, 5.0f); + break; + + case 0x66: + var_fs0 = -5.0f; + break; + + case 0x6A: + var_fs0 = 15.0f; + break; + + case 0x91: + var_fs0 = 15.0f; + break; + + case 0x94: + var_fs0 = -15.0f; + break; + + case 0x97: + var_fs0 = 20.0f; + break; + } + + if (var_fs0 != 0.0f) { + func_81408E90(arg0, var_fs0); + } +} + +void func_84347670(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84340E40(arg0, 0); + break; + + case 2: + func_8140826C(arg0, arg0->unk_A6); + break; + + case 3: + func_81408158(arg0); + break; + } +} + +void func_843476D8(unk_D_8140E720* arg0) { + func_8140B938(arg0, 2.0f); + func_81408F38(arg0, 10.0f); + func_8140D5A0(arg0, func_8140C058(arg0)); + func_8140BC20(arg0, 0xC8); + func_814083E8(arg0, 1); + func_8140A2CC(arg0, func_81400A78(0x10000)); + func_814081BC(arg0); +} + +void func_8434775C(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_843476D8(arg0); + break; + + case 2: + func_8140B9D0(arg0, 10.0f, 1.0f); + break; + + case 3: + func_8140B9D0(arg0, 0.0f, 1.0f); + func_8140BC2C(arg0, 0x40, 0x20); + break; + + case 4: + func_81408158(arg0); + break; + } +} + +void func_843477F8(unk_D_8140E720* arg0) { + UNUSED s16 pad; + s16 sp34; + Vec3s sp2C; + UNUSED s32 pad2[3]; + + func_8140C038(arg0); + sp34 = func_8140C058(arg0); + func_8140959C(arg0, 5, 5, 5); + func_8140B938(arg0, 1.5f); + func_8140AD8C(arg0, 1.5f); + sp2C.x = func_81400A78(0x2000) - 0x1000; + sp2C.y = func_81400A78(0x10000); + sp2C.z = 0; + func_8140A4F0(arg0, sp2C); + func_8140A5CC(arg0, sp2C.x, sp2C.y); + func_8140A3A0(arg0, 0, 0); + func_8140D5A0(arg0, sp34); + func_8140BC20(arg0, 0x80); + func_8140BCA8(arg0, arg0->unk_AC * 2); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84347904(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_843477F8(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_8140BCA8(arg0, 0xA); + func_81408328(arg0); + } + break; + + case 3: + func_814084D8(arg0, 0, 7, 1, 2, 0); + func_8140B98C(arg0, 2.5f, 0.25f); + func_81409D0C(arg0); + func_81408E90(arg0, 0.5f); + if (func_8140BDAC(arg0) != 0) { + func_8140BC2C(arg0, 0x20, 0x10); + func_8140BB14(arg0, 0, 0x14); + func_8140BB90(arg0, 0, 0x14); + } + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_84347A20(unk_D_8140E720* arg0) { + UNUSED s32 pad[2]; + UNUSED s16 pad2; + s16 sp24; + + func_8140C038(arg0); + sp24 = func_8140C058(arg0); + func_8140C040(arg0); + func_8140B938(arg0, 1.0f); + func_8140959C(arg0, 0xF, 0xF, 0x14); + func_8140AD8C(arg0, (func_81400A78(0x32) * 0.02f) + 1.0f); + func_8140D5A0(arg0, sp24); + func_8140BC20(arg0, 0x80); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84347AF0(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84347A20(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + func_8140BCA8(arg0, 5); + } + break; + + case 3: + func_814084D8(arg0, 0, 7, 1, 2, 0); + func_81409F60(arg0); + if (func_8140BDAC(arg0) != 0) { + func_8140BB14(arg0, 0, 0x14); + func_8140BB90(arg0, 0, 0x14); + func_8140BC2C(arg0, 0x20, 4); + } + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_84347BF4(Gfx* arg0, arg1_func_8434E21C* arg1, UNUSED u16 arg2) { + unk_D_8140E720* temp_v0 = func_8432CB60(D_8006F09C); + + gDPPipeSync(arg0++); + + gDPSetPrimColor(arg0++, 0, 0x78, temp_v0->prim_r, temp_v0->prim_g, temp_v0->prim_b, temp_v0->prim_a); + gDPSetEnvColor(arg0++, temp_v0->env_r, temp_v0->env_g, temp_v0->env_b, temp_v0->unk_B0); + gDPSetCombineLERP(arg0++, TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0, TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0, PRIMITIVE, + ENVIRONMENT, COMBINED, ENVIRONMENT, COMBINED, 0, PRIMITIVE, ENVIRONMENT); + + arg0 = func_84341B84(arg0, arg1, 0x20, 5, 2, 0xA, 0xD, 0xF, -2, 5, 0xE, 0xF); + + gSPEndDisplayList(arg0++); +} + +void func_84347D2C(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 30); + func_84347BF4(arg1->unk_18, arg1->unk_14, D_8006F084); + } +} + +void func_84347D74(unk_D_8140E720* arg0) { + func_8140C040(arg0); + + switch (arg0->unk_B2) { + case 1: + func_84340E40(arg0, 2); + func_8140B938(arg0, 0.5f); + func_8140BFEC(arg0, 0x64); + func_8140D5A0(arg0, 0x17); + func_8140BCA8(arg0, 5); + break; + + case 2: + func_8140B98C(arg0, 7.0f, 0.25f); + if (func_8140BDD0(arg0) != 0) { + func_8140BCA8(arg0, 5); + } + break; + + case 3: + func_8140B98C(arg0, 7.0f, 0.25f); + func_8140D908(arg0, 0x1A, 0x19); + if (func_8140BDAC(arg0) != 0) { + func_8140C000(arg0, 0, 8); + func_8140BC5C(arg0, 0, 0x10); + } + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_84347E9C(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C040(arg0); + + switch (arg0->unk_B2) { + case 1: + func_84340E40(arg0, 2); + func_8140B938(arg0, 0.5f); + func_8140BFEC(arg0, 0x64); + func_8140D5A0(arg0, 0x17); + func_8140BCA8(arg0, 5); + + switch (sp26) { + case 0: + func_81408C88(arg0, 15.0f); + func_81408CA0(arg0, 15.0f); + break; + + case 1: + func_81408C88(arg0, -15.0f); + func_81408CB8(arg0, 15.0f); + func_81408CA0(arg0, -10.0f); + break; + + case 2: + func_81408C88(arg0, -10.0f); + func_81408CB8(arg0, -15.0f); + break; + } + break; + + case 2: + func_8140B98C(arg0, 5.0f, 0.15f); + if (func_8140BDD0(arg0) != 0) { + func_8140BCA8(arg0, 5); + } + break; + + case 3: + func_8140B98C(arg0, 5.0f, 0.15f); + func_8140D908(arg0, 0x1A, 0x19); + if (func_8140BDAC(arg0) != 0) { + func_8140C000(arg0, 0, 8); + func_8140BC5C(arg0, 0, 0x10); + } + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_84348058(unk_D_8140E720* arg0) { + func_8140C040(arg0); + + switch (arg0->unk_B2) { + case 1: + func_84340E40(arg0, 2); + func_8140B938(arg0, 0.25f); + func_8140BFEC(arg0, 0x64); + func_8140D5A0(arg0, 0x17); + func_8140BCA8(arg0, 5); + func_81408ED0(arg0, 30.0f); + break; + + case 2: + func_8140B98C(arg0, 5.0f, 0.3f); + if (func_8140BDD0(arg0) != 0) { + func_8140BCA8(arg0, 5); + } + break; + + case 3: + func_8140B98C(arg0, 5.0f, 0.3f); + func_8140D908(arg0, 0x1A, 0x19); + if (func_8140BDAC(arg0) != 0) { + func_8140C000(arg0, 0, 8); + func_8140BC5C(arg0, 0, 0x10); + } + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_84348194(unk_D_8140E720* arg0) { + UNUSED s32 pad[2]; + s16 sp26 = func_8140C038(arg0); + + func_8140C040(arg0); + func_8140C058(arg0); + func_8140BCA8(arg0, sp26 * 2); + func_8140D5A0(arg0, func_8140C058(arg0)); + func_8140B938(arg0, 1.2f); + func_8140B95C(arg0, 1.0f); + func_8140B974(arg0, 0.02f); + func_8140959C(arg0, 5, 0xF, 0xF); + func_81408E90(arg0, 10.0f); + func_8140AD8C(arg0, (func_81400A78(0xA) * 0.5f) + 8.0f); + func_8140D530(arg0, 0x19); + func_8140D568(arg0, 0x19); + func_8140BC20(arg0, 0xC8); + func_8140BF4C(arg0, 4); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_843482D4(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84348194(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + func_8140BCA8(arg0, 4); + } + break; + + case 3: + func_8140BA1C(arg0); + func_814084D8(arg0, 1, 7, 1, 2, 0); + func_81409EA0(arg0); + func_8140BB14(arg0, 0, 0x20); + func_8140BBF0(arg0, 0, 0x20); + if (func_8140BDAC(arg0) != 0) { + break; + } + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_843483D4(unk_D_8140E720* arg0) { + UNUSED s32 pad[2]; + s16 sp26 = func_8140C038(arg0); + UNUSED s16 pad2; + s16 sp22; + + func_8140C040(arg0); + sp22 = func_8140C058(arg0); + func_8140BCA8(arg0, sp26 * 2); + func_8140D5A0(arg0, func_8140C058(arg0)); + func_8140B938(arg0, 1.0f); + func_8140B95C(arg0, 0.5f); + func_8140B974(arg0, 0.01f); + func_8140959C(arg0, 0xA, 0, 0xF); + func_81408ED0(arg0, 10.0f); + func_81408E90(arg0, 5.0f); + func_8140AD8C(arg0, (func_81400A78(0xA) * 0.5f) + 8.0f); + func_8140D5A0(arg0, sp22); + func_8140BC20(arg0, 0xB4); + func_8140BF4C(arg0, 4); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84348514(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_843483D4(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + func_8140BCA8(arg0, 4); + } + break; + + case 3: + func_8140BC5C(arg0, 0x40, 0x10); + if (func_8140BDAC(arg0) != 0) { + func_8140D908(arg0, 0x16, 0x20); + } + func_8140ADBC(arg0, 4.0f, 0.5f); + func_81409EA0(arg0); + break; + + case 4: + func_81408150(arg0); + break; + } + + if (func_81408368(arg0) != 0) { + func_8140BA1C(arg0); + func_814083FC(arg0, 0, 7, 1, 2, 0); + } +} + +void func_84348630(void) { + func_8432ED0C(0, 0x10, 6); + func_8432EC28(0, func_84347670, &D_8140E460, 0x19, 1, 0xE, 0, 0x27, 0); + func_8432EFB4(0, 0, 4, 0x1C, 0x80); + func_8432EC28(0x16, func_8434775C, &D_843861D0[0x54], 0, 1, 0xC, 0, 0x25, 0); + func_8432EE5C(0x1A, 3, 0x20, 0x1C, 0x96); + func_8432EC28(0x1B, func_84347D74, &D_8140E460, 0, 1, 9, 0, 0x21, 0); + func_8432EC28(0x1E, func_84347E9C, &D_8140E460, 0, 1, 9, 0, 0x21, 0); + func_8432EC28(0x22, func_84347E9C, &D_8140E460, 0, 1, 9, 0, 0x21, 1); + func_8432EC28(0x26, func_84347E9C, &D_8140E460, 0, 1, 9, 0, 0x21, 2); + func_8432EC28(0x28, func_84347904, &D_843861D0[0x48], 0, 6, 0x10, 9, 0x1A, 0); + func_8432ECA0(0x32, 2, 2, func_84347AF0, &D_843861D0[0x4A], 0, 1, 9, 0, 0x1A, 0); + func_8432ECA0(0x33, 2, 2, func_84347AF0, &D_843861D0[0x4A], 0, 1, 9, 0, 0x1A, 0); + func_8432ECA0(0x34, 2, 2, func_84347AF0, &D_843861D0[0x4A], 0, 1, 9, 0, 0x1A, 0); + func_8432ECA0(0x36, 2, 2, func_84347AF0, &D_843861D0[0x4A], 0, 1, 9, 0, 0x1A, 0); + func_8432F2C8(0x16, 0xA, 0, 0xFF, 0x40); + func_8432F2C8(0x24, 0xA, 0xFF, 0xDC, 0xC); + func_8432F4BC(0x28, 0xA, 0x19, 0x10, 0xDC); + func_8432F4BC(0x38, 0x19, 0x13, 0x10, 0xDC); + func_8432F4BC(0x40, 0x13, 0x10, 0x10, 0xDC); + func_8432F2C8(0x48, 0x10, 0xDC, 0xB4, 6); +} + +void func_843489FC(void) { + func_8432ED0C(0, 0xFF, 6); + func_8432EC28(0, func_84348058, &D_8140E460, 0, 1, 0xB, 0, 0x21, 0); + func_8432EC28(4, func_84348058, &D_8140E460, 0, 1, 0xB, 0, 0x21, 0); + func_8432ECA0(0xA, 8, 4, func_843416B0, &D_8140E460, 0, 1, 0xC, 0, 0x2B, 0); + func_8432ECA0(0xC, 8, 5, func_84334F84, &D_843861D0[0x46], 0, 5, 0x10, 9, 0x48, 0); + func_8432ECA0(0xC, 4, 0xA, func_843482D4, &D_843861D0[0x4A], 0, 4, 0xB, 9, 0, 0); + func_8432ECA0(0xC, 4, 0xA, func_84348514, &D_843861D0[0x4F], 0, 4, 0xE, 9, 0x1A, 0); + func_8432F2C8(3, 0xA, 0, 0xFF, 0x40); + func_8432F2C8(0xA, 0xA, 0xFF, 0xE6, 5); + func_8432F4BC(0x10, 0xA, 0x19, 0x10, 0xDC); + func_8432F4BC(0x18, 0x19, 0xB, 0x10, 0xD2); + func_8432F4BC(0x28, 0xB, 0x10, 0x10, 0xC8); + func_8432F2C8(0x30, 0x10, 0xC8, 0xB4, 6); +} + +void func_84348C6C(UNUSED s32 arg0, UNUSED s32 arg1) { +} + +void func_84348C78(UNUSED s32 arg0, UNUSED s32 arg1) { +} + +void func_84348C84(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C058(arg0); + + arg0->unk_14 = func_8432CC54(arg0); + if (arg0->unk_14 != NULL) { + if (sp26 == 0) { + func_8432CE00(arg0->unk_14, 0x55); + } else { + func_8432CE00(arg0->unk_14, 0x63); + } + func_8432CE3C(arg0->unk_14, 0x56); + func_814082B4(arg0, 0x200); + func_8140BECC(arg0, 7); + func_8140B950(arg0, 1.0f); + func_8140D5A0(arg0, 0x24); + func_8140BC20(arg0, 0); + func_814081BC(arg0); + } else { + func_81408158(arg0); + } +} + +void func_84348D4C(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C058(arg0); + s32 sp20 = 0; + f32 var_fv0; + + switch (arg0->unk_B2) { + case 1: + func_84348C84(arg0); + break; + + case 2: + func_8140826C(arg0, 0xE); + func_8140BB14(arg0, 0xFF, 7); + func_8140BB44(arg0, 0xFF, 0x13); + func_8140BBF0(arg0, 0xFF, 0x13); + func_8140BC2C(arg0, 0xFF, 0x13); + break; + + case 3: + func_8140826C(arg0, 0x10); + func_8140BB44(arg0, 0, 0x11); + func_8140BBF0(arg0, 0, 0x11); + func_8140BC2C(arg0, 0, 0x11); + break; + + case 4: + if (func_80017514(arg0->unk_14) != 0) { + func_81408150(arg0); + } + break; + } + + if (func_8140819C(arg0) != 0) { + if (func_843081BC(arg0->unk_10) == 0x5F) { + sp20 = 1; + } else if (func_843081BC(arg0->unk_10) == 0x82) { + sp20 = 1; + } + + if (sp26 == 0) { + if (sp20 != 0) { + var_fv0 = 120.0f; + } else { + var_fv0 = 170.0f; + } + func_8432D340(&arg0->unk_50, var_fv0); + } else { + if (sp20 != 0) { + var_fv0 = 90.0f; + } else { + var_fv0 = 140.0f; + } + func_8432D340(&arg0->unk_50, var_fv0); + } + } +} + +void func_84348F24(Gfx* arg0, s32 arg1, u16 arg2) { + unk_D_8140E720* temp_v0 = func_8432CB60(D_8006F09C); + + gDPPipeSync(arg0++); + + gDPSetPrimColor(arg0++, 0, 0, temp_v0->prim_r, temp_v0->prim_g, temp_v0->prim_b, temp_v0->prim_a); + gDPSetEnvColor(arg0++, temp_v0->env_r, temp_v0->env_g, temp_v0->env_b, 0); + + arg0 = func_84341B84(arg0, arg1, 0x20, 5, 0, 0, 0, 0, 0, 0, 0, 0); + + gSPEndDisplayList(arg0++); +} + +void func_84349010(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 30); + func_84348F24(arg1->unk_18, arg1->unk_14, D_8006F084); + } +} + +void func_84349058(void) { + func_8432EC28(0, func_84348D4C, &D_8140E460, 0, 1, 0x14, 0, 0, 0); +} + +void func_843490A8(void) { + func_8432ED0C(0, 0x20, 0); + func_8432EC28(0, func_84348D4C, &D_8140E460, 0, 1, 0x14, 0, 0, 0); +} + +void func_84349108(void) { + func_8432EC28(0, func_84348D4C, &D_8140E460, 0, 1, 0x14, 0, 1, 0); +} + +void func_8434915C(void) { + func_84356A74(); +} + +void func_8434917C(void) { + func_8432F2C8(0, 0xC, 0, 0xFF, 0x40); + func_84356A74(); + func_8432F2C8(0x30, 0xC, 0xFF, 0, 2); +} + +void func_843491D4(Gfx* arg0, u8* arg1, UNUSED u16 arg2) { + func_8432CB60(D_8006F09C); + arg0 = func_843418C0(arg0, arg1, 0x20, 5, -4, -4, 0xD, 6, 4, 4, 0xF, 1); + + gSPEndDisplayList(arg0++); +} + +void func_84349264(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 30); + func_843491D4(arg1->unk_18, arg1->unk_14, D_8006F084); + } +} + +void func_843492AC(Gfx* arg0, u8* arg1, UNUSED u16 arg2) { + func_8432CB60(D_8006F09C); + arg0 = func_843418C0(arg0, arg1, 0x20, 5, 1, -1, 0xE, 0xE, -1, 1, 2, 2); + + gSPEndDisplayList(arg0++); +} + +void func_8434933C(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 30); + func_843492AC(arg1->unk_18, arg1->unk_14, D_8006F084); + } +} + +void func_84349384(void) { + func_8432EC28(0, func_843416B0, &D_8140E460, 0, 1, 2, 0, 0x28, 0); + func_8432ECA0(4, 8, 0xC, func_8435226C, &D_843861D0[0x42], 0, 8, 9, 0, 0x22, 6); +} + +f32 func_84349424(unk_D_8140E720* arg0) { + f32 sp1C = 1.0f; + + switch (func_843081BC(arg0->unk_10)) { + case 0x3B: + sp1C = 1.45f; + break; + + case 0x5F: + func_8140901C(arg0, 20.0f); + sp1C = 0.9f; + break; + + case 0x82: + sp1C = 0.9f; + break; + } + return sp1C; +} + +void func_843494AC(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84340E40(arg0, 0); + break; + + case 2: + break; + + case 3: + func_81408158(arg0); + break; + } +} + +void func_84349504(void) { + func_8432EC28(0, func_843494AC, &D_8140E460, 0, 1, 0xA, 0, 0x29, 0); + func_8432ECA0(5, 2, 0xA, func_84354D58, &D_843861D0[0x4A], 0, 2, 0xA, 0, 0x44, 9); + func_8432ECA0(0xA, 5, 6, func_84354E44, &D_843861D0[0x30], 0, 3, 0xA, 0, 0x44, 0xB); +} + +void func_843495F0(unk_D_8140E720* arg0) { + if (func_843081BC(arg0->unk_10) == 0x5F) { + func_8140901C(arg0, 20.0f); + } +} + +void func_84349628(void) { + func_8432EC28(0, func_8434171C, &D_8140E460, 0, 1, 0xA, 0, 0x16, 0); +} + +void func_8434967C(void) { + func_8432EC28(0, func_8434171C, &D_8140E460, 0, 1, 0xA, 0, 0x1D, 0); + func_8432ECA0(0, 3, 3, func_843529D8, &D_843861D0[0x34], 0, 1, 0xE, 9, 0, 0xF); + func_8432ECA0(4, 1, 4, func_84354D58, &D_843861D0[0x4A], 0, 8, 0x1B, 0, 0x44, 0xA); + func_8432EC28(4, func_84354E44, &D_843861D0[0x30], 0, 0xC, 0x1B, 0, 0x44, 0xB); +} + +void func_843497A8(unk_D_8140E720* arg0) { + f32 sp1C = 0.0f; + + switch (func_843081BC(arg0->unk_10)) { + case 0x57: + sp1C = -20.0f; + func_8140901C(arg0, 10.0f); + break; + + case 0x5F: + sp1C = -20.0f; + func_8140901C(arg0, 15.0f); + break; + } + func_81408E90(arg0, sp1C); +} + +void func_84349830(void) { + func_8432EC28(0, func_843416B0, &D_8140E460, 0, 1, 0xB, 0, 0, 0); + func_8432F93C(0x28, 1); + func_8432ECA0(4, 4, 3, func_8435226C, &D_843861D0[0x42], 0, 4, 0xB, 0, 0x17, 0xA); +} + +void func_843498D8(void) { + func_8432EC28(0, func_843416B0, &D_8140E460, 0, 1, 4, 0, 1, 0); + func_8432EDE8(0x1D, 2, 0x20, 0x14); +} + +void func_84349940(unk_D_8140E720* arg0) { + f32 sp1C = 0.0f; + f32 sp18 = 0.0f; + + switch (func_843081BC(arg0->unk_10)) { + case 0x3B: + sp1C = 30.0f; + break; + + case 0x4F: + sp18 = 10.0f; + break; + + case 0x66: + sp1C = 15.0f; + break; + } + + if (sp18 != 0.0f) { + func_81408ED0(arg0, sp18); + } + + if (sp1C != 0.0f) { + func_81408CA0(arg0, sp1C); + } +} + +void func_84349A14(void) { + func_8432EC28(0, func_843416B0, &D_8140E460, 0, 1, 0xB, D_843902E2, 2, 0); +} + +void func_84349A70(unk_D_8140E720* arg0) { + func_8140C048(arg0); + arg0->unk_14 = func_8432CB68(arg0); + if (arg0->unk_14 != NULL) { + func_8432CD70(arg0->unk_14, 0x71, 0x72); + func_8140B938(arg0, 1.0f); + func_8140BCA8(arg0, 0x1E); + func_814081BC(arg0); + } else { + func_81408158(arg0); + } +} + +void func_84349AE8(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84349A70(arg0); + break; + + case 2: + if (func_80017514(arg0->unk_14) != 0) { + func_81408150(arg0); + } + break; + } +} + +void func_84349B50(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C048(arg0); + + arg0->unk_14 = func_8432CB68(arg0); + if (arg0->unk_14 != NULL) { + switch (sp26) { + case 0: + func_81408BE0(arg0, 8.0f, 0.0f, -10.0f); + break; + + case 1: + func_81408BE0(arg0, -10.0f, 0.0f, 12.0f); + break; + + case 2: + func_81408BE0(arg0, 0.0f, 0.0f, -2.0f); + break; + + case 3: + func_81408BE0(arg0, 15.0f, 0.0f, 3.0f); + break; + } + + func_8432CD70(arg0->unk_14, 0x6E, 0x6F); + func_8140B938(arg0, 1.0f); + func_8140BCA8(arg0, 0x1E); + func_814081BC(arg0); + } else { + func_81408158(arg0); + } +} + +void func_84349C74(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84349B50(arg0); + break; + + case 2: + func_8140BDD0(arg0); + break; + + case 3: + func_8140B9D0(arg0, 0.0f, 0.05f); + func_8140BC5C(arg0, 0, 0x10); + break; + + case 4: + func_81408158(arg0); + break; + } +} + +void func_84349D10(Gfx* arg0, u8* arg1, UNUSED u16 arg2) { + UNUSED s32 pad[2]; + s16 sp2E = func_8140C058(func_8432CB60(D_8006F09C)); + u8 sp2D; + u8 sp2C; + u8 sp2B; + u8 sp2A; + u8 sp29; + u8 sp28; + + gDPLoadTextureBlock(arg0++, arg1, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD); + + func_81406204(arg0++, 5, 0, 0x20, 0x20); + + switch (sp2E) { + case 0: + sp2D = 0x96; + sp2C = 0x32; + sp2B = 0x32; + sp2A = 0; + sp29 = 0; + sp28 = 0; + break; + + case 1: + sp2D = 0x78; + sp2C = 0x96; + sp2B = 0; + sp2A = 0x64; + sp29 = 0x78; + sp28 = 0; + break; + + case 2: + sp2D = 0x46; + sp2C = 0; + sp2B = 0x78; + sp2A = 0x64; + sp29 = 0; + sp28 = 0x96; + break; + + case 3: + sp2D = 0x64; + sp2C = 0x96; + sp2B = 0x96; + sp2A = 0x64; + sp29 = 0x96; + sp28 = 0x96; + break; + } + + gDPSetPrimColor(arg0++, 0, 0xFF, sp2D, sp2C, sp2B, 255); + gDPSetEnvColor(arg0++, sp2A, sp29, sp28, 255); + + gSPEndDisplayList(arg0++); +} + +void func_84349F80(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 30); + func_84349D10(arg1->unk_18, arg1->unk_14, D_8006F084); + } +} + +void func_84349FC8(Gfx* arg0, UNUSED arg1_func_8434E21C* arg1, UNUSED u16 arg2) { + unk_D_86002F58_004_000* sp24 = D_8006F09C; + s32 tmp = func_8432CB60(D_8006F09C); + UNUSED u8 sp1F; + UNUSED u8 sp1E; + u8 sp1D; + u8 sp1C; + u8 sp1B; + u8 sp1A; + u8 sp19; + u8 sp18; + + switch (func_8140C058(tmp)) { + case 0: + sp1D = 0xFF; + sp1C = 0x96; + sp1B = 0x32; + sp1A = 0; + sp19 = 0; + sp18 = 0; + break; + + case 1: + sp1D = 0xFF; + sp1C = 0xFF; + sp1B = 0xFF; + sp1A = 0x96; + sp19 = 0xB4; + sp18 = 0; + break; + + case 2: + sp1D = 0xFF; + sp1C = 0xFF; + sp1B = 0xFF; + sp1A = 0x96; + sp19 = 0; + sp18 = 0xC8; + break; + + case 3: + sp1D = 0x64; + sp1C = 0xFF; + sp1B = 0xFF; + sp1A = 0xC8; + sp19 = 0xFF; + sp18 = 0xFF; + break; + } + + gDPSetCombineLERP(arg0++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED, + 0, 0, 0, COMBINED); + gDPSetPrimColor(arg0++, 0, 0xFF, sp1D, sp1C, sp1B, sp24->unk_01D); + gDPSetEnvColor(arg0++, sp1A, sp19, sp18, 255); + + gSPEndDisplayList(arg0++); +} + +void func_8434A18C(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 30); + func_84349FC8(arg1->unk_18, arg1->unk_14, D_8006F084); + } +} + +s16 func_8434A1D4(void) { + s16 sp1E; + + switch (func_8432C544()) { + case 0x7C: + sp1E = 0; + break; + + case 0x33: + sp1E = 1; + break; + + case 0x5C: + sp1E = 2; + break; + + case 0x7A: + sp1E = 3; + break; + } + + return sp1E; +} + +s16 func_8434A244(void) { + s16 sp1E; + + switch (func_8432C544()) { + case 0x7C: + sp1E = 0x12; + break; + + case 0x33: + sp1E = 0x2B; + break; + + case 0x5C: + sp1E = 0x3E; + break; + + case 0x7A: + sp1E = 0x39; + break; + } + + return sp1E; +} + +s16 func_8434A2B4(void) { + s16 sp1E; + + switch (func_8432C544()) { + case 0x7C: + sp1E = 8; + break; + + case 0x33: + sp1E = 0x33; + break; + + case 0x5C: + sp1E = 0x33; + break; + + case 0x7A: + sp1E = 0x33; + break; + } + + return sp1E; +} + +void func_8434A324(void) { + func_8432EC28(0, func_84349AE8, &D_8140E460, 0, 1, 0x11, D_843902E2, func_8434A1D4(), 0); +} + +void func_8434A384(void) { + s16 sp4E; + s16 sp44; + s16 sp4A; + + sp4E = func_8434A1D4(); + sp44 = func_8434A244(); + sp4A = func_8434A2B4(); + + func_8432F2C8(4, sp44, 0, 0xFF, 0x10); + func_8432EC28(0, func_84349C74, &D_8140E460, 0, 1, 0xA, 0, sp4E, 0); + func_8432EC28(4, func_84349C74, &D_8140E460, 0, 1, 0xA, 1, sp4E, 0); + func_8432EC28(8, func_84349C74, &D_8140E460, 0, 1, 0xA, 2, sp4E, 0); + func_8432EC28(0xC, func_84349C74, &D_8140E460, 0, 1, 0xA, 3, sp4E, 0); + func_8432F2C8(0x28, sp44, 0xFF, 0, 0x10); + func_8432ECA0(6, 4, 0xA, func_84354A10, &D_843861D0[0x3D], 0, 1, 9, 0, sp4A, 0); + func_8432ECA0(7, 8, 5, func_84354A10, &D_843861D0[0x3D], 0, 1, 9, 0, sp4A, 0); +} + +f32 func_8434A574(unk_D_8140E720* arg0) { + f32 sp1C = 0.5f; + f32 sp18 = 0.0f; + + switch (func_843081BC(arg0->unk_10)) { + case 0x57: + sp18 = -15.0f; + break; + + case 0x5F: + sp1C = 0.3f; + break; + + case 0x82: + sp18 = 10.0f; + break; + + case 0x83: + sp1C = 0.4f; + sp18 = 7.0f; + break; + } + + func_8140BC20(arg0, 0); + func_81408E90(arg0, sp18 + 5.0f); + return sp1C; +} + +void func_8434A654(Gfx* arg0, arg1_func_8434E21C* arg1, UNUSED u16 arg2) { + func_8432CB60(D_8006F09C); + arg0 = func_84341B84(arg0, arg1, 0x20, 5, 0, 0, 1, 1, 0, -3, 1, 1); + + gSPEndDisplayList(arg0++); +} + +void func_8434A6D8(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 30); + func_8434A654(arg1->unk_18, arg1->unk_14, D_8006F084); + } +} + +void func_8434A720(Gfx* arg0, UNUSED arg1_func_8434E21C* arg1, UNUSED u16 arg2) { + unk_D_8140E720* temp_v0 = func_8432CB60(D_8006F09C); + + gDPPipeSync(arg0++); + + gDPSetPrimColor(arg0++, 0, 0, 255, 0, 0, temp_v0->prim_a); + gSPEndDisplayList(arg0++); +} + +void func_8434A794(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 30); + func_8434A720(arg1->unk_18, arg1->unk_14, D_8006F084); + } +} + +void func_8434A7DC(void) { + func_8432ED0C(0, 0x10, 6); + func_8432EC28(0, func_8434174C, &D_8140E460, 0x64, 1, 0xB, 0, 3, 6); +} + +void func_8434A844(void) { + func_8432EC28(0, func_843416B0, &D_8140E460, 0, 1, 0xA, 0, 0x26, 0); +} + +void func_8434A898(void) { + UNUSED s16 pad; + s16 sp34; + + switch (func_8432C544()) { + case 0x59: + sp34 = 0x10; + break; + + case 0x5A: + sp34 = 0; + break; + } + + func_8432ED0C(0, 0x10, sp34); + func_8432EC28(0, func_843416B0, &D_8140E460, 0, 1, 0xA, 0, 0x26, 0); +} + +void func_8434A930(void) { + func_8432EC28(6, func_8434171C, &D_8140E460, 0, 1, 0xA, 0, 4, 2); + func_8432EC28(0, func_843416B0, &D_8140E460, 0, 1, 0xA, 0, 5, 0); + func_84358598(); +} + +void func_8434A9CC(void) { + func_8434A930(); +} + +void func_8434A9EC(void) { + func_8432F2C8(4, 0xA, 0, 0xFF, 0x40); + func_8432F884(8); + func_8432EC28(0xC, func_8434171C, &D_8140E460, 0, 1, 0xE, 0, 6, 0); + func_843588D8(); +} + +void func_8434AA6C(void) { + func_8432F2C8(6, 0xA, 0, 0xFF, 0x40); + func_8432F884(0xA); + func_8432EC28(0xC, func_8434171C, &D_8140E460, 0, 1, 0xA, 0, 7, 0); + func_843588D8(); +} + +void func_8434AAEC(Gfx* arg0, u8 arg1, UNUSED u16 arg2) { + u8* var_a3; + s32 idx = arg1 * 0xB48; + + if (func_84307F00(func_8432CB60(D_8006F09C)->unk_10) == 0) { + var_a3 = D_8438E778 + idx; + } else { + var_a3 = D_8438E77C + idx; + } + + gDPLoadTextureTile(arg0++, var_a3, G_IM_FMT_RGBA, G_IM_SIZ_16b, 76, 0, 0, 0, 75, 18, 0, G_TX_NOMIRROR | G_TX_CLAMP, + G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + + gSPEndDisplayList(arg0++); +} + +void func_8434AC44(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 30); + func_8434AAEC(arg1->unk_18, arg1->unk_14, D_8006F084); + } +} + +void func_8434AC8C(void) { + func_8432ECA0(0, 8, 6, func_843416B0, &D_8140E460, 0, 1, 9, 0, 8, 0); +} + +void func_8434ACEC(void) { + func_8432ED0C(0, 0x20, 0x10); + func_8434AC8C(); +} + +void func_8434AD1C(void) { + func_8432EC28(0, func_8434171C, &D_8140E460, 0, 1, 0xE, 0, 9, 0); +} + +void func_8434AD70(void) { + s32 var_s0 = 0; + + if (func_8432F9CC(0x5C) != 0) { + var_s0 = 1; + } else if (func_8432F9CC(0x5D) != 0) { + var_s0 = 1; + } else if (func_8432F9CC(0x5E) != 0) { + var_s0 = 1; + } else if (func_8432F9CC(0x5A) != 0) { + var_s0 = 1; + } else if (func_8432F9CC(0x6C) != 0) { + var_s0 = 1; + } else if (func_8432F9CC(0x2A) != 0) { + var_s0 = 1; + } + + if (var_s0 == 0) { + func_8432EC28(0, func_843416B0, &D_8140E460, 0, 1, 0x10, D_843902E2, 0xA, 0); + } +} + +f32 func_8434AE68(unk_D_8140E720* arg0) { + f32 sp1C = 0.0f; + f32 sp18 = 1.0f; + + switch (func_843081BC(arg0->unk_10)) { + case 0x24: + sp18 = 1.2f; + sp1C = 10.0f; + break; + + case 0x34: + sp18 = 0.8f; + break; + + case 0x36: + sp1C = 15.0f; + break; + + case 0x3B: + sp1C = 30.0f; + sp18 = 0.8f; + break; + + case 0x5A: + sp1C = 10.0f; + break; + + case 0x5F: + func_8140901C(arg0, 15.0f); + sp1C = 10.0f; + sp18 = 0.5f; + break; + + case 0x66: + sp1C = 15.0f; + sp18 = 0.8f; + break; + + case 0x7D: + sp1C = 8.0f; + break; + + case 0x7E: + sp1C = 15.0f; + sp18 = 0.8f; + break; + + case 0x82: + sp1C = 10.0f; + sp18 = 0.4f; + break; + + case 0x83: + sp1C = 10.0f; + sp18 = 0.4f; + break; + } + + func_81408E90(arg0, sp1C); + return sp18; +} + +void func_8434B000(void) { + func_8432EC28(0, func_843416B0, &D_8140E460, 0, 1, 0xB, 0, 0xB, 0); + func_8432ED0C(0x2A, 0x10, 0x17); +} + +void func_8434B064(void) { + func_8432F344(0, 1, 0x18, 0xFF, 0, 8); + func_8432EC28(0, func_843416B0, &D_8140E460, 0, 1, 9, 0, 0xC, 0); +} + +void func_8434B0D8(unk_D_8140E720* arg0) { + f32 sp1C = 0.0f; + + switch (func_843081BC(arg0->unk_10)) { + case 0x34: + sp1C = 12.0f; + break; + + case 0x36: + sp1C = 20.0f; + break; + } + func_81408E90(arg0, sp1C); +} + +void func_8434B14C(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C048(arg0); + + arg0->unk_14 = func_8432CB68(arg0); + + if (arg0->unk_14 != NULL) { + if ((sp26 == 0) || (sp26 == 1)) { + func_8432CE00(arg0->unk_14, 0x8C); + } else if ((sp26 == 2) || (sp26 == 3)) { + func_8432CE00(arg0->unk_14, 0x8E); + } else { + func_8432CE00(arg0->unk_14, 0x8D); + } + + func_8140B938(arg0, 1.0f); + func_8434B0D8(arg0); + func_8140BC20(arg0, 0); + func_814081BC(arg0); + } else { + func_81408158(arg0); + } +} + +void func_8434B21C(unk_D_8140E720* arg0) { + u32 temp_v0 = func_8140C048(arg0); + + switch (arg0->unk_B2) { + case 1: + func_8434B14C(arg0); + break; + + case 2: + if ((temp_v0 == 0) || ((s32)temp_v0 == 1)) { + func_8140BC5C(arg0, 0x80, 8); + } else if (temp_v0 == 3) { + func_8140BC5C(arg0, 0xFF, 0xFF); + } else { + func_8140BC5C(arg0, 0xFF, 4); + } + break; + } +} + +void func_8434B2B8(Gfx* arg0, u8* arg1, UNUSED u16 arg2) { + u8* a1; + unk_D_8140E720* spC8; + u8 var_t0; + s16 spC4; + s16 spC2; + s16 spC0; + s16 spBE; + s16 var_a1; + s16 var_a2; + s16 var_a3; + s16 var_s1; + UNUSED s16 pad2; + s16 spB2; + s16 spB0; + s16 spAE; + s16 spAC; + u16 temp_v0_2; + s16 var_t2; + s16 var_t1; + + spC8 = func_8432CB60(D_8006F09C); + temp_v0_2 = func_8140C048(spC8); + var_s1 = 0x20; + var_t1 = 5; + var_t2 = 5; + var_a3 = 0; + var_a1 = 0; + var_a2 = 0; + var_t0 = spC8->prim_a; + + switch (temp_v0_2) { + case 0: + spC4 = -1; + spC2 = -1; + spC0 = 1; + spBE = -1; + spB2 = 0xF; + spB0 = 0; + spAE = 0xE; + spAC = 0xF; + break; + + case 1: + spC4 = -1; + spC2 = 1; + spC0 = 1; + spBE = 1; + spB2 = 0xF; + spB0 = 0; + spAE = 0xE; + spAC = 0xF; + break; + + case 2: + spC4 = -2; + spC2 = 2; + spC0 = 2; + var_a3 = 0xFF; + spBE = 3; + spB2 = 0xC; + spB0 = 1; + spAE = 0xC; + spAC = 0; + break; + + case 3: + spC4 = -2; + spC2 = -2; + spC0 = 2; + var_a3 = 0xFF; + spBE = -3; + spB2 = 0xC; + spB0 = 1; + spAE = 0xC; + spAC = 0; + break; + + case 4: + var_a2 = 0xFF; + var_a1 = 0x9B; + spC4 = 1; + spC2 = 1; + spC0 = -1; + spBE = -1; + spB2 = 0xC; + spB0 = 1; + spAE = 0xC; + spAC = 0; + + break; + + case 5: + spC0 = -0xA; + spBE = -0xF; + spC4 = 0; + spC2 = 0; + spB2 = 0xF; + spB0 = 1; + spAE = 0xF; + spAC = 1; + var_a2 = 0xFF; + var_a1 = 0xFF; + var_a3 = 0xFF; + var_t0 = 0x32; + break; + + case 6: + spC4 = 2; + spC2 = -1; + spC0 = -2; + spBE = -2; + spB2 = 0xD; + spB0 = 0xE; + spAE = 0xC; + spAC = 0xE; + var_a2 = 0xFF; + var_a1 = 0xFF; + var_a3 = 0xFF; + var_s1 = 0x40; + var_t1 = 6; + var_t2 = 6; + break; + + case 7: + spC4 = 1; + spC2 = 1; + spC0 = -1; + spBE = -1; + spB2 = 0xD; + spB0 = 0xF; + spAE = 0xF; + spAC = 0xE; + var_a2 = 0xFF; + var_a3 = 0x80; + break; + + case 8: + spC4 = 1; + spC2 = 1; + spC0 = -1; + spBE = -1; + spB2 = 0xD; + spB0 = 0xF; + spAE = 0xF; + spAC = 0xE; + var_a1 = 0xFF; + var_a3 = 0xFF; + break; + + case 9: + spC4 = 1; + spC2 = 1; + spC0 = -1; + spBE = -1; + spB2 = 0xD; + spB0 = 0xF; + spAE = 0xF; + spAC = 0xE; + var_a2 = 0x64; + var_a1 = 0xFF; + break; + + case 10: + spC4 = -1; + spC2 = -1; + spC0 = 1; + spBE = -1; + spB2 = 0xD; + spB0 = 0; + spAE = 0xC; + spAC = 0xF; + var_a2 = 0xC8; + var_a1 = 0x64; + break; + + case 11: + spC4 = -1; + spC2 = -1; + spC0 = 1; + spBE = -1; + spB2 = 0xD; + spB0 = 0; + spAE = 0xC; + spAC = 0xF; + var_a1 = 0xFF; + var_a3 = 0xFF; + break; + + case 12: + spC4 = -1; + spC2 = -1; + spC0 = 1; + spBE = -1; + spB2 = 0xD; + spB0 = 0; + spAE = 0xC; + spAC = 0xF; + var_a2 = 0xC8; + var_a1 = 0xFF; + break; + + case 13: + spC4 = -1; + spC2 = -1; + spC0 = 1; + spBE = -1; + spB2 = 0xD; + spB0 = 0; + spAE = 0xC; + spAC = 0xF; + var_a2 = 0xFF; + break; + } + + a1 = arg1; + + gDPPipeSync(arg0++); + gDPSetPrimColor(arg0++, 0, 0x80, var_a2, var_a1, var_a3, var_t0); + + gDPLoadTextureTile_4b(arg0++, arg1, G_IM_FMT_I, var_s1, var_s1, 0, 0, var_s1 - 1, var_s1 - 1, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, var_t2, var_t1, spB2, spB0); + + func_81406204(arg0++, spC4, spC2, var_s1, var_s1); + + gDPLoadMultiTile_4b(arg0++, a1, 0x0100, 1, G_IM_FMT_I, var_s1, var_s1, 0, 0, var_s1 - 1, var_s1 - 1, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, var_t2, var_t1, spAE, spAC); + + func_81406288(arg0++, spC0, spBE, var_s1, var_s1); + + gSPEndDisplayList(arg0++); +} + +void func_8434BA28(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 30); + func_8434B2B8(arg1->unk_18, arg1->unk_14, D_8006F084); + } +} + +void func_8434BA70(void) { + func_8432EC28(0, func_8434B21C, &D_8140E460, 0, 1, 0xC, 0, 0, 0); + func_8432EC28(0, func_843417AC, &D_8140E460, 0, 1, 9, 0, 0xD, 0); + func_8432EC28(4, func_843417AC, &D_8140E460, 0, 1, 9, 1, 0xD, 0); + func_8432EC28(8, func_843417AC, &D_8140E460, 0, 1, 9, 2, 0xD, 0); + func_8432EC28(0xC, func_843417AC, &D_8140E460, 0, 1, 9, 0, 0xD, 0); + func_8432EC28(0x10, func_843417AC, &D_8140E460, 0, 1, 9, 1, 0xD, 0); + func_8432EC28(0x14, func_843417AC, &D_8140E460, 0, 1, 9, 2, 0xD, 0); + func_8432EC28(0x18, func_843417AC, &D_8140E460, 0, 1, 9, 0, 0xD, 0); + func_8432EC28(0x1C, func_843417AC, &D_8140E460, 0, 1, 9, 1, 0xD, 0); + func_8432EC28(0x20, func_843417AC, &D_8140E460, 0, 1, 9, 2, 0xD, 0); + func_8432ED0C(0, 8, 0x35); +} + +void func_8434BCD4(void) { + func_8432EC28(0, func_8434B21C, &D_8140E460, 0, 1, 0xC, 1, 0, 0); + func_8432EC28(0, func_843416B0, &D_8140E460, 0, 1, 9, 0, 0xD, 0); + func_8432EC28(4, func_843416B0, &D_8140E460, 0, 1, 9, 1, 0xD, 0); + func_8432EC28(8, func_843416B0, &D_8140E460, 0, 1, 9, 2, 0xD, 0); + func_8432EC28(0xC, func_843416B0, &D_8140E460, 0, 1, 9, 0, 0xD, 0); + func_8432EC28(0x10, func_843416B0, &D_8140E460, 0, 1, 9, 1, 0xD, 0); + func_8432EC28(0x14, func_843416B0, &D_8140E460, 0, 1, 9, 2, 0xD, 0); + func_8432EC28(0x18, func_843416B0, &D_8140E460, 0, 1, 9, 0, 0xD, 0); + func_8432EC28(0x1C, func_843416B0, &D_8140E460, 0, 1, 9, 1, 0xD, 0); + func_8432EC28(0x20, func_843416B0, &D_8140E460, 0, 1, 9, 2, 0xD, 0); +} + +void func_8434BF2C(void) { + switch (func_8432C544()) { + case 0x8D: + func_8432ED0C(0, 0x10, 6); + func_8432EC28(0, func_84341860, &D_8140E460, 0x80, 1, 0xC, 0xD, 0x1A, 0x20); + break; + + case 0x47: + func_8432ED0C(0, 0x10, 0x3A); + func_8432EC28(0, func_84341860, &D_8140E460, 0x80, 1, 0xC, 0xB, 0x1A, 0x20); + break; + + case 0x48: + func_8432ED0C(0, 0x10, 0x21); + func_8432EC28(0, func_84341860, &D_8140E460, 0x80, 1, 0xC, 0xC, 0x1A, 0x20); + break; + } +} + +void func_8434C070(void) { + func_8432EC28(0, func_8434B21C, &D_8140E460, 0, 1, 0xC, 4, 0, 0); +} + +void func_8434C0C4(void) { + func_8432EC28(0, func_8434B21C, &D_8140E460, 0, 1, 0xC, 2, 0, 0); + func_8432ED0C(0, 8, 0); + func_8432EB2C(0x40); + func_8432EDE8(0, 2, 0x10, 0xA); +} + +void func_8434C144(void) { + func_8432EDE8(0, 2, 0x10, 0xA); + func_8432F2C8(4, 0xA, 0xFF, 0, 8); + func_8432EC28(0, func_8434B21C, &D_8140E460, 0, 1, 0xC, 3, 0, 0); + func_8432ECA0(4, 4, 4, func_843529D8, &D_843861D0[0x34], 0, 3, 9, 0, 0x18, 0xD); +} + +void func_8434C214(unk_D_8140E720* arg0) { + arg0->unk_14 = func_8432CB68(arg0); + if (arg0->unk_14 != NULL) { + func_8432CD70(arg0->unk_14, 0x42, 0xC2); + func_8140B938(arg0, 1.0f); + func_8140D5A0(arg0, 0x23); + func_8140BC20(arg0, 0); + func_8140BF4C(arg0, 0); + func_814081BC(arg0); + } else { + func_81408158(arg0); + } +} + +void func_8434C29C(unk_D_8140E720* arg0) { + s16 sp26; + + switch (arg0->unk_B2) { + case 1: + func_8434C214(arg0); + break; + + case 2: + func_8140BC2C(arg0, 0xFF, 8); + func_8140BF60(arg0, 0xC8, 6); + break; + } + + func_8432D424(&sp26); + func_8140A2B8(arg0, sp26); +} + +void func_8434C320(unk_D_8140E720* arg0) { + arg0->unk_14 = func_8432CB68(arg0); + if (arg0->unk_14 != NULL) { + func_8432CD70(arg0->unk_14, 0x42, 0xC2); + func_8432CDD8(arg0->unk_14, 0x28); + func_8140B938(arg0, 1.0f); + func_8140D5A0(arg0, 0x23); + func_8140BF4C(arg0, 0xFF); + func_814081BC(arg0); + } else { + func_81408158(arg0); + } +} + +void func_8434C3A8(unk_D_8140E720* arg0) { + s16 sp1E; + + if (arg0->unk_B2 == 1) { + func_8434C320(arg0); + } + func_8432D424(&sp1E); + func_8140A2B8(arg0, sp1E); +} + +void func_8434C3F0(Gfx* arg0, u8 arg1, UNUSED u16 arg2) { + unk_D_8140E720* temp_v0 = func_8432CB60(D_8006F09C); + + switch (arg1) { + case 0: + gDPPipeSync(arg0++); + gDPSetPrimColor(arg0++, 0, 0, temp_v0->prim_r, temp_v0->prim_g, temp_v0->prim_b, temp_v0->prim_a); + break; + + case 1: + gDPPipeSync(arg0++); + gDPSetPrimColor(arg0++, 0, 0, temp_v0->prim_r, temp_v0->prim_g, temp_v0->prim_b, temp_v0->unk_AE); + break; + } + + gDPSetEnvColor(arg0++, temp_v0->env_r, temp_v0->env_g, temp_v0->env_b, 0); + gDPSetCombineLERP(arg0++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED, + 0, 0, 0, COMBINED); + + gSPEndDisplayList(arg0++); +} + +void func_8434C548(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 30); + func_8434C3F0(arg1->unk_18, arg1->unk_14, D_8006F084); + } +} + +void func_8434C590(void) { + func_8432ED0C(0, 8, 3); + func_8432EC28(0, func_8434C29C, &D_8140E460, 0, 1, 0xA, 0, 0, 0); +} + +void func_8434C5F0(void) { + func_8432ED0C(0x10, 0x10, 0xA); +} + +void func_8434C618(void) { + func_8432EC28(0, func_8434C29C, &D_8140E460, 0, 1, 0xA, 0, 0, 0); + func_8432ED0C(0, 0x20, 3); + func_8432F2C8(8, 0xA, 0, 0xFF, 0x40); + func_8432EF40(0xC, 5, 0x10, 0xA); + func_8432EC28(0xC, func_843529D8, &D_843861D0[0x34], 0, 4, 9, 0, 0x18, 0xD); + func_8432EB2C(0x21); + func_8432EDE8(0, 0, 0x10, 0xA); + func_8432F2C8(0, 0xA, 0xFF, 0, 0x10); +} + +void func_8434C720(void) { + func_8432EC28(0, func_8434C3A8, &D_8140E460, 0, 1, 0xA, 0, 0, 0); + func_8432EDE8(0, 0, 0x10, 0xA); + func_8432ED0C(0, 0x20, 3); + func_8432F2C8(8, 0xA, 0, 0xFF, 0x40); + func_8432EC28(0xC, func_843529D8, &D_843861D0[0x34], 0, 4, 9, 0, 0x18, 0xD); + func_8432EB2C(0x21); + func_8432F2C8(0, 0xA, 0xFF, 0, 0x10); +} + +void func_8434C814(Gfx* arg0, u8* arg1, UNUSED u16 arg2) { + unk_D_8140E720* temp_v0 = func_8432CB60(D_8006F09C); + + gDPPipeSync(arg0++); + gDPSetPrimColor(arg0++, 0, 0x80, 100, 200, 255, temp_v0->prim_a); + + gDPLoadTextureTile_4b(arg0++, arg1, G_IM_FMT_I, 32, 0, 0, 0, 31, 31, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, 14, 15); + + func_81406314(arg0++, -0xB, -8, 0x20, 0x20); + + gDPLoadMultiTile_4b(arg0++, arg1, 0x0100, 1, G_IM_FMT_I, 32, 0, 0, 0, 31, 31, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, 13, 15); + + func_81406388(arg0++, 0x35, -4, 0x20, 0x20); + + gSPEndDisplayList(arg0++); +} + +void func_8434CA48(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 30); + func_8434C814(arg1->unk_18, arg1->unk_14, D_8006F084); + } +} + +f32 func_8434CA90(unk_D_8140E720* arg0) { + f32 sp1C = 2.5f; + + if (func_843081BC(arg0->unk_10) == 0x5F) { + sp1C = 1.75f; + } + return sp1C; +} + +void func_8434CAD8(void) { + func_8432EC28(0, func_84341860, &D_8140E460, 0xFF, 1, 0xC, 0, 0xE, 8); + func_8432EB2C(4); + func_8432ECA0(0, 4, 0x10, func_84354A10, &D_843861D0[0x4A], 0, 2, 0xE, 0, 0x4E, 3); + func_8432ECA0(0, 4, 0x10, func_84354A10, &D_843861D0[0x19], 0, 2, 0xE, 0, 0x4D, 3); + func_8432ECA0(0, 4, 0x10, func_84354A10, &D_843861D0[0xE], 0, 2, 0xE, 0, 0x4D, 3); + func_8432ECA0(0, 8, 5, func_84354A10, &D_843861D0[0xA], 0, 2, 0xE, 0, 0x4D, 4); +} + +void func_8434CC68(void) { + func_8432EC28(0, func_84341860, &D_8140E460, 0xFF, 1, 0xC, 0, 0xF, 0x40); + func_8432F440(4, 0xA, 0x35, 0xC, 0xFF); + func_8432EC28(0, func_84333E28, &D_843861D0[4], 0, 1, 0x10, D_843902E2, 0x35, 0); + func_8432ECA0(0, 5, 3, func_84339D74, &D_843861D0[0x19], 0, 8, 0x10, D_843902E2, 0x4D, 0); + func_8432ECA0(0xA, 1, 3, func_8433A698, &D_843861D0[0x19], 0, 8, 0x11, D_843902E2, 0x4D, 0); + func_8432EB2C(0x10); + func_8432ECA0(0, 4, 5, func_84354A10, &D_843861D0[0xA], 0, 1, 0xE, 0, 0x4D, 4); +} + +void func_8434CE14(void) { + func_8432EB2C(0x41); + func_8432ECA0(0, 4, 0x20, func_84354A10, &D_843861D0[0x4A], 0, 2, 7, 0, 0x33, 8); + func_8432ECA0(0, 4, 0x20, func_84354A10, &D_843861D0[0x19], 0, 2, 7, 0, 0xC, 8); + func_8432ECA0(0, 4, 0x20, func_84354A10, &D_843861D0[0xE], 0, 2, 7, 0, 0xC, 8); + func_8432ECA0(0, 8, 0xA, func_84354A10, &D_843861D0[0xA], 0, 2, 7, 0, 0xC, 4); +} + +void func_8434CF64(void) { + func_8432ECA0(0, 4, 4, func_84354BE4, &D_843861D0[0x4A], 0, 3, 0xE, 0, 0x33, 0xC); + func_8432ECA0(0, 4, 4, func_84354BE4, &D_843861D0[0x19], 0, 3, 0xE, 0, 0xC, 0xC); + func_8432ECA0(0, 4, 4, func_84354BE4, &D_843861D0[0xE], 0, 3, 0xE, 0, 0xC, 0xC); + func_8432ECA0(0, 4, 4, func_84354BE4, &D_843861D0[0xA], 0, 3, 0xE, 0, 0xC, 4); + func_8432ECA0(0, 2, 0xC, func_84337C6C, &D_843861D0[0x45], 0, 4, 0x11, 7, 0x33, 0); +} + +void func_8434D0F8(void) { + func_8432EC28(0, func_843416B0, &D_8140E460, 0, 1, 0x13, D_843902E2, 0x10, 0); + func_8432EDE8(0x22, 0, 0x10, 0xA); +} + +void func_8434D168(unk_D_8140E720* arg0) { + func_8140B938(arg0, 0.2f); + func_8140D5A0(arg0, 0x33); + func_8140BC20(arg0, 0xFF); + func_814081BC(arg0); +} + +void func_8434D1B0(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8434D168(arg0); + break; + + case 2: + func_814084D8(arg0, 0, 7, 1, 2, 0); + func_8140BC2C(arg0, 0x20, 0x40); + break; + + case 3: + func_81408158(arg0); + break; + } + func_8140B98C(arg0, 0.5f, 0.1f); +} + +void func_8434D260(unk_D_8140E720* arg0) { + func_8140C038(arg0); + func_8140B938(arg0, 0.3f); + func_8140A52C(arg0, -0x1000, 0, 0); + func_8140A414(arg0, func_8432FE44(arg0)); + func_8140A3D8(arg0, 0x80); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_8434D2E0(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8434D260(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + arg0->unk_14 = func_8432CB68(arg0); + func_8432CD70(arg0->unk_14, 0xA0, 0xA1); + func_81408328(arg0); + } + break; + + case 3: + if (func_8140826C(arg0, 0xA) != 0) { + func_8140AD8C(arg0, 8.0f); + func_8432D844(arg0, func_8434D1B0, &D_843861D0[0x4A], 1); + func_8432D8E8(arg0, func_84354FA8, &D_843861D0[0x3D], 0xC, 0x33, 0); + } + break; + + case 4: + func_8432D844(arg0, func_8434D1B0, &D_843861D0[0x4A], 1); + func_8140A76C(arg0, 0x1000, 0x200); + func_8140A6BC(arg0); + func_8140826C(arg0, 0xF); + break; + + case 5: + func_81408158(arg0); + break; + } + + if (func_81408368(arg0) != 0) { + func_81409D0C(arg0); + } +} + +void func_8434D448(void) { + func_8432EC28(0, func_8434D2E0, &D_8140E460, 0, 1, 0x11, D_843902E2, 0, 0); +} + +void func_8434D4A0(unk_D_8140E720* arg0) { + func_8140C038(arg0); + func_8140B938(arg0, 0.4f); + func_81408CA0(arg0, 15.0f); + func_81408ED0(arg0, 50.0f); + func_8140A52C(arg0, 0x800, -0x8000, 0); + func_8140AD8C(arg0, 8.0f); + func_814081BC(arg0); + arg0->unk_14 = func_8432CB68(arg0); + func_8432CE00(arg0->unk_14, 0xA0); +} + +void func_8434D530(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8434D4A0(arg0); + break; + + case 2: + func_8432D844(arg0, func_8434D1B0, &D_843861D0[0x4A], 1); + func_8140A76C(arg0, 0x1000, 0x80); + func_8140826C(arg0, 7); + break; + + case 3: + func_81408158(arg0); + break; + } + + if (func_81408368(arg0) != 0) { + func_81409D0C(arg0); + } +} + +void func_8434D5EC(void) { + func_8432EC28(0, func_8434D530, &D_8140E460, 0, 1, 0x11, D_843902E2, 0, 0); + func_8432EC28(5, func_843529D8, &D_843861D0[0x34], 0, 1, 0x11, 9, 0, 6); + func_8432EC28(7, func_84351984, &D_843861D0[0x3D], 0, 8, 0x11, 9, 0, 0); +} + +void func_8434D6C0(unk_D_8140E720* arg0) { + arg0->unk_14 = func_8432CB68(arg0); + if (arg0->unk_14 != NULL) { + func_8432CE00(arg0->unk_14, 0xA2); + func_8140B938(arg0, 1.0f); + func_8140BC20(arg0, 0); + func_814081BC(arg0); + } else { + func_81408158(arg0); + } +} + +void func_8434D72C(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8434D6C0(arg0); + break; + + case 2: + func_8140BC5C(arg0, 0x80, 8); + break; + } +} + +void func_8434D77C(Gfx* arg0, arg1_func_8434E21C* arg1, UNUSED u16 arg2) { + UNUSED s32 pad; + unk_D_8140E720* sp48 = func_8432CB60(D_8006F09C); + UNUSED s16 pad2; + s16 sp44; + s16 sp42; + + switch (func_8140C058(sp48)) { + case 0: + sp44 = -5; + sp42 = 3; + break; + + case 1: + sp44 = 5; + sp42 = -3; + break; + } + + gDPPipeSync(arg0++); + gDPSetPrimColor(arg0++, 0, 0x80, 55, 255, 255, sp48->prim_a); + + arg0 = func_84341B84(arg0++, arg1, 0x20, 5, 1, sp44, 0xD, 0xC, -1, sp42, 0xB, 0xD); + gSPEndDisplayList(arg0++); +} + +void func_8434D890(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 30); + func_8434D77C(arg1->unk_18, arg1->unk_14, D_8006F084); + } +} + +void func_8434D8D8(void) { + func_8432ED0C(0, 0x10, 0); + func_8432EC28(0, func_8434D72C, &D_8140E460, 0, 1, 9, 0, 0, 0); +} + +void func_8434D938(void) { + func_8432F344(0, 2, 0xA, 0xFF, 0, 0x10); + func_8432EC28(0, func_8434D72C, &D_8140E460, 0, 1, 9, 0, 1, 0); + func_8432ECA0(4, 4, 4, func_843529D8, &D_843861D0[0x34], 0, 3, 9, 0, 0x18, 0xD); +} + +void func_8434D9F8(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84340E40(arg0, 2); + break; + + case 2: + func_8140BC5C(arg0, arg0->unk_A6, func_8140C040(arg0)); + break; + + case 3: + func_8140826C(arg0, 0x20); + break; + + case 4: + func_8140BC5C(arg0, 0, 0xA); + break; + + case 5: + func_81408158(arg0); + break; + } +} + +void func_8434DA94(void) { + func_8432ED0C(0, 5, 0); + func_8432EC28(0, func_84341860, &D_8140E460, 0xFF, 1, 0xC, 8, 0x18, 5); + func_8432F344(0x32, 1, 0xA, 0, 0xFF, 0x20); + func_8432ED74(0x32, 1, 0x20, 0xA, 0xFF); +} + +void func_8434DB40(void) { + func_8432ED0C(0, 6, 0); + func_8432EC28(0, func_84341860, &D_8140E460, 0xFF, 1, 0xC, 7, 0x17, 6); + func_8432ED74(0x32, 1, 0x20, 0xA, 0xFF); + func_8432F344(0x32, 1, 0xA, 0, 0xFF, 0x20); +} + +void func_8434DBEC(void) { + func_8432ED0C(0, 0x40, 0); + func_8432EC28(0, func_8434D9F8, &D_8140E460, 0xFF, 1, 0xC, 8, 0x18, 0x20); + func_8432ECA0(4, 4, 4, func_843529D8, &D_843861D0[0x34], 0, 3, 9, 0, 0x18, 0xD); + func_8432F2C8(8, 0xA, 0, 0xFF, 0x40); + func_8432EDE8(0, 0, 0x10, 0xA); + func_8432EB2C(0x21); + func_8432F2C8(0, 0xA, 0xFF, 0, 4); + func_8432ED0C(8, 4, 0xA); +} + +void func_8434DD08(void) { + func_8432ED0C(0, 0x40, 0); + func_8432EC28(0, func_8434D9F8, &D_8140E460, 0xFF, 1, 0xC, 7, 0x17, 0x20); + func_8432ECA0(4, 4, 4, func_843529D8, &D_843861D0[0x34], 0, 3, 9, 0, 0x18, 0xD); + func_8432F2C8(8, 0xA, 0, 0xFF, 0x40); + func_8432EDE8(0, 0, 0x10, 0xA); + func_8432EB2C(0x21); + func_8432F2C8(0, 0xA, 0xFF, 0, 4); + func_8432ED0C(8, 4, 0xA); +} + +f32 func_8434DE24(unk_D_8140E720* arg0) { + f32 sp1C = 1.0f; + + if (func_843081BC(arg0->unk_10) == 0x34) { + sp1C = 1.75f; + } + return sp1C; +} + +void func_8434DE6C(void) { + s16 sp46 = 7; + + if (func_8432F9CC(0x14) != 0) { + sp46 = D_843902E2; + } + func_8432ED0C(0, 0x10, 6); + func_8432EC28(0, func_84341860, &D_8140E460, 0x80, 1, 0xC, 0xA, 0x1A, 4); + func_8432F344(0, 1, 0xC, 0, 0xC8, 3); + func_8432ECA0(0x3C, 4, 0xE, func_84354A10, &D_843861D0[0x3D], 0, 1, 0x11, sp46, 0x33, 7); + func_8432ECA0(0x3D, 8, 7, func_84354A10, &D_843861D0[0x3D], 0, 1, 0x11, sp46, 0x33, 7); +} + +void func_8434DFC0(void) { + func_8432ED0C(0, 0x20, 6); + func_8432EC28(0, func_84341860, &D_8140E460, 0x80, 1, 0xC, 0xA, 0x1A, 0x20); +} + +void func_8434E02C(void) { + func_84358C18(0xE); + func_8432ED0C(0, 2, 0x10); + func_8432F2C8(0, 0xC, 0, 0xC8, 4); + func_8432F440(0x32, 0xC, 0x19, 2, 0xC8); + func_8432EC28(0x40, func_84334154, &D_843861D0[0x4F], 0, 0x20, 7, 0, 0, 0); +} + +void func_8434E0CC(void) { + func_8432ED0C(0, 0x20, 6); + func_8432F2C8(0, 0x14, 0, 0x80, 0x10); + func_8432F7A0(0, 0xFF, 0, 0x10); + func_8432EC28(0, func_8434174C, &D_8140E460, 0xFF, 1, 9, D_843902E2, 0x12, 0x20); + func_8432ECA0(0, 1, 0xC, func_84354A10, &D_843861D0[0x3D], 0, 1, 9, 0, 0x16, 5); +} + +void func_8434E1B8(void) { + func_8432EC28(0, func_843416B0, &D_8140E460, 0, 1, 9, 0, 0x13, 0); + func_8432EB20(4); + func_8433C940(); +} + +void func_8434E21C(Gfx* arg0, arg1_func_8434E21C* arg1, UNUSED u16 arg2) { + unk_D_8140E720* temp_v0; + UNUSED s32 pad; + s16 var_t2; + s16 tmp; + s16 sp82; + s16 sp80; + s16 sp7E; + s16 sp7C; + s16 sp7A; + s16 sp78; + s16 sp76; + s16 sp74; + s16 var_s1; + s16 var_t1; + UNUSED s16 pad2; + s16 var_t5; + + temp_v0 = func_8432CB60(D_8006F09C); + var_t1 = 0x96; + var_t2 = 0xFF; + var_s1 = 0x20; + var_t5 = 5; + tmp = arg1->unk_0A; + + switch (tmp) { + case 1: + sp82 = -5; + sp80 = -0xF; + sp7E = -0xA; + sp7C = -0xA; + sp7A = 0; + sp78 = 1; + sp76 = 0; + sp74 = 1; + break; + + case 2: + sp82 = 5; + sp80 = -0xF; + sp7E = 0; + sp7C = -0xA; + sp7A = 0; + sp78 = 0xF; + sp76 = 0; + sp74 = 0xF; + break; + + case 3: + sp82 = 5; + sp80 = -0xF; + sp7C = -0xA; + sp7E = 0; + sp7A = 1; + sp78 = 1; + sp76 = 1; + sp74 = 1; + break; + + case 4: + sp82 = 5; + sp80 = -0xF; + sp7E = 0; + sp7C = -0xA; + sp7A = 0; + sp78 = 0; + sp76 = 0; + sp74 = 0; + break; + + case 5: + sp82 = -5; + sp80 = -0xA; + sp7E = 0; + sp7C = 0; + sp7A = 1; + sp78 = 0; + sp76 = 0; + sp74 = 0; + var_t1 = 0x78; + var_t2 = 0xC8; + var_s1 = 0x40; + var_t5 = 6; + break; + + case 6: + sp82 = 0; + sp80 = -0xA; + sp7E = 0; + sp7C = 0; + sp7A = 1; + sp78 = 1; + sp76 = 0; + sp74 = 0; + var_t1 = 0x78; + var_t2 = 0xC8; + var_s1 = 0x40; + var_t5 = 6; + break; + } + + gDPPipeSync(arg0++); + gDPSetPrimColor(arg0++, 0, var_t1, 255, var_t2, 0, temp_v0->prim_a); + + gDPLoadTextureTile_4b(arg0++, arg1->unk_00, G_IM_FMT_I, 32, 32, 0, 0, 31, 31, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, sp7A, sp78); + + func_81406204(arg0++, sp82, sp80, 0x20, 0x20); + + gDPLoadMultiTile_4b(arg0++, arg1->unk_04, 0x0100, 1, G_IM_FMT_I, var_s1, 0, 0, 0, var_s1 - 1, var_s1 - 1, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, var_t5, var_t5, sp76, sp74); + + func_81406288(arg0++, sp7E, sp7C, var_s1, var_s1); + + gSPEndDisplayList(arg0++); +} + +void func_8434E6AC(s32 arg0, arg1_func_84344CE8* arg1) { + if (arg0 == 2) { + arg1->unk_18 = func_80005F5C(sizeof(Gfx) * 30); + func_8434E21C(arg1->unk_18, arg1->unk_14, D_8006F084); + } +} + +void func_8434E6F4(void) { + func_8432EC28(0, func_843416B0, &D_8140E460, 0, 1, 0xE, 5, 0x14, 0); +} + +void func_8434E74C(void) { + func_8432EC28(0, func_84341860, &D_8140E460, 0xBE, 1, 9, 6, 0x15, 2); + func_8432F2C8(8, 0xA, 0, 0xFF, 4); + func_84358E24(); +} + +void func_8434E7CC(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84340E40(arg0, 0); + func_8140BCA8(arg0, 2); + break; + + case 2: + func_8140BB14(arg0, 0, 0x20); + + if (func_8140BDAC != NULL) { + func_8140BC2C(arg0, 0, 0x20); + } + + if (func_80017514(arg0->unk_14) != 0) { + func_81408150(arg0); + } + break; + } +} + +void func_8434E870(void) { + func_8432F2C8(4, 0xA, 0xFF, 0, 0x20); + func_8432EC28(4, func_8434E7CC, &D_8140E460, 0, 1, 9, 0, 0x19, 0); +} + +void func_8434E8E0(void) { + func_8432EC28(0, func_843416B0, &D_8140E460, 0, 1, 0x11, D_843902E2, 0x1B, 1); +} + +void func_8434E940(void) { + func_8432EC28(0, func_843416B0, &D_8140E460, 0, 1, 0x11, D_843902E2, 0x1C, 1); +} + +void func_8434E9A0(void) { + func_8432ED0C(0, 0x20, 0); + func_8432EC28(0, func_843416B0, &D_8140E460, 0, 1, 0x11, D_843902E2, 0x1B, 1); +} + +void func_8434EA10(void) { + func_8432F2C8(0, 0xC, 0, 0xFF, 0x40); + func_8432EC28(0, func_843416B0, &D_8140E460, 0, 1, 0x11, D_843902E2, 0x1C, 1); + func_8432F2C8(0x30, 0xC, 0xFF, 0, 2); +} + +void func_8434EAA8(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C040(arg0); + + switch (arg0->unk_B2) { + case 1: + func_84340E40(arg0, 0); + if (sp26 == 1) { + func_8140B938(arg0, 1.5f); + func_81408F38(arg0, 40.0f); + } + break; + + case 2: + func_8140D908(arg0, 0x33, 0x40); + func_8140BC5C(arg0, 0xFF, 0x40); + break; + + case 3: + func_8140D908(arg0, 0, 0x40); + func_8140BC5C(arg0, 0, 0x40); + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_8434EBA0(void) { + func_8432ECA0(0, 2, 3, func_8434EAA8, &D_8140E460, 0, 1, 0x11, D_843902E2, 0x20, 0); +} + +void func_8434EC08(void) { + func_8432EC28(0, func_8434EAA8, &D_8140E460, 0, 1, 0x11, D_843902E2, 0x20, 1); +} + +void func_8434EC68(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84340E40(arg0, 0); + break; + + case 2: + func_8140D908(arg0, 0x33, 0x24); + func_8140BC2C(arg0, 0xFF, 0x1D); + if (func_80017514(arg0->unk_14) != 0) { + func_81408150(arg0); + } + break; + } +} + +void func_8434ECF4(void) { + func_8432EC28(0, func_8434EC68, &D_8140E460, 0, 1, 0xA, 0, 0x1F, 0); +} + +void func_8434ED48(void) { + func_8432ED0C(0, 8, 0x22); +} + +void func_8434ED70(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + s16 sp24 = func_8140C058(arg0); + + func_8140C040(arg0); + + switch (sp26) { + case 0: + func_81408BE0(arg0, 0.0f, 0.0f, 0.0f); + break; + + case 1: + func_81408BE0(arg0, 0.0f, 10.0f, 10.0f); + break; + + case 2: + func_81408BE0(arg0, 0.0f, 15.0f, -15.0f); + break; + } + + func_8140B938(arg0, 0.1f); + func_8140B95C(arg0, 2.0f); + func_8140B974(arg0, 0.0625f); + func_8140D5A0(arg0, sp24); + func_8140BC20(arg0, 0xFF); + func_8140BCA8(arg0, sp26 * 8); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_8434EEA4(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8434ED70(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + func_8140BCA8(arg0, 0xA); + } + break; + + case 3: + func_8140BA1C(arg0); + if (func_8140BDAC(arg0) != 0) { + func_8140BC5C(arg0, 0, 0x10); + } + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_8434EF68(void) { + func_8432EC28(0, func_8434EEA4, &D_843861D0[0x39], 8, 3, 2, 0, 0x45, 0); +} + +void func_8434EFBC(void) { + func_8432EC28(0, func_8434EEA4, &D_843861D0[0x39], 8, 3, 2, 0, 0x47, 0); +} + +void func_8434F010(void) { + func_8432EC28(0, func_843431B0, &D_8140E460, 0x1E, 3, 6, 0, 0, 0); +} + +void func_8434F060(void) { + func_8432EC28(0, func_843529D8, &D_843861D0[0x34], 0, 1, 0x11, 9, 0, 6); +} + +void func_8434F0B8(void) { + func_8432EC28(0x10, func_843529D8, &D_843861D0[0x34], 0, 1, 0x11, 9, 0, 6); +} + +void func_8434F110(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + s16 sp24 = func_8140C058(arg0); + + func_8140C040(arg0); + + switch (sp26) { + case 0: + func_81408BE0(arg0, 0.0f, 0.0f, 0.0f); + break; + + case 1: + func_81408BE0(arg0, 0.0f, 10.0f, 10.0f); + break; + + case 2: + func_81408BE0(arg0, 0.0f, 15.0f, -15.0f); + break; + } + + func_8140B938(arg0, 0.01f); + func_8140B95C(arg0, 0.5f); + func_8140B974(arg0, 0.05f); + func_8140D5A0(arg0, sp24); + func_8140BC20(arg0, 0xFF); + func_8140BCA8(arg0, sp26 * 8); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_8434F248(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8434F110(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + func_8140BCA8(arg0, 0xA); + } + break; + + case 3: + func_8140BA1C(arg0); + func_814099E0(arg0, 1.0f); + if (func_8140BDD0(arg0) != 0) { + func_8140BCA8(arg0, 0x10); + } + break; + + case 4: + func_8140ADBC(arg0, 4.0f, 0.5f); + func_814099E0(arg0, arg0->unk_74); + func_8140BC2C(arg0, 0, 0x10); + if (func_8140BDD0(arg0) != 0) { + break; + } + break; + + case 5: + func_81408150(arg0); + break; + } +} + +void func_8434F350(void) { + func_8432EC28(0, func_8434F248, &D_843861D0[0x39], 8, 3, 2, 0, 0x46, 0); + func_8432EC28(0x10, func_8434F248, &D_843861D0[0x39], 8, 3, 2, 0, 0x46, 0); +} diff --git a/src/fragments/62/fragment62_339CA0.c b/src/fragments/62/fragment62_339CA0.c new file mode 100644 index 0000000..234e4a3 --- /dev/null +++ b/src/fragments/62/fragment62_339CA0.c @@ -0,0 +1,3143 @@ +#include "fragment62.h" +#include "src/17300.h" +#include "src/12D80.h" +#include "src/6A40.h" +#include "src/F420.h" +#include "src/math_util.h" + +void func_8434F3E0(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + s16 sp24 = func_8140C058(arg0); + + switch (func_8140C040(arg0)) { + case 0: + func_8140A578(arg0, 0x4000); + break; + + case 1: + func_8140A578(arg0, -0x3000); + func_8140A594(arg0, 0x4000); + func_8140A5B0(arg0, 0x2000); + break; + + case 2: + func_8140A578(arg0, 0x2000); + func_8140A594(arg0, 0x2000); + func_8140A5B0(arg0, 0x2000); + break; + + case 3: + func_8140A578(arg0, -0x8000); + func_8140A594(arg0, 0x2000); + func_8140A5B0(arg0, 0x6000); + break; + + case 4: + func_8140A578(arg0, -0x4000); + func_8140A594(arg0, 0x4000); + func_8140A5B0(arg0, 0x4000); + break; + } + + func_81408E90(arg0, 10.0f); + func_8140910C(arg0, (sp26 - 1) * 10.0f); + func_8140B938(arg0, 1.0f); + func_8140D5A0(arg0, sp24); + func_814081BC(arg0); +} + +void func_8434F554(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8434F3E0(arg0); + break; + + case 2: + func_814084D8(arg0, 0, 7, 1, 1, 0); + break; + + case 3: + func_8140BC5C(arg0, 0, 0x40); + break; + + case 4: + func_81408150(arg0); + break; + } + func_8140B98C(arg0, 3.5f, 0.25f); +} + +void func_8434F610(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + + func_8140C058(arg0); + + switch (sp26) { + case 0: + func_8140A578(arg0, 0x5800); + func_8140A594(arg0, 0x5800); + func_8140A5B0(arg0, -0x6000); + break; + + case 1: + func_8140A578(arg0, 0x6000); + func_8140A594(arg0, 0); + func_8140A5B0(arg0, 0x5800); + break; + + case 2: + func_8140A578(arg0, 0x2000); + func_8140A594(arg0, 0x2000); + func_8140A5B0(arg0, 0x2000); + break; + + case 3: + func_8140A578(arg0, 0x6000); + break; + + case 4: + func_8140A578(arg0, 0); + func_8140A594(arg0, 0); + func_8140A5B0(arg0, 0); + break; + + case 5: + func_8140A578(arg0, 0x6000); + func_8140A594(arg0, 0x2800); + func_8140A5B0(arg0, 0x5800); + break; + } + + func_81408E90(arg0, 10.0f); + func_8140B938(arg0, 1.0f); + func_8140D5A0(arg0, 0xC); + func_8140BCA8(arg0, sp26 * 3); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_8434F7A4(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8434F610(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + } + break; + + case 3: + func_814084D8(arg0, 0, 7, 1, 1, 0); + func_8140B98C(arg0, 3.5f, 0.25f); + break; + + case 4: + func_8140BC5C(arg0, 0, 0x40); + func_8140B98C(arg0, 3.5f, 0.25f); + break; + + case 5: + func_81408150(arg0); + break; + } +} + +void func_8434F888(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + s16 sp24 = func_8140C058(arg0); + + switch (sp26) { + case 0: + func_8140A578(arg0, 0x5800); + func_8140A594(arg0, 0x5800); + func_8140A5B0(arg0, -0x6000); + break; + + case 1: + func_8140A578(arg0, 0x6000); + func_8140A594(arg0, 0); + func_8140A5B0(arg0, 0x5800); + break; + + case 2: + func_8140A578(arg0, 0x2000); + func_8140A594(arg0, 0x2000); + func_8140A5B0(arg0, 0x2000); + break; + + case 3: + func_8140A578(arg0, 0x6000); + break; + + case 4: + func_8140A578(arg0, 0); + func_8140A594(arg0, 0); + func_8140A5B0(arg0, 0); + break; + + case 5: + func_8140A578(arg0, 0x6000); + func_8140A594(arg0, 0x2800); + func_8140A5B0(arg0, 0x5800); + break; + } + + switch (sp24) { + case 0: + func_81409404(arg0, 0xA, 3); + func_8140935C(arg0, 0xF, 0xA); + func_81409514(arg0, 0xF, 3); + func_8140D5A0(arg0, 0xD); + break; + + case 1: + func_81409404(arg0, 0xA, 5); + func_8140935C(arg0, 0x14, 5); + func_81409514(arg0, 0xA, 5); + func_8140D5A0(arg0, 0xE); + break; + } + + func_8140B938(arg0, 1.0f); + func_8140BCA8(arg0, sp26 * 2); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_8434FA98(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8434F888(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + } + break; + + case 3: + func_814084D8(arg0, 0, 7, 2, 1, 0); + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_8434FB3C(unk_D_8140E720* arg0) { + s16 sp26 = func_843081BC(D_843902EC); + + func_8140B938(arg0, 1.0f); + func_8140D5A0(arg0, func_8140C058(arg0)); + + if (sp26 == 0x42) { + func_81408BE0(arg0, 320.0f, 0.0f, 0.0f); + func_8140A5B0(arg0, -0x2800); + } else { + func_8140A5B0(arg0, 0x2500); + } + func_814081BC(arg0); +} + +void func_8434FBE4(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C040(arg0); + + switch (arg0->unk_B2) { + case 1: + func_8434FB3C(arg0); + break; + + case 2: + func_8140826C(arg0, 0x14); + break; + + case 3: + func_81408158(arg0); + break; + } + + func_8140B98C(arg0, 6.2f, 1.0f); + + if (sp26 == 0) { + func_8140BB14(arg0, 0, 0x18); + func_8140BB44(arg0, 0, 0x18); + func_8140BBF0(arg0, 0, 0x18); + func_8140BBC0(arg0, 0, 0x18); + } +} + +void func_8434FCC4(unk_D_8140E720* arg0) { + s16 sp26 = func_843081BC(D_843902EC); + + func_8140B938(arg0, 1.0f); + + if (sp26 == 0x42) { + func_8140A5B0(arg0, 0x2500); + } else { + func_81408BE0(arg0, 320.0f, 0.0f, 0.0f); + func_8140A5B0(arg0, -0x2800); + } + + func_8140D5A0(arg0, func_8140C058(arg0)); + func_814081BC(arg0); +} + +void func_8434FD6C(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C040(arg0); + + switch (arg0->unk_B2) { + case 1: + func_8434FCC4(arg0); + break; + + case 2: + func_8140826C(arg0, 0x14); + break; + + case 3: + func_81408150(arg0); + break; + } + + func_8140B98C(arg0, 6.0f, 1.0f); + + if (sp26 == 0) { + func_8140BB14(arg0, 0, 0x18); + func_8140BB44(arg0, 0, 0x18); + func_8140BBF0(arg0, 0, 0x18); + func_8140BBC0(arg0, 0, 0x18); + } + func_8140BC2C(arg0, 0, 0x10); +} + +void func_8434FE58(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C040(arg0); + s16 sp24 = func_8140C058(arg0); + s16 sp22 = func_843081BC(D_843902EC); + + func_8140B938(arg0, 1.0f); + + if (sp22 == 0x42) { + func_8140A578(arg0, -0x2000); + func_8140A594(arg0, 0x4000); + } else { + func_8140A578(arg0, 0x2000); + func_8140A594(arg0, 0x4000); + } + + switch (sp26) { + case 0: + func_81408E90(arg0, -10.0f); + break; + + case 2: + func_81408E90(arg0, 10.0f); + break; + } + + func_8140D5A0(arg0, sp24); + func_814081BC(arg0); +} + +void func_8434FF40(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8434FE58(arg0); + break; + + case 2: + func_8140826C(arg0, 8); + break; + + case 3: + func_8140BC5C(arg0, 0, 0x20); + break; + + case 4: + func_81408158(arg0); + break; + } + + func_814083FC(arg0, 0, 7, 1, 2, 0); + func_8140B98C(arg0, 5.0f, 0.4f); +} + +void func_8435000C(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C040(arg0); + s16 sp24 = func_8140C058(arg0); + s16 sp22 = func_843081BC(D_843902EC); + + func_8140B938(arg0, 1.0f); + + if (sp22 == 0x42) { + func_8140A578(arg0, -0x2000); + func_8140A594(arg0, 0x4000); + } else { + func_8140A578(arg0, 0x2000); + func_8140A594(arg0, 0x4000); + } + + switch (sp26) { + case 0: + func_81408E90(arg0, -10.0f); + break; + + case 2: + func_81408E90(arg0, 10.0f); + break; + } + + func_8140D5A0(arg0, sp24); + func_8140BC20(arg0, 0x80); + func_814081BC(arg0); +} + +void func_84350100(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8435000C(arg0); + break; + + case 2: + func_8140826C(arg0, 8); + break; + + case 3: + func_8140BC5C(arg0, 0, 0x10); + break; + + case 4: + func_81408158(arg0); + break; + } + + func_814083FC(arg0, 0, 7, 1, 2, 0); + func_8140B98C(arg0, 5.0f, 0.4f); +} + +void func_843501CC(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + s16 sp24 = func_8140C058(arg0); + + func_8140B938(arg0, 1.0f); + func_8140AD8C(arg0, 0.4f); + func_8140D5A0(arg0, sp24); + func_8140BC20(arg0, 0x64); + func_8140BCA8(arg0, sp26 * 4); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84350260(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_843501CC(arg0); + break; + + case 2: + if (func_8140826C(arg0, arg0->unk_A6) != 0) { + func_81408328(arg0); + } + break; + + case 3: + func_814084D8(arg0, 0, 7, 1, 2, 0); + func_8140BC2C(arg0, 0x64, 6); + func_81409EA0(arg0); + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_84350330(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + s16 sp24 = func_8140C058(arg0); + + func_8140B938(arg0, 0.25f); + arg0->unk_5C.y = (MathUtil_Random_ZeroOne() * 0.5f) + 0.25f; + func_8140A594(arg0, 0x1800 - ((0x3000 / func_8140C068(arg0)) * sp26)); + func_8140AD8C(arg0, (2.0f * MathUtil_Random_ZeroOne()) + 3.0f); + func_8140D5A0(arg0, sp24); + func_8140BC20(arg0, 0xB4); + func_814081BC(arg0); +} + +void func_8435043C(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84350330(arg0); + break; + + case 2: + func_814084D8(arg0, 0, 7, 1, 2, 0); + func_8140B98C(arg0, 0.75f, 0.025f); + func_8140ADBC(arg0, 0.5f, 0.25f); + func_814099E0(arg0, arg0->unk_5C.y); + func_81409CBC(arg0); + break; + + case 3: + func_8140BC5C(arg0, 0, 0x20); + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_84350520(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + s16 sp24 = func_8140C058(arg0); + + func_8140B938(arg0, 0.5f); + arg0->unk_5C.y = (MathUtil_Random_ZeroOne() * 0.5f) + 0.25f; + func_8140A594(arg0, 0x1800 - ((0x3000 / func_8140C068(arg0)) * sp26)); + func_8140AD8C(arg0, (MathUtil_Random_ZeroOne() * 2.5f) + 3.0f); + func_8140D5A0(arg0, sp24); + func_8140BC20(arg0, 0xB4); + func_814081BC(arg0); +} + +void func_84350634(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84350520(arg0); + break; + + case 2: + func_814084D8(arg0, 0, 7, 1, 3, 0); + func_8140B98C(arg0, 1.0f, 0.05f); + func_8140ADBC(arg0, 0.5f, 0.25f); + func_814099E0(arg0, arg0->unk_5C.y); + break; + + case 3: + if (func_8140BC2C(arg0, 0, 0x20) != 0) { + func_814081BC(arg0); + } + break; + + case 4: + func_81408150(arg0); + break; + } + func_81409CBC(arg0); +} + +void func_84350728(unk_D_8140E720* arg0) { + UNUSED s16 pad; + s16 sp24 = func_8140C038(arg0); + + func_8140B938(arg0, 0.25f); + arg0->unk_5C.y = (MathUtil_Random_ZeroOne() * 0.5f) + 0.4f; + func_8140A594(arg0, 0x800 - ((0x1000 / func_8140C068(arg0)) * sp24)); + func_8140AD8C(arg0, (2.0f * MathUtil_Random_ZeroOne()) + 5.0f); + func_8140D5A0(arg0, 0x32); + func_8140BC20(arg0, 0xFF); + func_814081BC(arg0); +} + +void func_84350828(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84350728(arg0); + break; + + case 2: + func_814084D8(arg0, 0, 7, 1, 2, 0); + func_8140BC2C(arg0, 0x64, 9); + func_8140B98C(arg0, 0.4f, 0.025f); + func_814099E0(arg0, arg0->unk_5C.y); + func_81409CBC(arg0); + break; + + case 3: + func_81408150(arg0); + break; + } +} + +void func_843508F0(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + + func_8140B938(arg0, 0.4f); + func_8140959C(arg0, 0, 0, 0xA); + arg0->unk_5C.y = (MathUtil_Random_ZeroOne() * 0.5f) + 0.25f; + func_8140A594(arg0, 0x2000 - ((0x4000 / func_8140C068(arg0)) * sp26)); + func_8140AD8C(arg0, MathUtil_Random_ZeroOne() + 1.0f); + func_8140D5A0(arg0, 0xA); + func_8140BC20(arg0, 0x64); + func_814081BC(arg0); +} + +void func_84350A04(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_843508F0(arg0); + break; + + case 2: + func_814084D8(arg0, 0, 7, 1, 2, 0); + func_8140B98C(arg0, 0.75f, 0.025f); + func_8140ADBC(arg0, 0.5f, 0.2f); + func_814099E0(arg0, arg0->unk_5C.y); + func_81409CBC(arg0); + break; + + case 3: + if (func_8140BC2C(arg0, 0, 0x20) != 0) { + func_814081BC(arg0); + } + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_84350AFC(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + + func_8140B938(arg0, 0.3f); + func_8140959C(arg0, 0xA, 5, 0xA); + func_81408E90(arg0, 15.0f); + func_8140AD8C(arg0, (func_81400A78(0xA) * 0.1f) + 1.5f); + func_8140BCA8(arg0, sp26 * 2); + func_8140D5A0(arg0, 0x32); + func_8140BC20(arg0, 0xFF); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84350BE4(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84350AFC(arg0); + break; + + case 2: + if (func_8140826C(arg0, arg0->unk_A6) != 0) { + func_81408328(arg0); + } + break; + + case 3: + func_8140B98C(arg0, 0.5f, 0.02f); + func_814083FC(arg0, 0, 7, 1, 2, 0); + func_8140BC2C(arg0, 0x64, 6); + if (func_81409F84(arg0) != 0) { + func_814081BC(arg0); + } + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_84350CD8(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + + func_8140B938(arg0, 0.25f); + func_8140A594(arg0, sp26 << 0xC); + func_8140AD8C(arg0, (2.0f * MathUtil_Random_ZeroOne()) + 6.0f); + func_8140AF24(arg0, (MathUtil_Random_ZeroOne() * 3.0f) + 1.0f); + func_8140D5A0(arg0, 0xA); + func_8140BC20(arg0, 0x64); + func_8140BCA8(arg0, 7); + func_814081BC(arg0); +} + +void func_84350DAC(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84350CD8(arg0); + break; + + case 2: + func_814084D8(arg0, 0, 7, 1, 2, 0); + func_8140B98C(arg0, 0.8f, 0.1f); + func_8140ADBC(arg0, 1.0, 1.0f); + if (func_8140BDAC(arg0) != 0) { + func_8140B180(arg0, 0.5f, 0.4f); + func_81409C6C(arg0); + } + break; + + case 3: + func_81409C6C(arg0); + func_8140BC5C(arg0, 0, 0x20); + break; + + case 4: + func_81408150(arg0); + break; + } + + if (func_8140819C(arg0) != 0) { + func_81409CBC(arg0); + } +} + +void func_84350EC8(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + + switch (func_8140C058(arg0)) { + case 0: + func_8140B938(arg0, 0.75f); + func_8140959C(arg0, 0xF, 0xF, 0xF); + func_81408E90(arg0, 15.0f); + func_8140AD8C(arg0, 1.0f); + break; + + case 1: + func_8140B938(arg0, 0.5f); + func_8140959C(arg0, 3, 3, 3); + func_8140AD8C(arg0, 0.4f); + break; + } + + func_8140BCA8(arg0, sp26 * 4); + func_8140D5A0(arg0, 0x13); + func_8140BC20(arg0, 0xC8); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84350FC0(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84350EC8(arg0); + break; + + case 2: + if (func_8140826C(arg0, arg0->unk_A6) != 0) { + func_81408328(arg0); + } + break; + + case 3: + func_814084D8(arg0, 0, 7, 1, 2, 0); + func_8140BC2C(arg0, 0x64, 6); + func_81409F84(arg0); + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_84351090(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + + func_81409708(arg0, 0xF, 0xF); + func_8140B938(arg0, 1.0f); + func_8140AD8C(arg0, 0.2f); + func_8140BAC8(arg0, 0xFF, 0xFF, 0xFF); + func_8140BB74(arg0, 0xFF, 0x64, 0); + func_8140BC20(arg0, 0xFF); + func_8140BCA8(arg0, sp26 * 4); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84351144(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84351090(arg0); + break; + + case 2: + if (func_8140826C(arg0, arg0->unk_A6) != 0) { + func_81408328(arg0); + } + break; + + case 3: + func_814084D8(arg0, 0, 7, 1, 2, 0); + func_8140BAE4(arg0, 0x64, 9); + func_8140BB90(arg0, 0, 0x10); + func_8140BBF0(arg0, 0x32, 3); + func_8140BBC0(arg0, 0xFF, 0x10); + if (func_814081F0(arg0, 8) != 0) { + func_8140BC2C(arg0, 0, 0x20); + } + func_81409EA0(arg0); + break; + + case 4: + func_81408158(arg0); + break; + } +} + +void func_84351264(unk_D_8140E720* arg0) { + func_8140B938(arg0, 0.1f); + func_8140D5A0(arg0, 0x14); + func_8140BC20(arg0, 0xFF); + func_814081BC(arg0); +} + +void func_843512AC(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84351264(arg0); + break; + + case 2: + func_8140B98C(arg0, 0.75f, 0.08125f); + func_8140BC5C(arg0, 0, 0x20); + break; + + case 3: + func_81408158(arg0); + break; + } +} + +void func_84351330(unk_D_8140E720* arg0) { + Vec3s sp28; + + func_8140C038(arg0); + func_8140B938(arg0, 0.1f); + sp28.x = MathUtil_Random16(); + sp28.y = MathUtil_Random16(); + sp28.z = 0; + func_8140A24C(arg0, sp28); + func_8140D5A0(arg0, 0x15); + func_8140BC20(arg0, 0xFF); + func_8140BCA8(arg0, func_81400A78(5) + 8); + func_8140AD8C(arg0, 5.0f); + func_814081BC(arg0); +} + +void func_843513F4(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84351330(arg0); + break; + + case 2: + func_8140ADBC(arg0, 2.0f, 0.5f); + if ((func_8140BDAC(arg0) != 0) && (func_8140BC2C(arg0, 0, 0x40) != 0)) { + func_814081BC(arg0); + } + break; + + case 3: + func_81408150(arg0); + break; + } + + if (func_8140819C(arg0) != 0) { + func_81409D0C(arg0); + } +} + +void func_843514B4(unk_D_8140E720* arg0) { + Vec3s sp28; + s16 sp26 = func_8140C058(arg0); + + func_8140C038(arg0); + + sp28.x = func_81400B00(0x2000); + sp28.y = func_81400B28(0x2000, 0x8000); + sp28.z = 0; + func_8140A4F0(arg0, sp28); + + switch (sp26) { + case 0: + func_8140B938(arg0, 0.2f); + func_8140D5A0(arg0, 0x15); + break; + + case 1: + func_8140B938(arg0, 0.2f); + func_8140D5A0(arg0, 0x1B); + break; + } + + func_8140BC20(arg0, 0xFF); + func_8140BCA8(arg0, func_81400A78(5) + 8); + func_8140AD8C(arg0, 6.0f); + func_814081BC(arg0); +} + +void func_843515C8(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_843514B4(arg0); + break; + + case 2: + func_8140B98C(arg0, 0.1f, 0.01f); + func_8140ADBC(arg0, 3.0f, 0.75f); + if ((func_8140BDAC(arg0) != 0) && (func_8140BC2C(arg0, 0, 0x40) != 0)) { + func_814081BC(arg0); + } + break; + + case 3: + func_81408150(arg0); + break; + } + + if (func_8140819C(arg0) != 0) { + func_81409D0C(arg0); + } +} + +void func_843516A0(unk_D_8140E720* arg0) { + Vec3s sp28; + s16 sp26 = func_8140C058(arg0); + + func_8140C038(arg0); + func_8140B938(arg0, 1.0f); + + switch (sp26) { + case 0: + func_8140D5A0(arg0, 8); + func_8140BC20(arg0, 0x64); + func_8140AD8C(arg0, 5.0f); + sp28.x = func_81400B00(0x2000); + sp28.y = func_81400B28(0x2000, 0x8000); + sp28.z = 0; + func_8140A4F0(arg0, sp28); + break; + + case 1: + func_8140D5A0(arg0, 8); + func_8140BC20(arg0, 0x64); + func_8140AD8C(arg0, 5.0f); + sp28.x = func_81400B00(0x2000); + sp28.y = func_81400B28(0x2000, 0x8000); + sp28.z = 0; + func_8140A4F0(arg0, sp28); + break; + + case 2: + func_8140D5A0(arg0, 8); + func_8140BC20(arg0, 0x64); + func_81408CA0(arg0, -10.0f); + func_8140AD8C(arg0, 5.0f); + sp28.x = func_81400B00(0x2000); + sp28.y = func_81400B28(0x2000, 0x8000); + sp28.z = 0; + func_8140A4F0(arg0, sp28); + break; + + case 3: + func_8140D5A0(arg0, 9); + func_8140BC20(arg0, 0x96); + func_8140AD8C(arg0, 3.0f); + sp28.x = func_81400B00(0x2000); + sp28.y = func_81400B28(0x2000, 0x8000); + sp28.z = 0; + func_8140A4F0(arg0, sp28); + break; + + case 4: + func_8140D5A0(arg0, 5); + func_8140BC20(arg0, 0x96); + func_8140AD8C(arg0, 4.0f); + sp28.x = func_81400B00(0x3000); + sp28.y = func_81400B28(0x3000, 0x8000); + sp28.z = 0; + func_8140A4F0(arg0, sp28); + break; + } + + func_8140BCA8(arg0, func_81400A78(5) + 8); + func_814081BC(arg0); +} + +void func_84351984(unk_D_8140E720* arg0) { + s16 sp2E = func_8140C058(arg0); + + switch (arg0->unk_B2) { + case 1: + func_843516A0(arg0); + break; + case 2: + func_814084D8(arg0, 0, 7, 1, 2, 0); + + switch (sp2E) { + case 3: + func_8140BAE4(arg0, 0, 9); + func_8140ADBC(arg0, 1.0f, 0.75f); + func_8140BC2C(arg0, 0x32, 6); + break; + + case 4: + func_8140ADBC(arg0, 1.0f, 0.75f); + func_81408E90(arg0, 0.5f); + func_8140BC2C(arg0, 0x32, 6); + break; + + default: + func_8140BB14(arg0, 0x64, 6); + func_8140ADBC(arg0, 2.0f, 0.5f); + break; + } + break; + + case 3: + func_81408150(arg0); + break; + } + + if (func_8140819C(arg0) != 0) { + func_81409D0C(arg0); + } +} + +void func_84351ADC(unk_D_8140E720* arg0) { + s16 sp2E = func_8140C038(arg0); + Vec3s sp28; + + func_8140B938(arg0, 0.1f); + if (arg0->unk_68.y < 0.0f) { + arg0->unk_68.y = 0.0f; + } + sp28.x = func_81400A78(0x10000); + sp28.y = func_81400A78(0x10000); + sp28.z = 0; + func_8140A24C(arg0, sp28); + func_8140A3EC(arg0, func_81400B4C(0x400, 0x400)); + func_8140AD8C(arg0, 8.0f); + func_8140D5A0(arg0, 0x17); + func_8140BCA8(arg0, sp2E * 0); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84351BCC(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84351ADC(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + } + break; + + case 3: + func_8140B9D0(arg0, 0.3f, 0.05f); + func_8140ADBC(arg0, 3.0f, 1.0f); + break; + + case 4: + func_8140826C(arg0, 2); + break; + + case 5: + func_8140B9D0(arg0, 0.05f, 0.05f); + break; + + case 6: + func_81408150(arg0); + break; + } + + if (func_81408368(arg0) != 0) { + func_8140A4DC(arg0); + func_8140B2B4(arg0); + func_81409BDC(arg0); + } +} + +void func_84351CE4(unk_D_8140E720* arg0) { + func_8432D844(arg0, func_84351BCC, &D_843861D0[0x42], 0xC); + func_814081BC(arg0); +} + +void func_84351D20(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84351CE4(arg0); + break; + + case 2: + func_81408150(arg0); + break; + } +} + +void func_84351D70(unk_D_8140E720* arg0) { + s16 sp2E = func_8140C038(arg0); + s16 sp2C = func_8140C040(arg0); + s16 sp2A = func_8140C058(arg0); + Vec3s sp24; + + sp24.x = func_81400A78(0x10000); + sp24.y = func_81400A78(0x10000); + sp24.z = 0; + + func_8140A24C(arg0, sp24); + func_8140AD8C(arg0, 0.0f); + func_8140ADA4(arg0, 0.0f); + func_8140D5A0(arg0, sp2A); + func_8140B938(arg0, 0.0f); + func_8140B95C(arg0, 0.3f); + func_8140B974(arg0, 0.05f); + func_8140BCA8(arg0, sp2E * 2); + + switch (sp2C) { + case 0: + func_8140910C(arg0, func_81400ADC(0x1E, 0xA)); + func_8140B95C(arg0, 0.2f); + break; + + case 1: + if (arg0->unk_68.y < 0) { + arg0->unk_68.y = 0; + } + func_8140910C(arg0, func_81400ADC(0x28, 0xA)); + func_8140B95C(arg0, 0.3f); + func_8140B974(arg0, 0.04f); + break; + + case 2: + func_8140B95C(arg0, 0.1f); + func_8140B974(arg0, 0.03f); + func_8140910C(arg0, func_81400ADC(0xC, 5)); + func_8140BCA8(arg0, sp2E * 1); + break; + + case 3: + func_8140AD8C(arg0, 0.2f); + func_8140B938(arg0, 0.1f); + func_8140910C(arg0, func_81400ADC(0x14, 0x1E)); + func_8140BCA8(arg0, sp2E * 4); + break; + + case 5: + func_8140959C(arg0, 0, 0xF, 0x19); + func_81408E90(arg0, 15.0f); + func_8140B95C(arg0, 0.15f); + func_8140B974(arg0, 0.02f); + func_8140AD8C(arg0, 0.1f); + break; + + case 6: + func_8140910C(arg0, func_81400ADC(0x1E, 0x14)); + func_8140AD8C(arg0, 0.3f); + break; + + case 8: + func_8140910C(arg0, func_81400ADC(8, 2)); + func_8140B95C(arg0, 0.1f); + func_8140B974(arg0, 0.04f); + func_8140AD8C(arg0, 0.4f); + func_8140BCA8(arg0, 0); + break; + + case 7: + func_8140910C(arg0, func_81400ADC(0xA, 2)); + func_8140B95C(arg0, 0.2f); + func_8140B974(arg0, 0.025f); + func_8140AD8C(arg0, 1.0f); + break; + + case 9: + func_8140910C(arg0, func_81400ADC(0x1E, 0x14)); + func_8140B95C(arg0, 0.3f); + func_8140B974(arg0, 0.025f); + func_8140AD8C(arg0, 0.0f); + func_8140ADA4(arg0, 0.02f); + break; + + case 10: + func_8140910C(arg0, func_81400ADC(0x19, 5)); + func_81408E90(arg0, 10.0f); + func_8140B95C(arg0, 0.2f); + break; + + case 11: + func_8140910C(arg0, func_81400ADC(5, 5)); + func_8140AD8C(arg0, func_81400A78(5) + 5.0f); + break; + } + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_8435226C(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84351D70(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + } + break; + + case 3: + if (func_8140BA48(arg0) != 0) { + func_8140B95C(arg0, 0.0f); + } + break; + + case 4: + func_8140BA48(arg0); + break; + + case 5: + func_81408150(arg0); + break; + } + + if (func_81408368(arg0) != 0) { + func_81409FD8(arg0); + if (arg0->unk_2C.y < 0.0f) { + func_81408150(arg0); + } + } +} + +void func_8435235C(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + s16 sp24 = func_8140C058(arg0); + + func_8140B938(arg0, 0.0f); + func_8140B95C(arg0, 0.3f); + func_8140B974(arg0, 0.05f); + func_8140959C(arg0, 0xA, 0x14, 0x14); + func_81408ED0(arg0, 15.0f); + func_81408E90(arg0, 7.0f); + func_8140AD8C(arg0, func_81400A78(5) + 8.0f); + func_8140BCA8(arg0, sp26 * 2); + func_8140D5A0(arg0, sp24); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84352464(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8435235C(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + } + break; + + case 3: + if (func_8140BA48(arg0) != 0) { + func_8140B95C(arg0, 0.0f); + } + break; + + case 4: + func_8140BA48(arg0); + break; + + case 5: + func_81408150(arg0); + break; + } + + if (func_81408368(arg0) != 0) { + func_81409EA0(arg0); + } +} + +void func_84352530(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84351D70(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + } + break; + + case 3: + if (func_8140BA48(arg0) != 0) { + func_8140B95C(arg0, 0.0f); + } + break; + + case 4: + func_8140BA48(arg0); + break; + + case 5: + func_81408150(arg0); + break; + } + + if (func_81408368(arg0) != 0) { + func_81409D0C(arg0); + if (arg0->unk_2C.y < 0.0f) { + func_81408150(arg0); + } + } +} + +void func_84352620(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + + func_8140B938(arg0, 0.7f); + func_81408CA0(arg0, 10.0f); + func_8140D5A0(arg0, 0x19); + func_8140BC20(arg0, 0xFF); + func_8140BCA8(arg0, sp26 * 4); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_843526A8(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84352620(arg0); + break; + + case 2: + if (func_8140826C(arg0, arg0->unk_A6) != 0) { + func_81408328(arg0); + } + break; + + case 3: + func_814084D8(arg0, 0, 5, 1, 1, 2); + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_84352754(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + s16 sp24 = func_8140C040(arg0); + + func_8140D5A0(arg0, func_8140C058(arg0)); + + switch (sp24) { + case 1: + func_8140AD8C(arg0, 0.2f); + func_8140B938(arg0, 1.0f); + break; + + case 5: + func_8140AD8C(arg0, 0.2f); + func_8140B938(arg0, 1.0f); + break; + + case 6: + func_8140AD8C(arg0, 0.4f); + func_8140B938(arg0, 1.5f); + break; + + case 16: + func_8140AD8C(arg0, 0.4f); + func_8140B938(arg0, 2.0f); + break; + + case 7: + func_8140AD8C(arg0, 0.4f); + func_8140B938(arg0, 1.5f); + break; + + case 8: + func_8140AD8C(arg0, 0.4f); + func_8140B938(arg0, 1.5f); + func_81408E90(arg0, -10.0f); + break; + + case 12: + func_8140B938(arg0, 0.75f); + func_8140AD8C(arg0, 0.4f); + func_8140959C(arg0, 8, 0xA, 8); + break; + + case 13: + func_8140B938(arg0, 1.0f); + func_8140AD8C(arg0, 0.0f); + func_81409248(arg0, 0x1E); + func_8140935C(arg0, 0x14, 0xA); + func_814092C8(arg0, 0x1E); + break; + + case 14: + func_8140B938(arg0, 1.0f); + func_8140AD8C(arg0, 0.0f); + func_81409248(arg0, 0x14); + func_8140935C(arg0, 0x14, 0xA); + func_814092C8(arg0, 0xF); + break; + + case 15: + func_8140B938(arg0, 1.5f); + func_8140AD8C(arg0, 0.3f); + func_8140959C(arg0, 0xA, 0xA, 0xA); + break; + } + + func_8140BC20(arg0, 0xFF); + func_8140BCA8(arg0, sp26 * 4); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_843529D8(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84352754(arg0); + break; + + case 2: + if (func_8140826C(arg0, arg0->unk_A6) != 0) { + func_81408328(arg0); + } + break; + + case 3: + func_814084D8(arg0, 0, 3, 1, 1, 0); + func_81409EA0(arg0); + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_84352A8C(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + + switch (func_8140C058(arg0)) { + case 0: + func_8140D5A0(arg0, 0); + func_8140AD8C(arg0, 0.2f); + func_8140B938(arg0, 1.0f); + func_8140BCA8(arg0, sp26 * 2); + func_81408E90(arg0, 15.0f); + break; + + case 1: + func_8140D5A0(arg0, 0); + func_8140AD8C(arg0, 0.2f); + func_8140B938(arg0, 1.0f); + func_8140BCA8(arg0, sp26 * 2); + break; + + case 2: + func_8140D5A0(arg0, 0); + func_8140AD8C(arg0, 0.2f); + func_8140B938(arg0, 1.0f); + func_8140BCA8(arg0, sp26 * 2); + func_81408E90(arg0, -10.0f); + break; + + case 3: + func_8140D5A0(arg0, 1); + func_8140B938(arg0, 0.5f); + func_8140AD8C(arg0, 0.4f); + func_8140BCA8(arg0, sp26 * 2); + break; + + case 4: + func_8140D5A0(arg0, 2); + func_8140B938(arg0, 0.5f); + func_8140AD8C(arg0, 0.4f); + func_8140BCA8(arg0, sp26 * 2); + break; + + case 5: + func_8140D5A0(arg0, 3); + func_8140AD8C(arg0, 0.2f); + func_8140B938(arg0, 1.0f); + func_8140BCA8(arg0, sp26 * 2); + break; + + case 6: + func_8140D5A0(arg0, 0); + func_8140AD8C(arg0, 0.4f); + func_8140B938(arg0, 1.5f); + func_8140BCA8(arg0, sp26 * 2); + break; + + case 9: + func_8140D5A0(arg0, 0); + func_8140AD8C(arg0, 0.2f); + func_8140B938(arg0, 1.0f); + func_8140959C(arg0, 0xF, 0xF, 0xF); + func_81408E90(arg0, 10.0f); + func_8140BCA8(arg0, sp26 * 2); + break; + + case 10: + func_8140D5A0(arg0, 0); + func_8140AD8C(arg0, 0.2f); + func_8140B938(arg0, 1.0f); + func_8140959C(arg0, 0x14, 0, 0x14); + func_81408CA0(arg0, 0.0f); + func_8140BCA8(arg0, sp26 * 2); + break; + + case 11: + func_8140D5A0(arg0, 0); + func_8140AD8C(arg0, 0.2f); + func_8140B938(arg0, 1.0f); + func_8140959C(arg0, 0xA, 0, 0xA); + func_81408CA0(arg0, 30.0f - (sp26 * 5.0f)); + func_8140BCA8(arg0, sp26 * 2); + break; + } + + func_8140BC20(arg0, 0xFF); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84352E64(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84352A8C(arg0); + break; + + case 2: + if (func_8140826C(arg0, arg0->unk_A6) != 0) { + func_81408328(arg0); + func_8140BCA8(arg0, 2); + } + break; + + case 3: + func_814084D8(arg0, 0, 3, 1, 1, 0); + func_81409EA0(arg0); + if ((func_8140BDAC != 0) && (arg0->unk_B8 == 0)) { + func_81408A68(arg0); + } + break; + + case 4: + func_81408150(arg0); + break; + } + + if (arg0->unk_B8 == 1) { + func_8432D8E8(arg0, func_84350260, &D_843861D0[0x3D], 1, 8, 0); + func_81408A68(arg0); + } +} + +void func_84352F90(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + + switch (func_8140C058(arg0)) { + case 3: + func_8140D5A0(arg0, 1); + func_8140B938(arg0, 1.5f); + func_8140AD8C(arg0, 0.4f); + func_8140BCA8(arg0, sp26 * 2); + func_8140BEEC(arg0, 0); + break; + + case 4: + func_8140D5A0(arg0, 2); + func_8140B938(arg0, 1.5f); + func_8140AD8C(arg0, 0.4f); + func_8140BCA8(arg0, sp26 * 2); + func_8140BEEC(arg0, 1); + break; + } + + func_8140BC20(arg0, 0xFF); + func_81408348(arg0); + func_814081BC(arg0); +} + +s32 func_84353098(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84352F90(arg0); + break; + + case 2: + if (func_8140826C(arg0, arg0->unk_A6) != 0) { + func_81408328(arg0); + func_8140BCA8(arg0, 2); + } + break; + + case 3: + func_814084D8(arg0, 0, 3, 1, 1, 0); + func_81409EA0(arg0); + if ((func_8140BDAC != NULL) && (arg0->unk_B8 == 0)) { + func_81408A68(arg0); + } + break; + + case 4: + func_81408150(arg0); + break; + } + + switch (arg0->unk_B8) { + case 1: + func_8432D844(arg0, func_843515C8, &D_843861D0[0x38], 8); + func_81408A68(arg0); + break; + + case 2: + if (func_81408A78(arg0, 1) != 0) { + func_8432D844(arg0, func_843515C8, &D_843861D0[0x38], 4); + func_81408A68(arg0); + } + break; + + case 3: + if (func_81408A78(arg0, 1) != 0) { + func_8432D844(arg0, func_843515C8, &D_843861D0[0x38], 4); + func_81408A68(arg0); + } + break; + } +} + +void func_8435324C(unk_D_8140E720* arg0) { + func_8140C038(arg0); + func_8140B938(arg0, 0.05f); + func_8140D5A0(arg0, 7); + func_8140BC20(arg0, 0xFF); + func_8140BCA8(arg0, 0x32); + func_814081BC(arg0); +} + +void func_843532B0(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8435324C(arg0); + break; + + case 2: + func_814083FC(arg0, 0, 5, 1, 1, -1); + func_8140B98C(arg0, 0.3f, 0.01f); + func_8140BDD0(arg0); + break; + + case 3: + func_81408150(arg0); + break; + } +} + +void func_84353354(unk_D_8140E720* arg0) { + s16 sp2E; + s16 sp2C; + Vec3s sp24; + + sp2E = func_8140C038(arg0); + sp2C = sp2E % 3; + func_8140B938(arg0, 0.4f); + func_8140AD8C(arg0, 1.0f); + + sp24.x = MathUtil_Random16(); + sp24.y = MathUtil_Random16(); + sp24.z = 0; + func_8140A24C(arg0, sp24); + + switch (sp2C) { + case 0: + func_81408BE0(arg0, 0.0f, -2.0f, 0.0f); + break; + + case 1: + func_81408BE0(arg0, 0.0f, 2.0f, 2.0f); + break; + + case 2: + func_81408BE0(arg0, 0.0f, 2.0f, -2.0f); + break; + } + + func_8140D5A0(arg0, 0x17); + func_8140BCA8(arg0, sp2E * 4); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_843534BC(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84353354(arg0); + break; + + case 2: + if (func_8140826C(arg0, arg0->unk_A6) != 0) { + func_81408328(arg0); + } + break; + + case 3: + func_814084D8(arg0, 0, 7, 1, 1, 0); + func_8140ADBC(arg0, 0.2f, 0.25f); + func_8140B98C(arg0, 0.5f, 0.02f); + func_8140BB44(arg0, 0, 0x20); + func_8140BBF0(arg0, 0, 0x20); + if (arg0->unk_C7 >= 6) { + func_8140BB14(arg0, 0, 0x20); + func_8140BC2C(arg0, 0x64, 0x4E); + } + func_81409CBC(arg0); + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_843535F4(unk_D_8140E720* arg0) { + s16 sp2E = func_8140C038(arg0); + s16 sp2C = sp2E % 3; + Vec3s sp24; + + func_8140B938(arg0, 0.4f); + func_8140AD8C(arg0, 1.0f); + + sp24.x = MathUtil_Random16(); + sp24.y = MathUtil_Random16(); + sp24.z = 0; + func_8140A24C(arg0, sp24); + + switch (sp2C) { + case 0: + func_81408BE0(arg0, 0.0f, -2.0f, 0.0f); + break; + + case 1: + func_81408BE0(arg0, 0.0f, 2.0f, 2.0f); + break; + + case 2: + func_81408BE0(arg0, 0.0f, 2.0f, -2.0f); + break; + } + + func_8140D5A0(arg0, 0x17); + func_8140BCA8(arg0, sp2E * 4); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_8435375C(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_843535F4(arg0); + break; + + case 2: + if (func_8140826C(arg0, arg0->unk_A6) != 0) { + func_81408328(arg0); + } + break; + + case 3: + func_814084D8(arg0, 0, 7, 1, 1, 0); + func_8140ADBC(arg0, 0.2f, 0.25f); + func_8140B98C(arg0, 0.5f, 0.02f); + func_8140BB44(arg0, 0, 0x20); + func_8140BBF0(arg0, 0, 0x20); + if (arg0->unk_C7 >= 6) { + func_8140BB14(arg0, 0, 0x20); + func_8140BC2C(arg0, 0x64, 0x4E); + } + func_81409CBC(arg0); + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_84353894(unk_D_8140E720* arg0) { + s16 sp1E; + + switch (func_8432C544()) { + case 0x4D: + sp1E = 0x43; + break; + case 0x4E: + sp1E = 5; + break; + case 0x4F: + sp1E = 0xC; + break; + case 0x93: + sp1E = 5; + break; + case 0x1C: + sp1E = 0x31; + break; + case 0x6C: + sp1E = 0x1C; + break; + case 0x7B: + sp1E = 0x1E; + break; + case 0x36: + sp1E = 0x1D; + break; + case 0x72: + sp1E = 0x1E; + break; + case 0x8B: + sp1E = 0x1E; + break; + } + func_8140D5A0(arg0, sp1E); +} + +void func_84353998(unk_D_8140E720* arg0) { + Vec3s sp28; + s16 sp26 = func_8140C038(arg0); + s16 sp24 = func_8140C058(arg0); + + func_8140B938(arg0, 1.0f); + sp28.x = MathUtil_Random16(); + sp28.y = MathUtil_Random16(); + sp28.z = 0; + func_8140A24C(arg0, sp28); + + switch (sp24) { + case 0: + func_8140959C(arg0, 0xF, 0xF, 0xF); + func_81408E90(arg0, 10.0f); + func_8140AD8C(arg0, 1.0f); + func_8140BCA8(arg0, sp26 * 2); + break; + + case 1: + func_8140959C(arg0, 0xA, 0xA, 0xA); + func_81408E90(arg0, 10.0f); + func_8140AD8C(arg0, 0.0f); + func_8140BCA8(arg0, sp26 * 2); + break; + } + + func_84353894(arg0); + func_8140BC20(arg0, 0xC8); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84353AEC(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84353998(arg0); + break; + + case 2: + if (func_8140826C(arg0, arg0->unk_A6) != 0) { + func_81408328(arg0); + } + break; + + case 3: + func_814084D8(arg0, 0, 7, 1, 2, 0); + func_8140BC2C(arg0, 0x64, 6); + func_8140B98C(arg0, 2.0f, 0.075f); + func_81409D0C(arg0); + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_84353BD0(unk_D_8140E720* arg0) { + func_8140B938(arg0, 0.2f); + func_8140D5A0(arg0, func_8140C058(arg0)); + func_8140BC20(arg0, 0xC8); + func_8140BCA8(arg0, 0x18); + arg0->unk_74 = 0.02f; + func_814081BC(arg0); +} + +void func_84353C40(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84353BD0(arg0); + break; + + case 2: + func_8140B98C(arg0, 2.0f, 0.02f); + func_8140BBF0(arg0, 0xC8, 2); + func_8140BDD0(arg0); + break; + + case 3: + func_81400760(&arg0->unk_74, 0.008f, 0.001f); + func_8140B98C(arg0, 2.0f, arg0->unk_74); + func_8140BBF0(arg0, 0xC8, 2); + func_8140BC5C(arg0, 0, 0xC); + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_84353D30(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + + func_8140B938(arg0, 1.0f); + func_8140959C(arg0, 0xF, 0xF, 0xF); + func_8140AD8C(arg0, (func_81400A78(0x32) * 0.02f) + 0.5f); + func_8140D5A0(arg0, func_8140C058(arg0)); + func_8140BC20(arg0, 0x64); + func_8140BCA8(arg0, sp26 * 4); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84353E10(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84353D30(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_8140BCA8(arg0, func_81400A78(4) + 4); + func_81408328(arg0); + } + break; + + case 3: + func_8140BDD0(arg0); + func_81409F60(arg0); + break; + + case 4: + func_814084D8(arg0, 0, 7, 1, 2, 0); + func_8140BC2C(arg0, 0x40, 4); + func_81409F60(arg0); + break; + + case 5: + func_81408150(arg0); + break; + } +} + +void func_84353F08(unk_D_8140E720* arg0) { + f32 sp24 = 0.0f; + f32 sp20 = 0.0f; + s32 sp1C = 0; + + switch (func_843081BC(arg0->unk_10)) { + case 0x9: + sp20 = 5.0f; + break; + + case 0x19: + sp20 = 0.0f; + func_8140B938(arg0, 1.0f); + break; + + case 0x37: + sp20 = 8.0f; + break; + + case 0x49: + sp1C = 1; + break; + + case 0x50: + sp1C = 1; + break; + + case 0x74: + sp20 = 5.0f; + break; + + case 0x82: + func_8140B938(arg0, 1.5f); + sp24 = -5.0f; + sp20 = 10.0f; + sp1C = 1; + break; + + case 0x83: + func_8140B938(arg0, 1.5f); + sp20 = 5.0f; + sp1C = 1; + break; + + case 0x86: + sp20 = 10.0f; + break; + + case 0x95: + sp20 = 10.0f; + break; + } + + if (sp1C == 0) { + func_8140959C(arg0, 0xA, 0, 0x23); + } else { + func_8140959C(arg0, 0xF, 0, 0x2D); + } + + func_81408ED0(arg0, 10.0f + sp24); + func_81408E90(arg0, 5.0f + sp20); +} + +void func_843540FC(unk_D_8140E720* arg0) { + Vec3s sp30; + s16 sp2E = func_8140C038(arg0); + u16 sp2C = func_8140C040(arg0); + + func_8140BFEC(arg0, 2); + func_8140BCA8(arg0, sp2E * 2); + func_8140D5A0(arg0, func_8140C058(arg0)); + + switch (sp2C) { + case 0: + func_8140B938(arg0, 1.0f); + func_8140959C(arg0, 0xA, 0xA, 0xA); + func_8140AD8C(arg0, (func_81400A78(0x32) * 0.02f) + 0.5f); + func_8140BC20(arg0, 0x64); + func_8140BF4C(arg0, 4); + break; + + case 1: + func_8140B938(arg0, 1.0f); + func_8140959C(arg0, 0xA, 0xF, 0x3C); + func_8140AD8C(arg0, (func_81400A78(0x32) * 0.04f) + 1.0f); + func_8140BC20(arg0, 0x64); + func_8140BF4C(arg0, 4); + break; + + case 2: + func_8140B938(arg0, 1.5f); + func_8140959C(arg0, 0xF, 0x14, 0x19); + func_8140AD8C(arg0, (func_81400A78(0x32) * 0.07f) + 4.0f); + func_8140BC20(arg0, 0xA0); + func_8140BCA8(arg0, sp2E); + func_8140BF4C(arg0, 0xA); + break; + + case 3: + func_8140B938(arg0, 1.0f); + func_8140959C(arg0, 0xA, 0, 0x19); + func_81408ED0(arg0, 10.0f); + func_81408E90(arg0, 5.0f); + func_8140AD8C(arg0, (func_81400A78(0xA) * 0.05f) + 0.2f); + func_8140BC20(arg0, 0xFF); + func_8140BF4C(arg0, 2); + func_8140BFEC(arg0, 2); + break; + + case 8: + func_8140B938(arg0, 1.2f); + func_84353F08(arg0); + func_8140AD8C(arg0, (func_81400A78(0xA) * 0.05f) + 0.2f); + func_8140BC20(arg0, 0xFF); + func_8140BF4C(arg0, 2); + func_8140BFEC(arg0, 2); + func_8140BCA8(arg0, sp2E); + break; + + case 12: + func_8140B938(arg0, 1.2f); + func_8140959C(arg0, 0xA, 0, 0x28); + func_81408ED0(arg0, 10.0f); + func_81408E90(arg0, 5.0f); + func_8140AD8C(arg0, (func_81400A78(0xA) * 0.05f) + 0.2f); + func_8140BC20(arg0, 0xFF); + func_8140BF4C(arg0, 2); + func_8140BFEC(arg0, 2); + func_8140BCA8(arg0, sp2E); + break; + + case 4: + func_8140B938(arg0, 0.5f); + func_8140959C(arg0, 0xA, 0, 0x14); + func_8140AD8C(arg0, (func_81400A78(0xA) * 0.05f) + 0.5f); + func_8140BC20(arg0, 0xFF); + func_8140BF4C(arg0, 2); + func_8140BFEC(arg0, 2); + break; + + case 5: + func_8140B938(arg0, 1.0f); + func_8140959C(arg0, 0xF, 0xF, 0xF); + func_8140AD8C(arg0, (func_81400A78(0x32) * 0.02f) + 1.0f); + func_8140BC20(arg0, 0x80); + func_8140BF4C(arg0, 4); + break; + + case 6: + func_8140B938(arg0, 0.5f); + func_8140959C(arg0, 5, 5, 5); + func_8140AD8C(arg0, 0.5f); + func_8140BC20(arg0, 0xC8); + func_8140BF4C(arg0, 4); + break; + + case 7: + func_8140B938(arg0, 0.5f); + func_8140959C(arg0, 0xA, 0, 5); + func_81408E90(arg0, 10.0f); + func_8140AD8C(arg0, (func_81400A78(0x14) * 0.02f) + 0.5f); + func_8140BC20(arg0, 0xC8); + func_8140BF4C(arg0, 4); + break; + + case 9: + func_8140B938(arg0, 1.0f); + func_8140959C(arg0, 0xA, 0, 0xA); + sp30.x = func_81400B00(0x1800) - 0x4000; + sp30.y = func_81400A78(0x10000); + sp30.z = 0; + func_8140A4F0(arg0, sp30); + func_8140AD8C(arg0, (func_81400A78(0x14) * 0.15f) + 3.0f); + func_8140B2B4(arg0); + func_8140BCA8(arg0, sp2E); + func_8140BF4C(arg0, 0xA); + break; + + case 10: + func_8140B938(arg0, 0.8f); + func_8140959C(arg0, 0xF, 0, 0xF); + sp30.x = func_81400B00(0x1000) - 0x4000; + sp30.y = func_81400A78(0x10000); + sp30.z = 0; + func_8140A4F0(arg0, sp30); + func_8140AD8C(arg0, (func_81400A78(0x14) * 0.15f) + 4.0f); + func_8140B2B4(arg0); + func_8140BCA8(arg0, 0); + func_8140BF4C(arg0, 0xA); + break; + + case 11: + func_8140B938(arg0, 0.05f); + func_8140959C(arg0, 0xA, 0, 0xA); + sp30.x = func_81400B00(0x1000) - 0x4000; + sp30.y = func_81400A78(0x10000); + sp30.z = 0; + func_8140A4F0(arg0, sp30); + func_8140AD8C(arg0, (func_81400A78(0x14) * 0.3f) + 6.0f); + func_8140B2B4(arg0); + func_8140BC20(arg0, 0xFF); + func_8140BCA8(arg0, sp2E); + func_8140BF4C(arg0, 0xA); + break; + } + + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84354A10(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_843540FC(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + } + break; + + case 3: + func_814084D8(arg0, 0, 7, 1, arg0->unk_B0, 0); + func_8140BC2C(arg0, 0x40, arg0->unk_AE); + func_81409F60(arg0); + break; + + case 4: + func_81408150(arg0); + break; + } +} + +void func_84354ADC(unk_D_8140E720* arg0) { + f32 sp1C = 50.0f; + f32 sp18 = 30.0f; + + switch (func_843081BC(arg0->unk_10)) { + case 3: + sp1C = 40.0f; + break; + + case 0x5F: + sp1C = 25.0f; + break; + + case 0x67: + sp1C = 35.0f; + break; + + case 0x71: + sp18 = 35.0f; + break; + + case 0x73: + sp1C = 40.0f; + break; + + case 0x82: + sp1C = 20.0f; + break; + + case 0x83: + sp1C = 30.0f; + break; + } + + func_81408ED0(arg0, sp1C); + func_81408E90(arg0, sp18); + func_8140ADA4(arg0, 0.4f); +} + +void func_84354BE4(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_843540FC(arg0); + func_84354ADC(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + func_81408A1C(arg0); + func_8140BCA8(arg0, 0x14); + } + break; + + case 3: + func_814083FC(arg0, 0, 7, 1, 2, 0); + func_8140BC2C(arg0, 0x40, 2); + func_81409FD8(arg0); + func_81409F00(arg0, 10.0f); + func_8140BDD0(arg0); + break; + + case 4: + func_81408150(arg0); + break; + } + + switch (arg0->unk_B8) { + case 1: + func_8140AE40(arg0, 1.0f, 0.1f); + if (func_81408A78(arg0, 4) != 0) { + func_81408A68(arg0); + func_8140ADA4(arg0, 0.2f); + } + break; + + case 2: + func_8140AE40(arg0, -0.5f, 0.2f); + break; + } +} + +void func_84354D58(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_843540FC(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + } + break; + + case 3: + func_814084D8(arg0, 0, 7, 1, arg0->unk_B0, 0); + func_8140BC2C(arg0, 0x40, arg0->unk_AE); + break; + + case 4: + func_81408150(arg0); + break; + } + + if (func_8140819C(arg0) != 0) { + func_8140B0A4(arg0, -2.0f, 0.3f); + func_81409BDC(arg0); + } +} + +void func_84354E44(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_843540FC(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + } + break; + + case 3: + if (arg0->unk_2C.y < 0.0f) { + func_81408150(arg0); + } + break; + } + + if (func_8140819C(arg0) != 0) { + func_8140B0A4(arg0, -10.0f, 0.8f); + func_81409BDC(arg0); + } +} + +void func_84354F0C(unk_D_8140E720* arg0) { + UNUSED s32 pad; + + func_8140C038(arg0); + func_8140C048(arg0); + func_8140D5A0(arg0, func_8140C058(arg0)); + func_8140B938(arg0, 0.5f); + func_8140A52C(arg0, func_81400A78(0x10000), func_81400A78(0x10000), 0); + func_8140AD8C(arg0, 0.75f); + func_8140BC20(arg0, 0xFF); + func_814081BC(arg0); +} + +void func_84354FA8(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84354F0C(arg0); + break; + + case 2: + func_814084D8(arg0, 0, 7, 1, 2, 0); + func_8140BC2C(arg0, 0x80, 8); + func_81409D0C(arg0); + break; + + case 3: + func_81408150(arg0); + break; + } +} + +void func_84355040(unk_D_8140E720* arg0) { + Vec3s sp28; + s16 sp26 = func_8140C058(arg0); + + func_8140C038(arg0); + sp28.x = func_81400B28(0x1000, -0x2000); + sp28.y = func_81400B28(0x1000, 0x8000); + sp28.z = 0; + func_8140A4F0(arg0, sp28); + func_8140B938(arg0, 0.05f); + func_8140B95C(arg0, 0.25f); + func_8140B974(arg0, 0.02f); + func_8140D5A0(arg0, sp26); + func_8140BCA8(arg0, 8); + func_8140AD8C(arg0, (func_81400A78(8) * 0.25f) + 2.0f); + func_8140B2B4(arg0); + func_814081BC(arg0); +} + +void func_84355164(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84355040(arg0); + break; + + case 2: + func_814084D8(arg0, 1, 7, 1, 2, 0); + if (func_8140BDAC(arg0) != 0) { + func_8140BC2C(arg0, 0x64, 0x10); + } + break; + + case 3: + func_81408150(arg0); + break; + } + + if (func_8140819C(arg0) != 0) { + func_8140BA1C(arg0); + func_8140B0A4(arg0, -1.5f, 0.1f); + func_81409BDC(arg0); + } +} + +void func_84355240(unk_D_8140E720* arg0) { + switch (arg0->unk_A6) { + case 0: + func_81408BE0(arg0, 0.0f, -5.0f, -10.0f); + break; + + case 1: + func_81408BE0(arg0, 0.0f, 8.0f, 8.0f); + break; + + case 2: + func_81408BE0(arg0, 0.0f, 3.0f, 0.0f); + break; + + case 3: + func_81408BE0(arg0, 0.0f, -3.0f, 5.0f); + break; + } + + func_8140BCA8(arg0, 6); + func_814081BC(arg0); +} + +void func_84355330(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84355240(arg0); + break; + + case 2: + func_8432D844(arg0, func_84355164, &D_843861D0[0x50], 1); + func_8140BDD0(arg0); + break; + + case 3: + func_81408150(arg0); + break; + } +} + +void func_843553B4(void) { +} + +void func_843553BC(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_843540FC(arg0); + break; + + case 2: + func_814084D8(arg0, 1, 7, 1, 2, 0); + if (func_8140BDAC(arg0) != 0) { + func_8140BC2C(arg0, 0x64, 0x10); + } + break; + + case 3: + func_81408150(arg0); + break; + } + + if (func_8140819C(arg0) != 0) { + func_8140BA1C(arg0); + func_8140B0A4(arg0, -1.5f, 0.2f); + func_81409BDC(arg0); + } +} + +void func_84355498(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C058(arg0); + + func_8140B938(arg0, 0.2f); + func_81408E90(arg0, 5.0f); + func_8140D5A0(arg0, sp26); + func_8140BC20(arg0, 0x40); + func_814081BC(arg0); +} + +void func_84355500(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84355498(arg0); + break; + + case 2: + func_8140B98C(arg0, 8.0f, 0.1f); + func_8140BC2C(arg0, 0xFF, 4); + break; + + case 3: + func_81408158(arg0); + break; + } +} + +void func_84355584(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + s16 sp24 = func_8140C058(arg0); + + func_8140AD8C(arg0, 100.0f); + func_8140ADA4(arg0, 3.0f); + func_8140A094(arg0, 2.0f); + func_8140A3D8(arg0, 0x400); + func_8140D5A0(arg0, sp24); + func_8140B938(arg0, 0.5f - (sp26 * 0.04f)); + func_8140BC20(arg0, (0xFF - (sp26 * 0x10)) & 0xFF); + func_8140BCA8(arg0, sp26 + 1); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84355670(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84355584(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + func_8140BCA8(arg0, 0x18); + } + break; + + case 3: + if ((func_8140BDAC(arg0) != 0) && (func_8140B98C(arg0, 0.0f, 0.05f) != 0)) { + func_814081BC(arg0); + } + break; + + case 4: + func_81408158(arg0); + break; + } + + if (func_81408368(arg0) != 0) { + func_8140AE00(arg0, 0.0f); + func_8140A4C8(arg0); + func_81409C94(arg0); + func_81409B18(arg0, 0.0f); + func_8140BBC0(arg0, 0xFF, 4); + func_8140BBF0(arg0, 0xFF, 4); + } +} + +void func_84355794(unk_D_8140E720* arg0) { + func_8140C038(arg0); + func_8140A2B8(arg0, func_81400A78(0x10000)); + func_81409900(arg0, func_81400B4C(0x28, 0x28)); + func_8432D844(arg0, func_84355670, &D_843861D0[0x44], 5); + func_814081BC(arg0); +} + +void func_8435581C(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84355794(arg0); + break; + + case 2: + func_81408158(arg0); + break; + } +} + +void func_8435586C(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + + func_8140BAC8(arg0, 0xDC, 0xFF, 0xFF); + func_8140D568(arg0, 0x35); + arg0->unk_1C = (sp26 * 0.05f) + 0.5f; + func_8140AD8C(arg0, 2.0f); + func_8140BC20(arg0, (0xFF - (sp26 << 5)) & 0xFF); + func_8140BCA8(arg0, sp26 + 1); + func_814083E8(arg0, 0xF); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_8435593C(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_8435586C(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + func_81401020(&arg0->unk_7C, arg0->unk_50, D_84390348, arg0->unk_74); + } + break; + + case 3: + func_8140B14C(arg0, 1.5f); + if (func_8140826C(arg0, 4) != 0) { + func_8140AD8C(arg0, 10.0f); + func_8140BCA8(arg0, func_81401020(&arg0->unk_7C, arg0->unk_50, D_84390348, arg0->unk_74)); + } + break; + + case 4: + func_8140B98C(arg0, 0.1f, 0.02f); + func_8140BAE4(arg0, 0xFF, 4); + func_8140BB90(arg0, 0xFF, 8); + func_8140BBF0(arg0, 0xFF, 8); + func_8140BDD0(arg0); + break; + + case 5: + func_81408158(arg0); + break; + } + + if (func_81408368(arg0) != 0) { + func_81409BDC(arg0); + } +} + +void func_84355B08(unk_D_8140E720* arg0) { + s16 sp26 = func_8140C038(arg0); + + func_8140B938(arg0, 0.5f); + func_81409930(arg0, 100.0f); + func_8140BCA8(arg0, sp26 + 1); + func_8140D530(arg0, 0xA); + func_8140D568(arg0, 0x35); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84355B8C(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84355B08(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + } + break; + + case 3: + if (func_814084D8(arg0, 0, 0xF, 2, 1, 0) != 0) { + func_8432D844(arg0, func_8435593C, &D_843861D0[0x26], 5); + } + break; + + case 4: + func_81408158(arg0); + break; + } +} + +void func_84355C54(unk_D_8140E720* arg0) { + f32 sp24; + s16 sp22 = func_8140C038(arg0); + + sp24 = (sp22 + 15.0f) / 20.0f; + if (sp24 >= 1.0f) { + sp24 = 1.0f; + } + + func_8140B938(arg0, sp24); + func_8140B95C(arg0, 8.0f * sp24); + func_8140B974(arg0, 0.35f * sp24); + func_81408E90(arg0, 10.0f); + func_814083E8(arg0, 0xF); + func_8140D530(arg0, 0xA); + func_8140D568(arg0, 0x35); + func_8140BC20(arg0, 0xFF); + func_8140BCA8(arg0, sp22 * 8); + func_81408348(arg0); + func_814081BC(arg0); +} + +void func_84355D70(unk_D_8140E720* arg0) { + switch (arg0->unk_B2) { + case 1: + func_84355C54(arg0); + break; + + case 2: + if (func_8140BDD0(arg0) != 0) { + func_81408328(arg0); + } + break; + + case 3: + func_8140826C(arg0, 0xC); + break; + + case 4: + func_8140BC5C(arg0, 0x20, 0x20); + break; + + case 5: + func_81408158(arg0); + break; + } + + if (func_81408368(arg0) != 0) { + func_8140BA1C(arg0); + func_8140BBF0(arg0, 0, 0x10); + func_8140BBC0(arg0, 0, 8); + } +} + +void func_84355E58(void) { + func_8432EC28(0, func_843529D8, &D_843861D0[0x34], 0, 1, 0x11, 7, 0, 7); + func_8432EC28(2, func_84351984, &D_843861D0[0x3D], 0, 8, 0x11, 7, 1, 0); +} + +void func_84355EF0(void) { + func_8432EC28(0, func_843529D8, &D_843861D0[0x34], 0, 1, 0x11, 7, 0, 6); + func_8432EC28(2, func_84351984, &D_843861D0[0x3D], 0, 8, 0x11, 7, 1, 0); +} + +void func_84355F88(void) { + func_8432EC28(0, func_843529D8, &D_843861D0[0x34], 0, 1, 0x11, 9, 0, 8); + func_8432EC28(2, func_84351984, &D_843861D0[0x3D], 0, 8, 0x11, 9, 2, 0); +} + +void func_84356020(void) { + func_8432EC28(0, func_843529D8, &D_843861D0[0x34], 0, 1, 0x11, 9, 0, 6); + func_8432EC28(2, func_84351984, &D_843861D0[0x3D], 0, 8, 0x11, 9, 0, 0); +} + +void func_843560B4(void) { + func_8432EC28(0, func_843529D8, &D_843861D0[0x34], 0, 1, 0x11, 9, 0, 0x10); + func_8432EC28(2, func_84351984, &D_843861D0[0x3D], 0, 8, 0x11, 9, 0, 0); +} + +void func_84356148(void) { + func_8432EC28(0, func_84353098, &D_843861D0[0x34], 0, 1, 0x11, 9, 3, 0); +} + +void func_843561A0(void) { + func_8432EC28(0, func_84353098, &D_843861D0[0x34], 0, 1, 0x11, 9, 4, 0); +} + +void func_843561F8(void) { + func_8432EC28(0, func_843529D8, &D_843861D0[0x34], 0, 7, 0x11, 9, 1, 0xC); +} + +void func_84356254(void) { + s32 temp_s1 = D_843902E2 & 0xFF; + + func_8432ECA0(0, 8, 6, func_8435226C, &D_843861D0[0x42], 0, 8, 0x11, temp_s1, 0x18, 2); + func_8432ECA0(1, 8, 6, func_8435226C, &D_843861D0[0x42], 0, 8, 0x11, temp_s1, 0x18, 2); + func_8432ECA0(2, 8, 6, func_8435226C, &D_843861D0[0x42], 0, 8, 0x11, temp_s1, 0x18, 2); + func_8432ECA0(4, 8, 6, func_8435226C, &D_843861D0[0x42], 0, 8, 0x11, temp_s1, 0x18, 2); + func_8432ECA0(0, 6, 0xC, func_84350FC0, &D_843861D0[0x4A], 0, 2, 0x11, temp_s1, 1, 0); + func_8432ECA0(1, 6, 0xA, func_84350FC0, &D_843861D0[0x4A], 0, 2, 0x11, temp_s1, 1, 0); +} + +void func_8435643C(void) { + UNUSED s32 pad; + + func_8432EC28(0, func_843529D8, &D_843861D0[0x34], 0, 1, 0x11, 9, 3, 5); + func_8432EC28(2, func_84350FC0, &D_843861D0[0x3D], 0, 8, 0x10, 0x64, 0, 0); + func_8432EC28(3, func_84350FC0, &D_843861D0[0x3D], 0, 8, 0x10, 0x64, 0, 0); + func_8432EC28(4, func_8435226C, &D_843861D0[0x42], 0, 8, 9, 0, 0x18, 0); + func_8432EC28(8, func_8435226C, &D_843861D0[0x42], 0, 4, 9, 0, 0x18, 0); + func_8432EC28(0xC, func_8435226C, &D_843861D0[0x42], 0, 4, 9, 0, 0x18, 0); + func_8432F2C8(0, 0x35, 0xE0, 0, 0x20); +} + +void func_843565DC(void) { + func_8432EC28(0, func_843529D8, &D_843861D0[0x34], 0, 1, 0x11, 9, 3, 5); + func_8432EC28(4, func_843526A8, &D_843861D0[0x40], 0, 1, 0x10, 0x64, 0, 0); + func_8432ECA0(0, 4, 5, func_8433CCFC, &D_843861D0[0x11], 8, 4, 2, 0, 0, 0); + func_8432EE5C(0, 0, 0x40, 0xA, 0xC8); + func_8432F2C8(0, 0x19, 0xE1, 0, 0x40); +} + +void func_843566F4(void) { + func_8432EC28(0, func_84351144, &D_843861D0[0x34], 0, 5, 0x11, D_843902E2, 0, 0); +} + +void func_8435674C(void) { + func_8432ECA0(0, 3, 2, func_84350DAC, &D_843861D0[0x3F], 0, 0x10, 0xA, 0, 0x11, 0); + func_8432ECA0(0x28, 3, 2, func_84350DAC, &D_843861D0[0x3F], 0, 0x10, 0xA, 0, 0x11, 0); +} + +void func_843567F4(void) { + func_8432EC28(0, func_84352E64, &D_843861D0[0x34], 0, 1, 0x11, 9, 0, 0); + func_8432EC28(0, func_843512AC, &D_843861D0[0x36], 0, 1, 0xA, 0, 0, 0); + func_8432ECA0(4, 3, 2, func_84350DAC, &D_843861D0[0x3F], 0, 0x10, 0xA, 0, 0x11, 0); +} + +void func_843568C8(void) { + func_8432EC28(0, func_84352E64, &D_843861D0[0x34], 0, 5, 0x11, 0x64, 9, 0); + func_8432EC28(8, func_843512AC, &D_843861D0[0x36], 0, 1, 0xA, 0, 0, 0); + func_8432ECA0(0xC, 3, 2, func_84350DAC, &D_843861D0[0x3F], 0, 0x10, 0xA, 0, 0x11, 0); +} + +void func_843569A0(void) { + func_8432EC28(0, func_84352E64, &D_843861D0[0x34], 0, 5, 0xA, 0, 0xA, 0); + func_8432EC28(8, func_843512AC, &D_843861D0[0x36], 0, 1, 0xA, 0, 0, 0); + func_8432ECA0(0xC, 3, 2, func_84350DAC, &D_843861D0[0x3F], 0, 0x10, 0xA, 0, 0x11, 0); +} + +void func_84356A74(void) { + func_8432EC28(0, func_84352E64, &D_843861D0[0x34], 0, 7, 0xA, 0, 0xB, 0); +} + +void func_84356AC8(void) { + func_8432ED0C(0, 8, 0x22); +} + +void func_84356AF0(void) { + func_8432EC28(0xC, func_8435226C, &D_843861D0[0x42], 0, 8, 9, 0, 0x17, 1); + func_8432EC28(0x12, func_8435226C, &D_843861D0[0x42], 0, 0xA, 9, 0, 0x17, 1); + func_8432EC28(0x20, func_8435226C, &D_843861D0[0x42], 0, 5, 9, 0, 0x17, 1); + func_8432EC28(0, func_84351D20, &D_8140E460, 0, 2, 9, 0, 0, 0); + func_8432EC28(3, func_84351D20, &D_8140E460, 0, 2, 9, 0, 0, 0); + func_8432EC28(5, func_84351D20, &D_8140E460, 0, 2, 9, 0, 0, 0); + func_8432EC28(8, func_84351D20, &D_8140E460, 0, 2, 9, 0, 0, 0); +} + +void func_84356CA4(void) { + func_8432ECA0(0, 3, 2, func_84350DAC, &D_843861D0[0x3F], 0, 0x10, 0xA, 0, 0x11, 0); +} + +void func_84356D04(void) { + func_8432ECA0(0, 3, 2, func_8435043C, &D_843861D0[0x4A], 0, 3, 0x11, D_843902E2, 0x11, 0); + func_8432ECA0(0, 4, 2, func_84350634, &D_843861D0[0x4A], 0, 2, 0x11, D_843902E2, 0x11, 0); +} + +void func_84356DBC(void) { + UNUSED s32 pad; + + func_8432EC28(0, func_8434F554, &D_843861D0[0x29], 0, 1, 0x10, D_843902E2, 0xB, 0); + func_8432EC28(4, func_8434F554, &D_843861D0[0x29], 0, 1, 0x10, D_843902E2, 0xB, 1); + func_8432EC28(0xA, func_8434F554, &D_843861D0[0x29], 0, 1, 0x10, D_843902E2, 0xB, 2); + func_8432EC28(0x1E, func_8434FBE4, &D_843861D0[0x41], 0, 1, 0x18, 0, 0xF, 0); + func_8432EDE8(0x23, 0, 0x10, 0x14); +} + +void func_84356EF4(void) { + func_8432EE5C(0, 2, 0x10, 0x14, 0xFF); + func_8432EC28(3, func_8434FF40, &D_843861D0[0x2A], 0, 1, 0x10, D_843902E2, 0x10, 2); + func_8432EC28(3, func_8434FD6C, &D_843861D0[0x41], 0, 1, 0x18, 0, 0xF, 0); +} + +void func_84356FAC(void) { + s16 tmp = func_843081BC(D_843902EC); + + if (tmp == 0x7B) { + func_84356DBC(); + return; + } + + func_8432EC28(0, func_8434F554, &D_843861D0[0x29], 0, 3, 0x10, D_843902E2, 0xB, 0); + func_8432EC28(4, func_8434F554, &D_843861D0[0x29], 0, 3, 0x10, D_843902E2, 0xB, 1); + func_8432EC28(0xA, func_8434F554, &D_843861D0[0x29], 0, 3, 0x10, D_843902E2, 0xB, 2); + func_8432EC28(0x1E, func_8434FBE4, &D_843861D0[0x28], 0, 1, 0x18, 0, 0xF, 0); + func_8432EDE8(0x23, 0, 0x10, 0x14); +} + +void func_84357110(void) { + s16 tmp = func_843081BC(D_843902EC); + + if (tmp == 0x7B) { + func_84356EF4(); + return; + } + + func_8432EE5C(0, 2, 0x10, 0x14, 0xFF); + func_8432EC28(3, func_8434FF40, &D_843861D0[0x2A], 0, 1, 0x10, D_843902E2, 0x10, 0); + func_8432EC28(3, func_8434FF40, &D_843861D0[0x2A], 0, 1, 0x10, D_843902E2, 0x10, 1); + func_8432EC28(3, func_8434FF40, &D_843861D0[0x2A], 0, 1, 0x10, D_843902E2, 0x10, 2); + func_8432EC28(3, func_8434FD6C, &D_843861D0[0x28], 0, 1, 0x18, 0, 0xF, 0); +} + +void func_8435727C(void) { + UNUSED s16 pad; + s16 sp3C = func_843081BC(D_843902EC); + s16 sp3A = 3; + + if (sp3C == 0x7B) { + sp3A = 1; + } + + func_8432EC28(0, func_8434F554, &D_843861D0[0x29], 0, sp3A, 0x10, D_843902E2, 0xB, 0); + func_8432EC28(4, func_8434F554, &D_843861D0[0x29], 0, sp3A, 0x10, D_843902E2, 0xB, 1); + func_8432EC28(0xA, func_8434F554, &D_843861D0[0x29], 0, sp3A, 0x10, D_843902E2, 0xB, 2); + + if (sp3C == 0x7B) { + func_8432EC28(0x1E, func_8434FBE4, &D_843861D0[0x41], 0, 1, 0x18, 0, 0xF, 0); + } else { + func_8432EC28(0x1E, func_8434FBE4, &D_843861D0[0x28], 0, 1, 0x18, 0, 0xF, 0); + } + func_8432EDE8(0x23, 0, 0x10, 0x14); +} + +void func_8435742C(void) { + s16 tmp = func_843081BC(D_843902EC); + + if (tmp == 0x7B) { + func_8432EC28(0, func_8434FBE4, &D_843861D0[0x41], 0, 1, 0x18, 0, 0xF, 0); + } else { + func_8432EC28(0, func_8434FBE4, &D_843861D0[0x28], 0, 1, 0x18, 0, 0xF, 0); + } + func_8432EE5C(5, 0, 8, 0x14, 0x80); +} + +void func_843574FC(void) { + s16 tmp = func_843081BC(D_843902EC); + + if (tmp == 0x7B) { + func_8432EE5C(0, 2, 8, 0x14, 0x80); + func_8432EC28(3, func_84350100, &D_843861D0[0x2A], 0, 1, 0x10, D_843902E2, 0x10, 2); + func_8432EC28(3, func_8434FD6C, &D_843861D0[0x41], 0, 1, 0x18, 0, 0xF, 0); + } else { + func_8432EE5C(0, 2, 8, 0x14, 0x80); + func_8432EC28(3, func_84350100, &D_843861D0[0x2A], 0, 1, 0x10, D_843902E2, 0x10, 0); + func_8432EC28(3, func_84350100, &D_843861D0[0x2A], 0, 1, 0x10, D_843902E2, 0x10, 1); + func_8432EC28(3, func_84350100, &D_843861D0[0x2A], 0, 1, 0x10, D_843902E2, 0x10, 2); + func_8432EC28(3, func_8434FD6C, &D_843861D0[0x28], 0, 1, 0x18, 0, 0xF, 0); + } +} + +void func_84357700(void) { + UNUSED s32 pad; + + func_8432EC28(0, func_8434F554, &D_843861D0[0x29], 0, 1, 0x10, D_843902E2, 0xD, 0); + func_8432EC28(4, func_8434F554, &D_843861D0[0x29], 0, 1, 0x10, D_843902E2, 0xD, 1); + func_8432EC28(0xA, func_8434F554, &D_843861D0[0x29], 0, 1, 0x10, D_843902E2, 0xD, 2); + func_8432EC28(0x1E, func_8434FBE4, &D_843861D0[0x41], 0, 1, 0x18, 0, 0xD, 1); + func_8432EDE8(0x23, 0, 0x10, 0x29); +} + +void func_8435783C(void) { + UNUSED s32 pad; + + func_8432EE5C(0, 2, 0x10, 0x29, 0xFF); + func_8432EC28(3, func_8434FF40, &D_843861D0[0x2A], 0, 1, 0x10, D_843902E2, 0xD, 2); + func_8432EC28(3, func_8434FD6C, &D_843861D0[0x41], 0, 1, 0x18, 0, 0xD, 1); + func_8432ECA0(0, 1, 5, func_84340940, &D_843861D0[0x2B], 0, 2, 0xE, 0, 0, 0); + func_8432ECA0(0, 1, 5, func_84340940, &D_843861D0[0x2B], 0, 2, 0xE, 0, 0, 0); + func_8432ECA0(0, 2, 0xF, func_84340940, &D_843861D0[0x2B], 0, 1, 0xE, 0, 0, 0); +} + +void func_843579C0(void) { + func_8432ECA0(0, 1, 0x24, func_843534BC, &D_843861D0[0x46], 0, 1, 0x11, D_843902E2, 0, 0); + func_8432EC28(0, func_843532B0, &D_843861D0[0x40], 0, 1, 0x10, D_843902E2, 0, 0); +} + +void func_84357A64(void) { + func_8432EC28(0, func_8434F7A4, &D_843861D0[0x29], 0, 6, 0x10, 0x64, 0, 0); +} + +void func_84357AB8(void) { + func_8432ED0C(0, 8, 0x28); +} + +void func_84357AE0(void) { + func_8432EC28(0, func_8434FA98, &D_843861D0[0x29], 0, 8, 0x10, 9, 0, 0); + func_8432EC28(0x10, func_8434FA98, &D_843861D0[0x29], 0, 0xA, 0x10, 9, 0, 0); + func_8432ED0C(0x46, 4, 0xA); +} + +void func_84357B80(void) { + func_8432ED0C(0, 8, 0x17); +} + +void func_84357BA8(void) { + func_8432EB2C(0x10); + func_8432EC28(0, func_8434FA98, &D_843861D0[0x29], 0, 8, 0x10, 9, 1, 0); + func_8432EC28(0x10, func_8434FA98, &D_843861D0[0x29], 0, 8, 0x10, 9, 1, 0); + func_8432EC28(0x20, func_8434FA98, &D_843861D0[0x29], 0, 8, 0x10, 9, 1, 0); + func_8432EC28(0x30, func_8434FA98, &D_843861D0[0x29], 0, 8, 0x10, 9, 1, 0); +} + +void func_84357CC8(void) { + switch (func_8432C544()) { + case 0x4D: + func_8432F344(0, 0x64, 0x3E, 0, 0xA0, 4); + break; + + case 0x4E: + func_8432F344(0, 0x64, 0x19, 0, 0xA0, 4); + break; + + case 0x4F: + func_8432F344(0, 0x64, 0x2F, 0, 0xA0, 4); + break; + + case 0x93: + func_8432F344(0, 0x64, 0x19, 0, 0xA0, 4); + break; + + case 0x7B: + func_8432F344(0, 0x64, 0x3E, 0, 0xA0, 4); + break; + + case 0x8B: + func_8432F344(0, 0x64, 0x3E, 0, 0xA0, 4); + break; + } + func_8432EC28(0, func_84353AEC, &D_843861D0[0x47], 0, 7, 0x10, 0x64, 1, 0); +} + +void func_84357E60(void) { + func_8432ECA0(0, 2, 3, func_84350828, &D_843861D0[0x49], 0, 8, 0x11, D_843902E2, 0, 0); + func_8432ECA0(0, 3, 2, func_8435043C, &D_843861D0[0x47], 0, 6, 0x11, D_843902E2, 0x31, 0); + func_8432ECA0(0, 4, 2, func_84350634, &D_843861D0[0x47], 0, 4, 0x11, D_843902E2, 0x31, 0); +} + +void func_84357F64(void) { + func_8432EC28(0, func_84350BE4, &D_843861D0[0x49], 0, 5, 0x10, 0x64, 0, 0); + func_8432EC28(3, func_84350BE4, &D_843861D0[0x49], 0, 5, 0x10, 0x64, 0, 0); + func_8432EC28(0, func_84353AEC, &D_843861D0[0x47], 0, 7, 0x10, 0x64, 1, 0); +} + +void func_84358034(void) { + func_8432F7A0(0, 0xFF, 0x30, 6); + func_8432F7A0(0x24, 0, 0, 0xFF); + func_8432F2C8(0, 0x23, 0, 0xFF, 8); + func_8432EB2C(6); + func_8432EC28(2, func_84353C40, &D_843861D0[0x4B], 0, 1, 0xA, 0, 0x2F, 0); + func_8432ECA0(0, 8, 4, func_84353E10, &D_843861D0[0x3D], 0, 3, 9, 0, 0x30, 0); +} + +void func_8435811C(void) { + func_8432ED0C(0, 0x20, 6); + func_8432F2C8(8, 0xA, 0, 0xFF, 0x40); + func_8432EF40(0xC, 5, 0x10, 0xA); + func_8432EC28(0xC, func_843529D8, &D_843861D0[0x34], 0, 4, 9, 0, 0x18, 0xD); + func_8432EB2C(0x21); + func_8432EDE8(0, 0, 0x10, 0xA); + func_8432ED0C(0, 0x10, 0xA); + func_8432F2C8(0, 0xA, 0xFF, 0, 0x10); +} + +void func_843581FC(void) { + func_8432ED0C(0, 0x20, 6); + func_8432F2C8(8, 0xA, 0, 0xFF, 0x40); + func_8432EDE8(0, 0, 0x10, 0xA); + func_8432EB2C(0x21); + func_8432ED0C(0, 0x10, 0xA); + func_8432F2C8(0, 0xA, 0xFF, 0, 0x10); +} + +void func_84358288(void) { + UNUSED s32 pad; + + func_8432F344(0, 1, 0xC, 0, 0xC8, 0x10); + func_8432ECA0(6, 4, 0xE, func_84354A10, &D_843861D0[0x3D], 0, 1, 0x11, 7, 0x1A, 0); + func_8432ECA0(7, 8, 7, func_84354A10, &D_843861D0[0x3D], 0, 1, 0x11, 7, 0x1A, 0); + func_8432EC28(0, func_84334154, &D_843861D0[0x4F], 0, 0x20, 7, 0, 0, 0); + func_8434DFC0(); +} + +void func_8435839C(void) { + func_8432F344(0, 1, 0xC, 0, 0xC8, 4); + func_8432ECA0(4, 3, 2, func_84350DAC, &D_843861D0[0x3F], 0, 0x10, 0xA, 0, 0x11, 0); + func_8432ECA0(6, 4, 0xE, func_84354A10, &D_843861D0[0x3D], 0, 1, 0x11, 7, 0x33, 7); + func_8432ECA0(7, 8, 7, func_84354A10, &D_843861D0[0x3D], 0, 1, 0x11, 7, 0x33, 7); +} + +void func_843584C0(void) { + func_8432ED0C(0, 0x20, 6); + func_8434AC8C(); + func_8432ECA0(8, 3, 2, func_84350DAC, &D_843861D0[0x3F], 0, 0x10, 0xA, 0, 0x11, 0); +} + +void func_84358538(void) { + func_8432ECA0(4, 3, 2, func_84350DAC, &D_843861D0[0x3F], 0, 0x10, 0xA, 0, 0x11, 0); +} + +void func_84358598(void) { + func_8432EC28(4, func_84354A10, &D_843861D0[0x4A], 0, 8, 0xA, 0, 0x33, 1); + func_8432EC28(5, func_84354A10, &D_843861D0[0x4A], 0, 8, 0xA, 0, 0x33, 1); + func_8432EC28(6, func_84354A10, &D_843861D0[0x4A], 0, 8, 0xA, 0, 0x33, 1); + func_8432EC28(7, func_84354A10, &D_843861D0[0x4A], 0, 8, 0xA, 0, 0x33, 1); + func_8432EC28(8, func_843529D8, &D_843861D0[0x51], 0, 5, 0x11, 9, 0x17, 0xE); + func_8432EC28(0x10, func_843529D8, &D_843861D0[0x51], 0, 5, 0x11, 9, 0x17, 0xE); +} + +void func_84358738(void) { + func_8432EC28(4, func_84354A10, &D_843861D0[0x4A], 0, 8, 0xA, 0, 0x33, 1); + func_8432EC28(5, func_84354A10, &D_843861D0[0x4A], 0, 8, 0xA, 0, 0x33, 1); + func_8432EC28(6, func_84354A10, &D_843861D0[0x4A], 0, 8, 0xA, 0, 0x33, 1); + func_8432EC28(7, func_84354A10, &D_843861D0[0x4A], 0, 8, 0xA, 0, 0x33, 1); + func_8432EC28(8, func_843529D8, &D_843861D0[0x51], 0, 5, 0x11, 9, 0x17, 0xE); + func_8432EC28(0x10, func_843529D8, &D_843861D0[0x51], 0, 5, 0x11, 9, 0x17, 0xE); +} + +void func_843588D8(void) { + func_8432EC28(0, func_84354A10, &D_843861D0[0x3D], 0, 8, 0xE, 0, 0x33, 2); + func_8432EC28(0, func_84354A10, &D_843861D0[0x3D], 0, 2, 0xE, 0, 0x33, 2); + func_8432EC28(0, func_84354A10, &D_843861D0[0x3D], 0, 2, 0xE, 0, 0x33, 2); + func_8432EC28(0, func_84354A10, &D_843861D0[0x3D], 0, 2, 0xE, 0, 0x33, 2); + func_8432EC28(4, func_84354A10, &D_843861D0[0x3D], 0, 8, 0xE, 0, 0x33, 2); + func_8432EC28(8, func_84354A10, &D_843861D0[0x3D], 0, 8, 0xE, 0, 0x33, 2); +} + +void func_84358A5C(void) { + func_8432F2C8(4, 0xA, 0, 0xFF, 0x40); + func_8432F2C8(9, 0xA, 0xFF, 0, 0x40); + func_8432EC28(0, func_84354A10, &D_843861D0[0x3D], 0, 8, 0xE, 0, 0x33, 2); + func_8432EC28(1, func_84354A10, &D_843861D0[0x3D], 0, 8, 0xE, 0, 0x33, 2); + func_8432EC28(2, func_84354A10, &D_843861D0[0x3D], 0, 8, 0xE, 0, 0x33, 2); + func_8432EC28(4, func_84354A10, &D_843861D0[0x3D], 0, 8, 0xE, 0, 0x33, 2); + func_8432EC28(4, func_84354A10, &D_843861D0[0x3D], 0, 8, 0xE, 0, 0x33, 2); + func_8432EC28(8, func_84354A10, &D_843861D0[0x3D], 0, 8, 0xE, 0, 0x33, 2); +} + +void func_84358C18(s32 arg0) { + func_8432ECA0(0, 1, 4, func_8435581C, &D_8140E460, 0, 1, 2, 0, arg0, 0); + func_8432ECA0(8, 1, 4, func_8435581C, &D_8140E460, 0, 1, 2, 0, arg0, 0); + func_8432ECA0(0x10, 1, 8, func_8435581C, &D_8140E460, 0, 1, 2, 0, arg0, 0); + func_8432ECA0(0x18, 1, 8, func_8435581C, &D_8140E460, 0, 1, 2, 0, arg0, 0); + func_8432ECA0(0x20, 1, 8, func_8435581C, &D_8140E460, 0, 1, 2, 0, arg0, 0); + func_8432ECA0(0x30, 1, 8, func_8435581C, &D_8140E460, 0, 1, 2, 0, arg0, 0); + func_8432ECA0(0x3C, 1, 8, func_8435581C, &D_8140E460, 0, 1, 2, 0, arg0, 0); +} + +void func_84358DE4(void) { + func_8432ED0C(0, 8, 6); + func_84358C18(0xE); + func_8432ED0C(0x64, 0x20, 0xA); +} + +void func_84358E24(void) { + func_8432ED0C(0, 8, 6); + func_84358C18(0x17); + func_8432EC28(0xA, func_84355500, &D_843861D0[0x3C], 0x1A, 1, 5, 0, 0x33, 0); + func_8432ED0C(0x64, 0x20, 0xA); +} + +void func_84358EA0(void) { + func_8432F344(0xA, 1, 0xA, 0, 0xFF, 0x20); +} + +void func_84358EDC(void) { + func_8432ED0C(0, 8, 6); + func_84358C18(0xC); + func_8432F728(4, 0x32, 0x20, 0xA0); + func_8432ECA0(4, 8, 5, func_8435226C, &D_843861D0[0x42], 0, 8, 9, 0, 0xC, 9); +} + +void func_84358F6C(void) { + func_8432F2C8(0, 0xA, 0xFF, 0, 0x20); + func_8432ECA0(4, 2, 2, func_8435226C, &D_843861D0[0x42], 0, 8, 9, 0, 0x17, 1); +} diff --git a/src/fragments/62/fragment62_3438B0.c b/src/fragments/62/fragment62_3438B0.c index a49ab0f..bf3b51e 100644 --- a/src/fragments/62/fragment62_3438B0.c +++ b/src/fragments/62/fragment62_3438B0.c @@ -1,7 +1,43 @@ -#include "global.h" +#include "fragment62.h" +#include "src/6A40.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3438B0/func_84358FF0.s") +void func_84358FF0(void) { +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3438B0/func_84359000.s") +void func_84358FF8(void) { +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3438B0/func_843590E0.s") +void func_84359000(u8 arg0, u8 arg1, u8 arg2, u8 arg3) { + gSPDisplayList(gDisplayListHead++, D_8140DDF8); + + func_814059C8(arg0, arg1, arg2, arg3); + + gSPTextureRectangle(gDisplayListHead++, 0, 0, 0x04FC, 0x03BC, G_TX_RENDERTILE, 0, 0, 0x1000, 0x0400); + gSPDisplayList(gDisplayListHead++, D_8140DDD8); +} + +void func_843590E0(unk_D_86002F34_00C* arg0) { + func_8432CF74(arg0); + D_8140E620 = func_80005F5C(sizeof(unk_D_8140E620)); + D_8140E624 = 0; + D_843902A4 += 1; + + gSPDisplayList(gDisplayListHead++, D_8140DB30); + + func_814059C8(D_84390382, D_84390384, D_84390386, D_84390388); + func_81405A90(D_84390392, D_84390394, D_84390396, D_84390398); + func_81405A20(D_8439038A, D_8439038C, D_8439038E, D_84390390); + func_81405B00(D_8439039A, D_8439039C, D_8439039E, D_843903A0); + func_84300184(D_8439037A, D_8439037C, D_8439037E); + func_8140C204(arg0); + guOrtho(&D_8140E620->unk_5B80, 0.0f, 320.0f, 240.0f, 0.0f, -2.0f, 2.0f, 1.0f); + + gSPMatrix(gDisplayListHead++, (u32)&D_8140E620->unk_5B80 & 0x1FFFFFFF, + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + gSPDisplayList(gDisplayListHead++, D_8140DD78); + + func_81402410(); + func_8140C2D8(arg0); + + gSPDisplayList(gDisplayListHead++, D_8140DAE0); +} diff --git a/src/fragments/62/fragment62_343BA0.c b/src/fragments/62/fragment62_343BA0.c index 9f5acc6..1171a90 100644 --- a/src/fragments/62/fragment62_343BA0.c +++ b/src/fragments/62/fragment62_343BA0.c @@ -1,288 +1,1162 @@ -#include "global.h" +#include "fragment62.h" +#include "src/30640.h" +#include "src/6A40.h" +#include "include/math.h" +#include "src/math_util.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843592E0.s") +u8* D_843920C0[256]; +s16 D_843924C0[0x10]; +arg1_func_80019420* D_843924E0[40]; +static s16 D_84392580; +static s16 D_84392582; +static Mtx D_84392588; +static s16 D_843925C8; +static s16 D_843925CA; +static s16 D_843925CC; +static s16 D_843925CE; +static s16 D_843925D0; +static s16 D_843925D2; +static s16 D_843925D4; +static s16 D_843925D6; +static s16 D_843925D8; +static s16 D_843925DA; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359330.s") +static const char D_8438D3D0[] = "calc_vector_ATtoDM() normal error!!!\n"; +static const char D_8438D3F8[] = "calc_vector_ATtoDM2() normal error!!!\n"; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359338.s") +void func_843592E0(void) { +} + +void func_843592E8(void) { +} + +void func_843592F0(void) { +} + +void func_843592F8(void) { +} + +void func_84359300(void) { +} + +void func_84359308(void) { +} + +void func_84359310(void) { +} + +void func_84359318(void) { +} + +void func_84359320(void) { +} + +void func_84359328(void) { +} + +void func_84359330(UNUSED s32 arg0) { +} + +void func_84359338(UNUSED s32 arg0) { +} void func_84359340(void) { } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359348.s") +void func_84359348(void) { + func_84359000(D_8439037A, D_8439037C, D_8439037E, 0xFF); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359380.s") +void func_84359380(void) { + func_8436E920(); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843593B0.s") +void func_843593A0(void) { +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843593B8.s") +void func_843593A8(void) { +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843593C0.s") +s32 func_843593B0(void) { + return -1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843593D0.s") +s32 func_843593B8(void) { + return -1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843593F0.s") +void func_843593C0(void) { +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359410.s") +void func_843593C8(void) { +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359430.s") +void func_843593D0(Vec3f* arg0) { + func_8432FB90(arg0); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359450.s") +void func_843593F0(Vec3f* arg0) { + func_8432FBBC(arg0); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359470.s") +void func_84359410(Vec3f* arg0) { + func_8432FB90(arg0); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359490.s") +void func_84359430(Vec3f* arg0) { + func_8432FB64(arg0); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359564.s") +f32 func_84359450(void) { + return func_8432FD1C(); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359650.s") +f32 func_84359470(void) { + return func_8432FCD4(); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359684.s") +void func_84359490(f32* arg0, f32* arg1, f32* arg2, f32* arg3, f32* arg4, f32* arg5) { + Vec3f sp4C; + Vec3f sp40; + f32 sp3C; + f32 sp38; + f32 sp34; + UNUSED s32 pad[3]; + f32 sp24; + f32 sp20; + f32 sp1C; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843596DC.s") + func_843593F0(&sp4C); + func_84359410(&sp40); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843596FC.s") + sp3C = sp4C.x; + sp38 = sp4C.y; + sp34 = sp4C.z; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359750.s") + sp24 = sp40.x - sp4C.x; + sp20 = sp40.y - sp4C.y; + sp1C = sp40.z - sp4C.z; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843597AC.s") + if (sp24 == 0.0f || sp20 == 0.0f || sp1C == 0.0f) {} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843597CC.s") + func_80031B04(&sp24, &sp20, &sp1C); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359820.s") + *arg0 = sp3C; + *arg1 = sp38; + *arg2 = sp34; + *arg3 = sp24; + *arg4 = sp20; + *arg5 = sp1C; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435989C.s") +void func_84359564(f32* arg0, f32* arg1, f32* arg2, f32* arg3, f32* arg4, f32* arg5) { + Vec3f sp4C; + Vec3f sp40; + f32 sp3C; + f32 sp38; + f32 sp34; + UNUSED s32 pad[2]; + f32 tmp; + f32 sp24; + f32 sp20; + f32 sp1C; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843598BC.s") + func_843593F0(&sp4C); + func_84359410(&sp40); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359910.s") + sp3C = sp4C.x; + sp38 = sp4C.y; + sp34 = sp4C.z; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435998C.s") + tmp = sp40.y; + if (tmp < 0.0f) { + tmp = 0.0f; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843599AC.s") + sp24 = sp40.x - sp4C.x; + sp20 = tmp - sp4C.y; + sp1C = sp40.z - sp4C.z; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359A00.s") + if (sp24 == 0.0f || sp20 == 0.0f || sp1C == 0.0f) {} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359A6C.s") + func_80031B04(&sp24, &sp20, &sp1C); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359A8C.s") + *arg0 = sp3C; + *arg1 = sp38; + *arg2 = sp34; + *arg3 = sp24; + *arg4 = sp20; + *arg5 = sp1C; +} + +void func_84359650(void) { + guRotateRPY(&D_84392588, 0.0f, 0.0f, 0.0f); +} + +void func_84359684(void) { + Vec3f sp24; + f32 sp20; + + func_84359650(); + func_84359430(&sp24); + sp20 = func_84359470(); + func_8435CA70(); + func_8435CAE8(sp24.x, sp24.y, sp24.z, 40.0f, sp20, 0); +} + +s32 func_843596DC(void) { + return func_8435D8C0(); +} + +void func_843596FC(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8435DB14(gDisplayListHead); +} + +void func_84359750(void) { + Vec3f sp24; + f32 sp20; + + func_84359650(); + func_84359430(&sp24); + sp20 = func_84359450(); + func_8435CA70(); + func_8435CAE8(sp24.x, sp24.y, sp24.z, 40.0f, sp20, 1); +} + +s32 func_843597AC(void) { + return func_8435D8C0(); +} + +void func_843597CC(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8435DB14(gDisplayListHead); +} + +void func_84359820(void) { + Vec3f sp24; + f32 sp20; + + func_84359650(); + func_84359430(&sp24); + sp20 = func_84359450(); + func_8435CA70(); + func_8435CAE8(sp24.x, sp24.y, sp24.z, 40.0f, sp20, 0); + func_8435CAE8(sp24.x, sp24.y, sp24.z, 38.0f, sp20, 1); +} + +s32 func_8435989C(void) { + return func_8435D8C0(); +} + +void func_843598BC(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8435DB14(gDisplayListHead); +} + +void func_84359910(void) { + Vec3f sp24; + f32 sp20; + + func_84359650(); + func_84359430(&sp24); + sp20 = func_84359470(); + func_8435CA70(); + func_8435CAE8(sp24.x, sp24.y, sp24.z, 40.0f, sp20, 0); + func_8435CAE8(sp24.x, sp24.y, sp24.z, 38.0f, sp20, 1); +} + +s32 func_8435998C(void) { + return func_8435D8C0(); +} + +void func_843599AC(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8435DB14(gDisplayListHead); +} + +void func_84359A00(void) { + Vec3f sp1C; + + func_843593F0(&sp1C); + func_84359650(); + + if (sp1C.x < 0.0) { + func_8435EB9C(1, 0, 0x4650); + } else { + func_8435EB9C(-1, 0, 0x4650); + } +} + +s32 func_84359A6C(void) { + return func_8435EDF8(); +} + +void func_84359A8C(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8435EE78(gDisplayListHead); +} void func_84359AE0(void) { } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359AE8.s") +s32 func_84359AE8(void) { + return -1; +} void func_84359AF0(void) { } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359AF8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359C84.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359CB8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359D28.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359D7C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359DF4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359E14.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359E68.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359FE0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A014.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A084.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A0D8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A298.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A2CC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A33C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A390.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A40C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A42C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A480.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A4F8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A518.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A56C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A6F8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A72C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A79C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A7F0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A81C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A99C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A9F0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435AA1C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435AB9C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435ABF0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435AC20.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435AC40.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435AC94.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435ACC4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435ACE4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435AD38.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435AD68.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435AD88.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435ADDC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435AE08.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B048.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B0B0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B0DC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B260.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B2C8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B408.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B454.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B4A8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B580.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B5B4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B600.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B654.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B8E8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B918.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B938.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B98C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435BB64.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435BB98.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435BBEC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435BC40.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435BED8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435BF08.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435BF28.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435BF7C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435C220.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435C250.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435C270.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435C2C4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435C448.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435C478.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435C498.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435C4EC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435C790.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435C96C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435C9AC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435CA08.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435CA70.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435CAA8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435CAE8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435D1E8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435D24C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435D8C0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435D97C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435DB14.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435DED0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435E158.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435E530.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435EB9C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435EDF8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435EE78.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435FB90.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435FCD0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435FD50.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8436032C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843605C0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843606D0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8436090C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84360B10.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84360EFC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843612F8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843616B0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84361744.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84361FB0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84362084.s") +void func_84359AF8(void) { + f32 sp74; + f32 sp70; + f32 sp6C; + f32 sp68; + f32 sp64; + f32 sp60; + f32 sp5C; + UNUSED s32 pad; + s32 sp54; + + func_84359490(&sp74, &sp70, &sp6C, &sp68, &sp64, &sp60); + sp68 *= 8.0f; + sp64 *= 4.0f; + sp60 = 0.0f; + sp64 += 6.0f; + sp5C = func_84359470(); + sp54 = guRandom(); + func_84360EFC(sp74, sp70, sp6C, sp68, (((sp54 % 4) * 0.01f) + sp64) - 0.02f, + (sp60 - ((guRandom() % 5) * 0.3f)) + 0.6f, 3, 0x64, 0xC8, 0xFF, 0xC8, 0, 0x64, 0xC8, 0.1f, sp5C, + 4.0f * sp5C, 0x3C); +} + +void func_84359C84(void) { + D_843925CE = 0; + func_84359650(); + func_843605C0(); + func_84359AF8(); +} + +s32 func_84359CB8(void) { + D_843925CE++; + if (D_843925CE >= 0xB5) { + return -1; + } + + if ((D_843925CE < 0x78) && ((D_843925CE % 7) == 0)) { + func_84359AF8(); + } + return func_84361FB0(); +} + +void func_84359D28(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_84362084(gDisplayListHead); +} + +void func_84359D7C(void) { + Vec3f sp34; + f32 sp30; + + func_84359650(); + func_84359410(&sp34); + sp30 = func_84359450(); + func_84359650(); + func_8435FB90(sp34.x, sp34.y, sp34.z, sp30, 0x64, 0xC8, 0xFF, 0, 0x64, 0xC8); +} + +s32 func_84359DF4(void) { + return func_8435FD50(); +} + +void func_84359E14(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8436032C(gDisplayListHead); +} + +void func_84359E68(void) { + UNUSED s32 pad[3]; + f32 sp58; + f32 sp54; + f32 sp50; + f32 sp4C; + f32 sp48; + f32 sp44; + f32 sp40; + + sp40 = func_84359470(); + func_84359564(&sp58, &sp54, &sp50, &sp4C, &sp48, &sp44); + sp4C *= 20.0f; + sp48 *= 20.0f; + sp44 *= 20.0f; + sp58 += sp40 * (30.0f - (guRandom() % 60)); + sp54 += sp40 * (30.0f - (guRandom() % 60)); + sp50 += sp40 * (30.0f - (guRandom() % 60)); + func_84366B38(sp58, sp54, sp50, sp4C, sp48, sp44, 0xFF, 0xFF, 0, 0x3C, 0.3f, 0x1E); +} + +void func_84359FE0(void) { + D_843925D0 = 0; + func_84359650(); + func_84366A10(); + func_84359E68(); +} + +s32 func_8435A014(void) { + D_843925D0++; + if (D_843925D0 >= 0x709) { + return -1; + } + + if ((D_843925D0 < 0x6EA) && ((D_843925D0 % 3) == 0)) { + func_84359E68(); + } + + return func_84367014(); +} + +void func_8435A084(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_843670C8(gDisplayListHead); +} + +void func_8435A0D8(void) { + f32 sp74; + f32 sp70; + f32 sp6C; + f32 sp68; + f32 sp64; + f32 sp60; + f32 sp5C; + UNUSED s32 pad; + s32 sp54; + + func_84359490(&sp74, &sp70, &sp6C, &sp68, &sp64, &sp60); + sp68 *= 8.0f; + sp64 *= 4.0f; + sp60 = 0.0f; + sp64 += 6.0f; + sp5C = func_84359470(); + sp54 = guRandom(); + func_84360B10(sp74, sp70, sp6C, sp68, (((sp54 % 5) * 0.1f) + sp64) - 0.2f, + (sp60 - ((guRandom() % 5) * 0.3f)) + 0.6f, 3, 0xFF, 0xFF, 0xFF, 0x64, 0x64, 0x96, 0x96, 0.1f, sp5C, + 3.0f * sp5C, 0x3C); +} + +void func_8435A298(void) { + D_843925D2 = 0; + func_84359650(); + func_843605C0(); + func_8435A0D8(); +} + +s32 func_8435A2CC(void) { + D_843925D2++; + if (D_843925D2 >= 0xB5) { + return -1; + } + + if ((D_843925D2 < 0x78) && ((D_843925D2 % 7) == 0)) { + func_8435A0D8(); + } + + return func_84361FB0(); +} + +void func_8435A33C(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_84362084(gDisplayListHead); +} + +void func_8435A390(void) { + Vec3f sp34; + f32 sp30; + + func_84359650(); + func_84359430(&sp34); + sp30 = func_84359450(); + func_84359650(); + func_8435FB90(sp34.x, sp34.y, sp34.z, sp30, 0xFF, 0xFF, 0xFF, 0x64, 0x96, 0x96); +} + +s32 func_8435A40C(void) { + return func_8435FD50(); +} + +void func_8435A42C(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8436032C(gDisplayListHead); +} + +void func_8435A480(void) { + Vec3f sp34; + f32 sp30; + + func_84359650(); + func_84359430(&sp34); + sp30 = func_84359450(); + func_84359650(); + func_8435FB90(sp34.x, sp34.y, sp34.z, sp30, 0xFF, 0xFF, 0x64, 0x96, 0x96, 0); +} + +s32 func_8435A4F8(void) { + return func_8435FD50(); +} + +void func_8435A518(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8436032C(gDisplayListHead); +} + +void func_8435A56C(void) { + f32 sp74; + f32 sp70; + f32 sp6C; + f32 sp68; + f32 sp64; + f32 sp60; + f32 sp5C; + UNUSED s32 pad; + s32 sp54; + + func_84359490(&sp74, &sp70, &sp6C, &sp68, &sp64, &sp60); + sp68 *= 8.0f; + sp64 *= 4.0f; + sp60 = 0.0f; + sp64 += 6.0f; + sp5C = func_84359470(); + sp54 = guRandom(); + func_84360EFC(sp74, sp70, sp6C, sp68, (((sp54 % 4) * 0.01f) + sp64) - 0.02f, + (sp60 - ((guRandom() % 5) * 0.3f)) + 0.6f, 3, 0xFF, 0xFF, 0x64, 0xFF, 0x96, 0x96, 0, 0.1f, sp5C, + 4.0f * sp5C, 0x3C); +} + +void func_8435A6F8(void) { + D_843925D6 = 0; + func_84359650(); + func_843605C0(); + func_8435A56C(); +} + +s32 func_8435A72C(void) { + D_843925D6++; + if (D_843925D6 >= 0xB5) { + return -1; + } + + if ((D_843925D6 < 0x78) && ((D_843925D6 % 7) == 0)) { + func_8435A56C(); + } + + return func_84361FB0(); +} + +void func_8435A79C(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_84362084(gDisplayListHead); +} + +void func_8435A7F0(void) { + D_843925D8 = 0; + func_84359650(); + func_8436B140(); +} + +s32 func_8435A81C(void) { + UNUSED s32 pad[1]; + Vec3f sp60; + f32 sp5C; + f32 sp58; + f32 sp54; + UNUSED s32 pad2[2]; + f32 var_fv0; + f32 sp44; + + D_843925D8++; + if (!(D_843925D8 & 1)) { + sp44 = func_84359470(); + func_843593F0(&sp60); + sp5C = (((guRandom() % 50) - 0x19) * sp44) + sp60.x; + sp58 = (((guRandom() % 60) - 0x1E) * sp44) + sp60.y; + sp54 = (((guRandom() % 50) - 0x19) * sp44) + sp60.z; + var_fv0 = 10.0f; + if (sp5C > 0.0) { + var_fv0 = -var_fv0; + } + func_8436B270(sp5C, sp58, sp54, var_fv0, 0.0f, 0.0f, 0xFF, 0xFF, 0xFF, 0x64, 0.3f, 1.0f, 4.0f, 0x1E); + } + func_8436B8D8(); + return 0; +} + +void func_8435A99C(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8436B974(gDisplayListHead); +} + +void func_8435A9F0(void) { + D_843925DA = 0; + func_84359650(); + func_8436A410(); +} + +s32 func_8435AA1C(void) { + UNUSED s32 pad[1]; + Vec3f sp60; + f32 sp5C; + f32 sp58; + f32 sp54; + UNUSED s32 pad2[2]; + f32 var_fv0; + f32 sp44; + + D_843925DA++; + if (!(D_843925DA & 1)) { + sp44 = func_84359470(); + func_843593F0(&sp60); + sp5C = (((guRandom() % 50) - 0x19) * sp44) + sp60.x; + sp58 = (((guRandom() % 60) - 0x1E) * sp44) + sp60.y; + sp54 = (((guRandom() % 50) - 0x19) * sp44) + sp60.z; + var_fv0 = 10.0f; + if (sp5C > 0.0) { + var_fv0 = -var_fv0; + } + func_8436A540(sp5C, sp58, sp54, var_fv0, 0.0f, 0.0f, 0xFF, 0xFF, 0xFF, 0x64, 0.3f, 1.0f, 4.0f, 0x1E); + } + func_8436ABA8(); + return 0; +} + +void func_8435AB9C(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8436AC44(gDisplayListHead); +} + +void func_8435ABF0(void) { + Vec3f sp1C; + + func_84359650(); + func_843593F0(&sp1C); + func_843638E0(0x708); +} + +s32 func_8435AC20(void) { + return func_843640A4(); +} + +void func_8435AC40(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_84364428(gDisplayListHead); +} + +void func_8435AC94(void) { + Vec3f sp1C; + + func_84359650(); + func_843593F0(&sp1C); + func_84364A18(0x708); +} + +s32 func_8435ACC4(void) { + return func_84365288(); +} + +void func_8435ACE4(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_84365558(gDisplayListHead); +} + +void func_8435AD38(void) { + Vec3f sp1C; + + func_84359650(); + func_843593F0(&sp1C); + func_84365A10(0x708); +} + +s32 func_8435AD68(void) { + return func_843661D0(); +} + +void func_8435AD88(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_84366560(gDisplayListHead); +} + +void func_8435ADDC(void) { + D_84392580 = 0; + func_84359650(); + func_84367CB0(); +} + +s32 func_8435AE08(void) { + s32 var_v1; + Vec3f sp68; + f32 sp64; + f32 sp60; + f32 sp5C; + f32 sp58; + f32 sp54; + f32 sp50; + f32 sp4C; + + D_84392580++; + if (D_84392580 >= 0x32) { + return -1; + } + + if (D_84392580 < 4) { + func_84359430(&sp68); + sp64 = sp68.x; + sp60 = sp68.y; + sp5C = sp68.z; + sp58 = 1.0f; + sp4C = (((D_84392580 % 3) * M_PI_F) / 3.0) + 0.5235987901687622; + sp54 = (f64)__sinf(sp4C); + sp50 = (f64)__cosf(sp4C); + func_80031B04(&sp58, &sp54, &sp50); + sp54 *= 20.0; + sp50 *= 20.0; + sp58 = 10.0f; + if (sp64 < 0.0) { + sp58 = -sp58; + } + func_84367E2C(sp64, sp60, sp5C, sp58, sp54, sp50, 0xC0, 0xFF, 0xFF, 0x80, (((guRandom() % 2) * 2) - 1) * 0.3, + 2.0f, 13.0f, 0x28); + } + + if (D_84392580 >= 2) { + var_v1 = func_843684CC(); + } else { + var_v1 = 0; + } + return var_v1; +} + +void func_8435B048(void) { + if (D_84392580 >= 2) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_84368560(gDisplayListHead); + } +} + +void func_8435B0B0(void) { + D_84392582 = 0; + func_84359650(); + func_84368AB0(); +} + +s32 func_8435B0DC(void) { + s32 var_v1; + f32 sp60; + f32 sp5C; + f32 sp58; + f32 sp54; + f32 sp50; + f32 sp4C; + f32 sp48; + + D_84392582++; + if (((D_84392582 >> 2) < 4) && !(D_84392582 & 3)) { + func_84359490(&sp60, &sp5C, &sp58, &sp54, &sp50, &sp4C); + sp48 = ((2 - (((D_84392582 >> 2) + 2) % 3)) * 0.5235988f) + 0.34906587f; + sp54 *= 7.0f * __cosf(sp48); + sp50 = __sinf(sp48) * 10.0f; + sp4C = 0.0f; + func_84368C04(sp60, sp5C, sp58, sp54, sp50, 0.0f, 0xD0, 0xFF, 0xFF, 0x80, 0.8f, 2.0f, 4.0f, 0x28); + } + + if (D_84392582 >= 2) { + var_v1 = func_843692E8(); + } else { + var_v1 = 0; + } + return var_v1; +} + +void func_8435B260(void) { + if (D_84392582 >= 2) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_84369388(gDisplayListHead); + } +} + +void func_8435B2C8(void) { + Vec3f sp5C; + f32 sp58; + f32 sp54; + f32 sp50; + f32 sp4C; + f32 sp48; + f32 sp44; + + D_843925C8 = 0; + func_84359650(); + func_843697F0(); + func_84359490(&sp58, &sp54, &sp50, &sp4C, &sp48, &sp44); + sp4C *= 5.0; + sp48 *= 5.0; + sp44 *= 5.0; + func_84369950(sp58, sp54, sp50, sp4C, sp48, sp44, 0xC0, 0xFF, 0xFF, 0xA0, 0.6f, 2.0f, 4.0f, 0x28); + sp5C.x = sp58; + sp5C.y = sp54; + sp5C.z = sp50; + func_8432FD70(sp5C, 1); +} + +s32 func_8435B408(void) { + D_843925C8++; + if (D_843925C8 >= 0x32) { + return -1; + } + + return func_84369F0C(); +} + +void func_8435B454(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_84369FA0(gDisplayListHead); +} + +void func_8435B4A8(void) { + f32 sp5C; + f32 sp58; + f32 sp54; + f32 sp50; + f32 sp4C; + f32 sp48; + + func_84359490(&sp5C, &sp58, &sp54, &sp50, &sp4C, &sp48); + sp50 *= 6.0f; + sp4C *= 6.0f; + sp48 *= 6.0f; + func_843606D0(sp5C, sp58, sp54, sp50, sp4C, sp48, 8, 0xFF, 0xFF, 0xFF, 0xB4, 0.3f, 2.0f, 20.0f, 0x3C); +} + +void func_8435B580(void) { + D_843925CA = 0; + func_84359650(); + func_843605C0(); + func_8435B4A8(); +} + +s32 func_8435B5B4(void) { + D_843925CA++; + if (D_843925CA >= 0xB5) { + return -1; + } + return func_84361FB0(); +} + +void func_8435B600(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_84362084(gDisplayListHead); +} + +void func_8435B654(void) { + static unk_D_843C2C00_024 D_84387FC0 = { 2, 1, 0xE, 1, 2, 2, 3, 1 }; + static unk_D_843C2C00_024 D_84387FE0 = { 3, 5, 0, 5, 3, 7, 0, 5 }; + static unk_D_843C2C00_024 D_84388000 = { 2, 1, 0xE, 1, 2, 1, 3, 1 }; + static unk_D_843C2C00_024 D_84388020 = { 3, 5, 0, 5, 0, 7, 5, 7 }; + + f32 spB4; + f32 spB0; + f32 spAC; + f32 spA8; + f32 spA4; + f32 spA0; + + func_84359490(&spB4, &spB0, &spAC, &spA8, &spA4, &spA0); + spA8 *= 10.0f; + spA4 *= 10.0f; + spA0 *= 10.0f; + func_8436BFB8(spB4, spB0, spAC, spA8, spA4, spA0, 0.0f, 5.0f, 1.2f, 2.0f, 10.0f, 0x14, 0x8F, 0x8F, 6, 0xA, 0xF, 0xE, + -3, 5, 0, 0xF, &D_84387FC0, &D_84387FE0, 0xFF, 0xFF, 0, 0x96, 0x64, 0xFF, 0, 0xC8, 0x32, 0xFF, 0x96, + 0xFF, 0x78); + func_8436BFB8(spB4, spB0, spAC, spA8, spA4, spA0, 0.0f, 5.0f, 1.2f, 3.0f, 15.0f, 0x14, 0x8F, 0x90, 2, 6, 0, 0xF, -4, + 2, 0, 0, &D_84388000, &D_84388020, 0, 0xFF, 0x64, 0x96, 0x64, 0x64, 0, 0xFF, 0xC8, 0, 0, 0, 0); +} + +void func_8435B8E8(void) { + func_84359650(); + func_8436BE70(); + func_8435B654(); +} + +s32 func_8435B918(void) { + return func_8436C62C(); +} + +void func_8435B938(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8436CE34(gDisplayListHead); +} + +void func_8435B98C(void) { + static unk_D_843C2C00_024 D_84388040 = { 3, 5, 1, 5, 1, 7, 3, 7 }; + static unk_D_843C2C00_024 D_84388060 = { 0x1F, 0x1F, 0x1F, 0, 7, 7, 7, 0 }; + + f32 spA4; + f32 spA0; + f32 sp9C; + f32 sp98; + f32 sp94; + f32 sp90; + + func_84359490(&spA4, &spA0, &sp9C, &sp98, &sp94, &sp90); + sp94 += 0.2f * __cosf((RAND(10) * M_PI_F) / 10.0f); + sp90 += 0.2f * __cosf((RAND(10) * M_PI_F) / 10.0f); + + sp98 *= 12.0f; + sp94 *= 12.0f; + sp90 *= 12.0f; + + func_8436D4A4(0, spA4, spA0, sp9C, sp98, sp94, sp90, 0xFF, 0xFF, 0xFF, 0xFF, 0, 0, 0x64, 0xFF, 0xFF, 0.4f, 2.0f, + 20.0f, 0x3C, 0x95, 0x95, 0, 0xA, 0, 0xD, 0, 0, 0, 0, &D_84388040, &D_84388060); +} + +void func_8435BB64(void) { + D_843925CC = 0; + func_84359650(); + func_8436D370(); + func_8435B98C(); +} + +s32 func_8435BB98(void) { + D_843925CC++; + if ((D_843925CC % 10) == 0) { + func_8435B98C(); + } + return func_8436DE60(); +} + +void func_8435BBEC(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8436E3BC(gDisplayListHead); +} + +void func_8435BC40(void) { + static unk_D_843C2C00_024 D_84388080 = { 3, 5, 1, 5, 6, 7, 2, 3 }; + static unk_D_843C2C00_024 D_843880A0 = { 0x1F, 0x1F, 0x1F, 0, 0, 7, 5, 7 }; + static unk_D_843C2C00_024 D_843880C0 = { 3, 5, 2, 5, 1, 7, 3, 7 }; + static unk_D_843C2C00_024 D_843880E0 = { 0x1F, 0x1F, 0x1F, 0, 0, 7, 5, 7 }; + + f32 spB4; + f32 spB0; + f32 spAC; + f32 spA8; + f32 spA4; + f32 spA0; + + func_84359490(&spB4, &spB0, &spAC, &spA8, &spA4, &spA0); + spA8 *= 10.0f; + spA4 *= 10.0f; + spA0 *= 10.0f; + func_8436BFB8(spB4, spB0, spAC, spA8, spA4, spA0, 0.0f, 5.0f, 1.2f, 2.0f, 10.0f, 0x14, 0x93, 0x93, 5, 0xA, 0xF, 0xF, + -5, 5, 0xF, 0xF, &D_84388080, &D_843880A0, 0xC8, 0xC8, 0, 0x64, 0, 0, 0xC8, 0, 0xFF, 0, 0xFF, 0, + 0x5A); + func_8436BFB8(spB4, spB0, spAC, spA8, spA4, spA0, 0.0f, 5.0f, 1.2f, 3.0f, 15.0f, 0x14, 0x91, 0x91, -2, 0xA, 0xF, + 0xF, 5, 0xF, 0xF, 0xF, &D_843880C0, &D_843880E0, 0xFF, 0x32, 0x64, 0xC8, 0, 0x64, 0x32, 0xFF, 0xFF, 0, + 0, 0, 0); +} + +void func_8435BED8(void) { + func_84359650(); + func_8436BE70(); + func_8435BC40(); +} + +s32 func_8435BF08(void) { + return func_8436C62C(); +} + +void func_8435BF28(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8436CE34(gDisplayListHead); +} + +void func_8435BF7C(void) { + static unk_D_843C2C00_024 D_84388100 = { 2, 1, 0xE, 1, 2, 7, 1, 3 }; + static unk_D_843C2C00_024 D_84388120 = { 3, 5, 0, 5, 0, 7, 5, 7 }; + static unk_D_843C2C00_024 D_84388140 = { 2, 1, 0xE, 1, 2, 7, 1, 3 }; + static unk_D_843C2C00_024 D_84388160 = { 3, 5, 0, 5, 0, 7, 5, 7 }; + + f32 spB4; + f32 spB0; + f32 spAC; + f32 spA8; + f32 spA4; + f32 spA0; + + func_84359490(&spB4, &spB0, &spAC, &spA8, &spA4, &spA0); + spA8 *= 10.0f; + spA4 *= 10.0f; + spA0 *= 10.0f; + func_8436BFB8(spB4, spB0, spAC, spA8, spA4, spA0, 0.0f, 5.0f, 1.2f, 2.0f, 10.0f, 0x14, 0x97, 0x98, -5, 0x14, 0xF, + 0xD, -5, 0x14, 0, 0xE, &D_84388100, &D_84388120, 0xFF, 0xFF, 0xFF, 0x32, 0x64, 0x64, 0, 0xFF, 0xFF, + 0xC8, 0xFF, 0xFF, 0x96); + func_8436BFB8(spB4, spB0, spAC, spA8, spA4, spA0, 0.0f, 5.0f, 1.2f, 3.0f, 15.0f, 0x14, 0x97, 0x98, 5, 0xF, 0xF, 0xE, + 0, 0xF, 0xF, 0xF, &D_84388140, &D_84388160, 0xFF, 0xFF, 0xFF, 0x32, 0x64, 0x64, 0x64, 0xFF, 0xFF, 0, + 0, 0, 0); +} + +void func_8435C220(void) { + func_84359650(); + func_8436BE70(); + func_8435BF7C(); +} + +s32 func_8435C250(void) { + return func_8436C62C(); +} + +void func_8435C270(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8436CE34(gDisplayListHead); +} + +void func_8435C2C4(void) { + static unk_D_843C2C00_024 D_84388180 = { 2, 1, 0xE, 1, 2, 1, 3, 1 }; + static unk_D_843C2C00_024 D_843881A0 = { 3, 5, 0, 5, 0, 7, 5, 7 }; + + f32 spB4; + f32 spB0; + f32 spAC; + f32 spA8; + f32 spA4; + f32 spA0; + + func_84359490(&spB4, &spB0, &spAC, &spA8, &spA4, &spA0); + spA8 *= 10.0f; + spA4 *= 10.0f; + spA0 *= 10.0f; + func_8436BFB8(spB4, spB0, spAC, spA8, spA4, spA0, 0.0f, 5.0f, 1.2f, 3.0f, 15.0f, 0x14, 0x97, 0x94, 0, 0x14, 0xE, + 0xF, 0, 0x14, 0xF, 0xE, &D_84388180, &D_843881A0, 0xFF, 0xFF, 0xFF, 0x96, 0x96, 0xFF, 0xFF, 0, 0xFF, + 0xFF, 0xFF, 0, 0x96); +} + +void func_8435C448(void) { + func_84359650(); + func_8436BE70(); + func_8435C2C4(); +} + +s32 func_8435C478(void) { + return func_8436C62C(); +} + +void func_8435C498(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8436CE34(gDisplayListHead); +} + +void func_8435C4EC(void) { + static unk_D_843C2C00_024 D_843881C0 = { + 0x00000002, 0x00000001, 0x0000000E, 0x00000001, 0x00000007, 0x00000007, 0x00000007, 0x00000003, + }; + static unk_D_843C2C00_024 D_843881E0 = { + 0x00000003, 0x00000005, 0x00000000, 0x00000005, 0x00000007, 0x00000007, 0x00000007, 0x00000000, + }; + static unk_D_843C2C00_024 D_84388200 = { + 0x00000002, 0x00000001, 0x0000000E, 0x00000001, 0x00000002, 0x00000001, 0x00000003, 0x00000001, + }; + static unk_D_843C2C00_024 D_84388220 = { + 0x00000003, 0x00000005, 0x00000000, 0x00000005, 0x00000000, 0x00000007, 0x00000005, 0x00000007, + }; + + f32 spB4; + f32 spB0; + f32 spAC; + f32 spA8; + f32 spA4; + f32 spA0; + + func_84359490(&spB4, &spB0, &spAC, &spA8, &spA4, &spA0); + spA8 *= 12.0f; + spA4 *= 12.0f; + spA0 *= 12.0f; + func_8436BFB8(spB4, spB0, spAC, spA8, spA4, spA0, 0.0f, 5.0f, 1.2f, 2.0f, 10.0f, 0x14, 0x91, 0x92, 5, 0x1E, 0, 0xD, + -5, 0x1E, 0xF, 0xD, &D_843881C0, &D_843881E0, 0xFF, 0xFF, 0, 0xFF, 0x96, 0x32, 0, 0, 0xFF, 0xFF, 0xC8, + 0x64, 0xC8); + func_8436BFB8(spB4, spB0, spAC, spA8, spA4, spA0, 0.0f, 5.0f, 1.2f, 3.0f, 15.0f, 0x14, 0x97, 0x96, 6, 0x14, 0xE, + 0xF, -3, 0xA, 0, 0xF, &D_84388200, &D_84388220, 0xFF, 0xFF, 0x64, 0x96, 0xFF, 0xFF, 0x64, 0, 0xC8, 0, + 0, 0, 0); +} + +void func_8435C790(void) { + static unk_D_843C2C00_024 D_84388240 = { + 0x00000002, 0x00000001, 0x0000000E, 0x00000001, 0x00000002, 0x00000001, 0x00000003, 0x00000001, + }; + static unk_D_843C2C00_024 D_84388260 = { + 0x00000003, 0x00000005, 0x00000000, 0x00000005, 0x00000000, 0x00000007, 0x00000005, 0x00000007, + }; + + f32 spA4; + f32 spA0; + f32 sp9C; + f32 sp98; + f32 sp94; + f32 sp90; + + func_84359490(&spA4, &spA0, &sp9C, &sp98, &sp94, &sp90); + + sp94 += (0.4f * __cosf((RAND(10) * M_PI_F) / 10)); + sp90 += (0.4f * __cosf((RAND(10) * M_PI_F) / 10)); + + sp98 *= 12.0f; + sp94 *= 12.0f; + sp90 *= 12.0f; + + func_8436D4A4(0, spA4, spA0, sp9C, sp98, sp94, sp90, 0xFF, 0xFF, 0x64, 0x32, 0xC8, 0xFF, 0x32, 0, 0xFF, 0.4f, 2.0f, + 5.0f, 0x3C, 0x95, 0x95, 0, 0x14, 0, 0xD, 0, 0x19, 0, 0xD, &D_84388240, &D_84388260); +} + +void func_8435C96C(void) { + func_84359650(); + func_8436BE70(); + func_8435C4EC(); + func_8436D370(); + func_8435C790(); +} + +s32 func_8435C9AC(void) { + D_843925D4++; + if ((D_843925D4 % 10) == 0) { + func_8435C790(); + } + func_8436DE60(); + return func_8436C62C(); +} + +void func_8435CA08(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8436CE34(gDisplayListHead); + gDisplayListHead = func_8436E3BC(gDisplayListHead); +} diff --git a/src/fragments/62/fragment62_347330.c b/src/fragments/62/fragment62_347330.c new file mode 100644 index 0000000..881894d --- /dev/null +++ b/src/fragments/62/fragment62_347330.c @@ -0,0 +1,1145 @@ +#include "fragment62.h" +#include "src/30640.h" +#include "src/6A40.h" +#include "src/math_util.h" +#include "include/math.h" + +typedef struct unk_D_843951D0_1010 { + /* 0x00 */ f32 unk_00; + /* 0x04 */ f32 unk_04; + /* 0x08 */ f32 unk_08; + /* 0x0C */ f32 unk_0C; + /* 0x10 */ s16 unk_10; +} unk_D_843951D0_1010; // size = 0x14 + +typedef struct unk_D_843951D0 { + /* 0x0000 */ s16 unk_0000; + /* 0x0004 */ f32 unk_0004; + /* 0x0008 */ s16 unk_0008; + /* 0x000A */ s16 unk_000A; + /* 0x000C */ Vtx* unk_000C; + /* 0x0010 */ char unk0010[0x1000]; + /* 0x1010 */ unk_D_843951D0_1010 unk_1010[16][16]; +} unk_D_843951D0; // size >= 0x2410 + +static unk_D_843925E0 D_843925E0[4]; +static s16 D_843951C0; +static s16 D_843951C2; +static s32 pad_D_843951C8[2]; +static unk_D_843951D0 D_843951D0; +static s16 D_843975E0; +static s16 D_843975E2; +static s16 D_843975E4; +static unk_D_843975E8 D_843975E8; + +func_D_84390320 D_84388280[] = { + func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_8435BED8, func_84359684, func_843593A0, + func_84359FE0, func_843593A0, func_843593A0, func_843593A0, func_8435A7F0, func_843593A0, func_843593A0, + func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_84359C84, func_843593A0, + func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_8435B8E8, func_843593A0, + func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_8435A298, func_843593A0, + func_843593A0, func_84359A00, func_843593A0, func_843593A0, func_8435C96C, func_843593A0, func_843593A0, + func_8435ABF0, func_8435AC94, func_8435AD38, func_8435ADDC, func_843593A0, func_8435BB64, func_843593A0, + func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_84359910, func_843593A0, + func_843593A0, func_8435A9F0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_8435B0B0, + func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_8435B2C8, func_843593A0, func_843593A0, + func_8435C448, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, + func_8435C220, func_8435B580, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, + func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, + func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, + func_8435A6F8, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, + func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, + func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, + func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, + func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, + func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, + func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, + func_843593A0, func_843593A0, func_843593A0, +}; + +func_D_84390320 D_843884D8[] = { + func_843593A8, func_84359750, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, + func_843593A8, func_843593A8, func_84359D7C, func_843593A8, func_843593A8, func_843593A8, func_843593A8, + func_843593A8, func_843593A8, func_84359AE0, func_843593A8, func_843593A8, func_84359820, func_843593A8, + func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, + func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_8435A390, func_8435A480, func_843593A8, + func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, + func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_84359684, + func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, + func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, + func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, + func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, + func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, + func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, + func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, + func_843593A8, func_843593A8, +}; + +func_D_84390320 D_84388668[] = { + func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_8435BF08, func_843596DC, func_843593B0, + func_8435A014, func_843593B0, func_843593B0, func_843593B0, func_8435A81C, func_843593B0, func_843593B0, + func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_84359CB8, func_843593B0, + func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_8435B918, func_843593B0, + func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_8435A2CC, func_843593B0, + func_843593B0, func_84359A6C, func_843593B0, func_843593B0, func_8435C9AC, func_843593B0, func_843593B0, + func_8435AC20, func_8435ACC4, func_8435AD68, func_8435AE08, func_843593B0, func_8435BB98, func_843593B0, + func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_8435998C, func_843593B0, + func_843593B0, func_8435AA1C, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_8435B0DC, + func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_8435B408, func_843593B0, func_843593B0, + func_8435C478, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, + func_8435C250, func_8435B5B4, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, + func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, + func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, + func_8435A72C, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, + func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, + func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, + func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, + func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, + func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, + func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, + func_843593B0, func_843593B0, func_843593B0, +}; + +func_D_84390320 D_843888C0[] = { + func_843593B8, func_843597AC, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, + func_843593B8, func_843593B8, func_84359DF4, func_843593B8, func_843593B8, func_843593B8, func_843593B8, + func_843593B8, func_843593B8, func_84359AE8, func_843593B8, func_843593B8, func_8435989C, func_843593B8, + func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, + func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_8435A40C, func_8435A4F8, func_843593B8, + func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, + func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843596DC, + func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, + func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, + func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, + func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, + func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, + func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, + func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, + func_843593B8, func_843593B8, +}; + +func_D_84390320 D_84388A50[] = { + func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_8435BF28, func_843596FC, func_843593C0, + func_8435A084, func_843593C0, func_843593C0, func_843593C0, func_8435A99C, func_843593C0, func_843593C0, + func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_84359D28, func_843593C0, + func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_8435B938, func_843593C0, + func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_8435A33C, func_843593C0, + func_843593C0, func_84359A8C, func_843593C0, func_843593C0, func_8435CA08, func_843593C0, func_843593C0, + func_8435AC40, func_8435ACE4, func_8435AD88, func_8435B048, func_843593C0, func_8435BBEC, func_843593C0, + func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843599AC, func_843593C0, + func_843593C0, func_8435AB9C, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_8435B260, + func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_8435B454, func_843593C0, func_843593C0, + func_8435C498, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, + func_8435C270, func_8435B600, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, + func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, + func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, + func_8435A79C, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, + func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, + func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, + func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, + func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, + func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, + func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, + func_843593C0, func_843593C0, func_843593C0, +}; + +func_D_84390320 D_84388CA8[] = { + func_843593C8, func_843597CC, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, + func_843593C8, func_843593C8, func_84359E14, func_843593C8, func_843593C8, func_843593C8, func_843593C8, + func_843593C8, func_843593C8, func_84359AF0, func_843593C8, func_843593C8, func_843598BC, func_843593C8, + func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, + func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_8435A42C, func_8435A518, func_843593C8, + func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, + func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843596FC, + func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, + func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, + func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, + func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, + func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, + func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, + func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, + func_843593C8, func_843593C8, +}; + +static s32 pad_D_84388E38[2] = { 0, 0 }; + +static Gfx D_84388E40[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsDPSetRenderMode(G_RM_AA_ZB_XLU_SURF, G_RM_AA_ZB_XLU_SURF2), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetColorDither(G_CD_NOISE), + gsSPEndDisplayList(), +}; + +void func_8435CA70(void) { + unk_D_843925E0* ptr = &D_843925E0[0]; + s32 i; + + for (i = 0; i < 4; i++) { + ptr->unk_018 = ptr->unk_000 = 0; + ptr++; + } +} + +void func_8435CAA8(unk_D_843925E0* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8, + s32 arg9) { + arg0->unk_028 = arg1; + arg0->unk_02C = arg2; + arg0->unk_030 = arg3; + arg0->unk_038 = arg4; + arg0->unk_03C = arg5; + arg0->unk_040 = arg6; + arg0->unk_024 = arg7; + arg0->unk_034 = arg8; + arg0->unk_044 = arg9; +} + +void func_8435CAE8(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, s32 arg5) { + unk_D_843925E0* ptr; + unk_D_843925E0_430* ptr1; + unk_D_843925E0_430* ptr2; + unk_D_843925E0_430* ptr3; + s32 i; + u8 temp_lo; + u8 temp_lo_2; + s32 temp_v0_2; + s32 var_v1; + u8 temp_a0; + u8 temp_a1; + u8 temp_v1; + + var_v1 = -1; + + for (i = 0; i < 4; i++) { + if (D_843925E0[i].unk_000 == 0) { + var_v1 = i; + break; + } + } + + if (var_v1 == -1) { + return; + } + + ptr = &D_843925E0[var_v1]; + + ptr->unk_000 = 1; + ptr->unk_018 = 0; + ptr->unk_004 = arg0; + ptr->unk_00C = arg2; + ptr->unk_010 = arg3 * arg4; + ptr->unk_014 = arg4; + ptr->unk_01E = -1; + + switch (arg5) { + case 0: + ptr->unk_01C = 1; + ptr->unk_008 = (arg4 * 0.0) + arg1; + ptr->unk_01A = 0x3C; + ptr->unk_020 = 1.5f; + func_8435CAA8(&D_843925E0[var_v1], 0xFF, 0xFF, 0xC8, 0x20, 0x20, 0xFF, 0x80, 0x80, 0xFF); + ptr->unk_01E = func_8436E944(); + break; + + case 1: + ptr->unk_01C = -1; + ptr->unk_01A = 0x78; + ptr->unk_008 = (arg4 * 100.0) + arg1; + ptr->unk_020 = 1.5f; + func_8435CAA8(&D_843925E0[var_v1], 0xFF, 0xFF, 0xC8, 0xFF, 0x20, 0x20, 0x80, 0x80, 0); + break; + + default: + case 2: + ptr->unk_01C = 1; + ptr->unk_008 = (arg4 * 0.0) + arg1; + ptr->unk_01A = 0x1E; + ptr->unk_020 = 1.5f; + break; + } + + ptr1 = &ptr->unk_430[0]; + for (i = 0; i < 31; i++) { + ptr2 = ptr1++; + ptr3 = ptr1++; + + switch (arg5) { + case 0: + temp_v0_2 = ((i % 3) * 2) + 1; + temp_lo = 0x44 / temp_v0_2; + temp_lo_2 = 0xFF / temp_v0_2; + + ptr2->unk_10.r = 0x66; + ptr2->unk_10.g = ((temp_lo * 6) + 0x3FC) / 10; + ptr2->unk_10.b = ((temp_lo_2 * 6) + 0x3FC) / 10; + ptr2->unk_10.a = 0xFF; + + ptr3->unk_10.r = 0; + ptr3->unk_10.g = temp_lo; + ptr3->unk_10.b = temp_lo_2; + ptr3->unk_10.a = 0; + + ptr2->unk_0E = 0x20; + ptr3->unk_0E = 0x7E0; + break; + + case 1: + temp_v0_2 = ((i % 3) * 2) + 1; + temp_lo = 0xFF / temp_v0_2; + temp_lo_2 = 0x44 / temp_v0_2; + + ptr2->unk_10.r = ((temp_lo * 4) + 0x5FA) / 10; + ptr2->unk_10.g = ((temp_lo_2 * 4) + 0x5FA) / 10; + ptr2->unk_10.b = 0x99; + ptr2->unk_10.a = 0x10; + + ptr3->unk_10.r = temp_lo; + ptr3->unk_10.g = temp_lo_2; + ptr3->unk_10.b = 0; + ptr3->unk_10.a = 0; + + ptr2->unk_0E = 0x7E0; + ptr3->unk_0E = 0x20; + break; + + default: + case 2: + temp_v1 = (((u32)(i & 0x3F) >> 4) & 3) << 6; + temp_a0 = (((u32)(i & 0x3F) >> 2) & 3) << 6; + temp_a1 = ((u32)(i & 0x3F) & 3) << 6; + + ptr2->unk_10.r = ((temp_v1 * 6) + 0x3FC) / 10; + ptr2->unk_10.g = ((temp_a0 * 6) + 0x3FC) / 10; + ptr2->unk_10.b = ((temp_a1 * 6) + 0x3FC) / 10; + ptr2->unk_10.a = 0xFF; + + ptr3->unk_10.r = temp_v1; + ptr3->unk_10.g = temp_a0; + ptr3->unk_10.b = temp_a1; + ptr3->unk_10.a = 0; + + ptr2->unk_0E = 0x20; + ptr3->unk_0E = 0x7E0; + break; + } + + ptr2->unk_0C = ((i % 31) * 0x3000) / 30; + ptr3->unk_0C = ptr2->unk_0C; + ptr2->unk_18 = 0.0f; + ptr2->unk_14 = (i * TWO_PI) / 30.0; + ptr2->unk_00 = (__cosf((i * TWO_PI) / 30.0) * (arg3 * arg4)) + arg0; + ptr2->unk_04 = ptr->unk_008; + + if (ptr2->unk_04 < 0.0) { + ptr2->unk_04 = 0.0f; + } + ptr2->unk_08 = (__sinf(ptr2->unk_14) * (arg3 * arg4)) + arg2; + + ptr3->unk_18 = 0.0f; + ptr3->unk_14 = ptr2->unk_14; + ptr3->unk_00 = ptr2->unk_00; + ptr3->unk_04 = ptr->unk_008; + if (ptr3->unk_04 < 0.0) { + ptr3->unk_04 = 0.0f; + } + + ptr3->unk_08 = ptr2->unk_08; + } +} + +void func_8435D1E8(unk_D_843925E0* arg0) { + s32 var_v0; + + if (arg0->unk_01C >= 0) { + if ((arg0->unk_01A - 0x1E) < arg0->unk_018) { + var_v0 = arg0->unk_044 - 0xA; + if (var_v0 < 0) { + var_v0 = 0; + } + arg0->unk_044 = var_v0; + } + } else { + var_v0 = arg0->unk_044 + 8; + if (var_v0 >= 0x100) { + var_v0 = 0xFF; + } + arg0->unk_044 = var_v0; + } +} + +s32 func_8435D24C(unk_D_843925E0* arg0) { + unk_D_843925E0_430* temp_s0; + unk_D_843925E0_430* temp_s1; + unk_D_843925E0_430* ptr; + s32 i; + f32 sp9C; + f32 sp98; + f32 sp94; + f32 sp90; + f32 sp8C; + f32 sp88; + f32 sp84; + f32 sp80; + f32 sp7C; + f32 sp78; + f32 temp_fa0; + s16 temp_s6; + s16 var_s5; + Vtx* var_s2; + s32 tmp; + + ptr = &arg0->unk_430[0]; + + arg0->unk_018++; + tmp = arg0->unk_018; + + sp9C = arg0->unk_010; + sp80 = arg0->unk_004; + sp7C = arg0->unk_008; + sp78 = arg0->unk_00C; + sp98 = arg0->unk_014; + temp_s6 = arg0->unk_01C; + sp84 = arg0->unk_020 * tmp; + + var_s2 = &arg0->unk_050[0]; + func_8435D1E8(arg0); + + var_s5 = 0; + sp94 = 0.0f; + sp90 = 0.0f; + sp8C = 0.0f; + sp88 = 0.0f; + + for (i = 0; i < 31; i++) { + temp_s0 = ptr++; + temp_s1 = ptr++; + + if (i == 0x1E) { + sp94 = 0.0f; + sp90 = 0.0f; + sp8C = 0.0f; + sp88 = 0.0f; + } + temp_s0->unk_18 += 0.4; + temp_s0->unk_14 -= 0.06f; + + if (temp_s6 != -1) { + if (temp_s6 == 1) { + temp_s0->unk_04 = ((((2.0 * __sinf(temp_s0->unk_14 + temp_s0->unk_18 + sp94)) - + (__cosf(temp_s0->unk_14 + temp_s0->unk_18 + sp90) * 3.0)) + + sp84) * + sp98) + + sp7C; + temp_s1->unk_04 = (((((5.0 * __sinf(temp_s1->unk_14 + temp_s1->unk_18 + sp8C)) - + (__cosf(temp_s1->unk_14 + temp_s1->unk_18 + sp88) * 3.0)) + + sp84) * + sp98) + + sp7C) - + 50.0; + + if (temp_s1->unk_04 > 400.0) { + var_s5++; + } + + if (temp_s0->unk_04 < 0.0) { + temp_s0->unk_04 = 0.0f; + } + + if (temp_s1->unk_04 < 0.0) { + temp_s1->unk_04 = 0.0f; + } + } + } else { + temp_s0->unk_04 = sp7C - ((((2.0 * __sinf(temp_s0->unk_14 + temp_s0->unk_18 + sp94)) - + (__cosf(temp_s0->unk_14 + temp_s0->unk_18 + sp90) * 3.0)) + + sp84) * + sp98); + temp_s1->unk_04 = (sp7C - ((((5.0 * __sinf(temp_s1->unk_14 + temp_s1->unk_18 + sp8C)) - + (__cosf(temp_s1->unk_14 + temp_s1->unk_18 + sp88) * 3.0)) + + sp84) * + sp98)) - + 50.0; + + if (temp_s0->unk_04 < 0.0) { + var_s5++; + temp_s0->unk_04 = 0.0f; + } + + if (temp_s1->unk_04 < 0.0) { + temp_s1->unk_04 = 0.0f; + } + } + + temp_s1->unk_18 += 0.3; + temp_s1->unk_14 += 0.08; + + var_s2->v.ob[0] = temp_s0->unk_00; + var_s2->v.ob[1] = temp_s0->unk_04; + var_s2->v.ob[2] = temp_s0->unk_08; + var_s2->v.tc[0] = temp_s0->unk_0C; + var_s2->v.tc[1] = temp_s0->unk_0E; + var_s2->v.cn[0] = temp_s0->unk_10.r; + var_s2->v.cn[1] = temp_s0->unk_10.g; + var_s2->v.cn[2] = temp_s0->unk_10.b; + var_s2->v.cn[3] = temp_s0->unk_10.a; + var_s2++; + + var_s2->v.ob[0] = temp_s1->unk_00; + var_s2->v.ob[1] = temp_s1->unk_04; + var_s2->v.ob[2] = temp_s1->unk_08; + var_s2->v.tc[0] = temp_s1->unk_0C; + var_s2->v.tc[1] = temp_s1->unk_0E; + var_s2->v.cn[0] = temp_s1->unk_10.r; + var_s2->v.cn[1] = temp_s1->unk_10.g; + var_s2->v.cn[2] = temp_s1->unk_10.b; + var_s2->v.cn[3] = temp_s1->unk_10.a; + var_s2++; + + sp94 += 2.4; + sp90 += 1.8; + sp8C += 1.6; + sp88 += 1.2; + } + + if (temp_s6 == 1) { + f32 tmp1; + f32 tmp2; + + temp_fa0 = ((guRandom() % 360) * TWO_PI_F) / 360.0f; + tmp1 = __cosf(temp_fa0) * sp9C; + tmp2 = __sinf(temp_fa0) * sp9C; + + func_8436EA0C(arg0->unk_01E, sp80 + tmp1, sp7C + sp84, sp78 + tmp2, 0xA, 0.75f); + func_8436EB54(arg0->unk_01E); + } + + if (var_s5 >= 0x1F) { + return -1; + } + return 0; +} + +s32 func_8435D8C0(void) { + s32 i; + s32 var_s2; + unk_D_843925E0* ptr = &D_843925E0[0]; + + D_843951C0 = (D_843951C0 + 1) & 0x3FFF; + D_843951C2 = (D_843951C2 - 1) & 0x3FFF; + var_s2 = -1; + + for (i = 0; i < 4; i++, ptr++) { + if (ptr->unk_000 == 1) { + if (func_8435D24C(ptr) == 0) { + var_s2 = 0; + } else { + ptr->unk_000 = 0; + } + } + } + + return var_s2; +} + +Gfx* func_8435D97C(Gfx* arg0, unk_D_843925E0* arg1) { + s32 i; + Vtx* temp_v0 = func_80005F5C(sizeof(Vtx) * 62); + Vtx* vtx = temp_v0; + Vtx* var_a0 = &arg1->unk_050[0]; + + for (i = 0; i < 31; i++) { + *vtx++ = *var_a0++; + *vtx++ = *var_a0++; + } + + vtx = temp_v0; + for (i = 0; i < 30; i++) { + gSPVertex(arg0++, vtx, 4, 0); + gSP2Triangles(arg0++, 0, 2, 1, 0, 2, 3, 1, 0); + vtx += 2; + } + + return arg0; +} + +Gfx* func_8435DB14(Gfx* arg0) { + static Gfx D_84388E88[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_2CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTexturePersp(G_TP_PERSP), + gsDPSetTextureDetail(G_TD_CLAMP), + gsDPSetTextureLOD(G_TL_TILE), + gsDPSetTextureLUT(G_TT_NONE), + gsDPSetTextureConvert(G_TC_FILT), + gsDPSetTextureFilter(G_TF_BILERP), + gsDPSetCombineLERP(TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0, TEXEL1, TEXEL0, PRIMITIVE, TEXEL0, PRIMITIVE, + ENVIRONMENT, COMBINED, ENVIRONMENT, COMBINED, 0, ENVIRONMENT, 0), + gsSPEndDisplayList(), + }; + + static Gfx D_84388F00[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(AA_EN | Z_CMP | IM_RD | CLR_ON_CVG | CVG_DST_SAVE | ZMODE_XLU | FORCE_BL | + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA), + AA_EN | Z_CMP | IM_RD | CLR_ON_CVG | CVG_DST_SAVE | ZMODE_XLU | FORCE_BL | + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)), + gsDPSetTexturePersp(G_TP_PERSP), + gsDPSetTextureDetail(G_TD_CLAMP), + gsDPSetTextureLOD(G_TL_TILE), + gsDPSetTextureLUT(G_TT_NONE), + gsDPSetTextureConvert(G_TC_FILT), + gsDPSetTextureFilter(G_TF_BILERP), + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), + gsSPEndDisplayList(), + }; + + unk_D_843925E0* ptr = &D_843925E0[0]; + s32 i; + + gSPDisplayList(arg0++, D_84388E88); + gDPPipeSync(arg0++); + gDPLoadTextureTile_4b(arg0++, D_843920C0[0x43], G_IM_FMT_I, 32, 0, 0, 0, 31, 31, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD); + gDPSetTileSize(arg0++, G_TX_RENDERTILE, D_843951C0, 0, (D_843951C0 + 0x1F), 0x001F); + gDPLoadMultiTile_4b(arg0++, D_843920C0[0x44], 0x0100, 1, G_IM_FMT_I, 32, 0, 0, 0, 31, 31, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD); + gDPSetTileSize(arg0++, 1, D_843951C2, 0, (D_843951C2 + 0x1F), 0x001F); + + for (i = 0; i < 4; i++, ptr++) { + if (ptr->unk_000 == 1) { + gDPSetPrimColor(arg0++, 0, ptr->unk_024, ptr->unk_028, ptr->unk_02C, ptr->unk_030, ptr->unk_034); + gDPSetEnvColor(arg0++, ptr->unk_038, ptr->unk_03C, ptr->unk_040, ptr->unk_044); + + gSPClearGeometryMode(arg0++, G_CULL_BACK); + gSPSetGeometryMode(arg0++, G_CULL_FRONT); + + arg0 = func_8435D97C(arg0, ptr); + + gSPClearGeometryMode(arg0++, G_CULL_FRONT); + gSPSetGeometryMode(arg0++, G_CULL_BACK); + + arg0 = func_8435D97C(arg0, ptr); + } + } + + ptr = &D_843925E0[0]; + for (i = 0; i < 4; i++, ptr++) { + if (ptr->unk_000 == 1) { + arg0 = func_8436EDE8(ptr->unk_01E, arg0); + } + } + + return arg0; +} + +void func_8435DED0(unk_D_843975E8* arg0, f32 arg1) { + unk_D_86002F34_00C* spB4 = func_8432FD64(); + f32 spB0; + f32 spAC; + f32 spA8; + f32 spA4; + f32 spA0; + f32 sp9C; + f32 var_fs0; + f32 sp94; + UNUSED s32 pad; + f32 sp8C; + f32 sp44; + f32 sp84; + f32 sp80; + f32 sp7C; + f32 sp78; + f32 sp74; + f32 sp70; + f32 sp40; + f32 sp68; + f32 sp64; + f32 sp60; + f32 sp5C; + f32 sp58; + f32 sp54; + f32 sp50; + f32 sp4C; + f32 sp48; + + spB0 = spB4->unk_60.eye.x; + spAC = spB4->unk_60.eye.y; + spA8 = spB4->unk_60.eye.z; + + sp9C = spB4->unk_60.at.x; + spA0 = spB4->unk_60.at.y; + spA4 = spB4->unk_60.at.z; + + sp78 = spB4->unk_60.up.x; + sp74 = spB4->unk_60.up.y; + sp70 = spB4->unk_60.up.z; + + sp4C = spB4->unk_24.fovy; + sp48 = sp4C / 30.0f; + sp8C = spB4->unk_24.near; + + sp84 = sp9C - spB0; + sp80 = spA0 - spAC; + sp7C = spA4 - spA8; + + func_80031B04(&sp84, &sp80, &sp7C); + + sp44 = (sp4C * TWO_PI) / 720.0; + sp40 = sp8C + arg1; + + arg0->unk_00 = (sp40 * sp84) + spB0; + arg0->unk_04 = (sp40 * sp80) + spAC; + arg0->unk_08 = (sp40 * sp7C) + spA8; + + sp50 = __cosf(sp44); + if (sp50 != 0.0) { + var_fs0 = (__sinf(sp44) * sp40) / sp50; + } else { + var_fs0 = 0.0f; + } + + var_fs0 = func_80031A6C(var_fs0); + sp94 = spB4->unk_24.aspect * var_fs0 * sp48 * 1.2f; + + func_80031A94(sp84, sp80, sp7C, sp78, sp74, sp70, &sp68, &sp64, &sp60); + func_80031A94(sp84, sp80, sp7C, sp68, sp64, sp60, &sp5C, &sp58, &sp54); + func_80031B04(&sp68, &sp64, &sp60); + func_80031B04(&sp5C, &sp58, &sp54); + + arg0->unk_0C = sp68 * sp94; + arg0->unk_10 = sp64 * sp94; + arg0->unk_14 = sp60 * sp94; + + arg0->unk_18 = sp5C * var_fs0; + arg0->unk_1C = sp58 * var_fs0; + arg0->unk_20 = sp54 * var_fs0; +} + +f32 func_8435E158(f32 arg0, f32 arg1, f32* arg2) { + UNUSED s32 pad1[2]; + f32 spC4; + f32 spC0; + f32 spBC; + f32 spB8; + f32 spB4; + f32 spB0; + f32 spAC; + f32 spA8; + f32 spA4; + f32 spA0; + f32 sp9C; + f32 sp98; + f32 sp94; + UNUSED s32 pad2[8]; + f32 temp_fa0; + f32 temp_fa1; + f32 temp_fv0; + f32 temp_fv0_2; + f32 temp_fv1; + s32 var_a0; + s32 var_v1; + f32 sp54; + f32 sp50; + f32 sp4C; + + var_v1 = ((arg0 + 440.0f) / 150.0f) + 8.0f; + var_a0 = (arg1 / 200.0f) + 8.0f; + + if (var_v1 < 0) { + var_v1 = 0; + } + + if (var_v1 >= 0xF) { + var_v1 = 0xE; + } + + if (var_a0 < 0) { + var_a0 = 0; + } + + if (var_a0 >= 0xF) { + var_a0 = 0xE; + } + + spC0 = D_843951D0.unk_1010[var_v1][var_a0].unk_00; + spBC = D_843951D0.unk_1010[var_v1][var_a0].unk_04; + spB8 = D_843951D0.unk_1010[var_v1][var_a0].unk_08; + spB4 = D_843951D0.unk_1010[var_v1 + 1][var_a0].unk_00; + spB0 = D_843951D0.unk_1010[var_v1 + 1][var_a0].unk_04; + spAC = D_843951D0.unk_1010[var_v1 + 1][var_a0].unk_08; + spA8 = D_843951D0.unk_1010[var_v1][var_a0 + 1].unk_00; + spA4 = D_843951D0.unk_1010[var_v1][var_a0 + 1].unk_04; + spA0 = D_843951D0.unk_1010[var_v1][var_a0 + 1].unk_08; + sp9C = D_843951D0.unk_1010[var_v1 + 1][var_a0 + 1].unk_00; + sp98 = D_843951D0.unk_1010[var_v1 + 1][var_a0 + 1].unk_04; + sp94 = D_843951D0.unk_1010[var_v1 + 1][var_a0 + 1].unk_08; + + temp_fv0 = spB4 - arg0; + spBC = D_843951D0.unk_1010[var_v1][var_a0].unk_04; + temp_fv1 = spAC - arg1; + temp_fa0 = sp9C - arg0; + temp_fa1 = sp94 - arg1; + + if ((SQ(temp_fv0) + SQ(temp_fv1)) <= (SQ(temp_fa0) + SQ(temp_fa1))) { + func_80031A94(spB4 - spC0, spB0 - spBC, spAC - spB8, spA8 - spC0, spA4 - spBC, spA0 - spB8, &sp54, &sp50, + &sp4C); + if (sp50 != 0.0) { + spC4 = spBC - ((((arg0 - spC0) * sp54) + (sp4C * (arg1 - spB8))) / sp50); + } else { + spC4 = (spBC + spB0 + spA4) / 3.0; + } + } else { + func_80031A94(spB4 - sp9C, spB0 - sp98, spAC - sp94, spA8 - sp9C, spA4 - sp98, spA0 - sp94, &sp54, &sp50, + &sp4C); + if (sp50 != 0.0) { + spC4 = sp98 - ((((arg0 - sp9C) * sp54) + (sp4C * (arg1 - sp94))) / sp50); + } else { + spC4 = (sp98 + spB0 + spA4) / 3.0; + } + } + + temp_fv0_2 = MathUtil_Atan2s(sp50, sp54); + temp_fv0_2 = (temp_fv0_2 * 360.0) / 65536.0; + if (temp_fv0_2 > 90.0f) { + temp_fv0_2 -= 180.0f; + } + + if (temp_fv0_2 < -90.0f) { + temp_fv0_2 += 180.0f; + } + + *arg2 = temp_fv0_2; + return spC4; +} + +s32 func_8435E530(void) { + s32 i; + s32 j; + unk_D_843951D0_1010* ptr; + f32 var_fv0; + s32 temp_v0; + f32 tmp; + + D_843951D0.unk_0000++; + if (D_843951D0.unk_000A < D_843951D0.unk_0000) { + return -1; + } + + if (D_843951D0.unk_0000 < 0x3C) { + ptr = &D_843951D0.unk_1010[0][0]; + for (j = 0; j < 16; j++) { + ptr->unk_04 += (30.0 * __sinf((((D_843951D0.unk_0000 + j) % 15) * TWO_PI_F) / 15.0f)) + 10.0; + ptr++; + } + D_843951D0.unk_0004 += 0.001; + } else { + if (((D_843951D0.unk_0000 - 0x3C) % 90) < 0x46) { + ptr = &D_843951D0.unk_1010[0][2]; + for (j = 0; j < 13; j++) { + if (0) {} + if (ptr->unk_04 > 0.0) { + ptr->unk_04 -= 40.0; + if (ptr->unk_04 < 0.0) { + ptr->unk_04 = 0.0f; + } + } + ptr++; + } + } else { + ptr = &D_843951D0.unk_1010[0][2]; + for (j = 0; j < 13; j++) { + ptr->unk_04 += 30.0; + ptr++; + } + } + + D_843951D0.unk_0004 += 0.04; + if (D_843951D0.unk_0004 > 0.3) { + D_843951D0.unk_0004 = 0.3f; + } + } + + ptr = &D_843951D0.unk_1010[0][0]; + for (i = 0; i < 16; i++) { + for (j = 0; j < 16; j++) { + temp_v0 = 1; + + tmp = ptr->unk_04; + var_fv0 = 0.0f; + if (i > 0) { + temp_v0 = 2; + var_fv0 += D_843951D0.unk_1010[i - 1][j].unk_04 - tmp; + } + + if ((!ptr) && (!ptr)) {} + + if (j > 0) { + var_fv0 += D_843951D0.unk_1010[i][j - 1].unk_04 - tmp; + } + + if (j < 0xF) { + var_fv0 += D_843951D0.unk_1010[i][j + 1].unk_04 - tmp; + } + + temp_v0++; + temp_v0++; + if (temp_v0) {} + + ptr->unk_0C = (var_fv0 * D_843951D0.unk_0004) + tmp; + ptr++; + } + } + + ptr = &D_843951D0.unk_1010[0][0]; + for (i = 0; i < 16; i++) { + for (j = 0; j < 16; j++, ptr++) { + ptr->unk_04 = ptr->unk_0C; + if (ptr->unk_04 < 0.0) { + ptr->unk_04 = 0.0f; + } + } + } + + return 0; +} + +void func_8435EB9C(s32 arg0, s16 arg1, s16 arg2) { + s32 i; + s32 j; + unk_D_843951D0_1010* ptr; + + D_843951D0.unk_000A = arg2; + D_843951D0.unk_0000 = 0; + D_843951D0.unk_0004 = 0.0f; + D_843951D0.unk_0008 = arg1; + + ptr = &D_843951D0.unk_1010[0][0]; + + for (i = 0; i < 16; i++) { + for (j = 0; j < 16; j++, ptr++) { + ptr->unk_00 = arg0 * (((i * 150.0f) - 1200.0f) - 440.0f); + ptr->unk_04 = 1.0f; + ptr->unk_08 = (j * 200.0f) - 1600.0f; + ptr->unk_0C = 1.0f; + ptr->unk_10 = 0xFF; + + if (i == 0xF) { + ptr->unk_10 = 0; + } + + if (j == 0xF) { + ptr->unk_10 = 0; + } + + if (j == 0) { + ptr->unk_10 = 0; + } + } + } + + D_843975E0 = 0; + D_843975E2 = 8; + D_843975E4 = 0; + + if (arg1 > 0) { + for (i = 0; i < arg1; i++) { + func_8435E530(); + } + + func_8435DED0(&D_843975E8, 50.0f); + } +} + +s32 func_8435EDF8(void) { + UNUSED s32 pad[2]; + s32 sp1C = func_8435E530(); + + D_843975E0 = (D_843975E0 - 1) & 0x3FFF; + D_843975E2 = (D_843975E2 - 1) & 0x3FFF; + D_843975E4 = (D_843975E4 - 1) & 0x3FFF; + func_8435DED0(&D_843975E8, 50.0f); + + return sp1C; +} + +static s32 pad_D_84388F78[2] = { 0, 0 }; + +Gfx* func_8435EE78(Gfx* arg0) { + static Gfx D_84388F80[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_2CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPPipeSync(), + gsDPSetTexturePersp(G_TP_PERSP), + gsDPSetTextureDetail(G_TD_CLAMP), + gsDPSetTextureLOD(G_TL_TILE), + gsDPSetTextureLUT(G_TT_NONE), + gsDPSetTextureConvert(G_TC_FILT), + gsDPSetTextureFilter(G_TF_BILERP), + gsDPSetRenderMode(G_RM_PASS, G_RM_ZB_XLU_SURF2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0, 0, 0, 0, PRIMITIVE, PRIMITIVE, ENVIRONMENT, COMBINED, + ENVIRONMENT, COMBINED, 0, SHADE, 0), + gsSPEndDisplayList(), + }; + static Gfx D_84388FF8[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_2CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_SHADE | G_SHADING_SMOOTH), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_PASS, G_RM_XLU_SURF2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0, TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0, PRIMITIVE, + ENVIRONMENT, COMBINED, ENVIRONMENT, COMBINED, 0, PRIMITIVE, 0), + gsDPSetColorDither(G_CD_NOISE), + gsDPSetPrimColor(0, 0x80, 0, 50, 255, 100), + gsDPSetEnvColor(0, 100, 255, 100), + gsSPEndDisplayList(), + }; + + unk_D_843951D0_1010* var_v1; + Vtx* vtx; + s32 i; + s32 j; + f32 sp134; + f32 sp130; + f32 sp12C; + f32 sp128; + f32 sp124; + f32 sp120; + f32 sp11C; + f32 temp_fv0; + Vtx* temp_v0; + f32 sp110; + s16 var_a2; + s16 var_t0; + s32 idx1; + s32 idx2; + + D_843951D0.unk_000C = func_80005F5C(sizeof(Vtx) * 16 * 16); + vtx = D_843951D0.unk_000C; + var_v1 = &D_843951D0.unk_1010[0][0]; + + for (i = 0; i < 16; i++) { + for (j = 0; j < 16; j++) { + vtx->v.ob[0] = var_v1->unk_00; + vtx->v.ob[1] = var_v1->unk_04; + vtx->v.ob[2] = var_v1->unk_08; + vtx->v.tc[0] = (i * 0x800) / 3; + vtx->v.tc[1] = (j * 0x800) / 3; + vtx->v.cn[3] = var_v1->unk_10; + vtx++; + var_v1++; + } + } + + gSPDisplayList(arg0++, D_84388F80); + gDPPipeSync(arg0++); + + if (D_843951D0.unk_0000 < 0xA) { + var_a2 = 0; + var_t0 = (D_843951D0.unk_0000 * 0xFF) / 10; + } else if (D_843951D0.unk_0000 < 0x14) { + var_a2 = ((D_843951D0.unk_0000 * 0xFF) - 0x9F6) / 10; + var_t0 = 0xFF; + } else { + var_a2 = 0xFF; + var_t0 = 0xFF; + } + + gDPSetPrimColor(arg0++, 0, 0xB4, 255, 255, 255, var_t0); + gDPSetEnvColor(arg0++, 0, 0x64, 0xC8, var_a2); + gDPSetBlendColor(arg0++, 255, 255, 255, 255); + + gDPLoadTextureTile_4b(arg0++, D_843920C0[0xB8], G_IM_FMT_I, 32, 0, 0, 0, 31, 31, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, 1, 1); + gDPSetTileSize(arg0++, G_TX_RENDERTILE, D_843975E0, -D_843975E0, D_843975E0 + 0x1F, 0x1F - D_843975E0); + + gDPLoadMultiTile_4b(arg0++, D_843920C0[0xB9], 0x0100, 1, G_IM_FMT_I, 32, 0, 0, 0, 31, 31, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, 1, 1); + gDPSetTileSize(arg0++, 1, D_843975E2, D_843975E2, D_843975E2 + 0x1F, D_843975E2 + 0x1F); + + vtx = D_843951D0.unk_000C; + for (i = 0; i < 15; i++) { + for (j = 0; j < 15; j++) { + idx1 = (i + 0) * 16 + j; + idx2 = (i + 1) * 16 + j; + gSPVertex(arg0++, &vtx[idx1 + 0], 1, 0); + gSPVertex(arg0++, &vtx[idx1 + 1], 1, 1); + gSPVertex(arg0++, &vtx[idx2 + (0 * 16) + 0], 1, 2); + gSPVertex(arg0++, &vtx[idx1 + (1 * 16) + 1], 1, 3); + gSP2Triangles(arg0++, 0, 2, 1, 0, 2, 3, 1, 0); + } + } + + sp12C = (D_843975E8.unk_00 - D_843975E8.unk_0C) + D_843975E8.unk_18; + sp130 = (D_843975E8.unk_04 - D_843975E8.unk_10) + D_843975E8.unk_1C; + sp134 = (D_843975E8.unk_08 - D_843975E8.unk_14) + D_843975E8.unk_20; + sp11C = func_8435E158(sp12C, sp134, &sp110); + + sp120 = D_843975E8.unk_00 + D_843975E8.unk_0C + D_843975E8.unk_18; + sp124 = D_843975E8.unk_04 + D_843975E8.unk_10 + D_843975E8.unk_1C; + sp128 = D_843975E8.unk_08 + D_843975E8.unk_14 + D_843975E8.unk_20; + temp_fv0 = func_8435E158(sp120, sp128, &sp110); + + if ((sp130 < sp11C) || (sp124 < temp_fv0)) { + temp_v0 = func_80005F5C(sizeof(Vtx) * 4); + + temp_v0[0].v.ob[0] = (D_843975E8.unk_00 - D_843975E8.unk_0C) - D_843975E8.unk_18; + temp_v0[0].v.ob[1] = sp11C; + temp_v0[0].v.ob[2] = (D_843975E8.unk_08 - D_843975E8.unk_14) - D_843975E8.unk_20; + temp_v0[0].v.tc[0] = 0; + temp_v0[0].v.tc[1] = 0; + + temp_v0[1].v.ob[0] = (D_843975E8.unk_00 + D_843975E8.unk_0C) - D_843975E8.unk_18; + temp_v0[1].v.ob[1] = sp11C; + temp_v0[1].v.ob[2] = (D_843975E8.unk_08 + D_843975E8.unk_14) - D_843975E8.unk_20; + temp_v0[1].v.tc[0] = 0x3E0; + temp_v0[1].v.tc[1] = 0; + + temp_v0[2].v.ob[0] = sp12C; + temp_v0[2].v.ob[1] = sp130; + temp_v0[2].v.ob[2] = sp134; + temp_v0[2].v.tc[0] = 0; + temp_v0[2].v.tc[1] = 0x3E0; + + temp_v0[3].v.ob[0] = sp120; + temp_v0[3].v.ob[1] = sp124; + temp_v0[3].v.ob[2] = sp128; + temp_v0[3].v.tc[0] = 0x3E0; + temp_v0[3].v.tc[1] = 0x3E0; + + gSPDisplayList(arg0++, D_84388FF8); + gDPLoadTextureTile_4b(arg0++, D_843920C0[0xBA], G_IM_FMT_I, 32, 0, 0, 0, 31, 31, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, 15, G_TX_NOLOD); + gDPSetTileSize(arg0++, G_TX_RENDERTILE, D_843975E4, 0, D_843975E4 + 0x1F, 0x001F); + gDPLoadMultiTile_4b(arg0++, D_843920C0[0xBA], 0x0100, 1, G_IM_FMT_I, 32, 0, 0, 0, 31, 31, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, 14, G_TX_NOLOD); + gDPSetTileSize(arg0++, 1, -D_843975E4, 0, 0x1F - D_843975E4, 0x001F); + gSPVertex(arg0++, temp_v0, 4, 0); + gSP2Triangles(arg0++, 0, 2, 1, 0, 2, 3, 1, 0); + } + + return arg0; +} diff --git a/src/fragments/62/fragment62_34A420.c b/src/fragments/62/fragment62_34A420.c new file mode 100644 index 0000000..70a0052 --- /dev/null +++ b/src/fragments/62/fragment62_34A420.c @@ -0,0 +1,1266 @@ +#include "fragment62.h" +#include "src/30640.h" +#include "src/6A40.h" +#include "src/math_util.h" +#include "include/math.h" + +typedef struct unk_D_84397610 { + /* 0x00 */ s16 unk_00; + /* 0x02 */ s16 unk_02; + /* 0x04 */ s16 unk_04; + /* 0x06 */ s16 unk_06; + /* 0x08 */ f32 unk_08; + /* 0x0C */ f32 unk_0C; + /* 0x10 */ f32 unk_10; + /* 0x14 */ f32 unk_14; + /* 0x18 */ f32 unk_18; + /* 0x1C */ f32 unk_1C; + /* 0x20 */ f32 unk_20; + /* 0x24 */ f32 unk_24; + /* 0x28 */ s16 unk_28; + /* 0x2A */ s16 unk_2A; + /* 0x2C */ Vtx* unk_2C; + /* 0x30 */ Color_RGB8 unk_30; + /* 0x33 */ Color_RGB8 unk_33; +} unk_D_84397610; // size = 0x38 + +typedef struct unk_D_84397648 { + /* 0x00 */ f32 unk_00; + /* 0x04 */ f32 unk_04; + /* 0x08 */ f32 unk_08; + /* 0x0C */ f32 unk_0C; +} unk_D_84397648; // size = 0x10 + +static unk_D_84397610 D_84397610; +static unk_D_84397648 D_84397648[400]; +static s32 pad_D_84398F48[2]; +static unk_D_84398F50 D_84398F50[10]; + +static Gfx D_84389060[] = { + gsSPEndDisplayList(), +}; + +static u32 D_84389068[] = { + 0x08080808, 0x08080808, 0x0D0D0D0D, 0x0D0D0D0D, 0x2F2F2F2F, 0x2F2F2F2F, 0x6F6F6F6F, 0x6F6F6F6F, + 0x9F9F9F9F, 0x9F9F9F9F, 0xDFDFDFDF, 0xDFDFDFDF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xDFDFDFDF, 0xDFDFDFDF, 0x9F9F9F9F, 0x9F9F9F9F, + 0x6F6F6F6F, 0x6F6F6F6F, 0x2F2F2F2F, 0x2F2F2F2F, 0x0D0D0D0D, 0x0D0D0D0D, 0x08080808, 0x08080808, +}; + +void func_8435FB90(f32 arg0, f32 arg1, f32 arg2, f32 arg3, u8 arg4, u8 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9) { + unk_D_84397610* ptr1 = &D_84397610; + unk_D_84397648* ptr2; + s32 i; + + ptr1->unk_00 = 0; + ptr1->unk_02 = 0; + ptr1->unk_04 = 0; + ptr1->unk_06 = 0x46; + ptr1->unk_08 = arg0; + ptr1->unk_0C = arg1; + ptr1->unk_10 = arg2; + ptr1->unk_14 = arg3 * 40.0; + ptr1->unk_18 = arg3 * 20.0; + ptr1->unk_1C = 0.0f; + ptr1->unk_20 = arg3; + ptr1->unk_24 = 1.0f; + ptr1->unk_28 = 0; + ptr1->unk_2A = 0; + ptr1->unk_30.r = arg4; + ptr1->unk_30.g = arg5; + ptr1->unk_30.b = arg6; + ptr1->unk_33.r = arg7; + ptr1->unk_33.g = arg8; + ptr1->unk_33.b = arg9; + + ptr2 = &D_84397648[0]; + for (i = 0; i < 400; i++, ptr2++) { + ptr2->unk_00 = arg0; + ptr2->unk_04 = arg1; + ptr2->unk_08 = arg2; + ptr2->unk_0C = ptr1->unk_14; + } +} + +f32 func_8435FCD0(void) { + unk_D_84397610* ptr = &D_84397610; + f32 tmp; + s32 tmp2 = ptr->unk_00; + + if (tmp2 < (ptr->unk_06 - 0x34)) { + return 1.0f; + } + + if (ptr->unk_18 == 0.0f) { + return 1.0f; + } + + tmp = (D_84397648[ptr->unk_06 * 0].unk_0C * 2.0f) / (ptr->unk_14 + ptr->unk_18); + return tmp; +} + +s32 func_8435FD50(void) { + s32 i; + f32 spB8; + f32 temp_fs0_2; + f32 temp_fs4; + f32 temp_fs5; + f32 temp_ft0; + f32 var_fs1; + unk_D_84397648* var_s0; + unk_D_84397610* ptr = &D_84397610; + f32 sp98; + f32 sp94; + f32 sp90; + f32 tmp2; + s32 tmp00; + Vec3f sp7C; + + ptr->unk_00++; + if (ptr->unk_06 < ptr->unk_00) { + return -1; + } + + if ((ptr->unk_06 - 0x28) < ptr->unk_00) { + ptr->unk_00 = ptr->unk_06 - 0x34; + ptr->unk_02++; + if (ptr->unk_02 >= 0x15) { + return -1; + } + } else if (ptr->unk_00 < 0x1E) { + ptr->unk_2A += 10; + if (ptr->unk_2A > 0xC8) { + ptr->unk_2A = 0xC8; + } + } + + func_8432FB38(&sp7C); + sp98 = sp7C.x; + sp94 = sp7C.y; + sp90 = sp7C.z; + + ptr->unk_28 += 6; + if (ptr->unk_28 > 0xC8) { + ptr->unk_28 = 0xC8; + } + + if (((ptr->unk_06 - 0x34) < ptr->unk_00) && (ptr->unk_00 < (ptr->unk_06 - 0x28))) { + ptr->unk_24 -= 0.1; + if (ptr->unk_24 < 0.25) { + ptr->unk_24 = 0.25f; + } + } + + var_s0 = &D_84397648[0]; + + for (i = 0; i < ptr->unk_28; i++) { + tmp00 = ptr->unk_00; + + if ((ptr->unk_06 - 0x28) < tmp00) { + var_s0->unk_0C -= 6.0; + if (var_s0->unk_0C < ptr->unk_18) { + var_s0->unk_0C = ptr->unk_18; + } + // M_PI * 80 + var_fs1 = __sinf((((ptr->unk_00 + i) % 200) * 251.327419281005859) / 200.0) * 0.1; + } else if ((ptr->unk_06 - 0x2D) < tmp00) { + var_fs1 = __sinf((((ptr->unk_00 + i) % 200) * 251.327419281005859) / 200.0) + 2.0; + var_s0->unk_0C += var_fs1; + } else if ((ptr->unk_06 - 0x34) < tmp00) { + var_s0->unk_0C -= 8.0; + if (var_s0->unk_0C < ptr->unk_18) { + var_s0->unk_0C = ptr->unk_18; + } + var_fs1 = __sinf((((ptr->unk_00 + i) % 200) * 251.327419281005859) / 200.0) * 0.1; + } else { + // M_PI * 60 + var_fs1 = __sinf((((ptr->unk_00 + i) % 200) * 188.495564460754395) / 200.0); + var_s0->unk_0C += var_fs1; + } + + tmp2 = var_s0->unk_0C; + + // M_PI * 22 + temp_fs4 = (((tmp00 + i) % 200) * 69.1150403022766113) / 200.0; + // M_PI * 4 + temp_fs5 = (((tmp00 + i) % 200) * 12.566370964050293) / 200.0; + + spB8 = (__sinf(temp_fs4) * tmp2) + sp98; + temp_fs0_2 = (__sinf(temp_fs5) * (0.7 * tmp2)) + sp94; + temp_ft0 = __cosf(temp_fs4) * tmp2 + sp90; + + var_s0->unk_08 = temp_ft0; + var_s0->unk_04 = temp_fs0_2 + var_fs1; + var_s0->unk_00 = spB8; + var_s0++; + + var_s0->unk_00 = spB8; + var_s0->unk_04 = (2.0 * __sinf(temp_fs5 * 3.0)) + temp_fs0_2 + var_fs1; + var_s0->unk_08 = temp_ft0; + var_s0++; + } + + return 0; +} + +Gfx* func_8436032C(Gfx* arg0) { + static Gfx D_843890E8[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_LIGHTING | G_SHADING_SMOOTH), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, + TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0), + gsDPSetColorDither(G_CD_NOISE), + gsDPLoadTextureBlock(D_84389068, G_IM_FMT_IA, G_IM_SIZ_8b, 8, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 3, 4, G_TX_NOLOD, G_TX_NOLOD), + gsDPPipeSync(), + gsSPEndDisplayList(), + }; + + Vtx* vtx; + s32 i; + unk_D_84397648* var_a0; + unk_D_84397610* ptr = &D_84397610; + + if (ptr->unk_28 < 2) { + return arg0; + } + ptr->unk_2C = func_80005F5C(ptr->unk_28 * 2 * sizeof(Vtx)); + vtx = ptr->unk_2C; + var_a0 = &D_84397648[0]; + + for (i = 0; i < ptr->unk_28; i++) { + vtx->v.ob[0] = var_a0->unk_00; + if (var_a0->unk_04 > 0.0) { + vtx->v.ob[1] = var_a0->unk_04; + } else { + vtx->v.ob[1] = 0; + } + vtx->v.ob[2] = var_a0->unk_08; + + vtx->v.tc[0] = (i * 8) << 5; + vtx->v.tc[1] = 0; + + vtx++; + var_a0++; + + vtx->v.ob[0] = var_a0->unk_00; + if (var_a0->unk_04 > 0.0) { + vtx->v.ob[1] = var_a0->unk_04; + } else { + vtx->v.ob[1] = 0; + } + vtx->v.ob[2] = var_a0->unk_08; + + vtx->v.tc[0] = (i * 8) << 5; + vtx->v.tc[1] = 0x200; + + vtx++; + var_a0++; + } + + gSPDisplayList(arg0++, D_843890E8); + gDPSetPrimColor(arg0++, 0, 0, ptr->unk_30.r, ptr->unk_30.g, ptr->unk_30.b, 200); + gDPSetEnvColor(arg0++, ptr->unk_33.r, ptr->unk_33.g, ptr->unk_33.b, 0); + + vtx = ptr->unk_2C; + for (i = 0; i < ptr->unk_28 - 1; i++) { + gSPVertex(arg0++, vtx, 4, 0); + gSP2Triangles(arg0++, 0, 2, 1, 0, 2, 3, 1, 0); + vtx += 2; + } + + return arg0; +} + +void func_843605C0(void) { + s16 temp_v0; + s32 i; + s32 j; + unk_D_84398F50* var_a2; + unk_D_84398F50_048* var_v1; + + temp_v0 = func_8436E944(); + var_a2 = &D_84398F50[0]; + + for (i = 0; i < 10; i++) { + var_a2->unk_000 = 0; + var_a2->unk_004 = 0; + var_a2->unk_006 = 0; + + var_v1 = &var_a2->unk_048[0]; + for (j = 0; j < 20; j++, var_v1++) { + var_v1->unk_00 = 0.0f; + var_v1->unk_04 = 0; + var_v1->unk_08 = 1.0f; + var_v1->unk_0C = 0.0f; + var_v1->unk_10.x = 0.0f; + var_v1->unk_10.y = 0.0f; + var_v1->unk_10.z = 0.0f; + var_v1->unk_1C.x = 0.0f; + var_v1->unk_1C.y = 0.0f; + var_v1->unk_1C.z = 0.0f; + } + + var_a2->unk_002 = temp_v0; + var_a2++; + } +} + +void func_843606D0(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, s16 arg6, u8 arg7, u8 arg8, u8 arg9, + u8 argA, f32 argB, f32 argC, f32 argD, s16 argE) { + unk_D_84398F50* var_v0; + unk_D_84398F50_048* var_a1_2; + s32 i; + s32 j; + Vec3f sp14; + Vec3f sp8; + + sp14.x = arg0; + sp14.y = arg1; + sp14.z = arg2; + sp8.x = arg3; + sp8.y = arg4; + sp8.z = arg5; + + var_v0 = &D_84398F50[0]; + + for (i = 0; i < 10; i++, var_v0++) { + if (var_v0->unk_000 == 0) { + var_v0->unk_000 = 1; + var_v0->unk_004 = 0; + var_v0->unk_006 = argE; + var_v0->unk_008 = arg6; + var_v0->unk_00A.r = arg7; + var_v0->unk_00A.g = arg8; + var_v0->unk_00A.b = arg9; + var_v0->unk_00A.a = argA; + var_v0->unk_014 = argD; + var_v0->unk_018 = argB; + + // clang-format off + for (j = 0; j < 3; j++) { var_v0->unk_038[j] = 0; } + // clang-format on + + var_a1_2 = &var_v0->unk_048[0]; + for (j = 0; j < 20; j++) { + var_a1_2->unk_00 = j; + if (j == 0) { + var_a1_2->unk_04 = 0xFF; + } else { + var_a1_2->unk_04 = (argA * (0x13 - j)) / 20; + } + var_a1_2->unk_08 = argC; + var_a1_2->unk_0C = 0.0f; + var_a1_2->unk_10 = sp14; + var_a1_2->unk_1C = sp8; + var_a1_2++; + } + break; + } + } +} + +void func_8436090C(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, s16 arg6, u8 arg7, u8 arg8, u8 arg9, + u8 argA, f32 argB, f32 argC, f32 argD, s16 argE) { + unk_D_84398F50* var_v0; + unk_D_84398F50_048* var_v1_2; + s32 i; + s32 j; + Vec3f spC; + Vec3f sp0; + + spC.x = arg0; + spC.y = arg1; + spC.z = arg2; + sp0.x = arg3; + sp0.y = arg4; + sp0.z = arg5; + + var_v0 = &D_84398F50[0]; + + for (i = 0; i < 10; i++, var_v0++) { + if (var_v0->unk_000 == 0) { + var_v0->unk_000 = 1; + var_v0->unk_004 = 0; + var_v0->unk_006 = argE; + var_v0->unk_008 = arg6; + var_v0->unk_00A.r = arg7; + var_v0->unk_00A.g = arg8; + var_v0->unk_00A.b = arg9; + var_v0->unk_014 = argD; + var_v0->unk_018 = argB; + + var_v1_2 = &var_v0->unk_048[0]; + for (j = 0; j < 20; j++, var_v1_2++) { + var_v1_2->unk_00 = j; + var_v1_2->unk_04 = argA; + var_v1_2->unk_08 = argC; + var_v1_2->unk_0C = 0.0f; + var_v1_2->unk_10 = spC; + var_v1_2->unk_1C = sp0; + } + break; + } + } +} + +void func_84360B10(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, s16 arg6, u8 arg7, u8 arg8, u8 arg9, + u8 argA, u8 argB, u8 argC, u8 argD, f32 argE, f32 argF, f32 arg10, s16 arg11) { + unk_D_84398F50* var_v0; + unk_D_84398F50_048* var_s0; + s32 i; + s32 j; + Vec3f spBC; + Vec3f spB0; + s32 temp_fp; + s32 temp_s2; + s32 spA4; + s32 temp_s3; + s32 temp_s4; + s32 temp_s7; + s32 tmp; + + spBC.x = arg0; + spBC.y = arg1; + spBC.z = arg2; + spB0.x = arg3; + spB0.y = arg4; + spB0.z = arg5; + + var_v0 = &D_84398F50[0]; + + for (i = 0; i < 10; i++, var_v0++) { + if (var_v0->unk_000 == 0) { + var_s0 = &var_v0->unk_048[0]; + + var_v0->unk_000 = 1; + var_v0->unk_004 = 0; + var_v0->unk_006 = arg11; + var_v0->unk_008 = arg6; + var_v0->unk_00A.r = arg7; + var_v0->unk_00A.g = arg8; + var_v0->unk_00A.b = arg9; + var_v0->unk_00A.a = argA; + var_v0->unk_00E.r = argB; + var_v0->unk_00E.g = argC; + var_v0->unk_00E.b = argD; + var_v0->unk_014 = arg10; + var_v0->unk_018 = argE; + + temp_s7 = (guRandom() % 20) + 2; + temp_fp = (guRandom() % 10) + 4; + spA4 = (guRandom() % 20) + 2; + temp_s4 = (guRandom() % 10) + 4; + + for (j = 0, temp_s3 = temp_s7, temp_s2 = spA4; j < 20; j++) { + var_s0->unk_00 = j; + var_s0->unk_04 = argA; + var_s0->unk_08 = argF; + var_s0->unk_0C = 0.0f; + var_s0->unk_10 = spBC; + var_s0->unk_1C = spB0; + + var_s0->unk_1C.y += 2.0 * __sinf(((temp_s3 % temp_fp) * TWO_PI) / temp_fp) * + __sinf(((temp_s2 % (temp_s4 + 0x14)) * TWO_PI) / (temp_s4 + 0x14)); + var_s0->unk_1C.z += 0.5 * __sinf(((temp_s2 % temp_s4) * TWO_PI) / temp_s4); + tmp = j * 0.5; + var_s0->unk_10.x += var_s0->unk_1C.x * ((j * 0.5) - tmp); + + temp_s2++; + temp_s3++; + var_s0++; + } + break; + } + } +} + +void func_84360EFC(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, s16 arg6, u8 arg7, u8 arg8, u8 arg9, + u8 argA, u8 argB, u8 argC, u8 argD, f32 argE, f32 argF, f32 arg10, s16 arg11) { + unk_D_84398F50* var_v0; + unk_D_84398F50_048* var_s0; + s32 i; + s32 j; + Vec3f spBC; + Vec3f spB0; + s32 temp_fp; + s32 temp_s2; + s32 spA4; + s32 temp_s3; + s32 temp_s4; + s32 temp_s7; + s32 tmp; + + spBC.x = arg0; + spBC.y = arg1; + spBC.z = arg2; + spB0.x = arg3; + spB0.y = arg4; + spB0.z = arg5; + + var_v0 = &D_84398F50[0]; + + for (i = 0; i < 10; i++, var_v0++) { + if (var_v0->unk_000 == 0) { + var_s0 = &var_v0->unk_048[0]; + + var_v0->unk_000 = 1; + var_v0->unk_004 = 0; + var_v0->unk_006 = arg11; + var_v0->unk_008 = arg6; + var_v0->unk_00A.r = arg7; + var_v0->unk_00A.g = arg8; + var_v0->unk_00A.b = arg9; + var_v0->unk_00A.a = argA; + var_v0->unk_00E.r = argB; + var_v0->unk_00E.g = argC; + var_v0->unk_00E.b = argD; + var_v0->unk_014 = arg10; + var_v0->unk_018 = argE; + + temp_s7 = (guRandom() % 20) + 2; + temp_fp = (guRandom() % 10) + 4; + spA4 = (guRandom() % 20) + 2; + temp_s4 = (guRandom() % 10) + 4; + + for (j = 0, temp_s3 = temp_s7, temp_s2 = spA4; j < 20; j++) { + var_s0->unk_00 = j; + var_s0->unk_04 = argA; + var_s0->unk_08 = argF; + var_s0->unk_0C = 0.0f; + var_s0->unk_10 = spBC; + var_s0->unk_1C = spB0; + + var_s0->unk_1C.z += 2.5 * __sinf(((temp_s3 % temp_fp) * TWO_PI) / temp_fp) * + __sinf(((temp_s2 % (temp_s4 + 0x14)) * TWO_PI) / (temp_s4 + 0x14)); + var_s0->unk_1C.y += 0.5 * __sinf(((temp_s2 % temp_s4) * TWO_PI) / temp_s4); + tmp = j * 0.5; + var_s0->unk_10.x += var_s0->unk_1C.x * ((j * 0.5) - tmp); + + temp_s2++; + temp_s3++; + var_s0++; + } + break; + } + } +} + +void func_843612F8(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, s16 arg6, u8 arg7, u8 arg8, u8 arg9, + u8 argA, f32 argB, f32 argC, f32 argD, s16 argE) { + unk_D_84398F50* var_v0; + unk_D_84398F50_048* var_s0; + s32 i; + s32 j; + Vec3f spBC; + Vec3f spB0; + s32 temp_fp; + s32 temp_s5; + s32 temp_s6; + s32 temp_s7; + + spBC.x = arg0; + spBC.y = arg1; + spBC.z = arg2; + spB0.x = arg3; + spB0.y = arg4; + spB0.z = arg5; + + var_v0 = &D_84398F50[0]; + + for (i = 0; i < 10; i++, var_v0++) { + if (var_v0->unk_000 == 0) { + var_s0 = &var_v0->unk_048[0]; + + var_v0->unk_000 = 1; + var_v0->unk_004 = 0; + var_v0->unk_006 = argE; + var_v0->unk_008 = arg6; + var_v0->unk_00A.r = arg7; + var_v0->unk_00A.g = arg8; + var_v0->unk_00A.b = arg9; + var_v0->unk_014 = argD; + var_v0->unk_018 = argB; + + temp_s5 = RAND(20) + 2; + temp_s7 = RAND(10) + 4; + temp_s6 = RAND(20) + 2; + temp_fp = RAND(10) + 4; + + for (j = 0; j < 20; j++) { + var_s0->unk_00 = j; + var_s0->unk_04 = argA; + var_s0->unk_08 = argC; + var_s0->unk_0C = 0.0f; + var_s0->unk_10 = spBC; + + var_s0->unk_10.y += 5.0 * __sinf((((temp_s5 + j) % temp_s7) * TWO_PI) / temp_s7) * + __sinf((((temp_s6 + j) % (temp_fp + 20)) * TWO_PI) / (temp_fp + 20)); + var_s0->unk_10.z += 5.0 * __cosf((((temp_s5 + j) % temp_s7) * TWO_PI) / temp_s7) * + __cosf((((temp_s6 + j) % (temp_fp + 20)) * TWO_PI) / (temp_fp + 20)); + var_s0->unk_1C = spB0; + + var_s0->unk_10.x += var_s0->unk_1C.x * ((j * 0.5) - (s32)(j * 0.5)); + + var_s0++; + } + break; + } + } +} + +void func_843616B0(f32 arg0, UNUSED Vec3f* arg1, Vec3f* arg2, f32 arg3, UNUSED f32 arg4, UNUSED f32 arg5, + UNUSED f32 arg6) { + UNUSED MtxF pad; + MtxF sp30; + UNUSED s32 pad2[2]; + + guRotateF(sp30.mf, (arg0 * 360.0) / TWO_PI, 1.0f, 0.0f, 0.0f); + guMtxXFMF(sp30.mf, 0.0f, 0.0f, arg3, &arg2->x, &arg2->y, &arg2->z); +} + +void func_84361744(unk_D_84398F50* arg0) { + unk_D_84398F50_048* var_v0; + UNUSED s32 pad; + s32 i; + Vec3f sp28; + + func_8432FBBC(&sp28); + + switch (arg0->unk_008) { + case 0: + var_v0 = &arg0->unk_048[0]; + for (i = 0; i < 20; i++, var_v0++) { + if (var_v0->unk_00 > 0.0) { + var_v0->unk_00 -= 1.0; + } else { + var_v0->unk_10.x += var_v0->unk_1C.x; + var_v0->unk_10.y += var_v0->unk_1C.y; + var_v0->unk_10.z += var_v0->unk_1C.z; + var_v0->unk_0C += arg0->unk_018; + + var_v0->unk_08 += 1.0; + if (arg0->unk_014 < var_v0->unk_08) { + var_v0->unk_08 = arg0->unk_014; + } + } + } + break; + + case 3: + var_v0 = &arg0->unk_048[0]; + for (i = 0; i < 20; i++, var_v0++) { + if (var_v0->unk_00 > 0.0) { + var_v0->unk_10 = sp28; + var_v0->unk_00 -= 1.0; + } else { + var_v0->unk_10.x += var_v0->unk_1C.x; + var_v0->unk_10.y += var_v0->unk_1C.y; + var_v0->unk_10.z += var_v0->unk_1C.z; + + var_v0->unk_0C += arg0->unk_018; + + if (var_v0->unk_1C.x > 1.0) { + var_v0->unk_1C.x -= 0.1; + } + + if (var_v0->unk_1C.x < -1.0) { + var_v0->unk_1C.x += 0.1; + } + + var_v0->unk_1C.y -= 0.2; + if (var_v0->unk_1C.y < -1.0) { + var_v0->unk_1C.y = -1.0f; + } + + if (var_v0->unk_10.y < 0.0) { + var_v0->unk_10.y = 0.0f; + } + } + } + break; + + default: + var_v0 = &arg0->unk_048[0]; + for (i = 0; i < 20; i++, var_v0++) { + if (var_v0->unk_00 > 0.0) { + var_v0->unk_10 = sp28; + var_v0->unk_00 -= 1.0; + } else { + var_v0->unk_10.x += var_v0->unk_1C.x; + var_v0->unk_10.y = sp28.y; + var_v0->unk_10.z = sp28.z; + + var_v0->unk_0C += arg0->unk_018; + var_v0->unk_08 += 1.0; + + if (arg0->unk_014 < var_v0->unk_08) { + var_v0->unk_08 = arg0->unk_014; + } + } + } + break; + + case 6: + var_v0 = &arg0->unk_048[0]; + for (i = 0; i < 20; i++, var_v0++) { + if (var_v0->unk_00 > 0.0) { + var_v0->unk_10 = sp28; + var_v0->unk_00 -= 1.0; + } else { + var_v0->unk_10.x += var_v0->unk_1C.x; + var_v0->unk_10.y += var_v0->unk_1C.y; + var_v0->unk_10.z += var_v0->unk_1C.z; + + var_v0->unk_0C += arg0->unk_018; + var_v0->unk_08 += 1.0; + + if (arg0->unk_014 < var_v0->unk_08) { + var_v0->unk_08 = arg0->unk_014; + } + } + } + break; + + case 7: + case 8: + var_v0 = &arg0->unk_048[0]; + for (i = 0; i < 20; i++, var_v0++) { + if (var_v0->unk_00 > 0.0) { + var_v0->unk_00 -= 1.0; + } else { + var_v0->unk_10.x += var_v0->unk_1C.x; + var_v0->unk_10.y += var_v0->unk_1C.y; + var_v0->unk_10.z += var_v0->unk_1C.z; + + var_v0->unk_0C += arg0->unk_018; + var_v0->unk_08 += 1.0; + + if (arg0->unk_014 < var_v0->unk_08) { + var_v0->unk_08 = arg0->unk_014; + } + } + } + break; + + case 2: + case 4: + var_v0 = &arg0->unk_048[0]; + for (i = 0; i < 20; i++, var_v0++) { + if (var_v0->unk_00 > 0.0) { + var_v0->unk_00 -= 1.0; + } else { + var_v0->unk_10.x += var_v0->unk_1C.x; + var_v0->unk_10.y += var_v0->unk_1C.y; + var_v0->unk_10.z += var_v0->unk_1C.z; + + var_v0->unk_0C += arg0->unk_018; + var_v0->unk_08 += 1.0; + + if (arg0->unk_014 < var_v0->unk_08) { + var_v0->unk_08 = arg0->unk_014; + } + } + } + break; + } +} + +s32 func_84361FB0(void) { + s32 i; + s32 var_s2 = 0; + unk_D_84398F50* var_s0 = D_84398F50; + + for (i = 0; i < 10; i++, var_s0++) { + if (var_s0->unk_000 == 1) { + var_s0->unk_004++; + if (var_s0->unk_006 < var_s0->unk_004) { + var_s0->unk_000 = 0; + if (var_s0->unk_008 == 8) {} + } else { + func_84361744(var_s0); + var_s2++; + } + func_8436EB54(var_s0->unk_002); + } + } + + if (var_s2 > 0) { + return 0; + } + return -1; +} + +static s32 pad_D_84389178[2] = { 0, 0 }; + +static Gfx D_84389180[] = { + gsSPEndDisplayList(), +}; + +static u32 D_84389188[] = { + 0x08080808, 0x08080808, 0x0D0D0D0D, 0x0D0D0D0D, 0x2F2F2F2F, 0x2F2F2F2F, 0x6F6F6F6F, 0x6F6F6F6F, + 0x9F9F9F9F, 0x9F9F9F9F, 0xDFDFDFDF, 0xDFDFDFDF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xDFDFDFDF, 0xDFDFDFDF, 0x9F9F9F9F, 0x9F9F9F9F, + 0x6F6F6F6F, 0x6F6F6F6F, 0x2F2F2F2F, 0x2F2F2F2F, 0x0D0D0D0D, 0x0D0D0D0D, 0x08080808, 0x08080808, +}; + +#ifdef NON_MATCHING +Gfx* func_84362084(Gfx* arg0) { + static Gfx D_84389208[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_LIGHTING | G_SHADING_SMOOTH), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, + TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0), + gsDPSetColorDither(G_CD_NOISE), + gsDPLoadTextureBlock(D_84389068, G_IM_FMT_IA, G_IM_SIZ_8b, 8, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 3, 4, G_TX_NOLOD, G_TX_NOLOD), + gsSPEndDisplayList(), + }; + static Gfx D_84389290[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetColorDither(G_CD_NOISE), + gsSPEndDisplayList(), + }; + static u8 D_843892E0[] = { 0xFF, 0, 0xFF }; + static u8 D_843892E4[] = { 0x20, 0x20, 0xFF }; + static u8 D_843892E8[] = { 0, 0xFF, 0 }; + static f32 D_843892EC[] = { 1.0f, 1.73205f, 1.0f, 0.0f, 0.0f }; + + s32 i; + s32 j; + s32 x; + s32 y; + u8 sp1BC; + unk_D_84398F50* sp1B4; + Vec3f sp1A0; + unk_D_84398F50_048* var_s2; + Vtx* vtx; + + sp1BC = 1; + if (sp1BC) {} + sp1B4 = D_84398F50; + + for (i = 0; i < 10; i++, sp1B4++) { + if (sp1B4->unk_000 != 1) { + continue; + } + + var_s2 = &sp1B4->unk_048[0]; + if (var_s2) {} + + switch (sp1B4->unk_008) { + case 0: + case 3: + vtx = func_80005F5C(sizeof(Vtx) * 40); + sp1B4->unk_01C = vtx; + + for (j = 0; j < 20; j++, var_s2++) { + func_843616B0(var_s2->unk_0C, &var_s2->unk_1C, &sp1A0, var_s2->unk_08, 1.0f, 0.0f, 0.0f); + + vtx->v.ob[0] = var_s2->unk_10.x + sp1A0.x; + vtx->v.ob[1] = var_s2->unk_10.y + sp1A0.y; + vtx->v.ob[2] = var_s2->unk_10.z + sp1A0.z; + vtx->v.tc[0] = (j * 8) << 5; + vtx->v.tc[1] = 0; + vtx++; + + if (var_s2->unk_00 <= 0.0) { + func_843616B0(var_s2->unk_0C + M_PI_F, &var_s2->unk_1C, &sp1A0, var_s2->unk_08, 1.0f, 0.0f, + 0.0f); + } + + vtx->v.ob[0] = var_s2->unk_10.x + sp1A0.x; + vtx->v.ob[1] = var_s2->unk_10.y + sp1A0.y; + vtx->v.ob[2] = var_s2->unk_10.z + sp1A0.z; + vtx->v.tc[0] = (j * 8) << 5; + vtx->v.tc[1] = 0x200; + vtx++; + } + break; + + case 1: + vtx = func_80005F5C(sizeof(Vtx) * 60); + sp1B4->unk_01C = vtx; + + for (j = 0; j < 20; j++, var_s2++) { + func_843616B0(var_s2->unk_0C, &var_s2->unk_1C, &sp1A0, var_s2->unk_08, 1.0f, 0.0f, 0.0f); + + vtx->v.ob[0] = var_s2->unk_10.x + sp1A0.x; + vtx->v.ob[1] = var_s2->unk_10.y + sp1A0.y; + vtx->v.ob[2] = var_s2->unk_10.z + sp1A0.z; + vtx->v.cn[0] = 0xFF; + vtx->v.cn[1] = 0x40; + vtx->v.cn[2] = 0x40; + vtx->v.cn[3] = var_s2->unk_04; + vtx++; + + if (var_s2->unk_00 <= 0.0) { + func_843616B0(var_s2->unk_0C + TWO_THIRDS_PI, &var_s2->unk_1C, &sp1A0, var_s2->unk_08, 1.0f, + 0.0f, 0.0f); + } + + vtx->v.ob[0] = var_s2->unk_10.x + sp1A0.x; + vtx->v.ob[1] = var_s2->unk_10.y + sp1A0.y; + vtx->v.ob[2] = var_s2->unk_10.z + sp1A0.z; + vtx->v.cn[0] = 0; + vtx->v.cn[1] = 0xA0; + vtx->v.cn[2] = 0xFF; + vtx->v.cn[3] = var_s2->unk_04; + vtx++; + + if (var_s2->unk_00 <= 0.0) { + func_843616B0(var_s2->unk_0C + TWO_THIRDS_PI * 2, &var_s2->unk_1C, &sp1A0, var_s2->unk_08, 1.0f, + 0.0f, 0.0f); + } + + vtx->v.ob[0] = var_s2->unk_10.x + sp1A0.x; + vtx->v.ob[1] = var_s2->unk_10.y + sp1A0.y; + vtx->v.ob[2] = var_s2->unk_10.z + sp1A0.z; + vtx->v.cn[0] = 0xFF; + vtx->v.cn[1] = 0xFF; + vtx->v.cn[2] = 0; + vtx->v.cn[3] = var_s2->unk_04; + vtx++; + } + break; + + case 5: + vtx = func_80005F5C(sizeof(Vtx) * 60); + sp1B4->unk_01C = vtx; + + for (j = 0; j < 20; j++, var_s2++) { + func_843616B0(var_s2->unk_0C, &var_s2->unk_1C, &sp1A0, var_s2->unk_08, 1.0f, 0.0f, 0.0f); + + vtx->v.ob[0] = var_s2->unk_10.x + sp1A0.x; + vtx->v.ob[1] = var_s2->unk_10.y + sp1A0.y; + vtx->v.ob[2] = var_s2->unk_10.z + sp1A0.z; + vtx->v.cn[0] = sp1B4->unk_00A.r; + vtx->v.cn[1] = sp1B4->unk_00A.g; + vtx->v.cn[2] = sp1B4->unk_00A.b; + vtx->v.cn[3] = var_s2->unk_04; + vtx++; + + if (var_s2->unk_00 <= 0.0) { + func_843616B0(var_s2->unk_0C + TWO_THIRDS_PI, &var_s2->unk_1C, &sp1A0, var_s2->unk_08, 1.0f, + 0.0f, 0.0f); + } + + vtx->v.ob[0] = var_s2->unk_10.x + sp1A0.x; + vtx->v.ob[1] = var_s2->unk_10.y + sp1A0.y; + vtx->v.ob[2] = var_s2->unk_10.z + sp1A0.z; + vtx->v.cn[0] = sp1B4->unk_00A.r; + vtx->v.cn[1] = sp1B4->unk_00A.g; + vtx->v.cn[2] = sp1B4->unk_00A.b; + vtx->v.cn[3] = var_s2->unk_04; + vtx++; + + if (var_s2->unk_00 <= 0.0) { + func_843616B0(var_s2->unk_0C + TWO_THIRDS_PI * 2, &var_s2->unk_1C, &sp1A0, var_s2->unk_08, 1.0f, + 0.0f, 0.0f); + } + + vtx->v.ob[0] = var_s2->unk_10.x + sp1A0.x; + vtx->v.ob[1] = var_s2->unk_10.y + sp1A0.y; + vtx->v.ob[2] = var_s2->unk_10.z + sp1A0.z; + vtx->v.cn[0] = sp1B4->unk_00A.r; + vtx->v.cn[1] = sp1B4->unk_00A.g; + vtx->v.cn[2] = sp1B4->unk_00A.b; + vtx->v.cn[3] = var_s2->unk_04; + vtx++; + } + break; + + case 6: + case 7: + vtx = func_80005F5C(sizeof(Vtx) * 20 * 6); + sp1B4->unk_01C = vtx; + + for (j = 0; j < 20; j++, var_s2++) { + for (x = 0; x < 6; x++) { + func_843616B0(var_s2->unk_0C + ((2.0 * x * M_PI) / 6.0), &var_s2->unk_1C, &sp1A0, + var_s2->unk_08, 1.0f, 0.0f, 0.0f); + + vtx->v.ob[0] = var_s2->unk_10.x + sp1A0.x; + vtx->v.ob[1] = var_s2->unk_10.y + sp1A0.y; + vtx->v.ob[2] = var_s2->unk_10.z + sp1A0.z; + vtx->v.cn[0] = sp1B4->unk_00A.r; + vtx->v.cn[1] = sp1B4->unk_00A.g; + vtx->v.cn[2] = sp1B4->unk_00A.b; + vtx->v.cn[3] = 0x64; + vtx++; + } + } + break; + + case 8: + vtx = func_80005F5C(sizeof(Vtx) * 20 * 3 * 3); + sp1B4->unk_01C = vtx; + + for (j = 0; j < 20; j++, var_s2++) { + for (x = 0; x < 3; x++) { + for (y = 0; y < 3; y++) { + f32 x1, y1, z1; + + func_843616B0(var_s2->unk_0C + ((TWO_PI_F * y) / 12.0f) + ((TWO_PI_F * x) / 3.0f), + &var_s2->unk_1C, &sp1A0, D_843892EC[y] * var_s2->unk_08, 1.0f, 0.0f, 0.0f); + + x1 = var_s2->unk_10.x + sp1A0.x; + y1 = var_s2->unk_10.y + sp1A0.y; + z1 = var_s2->unk_10.z + sp1A0.z; + + vtx->v.ob[0] = x1; + vtx->v.ob[1] = y1; + vtx->v.ob[2] = z1; + + if ((y == 0) && (RAND(100) == 0)) { + func_8436EA0C(sp1B4->unk_002, x1, y1, z1, 0xA, 0.75f); + } + + vtx->v.cn[0] = ((D_843892E0[x] * (0xFF - var_s2->unk_04)) + (var_s2->unk_04 * 0xFF)) / 255; + vtx->v.cn[1] = ((D_843892E4[x] * (0xFF - var_s2->unk_04)) + (var_s2->unk_04 * 0xFF)) / 255; + vtx->v.cn[2] = ((D_843892E8[x] * (0xFF - var_s2->unk_04)) + (var_s2->unk_04 * 0xFF)) / 255; + vtx->v.cn[3] = var_s2->unk_04; + vtx++; + } + } + } + break; + + case 2: + case 4: + vtx = func_80005F5C(sizeof(Vtx) * 20 * 15); + sp1B4->unk_01C = vtx; + + for (j = 0; j < 20; j++, var_s2++) { + for (x = 0; x < 15; x++) { + if (var_s2->unk_00 <= 0.0) { + func_843616B0(var_s2->unk_0C + ((2.0 * x * M_PI) / 15.0), &var_s2->unk_1C, &sp1A0, + var_s2->unk_08, 1.0f, 0.0f, 0.0f); + } + + vtx->v.ob[0] = var_s2->unk_10.x + sp1A0.x; + vtx->v.ob[1] = var_s2->unk_10.y + sp1A0.y; + vtx->v.ob[2] = var_s2->unk_10.z + sp1A0.z; + vtx->v.cn[0] = sp1B4->unk_00A.r; + vtx->v.cn[1] = sp1B4->unk_00A.g; + vtx->v.cn[2] = sp1B4->unk_00A.b; + vtx->v.cn[3] = var_s2->unk_04; + vtx++; + } + } + break; + } + + vtx = sp1B4->unk_01C; + for (x = 0; x < 19; x++) { + switch (sp1B4->unk_008) { + case 0: + case 3: + gSPDisplayList(arg0++, D_84389208); + gDPSetPrimColor(arg0++, 0, 0, sp1B4->unk_00A.r, sp1B4->unk_00A.g, sp1B4->unk_00A.b, + sp1B4->unk_00A.a); + gDPSetEnvColor(arg0++, sp1B4->unk_00E.r, sp1B4->unk_00E.g, sp1B4->unk_00E.b, 0); + gSPVertex(arg0++, vtx, 4, 0); + gSP2Triangles(arg0++, 0, 2, 1, 0, 2, 3, 1, 0); + vtx += 2; + break; + + default: + gSPDisplayList(arg0++, D_84389290); + gSPClearGeometryMode(arg0++, G_CULL_BOTH); + gSPSetGeometryMode(arg0++, G_CULL_FRONT); + gSPVertex(arg0++, vtx, 6, 0); + gSP2Triangles(arg0++, 0, 3, 1, 0, 3, 4, 1, 0); + gSP2Triangles(arg0++, 1, 4, 2, 0, 4, 5, 2, 0); + gSP2Triangles(arg0++, 2, 5, 0, 0, 5, 3, 0, 0); + vtx += 3; + break; + + case 6: + case 7: + gSPDisplayList(arg0++, D_84389290); + gSPClearGeometryMode(arg0++, G_CULL_BOTH); + gSPSetGeometryMode(arg0++, G_CULL_FRONT); + gSPVertex(arg0++, vtx, 12, 0); + gSP2Triangles(arg0++, 0, 6, 1, 0, 1, 6, 7, 0); + + for (j = 0; j < 1; j++) { + u8 idx = j * 1 + 1; + gSP2Triangles(arg0++, idx + 0, idx + 6, idx + 1, 0, idx + 1, idx + 6, idx + 7, 0); + gSP2Triangles(arg0++, idx + 1, idx + 7, idx + 2, 0, idx + 2, idx + 7, idx + 8, 0); + gSP2Triangles(arg0++, idx + 2, idx + 8, idx + 3, 0, idx + 3, idx + 8, idx + 9, 0); + gSP2Triangles(arg0++, idx + 3, idx + 9, idx + 4, 0, idx + 4, idx + 9, idx + 10, 0); + } + + gSP2Triangles(arg0++, 5, 11, 0, 0, 0, 11, 6, 0); + vtx += 6; + break; + + case 2: + case 4: + gSPDisplayList(arg0++, D_84389290); + gSPVertex(arg0++, vtx, 30, 0); + gSP2Triangles(arg0++, 0, 15, 1, 0, 15, 16, 1, 0); + gSP2Triangles(arg0++, 1, 16, 2, 0, 16, 17, 2, 0); + + for (j = 0; j < 3; j++) { + gSP2Triangles(arg0++, 2 + j * 4, 17 + j * 4, 3 + j * 4, 0, 17 + j * 4, 18 + j * 4, 3 + j * 4, + 0); + gSP2Triangles(arg0++, 3 + j * 4, 18 + j * 4, 4 + j * 4, 0, 18 + j * 4, 19 + j * 4, 4 + j * 4, + 0); + gSP2Triangles(arg0++, 4 + j * 4, 19 + j * 4, 5 + j * 4, 0, 19 + j * 4, 20 + j * 4, 5 + j * 4, + 0); + gSP2Triangles(arg0++, 5 + j * 4, 20 + j * 4, 6 + j * 4, 0, 20 + j * 4, 21 + j * 4, 6 + j * 4, + 0); + } + + gSP2Triangles(arg0++, 14, 29, 0, 0, 29, 15, 0, 0); + vtx += 15; + break; + + case 8: + gSPDisplayList(arg0++, D_84389290); + gSPClearGeometryMode(arg0++, G_CULL_BOTH); + gSPSetGeometryMode(arg0++, G_CULL_FRONT); + gSPVertex(arg0++, vtx, 18, 0); + + for (j = 0; j < 3; j++) { + u8 idx = j * 3; + gSP2Triangles(arg0++, 0 + idx, 9 + idx, 1 + idx, 0, 1 + idx, 9 + idx, 10 + idx, 0); + gSP2Triangles(arg0++, 1 + idx, 10 + idx, 2 + idx, 0, 2 + idx, 10 + idx, 11 + idx, 0); + gSP2Triangles(arg0++, 2 + idx, 11 + idx, 0 + idx, 0, 0 + idx, 11 + idx, 9 + idx, 0); + } + + vtx += 9; + break; + } + } + + vtx = sp1B4->unk_01C; + for (x = 0; x < 19; x++) { + switch (sp1B4->unk_008) { + case 0: + case 2: + case 3: + case 4: + break; + + default: + case 1: + case 5: + gSPDisplayList(arg0++, D_84389290); + gSPClearGeometryMode(arg0++, G_CULL_BOTH); + gSPSetGeometryMode(arg0++, G_CULL_BACK); + gSPVertex(arg0++, vtx, 6, 0); + gSP2Triangles(arg0++, 0, 3, 1, 0, 3, 4, 1, 0); + gSP2Triangles(arg0++, 1, 4, 2, 0, 4, 5, 2, 0); + gSP2Triangles(arg0++, 2, 5, 0, 0, 5, 3, 0, 0); + vtx += 3; + break; + + case 6: + case 7: + gSPDisplayList(arg0++, D_84389290); + gSPClearGeometryMode(arg0++, G_CULL_BOTH); + gSPSetGeometryMode(arg0++, G_CULL_BACK); + gSPVertex(arg0++, vtx, 12, 0); + gSP2Triangles(arg0++, 0, 6, 1, 0, 1, 6, 7, 0); + + for (j = 1; j < 2; j++) { + s32 idx = j * 4; + gSP2Triangles(arg0++, idx + 0, idx + 6, idx + 1, 0, idx + 1, idx + 6, idx + 7, 0); + gSP2Triangles(arg0++, idx + 1, idx + 7, idx + 2, 0, idx + 2, idx + 7, idx + 8, 0); + gSP2Triangles(arg0++, idx + 2, idx + 8, idx + 3, 0, idx + 3, idx + 8, idx + 9, 0); + gSP2Triangles(arg0++, idx + 3, idx + 9, idx + 4, 0, idx + 4, idx + 9, idx + 10, 0); + } + + gSP2Triangles(arg0++, 5, 11, 0, 0, 0, 11, 6, 0); + vtx += 6; + break; + + case 8: + gSPDisplayList(arg0++, D_84389290); + gSPClearGeometryMode(arg0++, G_CULL_BOTH); + gSPSetGeometryMode(arg0++, G_CULL_BACK); + gSPVertex(arg0++, vtx, 18, 0); + + for (j = 0; j < 3; j++) { + gSP2Triangles(arg0++, j * 3 + 0, j * 3 + 9, j * 3 + 1, 0, j * 3 + 1, j * 3 + 9, j * 3 + 10, 0); + gSP2Triangles(arg0++, j * 3 + 1, j * 3 + 10, j * 3 + 2, 0, j * 3 + 2, j * 3 + 10, j * 3 + 11, + 0); + gSP2Triangles(arg0++, j * 3 + 2, j * 3 + 11, j * 3 + 0, 0, j * 3 + 0, j * 3 + 11, j * 3 + 9, 0); + } + + vtx += 9; + break; + } + } + + if (sp1B4->unk_008 == 8) { + gSPDisplayList(arg0++, D_84389290); + gSPClearGeometryMode(arg0++, G_CULL_BOTH); + gSPVertex(arg0++, sp1B4->unk_01C, 9, 0); + gSP2Triangles(arg0++, 2, 1, 0, 0, 5, 4, 3, 0); + gSP1Triangle(arg0++, 8, 7, 6, 0); + } + arg0 = func_8436EDE8(sp1B4->unk_002, arg0); + } + + return arg0; +} +#else +static Gfx D_84389208[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_LIGHTING | G_SHADING_SMOOTH), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, + TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0), + gsDPSetColorDither(G_CD_NOISE), + gsDPLoadTextureBlock(D_84389068, G_IM_FMT_IA, G_IM_SIZ_8b, 8, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 3, 4, G_TX_NOLOD, G_TX_NOLOD), + gsSPEndDisplayList(), +}; +static Gfx D_84389290[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetColorDither(G_CD_NOISE), + gsSPEndDisplayList(), +}; +static u8 D_843892E0[] = { 0xFF, 0, 0xFF }; +static u8 D_843892E4[] = { 0x20, 0x20, 0xFF }; +static u8 D_843892E8[] = { 0, 0xFF, 0 }; +static f32 D_843892EC[] = { 1.0f, 1.73205f, 1.0f }; +#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_34A420/func_84362084.s") +#endif diff --git a/src/fragments/62/fragment62_34E1A0.c b/src/fragments/62/fragment62_34E1A0.c index fa5d78f..3977aa2 100644 --- a/src/fragments/62/fragment62_34E1A0.c +++ b/src/fragments/62/fragment62_34E1A0.c @@ -1,13 +1,354 @@ -#include "global.h" +#include "fragment62.h" +#include "include/math.h" +#include "src/30640.h" +#include "src/6A40.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_34E1A0/func_843638E0.s") +static unk_D_8439CA60 D_8439CA60; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_34E1A0/func_84363A5C.s") +static Lights2 D_84389300 = gdSPDefLights2(255, 255, 255, 255, 255, 255, 30, 30, 10, 255, 255, 255, 226, 30, 10); +static Gfx D_84389328[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_2CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_SHADE | G_LIGHTING | G_TEXTURE_GEN | G_SHADING_SMOOTH), + gsSPSetLights2(D_84389300), + gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON), + gsDPPipeSync(), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA2), + gsDPSetTexturePersp(G_TP_PERSP), + gsDPSetTextureLUT(G_TT_NONE), + gsDPSetTextureFilter(G_TF_BILERP), + gsDPSetRenderMode(G_RM_PASS, G_RM_XLU_SURF2), + gsSPEndDisplayList(), +}; +static Gfx D_843893A8[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_LIGHTING | G_SHADING_SMOOTH), + gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF), + gsDPPipeSync(), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetTexturePersp(G_TP_PERSP), + gsDPSetTextureDetail(G_TD_CLAMP), + gsDPSetTextureLOD(G_TL_TILE), + gsDPSetTextureLUT(G_TT_NONE), + gsDPSetTextureConvert(G_TC_FILT), + gsDPSetTextureFilter(G_TF_BILERP), + gsDPSetColorDither(G_CD_NOISE), + gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2), + gsSPEndDisplayList(), +}; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_34E1A0/func_84363FF0.s") +void func_843638E0(s16 arg0) { + s32 i; + s32 j; + s16 tmp1; + s16 tmp2; + s16 tmp3; + unk_D_8439CA60_0014* var_v0 = &D_8439CA60.unk_0014[0][0]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_34E1A0/func_843640A4.s") + D_8439CA60.unk_0000 = 0; + D_8439CA60.unk_0002 = arg0; + D_8439CA60.unk_0004 = 0; + D_8439CA60.unk_0008 = 0.01f; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_34E1A0/func_84364304.s") + for (i = 0; i < 16; i++) { + for (j = 0; j < 16; j++) { + tmp1 = i * 0x20; + tmp3 = tmp1 * 0x10; + tmp2 = j * 0x20; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_34E1A0/func_84364428.s") + var_v0->unk_00 = (i * 9.0f) - 72.0f; + var_v0->unk_04 = 1.0f; + var_v0->unk_08 = (j * 7.0f) - 56.0f; + + var_v0->unk_18 = tmp1 * 0x10; + var_v0->unk_1A = tmp2 * 0x10; + + var_v0++; + } + } +} + +void func_84363A5C(s32 arg0, s32 arg1) { + f32 sp84; + f32 sp80; + f32 sp7C; + f32 sp78; + f32 sp74; + f32 sp70; + f32 sp6C; + f32 sp68; + f32 sp64; + f32 sp60; + f32 sp5C; + f32 sp58; + f32 sp54; + f32 sp50; + f32 sp4C; + UNUSED s32 pad; + s16 sp46; + + sp6C = D_8439CA60.unk_0014[arg0][arg1].unk_00; + sp68 = D_8439CA60.unk_0014[arg0][arg1].unk_04; + sp64 = D_8439CA60.unk_0014[arg0][arg1].unk_08; + sp84 = 0.0f; + sp80 = 0.0f; + sp7C = 0.0f; + sp46 = 0; + + if ((arg0 > 0) && (arg1 >= 1)) { + sp60 = D_8439CA60.unk_0014[arg0 - 1][arg1].unk_00 - sp6C; + sp5C = D_8439CA60.unk_0014[arg0 - 1][arg1].unk_04 - sp68; + sp58 = D_8439CA60.unk_0014[arg0 - 1][arg1].unk_08 - sp64; + func_80031B04(&sp60, &sp5C, &sp58); + sp54 = D_8439CA60.unk_0014[arg0][arg1 - 1].unk_00 - sp6C; + sp50 = D_8439CA60.unk_0014[arg0][arg1 - 1].unk_04 - sp68; + sp4C = D_8439CA60.unk_0014[arg0][arg1 - 1].unk_08 - sp64; + func_80031B04(&sp54, &sp50, &sp4C); + func_80031A94(sp60, sp5C, sp58, sp54, sp50, sp4C, &sp78, &sp74, &sp70); + func_80031B04(&sp78, &sp74, &sp70); + sp84 += sp78; + sp80 += sp74; + sp7C += sp70; + sp46 = 1; + } + + if ((0 < arg0) && (arg1 < 15)) { + sp60 = D_8439CA60.unk_0014[arg0 - 1][arg1].unk_00 - sp6C; + sp5C = D_8439CA60.unk_0014[arg0 - 1][arg1].unk_04 - sp68; + sp58 = D_8439CA60.unk_0014[arg0 - 1][arg1].unk_08 - sp64; + func_80031B04(&sp60, &sp5C, &sp58); + sp54 = D_8439CA60.unk_0014[arg0][arg1 + 1].unk_00 - sp6C; + sp50 = D_8439CA60.unk_0014[arg0][arg1 + 1].unk_04 - sp68; + sp4C = D_8439CA60.unk_0014[arg0][arg1 + 1].unk_08 - sp64; + func_80031B04(&sp54, &sp50, &sp4C); + func_80031A94(sp60, sp5C, sp58, sp54, sp50, sp4C, &sp78, &sp74, &sp70); + func_80031B04(&sp78, &sp74, &sp70); + sp84 += sp78; + sp80 += sp74; + sp7C += sp70; + sp46 += 1; + } + + if ((arg0 < 15) && (arg1 >= 1)) { + sp60 = D_8439CA60.unk_0014[arg0 + 1][arg1].unk_00 - sp6C; + sp5C = D_8439CA60.unk_0014[arg0 + 1][arg1].unk_04 - sp68; + sp58 = D_8439CA60.unk_0014[arg0 + 1][arg1].unk_08 - sp64; + func_80031B04(&sp60, &sp5C, &sp58); + sp54 = D_8439CA60.unk_0014[arg0][arg1 - 1].unk_00 - sp6C; + sp50 = D_8439CA60.unk_0014[arg0][arg1 - 1].unk_04 - sp68; + sp4C = D_8439CA60.unk_0014[arg0][arg1 - 1].unk_08 - sp64; + func_80031B04(&sp54, &sp50, &sp4C); + func_80031A94(sp60, sp5C, sp58, sp54, sp50, sp4C, &sp78, &sp74, &sp70); + func_80031B04(&sp78, &sp74, &sp70); + sp84 += sp78; + sp80 += sp74; + sp7C += sp70; + sp46 += 1; + } + + if ((arg0 < 15) && (arg1 < 15)) { + sp60 = D_8439CA60.unk_0014[arg0 + 1][arg1].unk_00 - sp6C; + sp5C = D_8439CA60.unk_0014[arg0 + 1][arg1].unk_04 - sp68; + sp58 = D_8439CA60.unk_0014[arg0 + 1][arg1].unk_08 - sp64; + func_80031B04(&sp60, &sp5C, &sp58); + sp54 = D_8439CA60.unk_0014[arg0][arg1 + 1].unk_00 - sp6C; + sp50 = D_8439CA60.unk_0014[arg0][arg1 + 1].unk_04 - sp68; + sp4C = D_8439CA60.unk_0014[arg0][arg1 + 1].unk_08 - sp64; + func_80031B04(&sp54, &sp50, &sp4C); + func_80031A94(sp60, sp5C, sp58, sp54, sp50, sp4C, &sp78, &sp74, &sp70); + func_80031B04(&sp78, &sp74, &sp70); + sp84 -= sp78; + sp80 -= sp74; + sp7C -= sp70; + sp46 += 1; + } + + if (sp46 != 0) { + if ((sp84 == 0.0) && (sp80 == 0.0) && (sp7C == 0.0)) { + sp80 = 1.0f; + } else { + func_80031B04(&sp84, &sp80, &sp7C); + } + D_8439CA60.unk_0014[arg0][arg1].unk_0C = sp84; + D_8439CA60.unk_0014[arg0][arg1].unk_10 = sp80; + D_8439CA60.unk_0014[arg0][arg1].unk_14 = sp7C; + } +} + +void func_84363FF0(unk_D_8439CA60_0014* arg0, Vtx* arg1) { + f32 r; + f32 g; + f32 b; + + arg1->v.ob[0] = arg0->unk_00; + arg1->v.ob[1] = arg0->unk_04; + arg1->v.ob[2] = arg0->unk_08; + + arg1->v.tc[0] = arg0->unk_18; + arg1->v.tc[1] = arg0->unk_1A; + + r = arg0->unk_0C; + g = arg0->unk_10; + b = arg0->unk_14; + + arg1->v.cn[0] = (s32)(r * 120.0); + arg1->v.cn[1] = (s32)(g * 120.0); + arg1->v.cn[2] = (s32)(b * 120.0); + arg1->v.cn[3] = D_8439CA60.unk_0004; +} + +s32 func_843640A4(void) { + unk_D_8439CA60_0014* var_s1; + s32 i; + s32 j; + f32 temp_fv1_2; + f32 tmp; + + D_8439CA60.unk_0000 = D_8439CA60.unk_0000 + 1; + if (D_8439CA60.unk_0002 < D_8439CA60.unk_0000) { + return -1; + } + if (D_8439CA60.unk_0000 < 0x1E) { + D_8439CA60.unk_0004 += 0xA; + if (D_8439CA60.unk_0004 >= 0x81) { + D_8439CA60.unk_0004 = 0x80; + } + } else if ((D_8439CA60.unk_0002 - 0x1E) < D_8439CA60.unk_0000) { + D_8439CA60.unk_0004 -= 0xA; + if (D_8439CA60.unk_0004 < 0) { + D_8439CA60.unk_0004 = 0; + } + } + + if (D_8439CA60.unk_0008 < 1.0) { + D_8439CA60.unk_0008 += 0.05; + } + + var_s1 = &D_8439CA60.unk_0014[0][0]; + for (i = 0; i < 16; i++) { + for (j = 0; j < 16; j++) { + temp_fv1_2 = 1.0 - (sqrtf(SQ(var_s1->unk_00) + SQ(var_s1->unk_08)) / 101.8224f); + tmp = __sinf((((f32)(D_8439CA60.unk_0000 % 20) / 20.0) + (3.0 * temp_fv1_2)) * 6.2831854820251465) * + ((f64)D_8439CA60.unk_0008 * temp_fv1_2); + var_s1->unk_04 = tmp; + var_s1++; + } + } + + for (i = 0; i < 16; i++) { + for (j = 0; j < 16; j++) { + func_84363A5C(i, j); + } + } + + return 0; +} + +void func_84364304(void) { + unk_D_86002F34_00C* temp_v0; + f32 tmp1; + f32 tmp2; + f32 tmp3; + f32 tmp4; + f32 tmp5; + f32 tmp6; + f32 sp68; + f32 sp64; + f32 sp60; + f32 sp5C; + f32 temp_fa0; + f32 temp_fa1; + f32 temp_fv0; + f32 temp_fv1; + + D_8439CA60.unk_0010 = func_80005F5C(sizeof(Mtx) * 1); + temp_v0 = func_8432FD64(); + + tmp4 = temp_v0->unk_60.at.x; + tmp5 = temp_v0->unk_60.at.y; + tmp6 = temp_v0->unk_60.at.z; + + tmp1 = temp_v0->unk_60.eye.x; + tmp2 = temp_v0->unk_60.eye.y; + tmp3 = temp_v0->unk_60.eye.z; + + sp5C = temp_v0->unk_24.fovy; + sp68 = tmp4 - tmp1; + sp64 = tmp5 - tmp2; + sp60 = tmp6 - tmp3; + + func_80031B04(&sp68, &sp64, &sp60); + + temp_fv0 = sp5C / 30.0f; + temp_fv1 = (140.0f * sp68) / temp_fv0; + temp_fa0 = (140.0f * sp64) / temp_fv0; + temp_fa1 = (140.0f * sp60) / temp_fv0; + + tmp4 += temp_fv1; + tmp5 += temp_fa0; + tmp6 += temp_fa1; + + tmp1 += temp_fv1; + tmp2 += temp_fa0; + tmp3 += temp_fa1; + + func_80031C6C(D_8439CA60.unk_0010, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6); +} + +Gfx* func_84364428(Gfx* arg0) { + s32 i; + s32 j; + unk_D_8439CA60_0014* var_s2; + s32 var_s4; + Vtx* vtx; + s32 idx; + + var_s4 = 0; + D_8439CA60.unk_000C = func_80005F5C(sizeof(Vtx) * 16 * 16); + + vtx = D_8439CA60.unk_000C; + var_s2 = &D_8439CA60.unk_0014[0][0]; + for (i = 0; i < 16; i++) { + for (j = 0; j < 16; j++) { + func_84363FF0(var_s2, vtx); + var_s2++; + vtx++; + } + } + + func_84364304(); + + gDPLoadTextureBlock(arg0++, D_843920C0[0xA8], G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD); + gSPDisplayList(arg0++, D_84389328); + gDPSetPrimColor(arg0++, 0, 0, 255, 255, 255, D_8439CA60.unk_0004); + gSPMatrix(arg0++, D_8439CA60.unk_0010, G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW); + + vtx = D_8439CA60.unk_000C; + for (i = 0; i < 15; i++) { + for (j = 0; j < 15; j++) { + idx = (i + 0) * 16 + j; + + gSPVertex(arg0++, &vtx[idx + 0], 1, 0); + gSPVertex(arg0++, &vtx[idx + 1], 1, 1); + gSPVertex(arg0++, &vtx[((i + 1) * 16 + j) + (0 * 16) + 0], 1, 2); + gSPVertex(arg0++, &vtx[idx + (1 * 16) + 1], 1, 3); + + if (!(var_s4 & 1)) { + gSP2Triangles(arg0++, 1, 2, 0, 0, 1, 3, 2, 0); + } else { + gSP2Triangles(arg0++, 3, 2, 0, 0, 1, 3, 0, 0); + } + + var_s4++; + } + } + + gSPPopMatrix(arg0++, G_MTX_MODELVIEW); + return arg0; +} diff --git a/src/fragments/62/fragment62_34F1A0.c b/src/fragments/62/fragment62_34F1A0.c index b203bfa..1478826 100644 --- a/src/fragments/62/fragment62_34F1A0.c +++ b/src/fragments/62/fragment62_34F1A0.c @@ -1,15 +1,392 @@ -#include "global.h" +#include "fragment62.h" +#include "include/math.h" +#include "src/30640.h" +#include "src/6A40.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_34F1A0/func_843648E0.s") +static unk_D_8439E680 D_8439E680; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_34F1A0/func_84364A18.s") +static Lights2 D_84389430 = gdSPDefLights2(255, 255, 255, 255, 255, 255, 30, 30, 10, 255, 255, 255, 226, 30, 10); +static Gfx D_84389458[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_2CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_LIGHTING | G_TEXTURE_GEN | G_SHADING_SMOOTH), + gsSPSetLights2(D_84389430), + gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON), + gsDPPipeSync(), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA2), + gsDPSetTexturePersp(G_TP_PERSP), + gsDPSetTextureLUT(G_TT_NONE), + gsDPSetTextureFilter(G_TF_BILERP), + gsDPSetRenderMode(G_RM_PASS, G_RM_XLU_SURF2), + gsSPEndDisplayList(), +}; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_34F1A0/func_84364C50.s") +static Gfx D_843894D8[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_LIGHTING | G_SHADING_SMOOTH), + gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF), + gsDPPipeSync(), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetTexturePersp(G_TP_PERSP), + gsDPSetTextureDetail(G_TD_CLAMP), + gsDPSetTextureLOD(G_TL_TILE), + gsDPSetTextureLUT(G_TT_NONE), + gsDPSetTextureConvert(G_TC_FILT), + gsDPSetTextureFilter(G_TF_BILERP), + gsDPSetColorDither(G_CD_NOISE), + gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2), + gsSPEndDisplayList(), +}; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_34F1A0/func_843651D4.s") +void func_843648E0(s16 arg0, s16 arg1) { + unk_D_8439E680_0014* var_s0 = &D_8439E680.unk_0014[0][0]; + s32 i; + s32 j; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_34F1A0/func_84365288.s") + for (i = 0; i < 16; i++) { + s32 tmp1 = arg1 - i; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_34F1A0/func_84365434.s") + for (j = 0; j < 16; j++) { + s32 tmp2 = arg0 - j; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_34F1A0/func_84365558.s") + if ((tmp2 == 0.0f) && (tmp1 == (0, 0.0f))) { + var_s0->unk_1C += 1.5707963705062866; + } else { + var_s0->unk_1C += 1.5707963705062866 / sqrtf(SQ((f32)tmp2) + SQ((f32)tmp1)); + } + var_s0++; + } + } +} + +void func_84364A18(s16 arg0) { + s32 i; + s32 j; + s32 k; + s16 tmp1; + s16 tmp2; + unk_D_8439E680_0014* var_v0 = &D_8439E680.unk_0014[0][0]; + + D_8439E680.unk_0000 = 0; + D_8439E680.unk_0002 = arg0; + D_8439E680.unk_0004 = 0; + D_8439E680.unk_0008 = 0.01f; + + for (i = 0; i < 16; i++) { + for (j = 0; j < 16; j++) { + tmp1 = i * 0x20; + + var_v0->unk_00 = (i * 9.0f) - 72.0f; + + var_v0->unk_1C = 0.0f; + var_v0->unk_04 = (__sinf(var_v0->unk_1C) * 0.5) + 1.0; + + tmp2 = j * 0x20; + + var_v0->unk_08 = (j * 7.0f) - 56.0f; + + var_v0->unk_18 = tmp1 * 0x10; + var_v0->unk_1A = tmp2 * 0x10; + + var_v0++; + } + } + + func_843648E0(8, 8); + + for (k = 0; k < 10; k++) { + s16 rand1 = RAND(16); + s16 rand2 = RAND(16); + func_843648E0(rand1, rand2); + } + + var_v0 = &D_8439E680.unk_0014[0][0]; + for (i = 0; i < 16; i++) { + for (j = 0; j < 16; j++) { + var_v0->unk_04 = (__sinf(var_v0->unk_1C) * 0.5) + 1.0; + var_v0++; + } + } +} + +void func_84364C50(s32 arg0, s32 arg1) { + f32 sp84; + f32 sp80; + f32 sp7C; + f32 sp78; + f32 sp74; + f32 sp70; + f32 sp6C; + f32 sp68; + f32 sp64; + f32 sp60; + f32 sp5C; + f32 sp58; + f32 sp54; + f32 sp50; + f32 sp4C; + UNUSED s32 pad; + s16 sp46; + + sp6C = D_8439E680.unk_0014[arg0][arg1].unk_00; + sp68 = D_8439E680.unk_0014[arg0][arg1].unk_04; + sp64 = D_8439E680.unk_0014[arg0][arg1].unk_08; + sp84 = 0.0f; + sp80 = 0.0f; + sp7C = 0.0f; + sp46 = 0; + + if ((arg0 > 0) && (arg1 >= 1)) { + sp60 = D_8439E680.unk_0014[arg0 - 1][arg1].unk_00 - sp6C; + sp5C = D_8439E680.unk_0014[arg0 - 1][arg1].unk_04 - sp68; + sp58 = D_8439E680.unk_0014[arg0 - 1][arg1].unk_08 - sp64; + func_80031B04(&sp60, &sp5C, &sp58); + sp54 = D_8439E680.unk_0014[arg0][arg1 - 1].unk_00 - sp6C; + sp50 = D_8439E680.unk_0014[arg0][arg1 - 1].unk_04 - sp68; + sp4C = D_8439E680.unk_0014[arg0][arg1 - 1].unk_08 - sp64; + func_80031B04(&sp54, &sp50, &sp4C); + func_80031A94(sp60, sp5C, sp58, sp54, sp50, sp4C, &sp78, &sp74, &sp70); + func_80031B04(&sp78, &sp74, &sp70); + sp84 += sp78; + sp80 += sp74; + sp7C += sp70; + sp46 = 1; + } + + if ((0 < arg0) && (arg1 < 15)) { + sp60 = D_8439E680.unk_0014[arg0 - 1][arg1].unk_00 - sp6C; + sp5C = D_8439E680.unk_0014[arg0 - 1][arg1].unk_04 - sp68; + sp58 = D_8439E680.unk_0014[arg0 - 1][arg1].unk_08 - sp64; + func_80031B04(&sp60, &sp5C, &sp58); + sp54 = D_8439E680.unk_0014[arg0][arg1 + 1].unk_00 - sp6C; + sp50 = D_8439E680.unk_0014[arg0][arg1 + 1].unk_04 - sp68; + sp4C = D_8439E680.unk_0014[arg0][arg1 + 1].unk_08 - sp64; + func_80031B04(&sp54, &sp50, &sp4C); + func_80031A94(sp60, sp5C, sp58, sp54, sp50, sp4C, &sp78, &sp74, &sp70); + func_80031B04(&sp78, &sp74, &sp70); + sp84 += sp78; + sp80 += sp74; + sp7C += sp70; + sp46 += 1; + } + + if ((arg0 < 15) && (arg1 >= 1)) { + sp60 = D_8439E680.unk_0014[arg0 + 1][arg1].unk_00 - sp6C; + sp5C = D_8439E680.unk_0014[arg0 + 1][arg1].unk_04 - sp68; + sp58 = D_8439E680.unk_0014[arg0 + 1][arg1].unk_08 - sp64; + func_80031B04(&sp60, &sp5C, &sp58); + sp54 = D_8439E680.unk_0014[arg0][arg1 - 1].unk_00 - sp6C; + sp50 = D_8439E680.unk_0014[arg0][arg1 - 1].unk_04 - sp68; + sp4C = D_8439E680.unk_0014[arg0][arg1 - 1].unk_08 - sp64; + func_80031B04(&sp54, &sp50, &sp4C); + func_80031A94(sp60, sp5C, sp58, sp54, sp50, sp4C, &sp78, &sp74, &sp70); + func_80031B04(&sp78, &sp74, &sp70); + sp84 += sp78; + sp80 += sp74; + sp7C += sp70; + sp46 += 1; + } + + if ((arg0 < 15) && (arg1 < 15)) { + sp60 = D_8439E680.unk_0014[arg0 + 1][arg1].unk_00 - sp6C; + sp5C = D_8439E680.unk_0014[arg0 + 1][arg1].unk_04 - sp68; + sp58 = D_8439E680.unk_0014[arg0 + 1][arg1].unk_08 - sp64; + func_80031B04(&sp60, &sp5C, &sp58); + sp54 = D_8439E680.unk_0014[arg0][arg1 + 1].unk_00 - sp6C; + sp50 = D_8439E680.unk_0014[arg0][arg1 + 1].unk_04 - sp68; + sp4C = D_8439E680.unk_0014[arg0][arg1 + 1].unk_08 - sp64; + func_80031B04(&sp54, &sp50, &sp4C); + func_80031A94(sp60, sp5C, sp58, sp54, sp50, sp4C, &sp78, &sp74, &sp70); + func_80031B04(&sp78, &sp74, &sp70); + sp84 -= sp78; + sp80 -= sp74; + sp7C -= sp70; + sp46 += 1; + } + + if (sp46 != 0) { + if ((sp84 == 0.0) && (sp80 == 0.0) && (sp7C == 0.0)) { + sp80 = 1.0f; + } else { + func_80031B04(&sp84, &sp80, &sp7C); + } + D_8439E680.unk_0014[arg0][arg1].unk_0C = sp84; + D_8439E680.unk_0014[arg0][arg1].unk_10 = sp80; + D_8439E680.unk_0014[arg0][arg1].unk_14 = sp7C; + } +} + +void func_843651D4(unk_D_8439E680_0014* arg0, Vtx* arg1) { + f32 r; + f32 g; + f32 b; + + arg1->v.ob[0] = arg0->unk_00; + arg1->v.ob[1] = arg0->unk_04; + arg1->v.ob[2] = arg0->unk_08; + + arg1->v.tc[0] = arg0->unk_18; + arg1->v.tc[1] = arg0->unk_1A; + + r = arg0->unk_0C; + g = arg0->unk_10; + b = arg0->unk_14; + + arg1->v.cn[0] = (s32)(r * 120.0); + arg1->v.cn[1] = (s32)(g * 120.0); + arg1->v.cn[2] = (s32)(b * 120.0); + arg1->v.cn[3] = D_8439E680.unk_0004; +} + +s32 func_84365288(void) { + unk_D_8439E680_0014* var_s1; + s32 i; + s32 j; + + D_8439E680.unk_0000 = D_8439E680.unk_0000 + 1; + if (D_8439E680.unk_0002 < D_8439E680.unk_0000) { + return -1; + } + if (D_8439E680.unk_0000 < 0x1E) { + D_8439E680.unk_0004 += 0xA; + if (D_8439E680.unk_0004 >= 0x81) { + D_8439E680.unk_0004 = 0x80; + } + } else if ((D_8439E680.unk_0002 - 0x1E) < D_8439E680.unk_0000) { + D_8439E680.unk_0004 -= 0xA; + if (D_8439E680.unk_0004 < 0) { + D_8439E680.unk_0004 = 0; + } + } + + if (D_8439E680.unk_0008 < 0.5) { + D_8439E680.unk_0008 += 0.05; + } + + var_s1 = &D_8439E680.unk_0014[0][0]; + for (i = 0; i < 16; i++) { + for (j = 0; j < 16; j++) { + var_s1->unk_04 = (__sinf(var_s1->unk_1C) * 0.5) + 1.0; + var_s1->unk_1C += 0.1; + + var_s1++; + } + } + + for (i = 0; i < 16; i++) { + for (j = 0; j < 16; j++) { + func_84364C50(i, j); + } + } + + return 0; +} + +void func_84365434(void) { + unk_D_86002F34_00C* temp_v0; + f32 tmp1; + f32 tmp2; + f32 tmp3; + f32 tmp4; + f32 tmp5; + f32 tmp6; + f32 sp68; + f32 sp64; + f32 sp60; + f32 sp5C; + f32 temp_fa0; + f32 temp_fa1; + f32 temp_fv0; + f32 temp_fv1; + + D_8439E680.unk_0010 = func_80005F5C(sizeof(Mtx) * 1); + temp_v0 = func_8432FD64(); + + tmp4 = temp_v0->unk_60.at.x; + tmp5 = temp_v0->unk_60.at.y; + tmp6 = temp_v0->unk_60.at.z; + + tmp1 = temp_v0->unk_60.eye.x; + tmp2 = temp_v0->unk_60.eye.y; + tmp3 = temp_v0->unk_60.eye.z; + + sp5C = temp_v0->unk_24.fovy; + sp68 = tmp4 - tmp1; + sp64 = tmp5 - tmp2; + sp60 = tmp6 - tmp3; + + func_80031B04(&sp68, &sp64, &sp60); + + temp_fv0 = sp5C / 30.0f; + temp_fv1 = (140.0f * sp68) / temp_fv0; + temp_fa0 = (140.0f * sp64) / temp_fv0; + temp_fa1 = (140.0f * sp60) / temp_fv0; + + tmp4 += temp_fv1; + tmp5 += temp_fa0; + tmp6 += temp_fa1; + + tmp1 += temp_fv1; + tmp2 += temp_fa0; + tmp3 += temp_fa1; + + func_80031C6C(D_8439E680.unk_0010, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6); +} + +Gfx* func_84365558(Gfx* arg0) { + s32 i; + s32 j; + unk_D_8439E680_0014* var_s2; + s32 var_s4; + Vtx* vtx; + s32 idx; + + var_s4 = 0; + D_8439E680.unk_000C = func_80005F5C(sizeof(Vtx) * 16 * 16); + + vtx = D_8439E680.unk_000C; + var_s2 = &D_8439E680.unk_0014[0][0]; + for (i = 0; i < 16; i++) { + for (j = 0; j < 16; j++) { + func_843651D4(var_s2, vtx); + var_s2++; + vtx++; + } + } + + func_84365434(); + + gDPLoadTextureBlock(arg0++, D_843920C0[0x48], G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD); + gSPDisplayList(arg0++, D_84389458); + gDPSetPrimColor(arg0++, 0, 0, 255, 255, 255, D_8439E680.unk_0004); + gSPMatrix(arg0++, D_8439E680.unk_0010, G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW); + + vtx = D_8439E680.unk_000C; + for (i = 0; i < 15; i++) { + for (j = 0; j < 15; j++) { + idx = (i + 0) * 16 + j; + + gSPVertex(arg0++, &vtx[idx + 0], 1, 0); + gSPVertex(arg0++, &vtx[idx + 1], 1, 1); + gSPVertex(arg0++, &vtx[((i + 1) * 16 + j) + (0 * 16) + 0], 1, 2); + gSPVertex(arg0++, &vtx[idx + (1 * 16) + 1], 1, 3); + + if (!(var_s4 & 1)) { + gSP2Triangles(arg0++, 1, 2, 0, 0, 1, 3, 2, 0); + } else { + gSP2Triangles(arg0++, 3, 2, 0, 0, 1, 3, 0, 0); + } + + var_s4++; + } + } + + gSPPopMatrix(arg0++, G_MTX_MODELVIEW); + return arg0; +} diff --git a/src/fragments/62/fragment62_3502D0.c b/src/fragments/62/fragment62_3502D0.c index 821f195..0df43f2 100644 --- a/src/fragments/62/fragment62_3502D0.c +++ b/src/fragments/62/fragment62_3502D0.c @@ -1,13 +1,356 @@ -#include "global.h" +#include "fragment62.h" +#include "include/math.h" +#include "src/30640.h" +#include "src/6A40.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3502D0/func_84365A10.s") +static unk_D_8439CA60 D_843A06A0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3502D0/func_84365B88.s") +static Lights2 D_84389560 = gdSPDefLights2(255, 255, 255, 255, 255, 255, 30, 30, 10, 255, 255, 255, 226, 30, 10); +static Gfx D_84389588[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_2CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_LIGHTING | G_TEXTURE_GEN | G_SHADING_SMOOTH), + gsSPSetLights2(D_84389560), + gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON), + gsDPPipeSync(), + gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA2), + gsDPSetTexturePersp(G_TP_PERSP), + gsDPSetTextureLUT(G_TT_NONE), + gsDPSetTextureFilter(G_TF_BILERP), + gsDPSetRenderMode(G_RM_PASS, G_RM_XLU_SURF2), + gsSPEndDisplayList(), +}; +static Gfx D_84389608[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_LIGHTING | G_SHADING_SMOOTH), + gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF), + gsDPPipeSync(), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetTexturePersp(G_TP_PERSP), + gsDPSetTextureDetail(G_TD_CLAMP), + gsDPSetTextureLOD(G_TL_TILE), + gsDPSetTextureLUT(G_TT_NONE), + gsDPSetTextureConvert(G_TC_FILT), + gsDPSetTextureFilter(G_TF_BILERP), + gsDPSetColorDither(G_CD_NOISE), + gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2), + gsSPEndDisplayList(), +}; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3502D0/func_8436611C.s") +void func_84365A10(s16 arg0) { + unk_D_8439CA60_0014* var_v0; + s32 i; + s32 j; + s16 tmp1; + s16 tmp2; + s16 tmp3; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3502D0/func_843661D0.s") + D_843A06A0.unk_0000 = 0; + D_843A06A0.unk_0002 = arg0; + D_843A06A0.unk_0004 = 0; + D_843A06A0.unk_0008 = 0.0f; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3502D0/func_8436643C.s") + var_v0 = &D_843A06A0.unk_0014[0][0]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3502D0/func_84366560.s") + for (i = 0; i < 16; i++) { + for (j = 0; j < 16; j++) { + tmp1 = i * 0x20; + tmp3 = tmp1 * 0x10; + tmp2 = j * 0x20; + + var_v0->unk_00 = (i * 9.0f) - 72.0f; + var_v0->unk_04 = 1.0f; + var_v0->unk_08 = (j * 7.0f) - 56.0f; + + var_v0->unk_18 = tmp1 * 0x10; + var_v0->unk_1A = tmp2 * 0x10; + + var_v0++; + } + } +} + +void func_84365B88(s32 arg0, s32 arg1) { + f32 sp84; + f32 sp80; + f32 sp7C; + f32 sp78; + f32 sp74; + f32 sp70; + f32 sp6C; + f32 sp68; + f32 sp64; + f32 sp60; + f32 sp5C; + f32 sp58; + f32 sp54; + f32 sp50; + f32 sp4C; + UNUSED s32 pad; + s16 sp46; + + sp6C = D_843A06A0.unk_0014[arg0][arg1].unk_00; + sp68 = D_843A06A0.unk_0014[arg0][arg1].unk_04; + sp64 = D_843A06A0.unk_0014[arg0][arg1].unk_08; + sp84 = 0.0f; + sp80 = 0.0f; + sp7C = 0.0f; + sp46 = 0; + + if ((arg0 > 0) && (arg1 >= 1)) { + sp60 = D_843A06A0.unk_0014[arg0 - 1][arg1].unk_00 - sp6C; + sp5C = D_843A06A0.unk_0014[arg0 - 1][arg1].unk_04 - sp68; + sp58 = D_843A06A0.unk_0014[arg0 - 1][arg1].unk_08 - sp64; + func_80031B04(&sp60, &sp5C, &sp58); + sp54 = D_843A06A0.unk_0014[arg0][arg1 - 1].unk_00 - sp6C; + sp50 = D_843A06A0.unk_0014[arg0][arg1 - 1].unk_04 - sp68; + sp4C = D_843A06A0.unk_0014[arg0][arg1 - 1].unk_08 - sp64; + func_80031B04(&sp54, &sp50, &sp4C); + func_80031A94(sp60, sp5C, sp58, sp54, sp50, sp4C, &sp78, &sp74, &sp70); + func_80031B04(&sp78, &sp74, &sp70); + sp84 += sp78; + sp80 += sp74; + sp7C += sp70; + sp46 = 1; + } + + if ((0 < arg0) && (arg1 < 15)) { + sp60 = D_843A06A0.unk_0014[arg0 - 1][arg1].unk_00 - sp6C; + sp5C = D_843A06A0.unk_0014[arg0 - 1][arg1].unk_04 - sp68; + sp58 = D_843A06A0.unk_0014[arg0 - 1][arg1].unk_08 - sp64; + func_80031B04(&sp60, &sp5C, &sp58); + sp54 = D_843A06A0.unk_0014[arg0][arg1 + 1].unk_00 - sp6C; + sp50 = D_843A06A0.unk_0014[arg0][arg1 + 1].unk_04 - sp68; + sp4C = D_843A06A0.unk_0014[arg0][arg1 + 1].unk_08 - sp64; + func_80031B04(&sp54, &sp50, &sp4C); + func_80031A94(sp60, sp5C, sp58, sp54, sp50, sp4C, &sp78, &sp74, &sp70); + func_80031B04(&sp78, &sp74, &sp70); + sp84 += sp78; + sp80 += sp74; + sp7C += sp70; + sp46 += 1; + } + + if ((arg0 < 15) && (arg1 >= 1)) { + sp60 = D_843A06A0.unk_0014[arg0 + 1][arg1].unk_00 - sp6C; + sp5C = D_843A06A0.unk_0014[arg0 + 1][arg1].unk_04 - sp68; + sp58 = D_843A06A0.unk_0014[arg0 + 1][arg1].unk_08 - sp64; + func_80031B04(&sp60, &sp5C, &sp58); + sp54 = D_843A06A0.unk_0014[arg0][arg1 - 1].unk_00 - sp6C; + sp50 = D_843A06A0.unk_0014[arg0][arg1 - 1].unk_04 - sp68; + sp4C = D_843A06A0.unk_0014[arg0][arg1 - 1].unk_08 - sp64; + func_80031B04(&sp54, &sp50, &sp4C); + func_80031A94(sp60, sp5C, sp58, sp54, sp50, sp4C, &sp78, &sp74, &sp70); + func_80031B04(&sp78, &sp74, &sp70); + sp84 += sp78; + sp80 += sp74; + sp7C += sp70; + sp46 += 1; + } + + if ((arg0 < 15) && (arg1 < 15)) { + sp60 = D_843A06A0.unk_0014[arg0 + 1][arg1].unk_00 - sp6C; + sp5C = D_843A06A0.unk_0014[arg0 + 1][arg1].unk_04 - sp68; + sp58 = D_843A06A0.unk_0014[arg0 + 1][arg1].unk_08 - sp64; + func_80031B04(&sp60, &sp5C, &sp58); + sp54 = D_843A06A0.unk_0014[arg0][arg1 + 1].unk_00 - sp6C; + sp50 = D_843A06A0.unk_0014[arg0][arg1 + 1].unk_04 - sp68; + sp4C = D_843A06A0.unk_0014[arg0][arg1 + 1].unk_08 - sp64; + func_80031B04(&sp54, &sp50, &sp4C); + func_80031A94(sp60, sp5C, sp58, sp54, sp50, sp4C, &sp78, &sp74, &sp70); + func_80031B04(&sp78, &sp74, &sp70); + sp84 -= sp78; + sp80 -= sp74; + sp7C -= sp70; + sp46 += 1; + } + + if (sp46 != 0) { + if ((sp84 == 0.0) && (sp80 == 0.0) && (sp7C == 0.0)) { + sp80 = 1.0f; + } else { + func_80031B04(&sp84, &sp80, &sp7C); + } + D_843A06A0.unk_0014[arg0][arg1].unk_0C = sp84; + D_843A06A0.unk_0014[arg0][arg1].unk_10 = sp80; + D_843A06A0.unk_0014[arg0][arg1].unk_14 = sp7C; + } +} + +void func_8436611C(unk_D_8439CA60_0014* arg0, Vtx* arg1) { + f32 r; + f32 g; + f32 b; + + arg1->v.ob[0] = arg0->unk_00; + arg1->v.ob[1] = arg0->unk_04; + arg1->v.ob[2] = arg0->unk_08; + + arg1->v.tc[0] = arg0->unk_18; + arg1->v.tc[1] = arg0->unk_1A; + + r = arg0->unk_0C; + g = arg0->unk_10; + b = arg0->unk_14; + + arg1->v.cn[0] = (s32)(r * 120.0); + arg1->v.cn[1] = (s32)(g * 120.0); + arg1->v.cn[2] = (s32)(b * 120.0); + arg1->v.cn[3] = D_843A06A0.unk_0004; +} + +s32 func_843661D0(void) { + unk_D_8439CA60_0014* var_s1; + s32 i; + s32 j; + f32 temp_fv1_2; + f32 tmp; + + D_843A06A0.unk_0000 = D_843A06A0.unk_0000 + 1; + if (D_843A06A0.unk_0002 < D_843A06A0.unk_0000) { + return -1; + } + if (D_843A06A0.unk_0000 < 0x1E) { + D_843A06A0.unk_0004 += 0xA; + if (D_843A06A0.unk_0004 > 0x50) { + D_843A06A0.unk_0004 = 0x50; + } + } else if ((D_843A06A0.unk_0002 - 0x1E) < D_843A06A0.unk_0000) { + D_843A06A0.unk_0004 -= 0xA; + if (D_843A06A0.unk_0004 < 0) { + D_843A06A0.unk_0004 = 0; + } + } + + if (D_843A06A0.unk_0008 < 0.25) { + D_843A06A0.unk_0008 += 0.05; + } + + var_s1 = &D_843A06A0.unk_0014[0][0]; + for (i = 0; i < 16; i++) { + for (j = 0; j < 16; j++) { + temp_fv1_2 = 1.0 - (sqrtf(SQ(var_s1->unk_00) + SQ(var_s1->unk_08)) / 101.8224f); + tmp = __sinf((((f32)(D_843A06A0.unk_0000 % 20) / 20.0) + (3.0 * temp_fv1_2)) * 6.2831854820251465) * + ((f64)D_843A06A0.unk_0008 * temp_fv1_2); + var_s1->unk_04 = tmp; + var_s1++; + } + } + + for (i = 0; i < 16; i++) { + for (j = 0; j < 16; j++) { + func_84365B88(i, j); + } + } + + return 0; +} + +void func_8436643C(void) { + unk_D_86002F34_00C* temp_v0; + f32 tmp1; + f32 tmp2; + f32 tmp3; + f32 tmp4; + f32 tmp5; + f32 tmp6; + f32 sp68; + f32 sp64; + f32 sp60; + f32 sp5C; + f32 temp_fa0; + f32 temp_fa1; + f32 temp_fv0; + f32 temp_fv1; + + D_843A06A0.unk_0010 = func_80005F5C(sizeof(Mtx) * 1); + temp_v0 = func_8432FD64(); + + tmp4 = temp_v0->unk_60.at.x; + tmp5 = temp_v0->unk_60.at.y; + tmp6 = temp_v0->unk_60.at.z; + + tmp1 = temp_v0->unk_60.eye.x; + tmp2 = temp_v0->unk_60.eye.y; + tmp3 = temp_v0->unk_60.eye.z; + + sp5C = temp_v0->unk_24.fovy; + sp68 = tmp4 - tmp1; + sp64 = tmp5 - tmp2; + sp60 = tmp6 - tmp3; + + func_80031B04(&sp68, &sp64, &sp60); + + temp_fv0 = sp5C / 30.0f; + temp_fv1 = (140.0f * sp68) / temp_fv0; + temp_fa0 = (140.0f * sp64) / temp_fv0; + temp_fa1 = (140.0f * sp60) / temp_fv0; + + tmp4 += temp_fv1; + tmp5 += temp_fa0; + tmp6 += temp_fa1; + + tmp1 += temp_fv1; + tmp2 += temp_fa0; + tmp3 += temp_fa1; + + func_80031C6C(D_843A06A0.unk_0010, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6); +} + +Gfx* func_84366560(Gfx* arg0) { + s32 i; + s32 j; + unk_D_8439CA60_0014* var_s2; + s32 var_s4; + Vtx* vtx; + s32 idx; + + var_s4 = 0; + D_843A06A0.unk_000C = func_80005F5C(sizeof(Vtx) * 16 * 16); + + vtx = D_843A06A0.unk_000C; + var_s2 = &D_843A06A0.unk_0014[0][0]; + for (i = 0; i < 16; i++) { + for (j = 0; j < 16; j++) { + func_8436611C(var_s2, vtx); + var_s2++; + vtx++; + } + } + + func_8436643C(); + + gDPLoadTextureBlock(arg0++, D_843920C0[0x48], G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD); + gSPDisplayList(arg0++, D_84389588); + gDPSetPrimColor(arg0++, 0, 0, 255, 255, 255, D_843A06A0.unk_0004); + gSPMatrix(arg0++, D_843A06A0.unk_0010, G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW); + + vtx = D_843A06A0.unk_000C; + for (i = 0; i < 15; i++) { + for (j = 0; j < 15; j++) { + idx = (i + 0) * 16 + j; + + gSPVertex(arg0++, &vtx[idx + 0], 1, 0); + gSPVertex(arg0++, &vtx[idx + 1], 1, 1); + gSPVertex(arg0++, &vtx[((i + 1) * 16 + j) + (0 * 16) + 0], 1, 2); + gSPVertex(arg0++, &vtx[idx + (1 * 16) + 1], 1, 3); + + if (!(var_s4 & 1)) { + gSP2Triangles(arg0++, 1, 2, 0, 0, 1, 3, 2, 0); + } else { + gSP2Triangles(arg0++, 3, 2, 0, 0, 1, 3, 0, 0); + } + + var_s4++; + } + } + + gSPPopMatrix(arg0++, G_MTX_MODELVIEW); + return arg0; +} diff --git a/src/fragments/62/fragment62_3512D0.c b/src/fragments/62/fragment62_3512D0.c index 0819c25..b740669 100644 --- a/src/fragments/62/fragment62_3512D0.c +++ b/src/fragments/62/fragment62_3512D0.c @@ -1,13 +1,291 @@ -#include "global.h" +#include "fragment62.h" +#include "src/6A40.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3512D0/func_84366A10.s") +static unk_D_843A22C0 D_843A22C0[40]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3512D0/func_84366B38.s") +static Vtx D_84389690[] = { + VTX(-10, 0, -10, 2048, 0, 0xFF, 0xFF, 0xFF, 0xC8), + VTX(10, 0, -10, 0, 0, 0xFF, 0xFF, 0xFF, 0xC8), + VTX(-10, 0, 10, 2048, 2048, 0xFF, 0xFF, 0xFF, 0xC8), + VTX(10, 0, 10, 0, 2048, 0xFF, 0xFF, 0xFF, 0xC8), +}; +static Gfx D_843896D0[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetColorDither(G_CD_NOISE), + gsSPEndDisplayList(), +}; +static Gfx D_84389720[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2), + gsDPSetCombineMode(G_CC_BLENDIA, G_CC_BLENDIA), + gsDPSetEnvColor(255, 255, 64, 255), + gsSPVertex(D_84389690, 4, 0), + gsSP2Triangles(0, 2, 1, 0, 2, 3, 1, 0), + gsSPEndDisplayList(), +}; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3512D0/func_84366DCC.s") +void func_84366A10(void) { + unk_D_843A22C0* var_v0; + unk_D_843A22C0_038* var_a0; + s32 i; + s32 j; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3512D0/func_84366E54.s") + var_v0 = &D_843A22C0[0]; + for (i = 0; i < 40; i++, var_v0++) { + var_v0->unk_000 = 0; + var_v0->unk_004 = 0; + var_v0->unk_006 = 0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3512D0/func_84367014.s") + var_a0 = &var_v0->unk_038[0]; + for (j = 0; j < 10; j++, var_a0++) { + var_a0->unk_00 = 0.0f; + var_a0->unk_04 = 0; + var_a0->unk_08 = 0.0f; + var_a0->unk_0C.z = var_a0->unk_0C.y = var_a0->unk_0C.x = 0.0f; + var_a0->unk_18.z = var_a0->unk_18.y = var_a0->unk_18.x = 0.0f; + } + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3512D0/func_843670C8.s") +void func_84366B38(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9, + f32 argA, s16 argB) { + unk_D_843A22C0* var_v1; + unk_D_843A22C0_038* var_s0; + s32 i; + s32 j; + Vec3f sp74; + Vec3f sp68; + Vec3f sp5C; + f32 temp_fv0; + + temp_fv0 = func_8432FCD4(); + + sp74.x = arg0; + sp74.y = arg1 + 10.0f + 25.0f; + sp74.z = arg2; + + sp68.x = arg3; + sp68.y = arg4; + sp68.z = arg5; + + sp5C.x = 0.0f; + sp5C.y = -1.0f; + sp5C.z = 0.0f; + + var_v1 = &D_843A22C0[0]; + + for (i = 0; i < 40; i++, var_v1++) { + if (var_v1->unk_000 == 0) { + var_v1->unk_000 = 1; + var_v1->unk_002 = 0; + var_v1->unk_004 = 0; + var_v1->unk_006 = argB; + var_v1->unk_00A.r = arg6; + var_v1->unk_00A.g = arg7; + var_v1->unk_00A.b = arg8; + var_v1->unk_010 = temp_fv0 * 0.5f; + var_v1->unk_014 = argA; + + if (arg0 > 0) { + var_v1->unk_008 = -1; + } else { + var_v1->unk_008 = 1; + } + + var_s0 = &var_v1->unk_038[0]; + for (j = 0; j < 10; j++, var_s0++) { + var_s0->unk_00 = j; + var_s0->unk_04 = (arg9 * (9 - j)) / 10; + var_s0->unk_08 = (RAND(100) * 6.2831854820251465) / 100.0; + var_s0->unk_0C = sp74; + var_s0->unk_18 = sp68; + var_s0->unk_24 = sp5C; + } + break; + } + } +} + +void func_84366DCC(f32 arg0, Vec3f* arg1, f32 arg2) { + MtxF sp30; + + guRotateRPYF(sp30.mf, 90.0f, (arg0 * 360.0) / 6.2831854820251465, (arg0 * 360.0) / 6.2831854820251465); + guMtxXFMF(sp30.mf, 0.0f, 0.0f, arg2, &arg1->x, &arg1->y, &arg1->z); +} + +void func_84366E54(unk_D_843A22C0* arg0) { + s32 i; + s32 j; + Vtx* var_a1; + Vtx* var_a2; + unk_D_843A22C0_038* var_v0; + unk_D_843A22C0_038* var_v1; + + var_v0 = &arg0->unk_038[9]; + for (i = 0; i < 9; i++, var_v0--) { + var_a1 = &var_v0[0].unk_30[0]; + var_a2 = &var_v0[-1].unk_30[0]; + for (j = 0; j < 2; j++) { + *var_a1++ = *var_a2++; + } + } + + var_v1 = &arg0->unk_038[0]; + switch (arg0->unk_002) { + case 0: + var_v1->unk_0C.y += var_v1->unk_24.y; + if (arg0->unk_004 >= 0xB) { + arg0->unk_002 = 1; + } + var_v1->unk_08 += 2.0 * arg0->unk_014; + break; + + case 1: + var_v1->unk_0C.x += var_v1->unk_18.x; + var_v1->unk_0C.y += var_v1->unk_18.y; + var_v1->unk_0C.z += var_v1->unk_18.z; + + if (arg0->unk_008 > 0) { + var_v1->unk_18.x += 2.0; + if (var_v1->unk_18.x > 20.0) { + var_v1->unk_18.x = 20.0f; + } + } else { + var_v1->unk_18.x -= 2.0; + if (var_v1->unk_18.x < -20.0) { + var_v1->unk_18.x = -20.0f; + } + } + var_v1->unk_08 += arg0->unk_014; + break; + } +} + +s32 func_84367014(void) { + s32 i; + s32 var_s2 = 0; + unk_D_843A22C0* var_s0 = &D_843A22C0[0]; + + for (i = 0; i < 40; i++, var_s0++) { + if (var_s0->unk_000 == 1) { + var_s0->unk_004 += 1; + if ((var_s0->unk_006 + 0xA) < var_s0->unk_004) { + var_s0->unk_000 = 0; + } else { + func_84366E54(var_s0); + var_s2++; + } + } + } + + if (var_s2 > 0) { + return 0; + } + return -1; +} + +Gfx* func_843670C8(Gfx* arg0) { + s32 i; + unk_D_843A22C0* var_s5; + unk_D_843A22C0_038* temp_s0; + s32 k; + s32 j; + Mtx* temp_s1; + Vec3f sp13C; + Vtx* vtx; + Mtx spF8; + Mtx spB8; + f32 spB4; + Vtx* vtx2; + f32 tmp; + + gDPLoadTextureBlock_4b(arg0++, D_843920C0[0x10], G_IM_FMT_I, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD); + + var_s5 = &D_843A22C0[0]; + for (i = 0; i < 40; i++, var_s5++) { + if (var_s5->unk_000 == 1) { + temp_s0 = &var_s5->unk_038[0]; + tmp = var_s5->unk_010; + + temp_s1 = func_80005F5C(sizeof(Mtx) * 1); + + spB4 = (temp_s0->unk_08 * 360.0) / 6.2831854820251465; + guTranslate(temp_s1, temp_s0->unk_0C.x, temp_s0->unk_0C.y, temp_s0->unk_0C.z); + + if (var_s5->unk_002 == 0) { + guRotateRPY(&spF8, 90.0f, spB4, 0.0f); + } else { + guRotateRPY(&spF8, 90.0f, spB4, spB4); + } + + guMtxCatL(&spF8, temp_s1, temp_s1); + guScale(&spB8, tmp, tmp, tmp); + guMtxCatL(&spB8, temp_s1, temp_s1); + + gSPMatrix(arg0++, temp_s1, G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW); + gSPDisplayList(arg0++, D_84389720); + gSPPopMatrix(arg0++, G_MTX_MODELVIEW); + + var_s5->unk_018 = func_80005F5C(sizeof(Vtx) * 20); + vtx = var_s5->unk_018; + + for (j = 0; j < 10; j++, temp_s0++) { + if ((j == 0) || (var_s5->unk_004 < 2)) { + for (k = 0, vtx2 = &temp_s0->unk_30[0]; k < 2; k++) { + if (temp_s0->unk_00 <= 0.0) { + func_84366DCC(temp_s0->unk_08 + ((2.0 * k * 3.1415927410125732) / 2), &sp13C, + (10.0f * tmp) * 0.8f); + } + + vtx->v.ob[0] = temp_s0->unk_0C.x + sp13C.x; + vtx->v.ob[1] = temp_s0->unk_0C.y + sp13C.y; + vtx->v.ob[2] = temp_s0->unk_0C.z + sp13C.z; + + vtx->v.cn[0] = var_s5->unk_00A.r; + vtx->v.cn[1] = var_s5->unk_00A.g; + vtx->v.cn[2] = var_s5->unk_00A.b; + vtx->v.cn[3] = temp_s0->unk_04; + + *vtx2++ = *vtx++; + } + } else { + for (k = 0, vtx2 = &temp_s0->unk_30[0]; k < 2; k++) { + *vtx = *vtx2++; + vtx->v.cn[3] = temp_s0->unk_04; + + vtx++; + } + } + } + + if (var_s5->unk_002 == 1) { + vtx = var_s5->unk_018; + + for (k = 0; k < 9; k++) { + gSPDisplayList(arg0++, D_843896D0); + gSPVertex(arg0++, vtx, 4, 0); + gSP2Triangles(arg0++, 0, 1, 2, 0, 1, 3, 2, 0); + + vtx += 2; + } + } + } + } + + return arg0; +} diff --git a/src/fragments/62/fragment62_351F20.c b/src/fragments/62/fragment62_351F20.c index 85492c8..282b8b0 100644 --- a/src/fragments/62/fragment62_351F20.c +++ b/src/fragments/62/fragment62_351F20.c @@ -1,3 +1,179 @@ -#include "global.h" +#include "fragment62.h" +#include "src/30640.h" +#include "src/6A40.h" +static Gfx D_84389780[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_SHADE | G_SHADING_SMOOTH), + gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON), + gsDPPipeSync(), + gsDPLoadTextureBlock_4b(D_8438A648, G_IM_FMT_I, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, + 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPSetRenderMode(G_RM_XLU_SURF, G_RM_XLU_SURF2), + gsDPSetCombineMode(G_CC_BLENDIA, G_CC_BLENDIA), + gsDPSetAlphaDither(G_AD_NOISE), + gsDPSetAlphaCompare(G_AC_NONE), + gsSPEndDisplayList(), +}; +static Vtx D_84389810[] = { + VTX(0, 20, 0, 1024, 2048, 0xFF, 0xFF, 0xFF, 0x00), VTX(30, 20, 0, 1024, 2048, 0xFF, 0xFF, 0xFF, 0x00), + VTX(-20, 10, 0, 0, 1024, 0xFF, 0xFF, 0xFF, 0x00), VTX(50, 10, 0, 2048, 1024, 0xFF, 0xFF, 0xFF, 0x00), + VTX(0, 0, 0, 1024, 1024, 0xFF, 0xFF, 0xFF, 0xFF), VTX(30, 0, 0, 1024, 1024, 0xFF, 0xFF, 0xFF, 0xFF), + VTX(-20, -10, 0, 0, 1024, 0xFF, 0xFF, 0xFF, 0x00), VTX(50, -10, 0, 2048, 1024, 0xFF, 0xFF, 0xFF, 0x00), + VTX(0, -20, 0, 1024, 0, 0xFF, 0xFF, 0xFF, 0x00), VTX(30, -20, 0, 1024, 0, 0xFF, 0xFF, 0xFF, 0x00), +}; + +#ifdef NON_MATCHING +Gfx* func_84367660(Gfx* arg0, Vec3f* arg1, Vec3f* arg2, Vec3f* arg3, f32 arg4, u8 arg5, u8 arg6, u8 arg7, u8 arg8) { + s32 i; + Vtx* sp1E8; + s32 pad[2]; + Mtx* sp1DC; + s32 pad2[42]; + f32 sp130; + f32 sp12C; + f32 sp128; + f32 sp8C; + f32 sp88; + f32 sp84; + f32 sp80; + f32 sp7C; + f32 sp78; + s32 pad4[7]; + Vtx* var_a1; + Vtx* temp_v1; + f32 a1_x; + f32 a1_y; + f32 a1_z; + f32 a2_x; + f32 a2_y; + f32 a2_z; + f32 a3_x; + f32 a3_y; + f32 a3_z; + f32 tmp1; + f32 tmp2; + f32 tmp3; + + sp1DC = func_80005F5C(sizeof(Mtx) * 1); + sp1E8 = func_80005F5C(sizeof(Vtx) * 10); + + temp_v1 = sp1E8; + var_a1 = &D_84389810[0]; + for (i = 0; i < 10; i++) { + *temp_v1 = *var_a1++; + if ((i == 4) || (i == 5)) { + temp_v1->v.cn[0] = arg5; + temp_v1->v.cn[1] = arg6; + temp_v1->v.cn[2] = arg7; + temp_v1->v.cn[3] = arg8; + } + temp_v1++; + } + + a1_x = arg1->x; + a1_y = arg1->y; + a1_z = arg1->z; + a2_x = arg2->x; + a2_y = arg2->y; + a2_z = arg2->z; + a3_x = arg3->x; + a3_y = arg3->y; + a3_z = arg3->z; + + func_80031A94(a2_x - a1_x, a2_y - a1_y, a2_z - a1_z, a1_x - a3_x, a1_y - a3_y, a1_z - a3_z, &sp130, &sp12C, &sp128); + if ((SQ(sp130) + SQ(sp12C) + SQ(sp128)) > 0.0f) { + func_80031B04(&sp130, &sp12C, &sp128); + } + + gSPDisplayList(arg0++, D_84389780); + gDPPipeSync(arg0++); + gDPSetEnvColor(arg0++, arg5, arg6, arg7, arg8); + + a3_x = arg4 * sp130; + a3_y = arg4 * sp12C; + a3_z = arg4 * sp128; + + temp_v1 = sp1E8; + + if (a3_z) {} + + tmp1 = a2_y - a3_y * 2.0f; + + temp_v1->v.ob[0] = a3_x * 2.0f + a1_x; + temp_v1->v.ob[1] = a3_y * 2.0f + a1_y; + temp_v1->v.ob[2] = a3_z * 2.0f + a1_z; + temp_v1++; + + temp_v1->v.ob[0] = a3_x * 2.0f + a2_x; + temp_v1->v.ob[1] = a3_y * 2.0f + a2_y; + temp_v1->v.ob[2] = a3_z * 2.0f + a2_z; + temp_v1++; + + sp8C = (-a2_x * 0.2f) + (a1_x * 1.2f); + sp88 = (-a2_y * 0.2f) + (a1_y * 1.2f); + sp84 = (-a2_z * 0.2f) + (a1_z * 1.2f); + + sp80 = (a2_x * 1.2f) - (a1_x * 0.2f); + sp7C = (a2_y * 1.2f) - (a1_y * 0.2f); + sp78 = (a2_z * 1.2f) - (a1_z * 0.2f); + + temp_v1->v.ob[0] = a3_x + sp8C; + temp_v1->v.ob[1] = a3_y + sp88; + temp_v1->v.ob[2] = a3_z + sp84; + temp_v1++; + + temp_v1->v.ob[0] = a3_x + sp80; + temp_v1->v.ob[1] = a3_y + sp7C; + temp_v1->v.ob[2] = a3_z + sp78; + temp_v1++; + + temp_v1->v.ob[0] = a1_x; + temp_v1->v.ob[1] = a1_y; + temp_v1->v.ob[2] = a1_z; + temp_v1++; + + temp_v1->v.ob[0] = a2_x; + temp_v1->v.ob[1] = a2_y; + temp_v1->v.ob[2] = a2_z; + temp_v1++; + + temp_v1->v.ob[0] = sp8C - a3_x; + temp_v1->v.ob[1] = sp88 - a3_y; + temp_v1->v.ob[2] = sp84 - a3_z; + temp_v1++; + + temp_v1->v.ob[0] = sp80 - a3_x; + temp_v1->v.ob[1] = sp7C - a3_y; + temp_v1->v.ob[2] = sp78 - a3_z; + temp_v1++; + + temp_v1->v.ob[0] = a1_x - a3_x * 2.0f; + temp_v1->v.ob[1] = a1_y - a3_y * 2.0f; + temp_v1->v.ob[2] = a1_z - a3_z * 2.0f; + temp_v1++; + + temp_v1->v.ob[0] = a2_x - a3_x * 2.0f; + temp_v1->v.ob[1] = tmp1; + temp_v1->v.ob[2] = a2_z - a3_z * 2.0f; + temp_v1++; + + guTranslate(sp1DC, 0.0f, 0.0f, 0.0f); + + gSPMatrix(arg0++, sp1DC, G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW); + gSPVertex(arg0++, sp1E8, 10, 0); + gSP2Triangles(arg0++, 0, 4, 2, 0, 2, 4, 6, 0); + gSP2Triangles(arg0++, 0, 1, 4, 0, 1, 5, 4, 0); + gSP2Triangles(arg0++, 1, 3, 5, 0, 3, 7, 5, 0); + gSP2Triangles(arg0++, 6, 4, 8, 0, 4, 5, 8, 0); + gSP2Triangles(arg0++, 8, 5, 9, 0, 5, 7, 9, 0); + gSPPopMatrix(arg0++, G_MTX_MODELVIEW); + + return arg0; +} +#else #pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_351F20/func_84367660.s") +#endif diff --git a/src/fragments/62/fragment62_352570.c b/src/fragments/62/fragment62_352570.c index 4a5b197..e7ac491 100644 --- a/src/fragments/62/fragment62_352570.c +++ b/src/fragments/62/fragment62_352570.c @@ -1,13 +1,301 @@ -#include "global.h" +#include "fragment62.h" +#include "src/6A40.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_352570/func_84367CB0.s") +static unk_D_843AA880 D_843AA880[4]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_352570/func_84367E2C.s") +static Vtx D_843898B0[] = { + VTX(-30, 0, -20, 2048, 0, 0xFF, 0xFF, 0xFF, 0xC8), + VTX(10, 0, -20, 0, 0, 0xFF, 0xFF, 0xFF, 0xC8), + VTX(-30, 0, 20, 2048, 2048, 0xFF, 0xFF, 0xFF, 0xC8), + VTX(10, 0, 20, 0, 2048, 0xFF, 0xFF, 0xFF, 0xC8), +}; +static Gfx D_843898F0[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2), + gsDPSetCombineMode(G_CC_BLENDIA, G_CC_BLENDIA), + gsDPSetPrimColor(0, 0, 255, 255, 255, 255), + gsDPSetEnvColor(255, 255, 255, 255), + gsSPVertex(0x843898B0, 4, 0), + gsSP2Triangles(0, 2, 1, 0, 2, 3, 1, 0), + gsSPEndDisplayList(), +}; +static Gfx D_84389958[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetColorDither(G_CD_NOISE), + gsSPEndDisplayList(), +}; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_352570/func_84368080.s") +void func_84367CB0(void) { + s32 i; + s32 j; + f32 temp_fa0; + unk_D_843AA880* var_a2; + unk_D_843AA880_034* var_v0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_352570/func_84368140.s") + temp_fa0 = func_8432FCD4() * 0.75f; + var_a2 = &D_843AA880[0]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_352570/func_843684CC.s") + for (i = 0; i < 4; i++, var_a2++) { + var_a2->unk_000 = 0; + var_a2->unk_002 = 0; + var_a2->unk_004 = 0; + var_a2->unk_00C = temp_fa0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_352570/func_84368560.s") + var_v0 = &var_a2->unk_034[0]; + for (j = 0; j < 15; j++, var_v0++) { + var_v0->unk_00 = 0; + var_v0->unk_04 = 1.0f; + var_v0->unk_08 = 0.0f; + var_v0->unk_0C.z = var_v0->unk_0C.y = var_v0->unk_0C.x = 0.0f; + var_v0->unk_18.z = var_v0->unk_18.y = var_v0->unk_18.x = 0.0f; + } + } +} + +void func_84367E2C(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9, + f32 argA, f32 argB, f32 argC, s16 argD) { + unk_D_843AA880* var_v1; + unk_D_843AA880_034* var_s0; + s32 i; + s32 j; + Vec3f sp64; + Vec3f sp58; + + sp64.x = arg0; + sp64.y = arg1; + sp64.z = arg2; + var_v1 = &D_843AA880[0]; + + for (i = 0; i < 4; i++, var_v1++) { + if (var_v1->unk_000 == 0) { + f32 tmp = var_v1->unk_00C; + + var_v1->unk_000 = 1; + var_v1->unk_002 = 0; + + var_v1->unk_004 = argD; + var_v1->unk_008.r = arg6; + var_v1->unk_008.g = arg7; + var_v1->unk_008.b = arg8; + var_v1->unk_01C = sp64; + var_v1->unk_010 = argC; + var_v1->unk_014 = argA; + + sp58.x = arg3; + sp58.y = arg4 * tmp; + sp58.z = arg5 * tmp; + + if (arg3 < 0.0) { + var_v1->unk_006 = -1; + } else { + var_v1->unk_006 = 1; + } + + var_s0 = &var_v1->unk_034[0]; + for (j = 0; j < 15; j++, var_s0++) { + var_s0->unk_00 = (arg9 * (0xE - j)) / 15; + var_s0->unk_04 = argB; + var_s0->unk_08 = (RAND(120) * 6.2831855f) / 120.0; + var_s0->unk_0C = sp64; + var_s0->unk_18 = sp58; + } + break; + } + } +} + +void func_84368080(f32 arg0, Vec3f* arg1, f32 arg2, f32 arg3) { + MtxF spB0; + MtxF sp70; + MtxF sp30; + UNUSED s32 pad; + + guScaleF(sp30.mf, arg3, arg3, arg3); + guRotateF(sp70.mf, (arg0 * 360.0) / 6.2831854820251465, 1.0f, 0.0f, 0.0f); + guMtxCatF(sp30.mf, sp70.mf, spB0.mf); + guMtxXFMF(spB0.mf, 0.0f, 0.0f, arg2, &arg1->x, &arg1->y, &arg1->z); +} + +void func_84368140(unk_D_843AA880* arg0) { + unk_D_843AA880_034* var_v0 = &arg0->unk_034[0]; + s32 i; + f32 temp_fa0; + f32 temp_fa1; + + for (i = 0; i < 15; i++, var_v0++) { + if (i == 0) { + var_v0->unk_24 = var_v0->unk_04; + var_v0->unk_28 = var_v0->unk_08; + var_v0->unk_2C = var_v0->unk_0C; + var_v0->unk_38 = var_v0->unk_18; + + var_v0->unk_0C.x += var_v0->unk_18.x; + var_v0->unk_0C.y += var_v0->unk_18.y; + var_v0->unk_0C.z += var_v0->unk_18.z; + + var_v0->unk_08 += arg0->unk_014; + if (arg0->unk_006 < 0) { + var_v0->unk_18.x += 1.5; + if (var_v0->unk_18.x > 20.0) { + var_v0->unk_18.x = 20.0f; + } + } else { + var_v0->unk_18.x -= 1.5; + if (var_v0->unk_18.x < -20.0) { + var_v0->unk_18.x = -20.0f; + } + } + + if (arg0->unk_002 < 0xF) { + temp_fa0 = ((0xF - arg0->unk_002) * 0.03) / 15.0; + temp_fa1 = (arg0->unk_002 * 0.15) / 15.0; + var_v0->unk_18.y += (arg0->unk_01C.y - var_v0->unk_0C.y) * temp_fa0; + var_v0->unk_18.z += (arg0->unk_01C.z - var_v0->unk_0C.z) * temp_fa0; + var_v0->unk_0C.y += (arg0->unk_01C.y - var_v0->unk_0C.y) * temp_fa1; + var_v0->unk_0C.z += (arg0->unk_01C.z - var_v0->unk_0C.z) * temp_fa1; + } else { + var_v0->unk_18.y += (arg0->unk_01C.y - var_v0->unk_0C.y) * 0.03; + var_v0->unk_18.z += (arg0->unk_01C.z - var_v0->unk_0C.z) * 0.03; + var_v0->unk_0C.y += (arg0->unk_01C.y - var_v0->unk_0C.y) * 0.15; + var_v0->unk_0C.z += (arg0->unk_01C.z - var_v0->unk_0C.z) * 0.15; + } + + var_v0->unk_04 += 2.0; + if (arg0->unk_010 < var_v0->unk_04) { + var_v0->unk_04 = arg0->unk_010; + } + } else { + var_v0->unk_24 = var_v0->unk_04; + var_v0->unk_28 = var_v0->unk_08; + + var_v0->unk_2C = var_v0->unk_0C; + var_v0->unk_38 = var_v0->unk_18; + + var_v0->unk_0C = var_v0[-1].unk_2C; + var_v0->unk_08 = var_v0[-1].unk_28; + var_v0->unk_18 = var_v0[-1].unk_38; + var_v0->unk_04 = var_v0[-1].unk_24; + } + } +} + +s32 func_843684CC(void) { + s32 i; + unk_D_843AA880* var_s0 = &D_843AA880[0]; + + for (i = 0; i < 4; i++, var_s0++) { + if (var_s0->unk_000 == 1) { + var_s0->unk_002 += 1; + if (var_s0->unk_004 < var_s0->unk_002) { + var_s0->unk_000 = 0; + } else { + func_84368140(var_s0); + } + } + } + + return 0; +} + +Gfx* func_84368560(Gfx* arg0) { + s32 i; + s32 j; + s32 k; + unk_D_843AA880* var_s4; + unk_D_843AA880_034* temp_s0; + Mtx* temp_v0; + Vec3f sp134; + Vtx* var_s0; + Mtx spF0; + Mtx spB0; + s16 var_s3; + UNUSED s32 pad; + + gDPPipeSync(arg0++); + gDPLoadTextureBlock_4b(arg0++, D_843920C0[0x49], G_IM_FMT_I, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD); + + var_s4 = &D_843AA880[0]; + for (i = 0; i < 4; i++, var_s4++) { + if (var_s4->unk_000 == 1) { + guScale(&spB0, var_s4->unk_00C, var_s4->unk_00C, var_s4->unk_00C); + temp_s0 = &var_s4->unk_034[0]; + + if (temp_s0->unk_0C.y > 0.0f) { + temp_v0 = func_80005F5C(sizeof(Mtx) * 1); + guTranslate(temp_v0, temp_s0->unk_0C.x, temp_s0->unk_0C.y, temp_s0->unk_0C.z); + guRotateRPY(&spF0, (temp_s0->unk_08 * -360.0f * var_s4->unk_006) / 6.2831854820251465, + (var_s4->unk_006 * 0x5A) + 0x5A, 0.0f); + guMtxCatL(&spF0, temp_v0, temp_v0); + guMtxCatL(&spB0, temp_v0, temp_v0); + + gSPMatrix(arg0++, temp_v0, G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW); + gSPDisplayList(arg0++, D_843898F0); + gSPPopMatrix(arg0++, G_MTX_MODELVIEW); + } + + var_s4->unk_018 = func_80005F5C(sizeof(Vtx) * 30); + var_s0 = var_s4->unk_018; + + for (j = 0; j < 15; j++) { + func_84368080(temp_s0->unk_08, &sp134, temp_s0->unk_04, var_s4->unk_00C); + var_s3 = temp_s0->unk_0C.y + sp134.y; + if (var_s3 < 0) { + var_s3 = 0; + } + + var_s0->v.ob[0] = temp_s0->unk_0C.x + sp134.x; + var_s0->v.ob[1] = var_s3; + var_s0->v.ob[2] = temp_s0->unk_0C.z + sp134.z; + var_s0->v.cn[0] = var_s4->unk_008.r; + var_s0->v.cn[1] = var_s4->unk_008.g; + var_s0->v.cn[2] = var_s4->unk_008.b; + var_s0->v.cn[3] = temp_s0->unk_00; + var_s0++; + + func_84368080(temp_s0->unk_08 + M_PI_F, &sp134, temp_s0->unk_04, var_s4->unk_00C); + + var_s3 = temp_s0->unk_0C.y + sp134.y; + if (var_s3 < 0) { + var_s3 = 0; + } + var_s0->v.ob[0] = temp_s0->unk_0C.x + sp134.x; + var_s0->v.ob[1] = var_s3; + var_s0->v.ob[2] = temp_s0->unk_0C.z + sp134.z; + var_s0->v.cn[0] = var_s4->unk_008.r; + var_s0->v.cn[1] = var_s4->unk_008.g; + var_s0->v.cn[2] = var_s4->unk_008.b; + var_s0->v.cn[3] = temp_s0->unk_00; + var_s0++; + + temp_s0++; + } + + var_s0 = var_s4->unk_018; + + gSPDisplayList(arg0++, D_84389958); + + for (k = 0; k < 14; k++) { + gSPVertex(arg0++, var_s0, 4, 0); + gSP2Triangles(arg0++, 0, 2, 1, 0, 2, 3, 1, 0); + var_s0 += 2; + } + } + } + + return arg0; +} diff --git a/src/fragments/62/fragment62_353370.c b/src/fragments/62/fragment62_353370.c index 7dc4f2e..8516b65 100644 --- a/src/fragments/62/fragment62_353370.c +++ b/src/fragments/62/fragment62_353370.c @@ -1,13 +1,272 @@ -#include "global.h" +#include "fragment62.h" +#include "src/6A40.h" +#include "src/math_util.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_353370/func_84368AB0.s") +static unk_D_843AB940 D_843AB940[4]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_353370/func_84368C04.s") +static Gfx D_843899B0[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetColorDither(G_CD_NOISE), + gsSPEndDisplayList(), +}; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_353370/func_84368E78.s") +void func_84368AB0(void) { + s32 i; + s32 j; + unk_D_843AB940* var_a2 = &D_843AB940[0]; + unk_D_843AB940_038* var_v0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_353370/func_84368F08.s") + for (i = 0; i < 4; i++, var_a2++) { + var_a2->unk_000 = 0; + var_a2->unk_002 = 0; + var_a2->unk_004 = 0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_353370/func_843692E8.s") + var_v0 = &var_a2->unk_038[0]; + for (j = 0; j < 15; j++, var_v0++) { + var_v0->unk_00 = 0; + var_v0->unk_04 = 1.0f; + var_v0->unk_08 = 0.0f; + var_v0->unk_0C.z = var_v0->unk_0C.y = var_v0->unk_0C.x = 0.0f; + var_v0->unk_18.z = var_v0->unk_18.y = var_v0->unk_18.x = 0.0f; + } + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_353370/func_84369388.s") +void func_84368C04(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9, + f32 argA, f32 argB, f32 argC, s16 argD) { + s32 i; + s32 j; + unk_D_843AB940* var_v1; + unk_D_843AB940_038* var_s0; + Vec3f sp64; + Vec3f sp58; + + sp64.x = arg0; + sp64.y = arg1; + sp64.z = arg2; + + sp58.x = arg3; + sp58.y = arg4; + sp58.z = arg5; + + var_v1 = &D_843AB940[0]; + for (i = 0; i < 4; i++, var_v1++) { + if (var_v1->unk_000 == 0) { + var_v1->unk_000 = 1; + var_v1->unk_002 = 0; + var_v1->unk_004 = argD; + var_v1->unk_008.r = arg6; + var_v1->unk_008.g = arg7; + var_v1->unk_008.b = arg8; + var_v1->unk_01C = sp64; + var_v1->unk_00C = argC; + var_v1->unk_010 = argA; + var_v1->unk_034 = func_8432FD70(sp64, 2); + + if (arg3 < 0.0) { + var_v1->unk_006 = -1; + } else { + var_v1->unk_006 = 1; + } + + var_s0 = &var_v1->unk_038[0]; + for (j = 0; j < 15; j++, var_s0++) { + var_s0->unk_00 = (arg9 * (0xE - j)) / 15; + var_s0->unk_04 = argB; + var_s0->unk_08 = (RAND(120) * 6.2831855f) / 120.0; + var_s0->unk_0C = sp64; + var_s0->unk_18 = sp58; + } + break; + } + } +} + +void func_84368E78(f32 arg0, Vec3f* arg1, f32 arg2) { + UNUSED MtxF sp70; + MtxF sp30; + UNUSED s32 pad; + + guRotateF(sp30.mf, (arg0 * 360.0) / 6.2831854820251465, 1.0f, 0.0f, 0.0f); + guMtxXFMF(sp30.mf, 0.0f, 0.0f, arg2, &arg1->x, &arg1->y, &arg1->z); +} + +void func_84368F08(unk_D_843AB940* arg0) { + unk_D_843AB940_038* var_s0 = &arg0->unk_038[0]; + s32 i; + f32 var_ft4; + + for (i = 0; i < 15; i++, var_s0++) { + if (i == 0) { + var_s0->unk_24 = var_s0->unk_04; + var_s0->unk_28 = var_s0->unk_08; + var_s0->unk_2C = var_s0->unk_0C; + var_s0->unk_38 = var_s0->unk_18; + + var_s0->unk_0C.x += var_s0->unk_18.x; + var_s0->unk_0C.y += var_s0->unk_18.y; + var_s0->unk_0C.z += var_s0->unk_18.z; + + var_s0->unk_08 += arg0->unk_010; + if (arg0->unk_006 > 0) { + var_s0->unk_18.x += 0.4; + if (var_s0->unk_18.x > 20.0) { + var_s0->unk_18.x = 20.0f; + } + } else { + var_s0->unk_18.x -= 0.4; + if (var_s0->unk_18.x < -20.0) { + var_s0->unk_18.x = -20.0f; + } + } + + if (arg0->unk_002 < 0xA) { + f32 tmp1 = (((0xA - arg0->unk_002) * 0.01) / 10.0); + f32 tmp2 = ((arg0->unk_002 * 0.07) / 10.0); + + var_s0->unk_18.y += (arg0->unk_01C.y - var_s0->unk_0C.y) * tmp1; + var_ft4 = (arg0->unk_01C.y - var_s0->unk_0C.y) * tmp2; + } else { + var_s0->unk_18.y += ((arg0->unk_01C.y - var_s0->unk_0C.y) * 0.01); + var_ft4 = (arg0->unk_01C.y - var_s0->unk_0C.y) * 0.07; + } + var_s0->unk_0C.y += var_ft4; + arg0->unk_014 = (MathUtil_Atan2s(var_s0->unk_18.x, var_s0->unk_18.y + var_ft4) * 360.0) / 65535.0; + + func_8432FDF0(arg0->unk_034, var_s0->unk_0C); + + if (arg0->unk_002 == 1) { + func_8432FD70(var_s0->unk_0C, 1); + } + + var_s0->unk_04 += 2.0; + if (arg0->unk_00C < var_s0->unk_04) { + var_s0->unk_04 = arg0->unk_00C; + } + } else { + var_s0->unk_24 = var_s0->unk_04; + var_s0->unk_28 = var_s0->unk_08; + + var_s0->unk_2C = var_s0->unk_0C; + var_s0->unk_38 = var_s0->unk_18; + + var_s0->unk_0C = var_s0[-1].unk_2C; + var_s0->unk_08 = var_s0[-1].unk_28; + var_s0->unk_18 = var_s0[-1].unk_38; + var_s0->unk_04 = var_s0[-1].unk_24; + } + } +} + +s32 func_843692E8(void) { + s32 i; + unk_D_843AB940* var_s0 = &D_843AB940[0]; + + for (i = 0; i < 4; i++, var_s0++) { + if (var_s0->unk_000 == 1) { + var_s0->unk_002 += 1; + if (var_s0->unk_004 < var_s0->unk_002) { + var_s0->unk_000 = 0; + func_8432FE24(var_s0->unk_034); + } else { + func_84368F08(var_s0); + } + } + } + return 0; +} + +Gfx* func_84369388(Gfx* arg0) { + s32 i; + s32 j; + s32 k; + unk_D_843AB940* var_s5; + unk_D_843AB940_038* temp_s0; + Mtx* temp_v0; + Vec3f sp154; + UNUSED s32 pad[14]; + s16 var_s3; + Vtx* var_s0; + Mtx spD0; + Mtx sp90; + UNUSED s32 pad2; + + var_s5 = &D_843AB940[0]; + for (i = 0; i < 4; i++, var_s5++) { + if (var_s5->unk_000 == 1) { + temp_s0 = &var_s5->unk_038[0]; + if (temp_s0->unk_0C.y > 0.0f) { + temp_v0 = func_80005F5C(sizeof(Mtx) * 1); + guTranslate(temp_v0, temp_s0->unk_0C.x, temp_s0->unk_0C.y, temp_s0->unk_0C.z); + guRotateRPY(&spD0, (temp_s0->unk_08 * -360.0f * var_s5->unk_006) / 6.2831854820251465, 0.0f, + var_s5->unk_014); + guMtxCatL(&spD0, temp_v0, temp_v0); + guScale(&sp90, 0.09f, 0.09f, 0.09f); + guMtxCatL(&sp90, temp_v0, temp_v0); + + gSPMatrix(arg0++, temp_v0, G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW); + gSPDisplayList(arg0++, D_8438A980); + gSPPopMatrix(arg0++, G_MTX_MODELVIEW); + } + + var_s5->unk_018 = func_80005F5C(sizeof(Vtx) * 30); + var_s0 = var_s5->unk_018; + + for (j = 0; j < 15; j++) { + func_84368E78(temp_s0->unk_08, &sp154, temp_s0->unk_04); + + var_s3 = temp_s0->unk_0C.y + sp154.y; + if (var_s3 < 0) { + var_s3 = 0; + } + + var_s0->v.ob[0] = temp_s0->unk_0C.x + sp154.x; + var_s0->v.ob[1] = var_s3; + var_s0->v.ob[2] = temp_s0->unk_0C.z + sp154.z; + var_s0->v.cn[0] = var_s5->unk_008.r; + var_s0->v.cn[1] = var_s5->unk_008.g; + var_s0->v.cn[2] = var_s5->unk_008.b; + var_s0->v.cn[3] = temp_s0->unk_00; + var_s0++; + + func_84368E78(temp_s0->unk_08 + 3.1415927f, &sp154, temp_s0->unk_04); + + var_s3 = temp_s0->unk_0C.y + sp154.y; + if (var_s3 < 0) { + var_s3 = 0; + } + + var_s0->v.ob[0] = temp_s0->unk_0C.x + sp154.x; + var_s0->v.ob[1] = var_s3; + var_s0->v.ob[2] = temp_s0->unk_0C.z + sp154.z; + var_s0->v.cn[0] = var_s5->unk_008.r; + var_s0->v.cn[1] = var_s5->unk_008.g; + var_s0->v.cn[2] = var_s5->unk_008.b; + var_s0->v.cn[3] = temp_s0->unk_00; + var_s0++; + + temp_s0++; + } + + var_s0 = var_s5->unk_018; + + gSPDisplayList(arg0++, D_843899B0); + + for (k = 0; k < 14; k++) { + gSPVertex(arg0++, var_s0, 4, 0); + gSP2Triangles(arg0++, 0, 2, 1, 0, 2, 3, 1, 0); + var_s0 += 2; + } + } + } + + return arg0; +} diff --git a/src/fragments/62/fragment62_3540B0.c b/src/fragments/62/fragment62_3540B0.c index 902a4e4..b910574 100644 --- a/src/fragments/62/fragment62_3540B0.c +++ b/src/fragments/62/fragment62_3540B0.c @@ -1,25 +1,263 @@ -#include "global.h" +#include "fragment62.h" +#include "src/6A40.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_843697F0.s") +static unk_D_843ACA10 D_843ACA10[4]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_84369950.s") +static Gfx D_84389A00[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetColorDither(G_CD_NOISE), + gsSPEndDisplayList(), +}; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_84369BF0.s") +void func_843697F0(void) { + s32 i; + s32 j; + unk_D_843ACA10* var_v0 = &D_843ACA10[0]; + unk_D_843ACA10_01C* var_a0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_84369C80.s") + for (i = 0; i < 4; i++, var_v0++) { + var_v0->unk_000 = 0; + var_v0->unk_002 = 0; + var_v0->unk_004 = 0; + var_v0->unk_418 = 0.16f; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_84369F0C.s") + var_a0 = &var_v0->unk_01C[0]; + for (j = 0; j < 15; j++, var_a0++) { + var_a0->unk_00 = 0; + var_a0->unk_04 = 1.0f; + var_a0->unk_08 = 0.0f; + var_a0->unk_0C.x = 0.0f; + var_a0->unk_0C.y = 0.0f; + var_a0->unk_0C.z = 0.0f; + var_a0->unk_18.x = 0.0f; + var_a0->unk_18.y = 0.0f; + var_a0->unk_18.z = 0.0f; + } + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_84369FA0.s") +void func_84369950(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9, + f32 argA, f32 argB, f32 argC, s16 argD) { + s32 i; + s32 j; + unk_D_843ACA10* var_v1; + unk_D_843ACA10_01C* var_s0; + Vec3f sp64; + Vec3f sp58; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_8436A410.s") + sp64.x = arg0; + sp64.y = arg1; + sp64.z = arg2; + sp58.x = arg3; + sp58.y = arg4; + sp58.z = arg5; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_8436A540.s") + var_v1 = &D_843ACA10[0]; + for (i = 0; i < 4; i++, var_v1++) { + if (var_v1->unk_000 == 0) { + var_v1->unk_000 = 1; + var_v1->unk_002 = 0; + var_v1->unk_004 = argD; + var_v1->unk_008.r = arg6; + var_v1->unk_008.g = arg7; + var_v1->unk_008.b = arg8; + var_v1->unk_010 = argA; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_8436A808.s") + if (func_8432FA0C() == 0xD) { + var_v1->unk_418 = 0.08f; + var_v1->unk_00C = argC * 0.5f; + } else { + var_v1->unk_418 = 0.16f; + var_v1->unk_00C = argC; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_8436A890.s") + var_v1->unk_018 = func_8432FD70(sp64, 2); + if (arg3 < 0.0) { + var_v1->unk_006 = -1; + } else { + var_v1->unk_006 = 1; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_8436ABA8.s") + var_s0 = &var_v1->unk_01C[0]; + for (j = 0; j < 15; j++, var_s0++) { + var_s0->unk_00 = (arg9 * (0xE - j)) / 15; + var_s0->unk_04 = argB; + var_s0->unk_08 = (RAND(120) * 6.2831855f) / 120.0; + var_s0->unk_0C = sp64; + var_s0->unk_18 = sp58; + } + break; + } + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_8436AC44.s") +void func_84369BF0(f32 arg0, Vec3f* arg1, f32 arg2) { + UNUSED MtxF sp70; + MtxF sp30; + UNUSED s32 pad; + + guRotateF(sp30.mf, (arg0 * 360.0) / 6.2831854820251465, 1.0f, 0.0f, 0.0f); + guMtxXFMF(sp30.mf, 0.0f, 0.0f, arg2, &arg1->x, &arg1->y, &arg1->z); +} + +void func_84369C80(unk_D_843ACA10* arg0) { + s32 i; + unk_D_843ACA10_01C* var_s0 = &arg0->unk_01C[0]; + + for (i = 0; i < 15; i++, var_s0++) { + if (i == 0) { + var_s0->unk_24 = var_s0->unk_04; + var_s0->unk_28 = var_s0->unk_08; + + var_s0->unk_2C = var_s0->unk_0C; + var_s0->unk_38 = var_s0->unk_18; + + var_s0->unk_0C.x += var_s0->unk_18.x; + var_s0->unk_0C.y += var_s0->unk_18.y; + var_s0->unk_0C.z += var_s0->unk_18.z; + + var_s0->unk_08 += arg0->unk_010; + if (arg0->unk_006 > 0) { + var_s0->unk_18.x += 0.4; + if (var_s0->unk_18.x > 20.0) { + var_s0->unk_18.x = 20.0f; + } + } else { + var_s0->unk_18.x -= 0.4; + if (var_s0->unk_18.x < -20.0) { + var_s0->unk_18.x = -20.0f; + } + } + + func_8432FDF0(arg0->unk_018, var_s0->unk_0C); + + var_s0->unk_04 += 2.0; + if (arg0->unk_00C < var_s0->unk_04) { + var_s0->unk_04 = arg0->unk_00C; + } + } else { + var_s0->unk_24 = var_s0->unk_04; + var_s0->unk_28 = var_s0->unk_08; + + var_s0->unk_2C = var_s0->unk_0C; + var_s0->unk_38 = var_s0->unk_18; + + var_s0->unk_0C = var_s0[-1].unk_2C; + var_s0->unk_08 = var_s0[-1].unk_28; + var_s0->unk_18 = var_s0[-1].unk_38; + var_s0->unk_04 = var_s0[-1].unk_24; + } + } +} + +s32 func_84369F0C(void) { + s32 i; + unk_D_843ACA10* var_s0 = &D_843ACA10[0]; + + for (i = 0; i < 4; i++, var_s0++) { + if (var_s0->unk_000 == 1) { + var_s0->unk_002 += 1; + if (var_s0->unk_004 < var_s0->unk_002) { + var_s0->unk_000 = 0; + } else { + func_84369C80(var_s0); + } + } + } + + return 0; +} + +Gfx* func_84369FA0(Gfx* arg0) { + s32 i; + s32 j; + s32 k; + unk_D_843ACA10_01C* temp_s0; + unk_D_843ACA10* var_s5; + Vtx* var_s0; + Vec3f sp154; + UNUSED s32 pad[15]; + Mtx* temp_v0; + Mtx sp100; + Mtx spC0; + s16 var_s3; + + var_s5 = &D_843ACA10[0]; + for (i = 0; i < 4; i++, var_s5++) { + if (var_s5->unk_000 == 1) { + temp_s0 = &var_s5->unk_01C[0]; + if (temp_s0->unk_0C.y > 0.0f) { + temp_v0 = func_80005F5C(sizeof(Mtx) * 1); + guTranslate(temp_v0, temp_s0->unk_0C.x, temp_s0->unk_0C.y, temp_s0->unk_0C.z); + guRotateRPY(&sp100, (temp_s0->unk_08 * -360.0f * var_s5->unk_006) / 6.2831854820251465, + 0x5A - (var_s5->unk_006 * 0x5A), 0.0f); + guMtxCatL(&sp100, temp_v0, temp_v0); + guScale(&spC0, var_s5->unk_418, var_s5->unk_418, var_s5->unk_418); + guMtxCatL(&spC0, temp_v0, temp_v0); + + gSPMatrix(arg0++, temp_v0, G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW); + gSPDisplayList(arg0++, D_8438A980); + gSPPopMatrix(arg0++, G_MTX_MODELVIEW); + } + + var_s5->unk_014 = func_80005F5C(sizeof(Vtx) * 30); + + var_s0 = var_s5->unk_014; + for (j = 0; j < 15; j++) { + func_84369BF0(temp_s0->unk_08, &sp154, temp_s0->unk_04); + + var_s3 = temp_s0->unk_0C.y + sp154.y; + if (var_s3 < 0) { + var_s3 = 0; + } + + var_s0->v.ob[0] = temp_s0->unk_0C.x + sp154.x; + var_s0->v.ob[1] = var_s3; + var_s0->v.ob[2] = temp_s0->unk_0C.z + sp154.z; + var_s0->v.cn[0] = var_s5->unk_008.r; + var_s0->v.cn[1] = var_s5->unk_008.g; + var_s0->v.cn[2] = var_s5->unk_008.b; + var_s0->v.cn[3] = temp_s0->unk_00; + var_s0++; + + func_84369BF0(temp_s0->unk_08 + 3.1415927f, &sp154, temp_s0->unk_04); + + var_s3 = temp_s0->unk_0C.y + sp154.y; + if (var_s3 < 0) { + var_s3 = 0; + } + + var_s0->v.ob[0] = temp_s0->unk_0C.x + sp154.x; + var_s0->v.ob[1] = var_s3; + var_s0->v.ob[2] = temp_s0->unk_0C.z + sp154.z; + var_s0->v.cn[0] = var_s5->unk_008.r; + var_s0->v.cn[1] = var_s5->unk_008.g; + var_s0->v.cn[2] = var_s5->unk_008.b; + var_s0->v.cn[3] = temp_s0->unk_00; + var_s0++; + + temp_s0++; + } + + var_s0 = var_s5->unk_014; + + gSPDisplayList(arg0++, D_84389A00); + + for (k = 0; k < 14; k++) { + gSPVertex(arg0++, var_s0, 4, 0); + gSP2Triangles(arg0++, 0, 2, 1, 0, 2, 3, 1, 0); + var_s0 += 2; + } + } + } + + return arg0; +} diff --git a/src/fragments/62/fragment62_354CD0.c b/src/fragments/62/fragment62_354CD0.c new file mode 100644 index 0000000..77a8ba1 --- /dev/null +++ b/src/fragments/62/fragment62_354CD0.c @@ -0,0 +1,312 @@ +#include "fragment62.h" +#include "src/6A40.h" + +static unk_D_843ADA80 D_843ADA80[50]; + +static Gfx D_84389A50[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetColorDither(G_CD_NOISE), + gsSPEndDisplayList(), +}; +static Vtx D_84389AA0[] = { + VTX(-6, 0, -6, 2048, 0, 0xFF, 0xFF, 0xFF, 0x14), + VTX(6, 0, -6, 0, 0, 0xFF, 0xFF, 0xFF, 0x14), + VTX(-6, 0, 6, 2048, 2048, 0xFF, 0xFF, 0xFF, 0x14), + VTX(6, 0, 6, 0, 2048, 0xFF, 0xFF, 0xFF, 0x14), +}; +Gfx D_84389AE0[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA), + gsDPSetTexturePersp(G_TP_PERSP), + gsDPSetTextureLUT(G_TT_NONE), + gsDPSetTextureFilter(G_TF_BILERP), + gsDPPipeSync(), + gsSPVertex(D_84389AA0, 4, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSPEndDisplayList(), +}; + +void func_8436A410(void) { + unk_D_843ADA80* var_v0 = &D_843ADA80[0]; + unk_D_843ADA80_040* var_a0; + s32 i; + s32 j; + + for (i = 0; i < 50; i++, var_v0++) { + var_v0->unk_000 = 0; + var_v0->unk_004 = 0; + var_v0->unk_006 = 0; + + var_a0 = &var_v0->unk_040[0]; + + for (j = 0; j < 10; j++, var_a0++) { + var_a0->unk_00 = 0; + var_a0->unk_04 = 1.0f; + var_a0->unk_08 = 0.0f; + + var_a0->unk_0C.x = 0.0f; + var_a0->unk_0C.y = 0.0f; + var_a0->unk_0C.z = 0.0f; + var_a0->unk_18.x = 0.0f; + var_a0->unk_18.y = 0.0f; + var_a0->unk_18.z = 0.0f; + } + } +} + +void func_8436A540(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9, + f32 argA, f32 argB, f32 argC, s16 argD) { + unk_D_843ADA80* var_v1; + unk_D_843ADA80_040* var_s0; + s32 i; + s32 j; + Vec3f sp7C; + Vec3f sp70; + Vec3f sp64; + f32 temp_fv1; + + temp_fv1 = func_8432FCD4() * 0.5f; + + sp7C.x = arg0; + sp7C.y = (80.0f * temp_fv1) + arg1; + sp7C.z = arg2; + + sp70.x = arg3; + sp70.y = arg4; + sp70.z = arg5; + + sp64.x = 0.0f; + sp64.y = temp_fv1 * -2.0; + sp64.z = 0.0f; + + var_v1 = &D_843ADA80[0]; + + for (i = 0; i < 50; i++, var_v1++) { + if (var_v1->unk_000 == 0) { + var_v1->unk_000 = 1; + var_v1->unk_002 = 0; + var_v1->unk_004 = 0; + var_v1->unk_006 = argD; + var_v1->unk_00A.r = arg6; + var_v1->unk_00A.g = arg7; + var_v1->unk_00A.b = arg8; + var_v1->unk_024 = sp7C; + var_v1->unk_014 = argC; + var_v1->unk_018 = argA; + var_v1->unk_010 = temp_fv1; + + if (arg0 > 0.0) { + var_v1->unk_008 = -1; + } else { + var_v1->unk_008 = 1; + } + + var_s0 = var_v1->unk_040; + for (j = 0; j < 10; j++, var_s0++) { + var_s0->unk_00 = (arg9 * (9 - j)) / 10; + var_s0->unk_04 = argB; + var_s0->unk_08 = (RAND(120) * 6.2831855f) / 120.0; + var_s0->unk_0C = sp7C; + var_s0->unk_18 = sp70; + var_s0->unk_24 = sp64; + } + break; + } + } +} + +void func_8436A808(f32 arg0, Vec3f* arg1, f32 arg2) { + MtxF sp30; + f32 temp_fv0 = (arg0 * 360.0) / 6.2831854820251465; + + guRotateRPYF(sp30.mf, 90.0f, temp_fv0, temp_fv0); + guMtxXFMF(sp30.mf, 0.0f, 0.0f, arg2, &arg1->x, &arg1->y, &arg1->z); +} + +void func_8436A890(unk_D_843ADA80* arg0) { + s32 i; + f32 temp_fs3 = arg0->unk_010; + unk_D_843ADA80_040* var_s0 = &arg0->unk_040[0]; + + for (i = 0; i < 10; i++, var_s0++) { + if (i == 0) { + var_s0->unk_30 = var_s0->unk_04; + var_s0->unk_34 = var_s0->unk_08; + var_s0->unk_38 = var_s0->unk_0C; + var_s0->unk_44 = var_s0->unk_18; + + switch (arg0->unk_002) { + case 0: + var_s0->unk_0C.x += var_s0->unk_24.x; + var_s0->unk_0C.y += var_s0->unk_24.y; + var_s0->unk_0C.z += var_s0->unk_24.z; + var_s0->unk_08 += arg0->unk_018; + var_s0->unk_24.x += __sinf(var_s0->unk_08) * temp_fs3; + var_s0->unk_24.z += __cosf(var_s0->unk_08) * temp_fs3; + if (arg0->unk_004 >= 0x15) { + arg0->unk_002 = 1; + arg0->unk_004 = 0; + } + break; + + case 1: + var_s0->unk_0C.x += var_s0->unk_18.x; + var_s0->unk_0C.y += var_s0->unk_18.y; + var_s0->unk_0C.z += var_s0->unk_18.z; + var_s0->unk_08 += arg0->unk_018; + if (arg0->unk_008 > 0) { + var_s0->unk_18.x += 2.0; + if (var_s0->unk_18.x > 20.0) { + var_s0->unk_18.x = 20.0f; + } + } else { + var_s0->unk_18.x -= 2.0; + if (var_s0->unk_18.x < -20.0) { + var_s0->unk_18.x = -20.0f; + } + } + break; + } + + var_s0->unk_04 += 2.0; + if (arg0->unk_014 < var_s0->unk_04) { + var_s0->unk_04 = arg0->unk_014; + } + } else { + var_s0->unk_30 = var_s0->unk_04; + var_s0->unk_34 = var_s0->unk_08; + + var_s0->unk_38 = var_s0->unk_0C; + var_s0->unk_44 = var_s0->unk_18; + + var_s0->unk_0C = var_s0[-1].unk_38; + var_s0->unk_08 = var_s0[-1].unk_34; + var_s0->unk_18 = var_s0[-1].unk_44; + var_s0->unk_04 = var_s0[-1].unk_30; + } + } +} + +s32 func_8436ABA8(void) { + s32 i; + unk_D_843ADA80* var_s0 = &D_843ADA80[0]; + + for (i = 0; i < 50; i++, var_s0++) { + if (var_s0->unk_000 == 1) { + var_s0->unk_004++; + if ((var_s0->unk_002 == 1) && (var_s0->unk_006 < var_s0->unk_004)) { + var_s0->unk_000 = 0; + } else { + func_8436A890(var_s0); + } + } + } + return 0; +} + +Gfx* func_8436AC44(Gfx* arg0) { + s32 i; + s32 j; + s32 k; + unk_D_843ADA80_040* temp_s0; + unk_D_843ADA80* var_s5; + Vtx* var_s0; + Vec3f sp184; + UNUSED s32 pad[15]; + Mtx* temp_v0; + Mtx sp100; + Mtx spC0; + f32 temp_fs1; + s16 var_s3; + f32 tmp; + + gDPLoadTextureBlock(arg0++, D_843920C0[0x1E], G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD); + + var_s5 = &D_843ADA80[0]; + for (i = 0; i < 50; i++, var_s5++) { + if (var_s5->unk_000 == 1) { + temp_s0 = &var_s5->unk_040[0]; + tmp = var_s5->unk_010; + if (temp_s0->unk_0C.y > 0.0f) { + temp_fs1 = (temp_s0->unk_08 * 360.0f) / 6.2831854820251465; + temp_v0 = func_80005F5C(sizeof(Mtx) * 1); + guTranslate(temp_v0, temp_s0->unk_0C.x, temp_s0->unk_0C.y, temp_s0->unk_0C.z); + guRotateRPY(&sp100, 90.0f, temp_fs1, temp_fs1); + guMtxCatL(&sp100, temp_v0, temp_v0); + guScale(&spC0, tmp, tmp, tmp); + guMtxCatL(&spC0, temp_v0, temp_v0); + + gSPMatrix(arg0++, temp_v0, G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW); + gSPDisplayList(arg0++, D_84389AE0); + gSPPopMatrix(arg0++, G_MTX_MODELVIEW); + } + + var_s5->unk_020 = func_80005F5C(0x140); + + var_s0 = var_s5->unk_020; + for (j = 0; j < 10; j++) { + func_8436A808(temp_s0->unk_08, &sp184, temp_s0->unk_04 * tmp); + + var_s3 = temp_s0->unk_0C.y + sp184.y; + if (var_s3 < 0) { + var_s3 = 0; + } + + var_s0->v.ob[0] = temp_s0->unk_0C.x + sp184.x; + var_s0->v.ob[1] = var_s3; + var_s0->v.ob[2] = temp_s0->unk_0C.z + sp184.z; + var_s0->v.cn[0] = var_s5->unk_00A.r; + var_s0->v.cn[1] = var_s5->unk_00A.g; + var_s0->v.cn[2] = var_s5->unk_00A.b; + var_s0->v.cn[3] = temp_s0->unk_00; + var_s0++; + + func_8436A808(temp_s0->unk_08 + 3.1415927f, &sp184, temp_s0->unk_04 * tmp); + + var_s3 = temp_s0->unk_0C.y + sp184.y; + if (var_s3 < 0) { + var_s3 = 0; + } + + var_s0->v.ob[0] = temp_s0->unk_0C.x + sp184.x; + var_s0->v.ob[1] = var_s3; + var_s0->v.ob[2] = temp_s0->unk_0C.z + sp184.z; + var_s0->v.cn[0] = var_s5->unk_00A.r; + var_s0->v.cn[1] = var_s5->unk_00A.g; + var_s0->v.cn[2] = var_s5->unk_00A.b; + var_s0->v.cn[3] = temp_s0->unk_00; + var_s0++; + + temp_s0++; + } + + var_s0 = var_s5->unk_020; + + gSPDisplayList(arg0++, D_84389A50); + + for (k = 0; k < 9; k++) { + gSPVertex(arg0++, var_s0, 4, 0); + gSP2Triangles(arg0++, 0, 2, 1, 0, 2, 3, 1, 0); + var_s0 += 2; + } + } + } + + return arg0; +} diff --git a/src/fragments/62/fragment62_355A00.c b/src/fragments/62/fragment62_355A00.c index aa09110..b0538ac 100644 --- a/src/fragments/62/fragment62_355A00.c +++ b/src/fragments/62/fragment62_355A00.c @@ -1,13 +1,312 @@ -#include "global.h" +#include "fragment62.h" +#include "src/6A40.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_355A00/func_8436B140.s") +static unk_D_843ADA80 D_843B8340[50]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_355A00/func_8436B270.s") +static Gfx D_84389B60[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetColorDither(G_CD_NOISE), + gsSPEndDisplayList(), +}; +static Vtx D_84389BB0[] = { + VTX(-6, 0, -6, 2048, 0, 0xFF, 0xFF, 0xFF, 0x14), + VTX(6, 0, -6, 0, 0, 0xFF, 0xFF, 0xFF, 0x14), + VTX(-6, 0, 6, 2048, 2048, 0xFF, 0xFF, 0xFF, 0x14), + VTX(6, 0, 6, 0, 2048, 0xFF, 0xFF, 0xFF, 0x14), +}; +static Gfx D_84389BF0[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA), + gsDPSetTexturePersp(G_TP_PERSP), + gsDPSetTextureLUT(G_TT_NONE), + gsDPSetTextureFilter(G_TF_BILERP), + gsDPPipeSync(), + gsSPVertex(D_84389BB0, 4, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSPEndDisplayList(), +}; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_355A00/func_8436B538.s") +void func_8436B140(void) { + unk_D_843ADA80* var_v0 = &D_843B8340[0]; + unk_D_843ADA80_040* var_a0; + s32 i; + s32 j; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_355A00/func_8436B5C0.s") + for (i = 0; i < 50; i++, var_v0++) { + var_v0->unk_000 = 0; + var_v0->unk_004 = 0; + var_v0->unk_006 = 0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_355A00/func_8436B8D8.s") + var_a0 = &var_v0->unk_040[0]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_355A00/func_8436B974.s") + for (j = 0; j < 10; j++, var_a0++) { + var_a0->unk_00 = 0; + var_a0->unk_04 = 1.0f; + var_a0->unk_08 = 0.0f; + + var_a0->unk_0C.x = 0.0f; + var_a0->unk_0C.y = 0.0f; + var_a0->unk_0C.z = 0.0f; + var_a0->unk_18.x = 0.0f; + var_a0->unk_18.y = 0.0f; + var_a0->unk_18.z = 0.0f; + } + } +} + +void func_8436B270(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9, + f32 argA, f32 argB, f32 argC, s16 argD) { + unk_D_843ADA80* var_v1; + unk_D_843ADA80_040* var_s0; + s32 i; + s32 j; + Vec3f sp7C; + Vec3f sp70; + Vec3f sp64; + f32 temp_fv1; + + temp_fv1 = func_8432FCD4() * 0.5f; + + sp7C.x = arg0; + sp7C.y = (80.0f * temp_fv1) + arg1; + sp7C.z = arg2; + + sp70.x = arg3; + sp70.y = arg4; + sp70.z = arg5; + + sp64.x = 0.0f; + sp64.y = temp_fv1 * -2.0; + sp64.z = 0.0f; + + var_v1 = &D_843B8340[0]; + + for (i = 0; i < 50; i++, var_v1++) { + if (var_v1->unk_000 == 0) { + var_v1->unk_000 = 1; + var_v1->unk_002 = 0; + var_v1->unk_004 = 0; + var_v1->unk_006 = argD; + var_v1->unk_00A.r = arg6; + var_v1->unk_00A.g = arg7; + var_v1->unk_00A.b = arg8; + var_v1->unk_024 = sp7C; + var_v1->unk_014 = argC; + var_v1->unk_018 = argA; + var_v1->unk_010 = temp_fv1; + + if (arg0 > 0.0) { + var_v1->unk_008 = -1; + } else { + var_v1->unk_008 = 1; + } + + var_s0 = var_v1->unk_040; + for (j = 0; j < 10; j++, var_s0++) { + var_s0->unk_00 = (arg9 * (9 - j)) / 10; + var_s0->unk_04 = argB; + var_s0->unk_08 = (RAND(120) * 6.2831855f) / 120.0; + var_s0->unk_0C = sp7C; + var_s0->unk_18 = sp70; + var_s0->unk_24 = sp64; + } + break; + } + } +} + +void func_8436B538(f32 arg0, Vec3f* arg1, f32 arg2) { + MtxF sp30; + f32 temp_fv0 = (arg0 * 360.0) / 6.2831854820251465; + + guRotateRPYF(sp30.mf, 90.0f, temp_fv0, temp_fv0); + guMtxXFMF(sp30.mf, 0.0f, 0.0f, arg2, &arg1->x, &arg1->y, &arg1->z); +} + +void func_8436B5C0(unk_D_843ADA80* arg0) { + s32 i; + f32 temp_fs3 = arg0->unk_010; + unk_D_843ADA80_040* var_s0 = &arg0->unk_040[0]; + + for (i = 0; i < 10; i++, var_s0++) { + if (i == 0) { + var_s0->unk_30 = var_s0->unk_04; + var_s0->unk_34 = var_s0->unk_08; + var_s0->unk_38 = var_s0->unk_0C; + var_s0->unk_44 = var_s0->unk_18; + + switch (arg0->unk_002) { + case 0: + var_s0->unk_0C.x += var_s0->unk_24.x; + var_s0->unk_0C.y += var_s0->unk_24.y; + var_s0->unk_0C.z += var_s0->unk_24.z; + var_s0->unk_08 += arg0->unk_018; + var_s0->unk_24.x += __sinf(var_s0->unk_08) * temp_fs3; + var_s0->unk_24.z += __cosf(var_s0->unk_08) * temp_fs3; + if (arg0->unk_004 >= 0x15) { + arg0->unk_002 = 1; + arg0->unk_004 = 0; + } + break; + + case 1: + var_s0->unk_0C.x += var_s0->unk_18.x; + var_s0->unk_0C.y += var_s0->unk_18.y; + var_s0->unk_0C.z += var_s0->unk_18.z; + var_s0->unk_08 += arg0->unk_018; + if (arg0->unk_008 > 0) { + var_s0->unk_18.x += 2.0; + if (var_s0->unk_18.x > 20.0) { + var_s0->unk_18.x = 20.0f; + } + } else { + var_s0->unk_18.x -= 2.0; + if (var_s0->unk_18.x < -20.0) { + var_s0->unk_18.x = -20.0f; + } + } + break; + } + + var_s0->unk_04 += 2.0; + if (arg0->unk_014 < var_s0->unk_04) { + var_s0->unk_04 = arg0->unk_014; + } + } else { + var_s0->unk_30 = var_s0->unk_04; + var_s0->unk_34 = var_s0->unk_08; + + var_s0->unk_38 = var_s0->unk_0C; + var_s0->unk_44 = var_s0->unk_18; + + var_s0->unk_0C = var_s0[-1].unk_38; + var_s0->unk_08 = var_s0[-1].unk_34; + var_s0->unk_18 = var_s0[-1].unk_44; + var_s0->unk_04 = var_s0[-1].unk_30; + } + } +} + +s32 func_8436B8D8(void) { + s32 i; + unk_D_843ADA80* var_s0 = &D_843B8340[0]; + + for (i = 0; i < 50; i++, var_s0++) { + if (var_s0->unk_000 == 1) { + var_s0->unk_004++; + if ((var_s0->unk_002 == 1) && (var_s0->unk_006 < var_s0->unk_004)) { + var_s0->unk_000 = 0; + } else { + func_8436B5C0(var_s0); + } + } + } + return 0; +} + +Gfx* func_8436B974(Gfx* arg0) { + s32 i; + s32 j; + s32 k; + unk_D_843ADA80_040* temp_s0; + unk_D_843ADA80* var_s5; + Vtx* var_s0; + Vec3f sp184; + UNUSED s32 pad[15]; + Mtx* temp_v0; + Mtx sp100; + Mtx spC0; + f32 temp_fs1; + s16 var_s3; + f32 tmp; + + gDPLoadTextureBlock(arg0++, D_843920C0[0x1C], G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD); + + var_s5 = &D_843B8340[0]; + for (i = 0; i < 50; i++, var_s5++) { + if (var_s5->unk_000 == 1) { + temp_s0 = &var_s5->unk_040[0]; + tmp = var_s5->unk_010; + if (temp_s0->unk_0C.y > 0.0f) { + temp_fs1 = (temp_s0->unk_08 * 360.0f) / 6.2831854820251465; + temp_v0 = func_80005F5C(sizeof(Mtx) * 1); + guTranslate(temp_v0, temp_s0->unk_0C.x, temp_s0->unk_0C.y, temp_s0->unk_0C.z); + guRotateRPY(&sp100, 90.0f, temp_fs1, temp_fs1); + guMtxCatL(&sp100, temp_v0, temp_v0); + guScale(&spC0, tmp, tmp, tmp); + guMtxCatL(&spC0, temp_v0, temp_v0); + + gSPMatrix(arg0++, temp_v0, G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW); + gSPDisplayList(arg0++, D_84389BF0); + gSPPopMatrix(arg0++, G_MTX_MODELVIEW); + } + + var_s5->unk_020 = func_80005F5C(0x140); + + var_s0 = var_s5->unk_020; + for (j = 0; j < 10; j++) { + func_8436B538(temp_s0->unk_08, &sp184, temp_s0->unk_04 * tmp); + + var_s3 = temp_s0->unk_0C.y + sp184.y; + if (var_s3 < 0) { + var_s3 = 0; + } + + var_s0->v.ob[0] = temp_s0->unk_0C.x + sp184.x; + var_s0->v.ob[1] = var_s3; + var_s0->v.ob[2] = temp_s0->unk_0C.z + sp184.z; + var_s0->v.cn[0] = var_s5->unk_00A.r; + var_s0->v.cn[1] = var_s5->unk_00A.g; + var_s0->v.cn[2] = var_s5->unk_00A.b; + var_s0->v.cn[3] = temp_s0->unk_00; + var_s0++; + + func_8436B538(temp_s0->unk_08 + 3.1415927f, &sp184, temp_s0->unk_04 * tmp); + + var_s3 = temp_s0->unk_0C.y + sp184.y; + if (var_s3 < 0) { + var_s3 = 0; + } + + var_s0->v.ob[0] = temp_s0->unk_0C.x + sp184.x; + var_s0->v.ob[1] = var_s3; + var_s0->v.ob[2] = temp_s0->unk_0C.z + sp184.z; + var_s0->v.cn[0] = var_s5->unk_00A.r; + var_s0->v.cn[1] = var_s5->unk_00A.g; + var_s0->v.cn[2] = var_s5->unk_00A.b; + var_s0->v.cn[3] = temp_s0->unk_00; + var_s0++; + + temp_s0++; + } + + var_s0 = var_s5->unk_020; + + gSPDisplayList(arg0++, D_84389B60); + + for (k = 0; k < 9; k++) { + gSPVertex(arg0++, var_s0, 4, 0); + gSP2Triangles(arg0++, 0, 2, 1, 0, 2, 3, 1, 0); + var_s0 += 2; + } + } + } + + return arg0; +} diff --git a/src/fragments/62/fragment62_356730.c b/src/fragments/62/fragment62_356730.c index 03ddbd0..7ed57e9 100644 --- a/src/fragments/62/fragment62_356730.c +++ b/src/fragments/62/fragment62_356730.c @@ -1,17 +1,401 @@ -#include "global.h" +#include "fragment62.h" +#include "src/32D10.h" +#include "src/6A40.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_356730/func_8436BE70.s") +static unk_D_843C2C00 D_843C2C00[4]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_356730/func_8436BFB8.s") +static Gfx D_84389C70[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_2CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTexturePersp(G_TP_PERSP), + gsDPSetTextureDetail(G_TD_CLAMP), + gsDPSetTextureLOD(G_TL_TILE), + gsDPSetTextureLUT(G_TT_NONE), + gsDPSetTextureConvert(G_TC_FILT), + gsDPSetTextureFilter(G_TF_BILERP), + gsSPEndDisplayList(), +}; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_356730/func_8436C344.s") +void func_8436BE70(void) { + s32 i; + s32 j; + unk_D_843C2C00* var_v0 = &D_843C2C00[0]; + unk_D_843C2C00_0B0* var_a0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_356730/func_8436C3CC.s") + for (i = 0; i < 4; i++, var_v0++) { + var_v0->unk_000 = 0; + var_v0->unk_002 = 0; + var_v0->unk_004 = 0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_356730/func_8436C62C.s") + var_a0 = &var_v0->unk_0B0[0]; + for (j = 0; j < 10; j++, var_a0++) { + var_a0->unk_00 = 0; + var_a0->unk_04 = 0; + var_a0->unk_08 = 1.0f; + var_a0->unk_0C = 0.0f; + var_a0->unk_10.x = 0.0f; + var_a0->unk_10.y = 0.0f; + var_a0->unk_10.z = 0.0f; + var_a0->unk_1C = 0.0f; + var_a0->unk_20 = 0.0f; + var_a0->unk_24 = 0.0f; + } + } +} +void func_8436BFB8(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, f32 arg7, f32 arg8, f32 arg9, + f32 argA, s16 argB, s32 argC, s32 argD, s16 argE, s16 argF, s16 arg10, s16 arg11, s16 arg12, + s16 arg13, s16 arg14, s16 arg15, unk_D_843C2C00_024* arg16, unk_D_843C2C00_024* arg17, u8 arg18, + u8 arg19, u8 arg1A, u8 arg1B, u8 arg1C, u8 arg1D, u8 arg1E, u8 arg1F, u8 arg20, u8 arg21, u8 arg22, + u8 arg23, u8 arg24) { + unk_D_843C2C00* var_v0; + unk_D_843C2C00_0B0* var_a0; + s32 i; + s32 j; + Vec3f sp3C; + Vec3f sp30; + + sp3C.x = arg0; + sp3C.y = arg1; + sp3C.z = arg2; + + sp30.x = arg3; + sp30.y = arg4; + sp30.z = arg5; + + var_v0 = &D_843C2C00[0]; + for (i = 0; i < 4; i++, var_v0++) { + if (var_v0->unk_000 == 0) { + var_v0->unk_000 = 1; + var_v0->unk_002 = 0; + var_v0->unk_004 = argB; + var_v0->unk_008 = argA; + var_v0->unk_010 = arg7; + var_v0->unk_014 = arg8; + var_v0->unk_00C = arg6; + var_v0->unk_01C = argC; + var_v0->unk_020 = argD; + + var_v0->unk_064.unk_00 = 0; + var_v0->unk_064.unk_02 = 0; + var_v0->unk_070.unk_00 = 0; + var_v0->unk_070.unk_02 = 0; + + var_v0->unk_064.unk_04 = argE; + var_v0->unk_064.unk_06 = argF; + var_v0->unk_070.unk_04 = arg12; + var_v0->unk_070.unk_06 = arg13; + + var_v0->unk_064.unk_08 = arg10; + var_v0->unk_064.unk_0A = arg11; + var_v0->unk_070.unk_08 = arg14; + var_v0->unk_070.unk_0A = arg15; + + var_v0->unk_024 = *arg16; + var_v0->unk_044 = *arg17; + + var_v0->unk_07C.unk_00.r = arg18; + var_v0->unk_07C.unk_00.g = arg19; + var_v0->unk_07C.unk_00.b = arg1A; + var_v0->unk_07C.unk_00.a = arg1B; + + var_v0->unk_07C.unk_04 = arg1C; + + var_v0->unk_081.unk_00.r = arg1D; + var_v0->unk_081.unk_00.g = arg1E; + var_v0->unk_081.unk_00.b = arg1F; + var_v0->unk_081.unk_00.a = arg20; + + var_v0->unk_086.r = arg21; + var_v0->unk_086.g = arg22; + var_v0->unk_086.b = arg23; + var_v0->unk_086.a = arg24; + + var_v0->unk_08C = 1.0f; + var_v0->unk_090 = 1.0f; + var_v0->unk_094 = 0x41; + + var_a0 = &var_v0->unk_0B0[0]; + for (j = 0; j < 10; j++, var_a0++) { + var_a0->unk_00 = j; + var_a0->unk_04 = 0xFF; + var_a0->unk_08 = arg9; + var_a0->unk_0C = 0.0f; + var_a0->unk_10 = sp3C; + var_a0->unk_1C = sp30.x * arg8; + var_a0->unk_20 = sp30.y * arg8; + var_a0->unk_24 = sp30.z * arg8; + } + break; + } + } +} + +void func_8436C344(f32 arg0, Vec3f* arg1, f32 arg2) { + UNUSED MtxF sp70; + MtxF sp30; + UNUSED s32 pad; + + guRotateF(sp30.mf, (360.0f * arg0) / 6.2831855f, 1.0f, 0.0f, 0.0f); + guMtxXFMF(sp30.mf, 0.0f, 0.0f, arg2, &arg1->x, &arg1->y, &arg1->z); +} + +void func_8436C3CC(unk_D_843C2C00* arg0) { + unk_D_843C2C00_0B0* var_v0; + UNUSED s32 pad; + s32 i; + Vec3f sp58; + Vec3f sp4C; + f32 temp_fa0; + f32 temp_fa1; + f32 var_fv0; + f32 var_fv1; + + func_8432FBBC(&sp58); + func_8432FC14(&sp4C); + if (sp4C.y > 200.0f) { + sp4C.y = 200.0f; + } + + var_v0 = &arg0->unk_0B0[0]; + for (i = 0; i < 10; i++, var_v0++) { + if (arg0->unk_002 < arg0->unk_004) { + temp_fa1 = ((f32)arg0->unk_002 * i) / 9.0f; + var_fv0 = arg0->unk_004 - 1; + var_fv1 = temp_fa1 / var_fv0; + temp_fa0 = 1.0f - var_fv1; + } else { + temp_fa1 = i; + + var_fv1 = temp_fa1 / 9.0f; + temp_fa0 = 1.0f - var_fv1; + } + + var_v0->unk_10.x = (sp58.x * temp_fa0) + (sp4C.x * var_fv1); + var_v0->unk_10.y = (sp58.y * temp_fa0) + (sp4C.y * var_fv1); + var_v0->unk_10.z = (sp58.z * temp_fa0) + (sp4C.z * var_fv1); + + var_v0->unk_0C += arg0->unk_00C; + + if (i == 0) { + var_v0->unk_08 = 1.0f; + } else if (i == 9) { + if (arg0->unk_002 < 5) { + var_v0->unk_08 = 1.0f; + } else { + var_v0->unk_08 += 0.5f; + if (arg0->unk_008 * 1.0f < var_v0->unk_08) { + var_v0->unk_08 = arg0->unk_008 * 1.0f; + } + } + } else if (i == 1) { + var_v0->unk_08 += arg0->unk_010; + if (arg0->unk_008 * 0.5f < var_v0->unk_08) { + var_v0->unk_08 = arg0->unk_008 * 0.5f; + } + } else if (i == 2) { + var_v0->unk_08 += arg0->unk_010; + if (arg0->unk_008 * 0.75f < var_v0->unk_08) { + var_v0->unk_08 = arg0->unk_008 * 0.75f; + } + } else { + var_v0->unk_08 += arg0->unk_010; + if (arg0->unk_008 * 1.0f < var_v0->unk_08) { + var_v0->unk_08 = arg0->unk_008 * 1.0f; + } + } + } +} + +s32 func_8436C62C(void) { + s32 i; + unk_D_843C2C00* var_s0 = &D_843C2C00[0]; + + for (i = 0; i < 4; i++, var_s0++) { + if (var_s0->unk_000 == 1) { + var_s0->unk_002 += 1; + func_8436C3CC(var_s0); + } + } + + return 0; +} + +#define TRIANGLES(gfx) \ + { \ + s32 j, k; \ + for (j = 0; j < 2; j++) \ + for (k = 0; k < 4; k++) \ + gSP2Triangles(gfx++, (j * 4) + k, (j * 4) + (k + 9), (j * 4) + (k + 1), 0, (j * 4) + (k + 9), \ + (j * 4) + (k + 10), (j * 4) + (k + 1), 0); \ + } + +#ifdef NON_MATCHING +Gfx* func_8436C6A4(Gfx* arg0, unk_D_843C2C00* arg1, s16 arg2, s16 arg3) { + s32 i; + s32 j; + Vtx* sp44; + s32 k; + unk_D_84389CE0* temp_v0; + unk_D_84389CE0* temp_v1; + u8 a1; + u8 a2; + s16 tmp; + + temp_v1 = &arg1->unk_07C; + temp_v0 = &arg1->unk_081; + + if (func_8432E8B0() == 1) { + if (arg1->unk_094 >= arg1->unk_002) { + arg1->unk_002 = arg1->unk_094 + 1; + } + } + + if (arg3 == 0) { + if (arg1->unk_094 < arg1->unk_002) { + tmp = arg1->unk_002 - arg1->unk_094; + + arg1->unk_08C = 1.0f - tmp * 0.1f; + arg1->unk_090 = 1.0f - tmp * 0.1f; + + if (tmp * 0.1f > 1.0f) { + arg1->unk_08C = 0.0f; + } + + if (arg1->unk_090 < 0.0f) { + arg1->unk_090 = 0.0f; + } + } + } + + a1 = temp_v1->unk_00.a * arg1->unk_08C; + a2 = temp_v0->unk_00.a * arg1->unk_090; + + gDPSetPrimColor(arg0++, 0, temp_v1->unk_04, temp_v1->unk_00.r, temp_v1->unk_00.g, temp_v1->unk_00.b, a1); + gDPSetEnvColor(arg0++, temp_v0->unk_00.r, temp_v0->unk_00.g, temp_v0->unk_00.b, a2); + + sp44 = arg1->unk_018; + for (i = 0; i < 9; i++) { + gSPVertex(arg0++, sp44, 18, 0); + TRIANGLES(arg0); + sp44 += 9; + } + + return arg0; +} +#else #pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_356730/func_8436C6A4.s") +#endif -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_356730/func_8436CB60.s") +Gfx* func_8436CB60(Gfx* arg0, unk_D_843C2C00* arg1) { + unk_D_843C2C00_064* ptr; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_356730/func_8436CE34.s") + ptr = &arg1->unk_064; + gDPLoadTextureTile_4b(arg0++, D_843920C0[arg1->unk_01C], G_IM_FMT_I, 32, 0, 0, 0, 31, 31, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, ptr->unk_08, ptr->unk_0A); + gDPSetTileSize(arg0++, G_TX_RENDERTILE, ptr->unk_00, ptr->unk_02, (ptr->unk_00 + 31) << 2, (ptr->unk_02 + 31) << 2); + + ptr = &arg1->unk_070; + gDPLoadMultiTile_4b(arg0++, D_843920C0[arg1->unk_020], 0x0100, 1, G_IM_FMT_I, 32, 0, 0, 0, 31, 31, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, ptr->unk_08, ptr->unk_0A); + gDPSetTileSize(arg0++, 1, ptr->unk_00, ptr->unk_02, (ptr->unk_00 + 31) << 2, (ptr->unk_02 + 31) << 2); + + return arg0; +} + +Gfx* func_8436CE34(Gfx* arg0) { + s32 i; + s32 j; + s32 k; + unk_D_843C2C00* var_fp; + unk_D_843C2C00_0B0* var_s2; + Vec3f sp100; + Vec3f spF4; + Vec3f spE8; + Vec3f spDC; + unk_D_86002F34_00C* spD8; + UNUSED s32 pad[3]; + Vtx* var_s0; + + spD8 = func_8432FD64(); + var_fp = &D_843C2C00[0]; + + for (i = 0; i < 4; i++, var_fp++) { + if (var_fp->unk_000 == 1) { + if (func_800325AC() == 0) { + var_fp->unk_064.unk_00 += var_fp->unk_064.unk_04; + var_fp->unk_064.unk_02 += var_fp->unk_064.unk_06; + var_fp->unk_070.unk_00 += var_fp->unk_070.unk_04; + var_fp->unk_070.unk_02 += var_fp->unk_070.unk_06; + } + + var_s2 = &var_fp->unk_0B0[0]; + + var_fp->unk_018 = func_80005F5C(sizeof(Vtx) * 90); + + var_s0 = var_fp->unk_018; + for (j = 0; j < 10; j++, var_s2++) { + for (k = 0; k < 9; k++) { + func_8436C344(var_s2->unk_0C + ((2.0f * (k % 8) * 3.1415927f) / 8), &sp100, var_s2->unk_08); + var_s0->v.ob[0] = var_s2->unk_10.x + sp100.x; + var_s0->v.ob[1] = var_s2->unk_10.y + sp100.y; + var_s0->v.ob[2] = var_s2->unk_10.z + sp100.z; + + var_s0->v.tc[0] = (k * 0x400) / 8; + var_s0->v.tc[1] = (j * 0x400) / 10; + + var_s0->v.cn[0] = 0; + var_s0->v.cn[1] = 0; + var_s0->v.cn[2] = 0; + var_s0->v.cn[3] = 0; + + var_s0++; + } + } + + if ((var_fp->unk_086.r | var_fp->unk_086.g | var_fp->unk_086.b | var_fp->unk_086.a) != 0) { + spE8 = var_fp->unk_0B0[9].unk_10; + spF4 = var_fp->unk_0B0[0].unk_10; + spDC.x = spD8->unk_60.eye.x; + spDC.y = spD8->unk_60.eye.y; + spDC.z = spD8->unk_60.eye.z; + arg0 = func_84367660(arg0, &spF4, &spE8, &spDC, 20.0f, var_fp->unk_086.r, var_fp->unk_086.g, + var_fp->unk_086.b, var_fp->unk_086.a * var_fp->unk_08C); + } + + gSPDisplayList(arg0++, D_84389C70); + + func_800327CC( + arg0++, var_fp->unk_024.unk_00, var_fp->unk_024.unk_04, var_fp->unk_024.unk_08, var_fp->unk_024.unk_0C, + var_fp->unk_024.unk_10, var_fp->unk_024.unk_14, var_fp->unk_024.unk_18, var_fp->unk_024.unk_1C, + var_fp->unk_044.unk_00, var_fp->unk_044.unk_04, var_fp->unk_044.unk_08, var_fp->unk_044.unk_0C, + var_fp->unk_044.unk_10, var_fp->unk_044.unk_14, var_fp->unk_044.unk_18, var_fp->unk_044.unk_1C); + + arg0 = func_8436CB60(arg0, var_fp); + + gDPSetPrimColor(arg0++, 0, var_fp->unk_07C.unk_04, var_fp->unk_07C.unk_00.r, var_fp->unk_07C.unk_00.g, + var_fp->unk_07C.unk_00.b, var_fp->unk_07C.unk_00.a); + gDPSetEnvColor(arg0++, var_fp->unk_081.unk_00.r, var_fp->unk_081.unk_00.g, var_fp->unk_081.unk_00.b, + var_fp->unk_081.unk_00.a); + gSPClearGeometryMode(arg0++, G_CULL_BOTH); + gSPSetGeometryMode(arg0++, G_CULL_FRONT); + gDPPipeSync(arg0++); + + arg0 = func_8436C6A4(arg0, var_fp, i, 0); + + gSPClearGeometryMode(arg0++, G_CULL_BOTH); + gSPSetGeometryMode(arg0++, G_CULL_BACK); + gDPPipeSync(arg0++); + + arg0 = func_8436C6A4(arg0, var_fp, i, 1); + } + } + + return arg0; +} diff --git a/src/fragments/62/fragment62_357C30.c b/src/fragments/62/fragment62_357C30.c index 8877015..545853b 100644 --- a/src/fragments/62/fragment62_357C30.c +++ b/src/fragments/62/fragment62_357C30.c @@ -1,35 +1,375 @@ -#include "global.h" +#include "fragment62.h" +#include "6A40.h" +#include "12D80.h" +#include "30640.h" +#include "32D10.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436D370.s") +static s16 D_843C3500; +static unk_D_843C3508 D_843C3508[6]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436D4A4.s") +void func_8436D370(void) { + s32 i; + s32 j; + unk_D_843C3508* var_v0; + unk_D_843C3508_0A4* var_a0; + unk_D_84389CE0 sp0 = { + { 0, 0, 0, 0 }, + 0, + }; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436D920.s") + D_843C3500 = 0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436DA38.s") + var_v0 = &D_843C3508[0]; + for (i = 0; i < 6; i++, var_v0++) { + var_v0->unk_000 = 0; + var_v0->unk_004 = 0; + var_v0->unk_006 = 0; + var_v0->unk_008 = sp0; + var_v0->unk_00D = sp0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436DAC4.s") + var_a0 = &var_v0->unk_0A4[0]; + for (j = 0; j < 20; j++, var_a0++) { + var_a0->unk_00 = 0.0f; + var_a0->unk_04 = 1.0f; + var_a0->unk_08 = 0.0f; + var_a0->unk_0C.x = 0.0f; + var_a0->unk_0C.y = 0.0f; + var_a0->unk_0C.z = 0.0f; + var_a0->unk_18.x = 0.0f; + var_a0->unk_18.y = 0.0f; + var_a0->unk_18.z = 0.0f; + } + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436DE60.s") +void func_8436D4A4(s16 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, u8 arg7, u8 arg8, u8 arg9, + u8 argA, u8 argB, u8 argC, u8 argD, u8 argE, u8 argF, f32 arg10, f32 arg11, f32 arg12, s16 arg13, + s32 arg14, s32 arg15, s16 arg16, s16 arg17, s16 arg18, s16 arg19, s16 arg1A, s16 arg1B, s16 arg1C, + s16 arg1D, unk_D_843C2C00_024* arg1E, unk_D_843C2C00_024* arg1F) { + unk_D_843C3508* var_v0; + unk_D_843C3508_0A4* var_v1_2; + s32 i; + s32 j; + Vec3f spC; + Vec3f sp0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436DFB8.s") + var_v0 = &D_843C3508[0]; + spC.x = arg1; + spC.y = arg2; + spC.z = arg3; + sp0.x = arg4; + sp0.y = arg5; + sp0.z = arg6; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436E0E8.s") + for (i = 0; i < 6; i++, var_v0++) { + if (var_v0->unk_000 == 0) { + var_v0->unk_000 = 1; + var_v0->unk_002 = arg0; + var_v0->unk_004 = 0; + var_v0->unk_006 = arg13; + var_v0->unk_080 = arg12; + var_v0->unk_084 = arg10; + var_v0->unk_020 = arg14; + var_v0->unk_024 = arg15; + var_v0->unk_068.unk_00 = 0; + var_v0->unk_068.unk_02 = 0; + var_v0->unk_074.unk_00 = 0; + var_v0->unk_074.unk_02 = 0; + var_v0->unk_068.unk_04 = arg16; + var_v0->unk_068.unk_06 = arg17; + var_v0->unk_074.unk_04 = arg1A; + var_v0->unk_074.unk_06 = arg1B; + var_v0->unk_068.unk_08 = arg18; + var_v0->unk_068.unk_0A = arg19; + var_v0->unk_074.unk_08 = arg1C; + var_v0->unk_074.unk_0A = arg1D; + var_v0->unk_028 = *arg1E; + var_v0->unk_048 = *arg1F; + var_v0->unk_01C = 0x46; + var_v0->unk_014 = 1.0f; + var_v0->unk_018 = 1.0f; + var_v0->unk_008.unk_00.r = arg7; + var_v0->unk_008.unk_00.g = arg8; + var_v0->unk_008.unk_00.b = arg9; + var_v0->unk_008.unk_00.a = argA; + var_v0->unk_008.unk_04 = argB; + var_v0->unk_00D.unk_00.r = argC; + var_v0->unk_00D.unk_00.g = argD; + var_v0->unk_00D.unk_00.b = argE; + var_v0->unk_00D.unk_00.a = argF; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436E3BC.s") + var_v1_2 = &var_v0->unk_0A4[0]; + for (j = 0; j < 20; j++, var_v1_2++) { + var_v1_2->unk_00 = 2.0f * j; + var_v1_2->unk_04 = arg11; + var_v1_2->unk_08 = 0.0f; + var_v1_2->unk_0C = spC; + var_v1_2->unk_18 = sp0; + } + break; + } + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436E920.s") +void func_8436D920(s32 arg0, Vec3f* arg1, Vec3f* arg2, Vec3f* arg3, f32 arg4, UNUSED f32 arg5, UNUSED f32 arg6, + UNUSED f32 arg7) { + UNUSED s32 pad[36]; + unk_D_86002F34_00C* temp_v0 = func_8432FD64(); + f32 sp6C; + f32 sp68; + f32 sp64; + f32 sp54; + f32 sp50; + f32 sp4C; + f32 sp60; + f32 sp5C; + f32 sp58; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436E944.s") + sp60 = arg2->x - temp_v0->unk_60.eye.x; + sp5C = arg2->y - temp_v0->unk_60.eye.y; + sp58 = arg2->z - temp_v0->unk_60.eye.z; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436EA0C.s") + sp6C = arg1->x; + sp68 = arg1->y; + sp64 = arg1->z; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436EB54.s") + func_80031A94(sp6C, sp68, sp64, sp60, sp5C, sp58, &sp54, &sp50, &sp4C); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436ECB0.s") + func_80031B04(&sp54, &sp50, &sp4C); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436EDE8.s") + switch (arg0) { + case 0: + arg3->x = arg4 * sp54; + arg3->y = arg4 * sp50; + arg3->z = arg4 * sp4C; + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436EED4.s") + case 1: + arg3->x = -arg4 * sp54; + arg3->y = -arg4 * sp50; + arg3->z = -arg4 * sp4C; + break; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436EEE4.s") +void func_8436DA38(f32 arg0, Vec3f* arg1, Vec3f* arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6) { + UNUSED Mtx sp70; + Mtx sp30; + UNUSED s32 pad; + + guRotateF(&sp30, (360.0f * arg0) / 6.2831855f, 1.0f, 0.0f, 0.0f); + guMtxXFMF(&sp30, 0.0f, 0.0f, arg3, &arg2->x, &arg2->y, &arg2->z); +} + +void func_8436DAC4(unk_D_843C3508* arg0) { + unk_D_843C3508_0A4* var_s0; + s32 spA8; + s32 i; + Vec3f sp98; + UNUSED s32 pad; + f32 temp_fs1; + f32 temp_fs1_2; + f32 temp_fs2; + s32 temp_s1; + s32 temp_s2; + s32 temp_s3; + s32 temp_s4; + + var_s0 = &arg0->unk_0A4[0]; + for (i = 0; i < 20; i++, var_s0++) { + if (var_s0->unk_00 > 0.0) { + temp_s3 = RAND(20) + 2; + temp_s2 = RAND(10) + 4; + temp_s4 = RAND(20) + 2; + temp_s1 = RAND(10) + 4; + + temp_fs1 = __sinf((((spA8 + temp_s3) % temp_s2) * 6.2831854820251465) / temp_s2); + temp_fs2 = + __sinf((((spA8 + temp_s4) % (temp_s1 + 20)) * 6.2831854820251465) / (temp_s1 + 20)) * (10.0 * temp_fs1); + temp_fs1_2 = __sinf((((spA8 + temp_s4) % temp_s1) * 6.2831854820251465) / temp_s1) * 10.0; + func_8432FBBC(&sp98); + var_s0->unk_0C.x = sp98.x; + var_s0->unk_0C.y = sp98.y + temp_fs2; + var_s0->unk_0C.z = sp98.z + temp_fs1_2; + var_s0->unk_00 -= 1.0; + } else { + var_s0->unk_0C.x += var_s0->unk_18.x; + var_s0->unk_0C.y += var_s0->unk_18.y; + var_s0->unk_0C.z += var_s0->unk_18.z; + var_s0->unk_08 += arg0->unk_084; + var_s0->unk_04 += 3.0f; + if (arg0->unk_080 < var_s0->unk_04) { + var_s0->unk_04 = arg0->unk_080; + } + } + } +} + +s32 func_8436DE60(void) { + f32 temp_fv0; + s32 i; + s32 var_s2; + unk_D_843C3508* var_s0; + + D_843C3500++; + var_s2 = 0; + var_s0 = &D_843C3508[0]; + + for (i = 0; i < 6; i++, var_s0++) { + if (var_s0->unk_000 == 1) { + var_s0->unk_004++; + if (var_s0->unk_006 < var_s0->unk_004) { + var_s0->unk_000 = 0; + } else { + func_8436DAC4(var_s0); + var_s2++; + } + + if (var_s0->unk_01C < D_843C3500) { + s16 tmp = D_843C3500 - var_s0->unk_01C; + + temp_fv0 = tmp * 0.02f; + var_s0->unk_014 = 1.0f - temp_fv0; + var_s0->unk_018 = 1.0f - temp_fv0; + + if (temp_fv0 > 1.0f) { + var_s0->unk_014 = 0.0f; + } + + if (var_s0->unk_018 < 0.0f) { + var_s0->unk_018 = 0.0f; + } + } + } + } + + if (var_s2 > 0) { + return 0; + } + return -1; +} + +Gfx* func_8436DFB8(Gfx* arg0, unk_D_843C3508* arg1) { + s32 i; + Vtx* temp_v0 = arg1->unk_088; + + for (i = 0; i < 19; i++) { + gSPVertex(arg0++, temp_v0, 4, 0); + gSP2Triangles(arg0++, 0, 2, 1, 0, 1, 2, 3, 0); + temp_v0 += 2; + } + + return arg0; +} + +Gfx* func_8436E0E8(Gfx* arg0, unk_D_843C3508* arg1) { + unk_D_843C2C00_064* ptr; + UNUSED s32 pad[2]; + + ptr = &arg1->unk_068; + gDPLoadTextureTile_4b(arg0++, D_843920C0[arg1->unk_020], G_IM_FMT_I, 32, 0, 0, 0, 31, 31, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, ptr->unk_08, ptr->unk_0A); + gDPSetTileSize(arg0++, G_TX_RENDERTILE, ptr->unk_00, ptr->unk_02, (ptr->unk_00 + 31) << 2, (ptr->unk_02 + 31) << 2); + + ptr = &arg1->unk_074; + gDPLoadMultiTile_4b(arg0++, D_843920C0[arg1->unk_024], 0x0100, 1, G_IM_FMT_I, 32, 0, 0, 0, 31, 31, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, ptr->unk_08, ptr->unk_0A); + gDPSetTileSize(arg0++, 1, ptr->unk_00, ptr->unk_02, (ptr->unk_00 + 31) << 2, (ptr->unk_02 + 31) << 2); + + return arg0; +} + +Gfx* func_8436E3BC(Gfx* arg0) { + static Gfx D_84389CE8[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_2CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTexturePersp(G_TP_PERSP), + gsDPSetTextureDetail(G_TD_CLAMP), + gsDPSetTextureLOD(G_TL_TILE), + gsDPSetTextureLUT(G_TT_NONE), + gsDPSetTextureConvert(G_TC_FILT), + gsDPSetTextureFilter(G_TF_BILERP), + gsSPEndDisplayList(), + }; + + s32 i; + unk_D_843C3508* var_s6; + unk_D_843C3508_0A4* var_s0; + s32 j; + s32 k; + Vec3f spF0; + Vtx* var_s1; + s32 pad[12]; + + func_8432FD64(); + + var_s6 = &D_843C3508[0]; + for (i = 0; i < 6; i++, var_s6++) { + if (var_s6->unk_000 == 1) { + var_s0 = &var_s6->unk_0A4[0]; + + var_s6->unk_088 = func_80005F5C(sizeof(Vtx) * 40); + var_s1 = var_s6->unk_088; + + for (j = 0; j < 20; j++, var_s0++) { + for (k = 0; k < 2; k++) { + switch (var_s6->unk_002) { + case 0: + if (var_s0->unk_00 <= 0.0) { + func_8436DA38(var_s0->unk_08 + ((k % 2) * 3.1415927f), &var_s0->unk_18, &spF0, + var_s0->unk_04, 1.0f, 0.0f, 0.0f); + } + break; + + case 1: + if (var_s0->unk_00 <= 0.0) { + func_8436D920(k % 2, &var_s0->unk_18, &var_s0->unk_0C, &spF0, var_s0->unk_04, 1.0f, + 0.0f, 0.0f); + } + break; + } + + var_s1->v.ob[0] = var_s0->unk_0C.x + spF0.x; + var_s1->v.ob[1] = var_s0->unk_0C.y + spF0.y; + var_s1->v.ob[2] = var_s0->unk_0C.z + spF0.z; + + var_s1->v.tc[0] = (k % 2) << 0xA; + var_s1->v.tc[1] = (j * 0x400) / 20; + + var_s1->v.cn[0] = 0xFF; + var_s1->v.cn[1] = 0xFF; + var_s1->v.cn[2] = 0xFF; + var_s1->v.cn[3] = 0x40; + var_s1++; + } + } + + gSPDisplayList(arg0++, D_84389CE8); + + func_800327CC( + arg0++, var_s6->unk_028.unk_00, var_s6->unk_028.unk_04, var_s6->unk_028.unk_08, var_s6->unk_028.unk_0C, + var_s6->unk_028.unk_10, var_s6->unk_028.unk_14, var_s6->unk_028.unk_18, var_s6->unk_028.unk_1C, + var_s6->unk_048.unk_00, var_s6->unk_048.unk_04, var_s6->unk_048.unk_08, var_s6->unk_048.unk_0C, + var_s6->unk_048.unk_10, var_s6->unk_048.unk_14, var_s6->unk_048.unk_18, var_s6->unk_048.unk_1C); + + gDPSetPrimColor(arg0++, 0, var_s6->unk_008.unk_04, var_s6->unk_008.unk_00.r, var_s6->unk_008.unk_00.g, + var_s6->unk_008.unk_00.b, (u8)(var_s6->unk_008.unk_00.a * var_s6->unk_014)); + gDPSetEnvColor(arg0++, var_s6->unk_00D.unk_00.r, var_s6->unk_00D.unk_00.g, var_s6->unk_00D.unk_00.b, + (u8)(var_s6->unk_00D.unk_00.a * var_s6->unk_018)); + + arg0 = func_8436E0E8(arg0, var_s6); + + gDPPipeSync(arg0++); + + arg0 = func_8436DFB8(arg0, var_s6); + } + } + + return arg0; +} diff --git a/src/fragments/62/fragment62_3591E0.c b/src/fragments/62/fragment62_3591E0.c new file mode 100644 index 0000000..d282e67 --- /dev/null +++ b/src/fragments/62/fragment62_3591E0.c @@ -0,0 +1,253 @@ +#include "fragment62.h" +#include "6A40.h" +#include "12D80.h" +#include "30640.h" +#include "32D10.h" + +static unk_D_843C49C0 D_843C49C0[2]; + +static Vtx D_84389D60[] = { + VTX(-10, -10, 0, 0, 0, 0x88, 0x00, 0x00, 0x80), + VTX(-10, 10, 0, 1984, 0, 0x88, 0x00, 0x00, 0x80), + VTX(10, -10, 0, 0, 1984, 0x88, 0x00, 0x00, 0x80), + VTX(10, 10, 0, 1984, 1984, 0x88, 0x00, 0x00, 0x80), +}; +static Gfx D_84389DA0[] = { + gsSPEndDisplayList(), +}; +static u32 D_84389DA8[] = { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000B0019, 0x000B0000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F0620, 0x000F0000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00130F28, 0x00130000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00191A32, 0x00190000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0620253C, + 0x06200000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0F28374C, 0x0F280000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00070007, 0x00030000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x1A324A5D, 0x1A320000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00030007, 0x00070007, 0x00070013, 0x0013000F, 0x00070000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x233A6273, 0x233A0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0007000F, + 0x00130013, 0x00070000, 0x00000007, 0x00130620, 0x011C0017, 0x000B0000, 0x00000000, 0x00000000, 0x00000000, + 0x2F458390, 0x2F450000, 0x00000000, 0x00000000, 0x00000000, 0x000B0017, 0x011C0620, 0x00170007, 0x00000000, + 0x00000000, 0x00070017, 0x0C261A32, 0x142D0620, 0x000F0000, 0x00000000, 0x0003000F, 0x3C51A9B2, 0x3C51000F, + 0x00030000, 0x00000000, 0x000F0620, 0x142D1A32, 0x0C260017, 0x00070000, 0x00000000, 0x00000000, 0x00000003, + 0x00170F28, 0x2D433248, 0x253C0C26, 0x0000000B, 0x011C142D, 0x4F62E2E5, 0x4F62142D, 0x011C000B, 0x00000F28, + 0x253C3248, 0x2D430F28, 0x00170003, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000F, 0x0C262F45, + 0x5E6F586A, 0x3C510822, 0x233A4357, 0x818EFFFF, 0x818E4357, 0x233A0822, 0x3C51586A, 0x60713248, 0x0F28000F, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030620, 0x2F456979, 0xA6AF8C98, + 0x6273B0B8, 0xFFFFFFFF, 0xFFFFB0B8, 0x62738E9A, 0xA8B16979, 0x2F450620, 0x00030000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00071D35, 0x6979E5E8, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFE8EA, 0x69791D35, 0x00070000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000017, 0x20386C7C, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF6C7C, + 0x20380017, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000017, 0x233A707F, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF707F, 0x233A0017, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000017, + 0x20386C7C, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF6C7C, 0x20380017, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00071D35, 0x6777E5E8, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE8EA, 0x69791D35, 0x00070000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00030620, 0x2F456979, 0xA6AF8E9A, 0x6273B0B8, 0xFFFFFFFF, 0xFFFFB0B8, + 0x62738E9A, 0xA8B16979, 0x2F450620, 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0000000F, 0x0C262F45, 0x5E6F586A, 0x3C510822, 0x233A4357, 0x818EFFFF, 0x818E4357, 0x233A0822, 0x3C51586A, + 0x5E6F3248, 0x0F28000F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000003, 0x00170F28, 0x2D433248, + 0x253C0F28, 0x0000000B, 0x011C142D, 0x4F62E0E3, 0x4F62142D, 0x011C000B, 0x00000C26, 0x253C3248, 0x2D430F28, + 0x00170003, 0x00000000, 0x00000000, 0x00000000, 0x00070017, 0x0C261A32, 0x142D0620, 0x000F0000, 0x00000000, + 0x0003000F, 0x3C51A8B1, 0x3C51000F, 0x00030000, 0x00000000, 0x000F0620, 0x142D1A32, 0x0C260017, 0x00070000, + 0x00000000, 0x00000007, 0x00130620, 0x011C0017, 0x000B0000, 0x00000000, 0x00000000, 0x00000000, 0x2F45818E, + 0x2F450000, 0x00000000, 0x00000000, 0x00000000, 0x000B0017, 0x011C0620, 0x00130007, 0x00000000, 0x00070013, + 0x0013000F, 0x00070000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x233A6273, 0x233A0000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x0007000F, 0x00130013, 0x00070000, 0x00070007, 0x00030000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x1730485B, 0x17300000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00030007, 0x00070007, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x0C26354A, 0x0C260000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0620253C, 0x06200000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00191A32, 0x00190000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130F28, 0x00130000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x000F0620, 0x000F0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x000B0019, 0x000B0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030013, + 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, +}; +static Gfx D_8438A5A8[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_LIGHTING | G_SHADING_SMOOTH), + gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON), + gsDPPipeSync(), + gsDPLoadTextureBlock(D_84389DA8, G_IM_FMT_IA, G_IM_SIZ_16b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, + TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0), + gsDPSetEnvColor(0, 64, 255, 0), + gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2), + gsSPVertex(D_84389D60, 4, 0), + gsSP2Triangles(0, 1, 2, 0, 2, 1, 3, 0), + gsSPEndDisplayList(), +}; + +Gfx D_8438A640[] = { + gsSPEndDisplayList(), +}; + +u32 D_8438A648[] = { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00001112, 0x22111000, 0x00000000, 0x00000000, + 0x00123344, 0x44433210, 0x00000000, 0x00000000, 0x12345566, 0x66655432, 0x10000000, 0x00000001, 0x34566777, + 0x88776654, 0x31000000, 0x00000013, 0x45678899, 0x99988765, 0x43100000, 0x00000134, 0x67899AAA, 0xAAAA9987, + 0x64310000, 0x00001346, 0x789ABBBC, 0xCCBBBA98, 0x76431000, 0x00002457, 0x89ABCCDD, 0xDDDCCBA9, 0x87542000, + 0x00013568, 0x9ABCDDEE, 0xEEEDDCBA, 0x98653100, 0x00024679, 0xABCDEFFF, 0xFFFFEDCB, 0xA9764200, 0x00035689, + 0xBCDEFFFF, 0xFFFFFEDC, 0xA9865300, 0x0013578A, 0xBCDFFFFF, 0xFFFFFFDC, 0xBA875310, 0x0014679A, 0xBDEFFFFF, + 0xFFFFFFED, 0xBA976410, 0x0024679A, 0xCDEFFFFF, 0xFFFFFFED, 0xCA986420, 0x0024689A, 0xCDEFFFFF, 0xFFFFFFED, + 0xCA986420, 0x0024689A, 0xCDEFFFFF, 0xFFFFFFED, 0xCA976420, 0x0014679A, 0xBDEFFFFF, 0xFFFFFFED, 0xBA976410, + 0x0013578A, 0xBCDFFFFF, 0xFFFFFFDC, 0xBA875310, 0x00035689, 0xBCDEFFFF, 0xFFFFFEDC, 0xB9865300, 0x00024679, + 0xABCDEFFF, 0xFFFFEDCB, 0xA9764200, 0x00013568, 0x9ABCDDEE, 0xEEEDDCBA, 0x98653100, 0x00002457, 0x89ABCCDD, + 0xDDDCCBA9, 0x87542000, 0x00001346, 0x789ABBBC, 0xCCBBBA98, 0x76431000, 0x00000134, 0x67899AAA, 0xAAAA9987, + 0x64310000, 0x00000013, 0x45678899, 0x99988765, 0x43100000, 0x00000001, 0x34566778, 0x87776654, 0x31000000, + 0x00000000, 0x12345566, 0x66655432, 0x10000000, 0x00000000, 0x00123344, 0x44433210, 0x00000000, 0x00000000, + 0x00001112, 0x22111000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, +}; + +void func_8436E920(void) { + s32 i; + + for (i = 0; i < 2; i++) { + D_843C49C0[i].unk_000 = 0; + } +} + +s16 func_8436E944(void) { + unk_D_843C49C0* var_a0; + unk_D_843C49C0_004* var_v1; + s32 i; + s32 j; + + for (i = 0, var_a0 = &D_843C49C0[0]; i < 2; i++, var_a0++) { + if (var_a0->unk_000 == 0) { + var_v1 = &var_a0->unk_004[0]; + for (j = 0; j < 20; j++, var_v1++) { + var_v1->unk_00 = 0; + var_v1->unk_04 = 0; + var_v1->unk_08 = 1.0f; + var_v1->unk_0C.x = 0.0f; + var_v1->unk_0C.y = 0.0f; + var_v1->unk_0C.z = 0.0f; + } + var_a0->unk_000 = 1; + return i; + } + } + return -1; +} + +void func_8436EA0C(s16 arg0, f32 arg1, f32 arg2, f32 arg3, s16 arg4, f32 arg5) { + s32 i; + unk_D_843C49C0* temp_v0 = &D_843C49C0[arg0]; + unk_D_843C49C0_004* var_v1; + + if (temp_v0->unk_000 != 0) { + var_v1 = &temp_v0->unk_004[0]; + for (i = 0; i < 20; i++, var_v1++) { + if (var_v1->unk_00 == 0) { + var_v1->unk_00 = 1; + var_v1->unk_04 = 0; + var_v1->unk_06 = arg4; + var_v1->unk_08 = arg5; + var_v1->unk_0C.x = arg1; + var_v1->unk_0C.y = arg2; + var_v1->unk_0C.z = arg3; + return; + } + } + } +} + +void func_8436EB54(s16 arg0) { + unk_D_843C49C0* temp_v0 = &D_843C49C0[arg0]; + unk_D_843C49C0_004* var_v1; + s32 i; + + if (temp_v0->unk_000 != 0) { + var_v1 = &temp_v0->unk_004[0]; + for (i = 0; i < 20; i++, var_v1++) { + if (var_v1->unk_00 == 1) { + var_v1->unk_04++; + if (var_v1->unk_06 < var_v1->unk_04) { + var_v1->unk_00 = 0; + } + var_v1->unk_0C.y -= 0.75f; + } + } + } +} + +Gfx* func_8436ECB0(Gfx* arg0, unk_D_843C49C0_004* arg1, MtxF* arg2) { + f32 spCC; + f32 spC8; + f32 spC4; + f32 spC0; + Mtx* spBC; + Mtx sp78; + Mtx sp38; + + spCC = arg1->unk_0C.x; + spC8 = arg1->unk_0C.y; + spC4 = arg1->unk_0C.z; + spC0 = arg1->unk_08; + spC0 *= __sinf((arg1->unk_04 * 3.1415927f) / 10.0f); + + guScale(&sp38, spC0, spC0, spC0); + guTranslate(&sp78, spCC, spC8, spC4); + spBC = func_80005F5C(sizeof(Mtx) * 1); + guMtxCatL(&sp38, &sp78, spBC); + guMtxCatL(arg2, spBC, spBC); + + gSPMatrix(arg0++, spBC, G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gDPSetPrimColor(arg0++, 0, 0, 255, 255, 255, 200); + gSPDisplayList(arg0++, D_8438A5A8); + gSPPopMatrix(arg0++, G_MTX_MODELVIEW); + + return arg0; +} + +Gfx* func_8436EDE8(s16 arg0, Gfx* arg1) { + UNUSED s32 pad; + unk_D_843C49C0* temp_s3 = &D_843C49C0[arg0]; + unk_D_843C49C0_004* var_s0; + s32 i; + MtxF sp78; + MtxF sp38; + + if (temp_s3->unk_000 == 0) { + return arg1; + } + + func_80031EF4(sp78.mf, &D_8006F088->unk_60.mtxf); + guMtxF2L(sp78.mf, sp38.mf); + + var_s0 = &temp_s3->unk_004; + for (i = 0; i < 20; i++, var_s0++) { + if (var_s0->unk_00 == 1) { + arg1 = func_8436ECB0(arg1, var_s0, &sp38); + } + } + + return arg1; +} + +void func_8436EED4(void) { +} + +void func_8436EEDC(void) { +} + +s32 func_8436EEE4(s32 arg0) { + return arg0; +} diff --git a/src/fragments/62/fragment62_3597B0.c b/src/fragments/62/fragment62_3597B0.c index 748dae8..a4ecbdc 100644 --- a/src/fragments/62/fragment62_3597B0.c +++ b/src/fragments/62/fragment62_3597B0.c @@ -1,11 +1,179 @@ -#include "global.h" +#include "fragment62.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3597B0/func_8436EEF0.s") +static s16 D_843C4D90; +static s16 D_843C4D92; +static s16 D_843C4D94; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3597B0/func_8436EF48.s") +static f32 D_8438A850 = 30.0f; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3597B0/func_8436EF54.s") +static Vtx D_8438A858[] = { + VTX(1, -35, -35, 0, 0, 0x88, 0x00, 0x00, 0xFF), VTX(1, -50, 0, 0, 0, 0x88, 0x00, 0x00, 0xFF), + VTX(1, 0, 0, 0, 0, 0x88, 0x00, 0x00, 0xFF), VTX(1, -50, 0, 0, 0, 0x1D, 0x8C, 0x00, 0xFF), + VTX(1, -35, -35, 0, 0, 0x1D, 0xAE, 0xAE, 0xFF), VTX(200, 0, 0, 0, 0, 0x78, 0x00, 0x00, 0xFF), + VTX(1, 0, -49, 0, 0, 0x88, 0x00, 0x00, 0xFF), VTX(1, 0, -49, 0, 0, 0x1D, 0x00, 0x8C, 0xFF), + VTX(1, 35, -35, 0, 0, 0x88, 0x00, 0x00, 0xFF), VTX(1, 35, -35, 0, 0, 0x1D, 0x52, 0xAE, 0xFF), + VTX(1, 50, 0, 0, 0, 0x88, 0x00, 0x00, 0xFF), VTX(1, 50, 0, 0, 0, 0x1D, 0x74, 0x00, 0xFF), + VTX(1, 35, 35, 0, 0, 0x88, 0x00, 0x00, 0xFF), VTX(1, 35, 35, 0, 0, 0x1D, 0x52, 0x52, 0xFF), + VTX(1, 0, 49, 0, 0, 0x88, 0x00, 0x00, 0xFF), VTX(1, 0, 49, 0, 0, 0x1D, 0x00, 0x74, 0xFF), + VTX(1, -35, 35, 0, 0, 0x88, 0x00, 0x00, 0xFF), VTX(1, -35, 35, 0, 0, 0x1D, 0xAE, 0x52, 0xFF), +}; +static u32 D_8438A978[] = { + 0x77777777, + 0x77777777, +}; +Gfx D_8438A980[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_LIGHTING | G_SHADING_SMOOTH), + gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON), + gsDPPipeSync(), + gsDPLoadTextureBlock_4b(D_8438A978, G_IM_FMT_I, 4, 4, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 2, 2, + G_TX_NOLOD, G_TX_NOLOD), + gsDPSetCombineMode(G_CC_BLENDIA, G_CC_BLENDIA), + gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2), + gsDPSetPrimColor(0xFF, 0xFF, 197, 184, 122, 255), + gsDPSetEnvColor(197, 184, 122, 255), + gsSPVertex(D_8438A858, 18, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(6, 0, 2, 0, 4, 7, 5, 0), + gsSP2Triangles(8, 6, 2, 0, 7, 9, 5, 0), + gsSP2Triangles(10, 8, 2, 0, 9, 11, 5, 0), + gsSP2Triangles(12, 10, 2, 0, 11, 13, 5, 0), + gsSP2Triangles(14, 12, 2, 0, 13, 15, 5, 0), + gsSP2Triangles(16, 14, 2, 0, 15, 17, 5, 0), + gsSP2Triangles(1, 16, 2, 0, 17, 3, 5, 0), + gsSPEndDisplayList(), +}; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3597B0/func_8436EFE8.s") +static s32 pad_D_8438AA58[] = { 0, 0 }; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3597B0/func_8436F664.s") +static Gfx D_8438AA60[] = { + gsSPEndDisplayList(), +}; +static u32 D_8438AA68[] = { + 0x9FFFFFFF, 0xFFFFFFFF, 0x09FFFFFF, 0xFFFFFFFF, 0x009FFFFF, 0xFFFFFFFF, 0x0009FFFF, 0xFFFFFFFF, 0x00009FFF, + 0xFFFFFFFF, 0x000009FF, 0xFFFFFFFF, 0x0000009F, 0xFFFFFFFF, 0x00000009, 0xFFFFFFFF, 0x00000000, 0x9FFFFFFF, + 0x00000000, 0x09FFFFFF, 0x00000000, 0x009FFFFF, 0x00000000, 0x000FFFFF, 0x00000000, 0x000FFFFF, 0x00000000, + 0x009FFFFF, 0x00000000, 0x09FFFFFF, 0x00000000, 0x9FFFFFFF, 0x00000009, 0xFFFFFFFF, 0x0000009F, 0xFFFFFFFF, + 0x000009FF, 0xFFFFFFFF, 0x00009FFF, 0xFFFFFFFF, 0x0009FFFF, 0xFFFFFFFF, 0x009FFFFF, 0xFFFFFFFF, 0x09FFFFFF, + 0xFFFFFFFF, 0x9FFFFFFF, 0xFFFFFFFF, 0x9FFFFFFF, 0xFFFFFFFF, 0x09FFFFFF, 0xFFFFFFFF, 0x009FFFFF, 0xFFFFFFFF, + 0x0009FFFF, 0xFFFFFFFF, 0x00009FFF, 0xFFFFFFFF, 0x000009FF, 0xFFFFFFFF, 0x0000009F, 0xFFFFFFFF, 0x00000009, + 0xFFFFFFFF, 0x00000000, 0x9FFFFFFF, 0x00000000, 0x09FFFFFF, 0x00000000, 0x009FFFFF, 0x00000000, 0x000FFFFF, + 0x00000000, 0x000FFFFF, 0x00000000, 0x009FFFFF, 0x00000000, 0x09FFFFFF, 0x00000000, 0x9FFFFFFF, 0x00000009, + 0xFFFFFFFF, 0x0000009F, 0xFFFFFFFF, 0x000009FF, 0xFFFFFFFF, 0x00009FFF, 0xFFFFFFFF, 0x0009FFFF, 0xFFFFFFFF, + 0x009FFFFF, 0xFFFFFFFF, 0x09FFFFFF, 0xFFFFFFFF, 0x9FFFFFFF, 0xFFFFFFFF, +}; +static Gfx D_8438ABE8[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_CULL_BACK | G_LIGHTING), + gsDPSetRenderMode(G_RM_XLU_SURF, G_RM_NOOP2), + gsDPSetCombineMode(G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM), + gsDPSetPrimColor(0, 0, 5, 5, 5, 255), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPSetTexturePersp(G_TP_NONE), + gsSPEndDisplayList(), +}; +static Gfx D_8438AC30[] = { + gsDPSetCycleType(G_CYC_2CYCLE), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), + gsDPSetTexturePersp(G_TP_PERSP), + gsSPSetGeometryMode(G_ZBUFFER | G_CULL_BACK | G_LIGHTING), + gsSPEndDisplayList(), +}; + +void func_8436EEF0(s32 arg0, s32 arg1) { + D_843C4D90 = arg0; + D_843C4D94 = arg1; + + if ((D_843C4D90 == 0) || ((D_843C4D90 != 1) && (D_843C4D90 != 2) && (D_843C4D90 == 3))) { + D_843C4D92 = 0x140; + } else { + D_843C4D92 = 0; + } +} + +s32 func_8436EF48(void) { + return D_843C4D90; +} + +void func_8436EF54(void) { + s16 var_v0 = D_843C4D92; + + switch (D_843C4D90) { + case 2: + if (var_v0 < 0x140) { + var_v0 += D_843C4D94; + } else { + D_843C4D90 = 0; + } + break; + + case 3: + if (var_v0 > 0) { + var_v0 -= D_843C4D94; + } else { + D_843C4D90 = 1; + } + if (var_v0 < 0) { + var_v0 = 0; + } + break; + } + D_843C4D92 = var_v0; +} + +Gfx* func_8436EFE8(Gfx* arg0, s32 arg1) { + s32 i; + s16 left; + s16 top; + s32 temp_a1; + s32 temp_v1; + + temp_a1 = arg1 & 1; + temp_v1 = (arg1 + 1) & 1; + + gSPDisplayList(arg0++, D_8438ABE8); + gDPLoadTextureBlock_4b(arg0++, D_8438AA68, G_IM_FMT_I, 12, 48, 0, G_TX_NOMIRROR | G_TX_CLAMP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gDPPipeSync(arg0++); + + for (i = temp_a1; i < 5; i += 2) { + left = D_843C4D92 * 2 - 320; + top = i * 48; + gSPScisTextureRectangle(arg0++, left << 2, top << 2, (left + 640) << 2, (top + 24) << 2, 0, 0, 0, 1 << 6, + 1 << 10); + + gSPScisTextureRectangle(arg0++, left << 2, (top + 24) << 2, (left + 640) << 2, (top + 48) << 2, 0, 0, 0, 1 << 6, + 1 << 10); + } + + for (i = temp_v1; i < 5; i += 2) { + left = -D_843C4D92 * 2; + top = i * 48; + gSPScisTextureRectangle(arg0++, left << 2, top << 2, (left + 640) << 2, (top + 24) << 2, 0, 0x500, 0, -(1 << 6), + 1 << 10); + + gSPScisTextureRectangle(arg0++, left << 2, (top + 24) << 2, (left + 640) << 2, (top + 48) << 2, 0, 0x500, 0, + -(1 << 6), 1 << 10); + } + + gSPDisplayList(arg0++, D_8438AC30); + + return arg0; +} + +void func_8436F664(void) { + Gfx* gfx = gDisplayListHead; + + if (D_843C4D90 != 0) { + if (D_843C4D90 == 2) { + gfx = func_8436EFE8(gfx, 0); + } else { + gfx = func_8436EFE8(gfx, 1); + } + } + gDisplayListHead = gfx; +} diff --git a/src/fragments/62/fragment62_359F80.c b/src/fragments/62/fragment62_359F80.c index 5e40caa..06de80d 100644 --- a/src/fragments/62/fragment62_359F80.c +++ b/src/fragments/62/fragment62_359F80.c @@ -1,3 +1,4 @@ -#include "global.h" +#include "fragment62.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F80/func_8436F6C0.s") +void func_8436F6C0(void) { +} diff --git a/src/fragments/62/fragment62_359F90.c b/src/fragments/62/fragment62_359F90.c index 1a1b06e..bb1b4b9 100644 --- a/src/fragments/62/fragment62_359F90.c +++ b/src/fragments/62/fragment62_359F90.c @@ -1,104 +1,1898 @@ -#include "global.h" +#include "fragment62.h" +#include "src/22630.h" +#include "src/2E110.h" +#include "src/F420.h" + +typedef struct unk_D_843C4DA0 { + /* 0x00 */ u16 unk_00; + /* 0x02 */ u8 unk_02; + /* 0x03 */ u8 unk_03; + /* 0x04 */ u8 unk_04; + /* 0x05 */ u8 unk_05; + /* 0x06 */ char unk06[0x3]; + /* 0x09 */ u8 unk_09; + /* 0x0A */ char unk0A[0xA]; + /* 0x13 */ u8 unk_13; + /* 0x14 */ char unk14[0x1]; + /* 0x15 */ u8 unk_15; + /* 0x16 */ char unk16[0x1]; + /* 0x17 */ u8 unk_17; + /* 0x18 */ char unk18[0xB]; + /* 0x22 */ u8 unk_22; + /* 0x24 */ u16 unk_24; + /* 0x26 */ u16 unk_26; + /* 0x28 */ u16 unk_28; + /* 0x2A */ u16 unk_2A; + /* 0x2C */ u16 unk_2C; + /* 0x2E */ char unk2E[0x1E]; +} unk_D_843C4DA0; // size = 0x4C + +static u16 D_843C4DA0; +static u8 D_843C4DA2; +static u8 D_843C4DA3; +u8 D_843C4DA4; +u8 D_843C4DA5; +static u8 D_843C4DA6; +static u8 D_843C4DA7; +static u8 D_843C4DA8; +u8 D_843C4DA9; +u8 D_843C4DAA; +static u8 D_843C4DAB; +static u8 D_843C4DAC; +static u8 D_843C4DAD; +static u8 D_843C4DAE; +static u8 D_843C4DAF; +static u8 D_843C4DB0; +static u8 D_843C4DB1; +static u8 D_843C4DB2; +static u8 D_843C4DB3; +static u8 D_843C4DB4; +static u8 D_843C4DB5; +static u8 D_843C4DB6; +static u8 D_843C4DB7; +static u8 D_843C4DB8; +static u8 D_843C4DB9; +static u8 D_843C4DBA; +static u8 D_843C4DBB; +static u8 D_843C4DBC; +static u8 D_843C4DBD; +static u8 D_843C4DBE; +static u8 D_843C4DBF; +static u8 D_843C4DC0; +static u8 D_843C4DC1; +static u8 D_843C4DC2; +u16 D_843C4DC4; +static u16 D_843C4DC6; +static u16 D_843C4DC8; +static u16 D_843C4DCA; +static u16 D_843C4DCC; +static s32 pad_D_843C4DD0; +static s32 pad_D_843C4DD4; +static s32 pad_D_843C4DD8; +static s32 pad_D_843C4DDC; +static s32 pad_D_843C4DE0; +static s32 pad_D_843C4DE4; +static s32 pad_D_843C4DE8; +s32 D_843C4DEC; +static s32 pad_D_843C4DF0[21]; +u8 D_843C4E44; +u8 D_843C4E45; +static s32 pad_D_843C4E48[252]; +unk_D_800FCB18* D_843C5238; +unk_D_800FCB18* D_843C523C; +static unk_D_800FCB18 D_843C5240[2]; + +u8 D_8438AC60[] = { + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x4A, 0x00, 0x00, + 0x60, 0x69, 0x75, 0x78, 0x85, 0x00, 0x00, 0x00, 0x61, 0x64, 0x66, 0x68, 0x8C, 0x00, 0x00, 0x00, + 0x01, 0x0A, 0x0B, 0x11, 0x13, 0x14, 0x15, 0x1E, 0x22, 0x23, 0x25, 0x27, 0x2B, 0x2C, 0x2D, 0x2E, + 0x2F, 0x40, 0x44, 0x46, 0x47, 0x51, 0x59, 0x5A, 0x5B, 0x5C, 0x67, 0x6A, 0x6B, 0x6E, 0x6F, 0x76, + 0x7A, 0x80, 0x84, 0x8B, 0x8D, 0x91, 0x94, 0x96, 0x97, 0x9A, 0x9C, 0x9F, 0xA3, 0xA4, 0x00, 0x00, +}; +static u8 D_8438ACB0[] = { 1, 0x20, 0x43, 0x54, 0x56 }; +unk_D_8438ACB8 D_8438ACB8[] = { + { 0x19, 0x64 }, { 0x1C, 0x64 }, { 0x21, 0x64 }, { 0x28, 0x64 }, { 0x32, 0x64 }, { 0x42, 0x64 }, { 0x01, 0x01 }, + { 0x0F, 0x0A }, { 0x02, 0x01 }, { 0x19, 0x0A }, { 0x03, 0x01 }, { 0x23, 0x0A }, { 0x04, 0x01 }, +}; +u8 D_8438ACD4[] = { + 0x01, 0x03, 0x24, 0x64, 0x2B, 0x64, 0x01, 0x02, 0x42, 0x64, 0x4B, 0x64, 0x01, + 0x01, 0x85, 0x64, 0xA6, 0x64, 0x02, 0x01, 0xE9, 0x64, 0x85, 0x32, 0x03, 0x01, +}; +u8 D_8438ACF0[] = { + 0x15, 0x14, 0x14, 0x14, 0x16, 0x14, 0x14, 0x19, 0x14, 0x16, 0x15, 0x14, 0x17, 0x15, 0x14, 0x15, 5, 0x14, + 4, 2, 0, 0x15, 0x15, 5, 0x14, 0x14, 5, 0x17, 0x17, 5, 0x19, 0x19, 5, 0x16, 0x16, 5, + 0x18, 0x18, 5, 0x14, 0x15, 5, 0x16, 0x14, 5, 0x15, 0x16, 5, 0x17, 0x16, 5, 0, 5, 5, + 0, 8, 0, 8, 8, 0x14, 0x14, 7, 0x14, 0x14, 5, 5, 0x15, 4, 0x14, 0x17, 4, 0, + 0x17, 2, 0x14, 0x16, 4, 0x14, 0x16, 7, 5, 0x16, 3, 5, 0x16, 5, 0x14, 0x16, 2, 5, + 0x19, 0x15, 5, 0x19, 0x16, 0x14, 0x19, 4, 0x14, 0x19, 2, 0x14, 1, 0, 0x14, 1, 3, 5, + 1, 2, 5, 1, 0x18, 5, 1, 7, 5, 1, 5, 0x14, 1, 0x19, 0x14, 1, 8, 0, + 3, 0x16, 0x14, 3, 3, 5, 3, 4, 5, 3, 7, 0x14, 3, 5, 5, 3, 8, 5, + 4, 0x14, 0x14, 4, 0x17, 0x14, 4, 0x16, 5, 4, 7, 5, 4, 5, 0x14, 4, 3, 0x14, + 2, 0x17, 5, 2, 1, 0x14, 2, 7, 0x14, 2, 0x16, 0x14, 2, 5, 5, 0x18, 1, 0x14, + 0x18, 3, 0x14, 7, 0x14, 5, 7, 0x16, 0x14, 7, 1, 5, 7, 2, 5, 7, 0x18, 0x14, + 7, 8, 5, 7, 3, 0x14, 5, 0x14, 0x14, 5, 1, 5, 5, 4, 5, 5, 2, 0x14, + 5, 7, 0x14, 5, 0x19, 0x14, 8, 0, 0, 8, 0x18, 0, 0x14, 0x1A, 5, 0x15, 0x1A, 5, + 0x17, 0x1A, 5, 0x16, 0x1A, 5, 0x19, 0x1A, 0x14, 0x1A, 0x1A, 0x14, 0xFF, 0, 0, +}; +static u32 D_8438ADEC[] = { + 0x18191C2E, + 0x2F313839, + 0x40414243, + 0x4F525455, +}; +static u32 D_8438ADFC[] = { + 0x1B000000, +}; +static u32 D_8438AE00[] = { + 0x28290000, +}; +static u32 D_8438AE04[] = { + 0x010A0B0C, 0x0D0E0F12, 0x13141516, 0x171A2032, 0x33343536, 0x373A3B3C, 0x3D3E3F00, +}; +static u32 D_8438AE20[] = { + 0x03070810, + 0x1D1E2C30, + 0x4D510000, +}; +static u32 D_8438AE2C[] = { + 0x03070810, + 0x111D1E27, + 0x28292B2C, + 0x2D301B00, +}; +static s32 D_8438AE3C = 0x4D2; +static u32 D_8438AE40 = 0x1A85; +static u32 D_8438AE44 = 0x3039; +static u32 D_8438AE48 = 0x10932; +static u8 D_8438AE4C[] = { 2, 0x4B, 0x98, 0xA3 }; void func_8436F6D0(void) { } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_8436F6D8.s") +u8 func_8436F6D8(void) { + u8 var_v1; + s32 ret; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_8436F788.s") + var_v1 = (osGetCount() & 0xFF0) >> 4; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_8436F838.s") + while (var_v1 > 0) { + D_8438AE3C = (D_8438AE3C * 0x41C64E6D) + 0x303B; + if (D_8438AE40 & 1) { + D_8438AE40 ^= 0x11020; + } + D_8438AE40 >>= 1; + var_v1--; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_8436F9D8.s") + ret = D_8438AE3C ^ D_8438AE40; + return ret; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_8436FA80.s") +u8 func_8436F788(void) { + u8 var_v1; + s32 ret; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_8436FC10.s") + var_v1 = (osGetCount() & 0xFF0) >> 4; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_8436FC7C.s") + while (var_v1 > 0) { + D_8438AE44 = (D_8438AE44 * 0x41C64E6D) + 0x303B; + if (D_8438AE48 & 1) { + D_8438AE48 ^= 0x11020; + } + D_8438AE48 >>= 1; + var_v1--; + } + ret = D_8438AE44 ^ D_8438AE48; + return ret; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_8436FD54.s") +void func_8436F838(s32 arg0, s32 arg1) { + unk_D_800AE540_0004* temp_a3; + unk_D_800FCB18* temp_a2_2; + unk_D_84390010_654* temp_v1; + s32 sp18; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_8436FD9C.s") + temp_v1 = &D_84390010[arg0]->unk_654; + temp_a2_2 = &D_84390010[arg1]->unk_654.unk_38; + temp_a3 = D_84390010[arg0]->unk_720->unk_08[temp_v1->unk_2C]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_8436FDBC.s") + if (temp_a2_2->unk_0C == 0) { + func_8002D5D4(0x19, temp_a3->unk_01C[temp_v1->unk_18].unk_30); + func_843179F4(D_843901A0->unk_088, 0x21); + return; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_8436FDF4.s") + temp_v1->unk_28 = temp_a2_2->unk_0C; + sp18 = (temp_a2_2->unk_0C * 0x19) / (temp_a2_2->unk_28 >> 2); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_84370090.s") + func_8002D5D4(0x19, temp_a3->unk_01C[temp_v1->unk_18].unk_30); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_843700F0.s") + if (sp18 >= 0x46) { + func_843179F4(D_843901A0->unk_088, 0x21); + } else if (sp18 >= 0x28) { + func_843179F4(D_843901A0->unk_088, 0x22); + } else if (sp18 >= 0xA) { + func_843179F4(D_843901A0->unk_088, 0x23); + } else { + func_843179F4(D_843901A0->unk_088, 0x24); + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_84370260.s") +void func_8436F9D8(s32 arg0, s32 arg1) { + unk_D_800FCB18* sp1C = &D_84390010[arg0]->unk_654.unk_38; + unk_D_800FCB18* sp18 = &D_84390010[arg1]->unk_654.unk_38; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_843703BC.s") + func_8436F838(arg0, arg1); + D_843C4DC2 = 0; + D_843C4DB3 = 0; + sp1C->unk_44.unk_00 = 0; + sp1C->unk_58 = 0; + sp18->unk_58 = 0; + sp1C->unk_4A = 0; + sp1C->unk_4B = 0; + sp1C->unk_4C = 0; + sp1C->unk_4D = 0; + sp1C->unk_4E = 0; + sp1C->unk_52 = 0; + sp1C->unk_57 = 0; + sp1C->unk_56 = 0; + sp18->unk_4C &= ~0x20; + D_843C4DA3 = 1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_843706E8.s") +void func_8436FA80(unk_D_84390010* arg0) { + unk_D_84390010_654* sp1C = &D_84390010[0]->unk_654; + unk_D_84390010_654* sp18 = &D_84390010[1]->unk_654; + unk_D_800FCB18* temp_a1 = &D_84390010[0]->unk_654.unk_38; + unk_D_800FCB18* temp_a2 = &D_84390010[1]->unk_654.unk_38; + s32 var_v0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_84370790.s") + if (arg0 == D_84390010[0]) { + var_v0 = ((sp1C->unk_28 - temp_a2->unk_0C) * 0x19) / (temp_a2->unk_28 >> 2); + } else { + var_v0 = ((sp18->unk_28 - temp_a1->unk_0C) * 0x19) / (temp_a1->unk_28 >> 2); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_843708A0.s") + if (var_v0 == 0) { + func_843179F4(D_843901A0->unk_1C8, 0x25); + } else if (var_v0 < 0x1E) { + func_843179F4(D_843901A0->unk_1C8, 0x26); + } else if (var_v0 < 0x46) { + func_843179F4(D_843901A0->unk_1C8, 0x27); + } else { + func_843179F4(D_843901A0->unk_1C8, 0x28); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_843708CC.s") + if (sp1C->unk_2D == 0x10) { + func_843179F4(D_843901A0->unk_1C8, 0); + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_84370ADC.s") +void func_8436FC10(void) { + s32 temp_v0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_84370B0C.s") + if (D_843C4DC4 >= 2) { + temp_v0 = 0; + while (temp_v0 < 0xD9) { + temp_v0 = func_8436F6D8(); + } + D_843C4DC4 = (D_843C4DC4 * temp_v0) / 255; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_84370B44.s") +u16 func_8436FC7C(unk_D_84390010* arg0, unk_D_84390010* arg1) { + unk_D_800FCB18* ptr1 = &arg0->unk_654.unk_38; + unk_D_800FCB18* ptr2 = &arg1->unk_654.unk_38; + if (ptr1->unk_5A == 0x62) { + if (ptr2->unk_5A != 0x62) { + return 0; + } + } else if (ptr2->unk_5A == 0x62) { + return 1; + } + + if (ptr1->unk_5A == 0x44) { + if (ptr2->unk_5A != 0x44) { + return 1; + } + } else if (ptr2->unk_5A == 0x44) { + return 0; + } + + if (ptr2->unk_2E < ptr1->unk_2E) { + return 0; + } + + if (ptr1->unk_2E < ptr2->unk_2E) { + return 1; + } + + if (func_8436F6D8() < 0x80) { + return 0; + } + return 1; +} + +s32 func_8436FD54(u8 arg0, u8* arg1, s32 arg2) { + while (arg2--) { + if (arg0 == *arg1) { + return 1; + } + arg1++; + } + + return 0; +} + +void func_8436FD9C(void) { + D_843C5240[0].unk_5A = D_843C5240[0].unk_1F[D_843C4DC2]; +} + +s32 func_8436FDBC(void) { + func_84376768(); + + if (D_843C4DA4 == 1) { + return 0; + } + return 1; +} + +void func_8436FDF4(s32 arg0, unk_func_80026268_arg0* arg1) { + u16 i; + u16 spC; + u16 spA; + u16 tmp; + u16 sp6; + u16 temp_a0; + + switch (arg0) { + case 1: + spA = D_80070FA0[arg1->unk_24].unk_01; + spC = arg1->unk_14; + break; + + case 2: + spA = D_80070FA0[arg1->unk_24].unk_02; + spC = arg1->unk_16; + break; + + case 3: + spA = D_80070FA0[arg1->unk_24].unk_03; + spC = arg1->unk_18; + break; + + case 4: + spA = D_80070FA0[arg1->unk_24].unk_04; + spC = arg1->unk_1A; + break; + + case 5: + spA = D_80070FA0[arg1->unk_24].unk_05; + spC = arg1->unk_1C; + break; + } + + for (i = 1; i < 255; i++) { + if (SQ(i) >= spC) { + break; + } + } + + tmp = D_843C5240[0].unk_24; + + switch (arg0) { + case 1: + sp6 = ((tmp & 0x1000) >> 9) | ((tmp & 0x100) >> 6) | ((tmp & 0x10) >> 3) | (tmp & 1); + break; + + case 2: + sp6 = (tmp >> 0xC) & 0xF; + break; + + case 3: + sp6 = (tmp >> 8) & 0xF; + break; + + case 4: + sp6 = (tmp >> 4) & 0xF; + break; + + case 5: + sp6 = tmp & 0xF; + break; + } + + temp_a0 = ((((spA + sp6) * 2) + (i >> 2)) * arg1->unk_24) / 100; + if (arg0 == 1) { + temp_a0 += arg1->unk_24 + 0xA; + } else { + temp_a0 += 5; + } + + if (temp_a0 >= 0x3E8) { + temp_a0 = 0x3E7; + } + + switch (arg0) { + case 1: + arg1->unk_26 = temp_a0; + break; + + case 2: + arg1->unk_28 = temp_a0; + break; + + case 3: + arg1->unk_2A = temp_a0; + break; + + case 4: + arg1->unk_2C = temp_a0; + break; + + case 5: + arg1->unk_2E = temp_a0; + break; + } +} + +void func_84370090(unk_func_80026268_arg0* arg0) { + func_8436FDF4(0, arg0); + func_8436FDF4(1, arg0); + func_8436FDF4(2, arg0); + func_8436FDF4(3, arg0); + func_8436FDF4(4, arg0); +} + +void func_843700F0(void) { + D_843C4DC4 = 0; + D_843C4DC6 = D_843C5238->unk_44.unk_02; + if (D_843C4DC6) { + if (D_843C5238->unk_44.unk_03 < 0x14) { + D_843C4DCA = D_843C523C->unk_2C; + if (D_843C523C->unk_4E & 4) { + D_843C4DCA *= 2; + } + + if (D_843C4DA5 != 0) { + D_843C4DCA = D_843C523C->unk_3A; + D_843C4DC8 = D_843C5238->unk_38; + } else { + D_843C4DC8 = D_843C5238->unk_2A; + } + } else { + D_843C4DCA = D_843C523C->unk_30; + if (D_843C523C->unk_4E & 2) { + D_843C4DCA *= 2; + } + + if (D_843C4DA5 != 0) { + D_843C4DCA = D_843C523C->unk_3E; + D_843C4DC8 = D_843C5238->unk_3E; + } else { + D_843C4DC8 = D_843C5238->unk_30; + } + } + + if (D_843C4DC8 & 0xFF00) { + if (D_843C4DCA & 0xFF00) { + D_843C4DC8 >>= 2; + D_843C4DCA >>= 2; + if (D_843C4DC8 == 0) { + D_843C4DC8 = 1; + } + } + } + + D_843C4DCC = D_843C5238->unk_26; + if (D_843C4DA5 != 0) { + D_843C4DCC *= 2; + } + } +} + +s32 func_84370260(void) { + s32 temp_v0 = D_843C5238->unk_44.unk_01; + + if (temp_v0 == 7) { + D_843C4DCA >>= 1; + if (D_843C4DCA == 0) { + D_843C4DCA = 1; + } + } + + if ((temp_v0 != 0x1D) && (temp_v0 != 0x1E)) { + if (temp_v0 == 0x26) { + return func_8436FDBC(); + } + + if (D_843C4DC6 == 0) { + return 0; + } + } + + D_843C4DC4 += (((((D_843C4DCC * 2) / 5) + 2) * D_843C4DC6 * D_843C4DC8) / D_843C4DCA) / 50; + if (D_843C4DC4 > 0x3E4) { + D_843C4DC4 = 0x3E4; + } + D_843C4DC4 += 2; + + return 1; +} + +void func_843703BC(void) { + if (D_843C523C->unk_4D & 0x10) { + if (D_84390240.unk_00->unk_48 == 0x14) { + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_208, 0x2B); + if (D_843C523C->unk_59 < D_843C4DC4) { + D_843C523C->unk_4D &= 0xFFEF; + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_208, 0x2C); + + if ((D_8438AC60[0] == 1) && (D_843C5238->unk_44.unk_01 == 0x1D)) { + func_84376768(); + D_843C5238->unk_4F = 1; + } + + if ((D_8438AC60[0] != 1) || (D_843C5238->unk_44.unk_01 != 7)) { + D_843C5238->unk_44.unk_01 = 0; + } + + func_843061EC(D_84390010[D_84390240.unk_00->unk_2C], 0x1000); + } else { + D_843C523C->unk_59 -= D_843C4DC4; + } + } else { + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_208, 0x2B); + if (D_843C523C->unk_59 < D_843C4DC4) { + D_843C523C->unk_4D &= 0xFFEF; + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_208, 0x2C); + + if ((D_8438AC60[0] == 1) && (D_843C5238->unk_44.unk_01 == 0x1D)) { + func_84376768(); + D_843C5238->unk_4F = 1; + } + + if ((D_8438AC60[0] != 1) || (D_843C5238->unk_44.unk_01 != 7)) { + D_843C5238->unk_44.unk_01 = 0; + } + + func_843061EC(D_84390010[!D_84390240.unk_00->unk_2C], 0x1000); + } else { + D_843C523C->unk_59 -= D_843C4DC4; + } + } + } else if (D_84390288 == 0) { + if (D_843C4DC4 < D_843C523C->unk_0C) { + D_843C523C->unk_0C -= D_843C4DC4; + } else { + D_843C4DC4 = D_843C523C->unk_0C; + D_843C523C->unk_0C = 0; + } + } +} + +void func_843706E8(s32 arg0) { + unk_D_800FCB18* temp_v0; + unk_D_84390010_654* temp_a1; + unk_func_80026268_arg0* temp_a2; + + temp_v0 = &D_84390010[arg0]->unk_654.unk_38; + temp_a1 = &D_84390010[arg0]->unk_654; + temp_a2 = &D_84390010[arg0]->unk_724->unk_01C[temp_a1->unk_08]; + + if ((temp_v0->unk_5A != 0xA5) && !(temp_v0->unk_4C & 7) && !(temp_v0->unk_4D & 0x40)) { + temp_v0->unk_32[temp_a1->unk_0C]--; + if (!(temp_v0->unk_4E & 8)) { + temp_a2->unk_20[temp_a1->unk_0C] -= 1; + } + } +} + +void func_84370790(void) { + unk_D_8438ACB8* var_v0; + s32 var_a2; + s32 idx; + s32 idx2; + + if (D_8438AC60[0] == 1) { + var_v0 = D_8438ACD4; + } else { + var_v0 = D_8438ACB8; + } + + idx = D_843C5238->unk_5C[4]; + idx2 = D_843C523C->unk_5C[5]; + idx2 = 0xE - idx2; + + var_a2 = (D_843C5238->unk_44.unk_04 * var_v0[idx - 1].unk_00) / var_v0[idx - 1].unk_01; + if (var_a2 == 0) { + var_a2 = 1; + } + + var_a2 = (var_a2 * var_v0[idx2 - 1].unk_00) / var_v0[idx2 - 1].unk_01; + if (var_a2 == 0) { + var_a2 = 1; + } + + if (var_a2 >= 0x100) { + var_a2 = 0xFF; + } + D_843C5238->unk_44.unk_04 = var_a2; +} + +void func_843708A0(void) { + D_843C4DC4 = 0; + D_843C4DA4 = 1; + D_843C5238->unk_4C &= ~0x20; +} + +void func_843708CC(void) { + if (D_843C5238->unk_44.unk_01 == 0x50) { + if (!(D_843C5238->unk_4D & 0x20) && (D_8438AC60[0] == 1)) { + D_843C5238->unk_4D |= 0x20; + } + } + + if ((D_843C5238->unk_44.unk_01 == 8) && !(D_843C523C->unk_15 & 7)) { + func_843708A0(); + return; + } + + if (D_843C523C->unk_4D & 0x10) { + if (D_843C5238->unk_44.unk_01 == 17) { + return; + } + + if (D_843C5238->unk_44.unk_01 == 3 || D_843C5238->unk_44.unk_01 == 8 || + ((D_8438AC60[0] == 1) && (func_8436FD54(D_843C5238->unk_44.unk_01, D_8438ACB0, 5) != 0))) { + func_843708A0(); + return; + } + } + + if (D_843C523C->unk_4C & 0x40) { + if (D_843C5238->unk_44.unk_01 != 0x11) { + func_843708A0(); + } + } else { + if ((((D_843C5238->unk_44.unk_01 >= 0x12) && (D_843C5238->unk_44.unk_01 < 0x1A)) || + ((D_843C5238->unk_44.unk_01 >= 0x3A) && (D_843C5238->unk_44.unk_01 < 0x42))) && + (D_843C523C->unk_4D & 2)) { + func_843708A0(); + return; + } + + if (!(D_843C5238->unk_4D & 1)) { + if ((D_8438AC60[0] != 1) || (D_843C5238->unk_44.unk_01 != 0x11)) { + func_84370790(); + } + + D_843C4DA2 = func_8436F788(); + if (D_843C4DA2 == 0xFF) { + D_843C4DA2 = func_8436F788(); + } + + if (D_843C4DA2 >= D_843C5238->unk_44.unk_04) { + func_843708A0(); + } + } + } +} + +void func_84370ADC(unk_D_84390010* arg0) { + unk_func_80026268_arg0* ptr = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08]; + + ptr->unk_05 = arg0->unk_654.unk_38.unk_15; +} + +void func_84370B0C(unk_D_84390010* arg0) { + unk_D_800FCB18* temp_v0 = &arg0->unk_654.unk_38; + + if (arg0->unk_654.unk_38.unk_15 & 0x40) { + temp_v0->unk_2E >>= 2; + if (temp_v0->unk_2E == 0) { + temp_v0->unk_2E = 1; + } + } +} + +void func_84370B44(unk_D_84390010* arg0) { + unk_D_800FCB18* temp_v0 = &arg0->unk_654.unk_38; + + if (arg0->unk_654.unk_38.unk_15 & 0x10) { + temp_v0->unk_2A >>= 1; + if (temp_v0->unk_2A == 0) { + temp_v0->unk_2A = 1; + } + } +} + +#ifdef NON_MATCHING +void func_84370B7C(unk_D_84390010* arg0) { + unk_D_84390010_654* sp28; + unk_D_800FCB18* sp24; + unk_func_80026268_arg0* sp34; + s32 i; + s32 j; + + sp28 = &arg0->unk_654; + sp24 = &arg0->unk_654.unk_38; + sp34 = &arg0->unk_720->unk_08[sp28->unk_2C]->unk_01C[sp28->unk_18]; + + sp24->unk_14 = sp28->unk_08; + sp24->unk_0B = sp34->unk_00.unk_00; + sp24->unk_0C = sp34->unk_02; + sp24->unk_15 = sp34->unk_05; + sp24->unk_16[6] = sp34->unk_06; + sp24->unk_16[7] = sp34->unk_07; + sp24->unk_16[8] = sp34->unk_08; + + sp24->unk_1F[0] = sp34->unk_09[0]; + sp24->unk_1F[1] = sp34->unk_09[1]; + sp24->unk_1F[2] = sp34->unk_09[2]; + sp24->unk_1F[3] = sp34->unk_09[3]; + sp24->unk_24 = sp34->unk_1E; + + sp24->unk_32[0] = sp34->unk_20[0]; + sp24->unk_32[1] = sp34->unk_20[1]; + sp24->unk_32[2] = sp34->unk_20[2]; + sp24->unk_32[3] = sp34->unk_20[3]; + + if ((sp34->unk_09[0] == 0) || (sp34->unk_09[0] >= 0xA6)) { + sp24->unk_32[0] = 0; + } + + if ((sp34->unk_09[1] == 0) || (sp34->unk_09[1] >= 0xA6)) { + sp24->unk_32[1] = 0; + } + + if ((sp34->unk_09[2] == 0) || (sp34->unk_09[2] >= 0xA6)) { + sp24->unk_32[2] = 0; + } + + if ((sp34->unk_09[3] == 0) || (sp34->unk_09[3] >= 0xA6)) { + sp24->unk_32[3] = 0; + } + + for (i = 0; i < 4; i++) { + if (sp34->unk_09[i] == 0) { + for (j = i; j < 4; j++) { + sp34->unk_09[j] = sp24->unk_32[j] = 0; + sp24->unk_1F[j] = 0; + } + break; + } + } + + sp24->unk_26 = sp34->unk_24; + sp24->unk_28 = sp34->unk_26; + sp24->unk_2A = sp34->unk_28; + sp24->unk_2C = sp34->unk_2A; + sp24->unk_2E = sp34->unk_2C; + sp24->unk_30 = sp34->unk_2E; + + func_84370B0C(arg0); + func_84370B44(arg0); + + sp24->unk_36 = D_80070F84[sp24->unk_0B].unk_06; + sp24->unk_38 = sp34->unk_28; + sp24->unk_3A = sp34->unk_2A; + sp24->unk_3C = sp34->unk_2C; + sp24->unk_3E = sp34->unk_2E; + + // clang-format off + for (i = 0; i < 8; i++) { sp24->unk_5C[i] = 7; } + // clang-format on +} +#else #pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_84370B7C.s") +#endif -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_84370E30.s") +s32 func_84370E30(unk_D_84390010* arg0) { + if (arg0->unk_724->unk_01C[arg0->unk_654.unk_18 - 1].unk_02 != 0) { + return 1; + } + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_84370E80.s") +void func_84370E70(void) { +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_84370F40.s") +void func_84370E78(void) { +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_84371010.s") +void func_84370E80(void) { + D_843C5238->unk_44.unk_00 = D_80072B00[D_843C5238->unk_5A - 1].unk_00; + D_843C5238->unk_44.unk_01 = D_80072B00[D_843C5238->unk_5A - 1].unk_01; + D_843C5238->unk_44.unk_02 = D_80072B00[D_843C5238->unk_5A - 1].unk_02; + D_843C5238->unk_44.unk_03 = D_80072B00[D_843C5238->unk_5A - 1].unk_03; + D_843C5238->unk_44.unk_04 = D_80072B00[D_843C5238->unk_5A - 1].unk_04; + D_843C5238->unk_44.unk_05 = D_80072B00[D_843C5238->unk_5A - 1].unk_05; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_84371080.s") +void func_84370F40(void) { + unk_D_800FCB18* sp24; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_8437114C.s") + if ((D_843C523C->unk_4D & 0x40) && ((D_843C523C->unk_5C[0]) != 0xD)) { + sp24 = D_843C5238; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_843712CC.s") + D_843C5238 = D_843C523C; + D_843C5238->unk_44.unk_00 = 0; + D_843C5238->unk_44.unk_01 = 10; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_843714D8.s") + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_348, 0x1F); + func_843741C4(); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_84371564.s") + D_843C5238->unk_44.unk_00 = 0x63; + D_843C5238->unk_44.unk_01 = 0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_843715C0.s") + D_843C5238 = sp24; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_8437166C.s") +void func_84371010(void) { + D_843C4DEC = D_843C4DB3 & 0x7F; + if (D_843C4DEC >= 0xB) { + func_843179F4(D_843901A0->unk_088, 0x29); + } else if (D_843C4DEC < 0xA) { + func_843179F4(D_843901A0->unk_088, 0x2A); + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_8437176C.s") +void func_84371080(void) { + unk_D_800FCB18* sp1C = &D_84390010[!D_84390240.unk_00->unk_2C]->unk_654.unk_38; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_843718E4.s") + switch (D_843C4DA5) { + case 1: + func_843179F4(D_843901A0->unk_148, 0x1D); + D_84390240.unk_00->unk_1A = 2; + break; + case 2: + func_843179F4(D_843901A0->unk_148, 0x1E); + D_84390240.unk_00->unk_1A = 2; + break; + } + sp1C->unk_5B = D_843C4DA5; + D_843C4DA5 = 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_84371974.s") +void func_8437114C(void) { + s32 var_s0; + s32 temp_v0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_84371B3C.s") + switch (D_843C5238->unk_44.unk_01) { + case 38: + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_84371C18.s") + case 40: + D_843C4DC4 = D_843C523C->unk_0C / 2; + if (D_843C4DC4 == 0) { + D_843C4DC4 = 1; + } + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_84371DCC.s") + case 41: + switch (D_843C5238->unk_44.unk_00) { + case 0x45: + case 0x65: + var_s0 = D_843C5238->unk_26; + break; + case 0x31: + var_s0 = 0x14; + break; + + case 0x52: + var_s0 = 0x28; + break; + + default: + var_s0 = D_843C5238->unk_26; + var_s0 = (var_s0 >> 1) + var_s0; + do { + do { + temp_v0 = func_8436F6D8(); + } while (temp_v0 == 0); + } while (temp_v0 >= var_s0); + var_s0 = temp_v0; + } + D_843C4DC4 = var_s0; + break; + + default: + if (D_843C5238->unk_44.unk_02 != 0) { + if (D_843C5238->unk_4C & 4) { + D_843C4DA0 += D_843C4DC4; + } else { + D_843C4DA0 = D_843C4DC4; + } + break; + } + return; + } + + if (D_843C4DC4 != 0) { + func_843703BC(); + } +} + +void func_843712CC(void) { + unk_D_800FCB18* sp1C; + + if (D_843C4DB3 & 0x7F) { + if (D_843C4DA5 == 0xFF) { + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, 0x19); + } else { + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, 0x1A); + } + } else { + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, 0x1B); + } + + D_843C4DA5 = 0; + + if (D_843C5238->unk_44.unk_01 == 0x2D) { + D_84390240.unk_00->unk_48 = 0x10; + D_843C4DC4 >>= 3; + if (D_843C4DC4 == 0) { + D_843C4DC4++; + } + + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, 0x1C); + + sp1C = D_843C5238; + D_843C5238 = D_843C523C; + D_843C523C = sp1C; + D_84390240.unk_00->unk_2C = !D_84390240.unk_00->unk_2C; + func_843703BC(); + D_84390240.unk_00->unk_2C = !D_84390240.unk_00->unk_2C; + D_843C523C = D_843C5238; + D_843C5238 = sp1C; + } +} + +void func_843714D8(void) { + unk_D_800FCB18* ptr; + unk_func_80026268_arg0* temp_a0; + unk_D_84390010_654* temp_a1; + + ptr = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654.unk_38; + temp_a0 = + &D_84390010[D_84390240.unk_00->unk_2C]->unk_724->unk_01C[D_84390010[D_84390240.unk_00->unk_2C]->unk_654.unk_08]; + temp_a1 = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654; + + D_843C5238->unk_32[temp_a1->unk_0C]++; + if (!(ptr->unk_4E & 8)) { + temp_a0->unk_20[temp_a1->unk_0C]++; + } +} + +s32 func_84371564(void) { + s32 temp_v0; + + func_843714D8(); + do { + do { + temp_v0 = func_8436F6D8(); + } while (temp_v0 == 0 || temp_v0 >= 0xA5); + } while (temp_v0 == 0x76); + D_843C5238->unk_5A = temp_v0; + func_84370E80(); + return 1; +} + +void func_843715C0(void) { + u16 var_a0; + + if (D_843C5238->unk_12 != 0xFFFF) { + D_843C5238->unk_0E = D_843C5238->unk_12; + } else { + D_843C5238->unk_0E = D_843C5238->unk_0C; + } + + var_a0 = (D_843C5238->unk_28 >> 4) & 0xFFFF; + if (var_a0 == 0) { + var_a0++; + } + + if (D_843C5238->unk_4E & 1) { + D_843C5238->unk_51++; + var_a0 *= D_843C5238->unk_51; + } + + if (D_843C5238->unk_0E < var_a0) { + D_843C5238->unk_0E = 0; + } else { + D_843C5238->unk_0E -= var_a0; + } + + D_843C5238->unk_10 = D_843C5238->unk_0E; +} + +void func_8437166C(void) { + u16 var_a0; + + if (!(D_843C5238->unk_15 & 0x18)) { + if (D_843C5238->unk_12 != 0xFFFF) { + D_843C5238->unk_10 = D_843C5238->unk_12; + } else { + D_843C5238->unk_10 = D_843C5238->unk_0C; + } + } + + var_a0 = (D_843C5238->unk_28 >> 4) & 0xFFFF; + if (var_a0 == 0) { + var_a0++; + } + + if (D_843C5238->unk_4E & 1) { + D_843C5238->unk_51++; + var_a0 *= D_843C5238->unk_51; + } + + if (D_843C5238->unk_10 < var_a0) { + var_a0 = D_843C5238->unk_10; + D_843C5238->unk_10 = 0; + } else { + D_843C5238->unk_10 -= var_a0; + } + + D_843C523C->unk_10 = D_843C523C->unk_0C; + D_843C523C->unk_10 += var_a0; + + if (D_843C523C->unk_28 < D_843C523C->unk_10) { + D_843C523C->unk_10 = D_843C523C->unk_28; + } +} + +s32 func_8437176C(void) { + if (D_843C523C->unk_0C == 0) { + return 0; + } + + if (D_843C5238->unk_15 & 0x18) { + if (D_843C5238->unk_15 & 8) { + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_248, 0); + } else { + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_248, 1); + } + func_843715C0(); + D_843C523C->unk_0E = D_843C523C->unk_0C; + } + + if (D_843C5238->unk_4D & 0x80) { + func_8437166C(); + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_288, 2); + } + + if (D_843C5238->unk_0C != 0) { + return 0; + } + return 1; +} + +void func_843718DC(void) { +} + +s32 func_843718E4(void) { + if ((D_843C523C->unk_58 == 0x77) || (D_843C523C->unk_58 == 0)) { + D_843901A0->unk_388[0] = 0; + D_843901A0->unk_388[1] = 0; + D_84390240.unk_00->unk_48 = 0x1C; + func_843179F4(D_843901A0->unk_088, 0x20); + return 0; + } + + D_843C5238->unk_5A = D_843C523C->unk_58; + func_843714D8(); + func_84370E80(); + return 1; +} + +void func_84371974(void) { + u8 var_v0; + u8 var_v1; + u8 temp_a0; + u8 temp_a1; + u8 temp_a3; + u8 temp_t1; + unk_D_8438ACF0* var_a3; + + var_v0 = 3; + + temp_a1 = D_843C5238->unk_16[6]; + temp_a3 = D_843C5238->unk_16[7]; + + var_v1 = D_843C523C->unk_16[6]; + temp_a0 = D_843C523C->unk_16[7]; + + temp_t1 = D_843C5238->unk_44.unk_03; + + if ((D_8438AC60[0] != 1) || (D_843C5238->unk_44.unk_00 != 0xA5)) { + if ((temp_t1 == temp_a1) || (temp_t1 == temp_a3)) { + D_843C4DC4 += D_843C4DC4 >> 1; + D_843C4DB3 |= 0x80; + } + + var_a3 = &D_8438ACF0[0]; + while (var_a3->unk_00 != 0xFF) { + if ((var_a3->unk_00 == temp_t1) && ((var_a3->unk_01 == var_v1) || (var_a3->unk_01 == temp_a0))) { + if (var_a3->unk_02 != 0) { + if (var_a3->unk_02 >= 0xB) { + var_v0++; + } else { + var_v0--; + } + } + + D_843C4DC4 = (D_843C4DC4 * var_a3->unk_02) / 10; + + if (D_843C4DC4 == 0) { + D_843C4DA4 = 1; + } + } + var_a3++; + } + + switch (var_v0) { + case 1: + case 2: + D_843C4DB3 = (D_843C4DB3 & 0x80) + 5; + break; + + case 3: + break; + + case 4: + case 5: + D_843C4DB3 = (D_843C4DB3 & 0x80) + 0x14; + break; + } + } +} + +s32 func_84371B3C(void) { + if (D_843C5238->unk_5A != 0x44) { + return 1; + } + + D_843C4DA4 = 1; + + if (D_843C523C->unk_5A == 0x44) { + return 0; + } + + if (D_843C523C->unk_44.unk_02 == 0) { + return 0; + } + + if ((D_843C523C->unk_44.unk_03 == 0) || (D_843C523C->unk_44.unk_03 == 1)) { + if (D_843C4DC4 == 0) { + return 0; + } + + if (D_843C4DC4 >= 0x8000) { + D_843C4DC4 = 0xFFFF; + } else { + D_843C4DC4 *= 2; + } + + D_843C4DA4 = 0; + D_843C4DA5 = 0; + func_843708CC(); + return 0; + } + return 0; +} + +s32 func_84371C18(void) { + UNUSED s32 pad; + s32 sp18; + + D_843C4DA5 = 0; + if (D_8438AC60[0] == 1) { + sp18 = (D_80070F84[D_843C5238->unk_0B].unk_09 + 0x4C) >> 2; + } else { + sp18 = D_80070F84[D_843C5238->unk_0B].unk_09 >> 1; + } + + if (D_843C5238->unk_44.unk_02 == 0) { + return 0; + } + + if (D_8438AC60[0] == 1) { + if (D_843C5238->unk_4D & 4) { + sp18 = (sp18 * 4) + 0xA0; + } else { + sp18 *= 2; + } + + if (func_8436FD54(D_843C5238->unk_44.unk_00, D_8438AE4C, 4) != 0) { + sp18 *= 4; + } else { + sp18 >>= 1; + } + } else { + if (D_843C5238->unk_4D & 4) { + sp18 >>= 1; + } else { + sp18 *= 2; + if (sp18 >= 0x100) { + sp18 = 0xFF; + } + } + + if (func_8436FD54(D_843C5238->unk_44.unk_00, D_8438AE4C, 4) != 0) { + sp18 *= 4; + if (sp18 >= 0x100) { + sp18 = 0xFF; + } + } else { + sp18 >>= 1; + } + } + + if (sp18 >= 0x100) { + sp18 = 0xFF; + } + + if (sp18 <= 0) { + sp18 = 1; + } + + D_843C4DA2 = func_8436F6D8(); + if (D_843C4DA2 >= sp18) { + return 0; + } + D_843C4DA5 = 1; + return 1; +} + +s32 func_84371DCC(void) { + unk_D_800FCB18* sp2C; + unk_D_84390010_654* temp_v0; + u16 sp26; + u8 sp25; + unk_D_800FCB18* temp_v1; + + temp_v0 = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654; + temp_v1 = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654.unk_38; + + if (D_843C5238->unk_15 & 7) { + D_843C5238->unk_15 = (D_843C5238->unk_15 & 7) - 1; + if (temp_v1->unk_16[temp_v0->unk_08 + temp_v0->unk_2B * 3] != 0) { + temp_v1->unk_16[temp_v0->unk_08 + temp_v0->unk_2B * 3]--; + } + + if (D_843C5238->unk_15 != 0) { + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, 5); + D_84390240.unk_00->unk_48 = 0x11; + } else { + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, 6); + D_84390240.unk_00->unk_48 = 0x11; + } + + D_843C5238->unk_58 = 0; + return 0; + } + + if (D_843C5238->unk_15 & 0x20) { + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, 7); + D_843C5238->unk_58 = 0; + D_84390240.unk_00->unk_48 = 0x11; + return 0; + } + + if (D_843C523C->unk_4C & 0x20) { + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, 8); + D_84390240.unk_00->unk_48 = 0x11; + return 0; + } + + if (D_843C5238->unk_4C & 8) { + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, 9); + D_843C5238->unk_4D &= 0xFFDF; + D_843C5238->unk_4C &= 0xFFF7; + D_84390240.unk_00->unk_48 = 0x1C; + return 0; + } + + if (D_843C5238->unk_4D & 0x20) { + D_843C5238->unk_4D &= ~0x20; + if (D_8438AC60[0] == 1) { + D_843C4DC4 = 0; + } + D_84390240.unk_00->unk_48 = 0x11; + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, 0xA); + return 0; + } + + if (D_843C5238->unk_52 != 0) { + D_843C5238->unk_52--; + if (!(D_843C5238->unk_52 & 0xF)) { + D_843C5238->unk_52 = 0; + D_843C5238->unk_57 = 0; + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_388, 0xB); + } + } + + if (D_843C5238->unk_4C & 0x80) { + D_843C5238->unk_50--; + if (D_843C5238->unk_50 == 0) { + D_843C5238->unk_4C &= 0xFF7F; + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_188, 0xC); + } else { + func_84317EDC(); + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_188, 0xD); + D_843C4DA2 = func_8436F6D8(); + if (D_843C4DA2 >= 0x80) { + func_843180AC(); + D_84390240.unk_00->unk_48 = 0x14; + D_843C5238->unk_4C &= 0x80; + func_843179F4(D_843901A0->unk_148, 0xE); + + sp26 = D_843C523C->unk_2C; + D_843C523C->unk_2C = D_843C5238->unk_2C; + sp25 = D_843C5238->unk_44.unk_01; + D_843C5238->unk_44.unk_01 = 0; + D_843C4DA5 = 0; + D_843C5238->unk_44.unk_02 = 0x28; + D_843C5238->unk_44.unk_03 = 0; + func_843700F0(); + func_84370260(); + D_843C5238->unk_44.unk_01 = sp25; + D_843C523C->unk_2C = sp26; + + sp2C = D_843C5238; + D_843C5238 = D_843C523C; + D_843C523C = sp2C; + func_843703BC(); + D_843C523C = D_843C5238; + D_843C5238 = sp2C; + goto label1; + } + } + } + + if ((D_843C5238->unk_57 != 0) && (D_843C5238->unk_57 == D_843C5238->unk_5A)) { + D_843C5238->unk_4C &= 0xFFEF; + func_8002D5D4(0x1D, D_80072338[D_843C5238->unk_5A - 1].unk_04); + func_843179F4(D_843901A0->unk_088, 0xF); + D_84390240.unk_00->unk_48 = 0x11; + return 0; + } + + if (D_843C5238->unk_15 & 0x40) { + D_843C4DA2 = func_8436F6D8(); + if (D_843C4DA2 < 0x3F) { + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, 0x10); + D_84390240.unk_00->unk_48 = 0x1F; + D_843C4DC4 = 0; + label1: + D_843C5238->unk_4C &= 0xFF8C; + return 0; + } + } + + if (D_843C5238->unk_4C & 1) { + D_843C5238->unk_44.unk_00 = 0; + D_843C5238->unk_54 += D_843C4DC4; + D_843C5238->unk_4F -= 1; + if (D_843C5238->unk_4F != 0) { + D_84390240.unk_00->unk_48 = 0x1B; + return 0; + } + D_843C5238->unk_4C &= 0xFFFE; + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_0C8, 0x11); + D_843C5238->unk_44.unk_02 = 1; + + D_843C4DC4 = D_843C5238->unk_54 * 2; + if (!D_843C4DC4) { + D_843C4DA4 = 1; + } + + if ((D_8438AC60[0] == 1) && (D_843C523C->unk_4C & 0x40)) { + D_843C4DA4 = 1; + } + + D_843C5238->unk_54 = 0; + D_843C5238->unk_44.unk_00 = 0x75; + return 5; + } + + if (D_843C5238->unk_4C & 2) { + D_843C5238->unk_44.unk_00 = 0x25; + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_0C8, 0x12); + D_843C5238->unk_4F -= 1; + if (D_843C5238->unk_4F != 0) { + return 4; + } + + func_843179F4(D_843901A0->unk_188, -0x45); + D_843C5238->unk_4C &= 0xFFFD; + D_843C5238->unk_4C |= 0x80; + D_843C5238->unk_50 = (func_8436F6D8() & 3) + 2; + return 4; + } + + if (D_843C5238->unk_4C & 0x20) { + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_0C8, 0x13); + D_843C5238->unk_4F -= 1; + return 6; + } + + if (D_843C5238->unk_4D & 0x40) { + D_843C5238->unk_44.unk_01 = 0; + return 3; + } + return 2; +} + +#ifdef NON_MATCHING +void func_84372670(void) { + char sp2C[8]; + + if (D_843C5238->unk_5A != 0xFF) { + D_843C4DA4 = 0; + D_843C4DB5 = 0; + D_843C4DA9 = 0; + D_843C4DB3 = 0xA; + + switch (func_84371DCC()) { + case 2: + func_84370E80(); + if (D_843C5238->unk_4C & 0x10) { + D_843C5238->unk_4C &= ~0x50; + func_843061EC(D_84390010[D_84390240.unk_00->unk_2C], 8); + } else { + block_5: + switch (D_843C5238->unk_44.unk_01) { + case 0x27: + case 0x2B: + if (D_8438AC60[0] == 1) { + D_843C4DC4 = 0; + } + func_84376768(); + D_843C5238->unk_58 = D_843C5238->unk_5A; + return; + } + } + + case 3: + func_84317BDC(); + func_843706E8(D_84390240.unk_00->unk_2C); + + if (func_8436FD54(D_843C5238->unk_44.unk_01, D_8438ADEC, 0x10) != 0) { + if (D_8438AC60[0] == 1) { + D_843C4DC4 = 0; + } + func_84376768(); + return; + } + + if (func_8436FD54(D_843C5238->unk_44.unk_01, D_8438ADFC, 1) != 0) { + func_84376768(); + } + + case 4: + if (func_8436FD54(D_843C5238->unk_44.unk_01, D_8438AE00, 2) == 0) { + func_84371C18(); + if (func_84371B3C() == 0) { + goto case_5; + } + + func_843700F0(); + if (func_84370260() == 0) { + goto case_6; + } + + func_84371974(); + func_8436FC10(); + } + + if (D_8438AC60[0] == 1) { + D_843C5238->unk_44.unk_04 = D_80072B00[D_843C5238->unk_5A - 1].unk_04; + } + func_843708CC(); + + case 5: + case_5: + if (D_843C4DA4 != 0) { + switch (D_843C5238->unk_44.unk_01) { + case 7: + break; + } + goto case_6; + } + + case 6: + case_6: + switch (D_843C5238->unk_44.unk_01) { + case 9: + if (func_843718E4() == 0) { + goto end; + } + D_843C4DB5 = 0; + goto block_5; + + case 0x53: + func_84371564(); + goto block_5; + } + + if (func_8436FD54(D_843C5238->unk_44.unk_01, D_8438AE04, 0x1B) != 0) { + func_84376768(); + return; + } + + if (D_843C4DA4 != 0) { + func_843712CC(); + + if (D_843C5238->unk_44.unk_01 != 7) { + goto end; + } + } else { + func_8437114C(); + func_84371080(); + func_84371010(); + D_843C4DA9 = 1; + } + + if (func_8436FD54(D_843C5238->unk_44.unk_01, D_8438AE20, 0xA) != 0) { + func_84376768(); + } + + if (D_843C523C->unk_0C == 0) { + if (D_8438AC60[0] == 1) { + switch (D_843C5238->unk_44.unk_01) { + case 0x50: + D_843C4DC4 = 0; + return; + } + } + return; + } + + func_84370F40(); + + if (D_843C5238->unk_4C & 4) { + D_843C5238->unk_4F -= 1; + if (D_843C5238->unk_4F != 0) { + goto case_6; + } + D_843C5238->unk_4C &= ~4; + sprintf(sp2C, "%d", D_843C5238->unk_54); + func_8002D600(2, D_843C5238->unk_54); + func_843179F4(D_843901A0->unk_3C8, 4); + D_84390240.unk_00->unk_1A = 1; + D_843C5238->unk_54 = 0; + D_843C4DC4 = D_843C4DA0; + } + + if (D_843C5238->unk_44.unk_01 == 0) { + goto end; + } + + if (func_8436FD54(D_843C5238->unk_44.unk_01, D_8438AE2C, 0xF) != 0) { + goto end; + } + + func_84376768(); + goto end; + } + } +end: + D_843C4DB7 = 0; +} +#else #pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_84372670.s") +#endif -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_84372B48.s") +void func_84372B48(unk_D_84390010* arg0) { + s32 sp1C = func_84307F00(arg0); + unk_D_84390010_654* temp_a10; + unk_D_800FCB18* temp_a11; + unk_D_800FCB18* temp_a01; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_84372C40.s") + temp_a10 = &D_84390010[sp1C]->unk_654; + temp_a11 = &D_84390010[sp1C]->unk_654.unk_38; + temp_a01 = &D_84390010[!sp1C]->unk_654.unk_38; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_84372D88.s") + temp_a01->unk_54 = 0; + temp_a01->unk_58 = 0; + temp_a01->unk_4C &= ~4; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_84372ED0.s") + temp_a11->unk_4A = 0; + temp_a11->unk_4B = 0; + temp_a11->unk_4C = 0; + temp_a11->unk_4D &= 0x80; + temp_a11->unk_4E = 0; + temp_a11->unk_52 = 0; + temp_a11->unk_57 = 0; + temp_a11->unk_56 = 0; + temp_a11->unk_58 = 0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_84373018.s") + if (temp_a10->unk_2D != 0xF) { + temp_a10->unk_2D = 0x11; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_84373160.s") + func_8436FA80(arg0); + func_8002D5D4(0x19, func_8430862C(D_84390010[sp1C])); + func_843179F4(D_843901A0->unk_448[sp1C], 3); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_843732B8.s") +void func_84372C40(unk_D_84390010* arg0) { + unk_D_84390010_654* ptr1 = &arg0->unk_654; + unk_func_80026268_arg0* temp_v0; + s32 i; + s32 var_s2 = 0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_8437345C.s") + for (i = 0; i < func_84307EC4(arg0); i++) { + if (i == ptr1->unk_08) { + var_s2 += arg0->unk_654.unk_38.unk_0E; + } else { + temp_v0 = &arg0->unk_724->unk_01C[i]; + var_s2 += temp_v0->unk_02; + } + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_359F90/func_84373570.s") + if (arg0->unk_720->unk_01 == 2) { + for (i = 0; i < func_84307EE0(arg0); i++) { + temp_v0 = &arg0->unk_720->unk_08[!ptr1->unk_2B]->unk_01C[i]; + var_s2 += temp_v0->unk_02; + } + } + + if (var_s2 == 0) { + func_8436FA80(arg0); + ptr1->unk_2D = 0x12; + } else { + func_84372B48(arg0); + } +} + +void func_84372D88(unk_D_84390010* arg0) { + unk_D_84390010_654* ptr1 = &arg0->unk_654; + unk_func_80026268_arg0* temp_v0; + s32 i; + s32 var_s2 = 0; + + for (i = 0; i < func_84307EC4(arg0); i++) { + if (i == ptr1->unk_08) { + var_s2 += arg0->unk_654.unk_38.unk_10; + } else { + temp_v0 = &arg0->unk_724->unk_01C[i]; + var_s2 += temp_v0->unk_02; + } + } + + if (arg0->unk_720->unk_01 == 2) { + for (i = 0; i < func_84307EE0(arg0); i++) { + temp_v0 = &arg0->unk_720->unk_08[!ptr1->unk_2B]->unk_01C[i]; + var_s2 += temp_v0->unk_02; + } + } + + if (var_s2 == 0) { + func_8436FA80(arg0); + ptr1->unk_2D = 0x12; + } else { + func_84372B48(arg0); + } +} + +void func_84372ED0(unk_D_84390010* arg0) { + unk_D_84390010_654* ptr1 = &arg0->unk_654; + unk_func_80026268_arg0* temp_v0; + s32 i; + s32 var_s2 = 0; + + for (i = 0; i < func_84307EC4(arg0); i++) { + if (i == ptr1->unk_08) { + var_s2 += arg0->unk_654.unk_38.unk_12; + } else { + temp_v0 = &arg0->unk_724->unk_01C[i]; + var_s2 += temp_v0->unk_02; + } + } + + if (arg0->unk_720->unk_01 == 2) { + for (i = 0; i < func_84307EE0(arg0); i++) { + temp_v0 = &arg0->unk_720->unk_08[!ptr1->unk_2B]->unk_01C[i]; + var_s2 += temp_v0->unk_02; + } + } + + if (var_s2 == 0) { + func_8436FA80(arg0); + ptr1->unk_2D = 0x12; + } else { + func_84372B48(arg0); + } +} + +void func_84373018(unk_D_84390010* arg0) { + unk_D_84390010_654* ptr1 = &arg0->unk_654; + unk_func_80026268_arg0* temp_v0; + s32 i; + s32 var_s2 = 0; + + for (i = 0; i < func_84307EC4(arg0); i++) { + if (i == ptr1->unk_08) { + var_s2 += arg0->unk_654.unk_38.unk_0C; + } else { + temp_v0 = &arg0->unk_724->unk_01C[i]; + var_s2 += temp_v0->unk_02; + } + } + + if (arg0->unk_720->unk_01 == 2) { + for (i = 0; i < func_84307EE0(arg0); i++) { + temp_v0 = &arg0->unk_720->unk_08[!ptr1->unk_2B]->unk_01C[i]; + var_s2 += temp_v0->unk_02; + } + } + + if (var_s2 == 0) { + func_8436FA80(arg0); + ptr1->unk_2D = 0x12; + } else { + func_84372B48(arg0); + } +} + +s32 func_84373160(unk_D_84390010* arg0) { + unk_D_84390010_654* ptr1 = &arg0->unk_654; + unk_func_80026268_arg0* temp_v0; + s32 i; + s32 var_s2; + + if (arg0->unk_654.unk_38.unk_15 & 0x18) { + var_s2 = 0; + if (arg0->unk_654.unk_38.unk_0E == 0) { + for (i = 0; i < func_84307EC4(arg0); i++) { + temp_v0 = &arg0->unk_724->unk_01C[i]; + var_s2 += temp_v0->unk_02; + } + + if (arg0->unk_720->unk_01 == 2) { + for (i = 0; i < func_84307EE0(arg0); i++) { + temp_v0 = &arg0->unk_720->unk_08[!ptr1->unk_2B]->unk_01C[i]; + var_s2 += temp_v0->unk_02; + } + } + + if (var_s2 == 0) { + ptr1->unk_2D = 0x12; + return 1; + } + func_84372B48(arg0); + } + return 1; + } + return 0; +} + +s32 func_843732B8(void) { + if (D_843C523C->unk_0C == 0) { + func_84373018(D_84390010[!D_84390240.unk_00->unk_2C]); + } + + if (D_843C5238->unk_0C == 0) { + func_84373018(D_84390010[D_84390240.unk_00->unk_2C]); + } + + if ((D_843C5238->unk_0C != 0) && (D_843C523C->unk_0C != 0) && (D_843C5238->unk_12 == 0)) { + func_84372ED0(D_84390010[D_84390240.unk_00->unk_2C]); + return 0; + } else if ((D_843C5238->unk_0C != 0) && (D_843C523C->unk_0C != 0) && (D_843C5238->unk_15 & 0x18) && + (D_843C5238->unk_0E == 0)) { + func_84372C40(D_84390010[D_84390240.unk_00->unk_2C]); + return 0; + } else if ((D_843C5238->unk_0C != 0) && (D_843C523C->unk_0C != 0) && (D_843C5238->unk_4D & 0x80) && + (D_843C5238->unk_10 == 0)) { + func_84372D88(D_84390010[D_84390240.unk_00->unk_2C]); + return 0; + } +} + +void func_8437345C(void) { + unk_D_800FCB18* sp1C = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654.unk_38; + unk_D_800FCB18* sp18 = &D_84390010[!D_84390240.unk_00->unk_2C]->unk_654.unk_38; + unk_D_84390010_654* ptr1 = &D_84390010[0]->unk_654; + unk_D_84390010_654* ptr2 = &D_84390010[1]->unk_654; + + ptr1->unk_2A = 0; + ptr2->unk_2A = 0; + + D_843C4E44 = 1; + D_843C4E45 = 1; + + D_84390240.unk_00->unk_1A = 0; + + D_84390240.unk_00->unk_4C = 0; + D_84390240.unk_00->unk_48 = 0; + + sp1C->unk_12 = 0xFFFF; + sp18->unk_12 = 0xFFFF; + + D_843C4DA0 = 0; + + func_84317810(); + func_84370ADC(D_84390010[0]); + func_84370ADC(D_84390010[1]); + + D_843C5238 = sp1C; + D_843C523C = sp18; + func_84372670(); + func_8437176C(); + + if (D_84390288 == 0) { + func_843732B8(); + } +} + +void func_84373570(unk_D_84390010* arg0) { + unk_D_84390010_654* sp24; + unk_D_84390010_654* sp20; + unk_D_800FCB18* ptr1; + unk_D_800FCB18* ptr2; + + ptr1 = &arg0->unk_654.unk_38; + + sp24 = &D_84390010[0]->unk_654; + sp20 = &D_84390010[1]->unk_654; + + ptr2 = &D_84390010[func_84307F00(arg0) == 0]->unk_654.unk_38; + + sp24->unk_2A = 0; + sp20->unk_2A = 0; + ptr1->unk_12 = 0xFFFF; + ptr2->unk_12 = 0xFFFF; + + D_843C4E44 = 1; + D_843C4E45 = 1; + + D_84390240.unk_00->unk_48 = 0; + D_84390240.unk_00->unk_4C = 0; + + D_843C5238 = ptr1; + D_843C523C = ptr2; + + func_8436FA80(arg0); + func_8000E88C(&arg0->unk_448.unk_00, 0.0f, 0.0f, 0.0f); + func_8000E88C(&arg0->unk_448.unk_0C, 0.0f, 0.0f, 0.0f); + func_84370B7C(arg0); + + if (arg0 == D_84390010[0]) { + func_8436F9D8(0, 1); + } else { + func_8436F9D8(1, 0); + } +} diff --git a/src/fragments/62/fragment62_35DF70.c b/src/fragments/62/fragment62_35DF70.c index f6f937d..ad9958e 100644 --- a/src/fragments/62/fragment62_35DF70.c +++ b/src/fragments/62/fragment62_35DF70.c @@ -1,77 +1,1136 @@ -#include "global.h" +#include "fragment62.h" +#include "src/2E110.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_843736B0.s") +typedef void (*func_D_8438AE50)(void); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_84373754.s") +static const char D_8438DC80[] = "は\nこんらんした"; +static const char D_8438DC90[] = "SP %d\n"; +static const char D_8438DC98[] = "index %d step %d\n"; +static const char D_8438DCAC[] = "index %d step %d\n"; +static const char D_8438DCC0[] = "index %d\n"; +static const char D_8438DCCC[] = "paramStep %d index %d step %d\n"; +static const char D_8438DCEC[] = "\n%%%%%%%%%%%%%%%%%%%%%%%\n"; +static const char D_8438DD08[] = "INDEX %d WARIKOMI %d\n"; +static const char D_8438DD20[] = "%%%%%%%%%%%%%%%%%%%%%%%\n\n"; +static const char D_8438DD3C[] = "FAIL\n"; +static const char D_8438DD44[] = "index %d\n"; +static const char D_8438DD50[] = "index %d\n"; +static const char D_8438DD5C[] = "FAIL\n"; +static const char D_8438DD64[] = "FAIL2\n"; +static const char D_8438DD6C[] = "FAIL3\n"; +static const char D_8438DD74[] = "offp->count1 %d\n"; +static const char D_8438DD88[] = "\n\n"; +static const char D_8438DD8C[] = "******** spAttackMain ********\n"; +static const char D_8438DDAC[] = "!!!! SPATTACK Num %d!!!!\n"; +static const char D_8438DDC8[] = "******** spAttackMainEnd ********\n"; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_84373A30.s") +static char* D_8438AE50 = D_8438DC80; +static func_D_8438AE50 D_8438AE54[] = { + func_84373754, func_84373A30, func_84373D04, func_84373E60, func_84373E60, func_84373E60, func_84373E24, + func_84373D04, NULL, func_843744F0, func_843744F0, func_843744F0, func_843744F0, func_843744F0, + func_843744F0, func_84375D78, NULL, func_8437483C, func_8437483C, func_8437483C, func_8437483C, + func_8437483C, func_8437483C, func_84375DA4, func_84375E6C, func_84374C9C, func_84374D08, func_84374D58, + func_84374E08, func_84374E08, func_84374EE4, func_84373754, func_84373A30, func_84373E60, func_84373E60, + func_84373E60, func_84374EE4, func_84374FD4, func_84375038, NULL, NULL, func_843751F8, + func_84375038, func_84374E08, NULL, func_843752C0, func_84375384, func_84375424, func_843755E8, + func_843744F0, func_843744F0, func_843744F0, func_843744F0, func_843744F0, func_843744F0, func_8437600C, + func_84376258, func_8437483C, func_8437483C, func_8437483C, func_8437483C, func_8437483C, func_8437483C, + func_843765E8, func_843765E8, func_84373A30, func_84375700, func_8437483C, func_8437483C, func_8437483C, + func_8437483C, func_8437483C, func_8437483C, func_8437483C, func_8437483C, func_84375508, func_84374E08, + NULL, func_84375894, func_843759C4, func_843759DC, func_843759F4, NULL, func_84375B1C, + func_84375C24, func_84375C60, NULL, +}; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_84373D04.s") +u16 func_843736B0(u16* arg0, u16 arg1, u8 arg2) { + *arg0 = (arg1 * D_8438ACB8[arg2 - 1].unk_00) / D_8438ACB8[arg2 - 1].unk_01; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_84373E24.s") + if (*arg0 == 0) { + *arg0 = 1; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_84373E60.s") + if (*arg0 > 999) { + *arg0 = 999; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_843741C4.s") + return *arg0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_843744F0.s") +void func_84373754(void) { + s32 sp24; + s32 var_v1; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_8437483C.s") + D_84390240.unk_00->unk_48 = 0x16; + sp24 = D_843C523C->unk_4D & 0x20; + D_843C523C->unk_4D &= ~0x20; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_84374C9C.s") + if (sp24 == 0) { + if (D_843C523C->unk_15 & 7) { + D_843C4E44 = 0; + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, -0x80); + return; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_84374D08.s") + if (D_843C523C->unk_15 == 0) { + func_843708CC(); + if ((D_843C4DA4 == 0) && + ((func_84308BD0(D_84390010[!D_84390240.unk_00->unk_2C]) == 0) || (D_8438AC60[0] == 2))) { + goto block_9; + } + } + D_843C4DC4 = 0; + D_843C4DA4 = 1; + D_843C4E44 = 0; + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, -0x7F); + return; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_84374D58.s") +block_9: + if ((func_84308BD0(D_84390010[!D_84390240.unk_00->unk_2C]) != 0) && (D_8438AC60[0] != 2)) { + D_843C4E44 = 0; + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, -0x7F); + if ((sp24 != 0) && (D_8438AC60[0] == 1)) { + D_843C523C->unk_4D |= 0x20; + } + } else { + do { + if (D_8438AC60[0] == 2) { + var_v1 = func_8436F6D8() & 7; + } else { + var_v1 = func_8436F6D8() & 3; + } + } while (var_v1 == 0); + D_843C4DA4 = 0; + D_843C523C->unk_15 = var_v1; + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, -0x7E); + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_84374E08.s") +void func_84373A30(void) { + char* sp1C = D_843901A0->unk_088; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_84374EE4.s") + if (!(D_843C523C->unk_4D & 0x10) && (D_843C523C->unk_15 == 0) && (D_843C523C->unk_16[6] != 3) && + (D_843C523C->unk_16[7] != 3)) { + switch (D_843C5238->unk_44.unk_01) { + case 2: + if (D_84390240.unk_00->unk_48 != 0x18) { + D_84390240.unk_00->unk_48 = 0; + sp1C = D_843901A0->unk_208; + } else { + sp1C = D_843901A0->unk_308; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_84374FD4.s") + if (func_8436F6D8() >= 0x34) { + return; + } + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_84375038.s") + case 33: + D_84390240.unk_00->unk_48 = 0; + sp1C = D_843901A0->unk_208; + if (func_8436F6D8() >= 0x67) { + return; + } + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_843751F8.s") + default: + D_84390240.unk_00->unk_48 = 0x16; + D_843C4DEC = 0xA; + func_843708CC(); + if (D_843C4DA4 != 0) { + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(sp1C, -0x7D); + return; + } + break; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_843752C0.s") + D_843C523C->unk_15 |= 8; + if (D_843C5238->unk_44.unk_00 == 0x5C) { + D_843C523C->unk_4E |= 1; + D_843C523C->unk_51 = 0; + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(sp1C, -0x7C); + } else { + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(sp1C, -0x7B); + } + } else if (D_843C5238->unk_44.unk_01 == 0x42) { + if (D_84390240.unk_00->unk_48 != 0x18) { + D_843C4DA4 = 1; + D_84390240.unk_00->unk_48 = 0x16; + D_843C4E44 = 0; + } + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(sp1C, -0x7A); + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_84375384.s") +void func_84373D04(void) { + D_843C4DC4 /= 2; + if (D_843C4DC4 == 0) { + D_843C4DC4 = 1; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_84375424.s") + if (D_843C5238->unk_28 < D_843C5238->unk_0C + D_843C4DC4) { + D_843C5238->unk_0C = D_843C5238->unk_28; + } else { + D_843C5238->unk_0C += D_843C4DC4; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_84375508.s") + if (D_843C5238->unk_44.unk_01 == 8) { + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_208, -0x79); + } else { + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_208, -0x78); + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_843755E8.s") +void func_84373E24(void) { + D_84390240.unk_00->unk_48 = 0x1E; + D_843C5238->unk_0C = 0; + D_843C5238->unk_15 = 0; + D_843C5238->unk_4D &= ~0x80; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_84375700.s") +void func_84373E60(void) { + unk_D_800FCB18* temp_a2 = &D_84390010[!D_84390240.unk_00->unk_2C]->unk_654.unk_38; + unk_D_84390010_654* temp_a0 = &D_84390010[!D_84390240.unk_00->unk_2C]->unk_654; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_84375894.s") + if (D_843C523C->unk_4D & 0x10) { + return; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_843759C4.s") + if (D_843C523C->unk_15 != 0) { + if ((D_843C523C->unk_15 & 0x20) && (D_843C5238->unk_44.unk_03 == 0x14)) { + D_843C523C->unk_15 = 0; + if (temp_a0->unk_14 != 4) { + temp_a2->unk_5A = temp_a2->unk_1F[temp_a0->unk_0C]; + } else { + temp_a0->unk_14 = 0; + temp_a0->unk_0C = 0; + temp_a2->unk_5A = 0xA5; + } + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, -0x77); + } + return; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_843759DC.s") + if ((D_843C523C->unk_16[6] != (*D_843C5238).unk_44.unk_03) && + (D_843C523C->unk_16[7] != (*D_843C5238).unk_44.unk_03)) { + if ((D_843C5238->unk_44.unk_01 < 7) || ((D_8438AC60[0] != 2) && (D_843C5238->unk_44.unk_00 == 0x3B))) { + if (func_8436F6D8() >= 0x1A) { + return; + } + } else if (func_8436F6D8() >= 0x4D) { + return; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_843759F4.s") + switch (D_843C5238->unk_44.unk_01) { + case 4: + case 34: + D_843C523C->unk_15 = 0x10; + func_84370B44(D_84390010[!D_84390240.unk_00->unk_2C]); + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_208, -0x76); + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_84375B1C.s") + case 5: + case 35: + if (func_84308A4C(D_84390010[!D_84390240.unk_00->unk_2C]) == 0) { + D_843C523C->unk_4D &= ~0x20; + D_843C523C->unk_15 = 0x20; + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_208, -0x75); + } + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_84375C24.s") + case 6: + case 36: + D_843C523C->unk_15 = 0x40; + func_84370B0C(D_84390010[!D_84390240.unk_00->unk_2C]); + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_208, -0x74); + break; + } + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_84375C60.s") +void func_843741C4(void) { + s32 sp2C; + s32 sp28; + s32 sp24; + s32 var_a3; + u16* sp1C; + u16* sp18; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_84375D78.s") + D_84390240.unk_00->unk_4C = 0xA; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_84375DA4.s") + var_a3 = 1; + sp24 = D_843C5238->unk_44.unk_01 - 0xA; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_84375E6C.s") + if (sp24 >= 8) { + var_a3 = 2; + sp24 -= 0x28; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_8437600C.s") + if (D_843C5238->unk_5C[sp24] != 0xD) { + D_843C5238->unk_5C[sp24] += var_a3; + if (D_843C5238->unk_5C[sp24] >= 0xE) { + D_843C5238->unk_5C[var_a3] = 0xD; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_84376258.s") + sp28 = 0; + sp2C = 0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_843765E8.s") + if (sp24 < 4) { + switch (sp24) { + case 0: + sp18 = &D_843C5238->unk_38; + sp1C = &D_843C5238->unk_2A; + sp2C = 1; + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_8437670C.s") + case 1: + sp18 = &D_843C5238->unk_3A; + sp1C = &D_843C5238->unk_2C; + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_35DF70/func_84376768.s") + case 2: + sp18 = &D_843C5238->unk_3C; + sp1C = &D_843C5238->unk_2E; + sp28 = 1; + break; + + case 3: + sp18 = &D_843C5238->unk_3E; + sp1C = &D_843C5238->unk_30; + break; + } + + if (*sp1C != 0x3E7) { + *sp1C = (*sp18 * D_8438ACB8[D_843C5238->unk_5C[sp24] - 1].unk_00) / + D_8438ACB8[D_843C5238->unk_5C[sp24] - 1].unk_01; + if (*sp1C >= 0x3E8) { + *sp1C = 0x3E7; + } + } else { + goto block_29; + } + } + + if (D_843C5238->unk_44.unk_00 == 0x6B) { + D_843C5238->unk_56 = 1; + } + + if (var_a3 == 2) { + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_2C8, sp24 + 0x8D); + } else { + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_2C8, sp24 + 0x93); + } + + if ((sp28 != 0) || (D_8438AC60[0] != 1)) { + func_84370B0C(D_84390010[!D_84390240.unk_00->unk_2C]); + } + + if ((sp2C != 0) || (D_8438AC60[0] != 1)) { + func_84370B44(D_84390010[!D_84390240.unk_00->unk_2C]); + } + } else { + block_29: + func_843179F4(D_843901A0->unk_2C8, -0x67); + } +} + +void func_843744F0(void) { + s32 sp2C; + s32 sp28; + s32 sp24; + s32 var_a3; + u16* sp1C; + u16* sp18; + + if (D_843C5238->unk_44.unk_00 == 0x6E) { + D_84390240.unk_00->unk_48 = 0x26; + } else { + D_84390240.unk_00->unk_48 = 7; + } + + var_a3 = 1; + sp24 = D_843C5238->unk_44.unk_01 - 0xA; + if (sp24 >= 8) { + var_a3 = 2; + sp24 -= 0x28; + } + + if (D_843C5238->unk_5C[sp24] != 0xD) { + D_843C5238->unk_5C[sp24] += var_a3; + if (D_843C5238->unk_5C[sp24] >= 0xE) { + D_843C5238->unk_5C[sp24] = 0xD; + } + + sp28 = 0; + sp2C = 0; + + if (sp24 < 4) { + switch (sp24) { + case 0: + sp18 = &D_843C5238->unk_38; + sp1C = &D_843C5238->unk_2A; + sp2C = 1; + break; + + case 1: + sp18 = &D_843C5238->unk_3A; + sp1C = &D_843C5238->unk_2C; + break; + + case 2: + sp18 = &D_843C5238->unk_3C; + sp1C = &D_843C5238->unk_2E; + sp28 = 1; + break; + + case 3: + sp18 = &D_843C5238->unk_3E; + sp1C = &D_843C5238->unk_30; + break; + } + + if (*sp1C != 0x3E7) { + *sp1C = (*sp18 * D_8438ACB8[D_843C5238->unk_5C[sp24] - 1].unk_00) / + D_8438ACB8[D_843C5238->unk_5C[sp24] - 1].unk_01; + if (*sp1C >= 0x3E8) { + *sp1C = 0x3E7; + } + } else { + goto block_32; + } + } + + if (D_843C5238->unk_44.unk_00 == 0x6B) { + D_843C5238->unk_56 = 1; + } + + if (var_a3 == 2) { + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, sp24 + 0x8D); + } else { + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, sp24 + 0x93); + } + + if ((sp28 != 0) || (D_8438AC60[0] != 1)) { + func_84370B0C(D_84390010[D_84390240.unk_00->unk_2C]); + } + + if ((sp2C != 0) || (D_8438AC60[0] != 1)) { + func_84370B44(D_84390010[D_84390240.unk_00->unk_2C]); + } + } else { + block_32: + D_843C4E45 = 0; + func_843179F4(D_843901A0->unk_088, -0x67); + } +} + +void func_8437483C(void) { + s32 sp2C; + s32 sp28; + s32 sp24; + s32 sp20; + u16* sp1C; + u16* sp18; + + if (D_843C5238->unk_44.unk_01 < 0x44) { + D_84390240.unk_00->unk_48 = 0x1A; + } else { + D_84390240.unk_00->unk_1A = 3; + } + + if (D_843C523C->unk_4D & 0x10) { + goto end; + } + + sp24 = D_843C5238->unk_44.unk_01; + sp20 = 1; + + if (sp24 >= 0x44) { + if (func_8436F6D8() < 0x55) { + sp24 -= 0x44; + goto block_14; + } + } else { + func_843708CC(); + + if (D_843C4DA4 != 0) { + goto end; + } + + if (D_843C523C->unk_4C & 0x40) { + goto end; + } + + sp24 -= 0x12; + if (sp24 >= 9) { + sp20 = 2; + sp24 -= 0x28; + } + + block_14: + if (D_843C523C->unk_5C[sp24] != 1) { + D_843C523C->unk_5C[sp24] -= sp20; + if (D_843C523C->unk_5C[sp24] <= 0) { + D_843C523C->unk_5C[sp24] = 1; + } + + sp28 = 0; + sp2C = 0; + + if (sp24 < 4) { + switch (sp24) { + case 0: + sp2C = 1; + sp18 = &D_843C523C->unk_38; + sp1C = &D_843C523C->unk_2A; + break; + + case 1: + sp18 = &D_843C523C->unk_3A; + sp1C = &D_843C523C->unk_2C; + break; + + case 2: + sp28 = 1; + sp18 = &D_843C523C->unk_3C; + sp1C = &D_843C523C->unk_2E; + break; + + case 3: + sp18 = &D_843C523C->unk_3E; + sp1C = &D_843C523C->unk_30; + break; + } + + if (*sp1C != 1) { + *sp1C = (*sp18 * D_8438ACB8[D_843C523C->unk_5C[sp24] - 1].unk_00) / + D_8438ACB8[D_843C523C->unk_5C[sp24] - 1].unk_01; + if (*sp1C == 0) { + *sp1C = 1; + } + } else { + goto block_39; + } + } + + if (sp20 == 2) { + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_208, sp24 + 0x9A); + } else { + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_208, sp24 + 0xA0); + } + + if ((sp28 != 0) || (D_8438AC60[0] != 1)) { + func_84370B0C(D_84390010[!D_84390240.unk_00->unk_2C]); + } + + if ((sp2C != 0) || (D_8438AC60[0] != 1)) { + func_84370B44(D_84390010[!D_84390240.unk_00->unk_2C]); + } + return; + } + } + +block_39: + if (D_843C5238->unk_44.unk_01 < 0x44) { + D_843C4E44 = 0; + D_843C4E45 = 0; + func_843179F4(D_843901A0->unk_088, -0x5A); + return; + } + +end: + if (D_843C5238->unk_44.unk_01 < 0x44) { + D_843C4E44 = 0; + D_843C4E45 = 0; + if (D_843C4DA9 == 0) { + func_843179F4(D_843901A0->unk_088, -0x59); + } + } else { + D_843C4E45 = 0; + } +} + +void func_84374C9C(void) { + D_84390240.unk_00->unk_48 = 0x1B; + D_843C5238->unk_44.unk_01 = 0; + D_843C5238->unk_4C |= 1; + D_843C5238->unk_54 = 0; + D_843C5238->unk_4F = (func_8436F6D8() & 1) + 2; +} + +void func_84374D08(void) { + D_843C5238->unk_44.unk_01 = 0; + D_843C5238->unk_4C |= 2; + D_843C5238->unk_4F = (func_8436F6D8() & 1) + 2; +} + +void func_84374D58(void) { + if (D_843C5238->unk_44.unk_00 == 0x64) { + D_84390240.unk_00->unk_48 = 0x27; + func_843179F4(D_843901A0->unk_088, -0x53); + return; + } + D_84390240.unk_00->unk_48 = 8; + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, -0x52); +} + +void func_84374E08(void) { + s32 var_v1; + + if (!(D_843C5238->unk_4C & 4)) { + D_843C5238->unk_4C |= 4; + + switch (D_843C5238->unk_44.unk_01) { + case 0x4D: + D_843C5238->unk_44.unk_01 = 2; + + case 0x2C: + D_843C5238->unk_54 = 2; + D_843C5238->unk_4F = D_843C5238->unk_54; + break; + + default: + var_v1 = func_8436F6D8() & 3; + if (var_v1 >= 2) { + var_v1 = func_8436F6D8() & 3; + } + D_843C5238->unk_4F = D_843C5238->unk_54 = var_v1 + 2; + break; + } + + D_8439022C = D_843C5238->unk_54 - 1; + D_84390240.unk_00->unk_48 = 0x18; + } +} + +void func_84374EE4(void) { + if (!(D_843C523C->unk_4D & 0x10)) { + if (D_8438AC60[0] == 1) { + if (D_843C5238->unk_44.unk_01 == 0x1F) { + if (func_8436F6D8() >= 0x1A) { + return; + } + } else if (func_8436F6D8() >= 0x4D) { + return; + } + } else { + D_843C523C->unk_4D &= ~0x20; + if (D_843C5238->unk_44.unk_01 == 0x1F) { + if (func_8436F6D8() >= 0x1A) { + return; + } + } else if (func_8436F6D8() >= 0x4D) { + return; + } + } + D_843C523C->unk_4C |= 8; + } +} + +void func_84374FD4(void) { + D_843C4DC4 = 0; + D_843C4DA5 = 0xFF; + if (D_843C5238->unk_2E < D_843C523C->unk_2E) { + D_843C4DA4 = 1; + return; + } + D_843C4DC4 = 0xFFFF; + D_843C4DA5 = 2; +} + +void func_84375038(void) { + D_84390240.unk_00->unk_48 = 0xE; + D_843C5238->unk_4C |= 0x10; + + if ((D_843C5238->unk_44.unk_01 == 0x2B) || (D_843C5238->unk_44.unk_00 == 0x5B)) { + D_843C5238->unk_4C |= 0x40; + if (D_843C5238->unk_44.unk_00 == 0x5B) { + D_84390240.unk_00->unk_48 = 0xD; + } + + if (D_843C5238->unk_44.unk_01 == 0x2B) { + D_84390240.unk_00->unk_48 = 0xC; + } + } + + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + + switch (D_843C5238->unk_44.unk_00) { + case 0xD: + func_843179F4(D_843901A0->unk_0C8, -0x51); + break; + + case 0x4C: + func_843179F4(D_843901A0->unk_0C8, -0x50); + break; + + case 0x82: + func_843179F4(D_843901A0->unk_0C8, -0x4F); + break; + + case 0x8F: + func_843179F4(D_843901A0->unk_0C8, -0x4E); + break; + + case 0x13: + func_843179F4(D_843901A0->unk_148, -0x4D); + break; + + case 0x5B: + func_843179F4(D_843901A0->unk_148, -0x4C); + break; + } +} + +void func_843751F8(void) { + s32 var_v1; + + if (!(D_843C5238->unk_4C & 0x20) && ((D_8438AC60[0] != 1) || (D_843C5238->unk_44.unk_03 != 0) || + ((D_843C523C->unk_16[6] != 8) && (D_843C523C->unk_16[7] != 8)))) { + D_843C523C->unk_4D &= 0xFFDF; + D_843C5238->unk_4C |= 0x20; + var_v1 = func_8436F6D8() & 3; + if (var_v1 >= 2) { + var_v1 = func_8436F6D8() & 3; + } + D_843C5238->unk_4F = var_v1 + 1; + } +} + +void func_843752C0(void) { + if (D_843C5238->unk_4D & 2) { + D_84390240.unk_00->unk_48 = 7; + func_843179F4(D_843901A0->unk_088, -0x4B); + return; + } + D_84390240.unk_00->unk_48 = 7; + D_843C5238->unk_4D |= 2; + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, -0x4A); +} + +void func_84375384(void) { + D_84390240.unk_00->unk_48 = 7; + if (D_843C5238->unk_4D & 4) { + func_843179F4(D_843901A0->unk_088, -0x49); + return; + } + D_843C5238->unk_4D |= 4; + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, -0x48); +} + +void func_84375424(void) { + s32 var_v1; + + D_843C5238->unk_12 = D_843C5238->unk_0C; + + if (D_843C5238->unk_44.unk_00 == 0xA5) { + var_v1 = D_843C4DC4 >> 1; + } else { + var_v1 = D_843C4DC4 >> 2; + } + + if (var_v1 == 0) { + var_v1 += 1; + } + + if (D_843C5238->unk_12 < var_v1) { + D_843C5238->unk_12 = 0; + } else { + D_843C5238->unk_12 -= var_v1; + } + + D_843C523C->unk_12 = D_843C523C->unk_0C; + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_408, -0x47); + D_84390240.unk_00->unk_48 = 9; +} + +void func_84375508(void) { + if (!(D_843C523C->unk_4D & 0x10) && (func_8436F6D8() < 0x1A) && !(D_843C523C->unk_4C & 0x80)) { + D_84390240.unk_00->unk_1A = 3; + D_843C4E45 = 0; + D_843C523C->unk_4C |= 0x80; + D_843C523C->unk_50 = (func_8436F6D8() & 3) + 2; + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_208, -0x46); + } +} + +void func_843755E8(void) { + D_84390240.unk_00->unk_48 = 0x16; + D_843C4E44 = 0; + + if (!(D_843C523C->unk_4D & 0x10)) { + func_843708CC(); + if ((D_843C4DA4 == 0) && !(D_843C523C->unk_4C & 0x80)) { + D_843C4E44 = 1; + D_843C523C->unk_4C |= 0x80; + D_843C523C->unk_50 = (func_8436F6D8() & 3) + 2; + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, -0x45); + return; + } + } + + if (D_843C4DA9 == 0) { + func_843179F4(D_843901A0->unk_088, -0x44); + } +} + +void func_84375700(void) { + D_84390240.unk_00->unk_48 = 0x16; + if (D_843C523C->unk_15 == 0) { + if ((D_843C5238->unk_44.unk_03 != 0x17) || ((D_843C523C->unk_16[6] != 4) && (D_843C523C->unk_16[7] != 4))) { + func_843708CC(); + if (D_843C4DA4 == 0) { + D_843C523C->unk_15 |= 0x40; + func_84370B0C(D_84390010[!D_84390240.unk_00->unk_2C]); + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, -0x43); + return; + } + } else { + D_84390240.unk_00->unk_48 = 8; + D_843C4E44 = 0; + func_843179F4(D_843901A0->unk_088, -0x42); + return; + } + } + + D_84390240.unk_00->unk_48 = 8; + D_843C4E44 = 0; + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, -0x41); +} + +void func_84375894(void) { + s32 temp_v1; + + D_84390240.unk_00->unk_48 = 0x1C; + if (D_843C5238->unk_4D & 0x10) { + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, -0x2A); + return; + } + + temp_v1 = D_843C5238->unk_28 >> 2; + if (temp_v1 >= D_843C5238->unk_0C) { + func_843179F4(D_843901A0->unk_088, -0x29); + return; + } + + D_84390240.unk_00->unk_48 = 0x19; + D_843C5238->unk_59 = temp_v1; + D_843C5238->unk_0C -= temp_v1; + D_843C5238->unk_4D |= 0x10; + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, -0x28); +} + +void func_843759C4(void) { + D_843C5238->unk_4D |= 0x20; +} + +void func_843759DC(void) { + D_843C5238->unk_4D |= 0x40; +} + +void func_843759F4(void) { + unk_D_84390010_654* sp24 = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654; + s32 var_t0; + u8 temp_v0; + + D_84390240.unk_00->unk_48 = 7; + func_843708CC(); + + if ((D_843C4DA4 == 0) && !(D_843C523C->unk_4C & 0x40)) { + D_843C4DAA = 1; + do { + var_t0 = func_8430C414(4); + if (var_t0 >= 4) { + var_t0 = 3; + } + temp_v0 = D_843C523C->unk_1F[var_t0]; + } while (temp_v0 == 0); + + D_843C5238->unk_1F[sp24->unk_0C] = temp_v0; + func_8002D5D4(0x1E, func_8002D7C0(NULL, 0, D_843900B8, D_843C523C->unk_1F[var_t0] - 1)); + func_843179F4(D_843901A0->unk_088, -0x40); + return; + } + + func_843179F4(D_843901A0->unk_088, -0x3F); +} + +void func_84375B1C(void) { + func_843708CC(); + + if ((D_843C4DA4 == 0) && (D_843C523C->unk_16[6] != 0x16) && (D_843C523C->unk_16[7] != 0x16)) { + if (!(D_843C523C->unk_4D & 0x80)) { + D_843C523C->unk_4D |= 0x80; + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, -0x3E); + return; + } + } + + D_84390240.unk_00->unk_48 = 8; + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, -0x3D); +} + +void func_84375C24(void) { + D_84390240.unk_00->unk_48 = 7; + func_843179F4(D_843901A0->unk_088, -0x3C); +} + +void func_84375C60(void) { + s32 sp24; + s32 temp_v1; + + func_843708CC(); + + if (D_843C4DA4 == 0) { + D_84390240.unk_00->unk_48 = 0x20; + if (D_843C523C->unk_52 == 0) { + do { + sp24 = func_8436F6D8() & 3; + } while (D_843C523C->unk_1F[sp24] == 0); + temp_v1 = (func_8436F6D8() & 7) + 1; + D_843C523C->unk_52 = (sp24 * 0x10) + temp_v1; + D_843C523C->unk_57 = D_843C523C->unk_1F[sp24]; + func_8002D5D4(0x1E, func_8002D7C0(NULL, 0, D_843900B8, D_843C523C->unk_57 - 1)); + func_843179F4(D_843901A0->unk_088, -0x3B); + return; + } + } + + D_84390240.unk_00->unk_48 = 8; + func_843179F4(D_843901A0->unk_088, -0x3A); +} + +void func_84375D78(void) { + func_843179F4(D_843901A0->unk_088, -0x39); +} + +void func_84375DA4(void) { + D_84390240.unk_00->unk_48 = 7; + if (!(D_843C523C->unk_4C & 0x40)) { + D_843C5238->unk_16[6] = D_843C523C->unk_16[6]; + D_843C5238->unk_16[7] = D_843C523C->unk_16[7]; + func_8002D5D4(0x19, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, -0x38); + } else { + func_843179F4(D_843901A0->unk_088, -0x37); + } +} + +void func_84375E6C(void) { + s32 i; + unk_D_800FCB18* temp_t0 = &D_84390010[0]->unk_654.unk_38; + unk_D_800FCB18* temp_a3 = &D_84390010[1]->unk_654.unk_38; + + D_84390240.unk_00->unk_48 = 0x1D; + + for (i = 0; i < 8; i++) { + temp_t0->unk_5C[i] = 7; + temp_a3->unk_5C[i] = 7; + } + + temp_t0->unk_2A = temp_t0->unk_38; + temp_t0->unk_2C = temp_t0->unk_3A; + temp_t0->unk_2E = temp_t0->unk_3C; + temp_t0->unk_30 = temp_t0->unk_3E; + temp_a3->unk_2A = temp_a3->unk_38; + temp_a3->unk_2C = temp_a3->unk_3A; + temp_a3->unk_2E = temp_a3->unk_3C; + temp_a3->unk_30 = temp_a3->unk_3E; + + if ((D_843C523C->unk_15 & 0x27) && !(D_843C523C->unk_4C & 0x10)) { + D_843C523C->unk_5A = 0xFE; + } + + D_843C523C->unk_15 = 0; + // clang-format off + if (D_8438AC60[0] == 1) { D_843C5238->unk_15 = 0; } + // clang-format on + + temp_t0->unk_52 = temp_a3->unk_52 = 0; + temp_t0->unk_57 = temp_a3->unk_57 = 0; + temp_t0->unk_4C &= ~0x80; + temp_t0->unk_4D &= 0x78; + temp_t0->unk_4E &= 8; + temp_a3->unk_4C &= ~0x80; + temp_a3->unk_4D &= 0x78; + temp_a3->unk_4E &= 8; + D_843C5238->unk_56 = 0; + D_843C523C->unk_56 = 0; + + func_843179F4(D_843901A0->unk_088, -0x36); +} + +void func_8437600C(void) { + u8 temp_v0; + unk_D_84390010_654* temp_a1; + unk_D_800FCB18* temp_a2; + + temp_a1 = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654; + temp_a2 = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654.unk_38; + + D_84390240.unk_00->unk_48 = 0x15; + if (D_843C5238->unk_0C != D_843C5238->unk_28) { + if (D_843C5238->unk_44.unk_00 == 0x9C) { + temp_v0 = D_843C5238->unk_15; + + D_843C5238->unk_15 = 2; + temp_a2->unk_16[temp_a1->unk_08 + temp_a1->unk_2B * 3] = 2; + + if (temp_v0 != 0) { + if (D_8438AC60[0] == 1) { + D_843C5238->unk_4E &= ~1; + func_843736B0(&D_843C5238->unk_2A, D_843C5238->unk_38, D_843C5238->unk_5C[0]); + func_843736B0(&D_843C5238->unk_2E, D_843C5238->unk_3C, D_843C5238->unk_5C[2]); + } + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, -0x35); + } else { + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, -0x34); + } + D_843C5238->unk_0C += D_843C5238->unk_28; + } else { + D_843C5238->unk_0C += D_843C5238->unk_28 / 2; + } + + if (D_843C5238->unk_28 < D_843C5238->unk_0C) { + D_843C5238->unk_0C = D_843C5238->unk_28; + } + + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_148, -0x33); + return; + } + + D_84390240.unk_00->unk_48 = 0x1C; + D_843C4DA4 = 1; + func_843179F4(D_843901A0->unk_088, -0x32); +} + +void func_84376258(void) { + s32 i; + unk_D_84390010_654* sp20; + unk_D_84390010_654* sp1C; + unk_D_800FCB18* ptr; + + sp20 = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654; + sp1C = &D_84390010[!D_84390240.unk_00->unk_2C]->unk_654; + + if ((D_8438AC60[0] == 1) && ((((D_843C523C->unk_4E & 8) == 0) && (D_843C523C->unk_0B == 0x84)) || + (((D_843C523C->unk_4E & 8) != 0) && (sp1C->unk_BE == 0x84)))) { + D_84390240.unk_00->unk_48 = 0x1C; + func_8002D5D4(0x1B, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, -0x2F); + return; + } + + ptr = D_843C5238; + if (!(ptr->unk_4C & 0x40) && + ((D_8438AC60[0] != 1) || (D_843C523C->unk_1F[0] != 0x90) || (D_843C523C->unk_1F[1] != 0))) { + D_84390240.unk_00->unk_48 = 0xF; + func_8002D5D4(0x1B, func_8430862C(D_84390010[!D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_148, -0x31); + D_843C5238->unk_4E |= 8; + + if (D_843C523C->unk_4E & 8) { + sp20->unk_BE = sp1C->unk_BE; + } else { + sp20->unk_BE = D_843C523C->unk_0B; + } + + D_843C5238->unk_16[6] = D_843C523C->unk_16[6]; + D_843C5238->unk_16[7] = D_843C523C->unk_16[7]; + D_843C5238->unk_1F[0] = D_843C523C->unk_1F[0]; + D_843C5238->unk_1F[1] = D_843C523C->unk_1F[1]; + D_843C5238->unk_1F[2] = D_843C523C->unk_1F[2]; + D_843C5238->unk_1F[3] = D_843C523C->unk_1F[3]; + D_843C5238->unk_24 = D_843C523C->unk_24; + D_843C5238->unk_2A = D_843C523C->unk_2A; + D_843C5238->unk_2C = D_843C523C->unk_2C; + D_843C5238->unk_2E = D_843C523C->unk_2E; + D_843C5238->unk_30 = D_843C523C->unk_30; + + for (i = 0; i < 4; i++) { + if (D_843C523C->unk_1F[i] == 0) { + break; + } + D_843C5238->unk_32[i] = 5; + } + + D_843C5238->unk_38 = D_843C523C->unk_38; + D_843C5238->unk_3A = D_843C523C->unk_3A; + D_843C5238->unk_3C = D_843C523C->unk_3C; + D_843C5238->unk_3E = D_843C523C->unk_3E; + + for (i = 0; i < 8; i++) { + D_843C5238->unk_5C[i] = D_843C523C->unk_5C[i]; + } + return; + } + + D_84390240.unk_00->unk_48 = 0x1C; + func_843179F4(D_843901A0->unk_088, -0x30); +} + +void func_843765E8(void) { + D_84390240.unk_00->unk_48 = 7; + if (D_843C5238->unk_44.unk_01 == 0x40) { + if (!(D_843C5238->unk_4E & 2)) { + D_843C5238->unk_4E |= 2; + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, -0x2E); + } else { + func_843179F4(D_843901A0->unk_088, -0x2D); + } + } else if (!(D_843C5238->unk_4E & 4)) { + D_843C5238->unk_4E |= 4; + func_8002D5D4(0x19, func_8430862C(D_84390010[D_84390240.unk_00->unk_2C])); + func_843179F4(D_843901A0->unk_088, -0x2C); + } else { + func_843179F4(D_843901A0->unk_088, -0x2B); + } +} + +void func_8437670C(void) { + unk_D_800FCB18* ptr = &D_84390010[D_84390240.unk_00->unk_2C]->unk_654.unk_38; + s32 idx = ptr->unk_44.unk_01; + + if (D_8438AE54[idx - 1] != NULL) { + D_8438AE54[idx - 1](); + } +} + +void func_84376768(void) { + func_8437670C(); +} diff --git a/src/fragments/62/fragment62_361050.c b/src/fragments/62/fragment62_361050.c index 8992edf..46bcb0b 100644 --- a/src/fragments/62/fragment62_361050.c +++ b/src/fragments/62/fragment62_361050.c @@ -1,180 +1,5944 @@ -#include "global.h" +#include "fragment62.h" +#include "include/math.h" +#include "src/3FB0.h" +#include "src/22630.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84376790.s") +unk_D_843C5310 D_843C5310[18]; +u8 D_843C5550[0x14]; +unk_D_843C60F0_00C* D_843C5564; +unk_D_843C5568 D_843C5568[2]; +s32 pad_D_843C60A0; +unk_D_843C60A4* D_843C60A4; +unk_D_843C60A4* D_843C60A8; +unk_D_843C60AC* D_843C60AC; +unk_D_843C60AC* D_843C60B0; +unk_D_800FCB18* D_843C60B4; +unk_D_800FCB18* D_843C60B8; +s32 D_843C60BC; +unk_D_843C60C0 D_843C60C0[2]; +u8 D_843C60E8; +unk_D_843C60F0 D_843C60F0; +u8 D_843C6138[2]; +u16 D_843C613A; +u16 D_843C613C; +u16 D_843C613E; +u16 D_843C6140; +u16 D_843C6142; +u8 D_843C6144; +unk_D_843C6148 D_843C6148; +s32 D_843C6150; +u32 D_843C6154; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_843767E4.s") +s32 D_8438AFB0 = 0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_843768D8.s") +static u8 D_8438AFB4[] = { + 0x05, 0x0D, 0x0E, 0x12, 0x19, 0x5C, 0x20, 0x22, 0x24, 0x26, 0x3D, 0x37, 0x3A, 0x3B, 0x3F, 0x06, 0x42, 0x44, 0x45, + 0x63, 0x48, 0x4C, 0x52, 0x55, 0x57, 0x59, 0x5A, 0x5B, 0x5E, 0x64, 0x66, 0x68, 0x73, 0x75, 0x76, 0x78, 0x79, 0x7E, + 0x81, 0x82, 0x87, 0x8A, 0x8F, 0x9C, 0x56, 0x95, 0x99, 0x9D, 0xA1, 0xA4, 0x0F, 0x13, 0x39, 0x46, 0x94, 0x00, +}; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84376920.s") +static u8 D_8438AFEC[] = { + 0x16, 0x49, 0x4F, 0x34, 0x35, 0x7E, 0x37, 0x6E, 0x38, 0x51, 0x6A, 0x4F, 0x28, 0x6A, 0x29, 0x10, 0x12, 0x13, 0x9E, + 0xA2, 0x77, 0x41, 0x23, 0x89, 0x55, 0x57, 0x1C, 0x9A, 0x2D, 0x28, 0x22, 0x1E, 0x20, 0x05, 0x76, 0x2F, 0x27, 0x6D, + 0x2F, 0x66, 0x30, 0x72, 0x47, 0x4E, 0x50, 0x4A, 0x93, 0x8D, 0x3C, 0x5B, 0x59, 0x06, 0x9A, 0x32, 0x38, 0x02, 0x45, + 0x2E, 0x7E, 0x91, 0x37, 0x42, 0x64, 0x86, 0x5E, 0x02, 0x43, 0x19, 0x4A, 0x23, 0x4B, 0x28, 0x5C, 0x6A, 0x58, 0x9D, + 0x34, 0x53, 0x9C, 0x85, 0x31, 0x56, 0x1F, 0x1F, 0xA1, 0x3E, 0x3A, 0x8B, 0x97, 0x80, 0x83, 0x6D, 0x7A, 0x65, 0x14, + 0x8A, 0x60, 0x0B, 0x98, 0x78, 0x99, 0x8C, 0x79, 0x7D, 0x9B, 0x88, 0x04, 0x6F, 0x7B, 0x7C, 0x1E, 0x20, 0x87, 0x84, + 0x92, 0x6C, 0x38, 0x27, 0x7F, 0x37, 0x69, 0x70, 0xA3, 0x8E, 0x09, 0x07, 0x0C, 0x24, 0x96, 0x52, 0x39, 0x90, 0x62, + 0x36, 0x2A, 0x53, 0xA0, 0x6E, 0x83, 0x6A, 0xA3, 0x13, 0x9C, 0x3B, 0x57, 0x8F, 0x23, 0x52, 0x3F, 0x5E, 0x76, +}; +static u8 D_8438B084[] = { + 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, 0x01, 0x00, 0x01, 0x03, 0x02, 0x00, 0x00, 0x01, 0x01, + 0x00, 0x02, 0x01, 0x00, 0x03, 0x02, 0x03, 0x01, 0x03, 0x03, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x02, + 0x00, 0x01, 0x01, 0x03, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; +static u8 D_8438B0BC[] = { + 0x32, 0x75, 0x66, 0x76, 0x82, +}; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84376A34.s") +static u8 D_8438B0C4[] = { + 0x63, 0x68, 0x80, 0x78, 0x14, 0x26, 0x99, 0x64, 0x5C, 0x24, 0x9C, 0x22, 0x3F, 0x53, 0x23, 0xA4, 0x66, +}; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84376B38.s") +static u8 D_8438B0D8[] = { + 0xA, 0xB, 0xC, 0xD, 0xE, 0xF, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x32, + 0x33, 0x34, 0x35, 0x36, 0x37, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x40, 0x41, +}; +static u8 D_8438B0F4[] = { 0x27, 0x2B }; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84376B9C.s") +void func_84376790(s32 arg0, u32 arg1) { + u32 temp_a1 = (u32)_7820E0_ROM_START + arg0 * 0x48; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84376C90.s") + func_80003B30(arg1, temp_a1, temp_a1 + 0x48, 0); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84376E40.s") +void func_843767DC(void) { +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84376F68.s") +s32 func_843767E4(s32 arg0) { + s32 var_v1_1; + u8 var_v1_2; + s32 var_v1; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84377030.s") + if (arg0 <= 0) { + return 0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84377068.s") + var_v1_1 = (osGetCount() & 0xFF0) >> 4; + var_v1_2 = var_v1_1; + while (var_v1_2 > 0) { + D_843C6150 = (D_843C6150 * 0x49967AD5) + 0x3039; + if (D_843C6154 & 1) { + D_843C6154 ^= 0x8421; + } + D_843C6154 >>= 1; + var_v1_2--; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8437717C.s") + var_v1 = (D_843C6150 ^ D_843C6154) % (arg0 + 1); + if (var_v1 < 0) { + var_v1 = 0; + } + if (arg0 < var_v1) { + var_v1 = arg0; + } + return var_v1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84377280.s") +void func_843768D8(u8 arg0) { + D_843C6150 ^= (osGetCount() * arg0); + D_843C6154 = ~D_843C6150; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_843772E4.s") +u8 func_84376920(unk_D_800FCB18* arg0, unk_D_800FCB18* arg1, u8 arg2) { + s32 var_v1; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8437731C.s") + if (D_8438AC60[0] == 1) { + var_v1 = (D_80070FA0[arg0->unk_0B - 1].unk_04 + 0x4C) >> 2; + } else { + var_v1 = D_80070FA0[arg0->unk_0B - 1].unk_04 >> 1; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84377354.s") + if (D_8438AC60[0] != 1) { + if (arg0->unk_4D & 4) { + var_v1 >>= 1; + } else { + var_v1 *= 2; + } + } else if (arg0->unk_4D & 4) { + var_v1 += 0x28; + var_v1 *= 4; + } else { + var_v1 *= 2; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8437738C.s") + if ((arg2 != 2) && (arg2 != 0x4B) && (arg2 != 0x98) && (arg2 != 0xA3)) { + var_v1 >>= 1; + } else { + var_v1 *= 4; + if (var_v1 >= 0x100) { + var_v1 = 0xFF; + } + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84377430.s") + if (var_v1 >= 0x100) { + var_v1 = 0xFF; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84377550.s") + if (var_v1 <= 0) { + var_v1 = 1; + } + return var_v1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84377644.s") +u16 func_84376A34(unk_D_800FCB18* arg0, unk_D_800FCB18* arg1) { + s32 var_v0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_843776FC.s") + switch (D_843C6148.unk_01) { + case 38: + break; + + case 40: + D_843C613A = arg0->unk_0C / 2; + if (D_843C613A == 0) { + D_843C613A = 1; + } + break; + + case 41: + switch (D_843C6148.unk_00) { + case 0x45: + case 0x65: + var_v0 = arg0->unk_26; + break; + + case 0x31: + var_v0 = 0x14; + break; + + case 0x52: + var_v0 = 0x28; + break; + + default: + var_v0 = arg0->unk_26; + var_v0 = (var_v0 >> 1) + (var_v0 >> 2); + } + + D_843C613A = var_v0; + break; + + default: + if (D_843C6148.unk_02 == 0) { + return D_843C613A; + } + break; + } + + return D_843C613A; +} + +void func_84376B38(void) { + if (D_843C613A >= 2) { + D_843C613A = (D_843C613A * 0xFF) / 255; + } +} + +void func_84376B9C(unk_D_800FCB18* arg0, unk_D_800FCB18* arg1) { + unk_D_8438ACF0* var_v0; + u8 tmp1 = arg0->unk_16[6]; + u8 tmp2 = arg0->unk_16[7]; + u8 tmp11 = arg1->unk_16[6]; + u8 tmp21 = arg1->unk_16[7]; + u8 tmp3 = D_843C6148.unk_03; + + if (D_843C6148.unk_00 != 0xA5) { + if ((tmp3 == tmp1) || (tmp3 == tmp2)) { + D_843C613A += D_843C613A >> 1; + } + + var_v0 = D_8438ACF0; + while (var_v0->unk_00 != 0xFF) { + if ((var_v0->unk_00 == tmp3) && ((var_v0->unk_01 == tmp11) || (var_v0->unk_01 == tmp21))) { + D_843C613A = (D_843C613A * var_v0->unk_02) / 10; + } + var_v0++; + } + } +} + +void func_84376C90(unk_D_800FCB18* arg0, unk_D_800FCB18* arg1, u8 arg2) { + unk_D_80072B00* temp_v0 = &D_80072B00[arg2 - 1]; + + D_843C6148.unk_00 = temp_v0->unk_00; + D_843C6148.unk_01 = temp_v0->unk_01; + D_843C6148.unk_02 = temp_v0->unk_02; + D_843C6148.unk_03 = temp_v0->unk_03; + D_843C6148.unk_04 = temp_v0->unk_04; + D_843C6148.unk_05 = temp_v0->unk_05; + + D_843C613A = 0; + D_843C613C = D_843C6148.unk_02; + if (D_843C613C) { + if (D_843C6148.unk_03 < 0x14) { + D_843C6140 = arg1->unk_2C; + if (arg1->unk_4E & 4) { + D_843C6140 *= 2; + } + + if (D_843C6144 != 0) { + D_843C6140 = arg1->unk_3A; + D_843C613E = arg0->unk_38; + } else { + D_843C613E = arg0->unk_2A; + } + } else { + D_843C6140 = arg1->unk_30; + if (arg1->unk_4E & 2) { + D_843C6140 *= 2; + } + + if (D_843C6144 != 0) { + D_843C6140 = arg1->unk_3E; + D_843C613E = arg0->unk_3E; + } else { + D_843C613E = arg0->unk_30; + } + } + + if (D_843C613E & 0xFF00) { + if (D_843C6140 & 0xFF00) { + D_843C613E >>= 2; + D_843C6140 >>= 2; + if (D_843C613E == 0) { + D_843C613E = 1; + } + } + } + + D_843C6142 = arg0->unk_26; + if (D_843C6144 != 0) { + D_843C6142 *= 2; + } + } +} + +void func_84376E40(unk_D_800FCB18* arg0, unk_D_800FCB18* arg1) { + u8 tmp = D_843C6148.unk_01; + + if (tmp == 7) { + D_843C6140 >>= 1; + if (D_843C6140 == 0) { + D_843C6140 = 1; + } + } + + if (D_843C6140 == 0) { + D_843C6140 = 1; + } + + D_843C613A += (((((D_843C6142 * 2) / 5) + 2) * D_843C613C * D_843C613E) / D_843C6140) / 50; + + if (D_843C613A >= 0x3E5) { + D_843C613A = 0x3E4; + } + + if (D_843C613C != 0) { + D_843C613A += 2; + } +} + +u16 func_84376F68(unk_D_800FCB18* arg0, unk_D_800FCB18* arg1, u8 arg2, u8 arg3) { + if (func_84376920(arg0, arg1, arg2) >= (0xE6 - (D_843C5564->unk_04 / 2))) { + D_843C6144 = 1; + } else { + D_843C6144 = 0; + } + + func_84376C90(arg0, arg1, arg2); + func_84376E40(arg0, arg1); + + if (arg3 != 0) { + func_84376B9C(arg0, arg1); + } + + func_84376B38(); + return func_84376A34(arg0, arg1); +} + +void func_84377030(unk_D_843C60AC* arg0) { + u8 i; + unk_D_800FCB18* temp_v0 = &arg0->unk_12; + + arg0->unk_04 = 0; + for (i = 0; i < 6; i++) { + temp_v0->unk_5C[i] = 7; + } + + temp_v0->unk_4C = 0; + temp_v0->unk_4D = 0; + temp_v0->unk_4E = 0; +} + +s32 func_84377068(s32 arg0, s32 arg1) { + s32 var_a2; + s32 var_v0; + s32 var_v1; + + if (arg0 == 0) { + var_v1 = 0; + } else if (arg1 == 0) { + if (arg0 >= 0) { + var_a2 = 1; + } else { + var_a2 = -1; + } + var_v1 = var_a2 * 0xFF; + } else { + if (arg0 >= 0) { + var_v0 = arg0; + } else { + var_v0 = -arg0; + } + + if (arg1 >= 0) { + var_a2 = arg1; + } else { + var_a2 = -arg1; + } + + if (var_a2 < var_v0) { + if (arg0 >= 0) { + var_v0 = 1; + } else { + var_v0 = -1; + } + + if (arg1 >= 0) { + var_a2 = 1; + } else { + var_a2 = -1; + } + var_v1 = (var_a2 * var_v0) * 0xFF; + } else { + var_v1 = (arg0 * 0xFF) / arg1; + } + } + + if (var_v1 >= 0) { + var_a2 = var_v1; + } else { + var_a2 = -var_v1; + } + + if (var_a2 < 0x100) { + return var_v1; + } + + if (var_v1 >= 0) { + var_a2 = 1; + } else { + var_a2 = -1; + } + return var_a2 * 0xFF; +} + +void func_8437717C(unk_D_800AE540_0004* arg0) { + u8 i; + u8 j; + s32 temp_v0; + u8 temp_a0; + + if (arg0 == NULL) { + return; + } + + i = 0; + while (i < 18 && D_843C5550[i] > 0) { + i++; + } + + for (j = 0; j < arg0->unk_214->unk_002; j++) { + temp_v0 = i + j; + if (temp_v0 >= 18) { + break; + } + temp_a0 = arg0->unk_01C[j].unk_00.unk_00; + D_843C5550[temp_v0] = temp_a0; + func_8430255C(temp_a0, &D_843C5310[temp_v0]); + } +} + +s32 func_84377280(s32 arg0) { + s32 temp_v0 = D_843C60A8->unk_03 + D_843C60A4->unk_03; + u8 i; + + for (i = 0; i < temp_v0; i++) { + if (arg0 == D_843C5550[i]) { + return i; + } + } + + return 0; +} + +s32 func_843772E4(u8 arg0, u8 arg1) { + if (arg0 >= D_8438B084[arg1 - 1]) { + return 1; + } + return 0; +} + +u16 func_8437731C(unk_D_800FCB18* arg0) { + u16 var_v1 = arg0->unk_3C << 2; + + if (arg0->unk_15 & 0x40) { + var_v1 >>= 2; + } + + if (var_v1 == 0) { + var_v1++; + } + + return var_v1; +} + +u16 func_84377354(unk_D_800FCB18* arg0) { + u16 var_v1 = arg0->unk_3C >> 2; + + if (arg0->unk_15 & 0x40) { + var_v1 >>= 2; + } + + if (var_v1 == 0) { + var_v1++; + } + return var_v1; +} + +f32 func_8437738C(u8 arg0, unk_D_800FCB18* arg1) { + unk_D_8438ACF0* var_v0 = &D_8438ACF0[0]; + u8 temp_v1 = arg1->unk_16[6]; + u8 temp_a2 = arg1->unk_16[7]; + f32 var_fv1 = 1.0f; + + while (var_v0->unk_00 != 0xFF) { + if ((var_v0->unk_00 == arg0) && ((var_v0->unk_01 == temp_v1) || (var_v0->unk_01 == temp_a2))) { + var_fv1 *= var_v0->unk_02 / 10.0f; + } + var_v0++; + } + + return var_fv1; +} + +s32 func_84377430(u8 arg0, unk_D_843C60A4* arg1) { + u8 i; + u8 j; + u8 var_s0; + s32 var_a0; + u8 end; + + for (i = 0; i < arg1->unk_00; i++) { + if (i) { + var_s0 = arg1->unk_01[0]; + } else { + var_s0 = 0; + } + + if (arg1->unk_04[i] == arg1->unk_07[i]) { + var_a0 = arg1->unk_04[i]; + } else { + var_a0 = arg1->unk_01[i]; + } + + end = (s32)var_a0 + var_s0; + for (j = var_s0; j < end; j++) { + if ((arg1->unk_14[j].unk_12.unk_0C > 0) && (func_8437738C(arg0, &arg1->unk_14[j].unk_12) == 0.0f)) { + return 0; + } + } + } + return 1; +} + +s32 func_84377550(u8 arg0, u8 arg1) { + u8 temp_a1; + s32 temp_a0; + u8 var_a0; + + temp_a0 = arg0 - 1; + temp_a1 = arg1 - 1; + + if ((arg0 == 0) || (arg1 == 0)) { + return 0; + } + + var_a0 = D_80070FA0[temp_a0].unk_0F[temp_a1 / 8]; + + switch (arg0) { + case 0x6: + if (temp_a1 / 8 == 6) { + var_a0 |= 8; + } + break; + + case 0xC: + case 0x30: + case 0x31: + if (temp_a1 / 8 == 6) { + var_a0 |= 0x40; + } + break; + + case 0x32: + case 0x33: + case 0x8D: + if (temp_a1 / 8 == 6) { + var_a0 |= 4; + } + break; + } + + return var_a0 & (1 << (temp_a1 & 7)) & 0xFF; +} + +s32 func_84377644(unk_D_843C60A4* arg0, u8 arg1) { + u8 j; + u8 i; + u8 end; + u8 var_a1; + + for (i = 0; i < arg0->unk_00; i++) { + var_a1 = (i) ? arg0->unk_01[0] : 0; + + end = arg0->unk_04[i] + var_a1; + + for (j = var_a1; j < end; j++) { + if ((arg0->unk_14[j].unk_12.unk_15 & arg1) && (arg0->unk_14[j].unk_12.unk_0C > 0)) { + return 1; + } + } + } + + return 0; +} + +u8 func_843776FC(unk_D_843C60AC* arg0, unk_D_843C60AC* arg1, u8 arg2) { + u8 i; + u8 sp36; + u8 temp_v0; + unk_D_800FCB18* sp30; + + sp30 = &arg1->unk_12; + if (arg1 == D_843C60AC) { + sp36 = D_843C5568->unk_000; + } else { + sp36 = 1 - D_843C5568->unk_000; + } + + if (arg0 == arg1) { + for (i = 0; i < 4; i++) { + if (arg2 == sp30->unk_1F[i]) { + return 2; + } + } + return 0; + } + + temp_v0 = func_84377280(sp30->unk_0B); + + for (i = 0; i < 4; i++) { + if ((arg1->unk_01 | (arg1->unk_01 >> 4)) & (1 << i) && (arg2 == sp30->unk_1F[i])) { + return 2; + } + } + + if (((arg1->unk_01 | (arg1->unk_01 >> 4)) ^ 0xF) != 0) { + for (i = 0; i < 4; i++) { + if (arg2 == D_80070FA0[sp30->unk_0B - 1].unk_0A[i]) { + return 1; + } + + if ((D_84384588[sp36]->unk_00 != 0) && (arg2 == D_80070FA0[D_84384588[sp36]->unk_00 - 1].unk_0A[i])) { + return 1; + } + + if ((D_84384588[sp36]->unk_01 != 0) && (arg2 == D_80070FA0[D_84384588[sp36]->unk_01 - 1].unk_0A[i])) { + return 1; + } + } + + for (i = 0; D_843C5310[temp_v0].unk_00[i] != 0 && sp30->unk_26 >= D_843C5310[temp_v0].unk_00[i]; i++) { + if (arg2 == D_843C5310[temp_v0].unk_0A[i]) { + return 1; + } + } + + for (i = 1; i < 0x38; i++) { + if ((func_84377550(sp30->unk_0B, i) != 0) && (arg2 == D_8438AFB4[i - 1])) { + return 1; + } + } + } + + return 0; +} void func_843779C0(void) { } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_843779C8.s") +u8 func_843779C8(unk_D_843C60AC* arg0, unk_D_843C60AC* arg1, u8 arg2, u8* arg3) { + u8 temp_v0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84377FA4.s") + switch (arg2) { + case 1: + *arg3 = 0xC; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_843780FC.s") + *arg3 = 0x20; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84378140.s") + *arg3 = 0x5A; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8437828C.s") + case 0: + *arg3 = 0x99; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_843783CC.s") + *arg3 = 0x78; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84378474.s") + case 2: + *arg3 = 0x69; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84378578.s") + *arg3 = 0x87; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8437865C.s") + *arg3 = 0x9C; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_843787F4.s") + case 3: + *arg3 = 0x5B; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84378B0C.s") + *arg3 = 0x13; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_843791AC.s") + case 4: + *arg3 = 0x4E; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_843791E4.s") + *arg3 = 0x56; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84379224.s") + *arg3 = 0x89; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_843793E0.s") + case 10: + *arg3 = 0xE; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_843794CC.s") + *arg3 = 0x60; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8437AC20.s") + *arg3 = 0x9F; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8437ACB0.s") + case 11: + *arg3 = 0x70; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8437AEA4.s") + *arg3 = 0x97; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } + *arg3 = 0x6A; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } + + *arg3 = 0x6E; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } + + *arg3 = 0x6F; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } + break; + + case 12: + *arg3 = 0x61; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } + break; + + case 13: + *arg3 = 0x85; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } + + *arg3 = 0x4A; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } + break; + + case 14: + *arg3 = 0x68; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } + + *arg3 = 0x6B; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } + break; + + case 20: + *arg3 = 0x2D; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } + break; + + case 21: + *arg3 = 0x67; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } + + *arg3 = 0x27; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } + + *arg3 = 0x2B; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } + break; + + case 22: + *arg3 = 0x51; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } + break; + + case 24: + *arg3 = 0x1C; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } + + *arg3 = 0x6C; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } + + *arg3 = 0x86; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } + + *arg3 = 0x94; + temp_v0 = func_843776FC(arg0, arg1, *arg3); + if (temp_v0 != 0) { + return temp_v0; + } + break; + } + return 0; +} + +u8 func_84377FA4(unk_D_843C60AC* arg0, unk_D_843C60A4* arg1, u8* arg2, u8 arg3, u8* arg4) { + s32 i; + s32 j; + u8 temp_v0; + u8 var_s4; + s32 var_a0; + s32 var_v0; + UNUSED s32 pad; + + var_s4 = 0; + + for (i = 0; i < arg1->unk_00; i++) { + var_v0 = (i != 0) ? arg1->unk_01[0] : 0; + + if (arg1->unk_04[i] == arg1->unk_07[i]) { + var_a0 = arg1->unk_04[i]; + } else { + var_a0 = arg1->unk_01[i]; + } + + for (j = var_v0; j < var_a0 + var_v0; j++) { + if (arg1->unk_14[j].unk_12.unk_0C > 0) { + temp_v0 = func_843779C8(arg0, &arg1->unk_14[j], arg3, arg4); + if (var_s4 < temp_v0) { + var_s4 = temp_v0; + *arg2 = j; + } + } + } + } + + return var_s4; +} + +s32 func_843780FC(u8 arg0, u8 arg1) { + if (arg0 == 0) { + return 0; + } + + if (arg1 == D_8438AFEC[arg0 - 1]) { + return 1; + } + return 0; +} + +u8 func_84378140(unk_D_843C60AC* arg0, unk_D_843C60AC* arg1) { + u8 sp27; + u8 temp_v0; + u8 sp25 = 0; + + temp_v0 = func_843779C8(arg0, arg1, 0xA, &sp27); + if (temp_v0 && (arg1->unk_12.unk_5C[0] < 0xD) && (sp25 < temp_v0)) { + sp25 = temp_v0; + } + + temp_v0 = func_843779C8(arg0, arg1, 0xB, &sp27); + if (temp_v0 && (arg1->unk_12.unk_5C[1] < 0xD) && (sp25 < temp_v0)) { + sp25 = temp_v0; + } + + temp_v0 = func_843779C8(arg0, arg1, 0xC, &sp27); + if (temp_v0 && (arg1->unk_12.unk_5C[2] < 0xD) && (sp25 < temp_v0)) { + sp25 = temp_v0; + } + + temp_v0 = func_843779C8(arg0, arg1, 0xD, &sp27); + if (temp_v0 && (arg1->unk_12.unk_5C[3] < 0xD) && (sp25 < temp_v0)) { + sp25 = temp_v0; + } + + temp_v0 = func_843779C8(arg0, arg1, 0xE, &sp27); + if (temp_v0 && (arg1->unk_12.unk_5C[5] < 0xD) && (sp25 < temp_v0)) { + sp25 = temp_v0; + } + + return sp25; +} + +u8 func_8437828C(unk_D_843C60AC* arg0, unk_D_843C60AC* arg1) { + u8 sp2F; + u8 temp_v0; + u8 sp2D = 0; + UNUSED s32 pad[1]; + + if (arg0->unk_12.unk_4D & 0x12) { + return 0; + } + + temp_v0 = func_843779C8(arg0, arg1, 0x14, &sp2F); + if ((temp_v0 != 0) && (arg1->unk_12.unk_5C[0] >= 2) && (sp2D < temp_v0)) { + sp2D = temp_v0; + } + + temp_v0 = func_843779C8(arg0, arg1, 0x15, &sp2F); + if (temp_v0 != 0) { + if ((arg1->unk_12.unk_5C[1] >= 2) && (sp2D < temp_v0)) { + sp2D = temp_v0; + } + } + + temp_v0 = func_843779C8(arg0, arg1, 0x16, &sp2F); + if (temp_v0 != 0) { + if ((arg1->unk_12.unk_5C[2] >= 2) && (sp2D < temp_v0)) { + sp2D = temp_v0; + } + } + + temp_v0 = func_843779C8(arg0, arg1, 0x18, &sp2F); + if (temp_v0 != 0) { + if ((arg1->unk_12.unk_5C[5] >= 2) && (sp2D < temp_v0)) { + sp2D = temp_v0; + } + } + return sp2D; +} + +s32 func_843783CC(unk_D_843C60A4* arg0) { + u8 i; + u8 j; + u8 temp_t2; + u8 var_v0 = 0; + u8 var_a2; + + for (i = 0; i < arg0->unk_00; i++) { + if (i) { + var_a2 = arg0->unk_01[0]; + } else { + var_a2 = 0; + } + + temp_t2 = arg0->unk_04[i] + var_a2; + + for (j = var_a2; j < temp_t2; j++) { + if (arg0->unk_14[j].unk_12.unk_0C > 0) { + var_v0++; + } + } + } + + if (var_v0 == 1) { + return 1; + } + return 0; +} + +void func_84378474(unk_D_800AE540_0004* arg0, unk_D_800AE540_0004* arg1, unk_D_800AE540_0004* arg2, + unk_D_843C5568* arg3, s32 arg4) { + s32 i; + + switch (arg4) { + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + for (i = 0; i < 2; i++) { + arg3[i].unk_002 = 1; + arg3[i].unk_003 = 6; + arg3[i].unk_004 = 0; + arg3[i].unk_005 = 6; + arg3[i].unk_006 = 3; + arg3[i].unk_007 = 0; + arg3[i].unk_008 = 3; + } + break; + + case 0: + case 8: + if (arg1 == NULL) { + arg3->unk_002 = 1; + arg3->unk_004 = 0; + arg3->unk_006 = arg0->unk_002; + arg3->unk_007 = 0; + } else { + arg3->unk_002 = 2; + arg3->unk_006 = arg0->unk_002; + arg3->unk_007 = arg1->unk_002; + arg3->unk_004 = arg1->unk_214->unk_002; + } + + arg3[0].unk_003 = arg0->unk_214->unk_002; + arg3[0].unk_005 = arg3[0].unk_003 + arg3[0].unk_004; + arg3[0].unk_008 = arg3[0].unk_006 + arg3[0].unk_007; + + arg3[1].unk_002 = 1; + arg3[1].unk_006 = arg2->unk_002; + arg3[1].unk_004 = 0; + arg3[1].unk_007 = 0; + + arg3[1].unk_005 = arg3[1].unk_003 = arg3[1].unk_008 = arg3[1].unk_006; + break; + } +} + +void func_84378578(unk_D_843C60AC* arg0, u8 arg1) { + u8 sp2F = arg0->unk_02; + UNUSED s32 pad; + + if ((sp2F > 0) && (sp2F < 0xA6) && (sp2F != arg0->unk_05[arg1])) { + if (!(arg0->unk_12.unk_15 & 7) && !(arg0->unk_12.unk_15 & 0x20) && !(arg0->unk_12.unk_4D & 0x20)) { + if (D_80072B00[sp2F - 1].unk_02 != 0) { + if (func_8437738C(D_80072B00[sp2F - 1].unk_03, &arg0->unk_12) != 0.0f) { + if ((D_80072B00[sp2F - 1].unk_01 != 7) && (D_80072B00[sp2F - 1].unk_01 != 0x26) && + (D_80072B00[sp2F - 1].unk_01 != 0x28)) { + arg0->unk_05[arg1] = sp2F; + } + } + } + } + } +} + +u16 func_8437865C(unk_D_800FCB18* arg0, unk_D_800FCB18* arg1, u8 arg2) { + u16 var_v0; + + if (D_843C5564->unk_00 & 0x10) { + var_v0 = func_84376F68(arg0, arg1, arg2, 1); + } else if (D_843C5564->unk_00 & 0x20) { + var_v0 = func_84376F68(arg0, arg1, arg2, 0); + } else { + var_v0 = func_84376F68(arg0, arg1, arg2, 1); + } + + switch (D_80072B00[arg2 - 1].unk_01) { + case 0x3: + if (arg1->unk_4D & 0x10) { + var_v0 = 0; + } + break; + + case 0x8: + if (!(arg1->unk_15 & 7) || (arg1->unk_4D & 0x10)) { + var_v0 = 0; + } + break; + + case 0x1D: + var_v0 *= 4; + break; + + case 0x26: + if ((arg0->unk_2E >= arg1->unk_2E) && + (!(D_843C5564->unk_00 & 0x10) || (func_8437738C(D_80072B00[arg2 - 1].unk_03, arg1) != 0.0f))) { + var_v0 = 0x3E7; + } else { + var_v0 = 0; + } + break; + + case 0x2C: + case 0x4D: + var_v0 *= 2; + break; + + case 0xA: + case 0xB: + case 0xD: + case 0xF: + case 0x12: + case 0x13: + case 0x14: + case 0x16: + case 0x18: + case 0x19: + case 0x1C: + case 0x20: + case 0x2E: + case 0x2F: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x38: + case 0x39: + case 0x3B: + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x4F: + case 0x52: + case 0x53: + case 0x54: + case 0x55: + case 0x56: + var_v0 = 0; + break; + } + return var_v0; +} + +void func_843787F4(unk_D_800FCB18* arg0, unk_D_800FCB18* arg1, u16* arg2, u8* arg3, u8 arg4, u8 arg5) { + u16 temp_v0; + u8 var_a1; + u16 tmp = arg4; + + if ((arg4 != 0) && (D_80072B00[arg4 - 1].unk_02 != 0)) { + if (1) {} + if (1) {} + if (1) {} + if (1) {} + temp_v0 = func_8437865C(arg0, arg1, arg4); + + var_a1 = D_80072B00[arg4 - 1].unk_01; + + if (((var_a1 != 0x26) && (D_80072B00[arg4 - 1].unk_01 != 7)) || (arg5 == 0)) { + switch (arg5) { + case 1: + if ((D_80072B00[arg4 - 1].unk_03 < 0xA) && (temp_v0 >= *arg2)) { + *arg3 = arg4; + *arg2 = temp_v0; + } + break; + + case 2: + if ((D_80072B00[arg4 - 1].unk_03 >= 0xB) && (temp_v0 >= *arg2)) { + *arg3 = arg4; + *arg2 = temp_v0; + } + break; + + case 3: + if ((D_80072B00[arg4 - 1].unk_03 < 2) && (temp_v0 >= *arg2)) { + *arg3 = arg4; + *arg2 = temp_v0; + } + break; + + case 10: + temp_v0 *= (f32)D_80072B00[arg4 - 1].unk_04 / 255.0; + if ((D_80072B00[arg4 - 1].unk_01 != 0x1A) && (D_80072B00[arg4 - 1].unk_01 != 0x27) && + (D_80072B00[arg4 - 1].unk_01 != 0x2B) && (D_80072B00[arg4 - 1].unk_01 != 0x50) && + (arg0->unk_2E >= arg1->unk_2E)) { + temp_v0 *= 2; + } + + if (*arg2 < temp_v0) { + *arg3 = arg4; + *arg2 = temp_v0; + return; + } + break; + + case 12: + if ((D_80072B00[arg4 - 1].unk_01 != 0x1A) && (D_80072B00[arg4 - 1].unk_01 != 0x27) && + (D_80072B00[arg4 - 1].unk_01 != 0x2B) && (D_80072B00[arg4 - 1].unk_01 != 0x50)) { + temp_v0 *= 2; + } + + if (*arg2 < temp_v0) { + *arg3 = arg4; + *arg2 = temp_v0; + return; + } + break; + + case 11: + if ((D_80072B00[arg4 - 1].unk_01 == 0x27) || (D_80072B00[arg4 - 1].unk_01 == 0x2B)) { + temp_v0 = 0; + } + + if (*arg2 < temp_v0) { + *arg3 = arg4; + *arg2 = temp_v0; + return; + } + break; + + default: + if (*arg2 < temp_v0) { + *arg3 = arg4; + *arg2 = temp_v0; + } + break; + } + } + } +} + +s32 func_84378B0C(unk_D_843C60AC* arg0, unk_D_843C60AC* arg1, u8* arg2, u8 arg3) { + u8 i; + u8 spDE; + u8 var_v0_2; + u8 var_s0; + UNUSED s32 pad; + u16 spD6; + unk_D_843C60AC sp60; + s16 tmp; + unk_D_800FCB18* temp_s2; + UNUSED s32 pad2; + + spD6 = 0; + *arg2 = 0; + temp_s2 = &arg0->unk_12; + spDE = func_84377280(temp_s2->unk_0B); + + if (temp_s2->unk_4C & 1) { + *arg2 = 0x75; + + switch (arg3) { + case 1: + case 3: + case 11: + if (temp_s2->unk_4F != 0) { + spD6 = 0; + } else { + spD6 = temp_s2->unk_54 * 2; + } + break; + + case 12: + if ((temp_s2->unk_4F - 1) > 0) { + spD6 = 0; + } else { + spD6 = temp_s2->unk_54 * 2; + } + break; + + default: + spD6 = func_8437865C(temp_s2, &arg1->unk_12, 0x75); + break; + } + } else if (temp_s2->unk_4C & 2) { + i = (arg0 == D_843C60AC) ? D_843C5568->unk_000 : 1 - D_843C5568->unk_000; + *arg2 = D_84390010[i]->unk_654.unk_38.unk_5A; + spD6 = func_8437865C(temp_s2, &arg1->unk_12, *arg2); + } else if ((temp_s2->unk_4C & 0x10) || (temp_s2->unk_4C & 0x20) || (temp_s2->unk_4C & 0x40)) { + i = (arg0 == D_843C60AC) ? D_843C5568->unk_000 : 1 - D_843C5568->unk_000; + *arg2 = D_84390010[i]->unk_654.unk_38.unk_5A; + spD6 = func_8437865C(temp_s2, &arg1->unk_12, *arg2); + + if (arg3 == 0xC) { + _bcopy(arg0, &sp60, sizeof(unk_D_843C60AC)); + sp60.unk_12.unk_4C &= ~0x30; + spD6 += func_84378B0C(&sp60, arg1, arg2, 0xB); + } + } else if (temp_s2->unk_4D & 0x20) { + *arg2 = 0x3F; + if (arg3 == 0xC) { + _bcopy(arg0, &sp60, sizeof(unk_D_843C60AC)); + sp60.unk_12.unk_4D &= ~0x20; + spD6 = func_84378B0C(&sp60, arg1, arg2, 0xB); + } else { + spD6 = 0; + } + } else if (temp_s2->unk_4D & 0x40) { + *arg2 = 0x63; + spD6 = func_8437865C(temp_s2, &arg1->unk_12, 0x63); + } else if (((arg0->unk_01 | (arg0->unk_01 >> 4)) ^ 0xF) != 0) { + for (i = 0; i < 4; i++) { + if ((arg0->unk_01 | (arg0->unk_01 >> 4)) & (1 << i)) { + func_843787F4(temp_s2, &arg1->unk_12, &spD6, arg2, temp_s2->unk_1F[i], arg3); + } + } + + if (D_843C5564->unk_00 & 0x2000) { + if (arg0->unk_05[arg1->unk_00] != 0) { + func_843787F4(temp_s2, &arg1->unk_12, &spD6, arg2, arg0->unk_05[arg1->unk_00], arg3); + } + } + + if (spD6 == 0) { + for (i = 0; i < 4 && (tmp = D_80070FA0[temp_s2->unk_0B - 1].unk_0A[i]); i++) { + func_843787F4(temp_s2, &arg1->unk_12, &spD6, arg2, tmp, arg3); + } + + if (temp_s2 == D_843C60B8) { + var_v0_2 = 0; + } else { + var_v0_2 = 1; + } + + if (D_84384588[var_v0_2]->unk_00 != 0) { + for (i = 0; i < 4 && (tmp = D_80070FA0[D_84384588[var_v0_2]->unk_00 - 1].unk_0A[i]); i++) { + func_843787F4(temp_s2, &arg1->unk_12, &spD6, arg2, tmp, arg3); + } + } + + if (D_84384588[var_v0_2]->unk_01 != 0) { + for (i = 0; i < 4 && (tmp = D_80070FA0[D_84384588[var_v0_2]->unk_01 - 1].unk_0A[i]) != 0; i++) { + func_843787F4(temp_s2, &arg1->unk_12, &spD6, arg2, tmp, arg3); + } + } + + for (i = 0; i < 10; i++) { + if ((D_843C5310[spDE].unk_00[i] != 0) && (temp_s2->unk_26 >= D_843C5310[spDE].unk_00[i])) { + tmp = D_843C5310[spDE].unk_0A[i]; + func_843787F4(temp_s2, &arg1->unk_12, &spD6, arg2, tmp, arg3); + } + } + + for (i = 1; i < 0x38; i++) { + if ((func_84377550(temp_s2->unk_0B, i) != 0) && + (func_843772E4((D_843C5564->unk_00 & 0xC000u) >> 0xE, i) != 0)) { + tmp = D_8438AFB4[i - 1]; + func_843787F4(temp_s2, &arg1->unk_12, &spD6, arg2, tmp, arg3); + } + } + } + } else { + tmp = temp_s2->unk_1F[0]; + for (i = 0; i < 4 && (tmp = temp_s2->unk_1F[i]); i++) { + if (temp_s2->unk_32[i] > 0) { + func_843787F4(temp_s2, &arg1->unk_12, &spD6, arg2, tmp, arg3); + } + } + } + return spD6; +} + +s32 func_843791AC(unk_D_843C60AC* arg0, unk_D_843C60AC* arg1, u8* arg2, u8 arg3) { + return func_84377068(func_84378B0C(arg0, arg1, arg2, arg3), arg1->unk_12.unk_28); +} + +s32 func_843791E4(unk_D_843C60AC* arg0, unk_D_843C60AC* arg1, u8* arg2, u8 arg3) { + return func_84377068(func_84378B0C(arg0, arg1, arg2, arg3), arg1->unk_12.unk_0C); +} + +void func_8437921C(void) { +} + +u8 func_84379224(unk_D_800FCB18* arg0, unk_D_800FCB18* arg1, u8 arg2, u8 arg3) { + s32 var_t0; + s32 var_a3; + unk_D_8438ACB8* var_a0; + s32 tmp1; + s32 tmp2; + + if (arg2 == 0) { + return 0; + } + + if (D_8438AC60[0] == 1) { + var_a0 = D_8438ACD4; + } else { + var_a0 = &D_8438ACB8->unk_00; + } + + tmp1 = arg0->unk_5C[4]; + tmp2 = 14 - arg1->unk_5C[5]; + + if (arg3) { + var_a3 = D_80072B00[arg2 - 1].unk_04; + } else { + var_a3 = 0xFF; + } + + var_t0 = (var_a3 * var_a0[tmp1 - 1].unk_00) / var_a0[tmp1 - 1].unk_01; + if (var_t0 == 0) { + var_t0 = 1; + } + + var_t0 = (var_t0 * var_a0[tmp2 - 1].unk_00) / var_a0[tmp2 - 1].unk_01; + if ((D_8438AC60[0] == 1) && (arg2 == 0x81)) { + var_t0 = 0xFF; + } + + if (arg0->unk_15 & 0x40) { + var_t0 *= 3; + var_t0 /= 4; + } + + if (arg0->unk_4C & 0x80) { + var_t0 /= 2; + } + + if (var_t0 == 0) { + var_t0 = 1; + } + + if (var_t0 >= 0x100) { + var_t0 = 0xFF; + } + + return var_t0; +} + +void func_843793E0(u8 arg0, u8* arg1) { + s32 temp_v0 = 0xFF - arg0; + + if (temp_v0 == 0) { + *arg1 = 1; + return; + } + + *arg1 *= temp_v0 / 255.0f; +} + +void func_843794CC(unk_D_843C60AC* arg0, unk_D_843C60AC* arg1, s32 arg2, u8 arg3, u8 arg4, unk_func_843794CC* arg5) { + u8 i; + u8 sp10E; + unk_D_800FCB18* var_s0; + unk_D_800FCB18* var_s3; + s16 sp102; + s16 sp100; + s16 var_v1; + s16 spFC; + u8 spFB; + u8 spFA; + u8 spF9; + u8 spF8; + u8 spF7; + u8 spF6; + u8 spF5; + unk_func_843794CC* var_s2; + s16 var_s4; + s16 var_s7; + s16 var_v0; + unk_D_843C60AC sp74; + UNUSED s32 pad; + s16 var_s1; + + var_s3 = &arg1->unk_12; + var_s0 = &arg0->unk_12; + + if ((arg2 != 0) && (D_843C60BC == 0)) { + sp102 = func_8437865C(var_s3, var_s0, arg3); + } else { + sp102 = 0; + var_s3 = &arg1->unk_12; + var_s0 = &arg0->unk_12; + } + + if ((arg2 != 0) && (D_843C60BC == 0)) { + spF9 = func_84379224(var_s3, var_s0, arg3, 0); + } else { + spF9 = 0; + } + + _bcopy(arg1, &sp74, sizeof(unk_D_843C60AC)); + + if (arg2 != 0) { + var_s3->unk_4C &= 0xFF8F; + var_s3->unk_4D &= 0xFFDF; + } + + if (D_843C60BC != 0) { + if ((var_s0->unk_15 & 7) && (func_843767E4(2) != 0)) { + var_s0->unk_15 = 0; + } + var_s0->unk_4C &= 0xFF8F; + var_s0->unk_4D &= 0xFFDF; + } + + sp100 = func_84378B0C(arg1, arg0, &spF7, 0xB); + spF8 = func_84379224(var_s3, var_s0, spF7, 0); + spF6 = spF7; + + if (arg0 == D_843C60B0) { + func_84378B0C(arg0, arg1, &spF5, 0xB); + } + + for (i = 0; i < arg4; i++) { + var_s4 = sp100; + var_s7 = 0; + spFA = spF8; + spF7 = spF6; + + if (arg0 == D_843C60B0) { + var_s2 = &arg5[i]; + var_s2->unk_00 = spF5; + } else { + var_s2 = &arg5[i]; + var_s2->unk_00 = var_s0->unk_1F[i]; + } + + var_s2->unk_05 = spF7; + if ((var_s2->unk_00 == 0x77) && (var_s0->unk_2E >= var_s3->unk_2E)) { + if (var_s3->unk_58 != 0) { + var_s2->unk_00 = var_s3->unk_58; + } + } + + var_s1 = func_8437865C(var_s0, var_s3, var_s2->unk_00); + spFB = func_84379224(var_s0, var_s3, var_s2->unk_00, 1); + var_s2->unk_02 = func_84376920(var_s0, var_s3, var_s2->unk_00); + + var_s2->unk_03 = D_80072B00[var_s2->unk_00 - 1].unk_01; + var_s2->unk_16 = 0; + var_s2->unk_04 = 0xFF; + var_s2->unk_0E = var_s2->unk_16; + + if ((var_s2->unk_03 != 0x26) && (var_s2->unk_03 != 0x28) && (var_s2->unk_03 != 0x29) && (var_s1 > 0)) { + var_s1 = var_s1 * ((((D_843C5564->unk_04 / 255.0f) * 38.0f) + 217.0f) / 255.0f); + if (var_s1 == 0) { + var_s1 += 1; + } + } + + if ((var_s3->unk_4C & 0x40) && (var_s0->unk_2E >= var_s3->unk_2E) && (var_s2->unk_03 != 0x27) && + (var_s2->unk_03 != 0x2B) && (var_s2->unk_03 != 0x11)) { + var_s1 = 0; + } + + if (((D_843C60BC != 0) && (arg2 == 0)) || ((var_s3->unk_15 & 7) != 0) || + ((var_s0->unk_4C & 0x20) && (var_s0->unk_4F != 0)) || + ((var_s3->unk_15 & 0x20) && (D_80072B00[var_s2->unk_00 - 1].unk_01 != 4) && + (D_80072B00[var_s2->unk_00 - 1].unk_01 != 0x22))) { + var_s4 = 0; + sp102 = 0; + } + + spFC = var_s0->unk_0C; + if (arg2 != 0) { + if (sp102 >= var_s0->unk_0C) { + func_843793E0(spF9, &spFB); + } + + if (sp102 >= var_s0->unk_0C) { + var_s0->unk_0C = 0; + } else { + var_s0->unk_0C -= sp102; + } + } + + switch (D_80072B00[var_s2->unk_00 - 1].unk_01) { + case 0x0: + switch (var_s2->unk_00) { + case 0x44: + if (var_s4 < var_s0->unk_0C) { + if (D_80072B00[spF7 - 1].unk_03 < 2) { + var_s1 = var_s4 * 2; + spFB *= ((f32)spFA * 0.7) / 255.0; + } else { + var_s1 = func_84378B0C(arg0, arg1, &spF7, 3) * 2; + spFB *= ((f32)spFA * 0.5) / 255.0; + } + } else { + var_s1 = 0; + func_843793E0(spFA, &spFB); + } + break; + + case 0x62: + if (var_s3->unk_4C & 0x40) { + var_s1 = 0; + } + if (var_s1 >= var_s3->unk_0C) { + func_843793E0(spFB, &spFA); + } + goto switch_end; + } + + case 0x10: + case 0x11: + case 0x1B: + case 0x1D: + case 0x26: + case 0x28: + case 0x29: + case 0x2C: + case 0x2D: + case 0x51: + if (var_s0->unk_2E >= var_s3->unk_2E) { + if (var_s1 >= var_s3->unk_0C) { + func_843793E0(spFB, &spFA); + } + } else if (var_s4 >= var_s0->unk_0C) { + func_843793E0(spFA, &spFB); + } + break; + + case 0x3: + if (var_s0->unk_2E >= var_s3->unk_2E) { + if (var_s1 >= var_s3->unk_0C) { + func_843793E0(spFB, &spFA); + } else { + var_s7 = var_s1 >> 1; + if (var_s0->unk_28 < (var_s0->unk_0C + var_s7)) { + var_s7 = var_s0->unk_28 - var_s0->unk_0C; + } + } + } else if (var_s4 >= var_s0->unk_0C) { + func_843793E0(spFA, &spFB); + } else { + if (var_s1 < var_s3->unk_0C) { + var_s7 = var_s1 >> 1; + } + + if (var_s0->unk_28 < (var_s0->unk_0C + var_s7)) { + var_s7 = var_s0->unk_28 - var_s0->unk_0C; + } + } + break; + + case 0x27: + case 0x2B: + if ((D_843C60BC != 0) && (var_s1 != 0)) { + if (func_84377430(D_80072B00[var_s2->unk_00 - 1].unk_03, D_843C60A8) == 0) { + var_s1 = 0; + } else { + var_s1 *= 0.75; + } + } + + if (var_s0->unk_15 & 0x40) { + spFB *= 0.75; + } + + if (var_s0->unk_4C & 0x80) { + spFB /= 2; + } + + if (spFB == 0) { + spFB++; + } + + if ((var_s2->unk_00 != 0x5B) && (var_s2->unk_00 != 0x13)) { + if (var_s0->unk_2E >= var_s3->unk_2E) { + if ((func_843779C8(arg0, arg1, 3, &sp10E) == 2) && !(var_s3->unk_4C & 0x50)) { + var_s1 = 0; + } + + if (var_s4 >= var_s0->unk_0C) { + var_s1 = var_s1 / 2; + func_843793E0(spFA, &spFB); + } + + if (var_s1 < var_s3->unk_0C) { + var_s4 = func_84378B0C(arg1, arg0, &spF7, 0xC); + } + } else { + if (func_843779C8(arg0, arg1, 3, &sp10E) == 2) { + var_s1 = 0; + } + + var_s4 = func_84378B0C(arg1, arg0, &spF7, 0xC); + if (var_s4 >= var_s0->unk_0C) { + var_s1 = var_s1 / 2; + func_843793E0(spFA, &spFB); + } + } + } else if (var_s0->unk_2E >= var_s3->unk_2E) { + if (var_s1 >= var_s3->unk_0C) { + func_843793E0(spFB, &spFA); + } + } else { + if (func_843779C8(arg0, arg1, 3, &sp10E) == 2) { + var_s1 = 0; + } + + if (var_s4 >= var_s0->unk_0C) { + func_843793E0(spFA, &spFB); + } + } + break; + + case 0x2: + case 0x4: + case 0x5: + case 0x6: + case 0x1F: + case 0x23: + case 0x4C: + var_s2->unk_04 = 0x1A; + if (var_s0->unk_2E >= var_s3->unk_2E) { + if (var_s1 >= var_s3->unk_0C) { + func_843793E0(spFB, &spFA); + } + } else if (var_s4 >= var_s0->unk_0C) { + func_843793E0(spFA, &spFB); + } + break; + + case 0x44: + case 0x45: + case 0x46: + case 0x47: + var_s2->unk_04 = 0x55; + if (var_s0->unk_2E >= var_s3->unk_2E) { + if (var_s1 >= var_s3->unk_0C) { + func_843793E0(spFB, &spFA); + } + } else if (var_s4 >= var_s0->unk_0C) { + func_843793E0(spFA, &spFB); + } + break; + + case 0x7: + if (var_s0->unk_2E >= var_s3->unk_2E) { + if (var_s1 >= var_s3->unk_0C) { + func_843793E0(spFB, &spFA); + } + } else if (var_s4 >= var_s0->unk_0C) { + func_843793E0(spFA, &spFB); + } + + if (var_s0->unk_0C >= 2) { + var_s2->unk_16 = var_s0->unk_0C; + } else { + var_s2->unk_16 = 1; + } + break; + + case 0x8: + if (var_s1 < var_s3->unk_0C) { + var_s7 = var_s1 >> 1; + } + + if (var_s0->unk_28 < (var_s0->unk_0C + var_s7)) { + var_s7 = var_s0->unk_28 - var_s0->unk_0C; + } + + if (var_s0->unk_2E >= var_s3->unk_2E) { + if (var_s1 >= var_s3->unk_0C) { + func_843793E0(spFB, &spFA); + } + } else if (var_s4 >= var_s0->unk_0C) { + func_843793E0(spFA, &spFB); + } + break; + + case 0x9: + if (var_s0->unk_2E >= var_s3->unk_2E) { + if ((var_s3->unk_58 == 0) || (var_s3->unk_58 == 0x77)) { + var_s1 = 0; + spFB = 0; + } + } else { + var_s1 = func_8437865C(var_s0, var_s3, spF7); + spFB = func_84379224(var_s0, var_s3, spF7, 1); + if ((arg2 != 0) && (sp102 >= spFC)) { + func_843793E0(spF9, &spFB); + } + } + + if (var_s0->unk_2E >= var_s3->unk_2E) { + if (var_s1 >= var_s3->unk_0C) { + func_843793E0(spFB, &spFA); + } + } else if (var_s4 >= var_s0->unk_0C) { + func_843793E0(spFA, &spFB); + } + break; + + case 0x1A: + var_s4 *= 2; + var_s1 = var_s4; + if (var_s4 >= var_s0->unk_0C) { + var_s1 = 0; + func_843793E0(spFA, &spFB); + } + break; + + case 0x21: + case 0x22: + case 0x24: + case 0x25: + var_s2->unk_04 = 0x4D; + if (var_s0->unk_2E >= var_s3->unk_2E) { + if (var_s1 >= var_s3->unk_0C) { + func_843793E0(spFB, &spFA); + } + } else if (var_s4 >= var_s0->unk_0C) { + func_843793E0(spFA, &spFB); + } + break; + + case 0x2A: + if (var_s0->unk_2E >= var_s3->unk_2E) { + if (var_s1 != 0) { + func_843793E0(spFB, &spFA); + } + } else if (var_s4 >= var_s0->unk_0C) { + func_843793E0(spFA, &spFB); + } + break; + + case 0x30: + if (var_s0->unk_2E >= var_s3->unk_2E) { + if (var_s1 >= var_s3->unk_0C) { + func_843793E0(spFB, &spFA); + } + } else if (var_s4 >= var_s0->unk_0C) { + func_843793E0(spFA, &spFB); + } + + if (var_s1 < var_s3->unk_0C) { + var_s4 = var_s4 + (var_s1 / 4); + } + break; + + case 0x4D: + var_s2->unk_04 = 0x34; + if (var_s0->unk_2E >= var_s3->unk_2E) { + if (var_s1 >= var_s3->unk_0C) { + func_843793E0(spFB, &spFA); + } + } else if (var_s4 >= var_s0->unk_0C) { + func_843793E0(spFA, &spFB); + } + break; + + case 0x50: + if (var_s0->unk_2E >= var_s3->unk_2E) { + if (var_s1 >= var_s3->unk_0C) { + if (D_8438AC60[0] != 1) { + func_843793E0(spFB, &spFA); + } + } else { + if (D_843C60BC != 0) { + var_s4 = func_84378B0C(arg1, arg0, &spF7, 0xB); + } else { + var_s4 = func_84378B0C(arg1, arg0, &spF7, 0xC); + } + } + } else { + if (var_s4 >= var_s0->unk_0C) { + func_843793E0(spFA, &spFB); + } + + if ((var_s1 >= var_s3->unk_0C) && (D_8438AC60[0] != 1)) { + func_843793E0(spFB, &spFA); + } else { + arg1->unk_12.unk_4D &= 0xFFDF; + var_s4 += func_84378B0C(arg1, arg0, &spF7, 0xB); + } + } + break; + + case 0x38: + spFB = 0xFF; + if (var_s0->unk_15 & 0x40) { + spFB = 0xBF; + } + + if (var_s0->unk_4C & 0x80) { + spFB /= 2; + } + + if (spFB == 0) { + spFB++; + } + + if ((arg2 != 0) && (sp102 >= spFC)) { + func_843793E0(spF9, &spFB); + } + break; + + case 0xA: + case 0xB: + case 0xD: + case 0xF: + case 0x18: + case 0x19: + case 0x1C: + case 0x2E: + case 0x2F: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x39: + case 0x40: + case 0x41: + case 0x52: + case 0x53: + case 0x55: + case 0x56: + spFB = 0xFF; + if (var_s0->unk_15 & 0x40) { + spFB = 0xBF; + } + + if (var_s0->unk_4C & 0x80) { + spFB /= 2; + } + + if (spFB == 0) { + spFB++; + } + + if ((arg2 != 0) && (sp102 >= spFC)) { + func_843793E0(spF9, &spFB); + } + + case 0x12: + case 0x13: + case 0x14: + case 0x16: + case 0x20: + case 0x31: + case 0x3B: + case 0x42: + case 0x43: + case 0x54: + var_s1 = 0; + if ((var_s3->unk_2E >= var_s0->unk_2E) && (var_s4 >= var_s0->unk_0C)) { + func_843793E0(spFA, &spFB); + } + break; + + case 0x4F: + var_s1 = 0; + if (var_s0->unk_4D & 0x10) { + spFB = 0; + } else { + if (var_s0->unk_0C < (var_s0->unk_28 >> 2)) { + spFB = 0; + } else { + spFB = 0xFF; + } + + if (var_s0->unk_15 & 0x40) { + spFB = (spFB * 3) / 4; + } + + if (var_s0->unk_4C & 0x80) { + spFB /= 2; + } + + if (spFB == 0) { + spFB++; + } + + if ((arg2 != 0) && (sp102 >= spFC)) { + func_843793E0(spF9, &spFB); + } + + if ((var_s3->unk_2E >= var_s0->unk_2E) && (var_s4 >= var_s0->unk_0C)) { + func_843793E0(spFA, &spFB); + } + + if ((var_s4 >= (var_s0->unk_28 >> 2)) && (var_s0->unk_0C >= (var_s0->unk_28 >> 2)) && + (var_s3->unk_2E < var_s0->unk_2E)) { + var_s4 = var_s0->unk_28 / 4; + } + } + break; + } + + switch_end: + if (var_s0->unk_15 & 0x18) { + if ((var_s0->unk_28 >> 4) != 0) { + var_v1 = var_s0->unk_28 >> 4; + } else { + var_v1 = 1; + } + + if (var_s0->unk_4E & 1) { + var_v1 *= var_s0->unk_51; + } + var_s2->unk_16 += var_v1; + } + + if (var_s3->unk_15 & 0x18) { + if ((var_s0->unk_28 >> 4) != 0) { + var_v0 = var_s3->unk_28 >> 4; + } else { + var_v0 = 1; + } + + if (var_s3->unk_4E & 1) { + var_v0 *= var_s3->unk_51; + } + var_s2->unk_0E += var_v0; + } + + if (var_s0->unk_4D & 0x80) { + if ((var_s0->unk_28 >> 4) <= 0) { + var_v1 = 1; + } else { + var_v1 = var_s0->unk_28 >> 4; + } + + if (var_s0->unk_4E & 1) { + var_v1 *= var_s0->unk_51 + 1; + } + + var_s2->unk_16 += var_v1; + var_s2->unk_0E -= (var_s2->unk_00 != 0x9C) ? var_v1 + : ((var_s0->unk_28 >> 4) <= 0) ? 1 + : var_s0->unk_28 >> 4; + } + + if (var_s3->unk_4D & 0x80) { + if ((var_s3->unk_28 >> 4) <= 0) { + var_v0 = 1; + } else { + var_v0 = var_s3->unk_28 >> 4; + } + + if (var_s3->unk_4E & 1) { + var_v0 *= var_s3->unk_51 + 1; + } + + var_s2->unk_0E += var_v0; + var_s2->unk_16 -= var_v0; + } + + if (var_s0->unk_4D & 0x10) { + var_s4 = 0; + } + + if (var_s3->unk_4D & 0x10) { + if (var_s3->unk_59 < var_s1) { + var_s1 = var_s3->unk_59; + } + } + + var_s2->unk_0A = var_s1; + var_s2->unk_01 = spFB; + var_s2->unk_0C = func_84377068(var_s1, var_s3->unk_0C); + var_s2->unk_10 = func_84377068(var_s2->unk_0E, var_s3->unk_0C); + var_s2->unk_05 = spF7; + var_s2->unk_12 = var_s4; + var_s2->unk_06 = spFA; + var_s2->unk_14 = func_84377068(var_s4, var_s0->unk_0C); + var_s2->unk_18 = func_84377068(var_s2->unk_16, var_s0->unk_0C); + var_s2->unk_1A = var_s7; + var_s2->unk_1C = func_84377068(var_s7, var_s0->unk_0C); + var_s2->unk_07 = arg3; + var_s2->unk_1E = sp102; + var_s2->unk_08 = spF9; + var_s2->unk_20 = func_84377068(sp102, spFC); + + if ((var_s2->unk_0C + var_s2->unk_10) >= 0x100) { + var_s2->unk_0C = 0xFF - var_s2->unk_10; + } + + if (0xFF < var_s2->unk_14 + (var_s2->unk_18 - var_s2->unk_1C)) { + var_s2->unk_14 = 0xFF - (var_s2->unk_18 - var_s2->unk_1C); + } + var_s0->unk_0C = spFC; + } + _bcopy(&sp74, arg1, sizeof(unk_D_843C60AC)); +} + +s32 func_8437AC20(unk_func_843794CC* arg0, u8 arg1, u8 arg2) { + u8 i; + + for (i = 0; i < arg1; i++) { + if ((arg2 == arg0[i].unk_0C) && (D_80072B00[arg0[i].unk_00 - 1].unk_01 != 0x26)) { + return 1; + } + } + + return 0; +} + +s32 func_8437ACB0(unk_func_843794CC* arg0, u8 arg1, u8 arg2, u8 arg3) { + s32 i; + s32 var_v1 = 0; + + for (i = 0; i < arg2; i++) { + if ((arg3 < arg0[i].unk_0C) && (D_80072B00[arg0[i].unk_00 - 1].unk_01 != 0x26)) { + var_v1 = 1; + } + } + + if (arg3 < arg0[arg1].unk_0C) { + var_v1 = 0; + } + return var_v1; +} + +u8 func_8437AEA4(unk_func_843794CC* arg0, u8 arg1, u8 arg2, u8 arg3) { + s32 i; + u8 var_v1 = 0; + + if (arg3 >= 0x100) { + arg3 = 0xFF; + } + + if (arg3 < 0) { + arg3 = 0; + } + + for (i = 0; i < arg2; i++) { + if (i != arg1) { + if ((arg0[i].unk_0C >= arg3) && (D_80072B00[arg0[i].unk_00 - 1].unk_01 != 0x26)) { + var_v1 = 1; + } + } + } + + return var_v1; +} + +#ifdef NON_MATCHING +void func_8437B0CC(unk_D_843C60A4* arg0, unk_D_843C60A4* arg1, u8 arg2, unk_func_843794CC* arg3, u8 arg4) { + u8 i; + u8 j; + u8 sp107; + u8 sp106; + u8 sp104; + u8 sp103; + s32 spFC; + s32 spF8; + s32 spC0; + u8 spBA; + u8 spB7; + u8 spB6; + u8 spB5; + u8 spB4; + unk_D_80072B00* sp9C; + f32 sp8C; + s32 sp80; + s32 sp78; + s32 sp70; + s32 sp6C; + s32 sp68; + s32 sp64; + s32 sp5C; + s32 sp58; + s32 sp54; + s32 sp50; + s16 temp_v1_11; + s16 temp_v1_12; + s16 temp_v1_2; + s16 temp_v1_3; + s16 temp_v1_4; + s32 temp_a0; + s32 temp_lo; + s32 temp_lo_2; + u8 temp_s0; + s32 temp_s0_2; + s32 temp_s0_3; + s32 temp_s0_4; + s32 temp_s0_5; + s32 temp_s0_6; + s32 temp_s0_7; + s32 temp_s0_8; + s32 temp_s1; + s32 temp_s1_2; + s32 temp_s1_3; + s32 temp_s1_4; + s32 temp_s1_5; + s32 temp_s2; + s32 temp_s2_2; + s32 temp_s2_3; + s32 temp_s2_4; + s32 temp_v0_22; + s32 temp_v0_23; + s32 temp_v0_24; + s32 temp_v0_25; + s32 temp_v0_26; + s32 temp_v0_27; + s32 temp_v0_3; + s32 temp_v0_6; + s32 temp_v0_7; + s32 var_s0; + s32 var_s0_2; + s32 var_s0_3; + s32 var_s0_4; + s32 var_s1; + s32 var_s1_2; + s32 var_s1_3; + s32 var_s1_4; + s32 var_s1_5; + s32 var_s1_6; + s32 var_s1_7; + s32 var_s1_8; + s32 var_s1_9; + s32 var_s2; + s32 var_s5; + s32 var_t1; + s32 var_v1; + s32 var_v1_3; + s32 var_v1_6; + s8 temp_v0; + u16 temp_v0_20; + u16 temp_v0_21; + u16 temp_v0_9; + u16 temp_v1_5; + u16 temp_v1_6; + u16 temp_v1_8; + u16 temp_v1_9; + s32 var_v1_4; + s32 var_v1_5; + u8 temp_a1; + u8 temp_a1_2; + u8 temp_a1_3; + u8 temp_t0; + u8 temp_t5; + u8 temp_v0_10; + u8 temp_v0_11; + u8 temp_v0_12; + u8 temp_v0_13; + u8 temp_v0_14; + u8 temp_v0_15; + u8 temp_v0_16; + u8 temp_v0_17; + u8 temp_v0_18; + u8 temp_v0_19; + u8 temp_v0_28; + u8 temp_v0_29; + u8 temp_v0_2; + u8 temp_v0_8; + u8 temp_v1; + u8 temp_v1_10; + u8 temp_v1_7; + u8 var_v1_2; + unk_D_80072B00* temp_v1_13; + unk_D_800FCB18* temp_s3; + unk_D_800FCB18* temp_s3_10; + unk_D_800FCB18* temp_s3_11; + unk_D_800FCB18* temp_s3_12; + unk_D_800FCB18* temp_s3_13; + unk_D_800FCB18* temp_s3_14; + unk_D_800FCB18* temp_s3_15; + unk_D_800FCB18* temp_s3_16; + unk_D_800FCB18* temp_s3_17; + unk_D_800FCB18* temp_s3_18; + unk_D_800FCB18* temp_s3_19; + unk_D_800FCB18* temp_s3_20; + unk_D_800FCB18* temp_s3_21; + unk_D_800FCB18* temp_s3_22; + unk_D_800FCB18* temp_s3_2; + unk_D_800FCB18* temp_s3_3; + unk_D_800FCB18* temp_s3_4; + unk_D_800FCB18* temp_s3_5; + unk_D_800FCB18* temp_s3_6; + unk_D_800FCB18* temp_s3_7; + unk_D_800FCB18* temp_s3_8; + unk_D_800FCB18* temp_s3_9; + unk_D_800FCB18* temp_s6; + unk_D_843C60AC* temp_fp; + unk_D_843C60AC* temp_s4; + unk_func_843794CC* temp_s7; + unk_func_843794CC* temp_v0_4; + unk_func_843794CC* temp_v0_5; + s32 tmp1; + s32 tmp2; + s32 tmp3; + s32 tmp4; + s32 tmp5; + s32 tmp6; + s32 tmp7; + s32 tmp8; + s32 tmp9; + + spBA = D_843C5564->unk_0E; + sp58 = D_843C5564->unk_09; + spB7 = D_843C5564->unk_0C; + temp_t0 = D_843C5564->unk_0A; + spB5 = D_843C5564->unk_0B; + spB6 = D_843C5564->unk_0D; + spB4 = D_843C5564->unk_10; + sp78 = D_843C5564->unk_0F; + + temp_fp = &arg0->unk_14[arg0->unk_10]; + temp_s4 = &arg1->unk_14[arg1->unk_10]; + + for (i = 0; i < arg2; i++) { + temp_s6 = &temp_fp->unk_12; + if (temp_s6) {} + + sp50 = spB5 * 0x14; + sp54 = temp_t0 * 0x11; + sp6C = temp_t0; + spFC = 0; + spF8 = 0; + + temp_s7 = &arg3[i]; + sp9C = &D_80072B00[temp_s7->unk_00 - 1]; + var_s5 = 1; + temp_s0 = func_843780FC(temp_s6->unk_0B, temp_s7->unk_00); + var_s1 = (func_843767E4(4) * temp_s0 * sp78 * 3) / 2; + + switch (temp_s7->unk_03) { + case 0x0: + temp_s3 = &temp_s4->unk_12; + + if (arg4) { + switch (temp_s7->unk_00) { + case 0x44: + if (temp_s3->unk_4C & 0x80) { + var_s1 += spBA * 2; + } + + if (func_8437AEA4(arg3, i, arg2, (temp_s7->unk_0C * 2)) != 0) { + var_s1 = 1; + } + break; + + case 0x62: + if (temp_s3->unk_4C & 0x40) { + spF8 = 1; + } + break; + } + } + break; + + case 0x1: + case 0x20: + if (arg4) { + temp_s3 = &temp_s4->unk_12; + + if ((func_84377644(arg1, 7) == 0) && !(temp_s3->unk_4D & 0x10) && (temp_s3->unk_15 == 0)) { + var_s1 += spB7 * 5; + if (func_843776FC(temp_fp, temp_fp, 0x8A) != 0) { + var_s1 += spBA * 3; + } + + if (func_8437ACB0(arg3, i, arg2, 0xB2) != 0) { + var_s1 -= sp6C * 5; + } + + if (func_8437AC20(arg3, arg2, 0xFF) != 0) { + var_s1 = 1; + } + } else { + spF8 = 1; + } + } else { + if (func_843776FC(temp_fp, temp_fp, 0x8A) != 0) { + var_s1 += spBA * 3; + } + var_s1 += spB7 * 5; + } + break; + + case 0x2: + case 0x21: + case 0x42: + case 0x4D: + temp_s3 = &temp_s4->unk_12; + if (temp_s3) {} + + if ((temp_s3->unk_15 == 0) && (temp_s3->unk_16[6] != 3) && (temp_s3->unk_16[7] != 3) && + !(temp_s3->unk_4D & 0x10)) { + if (arg4) { + sp5C = sp6C * 2; + if (temp_s7->unk_00 == 0x5C) { + sp68 = sp6C; + sp64 = spBA; + var_s1 += spB7; + var_s1 += (spB7 * func_843783CC(arg1)); + var_s1 += (spB7 * func_843779C8(temp_fp, temp_s4, 2, &sp104)); + var_s1 += (spB7 * func_843779C8(temp_fp, temp_s4, 0xE, &sp104)); + var_s1 -= ((sp68 * func_843779C8(temp_fp, temp_s4, 0, &sp104)) / 2); + var_s1 += (sp64 * func_843776FC(temp_fp, temp_fp, 0x49)); + if (func_8437ACB0(arg3, i, arg2, 0xB2) != 0) { + var_s1 -= sp68; + } + } + + var_s1 += spB7 * 2; + var_s1 += ((spB7 * 2) * func_843779C8(temp_fp, temp_s4, 0xE, &sp104)); + var_s1 -= ((sp5C * func_843779C8(temp_fp, temp_s4, 0, &sp104)) / 2); + + if (func_8437ACB0(arg3, i, arg2, 0xB2) != 0) { + var_s1 -= sp5C; + } + + if (((temp_s6->unk_2E >= temp_s3->unk_2E) && (func_8437AC20(arg3, arg2, 0xFF) != 0)) || + ((temp_s4->unk_02 != 0xA5) && ((func_843776FC(temp_fp, temp_s4, 0x72) == 2) || + (func_843776FC(temp_fp, temp_s4, 0x9C) == 2))) || + ((temp_s7->unk_14 >= 0x9A) && (func_843783CC(arg0) != 0) && (temp_s6->unk_5C[5] == 7) && + (temp_s3->unk_5C[4] == 7))) { + var_s1 = 1; + } + } else { + if (temp_s7->unk_00 == 0x5C) { + var_s1 += (spB7 * 4); + } + var_s1 += spB7 * 2; + } + } else { + spF8 = 1; + } + break; + + case 0x4: + case 0x22: + temp_s3 = &temp_s4->unk_12; + if (temp_s3) {} + + if ((temp_s3->unk_15 == 0) && (temp_s3->unk_16[6] != 0x14) && (temp_s3->unk_16[7] != 0x14) && + !(temp_s3->unk_4D & 0x10)) { + if (arg4) { + var_s1 += spB7 * 2; + if ((temp_s7->unk_14 >= 0x9A) && (func_843783CC(arg0) != 0)) { + var_s1 -= sp6C * 2; + } + + if (func_8437ACB0(arg3, i, arg2, 0xB2) != 0) { + var_s1 -= sp6C * 2; + } + + if (((temp_s4->unk_02 != 0xA5) && ((func_843776FC(temp_fp, temp_s4, 0x72) == 2) || + (func_843776FC(temp_fp, temp_s4, 0x9C) == 2))) || + (func_8437AC20(arg3, arg2, 0xFF) != 0)) { + var_s1 = 1; + } + } else { + var_s1 += spB7 * 2; + } + } else { + spF8 = 1; + } + break; + + case 0x5: + case 0x23: + temp_s3 = &temp_s4->unk_12; + + if ((func_84377644(arg1, 0x20) == 0) && (temp_s3->unk_15 == 0) && (temp_s3->unk_16[6] != 0x19) && + (temp_s3->unk_16[7] != 0x19) && !(temp_s3->unk_4D & 0x10)) { + if (arg4) { + var_s1 += (spB7 * 3); + if ((func_843783CC(arg0) != 0) && (func_8437ACB0(arg3, i, arg2, 0x4D) == 0) && + (temp_s7->unk_14 >= 0x4E)) { + var_s1 += (spB7 * 3); + } + + if (func_8437ACB0(arg3, i, arg2, 0xB2) != 0) { + var_s1 -= sp6C * 3; + } + + if (func_8437AC20(arg3, arg2, 0xFF) != 0) { + var_s1 = 1; + } + } else { + var_s1 += spB7 * 6; + } + } else { + spF8 = 1; + } + break; + + case 0x6: + case 0x24: + temp_s3 = &temp_s4->unk_12; + if (temp_s3) {} + + if ((temp_s3->unk_16[6] == sp9C->unk_03) || (temp_s3->unk_16[7] == sp9C->unk_03)) { + spF8 = 1; + break; + } + + case 0x43: + temp_s3 = &temp_s4->unk_12; + if (temp_s3) {} + + if (arg4) { + if ((temp_s3->unk_15 == 0) && !(temp_s3->unk_4D & 0x10) && + ((sp9C->unk_03 != 0x17) || ((temp_s3->unk_16[6] != 4) && (temp_s3->unk_16[7] != 4)))) { + if (temp_s3->unk_2E >= temp_s6->unk_2E) { + var_s1 += spB7 * 5; + if (func_843779C8(temp_fp, temp_fp, 1, &sp104) == 2) { + var_s1 += spBA * 3; + } + + if (func_843779C8(temp_fp, temp_s4, 1, &sp104) == 2) { + var_s1 += spB6 * 3; + } + } + + if ((func_84377FA4(temp_fp, arg0, &sp103, 1, &sp104) != (spB6 * 0)) && + (temp_s3->unk_2E >= arg0->unk_14[sp103].unk_12.unk_2E)) { + var_s1 += spBA * 3; + } + + var_s1 += spB7 * 5; + if (func_8437ACB0(arg3, i, arg2, 0xB2) != 0) { + var_s1 -= sp6C * 5; + } + + if (((temp_s4->unk_02 != 0xA5) && ((func_843776FC(temp_fp, temp_s4, 0x9C) == 2) || + (func_843776FC(temp_fp, temp_s4, 0x72) == 2))) || + (func_8437AC20(arg3, arg2, 0xFF) != 0)) { + var_s1 = 1; + } + } else { + spF8 = 1; + } + } else { + if (temp_s3->unk_2E >= temp_s6->unk_2E) { + var_s1 += spB7 * 6; + } + var_s1 += spB7 * 6; + } + break; + + case 0x7: + if (arg4) { + if (func_843783CC(arg0) != 0) { + spFC = 1; + spF8 = 1; + } + } else { + var_s1 += sp6C * 5; + } + break; + + case 0x8: + temp_s3 = &temp_s4->unk_12; + if (!(temp_s3->unk_15 & 7)) { + spF8 = 1; + } + break; + + case 0x9: + temp_s3 = &temp_s4->unk_12; + if (temp_s3) {} + + if ((temp_s6->unk_2E >= temp_s3->unk_2E) && (temp_s3->unk_58 == 0)) { + spF8 = 1; + } + break; + + case 0x32: + if (temp_s6->unk_5C[0] < 0xC) { + var_s5 = 2; + } + + case 0xA: + if (arg4) { + if ((temp_s6->unk_5C[0] < 0xD) && (temp_s6->unk_2A < 0x3E7)) { + var_s0 = 1; + var_s1 += spB7 * 6; + if (temp_s7->unk_14 >= 0x9A) { + var_s1 -= sp6C * 6; + } else if (func_843776FC(temp_fp, temp_fp, 0x3F) != 0) { + var_s1 += spBA * 5; + } + + if (temp_s7->unk_14 == 0xFF) { + var_s1 -= sp6C * 6; + } + + var_s1 *= (0xD - temp_s6->unk_5C[0]) / 12.0f; + for (j = 0; j < arg2; j++) { + temp_v0_4 = &arg3[j]; + if ((D_80072B00[temp_v0_4->unk_00 - 1].unk_03 < 0xA) && (temp_v0_4->unk_0A != 0)) { + var_s0 = 0; + } + } + + if (var_s0 != 0) { + var_s1 = 1; + } + + if ((func_843776FC(temp_fp, temp_s4, 0x72) == 2) && (temp_s4->unk_02 != 0xA5)) { + var_s1 = 1; + } + } else { + spF8 = 1; + } + } else { + if (func_843776FC(temp_fp, temp_fp, 0x3F) != 0) { + var_s1 += spBA * 5; + } + var_s0 = 1; + var_s1 += spB7 * 4; + + for (j = 0; j < arg2; j++) { + temp_v0_5 = &arg3[j]; + if ((D_80072B00[temp_v0_5->unk_00 - 1].unk_03 < 0xA) && (temp_v0_5->unk_0A != 0)) { + var_s0 = 0; + } + } + + if (var_s0 != 0) { + var_s1 = 1; + } + } + var_s1 *= var_s5; + break; + + case 0x33: + if (temp_s6->unk_5C[1] < 0xC) { + var_s5 = 2; + } + + case 0xB: + if (arg4) { + if ((temp_s6->unk_5C[1] < 0xD) && (temp_s6->unk_2C < 0x3E7)) { + var_s1 += spB6 * 6; + if (temp_s7->unk_14 >= 0x9A) { + var_s1 -= sp6C * 6; + } else if (D_80072B00[temp_s7->unk_05 - 1].unk_03 < 0xA) { + var_s1 += spB6 * 6; + } + + if (temp_s7->unk_14 == 0xFF) { + var_s1 -= sp6C * 6; + } + + var_s1 *= (0xD - temp_s6->unk_5C[1]) / 12.0f; + if ((func_843783CC(arg1) != 0) && (temp_s4->unk_12.unk_15 & 0x20)) { + var_s1 = 1; + } + + if ((func_843776FC(temp_fp, temp_s4, 0x72) == 2) && (temp_s4->unk_02 != 0xA5)) { + var_s1 = 1; + } + } else { + spF8 = 1; + } + } else { + if (D_80072B00[temp_s7->unk_05 - 1].unk_03 < 0xA) { + var_s1 += spB6 * 4; + } + var_s1 += spB6 * 4; + } + var_s1 *= var_s5; + break; + + case 0x34: + if (temp_s6->unk_5C[2] < 0xC) { + var_s5 = 2; + } + + if (arg4) { + temp_s3 = &temp_s4->unk_12; + + if ((temp_s6->unk_5C[2] < 0xD) && ((temp_s6->unk_2E < 0x3E7) != 0)) { + if (temp_s3->unk_2E >= temp_s6->unk_2E) { + var_s1 += spB7 * 3; + if (temp_s3->unk_2E < func_8437731C(temp_s6)) { + if (func_843779C8(temp_fp, temp_fp, 1, &sp104) == 2) { + var_s1 += spBA * 3; + } + + if (func_843779C8(temp_fp, temp_s4, 1, &sp104) == 2) { + var_s1 += spB6 * 3; + } + } + } + + if (temp_s7->unk_14 >= 0x9A) { + var_s1 -= sp6C * 3 * var_s5; + } + + if (temp_s7->unk_14 == 0xFF) { + var_s1 -= sp6C * 3 * var_s5; + } + + if ((func_843776FC(temp_fp, temp_s4, 0x72) == 2) && (temp_s4->unk_02 != 0xA5)) { + var_s1 = 1; + } + + if ((func_843783CC(arg1) != 0) && (func_8437731C(temp_s6) < temp_s3->unk_2E)) { + var_s1 = 1; + } + } else { + spF8 = 1; + } + } else { + if (func_843779C8(temp_fp, temp_fp, 1, &sp104) != 0) { + var_s1 += spBA * 5; + } + var_s1 += spB7 * 3; + } + var_s1 *= var_s5; + break; + + case 0x35: + if (temp_s6->unk_5C[3] < 0xC) { + var_s5 = 2; + } + + case 0xD: + if (arg4) { + if ((temp_s6->unk_5C[3] < 0xD) && (temp_s6->unk_30 < 0x3E7)) { + var_s1 += spB7 * 7; + if (temp_s7->unk_14 >= 0x9A) { + var_s1 -= sp6C * 7; + } else if (D_80072B00[temp_s7->unk_05 - 1].unk_03 >= 0xB) { + var_s1 += spB6 * 7; + } + + if (temp_s7->unk_14 == 0xFF) { + var_s1 -= sp6C * 7; + } + + var_s1 *= (0xD - temp_s6->unk_5C[3]) / 12.0f; + if ((func_843776FC(temp_fp, temp_s4, 0x72) == 2) && (temp_s4->unk_02 != 0xA5)) { + var_s1 = 1; + } + } else { + spF8 = 1; + } + } else { + if (D_80072B00[temp_s7->unk_05 - 1].unk_03 >= 0xB) { + var_s1 += spB6 * 2; + } + var_s1 += (spB7 * 2) + (spB6 * 3); + } + var_s1 *= var_s5; + break; + + case 0xF: + temp_s3 = &temp_s4->unk_12; + + if (arg4) { + if (temp_s6->unk_5C[5] < 0xD) { + var_s1 += spB6 * 7; + if (func_843779C8(temp_fp, temp_s4, 0, &sp104) != 0) { + var_s1 += (spB6 * 7) / 2; + } + + if ((temp_s6->unk_15 & 8) || (temp_s6->unk_4D & 0x80)) { + var_s1 /= 2; + } + + if (temp_s6->unk_4E & 1) { + var_s1 /= 2; + } + + if ((func_843783CC(arg1) != 0) && (temp_s3->unk_15 & 0x20)) { + var_s1 = 1; + } + + if ((func_843776FC(temp_fp, temp_s4, 0x72) == 2) && (temp_s4->unk_02 != 0xA5)) { + var_s1 = 1; + } + + if ((func_843776FC(temp_fp, temp_s4, 0x81) == 2) && (temp_s7->unk_05 == 0x81)) { + var_s1 = 1; + } + var_s1 *= (0xD - temp_s6->unk_5C[5]) / 12.0f; + } else { + spF8 = 1; + } + } else { + var_s1 += spB6 * 7; + } + break; + + case 0x12: + case 0x44: + temp_s3 = &temp_s4->unk_12; + + if (arg4) { + if ((temp_s3->unk_5C[0] >= 2) && (temp_s3->unk_2A >= 2)) { + var_s1 += spB6 * 5; + if (func_8437ACB0(arg3, i, arg2, 0x99) != 0) { + var_s1 -= sp6C * 5; + } + + if ((temp_s7->unk_14 >= 0x9A) && (func_843783CC(arg0) != 0)) { + var_s1 -= sp6C * 5; + } + + var_s1 *= (temp_s3->unk_5C[0] - 1) / 12.0f; + if (func_8437AC20(arg3, arg2, 0xFF) != 0) { + var_s1 = 1; + } + + if ((func_843783CC(arg1) != 0) && (temp_s3->unk_15 & 0x20)) { + var_s1 = 1; + } + + if ((func_843776FC(temp_fp, temp_s4, 0x72) == 2) && (temp_s4->unk_02 != 0xA5)) { + var_s1 = 1; + } + } else { + spF8 = 1; + } + } else { + var_s1 += spB6 * 4; + } + break; + + case 0x3B: + if (temp_s4->unk_12.unk_5C[1] >= 3) { + var_s5 = 2; + } + + case 0x13: + case 0x45: + temp_s3 = &temp_s4->unk_12; + + if (arg4) { + if ((temp_s3->unk_5C[1] >= 2) && (temp_s3->unk_2C >= 2)) { + var_s1 += spB7 * 5; + if (temp_s3->unk_4C & 0x80) { + var_s1 += spBA * 5; + } + + if ((temp_s7->unk_14 >= 0x9A) && (func_843783CC(arg0) != 0)) { + var_s1 -= sp6C * 5; + } + + if (func_8437ACB0(arg3, i, arg2, 0x99) != 0) { + var_s1 -= sp6C * 5; + } + + var_s1 *= (temp_s3->unk_5C[1] - 1) / 12.0f; + if (func_8437AC20(arg3, arg2, 0xFF) != 0) { + var_s1 = 1; + } + + if ((func_843776FC(temp_fp, temp_s4, 0x72) == 2) && (temp_s4->unk_02 != 0xA5)) { + var_s1 = 1; + } + } else { + spF8 = 1; + } + } else { + var_s1 += spB7 * 4; + } + var_s1 *= var_s5; + break; + + case 0x14: + case 0x46: + temp_s3 = &temp_s4->unk_12; + + if (arg4) { + if ((temp_s3->unk_5C[2] >= 2) && ((temp_s3->unk_2E < 2) == 0)) { + if (temp_s3->unk_2E >= temp_s6->unk_2E) { + var_s1 += spB7 * 3; + if (func_84377354(temp_s3) < temp_s6->unk_2E) { + if (func_843779C8(temp_fp, temp_fp, 1, &sp104) == 2) { + var_s1 += spBA * 3; + } + + if (func_843779C8(temp_fp, temp_s4, 1, &sp104) == 2) { + var_s1 += spB6 * 3; + } + } + } + + if (func_84377FA4(temp_fp, arg0, &sp103, 1, &sp104) != 0) { + if ((func_84377354(temp_s3) < arg0->unk_14[sp103].unk_12.unk_2E) && + (temp_s3->unk_2E >= arg0->unk_14[sp103].unk_12.unk_2E)) { + var_s1 += spBA * 3; + } + } + + if (func_8437ACB0(arg3, i, arg2, 0x99) != 0) { + var_s1 -= sp6C * 3; + } + + if (func_8437AC20(arg3, arg2, 0xFF) != 0) { + var_s1 = 1; + } + + if ((func_843783CC(arg0) != 0) && (temp_s6->unk_2E < func_84377354(temp_s3))) { + var_s1 = 1; + } + + if ((func_843776FC(temp_fp, temp_s4, 0x72) == 2) && (temp_s4->unk_02 != 0xA5)) { + var_s1 = 1; + } + } else { + spF8 = 1; + } + } else { + if (func_843779C8(temp_fp, temp_fp, 1, &sp104) != 0) { + var_s1 += spBA * 5; + } + var_s1 += spB7 * 3; + } + break; + + case 0x47: + temp_s3 = &temp_s4->unk_12; + + if (arg4) { + if ((temp_s3->unk_5C[3] >= 2) && (temp_s3->unk_30 >= 2)) { + var_s1 += (spB7 * 7); + var_s1 += (spB6 * 7); + if (func_8437ACB0(arg3, i, arg2, 0x99) != 0) { + var_s1 -= sp6C * 7; + } else if (D_80072B00[temp_s7->unk_05 - 1].unk_03 >= 0xB) { + var_s1 += spB6 * 7; + } + + if (func_8437AC20(arg3, arg2, 0xFF) != 0) { + var_s1 -= sp6C * 7; + } + + var_s1 *= (temp_s3->unk_5C[3] - 1) / 12.0f; + if ((func_843783CC(arg0) != 0) && (temp_s7->unk_14 >= 0xE7)) { + var_s1 = 1; + } + + if ((func_843776FC(temp_fp, temp_s4, 0x72) == 2) && (temp_s4->unk_02 != 0xA5)) { + var_s1 = 1; + } + } else { + spF8 = 1; + } + } else { + var_s1 += (spB7 * 2) + (spB6 * 3); + } + break; + + case 0x16: + case 0x48: + temp_s3 = &temp_s4->unk_12; + + if (arg4) { + if (temp_s3->unk_5C[4] >= 2) { + var_s1 += spB6 * 6; + if (func_8437ACB0(arg3, i, arg2, 0x99) != 0) { + var_s1 -= sp6C * 7; + } + + if ((temp_s3->unk_15 & 8) || (temp_s3->unk_4D & 0x80)) { + var_s1 *= 2; + } + + var_s1 *= (temp_s3->unk_5C[4] - 1) / 12.0f; + if ((func_843783CC(arg1) != 0) && (temp_s3->unk_15 & 0x20)) { + var_s1 = 1; + } + + if ((func_843776FC(temp_fp, temp_s4, 0x72) == 2) && (temp_s4->unk_02 != 0xA5)) { + var_s1 = 1; + } + + if ((func_843776FC(temp_fp, temp_s4, 0x81) == 2) && (temp_s7->unk_05 == 0x81)) { + var_s1 = 1; + } + } else { + spF8 = 1; + } + } else { + var_s1 += spB6 * 6; + } + break; + + case 0x18: + temp_s3 = &temp_s4->unk_12; + + if (arg4) { + if ((temp_s3->unk_16[6] != temp_s6->unk_16[6]) || (temp_s3->unk_16[7] != temp_s6->unk_16[7])) { + var_s1 += spB4 * 3; + sp8C = func_8437738C(D_80072B00[temp_s7->unk_05 - 1].unk_03, temp_s6); + if ((sp8C - func_8437738C(D_80072B00[temp_s7->unk_05 - 1].unk_03, temp_s3)) > 0.0) { + var_s1 += spB6 * 3; + } + + if (temp_s7->unk_14 >= 0x9A) { + var_s1 -= sp6C * 3; + } + } + } else if ((temp_s3->unk_16[6] != temp_s6->unk_16[6]) || (temp_s3->unk_16[7] != temp_s6->unk_16[7])) { + var_s1 += spB4 * 3; + } + break; + + case 0x19: + temp_s3 = &temp_s4->unk_12; + + if (arg4) { + var_s0 = 0; + switch (temp_s6->unk_15) { + case 0x0: + break; + + case 0x8: + var_s1 += spB6 * 2; + if (temp_s6->unk_4E & 1) { + var_s1 += spB6; + } + goto case_20; + + case 0x10: + var_s1 += spB6 * 2; + var_s0 = 1; + goto case_20; + + case 0x40: + var_s1 += spB6 * 5; + + default: + case 0x20: + case_20: + var_s0 = 1; + break; + } + + if (temp_s3->unk_15 != 0) { + var_s0 = 1; + switch (temp_s6->unk_15) { + case 8: + var_s1 -= spB7 * 2; + if (temp_s6->unk_4E & 1) { + var_s1 -= spB7 / 2; + } + break; + + case 16: + var_s1 -= (spB7 * 2) / 2; + break; + + case 32: + var_s1 = 1; + break; + + case 64: + var_s1 -= (spB7 * 5); + break; + + default: + var_s1 -= (spB7 * 5) / 2; + } + } + + if (temp_s6->unk_5C[0] != 7) { + var_s1 = (var_s1 + (temp_s6->unk_5C[0] * 6)) - 0x2A; + var_s0 = 1; + } + + if (temp_s6->unk_5C[1] != 7) { + var_s1 = (var_s1 + (temp_s6->unk_5C[1] * 6)) - 0x2A; + var_s0 = 1; + } + + if (temp_s6->unk_5C[2] != 7) { + var_s1 = (var_s1 + (temp_s6->unk_5C[2] * 3)) - 0x15; + var_s0 = 1; + } + + if (temp_s6->unk_5C[3] != 7) { + var_s1 = (var_s1 + (temp_s6->unk_5C[3] * 7)) - 0x31; + var_s0 = 1; + } + + if (temp_s6->unk_5C[5] != 7) { + var_s1 = (var_s1 + (temp_s6->unk_5C[4] * 7)) - 0x31; + var_s0 = 1; + } + + if (temp_s3->unk_5C[0] != 7) { + var_s1 = (var_s1 - (temp_s3->unk_5C[0] * 5)) + 0x23; + var_s0 = 1; + } + + if (temp_s3->unk_5C[1] != 7) { + var_s1 = (var_s1 - (temp_s3->unk_5C[1] * 5)) + 0x23; + var_s0 = 1; + } + + if (temp_s3->unk_5C[2] != 7) { + var_s1 = (var_s1 - (temp_s3->unk_5C[2] * 3)) + 0x15; + var_s0 = 1; + } + + if (temp_s3->unk_5C[3] != 7) { + var_s1 = (var_s1 - (temp_s3->unk_5C[3] * 7)) + 0x31; + var_s0 = 1; + } + + if (temp_s3->unk_5C[4] != 7) { + var_s1 = (var_s1 - (temp_s3->unk_5C[4] * 6)) + 0x2A; + var_s0 = 1; + } + + if (var_s0 == 0) { + spF8 = 1; + } + } else { + var_s1 += spB6 * 5; + } + break; + + case 0x1A: + temp_s3 = &temp_s4->unk_12; + + if (arg4) { + if (temp_s3->unk_4C & 0x80) { + var_s1 += spBA * 3; + if (func_8437ACB0(arg3, i, arg2, 0x99) != 0) { + var_s1 -= sp6C * 3; + } + + if (temp_s7->unk_14 >= 0x81) { + var_s1 = 1; + } + } + + if ((func_843783CC(arg1) != 0) && (temp_s3->unk_15 & 0x20)) { + var_s1 = 1; + } + } + break; + + case 0x2E: + if (arg4) { + if (!(temp_s6->unk_4D & 2)) { + for (j = 0; j < 6; j++) { + if (temp_s6->unk_5C[j] < 6) { + break; + } + } + + if (!(((f32)temp_s6->unk_0C / temp_s6->unk_28) < ((D_843C5564->unk_08 + 0x33) / 255.0f))) { + var_s1 += spB6 * 2; + if ((func_843783CC(arg1) != 0) && (temp_s4->unk_12.unk_15 & 0x20)) { + var_s1 = 1; + } + } + } else { + spF8 = 1; + } + } else { + var_s1 += spB6 * 3; + } + break; + + case 0x2F: + if (arg4) { + if (!(temp_s6->unk_4D & 4)) { + if (D_8438AC60[0] == 1) { + var_s1 += spB7 * 3; + if (temp_s7->unk_14 >= 0x9A) { + var_s1 -= sp6C * 3; + } + } + + if ((func_843776FC(temp_fp, temp_s4, 0x72) == 2) && (temp_s4->unk_02 != 0xA5)) { + var_s1 /= 2; + } + } else { + spF8 = 1; + } + } else if (D_8438AC60[0] == 1) { + var_s1 += spB7 * 3; + } + break; + + case 0x31: + temp_s3 = &temp_s4->unk_12; + + if (arg4) { + if (!(temp_s3->unk_4C & 0x80) && !(temp_s3->unk_4D & 0x10)) { + var_s1 += spB7 * 4; + if ((func_843776FC(temp_fp, temp_fp, 0x75) != 0) || + (func_843776FC(temp_fp, temp_fp, 0x44) != 0) || + (func_843779C8(temp_fp, temp_fp, 0x15, &sp104) != 0)) { + var_s1 += spBA * 4; + } + + if (func_8437ACB0(arg3, i, arg2, 0x99) != 0) { + var_s1 -= sp6C * 4; + } + + if (func_8437AC20(arg3, arg2, 0xFF) != 0) { + var_s1 = 1; + } + + if ((func_843783CC(arg1) != 0) && (temp_s3->unk_15 & 0x20)) { + var_s1 = 1; + } + } else { + spF8 = 1; + } + } else { + var_s1 += spB6 * 4; + } + break; + + case 0x38: + if (arg4) { + if (temp_s6->unk_0C != temp_s6->unk_28) { + var_s1 = 1; + switch (temp_s7->unk_00) { + case 0x69: + case 0x87: + temp_s3 = &temp_s4->unk_12; + if (temp_s3) {} + if ((temp_s3->unk_2E < temp_s6->unk_2E) || + ((temp_s6->unk_2E == temp_s3->unk_2E) && (func_843767E4(1) != 0))) { + if (func_84377068(temp_s6->unk_0C - temp_s7->unk_16, temp_s6->unk_28) >= + (D_843C5564->unk_08 + 0x33)) { + if ((func_843776FC(temp_fp, temp_s4, 0x62) != 0) && (func_843767E4(1) != 0)) { + var_v1_4 = func_8437865C(temp_s3, temp_s6, 0x62); + } else { + var_v1_4 = 0; + } + + if (((((temp_s6->unk_0C - temp_s7->unk_16) - temp_s7->unk_12) - var_v1_4) >= + 0) || + (func_8437AC20(arg3, arg2, 0xFF) != 0)) { + break; + } + } + var_s1 = (spB6 * 7) + 1; + } else if (func_84377068((temp_s6->unk_0C - temp_s7->unk_12) - temp_s7->unk_16, + temp_s6->unk_28) < (D_843C5564->unk_08 + 0x33)) { + var_s1 = (spB6 * 7) + 1; + } + break; + + case 0x9C: + temp_s3 = &temp_s4->unk_12; + if (temp_s3) {} + + if ((temp_s3->unk_2E < temp_s6->unk_2E) || + ((temp_s3->unk_2E == temp_s6->unk_2E) && (func_843767E4(1) != 0))) { + if (func_84377068(temp_s6->unk_0C - temp_s7->unk_16, temp_s6->unk_28) >= + (D_843C5564->unk_08 - 0x33)) { + if ((func_843776FC(temp_fp, temp_s4, 0x62) != 0) && (func_843767E4(1) != 0)) { + var_v1_5 = func_8437865C(temp_s3, temp_s6, 0x62); + } else { + var_v1_5 = 0; + } + + if ((((temp_s6->unk_0C - temp_s7->unk_16) - temp_s7->unk_12) - var_v1_5) >= 0) { + goto end; + } + + if (func_8437AC20(arg3, arg2, 0xFF) != 0) { + goto end; + } + } + var_s1 = (spB6 * 7) + 1; + + } else { + if (func_84377068((temp_s6->unk_0C - temp_s7->unk_12) - temp_s7->unk_16, + temp_s6->unk_28) < (D_843C5564->unk_08 - 0x33)) { + var_s1 = (spB6 * 7) + 1; + } + + if ((func_843779C8(temp_fp, temp_s4, 1, &sp104) == 2) && (temp_s6->unk_15 & 0x40)) { + var_s1 += spB6 * 7; + } + } + end: + if ((temp_s6->unk_15 != 8) && (temp_s6->unk_15 != 0x10) && (temp_s6->unk_15 == 0x40)) { + var_s1 += spB6 * 6; + sp70 = spB6; + if ((func_843779C8(temp_fp, temp_s4, 1, &sp104) == 2) && + (temp_s6->unk_2E < temp_s3->unk_2E)) { + var_s1 += sp70 * 7; + } + } + + if (temp_s7->unk_14 >= 0x81) { + var_s1 >>= 1; + } + break; + } + + if (func_843783CC(arg0) != 0) { + var_s1 *= 2; + } + + if (temp_s7->unk_14 >= 0x81) { + var_s1 >>= 1; + } + } else { + spF8 = 1; + } + } else { + var_s1 += spB6 * 8; + } + break; + + case 0x39: + temp_s3 = &temp_s4->unk_12; + if (temp_s3) {} + + if (((temp_s3->unk_4E & 8) != 0) || (temp_s3->unk_0B == 0x84)) { + if ((temp_s3->unk_4E & 8) != 0) { + if (temp_s3 == D_843C60B8) { + var_v1_6 = (D_84390010[0]->unk_654.unk_BE ^ 0x84) != 0; + } else { + var_v1_6 = (D_84390010[1]->unk_654.unk_BE ^ 0x84) != 0; + } + + if (var_v1_6 == 0) { + break; + } + } + } + var_s1 += spB4 * 3; + break; + + case 0x40: + if (arg4) { + if (!(temp_s6->unk_4E & 2)) { + var_s1 += spB6 * 7; + if (D_80072B00[temp_s7->unk_05 - 1].unk_03 >= 0xB) { + var_s1 += spB6 * 7; + } + + if (temp_s7->unk_14 >= 0x9A) { + var_s1 -= sp6C * 7; + } + + if (temp_s7->unk_14 == 0xFF) { + var_s1 -= sp6C * 7; + } + + if ((func_843776FC(temp_fp, temp_s4, 0x72) == 2) && (temp_s4->unk_02 != 0xA5)) { + var_s1 = 1; + } + + if ((func_843783CC(arg1) != 0) && (temp_s4->unk_12.unk_15 & 0x20)) { + var_s1 = 1; + } + } else { + spF8 = 1; + } + } else { + if (D_80072B00[temp_s7->unk_05 - 1].unk_03 >= 0xB) { + var_s1 += spB6 * 3; + } + var_s1 += spB6 * 3; + } + break; + + case 0x41: + if (arg4) { + if (!(temp_s6->unk_4E & 4)) { + var_s1 += spB6 * 6; + if (D_80072B00[temp_s7->unk_05 - 1].unk_03 < 0xA) { + var_s1 += spB6 * 6; + } + + if (temp_s7->unk_14 >= 0x9A) { + var_s1 -= sp6C * 6; + } + + if (temp_s7->unk_14 == 0xFF) { + var_s1 -= sp6C * 6; + } + + if ((func_843776FC(temp_fp, temp_s4, 0x72) == 2) && (temp_s4->unk_02 != 0xA5)) { + var_s1 = 1; + } + + if ((func_843783CC(arg1) != 0) && (temp_s4->unk_12.unk_15 & 0x20)) { + var_s1 = 1; + } + } else { + spF8 = 1; + } + } else { + if (D_80072B00[temp_s7->unk_05 - 1].unk_03 < 0xA) { + var_s1 += spB6 * 3; + } + var_s1 += spB6 * 3; + } + break; + + case 0x4F: + if (((temp_s6->unk_28 >> 2) < temp_s6->unk_0C) && !(temp_s6->unk_4D & 0x10)) { + if ((func_843783CC(arg0) != 0) && (func_843776FC(temp_fp, temp_s4, 0x90) == 0)) { + if (((D_843C60BC == 0) || ((D_843C60BC != 0) && (temp_s4->unk_12.unk_2E >= temp_s6->unk_2E))) && + (temp_s6->unk_15 == 0) && + ((func_843779C8(temp_fp, temp_s4, 4, &sp104) == 2) || + ((func_843779C8(temp_fp, temp_s4, 4, &sp104) == 1) && (func_843767E4(2) != 0)))) { + var_s1 += spB6 * 7; + if (func_8437828C(temp_fp, temp_s4) != 0) { + var_s1 += spB6 * 7; + } + } + + if (func_84377068(temp_s7->unk_12, temp_s6->unk_28) < 0x3F) { + var_s1 += spB6 * 7; + if (func_843779C8(temp_fp, temp_fp, 2, &sp104) == 2) { + var_s1 += spB6 * 7; + } + } + + if (func_843779C8(temp_fp, temp_s4, 1, &sp104) == 2) { + var_s1 += spB6 * 7; + } + } else { + var_s1 = 1; + } + } else { + spF8 = 1; + } + break; + + case 0x52: + if (arg4) { + var_s1 += spB4 * 3; + if (func_8437ACB0(arg3, i, arg2, 0xB2) != 0) { + var_s1 -= sp6C * 3; + } + + if ((temp_s7->unk_14 >= 0xFB) && (temp_s6->unk_2E < temp_s4->unk_12.unk_2E)) { + var_s1 -= sp6C * 3; + } + } else { + var_s1 += spB4 * 3; + } + break; + + case 0x53: + if (arg4) { + if (func_8437ACB0(arg3, i, arg2, 0) == 0) { + var_s1 += sp6C * 3; + } + + var_s1 += spB4 * 3; + if (func_8437ACB0(arg3, i, arg2, 0xB2) != 0) { + var_s1 -= sp6C * 3; + } + } else { + var_s1 += spB4 * 3; + } + break; + + case 0x54: + temp_s3 = &temp_s4->unk_12; + + if (arg4) { + if ((temp_s3->unk_16[6] != 0x16) && (temp_s3->unk_16[7] != 0x16) && !(temp_s3->unk_4D & 0x90)) { + var_s1 += (spB7 * 3) + (spB6 * 3); + if (temp_s3->unk_4E & 1) { + var_s1 += spBA * 3; + } + + if ((temp_s7->unk_14 >= 0x9A) && (func_843783CC(arg0) != 0)) { + var_s1 -= sp6C * 3; + } + + if (func_843779C8(temp_fp, temp_s4, 0, &sp104) != 0) { + var_s1 -= sp6C * 3; + } + + if (func_8437ACB0(arg3, i, arg2, 0x99) != 0) { + var_s1 -= sp6C * 3; + } + + if (func_8437AC20(arg3, arg2, 0xFF) != 0) { + var_s1 = 1; + } + + if ((func_843776FC(temp_fp, temp_s4, 0x72) == 2) && (temp_s4->unk_02 != 0xA5)) { + var_s1 = 1; + } + } else { + spF8 = 1; + } + } else { + var_s1 += (spB7 * 3) + (spB6 * 3); + } + break; + + case 0x56: + if ((arg4 != 0) && (temp_s4->unk_12.unk_57 != 0)) { + spF8 = 1; + } + break; + } + + var_s0_4 = CLAMP_MAX(temp_s7->unk_01 + sp58, 0xFF); + spC0 = CLAMP_MIN(temp_s7->unk_06 - sp58, 0); + var_s2 = CLAMP_MIN(temp_s7->unk_08 - sp58, 0); + + if ((temp_s4->unk_03 != 0) && (sp9C->unk_03 < 2) && (temp_s7->unk_0C < 0xFF)) { + var_s0_4 *= ((func_843767E4(3) * 0x55) / 255.0f); + } + + if ((temp_s7->unk_00 == 0x44) && (temp_fp->unk_03 != 0) && !(temp_s4->unk_12.unk_4C & 0x80)) { + var_s0_4 = (func_843767E4(2) * var_s0_4) / 2; + } + + temp_s7->unk_01 = var_s0_4; + temp_s7->unk_06 = spC0; + temp_s7->unk_08 = var_s2; + + if (((temp_s7->unk_03 >= 0x12) && (temp_s7->unk_03 < 0x1A)) || + ((temp_s7->unk_03 >= 0x3A) && (temp_s7->unk_03 < 0x42))) { + temp_s3 = &temp_s4->unk_12; + if (temp_s3) {} + + if (temp_s3->unk_4D & 0x12) { + var_s1 = 0; + } + + if ((temp_s3->unk_2E < temp_s6->unk_2E) && (temp_s3->unk_0B == 0x84)) { + var_s1 = 1; + } + } + + if (sp9C->unk_02 != 0) { + if (func_8437738C(sp9C->unk_03, &temp_s4->unk_12) == 0.0f) { + var_s1 = 0; + } + } + + if ((var_s1 < 0) || (spF8 != 0)) { + var_s1 = 0; + } + + temp_s7->unk_24 = var_s1; + + tmp1 = temp_s7->unk_0C * sp54; + tmp2 = temp_s7->unk_10 * sp54; + tmp3 = temp_s7->unk_04 * var_s1; + tmp4 = temp_s7->unk_14 * sp50; + tmp5 = temp_s7->unk_18 * sp50; + tmp6 = temp_s7->unk_1C * sp50; + tmp7 = temp_s7->unk_20 * sp50; + + temp_s7->unk_28 = (((((tmp1 + tmp6 + tmp3) * (var_s0_4 / 255.0f)) + tmp2) - (tmp4 * (spC0 / 255.0f))) - tmp5) - + (tmp7 * (var_s2 / 255.0f)); + + if (arg4) { + if (!(D_843C5564->unk_00 & 0x30)) { + temp_s7->unk_28 = func_843767E4(0xFE) + 1; + if (D_80072B00[temp_s7->unk_00 - 1].unk_02 == 0) { + if (spF8 != 0) { + temp_s7->unk_28 = 0; + } + } else { + if ((D_80072B00[temp_s7->unk_00 - 1].unk_01 != 0x28) && + (D_80072B00[temp_s7->unk_00 - 1].unk_01 != 0x29) && + (func_8437738C(D_80072B00[temp_s7->unk_00 - 1].unk_03, &temp_s4->unk_12) == 0.0f)) { + temp_s7->unk_28 = 0; + } + + if (spFC != 0) { + temp_s7->unk_28 = -1; + } + } + } else if ((spFC != 0) || (temp_s6->unk_32[i] <= 0) || + ((spF8 != 0) && ((sp9C->unk_02 == 0) || (temp_s7->unk_0A == 0))) || + ((sp9C->unk_02 != 0) && (func_8437738C(sp9C->unk_03, &temp_s4->unk_12) == 0.0f))) { + temp_s7->unk_28 = -0x06666666; + } + } + } +} +#else #pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8437B0CC.s") +#endif -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8437E3B4.s") +s32 func_8437E3B4(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { + if (arg1 < arg0) { + return 1; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8437E448.s") + if (arg0 == arg1) { + if (D_843C5564->unk_00 & 0x1000) { + if (arg3 < arg2) { + return 1; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8437E7A4.s") + if ((arg2 == arg3) && (func_843767E4(1) != 0)) { + return 1; + } + } else if (func_843767E4(1) != 0) { + return 1; + } + } + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8437E860.s") +s32 func_8437E448(unk_D_843C60AC* arg0, UNUSED unk_D_843C60AC* arg1, u8 arg2, unk_func_843794CC* arg3) { + u8 i; + s32 sp70; + s32 sp6C; + unk_D_800FCB18* ptr; + s32 var_s3; + s32 var_s4; + s32 var_s2; + u8 sp5B; + u8 var_v1; + s32 var_s5; + s32 tmp; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8437E920.s") + sp5B = D_843C5564->unk_06; + if ((D_843C5564->unk_00 & 0x200000) && (arg0->unk_04 != 1) && (arg0->unk_12.unk_32[0] > 0)) { + return 0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8437E974.s") + var_s2 = 0x80000002; + var_s3 = 0x80000002; + var_s4 = 0x80000002; + var_s5 = 0x80000002; + sp6C = 0; + sp70 = ptr->unk_57 * 0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8437ECFC.s") + D_843C60C0[D_843C60E8].unk_02 = arg2; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8437ED54.s") + ptr = &arg0->unk_12; + for (i = 0; i < arg2; i++) { + D_843C60C0[D_843C60E8].unk_04[i] = arg3[i].unk_28; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8437EDB8.s") + if ((ptr->unk_32[i] > 0) && (arg3[i].unk_00 != ptr->unk_57)) { + if (func_8437E3B4(arg3[i].unk_28, var_s5, arg3[i].unk_0A, var_s3) != 0) { + var_s4 = var_s5; + var_s2 = var_s3; + var_s5 = arg3[i].unk_28; + var_s3 = arg3[i].unk_0A; + sp6C = sp70; + sp70 = i; + } else if (func_8437E3B4(arg3[i].unk_28, var_s4, arg3[i].unk_0A, var_s2) != 0) { + var_s4 = arg3[i].unk_28; + var_s2 = arg3[i].unk_0A; + sp6C = i; + } + } + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8437EFBC.s") + if (arg2 >= 2) { + ptr = &arg0->unk_12; + var_v1 = 0; + for (i = 0; i < arg2; i++) { + if ((ptr->unk_32[i] > 0) && (arg3[i].unk_03 != 0x38)) { + var_v1 = 1; + } + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8437F068.s") + for (i = 0; i < arg2 - 1; i++) { + if (arg3[i].unk_28 != arg3[i + 1].unk_28) { + var_v1 = 0; + } + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8437F2EC.s") + if (var_v1) { + ptr = &arg0->unk_12; + do { + if (D_843C5564->unk_06) {} + i = func_843767E4(arg2 - 1); + } while (arg3[i].unk_03 == 0x38 || ptr->unk_32[0, i] <= 0); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8437F85C.s") + if (sp6C == i) { + sp6C = sp70; + sp70 = i; + } + } + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8437FB14.s") + if (func_843767E4(0xFE) < sp5B) { + tmp = arg0->unk_12.unk_32[sp6C]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8437FC10.s") + if ((tmp != 0) && (tmp > 0) && ((arg3[sp6C].unk_24 >= 2) || (arg3[sp6C].unk_0A != 0))) { + return sp6C; + } + } + return sp70; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8437FCCC.s") +s32 func_8437E7A4(void) { + u8 i; + unk_func_843794CC sp2C[4]; + for (i = 0; i < 4 && D_843C60B4->unk_1F[i] != 0; i++) {} + + func_843794CC(D_843C60AC, D_843C60B0, 0, 0, i, sp2C); + func_8437B0CC(D_843C60A4, D_843C60A8, i, sp2C, 1); + return func_8437E448(D_843C60AC, D_843C60B0, i, sp2C); +} + +u16 func_8437E860(u8 arg0, u8 arg1) { + u8 sp1C = (0xFF - D_843C5564->unk_04) / 17; + u32 temp_t0 = (sp1C << 0xC) + 0xFFF; + + return (((((s32)sqrtf(temp_t0) / 4) + ((arg0 + sp1C) * 2)) * arg1) / 100) + 5; +} + +u8 func_8437E920(u8 arg0) { + u8 var_a1 = D_80072B00[arg0 - 1].unk_05; + + var_a1 += ((var_a1 / 5 >= 8) ? 7 : var_a1 / 5) * 3; + return var_a1; +} + +void func_8437E974(unk_D_800AE540_0004* arg0, unk_D_800AE540_0004* arg1, unk_D_843C60A4* arg2, u8 arg3) { + u8 j; + u8 k; + u8 i; + u8 var_v1; + u8 sp73; + unk_D_80070F84* sp6C; + unk_func_80026268_arg0* sp64[2]; + unk_func_80026268_arg0* temp_s7; + + sp64[0] = arg0->unk_01C; + if (arg1 != NULL) { + sp64[1] = arg1->unk_01C; + } else { + sp64[1] = NULL; + } + + for (i = 0; i < arg2->unk_00; i++) { + temp_s7 = sp64[i]; + if (i) { + var_v1 = arg2->unk_01[0]; + } else { + var_v1 = 0; + } + + for (j = 0; j < arg2->unk_01[i]; j++) { + sp73 = temp_s7[j].unk_24; + sp6C = &D_80070FA0[temp_s7[j].unk_00.unk_00 - 1]; + + arg2->unk_14[j + var_v1].unk_00 = j; + arg2->unk_14[j + var_v1].unk_04 = 0; + arg2->unk_14[j + var_v1].unk_12.unk_0B = temp_s7[j].unk_00.unk_00; + arg2->unk_14[j + var_v1].unk_12.unk_16[6] = temp_s7[j].unk_06; + arg2->unk_14[j + var_v1].unk_12.unk_16[7] = temp_s7[j].unk_07; + arg2->unk_14[j + var_v1].unk_12.unk_26 = temp_s7[j].unk_24; + + _bcopy(temp_s7[j].unk_09, &arg2->unk_14[j + var_v1].unk_12.unk_1F[0], 4); + + for (k = 0; k < 4; k++) { + if (arg3) { + arg2->unk_14[j + var_v1].unk_12.unk_32[k] = + func_8437E920(arg2->unk_14[j + var_v1].unk_12.unk_1F[k]); + } else { + arg2->unk_14[j + var_v1].unk_12.unk_32[k] = temp_s7[j].unk_20[k] & 0x3F; + } + } + + for (k = 0; k < 6; k++) { + arg2->unk_14[j + var_v1].unk_12.unk_5C[k] = 7; + } + + if (!arg3 && (D_843C5564->unk_00 & 0x02000000)) { + arg2->unk_14[j + var_v1].unk_01 = 0xF0; + } else { + arg2->unk_14[j + var_v1].unk_01 = 0; + } + + if (arg3) { + arg2->unk_14[j + var_v1].unk_12.unk_28 = func_8437E860(sp6C->unk_01, sp73) + sp73 + 5; + } else { + arg2->unk_14[j + var_v1].unk_12.unk_28 = temp_s7[j].unk_26; + } + + if (arg3) { + arg2->unk_14[j + var_v1].unk_12.unk_2A = func_8437E860(sp6C->unk_02, sp73); + } else { + arg2->unk_14[j + var_v1].unk_12.unk_2A = temp_s7[j].unk_28; + } + + if (arg3) { + arg2->unk_14[j + var_v1].unk_12.unk_2C = func_8437E860(sp6C->unk_03, sp73); + } else { + arg2->unk_14[j + var_v1].unk_12.unk_2C = temp_s7[j].unk_2A; + } + + if (arg3) { + arg2->unk_14[j + var_v1].unk_12.unk_2E = func_8437E860(sp6C->unk_04, sp73); + } else { + arg2->unk_14[j + var_v1].unk_12.unk_2E = temp_s7[j].unk_2C; + } + + if (arg3) { + arg2->unk_14[j + var_v1].unk_12.unk_30 = func_8437E860(sp6C->unk_05, sp73); + } else { + arg2->unk_14[j + var_v1].unk_12.unk_30 = temp_s7[j].unk_2E; + } + + arg2->unk_14[j + var_v1].unk_12.unk_0C = arg2->unk_14[j + var_v1].unk_12.unk_28; + arg2->unk_14[j + var_v1].unk_12.unk_38 = arg2->unk_14[j + var_v1].unk_12.unk_2A; + arg2->unk_14[j + var_v1].unk_12.unk_3A = arg2->unk_14[j + var_v1].unk_12.unk_2C; + arg2->unk_14[j + var_v1].unk_12.unk_3C = arg2->unk_14[j + var_v1].unk_12.unk_2E; + arg2->unk_14[j + var_v1].unk_12.unk_3E = arg2->unk_14[j + var_v1].unk_12.unk_30; + } + } +} + +s32 func_8437ECFC(unk_D_843C60A4* arg0, u8* arg1, u8 arg2) { + u8 i; + s32 var_v1 = 1; + + for (i = 0; i < arg2; i++) { + if (arg0->unk_11 == arg1[i]) { + var_v1 = 0; + } + } + + return var_v1; +} + +s32 func_8437ED54(unk_D_843C60A4* arg0, u8* arg1, u8 arg2, u8 arg3) { + u8 i; + s32 var_v1 = 0; + + for (i = 0; i < arg2; i++) { + if (arg3 == arg1[i]) { + var_v1 = 1; + } + } + + return var_v1; +} + +s32 func_8437EDB8(unk_D_843C60A4* arg0, u8* arg1, u8 arg2, s32 arg3) { + u8 i; + u8 j; + u8 k; + u16 var_a2; + u16 var_a3; + u16 var_t0; + u16 var_t1; + s32 var_v1; + s32 temp_t0; + + switch (arg3) { + case 1: + case 2: + case 3: + var_t0 = 0x32; + var_a3 = 0x37; + var_a2 = 0x9B; + break; + + case 4: + var_t0 = 0x19; + var_a3 = 0x1E; + var_a2 = 0x50; + break; + + case 5: + var_t0 = 0xF; + var_a3 = 0x14; + var_a2 = 0x32; + break; + + default: + return 1; + } + + var_v1 = 0; + + for (i = 0; i < arg0->unk_03 - 2; i++) { + for (j = i + 1; j < arg0->unk_03 - 1; j++) { + for (k = j + 1; k < arg0->unk_03; k++) { + if (var_a2 >= + (arg0->unk_14[i].unk_12.unk_26 + arg0->unk_14[j].unk_12.unk_26 + arg0->unk_14[k].unk_12.unk_26)) { + var_v1 = 1; + } + } + } + } + + if (var_v1 != 0) { + var_t1 = 0; + + for (i = 0; i < arg2; i++) { + temp_t0 = arg0->unk_14[arg1[i]].unk_12.unk_26; + if (temp_t0 < var_t0) { + return 0; + } + + if (var_a3 < temp_t0) { + return 0; + } + + var_t1 += temp_t0; + } + + if (var_a2 < var_t1) { + return 0; + } + } + + return var_v1; +} + +s32 func_8437EFBC(unk_D_843C60A4* arg0, u8* arg1, u8 arg2, u8 arg3) { + s32 sp1C = 0; + + if (func_8437EDB8(arg0, arg1, arg2, arg3) != 0) { + if (D_843C5564->unk_00 & 0x800000) { + if (func_8437ED54(arg0, arg1, arg2, 0) != 0) { + sp1C = 1; + } + } else if (D_843C5564->unk_00 & 0x100000) { + if (func_8437ECFC(arg0, arg1, arg2) != 0) { + sp1C = 1; + } + } else { + sp1C = 1; + } + } + return sp1C; +} + +typedef struct unk_func_8437F068_sp28 { + /* 0x00 */ u8 unk_00; + /* 0x01 */ u8 unk_01; +} unk_func_8437F068_sp28; // size = 0x2 + +s32 func_8437F068(unk_D_843C60A4* arg0, u8* arg1, u8 arg2) { + u8 i; + u8 j; + unk_func_8437F068_sp28 sp28[3]; + f32 var_fv0; + s32 var_a2; + unk_D_8438ACF0* var_a3; + + for (j = 0; j < arg2; j++) { + sp28[j].unk_00 = arg0->unk_14[arg1[j]].unk_12.unk_16[6]; + sp28[j].unk_01 = arg0->unk_14[arg1[j]].unk_12.unk_16[7]; + } + + for (i = 0; i < 9; i++) { + var_a2 = 0; + + for (j = 0; j < arg2; j++) { + var_fv0 = 1.0f; + + var_a3 = &D_8438ACF0[0]; + while (var_a3->unk_00 != 0xFF) { + if ((var_a3->unk_00 == i) && + ((var_a3->unk_01 == sp28[j].unk_00) || (var_a3->unk_01 == sp28[j].unk_01))) { + var_fv0 = (var_a3->unk_02 * var_fv0) / 10.0f; + } + var_a3++; + } + + if (var_fv0 < 1.0) { + var_a2--; + } + + if (var_fv0 > 1.0) { + var_a2++; + } + } + + if (var_a2 >= 2) { + return 1; + } + } + + for (i = 0x14; i < 0x1B; i++) { + var_a2 = 0; + + for (j = 0; j < arg2; j++) { + var_fv0 = 1.0f; + + var_a3 = &D_8438ACF0[0]; + while (var_a3->unk_00 != 0xFF) { + if ((var_a3->unk_00 == i) && + ((var_a3->unk_01 == sp28[j].unk_00) || (var_a3->unk_01 == sp28[j].unk_01))) { + var_fv0 = (var_a3->unk_02 * var_fv0) / 10.0f; + } + var_a3++; + } + + if (var_fv0 < 1.0) { + var_a2--; + } + + if (var_fv0 > 1.0) { + var_a2++; + } + } + + if (var_a2 >= 2) { + return 1; + } + } + + return 0; +} + +s32 func_8437F2EC(unk_D_843C60A4* arg0, unk_D_843C60A4* arg1, u8* arg2, s32* arg3) { + u8 i; + u8 j; + u8 k; + u8 l; + unk_D_800FCB18* temp_s3; + u8 sp13E; + u8 m; + u8 sp135; + u8 sp134; + u8 var_v1_2; + u8 tmp; + s32 sp12C; + s32 sp128; + s32 var_s2; + unk_func_843794CC sp74[4]; + u8 sp5C; + u8 temp_fp; + u8 var_s0; + unk_D_843C60AC* temp_s7; + s32 var_v0; + UNUSED s32 pad; + + sp134 = 0; + sp135 = 0; + sp12C = 0x80000002; + + for (i = 0; i < arg0->unk_00; i++) { + sp13E = (i) ? arg0->unk_01[0] : 0; + sp5C = arg0->unk_01[i] + sp13E; + + for (j = sp13E; j < sp5C; j++) { + temp_s7 = &arg0->unk_14[j]; + arg0->unk_10 = j; + temp_s3 = &temp_s7->unk_12; + arg3[j] = 0; + + if (arg2 != NULL) { + for (k = 0; k < arg1->unk_06; k++) { + tmp = arg2[k]; + arg1->unk_10 = tmp; + if (temp_s7 == D_843C60B0) { + var_s2 = var_s0 = 1; + } else { + for (var_s0 = 0; var_s0 < 4 && temp_s3->unk_1F[var_s0] != 0; var_s0++) {} + + var_s2 = var_s0; + if (var_s0 == 0) { + temp_s3->unk_1F[0] = 0xA5; + var_s2 = var_s0 = 1; + } + } + + func_843794CC(temp_s7, &arg1->unk_14[tmp], 0, 0, var_s0, sp74); + func_8437B0CC(arg0, arg1, var_s0, sp74, 0); + + var_v0 = 0; + for (m = 0; m < var_s2; m++) { + var_v0 += sp74[m].unk_28; + } + var_v0 /= var_s2; + arg3[j] += var_v0; + } + } else { + for (k = 0; k < arg1->unk_00; k++) { + var_v1_2 = (k) ? arg1->unk_01[0] : 0; + temp_fp = arg1->unk_01[k] + var_v1_2; + + for (tmp = var_v1_2; tmp < temp_fp; tmp++) { + arg1->unk_10 = tmp; + if (temp_s7 == D_843C60B0) { + var_s2 = var_s0 = 1; + } else { + for (var_s0 = 0; var_s0 < 4 && temp_s3->unk_1F[var_s0] != 0; var_s0++) {} + + var_s2 = var_s0; + if (var_s0 == 0) { + temp_s3->unk_1F[0] = 0xA5; + var_s2 = var_s0 = 1; + } + } + + func_843794CC(temp_s7, &arg1->unk_14[tmp], 0, 0, var_s0, sp74); + func_8437B0CC(arg0, arg1, var_s0, sp74, 0); + + var_v0 = 0; + for (m = 0; m < var_s2; m++) { + var_v0 += sp74[m].unk_28; + } + + var_v0 /= var_s2; + arg3[j] += var_v0; + } + } + } + + if ((sp12C < arg3[j]) || ((sp12C == arg3[j]) && (func_843767E4(1) != 0))) { + sp128 = sp12C; + sp12C = arg3[j]; + sp134 = sp135; + sp135 = j; + } else if ((sp128 < arg3[j]) || ((sp128 == arg3[j]) && (func_843767E4(1) != 0))) { + sp128 = arg3[j]; + sp134 = j; + } + } + } + + if ((D_843C5564->unk_00 & 0x100000) && (func_843767E4(1) != 0)) { + arg0->unk_11 = sp134; + } else { + arg0->unk_11 = sp135; + } + return 1; +} + +typedef struct unk_func_8437F85C_sp74 { + /* 0x00 */ s32 unk_00[6]; +} unk_func_8437F85C_sp74; // size >= 0x20 + +s32 func_8437F85C(unk_D_843C60A4* arg0, s32* arg1, s32 arg2, unk_func_8437F85C_arg3* arg3, u8* arg4, u8 arg5, u8 arg6) { + u8 i; + u8 j; + u8 k; + u8 var_fp; + u8 sp93; + s32 pad[1]; + unk_func_8437F85C_sp74 sp74; + s32 pad2[3]; + unk_func_8437F85C_arg3 sp5C; + + sp93 = 0; + i = 0; + var_fp = 0; + + do { + if ((arg1[i] < arg2) || ((arg2 == arg1[i]) && (func_843767E4(1) != 0))) { + if (func_8437EFBC(arg0, arg4, arg5, arg6) != 0) { + + if (i < 7) { + for (j = 0; j < 7 - i; j++) { + sp74.unk_00[j] = arg1[i + j]; + } + } + + if (i < 7) { + // clang-format off + for (j = 0; j < 7 - i; j++) { arg1[i + j + 1] = sp74.unk_00[j]; } + // clang-format on + } + + if (i < 7) { + for (j = 0; j < 7 - i; j++) { + for (k = 0; k < 3; k++) { + sp5C.unk_00[j][k] = arg3->unk_00[(i + j)][k]; + } + } + } + + if (i < 7) { + for (j = 0; j < 7 - i; j++) { + for (k = 0; k < 3; k++) { + arg3->unk_00[(i + j + 1)][k] = sp5C.unk_00[j][k]; + } + } + } + + arg1[i] = arg2; + + for (k = 0; k < 3; k++) { + arg3->unk_00[i][k] = arg4[k]; + } + + sp93 = 1; + var_fp = 1; + } + } + i++; + } while (i < 8 && var_fp != 1); + + return sp93; +} + +void func_8437FB14(unk_D_843C60A4* arg0, u8* arg1, s32 arg2) { + u8 i; + u8 j; + s32 var_s2; + + do { + for (i = 0; i < arg0->unk_06; i++) { + do { + var_s2 = 1; + arg1[i] = func_843767E4(arg0->unk_03 - 1); + + for (j = 0; j < i; j++) { + if ((i != j) && (arg1[i] == arg1[j])) { + var_s2 = 0; + } + } + } while (var_s2 == 0); + } + } while (func_8437EDB8(arg0, arg1, arg0->unk_06, arg2) == 0); +} + +s32 func_8437FC10(unk_D_843C60A4* arg0) { + s32 var_v1; + + if ((arg0->unk_14[arg0->unk_10].unk_12.unk_0C > 0) && (func_843783CC(arg0) != 0)) { + return 0; + } + + do { + var_v1 = func_843767E4(arg0->unk_06 - 1); + if (arg0->unk_04[0] < var_v1) { + var_v1 += arg0->unk_01[0]; + } + } while (arg0->unk_14[var_v1].unk_12.unk_0C <= 0 || var_v1 == arg0->unk_10); + + return var_v1; +} + +s32 func_8437FCCC(unk_D_800FCB18* arg0) { + u8 i; + u8 var_a1; + s32 var_a2; + s32 var_a3; + + var_a2 = 0; + var_a3 = 0; + var_a1 = 0; + + for (i = 0; i < 4; i++) { + if (arg0->unk_1F[i] != 0) { + var_a1++; + if (arg0->unk_32[i] > 0) { + var_a3 = 1; + } + } + } + + if (var_a3 != 0) { + do { + var_a2 = func_843767E4(var_a1 - 1); + } while (arg0->unk_1F[var_a2] == 0 || arg0->unk_32[var_a2] <= 0); + } + return var_a2; +} + +#ifdef NON_MATCHING +s32 func_8437FD74(unk_D_843C60A4* arg0, s32* arg1, s32* arg2, u8 arg3) { + u8 i; + u8 j; + u8 k; + u8 l; + u8 m; + u8 spBF; + u8 spBE; + u8 spBA; + s32 sp94[8]; + u8 sp90[3]; + u8 sp78[0x18]; + u8 sp76; + s32 sp60; + s32 sp5C; + s32 temp_t2; + s32 temp_t8; + u8 temp_v0_2; + s32 temp_v0_3; + s32 temp_v0_4; + s32 temp_v1_2; + s32 var_a0_2; + u8 var_a0_3; + u8 var_a1; + s32 var_s0; + u8 var_s2; + s32 var_s3_2; + s32 var_v0; + s32 var_v0_2; + s32 var_v1_3; + s32 temp_t0; + u8 var_s1; + u8 var_s3; + u8 var_v1_2; + u8 temp_v0; + u8 temp_v1; + u8 var_a0; + u8 var_a3; + u8 var_t1; + u8 var_v1; + u8 tmp1; + u8 tmp2; + + sp76 = 0; + + for (i = 0; i < arg0->unk_00; i++) { + if (i) { + spBA = arg0->unk_04[0]; + } else { + spBA = 0; + } + + if (i) { + if ((arg2 && arg2) && arg2) {} + var_a3 = arg0->unk_01[0]; + } else { + var_a3 = 0; + } + + for (j = 0; j < 8; j++) { + sp94[j] = 0x80000002; + } + + sp5C = arg0->unk_04[i]; + + if (sp5C < arg0->unk_01[i]) { + if (arg0->unk_04[i] == 3) { + var_s2 = 0; + temp_v0_2 = arg0->unk_01[i] + var_a3; + + for (j = var_a3; j < temp_v0_2 - 2; j++) { + for (k = j + 1; k < temp_v0_2 - 1; k++) { + for (l = k + 1; l < temp_v0_2; l++) { + var_s0 = arg2[j] + arg2[k] + arg2[l]; + + sp90[0] = j; + sp90[1] = k; + sp90[2] = l; + + if ((D_843C5564->unk_00 & 0x800) && (func_8437F068(arg0, sp90, 3) != 0)) { + var_s0 -= abs_asm(var_s0) * 0.2; + } + + if (func_8437F85C(arg0, sp94, var_s0, sp78, sp90, 3, arg3) != 0) { + sp76 = 1; + var_s2++; + if (var_s2 >= 9) { + var_s2 = 8; + } + } + } + } + } + + for (j = 0; j < var_s2; j++) { + for (k = 0; k < 3; k++) {} + } + + if (var_s2 > 0) { + var_a0_3 = 1; + if (D_843C5564->unk_00 & 0x10000) { + var_a0_3 = 2; + } + + if (D_843C5564->unk_00 & 0x20000) { + var_a0_3 *= 4; + } + + if (var_a0_3 < var_s2) { + var_a1 = var_a0_3; + } else { + var_a1 = var_s2; + } + + // var_a1 = (var_a0_3 < var_s2) ? var_a0_3 : var_s2; + + spBF = func_843767E4(var_a1 - 1); + _bcopy(&sp78[spBF * 3], &arg1[spBA], 3); + } else { + func_8437FB14(arg0, arg1, arg3); + sp76 = 1; + } + continue; + } + } else { + for (m = 0; m < arg0->unk_01[i]; m++) { + arg1[m + spBA] = m + var_a3; + } + sp76 = 1; + } + } + + return sp76; +} +#else #pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8437FD74.s") +#endif -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84380164.s") +s32 func_84380164(unk_D_843C60A4* arg0, unk_D_843C60A4* arg1, u8* arg2, u8* arg3, s32* arg4) { + u8 i; + u8 j; + u8 var_s1; + u8 sp13C; + u8 sp13B; + u8 sp13A; + unk_D_800FCB18* temp_v0; + unk_D_843C60AC* temp_s6; + u8 sp12F; + UNUSED u8 sp12E; + u8 sp12D; + UNUSED u8 sp12C; + u16 sp12A; + s32 sp124; + s32 sp120; + unk_D_843C60AC* temp_s7; + unk_func_843794CC sp6C[4]; + s32 var_s0_2; + s32 var_s2; + s32 var_v0; + UNUSED s32 pad; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_843804F4.s") + sp12A = 0; + sp120 = 0x80000002; + sp124 = 0x80000002; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84380598.s") + for (i = 0; i < arg0->unk_06; i++) { + if (sp124 < arg4[arg2[i]]) { + sp13C = i; + sp124 = arg4[arg2[i]]; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84380870.s") + if (sp12A < arg0->unk_14[arg2[i]].unk_12.unk_2E) { + sp13B = i; + sp12A = arg0->unk_14[arg2[i]].unk_12.unk_2E; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84380B40.s") + if (arg3 != NULL) { + arg0->unk_10 = arg2[i]; + temp_s6 = &arg0->unk_14[arg2[i]]; + arg1->unk_10 = *arg3; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84380EB4.s") + temp_s7 = &arg1->unk_14[*arg3]; + temp_v0 = &temp_s6->unk_12; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84380F7C.s") + for (var_s1 = 0; var_s1 < 4 && temp_v0->unk_1F[var_s1] != 0; var_s1++) {} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_843811D0.s") + if (var_s1) { + func_843794CC(temp_s6, temp_s7, 0, 0, var_s1, sp6C); + func_8437B0CC(arg0, arg1, var_s1, sp6C, 0); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_843813D4.s") + var_v0 = 0; + for (j = 0; j < var_s1; j++) { + var_v0 += sp6C[j].unk_28; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84381584.s") + var_v0 /= var_s1; + if (sp120 < var_v0) { + sp13A = i; + sp120 = var_v0; + } + } + } + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84381BD4.s") + var_s2 = 0x80000002; + sp12F = 0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84381C78.s") + for (i = 0; i < arg0->unk_06; i++) { + var_s0_2 = 0; + if (sp13C == i) { + if (D_843C5564->unk_00 & 0x40000) { + var_s0_2 = -0x3E7; + } else { + var_s0_2 = 0xC; + } + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84381DD4.s") + if (sp13B == i) { + var_s0_2 += 7; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84381F50.s") + var_s0_2 += func_843779C8(&arg0->unk_14[arg2[i]], &arg0->unk_14[arg2[i]], 0, &sp12D) * 0xA; + if ((arg3 != NULL) && (sp13A == i)) { + var_s0_2 += 0x23; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_843820B8.s") + if (var_s2 < var_s0_2) { + sp12F = i; + var_s2 = var_s0_2; + } + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8438220C.s") + if (!(D_843C5564->unk_00 & 0x80000)) { + sp12F = func_843767E4(arg0->unk_06 - 1); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8438223C.s") + if ((sp12F < 0) || (sp12F >= arg0->unk_06)) { + sp12F = 0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8438249C.s") + i = *arg2; + *arg2 = arg2[sp12F]; + arg2[sp12F] = i; + return 1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8438255C.s") +s32 func_843804F4(unk_D_843C60A4* arg0, unk_D_843C60A4* arg1, u8* arg2, u8* arg3, s32 arg4) { + s32 sp20[12]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_843825D8.s") + bzero(&sp20, 0x30); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84382614.s") + if (func_8437F2EC(arg0, arg1, arg3, &sp20) == 0) { + return 0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84382668.s") + if (func_8437FD74(arg0, arg2, &sp20, arg4) == 0) { + return 0; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84382840.s") + if (func_84380164(arg0, arg1, arg2, arg3, &sp20) == 0) { + return 0; + } + return 1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84382ACC.s") +void func_84380598(void) { + s32 i; + s32 j; + s32 temp_t1; + u8 var_v0; + u8 var_v1; + s32 var_t0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_843831A0.s") + var_v0 = 0; + var_v1 = 0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_8438363C.s") + for (i = 0; i < D_843C60A4->unk_00; i++) { + if (i != 0) { + var_t0 = D_843C60A4->unk_01[0]; + } else { + var_t0 = 0; + } + temp_t1 = D_843C60A4->unk_04[i] + var_t0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84383B5C.s") + for (j = var_t0; j < temp_t1; j++) { + if (D_843C60A4->unk_14[j].unk_12.unk_0C > 0) { + var_v1++; + } + } + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_84384124.s") + for (i = 0; i < D_843C60A8->unk_00; i++) { + if (i != 0) { + var_t0 = D_843C60A8->unk_01[0]; + } else { + var_t0 = 0; + } + temp_t1 = D_843C60A8->unk_04[i] + var_t0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_361050/func_843841C4.s") + for (j = var_t0; j < temp_t1; j++) { + if (D_843C60A8->unk_14[j].unk_12.unk_0C > 0) { + var_v0++; + } + } + } + + if (var_v1 >= (var_v0 * 2)) { + D_843C60A4->unk_13 = 0; + D_843C60A8->unk_13 = 2; + } else if (var_v0 >= (var_v1 * 2)) { + D_843C60A4->unk_13 = 2; + D_843C60A8->unk_13 = 0; + } else { + D_843C60A8->unk_13 = 1; + D_843C60A4->unk_13 = D_843C60A8->unk_13; + } +} + +u8 func_84380870(unk_D_843C60A4* arg0, unk_D_843C60A4* arg1) { + u8 i; + u8 j; + u8 k; + u8 l; + UNUSED u8 sp8D; + UNUSED u8 sp8D1; + UNUSED u8 sp8D2; + u8 sp90; + u8 sp8F; + u8 sp8E; + unk_D_843C60AC* temp_s0; + unk_D_843C60AC* temp_s1; + f32 temp_fs0; + f32 var_fs1; + s32 var_s4; + s32 var_s5; + u8 var_a0; + u8 var_a1; + u8 var_a2; + UNUSED s32 pad; + + sp8F = 0; + var_fs1 = -3.4028235e38f; + + for (i = 0; i < arg0->unk_00; i++) { + var_a1 = i ? arg0->unk_01[0] : 0; + + if (arg0->unk_04[i] == arg0->unk_07[i]) { + var_a0 = arg0->unk_04[i]; + } else { + var_a0 = arg0->unk_01[i]; + } + + for (j = var_a1; j < var_a0 + var_a1; j++) { + var_s4 = 0; + var_s5 = 0; + if ((arg0->unk_14[j].unk_12.unk_0C > 0) && + (!(arg0->unk_14[j].unk_12.unk_15 & 0x20) || (func_843783CC(arg0) != 0))) { + for (k = 0; k < arg1->unk_00; k++) { + if (k) { + var_a2 = arg1->unk_01[0]; + } else { + var_a2 = 0; + } + + if (arg1->unk_04[k] == arg1->unk_07[k]) { + sp90 = arg1->unk_04[k]; + } else { + sp90 = arg1->unk_01[k]; + } + + for (l = var_a2; l < sp90 + var_a2; l++) { + temp_s0 = &arg0->unk_14[j]; + temp_s1 = &arg1->unk_14[l]; + if (arg1->unk_14[l].unk_12.unk_0C > 0) { + var_s5 += func_843791E4(temp_s0, temp_s1, &sp8E, 0xA); + var_s4 += func_843791E4(temp_s1, temp_s0, &sp8E, 0xA); + } + } + + temp_fs0 = (f32)(var_s5 - var_s4) / sp90; + if ((var_fs1 < temp_fs0) || ((temp_fs0 == var_fs1) && (func_843767E4(1) != 0))) { + var_fs1 = temp_fs0; + sp8F = i; + } + } + } + } + } + + return sp8F; +} + +u8 func_84380B40(unk_D_843C60AC* arg0, s32* arg1, s32* arg2, unk_D_843C60A4* arg3, u8 arg4, s32 arg5) { + u8 i; + u8 j; + unk_D_800FCB18* temp_s5; + unk_D_800FCB18* ptr; + s32 temp_v0_2; + s32 var_a0; + s32 sp70 = 0x80000002; + u8 sp6F = 0; + u8 sp6E = 0; + u8 sp6D = 0xFF; + u8 temp_v1_2; + u16 var_s1; + s32 var_s1_2; + u16 var_s3; + u8 var_a1; + UNUSED s32 pad; + + *arg2 = 0; + *arg1 = 0; + + for (i = 0; i < arg3->unk_00; i++) { + var_a1 = (i) ? arg3->unk_01[0] : 0; + + if (arg3->unk_04[i] == arg3->unk_07[i]) { + var_a0 = arg3->unk_04[i]; + } else { + var_a0 = arg3->unk_01[i]; + } + temp_v1_2 = var_a1 + (0, var_a0); + + for (j = var_a1; j < temp_v1_2; j++) { + if ((j != arg3->unk_10) && (arg3->unk_14[j].unk_12.unk_0C > 0)) { + temp_s5 = &arg0->unk_12; + ptr = &arg3->unk_14[j].unk_12; + + if ((arg5 != 0) && (D_843C60BC == 0)) { + var_s3 = func_8437865C(temp_s5, &arg3->unk_14[j].unk_12, arg4); + } else { + var_s3 = 0; + } + sp6E = arg4; + + if (temp_s5->unk_2E < ptr->unk_2E) { + // clang-format off + if (var_s3 < ptr->unk_0C) { var_s1 = func_84378B0C(&arg3->unk_14[j], arg0, &sp6F, 4); } else { var_s1 = 0; } + // clang-format on + + if (var_s1 < temp_s5->unk_0C) { + var_s3 += func_84378B0C(arg0, &arg3->unk_14[j], &sp6E, 4); + } + } else { + var_s3 += func_84378B0C(arg0, &arg3->unk_14[j], &sp6E, 4); + if (var_s3 < ptr->unk_0C) { + var_s1 = func_84378B0C(&arg3->unk_14[j], arg0, &sp6F, 4); + } else { + var_s1 = 0; + } + } + + if (ptr->unk_15 & 7) { + var_s1 = 0; + } + + if (ptr->unk_15 & 0x20) { + var_s1 = 0; + if ((D_80072B00[arg4 - 1].unk_01 != 4) && (D_80072B00[arg4 - 1].unk_01 != 0x22)) { + var_s3 = ptr->unk_0C; + } + } + + var_s1_2 = func_84377068(var_s1, temp_s5->unk_0C); + temp_v0_2 = func_84377068(var_s3, ptr->unk_0C); + + if (temp_v0_2 == 0xFF) { + var_s1_2 = 0; + } + + if ((!(ptr->unk_15 & 0x20) || (D_80072B00[arg4 - 1].unk_01 == 4) || + (D_80072B00[arg4 - 1].unk_01 == 0x22)) && + ((sp70 < (var_s1_2 - temp_v0_2)) || + ((sp70 == (var_s1_2 - temp_v0_2)) && (func_843767E4(1) != 0)))) { + sp70 = var_s1_2 - temp_v0_2; + *arg1 = var_s1_2; + *arg2 = temp_v0_2; + sp6D = j; + } + } + } + } + + return sp6D; +} + +s32 func_84380EB4(unk_D_843C60AC* arg0, unk_D_843C60AC* arg1, u8 arg2) { + u8 sp2F; + u16 temp_v0; + unk_D_800FCB18* sp20 = &arg0->unk_12; + unk_D_800FCB18* sp1C = &arg1->unk_12; + + if (func_843779C8(arg0, arg0, 0, &sp2F) != 0) { + if ((func_8437865C(sp20, sp1C, sp2F) != 0) && (sp1C->unk_2E < sp20->unk_2E)) { + temp_v0 = func_8437865C(sp1C, sp20, arg2); + + if (sp20->unk_0C < temp_v0) { + return 0x99; + } + + if (sp20->unk_0C < (temp_v0 * 2)) { + return 0x99; + } + } + } + return 0; +} + +s32 func_84380F7C(unk_func_8438220C* arg0) { + s32 idx = arg0->unk_B4; + unk_func_843794CC* temp_s0 = &arg0->unk_04[idx]; + s32 temp_v0 = D_843C5564->unk_0A * 0x11; + s32 temp_s1 = D_843C5564->unk_0B * 0x14; + s32 var_a0; + s32 sp40 = temp_s0->unk_0C * temp_v0; + s32 sp3C = temp_s0->unk_10 * temp_v0; + s32 sp38 = temp_s0->unk_04 * temp_s0->unk_24; + s32 sp34 = func_84377068(temp_s0->unk_12, D_843C60B4->unk_28) * temp_s1; + s32 sp30 = func_84377068(temp_s0->unk_16, D_843C60B4->unk_28) * temp_s1; + s32 sp2C = func_84377068(temp_s0->unk_1A, D_843C60B4->unk_28) * temp_s1; + s32 temp_v0_2 = func_84377068(temp_s0->unk_1E, D_843C60B4->unk_28); + s32 temp_ft4; + + temp_ft4 = + (((((sp40 + sp2C + sp38) * (temp_s0->unk_01 / 255.0f)) + sp3C) - (sp34 * (temp_s0->unk_06 / 255.0f))) - sp30) - + ((temp_v0_2 * temp_s1) * (temp_s0->unk_08 / 255.0f)); + if (temp_ft4 >= 0) { + var_a0 = temp_ft4; + } else { + var_a0 = -temp_ft4; + } + + return ((var_a0 * (D_843C5564->unk_07 - 0x80)) / 500) + (0, temp_ft4); +} + +s32 func_843811D0(unk_D_843C60AC* arg0, unk_D_843C60AC* arg1, unk_D_843C60A4* arg2, u8* arg3, s32* arg4, s32* arg5, + s32* arg6, s32* arg7, s32* arg8) { + s32 sp44 = 0; + u8 sp43; + UNUSED s32 pad[2]; + + if (arg1->unk_12.unk_0C > 0) { + *arg5 = func_843791E4(arg0, arg1, &sp43, 4); + if (D_843C60BC != 0) { + *arg6 = 0; + } else { + *arg6 = func_843791AC(arg1, arg0, &sp43, 0xB); + } + + if (arg0->unk_12.unk_2E >= arg1->unk_12.unk_2E) { + if (*arg5 >= 0xFF) { + *arg6 = 0; + } + } else if (*arg6 >= 0xFF) { + *arg5 = 0; + } + } + + *arg3 = func_84380B40(arg1, arg7, arg8, arg2, sp43, arg0->unk_12.unk_0C != 0); + if (*arg3 == 0xFF) { + *arg3 = 0; + *arg4 = 1; + return 0; + } + + if ((*arg6 != 0) && (*arg8 == 0) && (*arg7 != 0)) { + sp44 = 0x34; + } + + if ((*arg5 == 0) && (*arg7 != 0) && !(arg1->unk_12.unk_15 & 0x27)) { + sp44 += 0x80; + } + + if ((*arg5 - *arg6) < ((*arg7 - *arg8) - D_843C5564->unk_07)) { + sp44 += 0x99; + } + + if (func_8436FD54(*arg3, arg2->unk_0A, arg2->unk_09) == 0) { + sp44 /= 2; + } + return sp44; +} + +s32 func_843813D4(unk_D_843C60AC* arg0, unk_D_843C60AC* arg1, unk_D_843C60A4* arg2, u8* arg3, unk_func_8438220C* arg4) { + u8 i; + u8 j; + s32 sp40; + u8 temp_s4; + s32 var_s2; + s32 var_v1_2; + u8 var_v1; + + sp40 = 0; + var_s2 = 0x80000002; + + for (i = 0; i < arg2->unk_00; i++) { + var_v1 = (i) ? arg2->unk_01[0] : 0; + temp_s4 = arg2->unk_04[i] + var_v1; + + for (j = var_v1; j < temp_s4; j++) { + if ((arg2->unk_14[j].unk_12.unk_0C > 0) && (j != arg2->unk_10)) { + if ((var_s2 < arg4[j].unk_B8) || ((var_s2 == arg4[j].unk_B8) && (func_843767E4(1) != 0))) { + var_s2 = arg4[j].unk_B8; + *arg3 = j; + } + } + } + } + + if (arg0->unk_12.unk_0C > 0) { + var_v1_2 = func_84380F7C(&arg4[arg0->unk_00]); + } else { + var_v1_2 = 0x80000002; + } + + if (var_v1_2 < var_s2) { + sp40 = 0x99; + } + return sp40; +} + +u8 func_84381584(unk_D_843C60AC* arg0, unk_D_843C60AC* arg1, unk_D_843C60A4* arg2, unk_D_843C60A4* arg3, u8* arg4, + unk_func_8438220C* arg5) { + s32 sp6C; + UNUSED u8 sp6B; + UNUSED u8 sp6A; + u8 sp69; + UNUSED u8 sp68; + s32 sp64; + s32 sp60; + s32 sp5C; + s32 sp58; + unk_D_800FCB18* sp40 = &arg0->unk_12; + unk_D_800FCB18* sp3C = &arg1->unk_12; + s32 sp4C; + + sp4C = 0; + sp58 = 0; + sp5C = 0; + sp60 = 0; + sp64 = 0; + sp6C = 0; + + if ((func_843783CC(arg2) != 0) && (sp40->unk_0C > 0)) { + *arg4 = 0; + return 0; + } + + if ((sp40->unk_4C & 0x52) || (sp40->unk_4D & 0x28)) { + *arg4 = 0; + return 0; + } + + if (D_843C5564->unk_00 & 0x80) { + if (sp3C->unk_0C == 0) { + if (sp40->unk_0C == 0) { + *arg4 = func_84380870(arg2, arg3); + } else { + sp4C = 1; + } + } else { + if ((D_843C5564->unk_00 & 0x400000) && (arg5 != NULL)) { + sp6C = func_843813D4(arg0, arg1, arg2, arg4, arg5); + } else { + sp6C = func_843811D0(arg0, arg1, arg2, arg4, &sp4C, &sp64, &sp60, &sp5C, &sp58); + } + + if ((sp40->unk_15 & 0x20) && (sp58 != 0)) { + sp6C += func_84378140(arg0, arg1) * 0x64; + sp6C += 0x1A; + } else { + if ((func_84377068(sp40->unk_0C, sp40->unk_28) < D_843C5564->unk_08) && + (!(D_843C5564->unk_00 & 0x400000) || + ((arg5 != NULL) && (arg5[*arg4].unk_04[arg5[*arg4].unk_B4].unk_1E == 0)))) { + if (D_843C5564->unk_00 & 0x200) { + sp4C = 1; + } else if (D_843C5564->unk_08 < + func_84377068(arg2->unk_14[*arg4].unk_12.unk_0C, arg2->unk_14[*arg4].unk_12.unk_28)) { + sp6C += 0x64; + } + } + + if ((sp3C->unk_4C & 0x20) && (sp40->unk_2E < sp3C->unk_2E)) { + sp6C += 0x80; + } else { + if ((D_843C5564->unk_00 & 0x400000) && (arg5 != NULL)) { + if (arg5[arg0->unk_00].unk_04[arg5[arg0->unk_00].unk_B4].unk_0C >= 0xFB) { + sp6C -= 0xFF; + } + } else if (sp64 >= 0xFA) { + sp6C -= 0xFF; + } + + if (sp40->unk_4C & 1) { + sp6C = (sp6C - (((4 - sp40->unk_4F) / 2) * 0x4D)) - 0x4D; + } + } + + if (sp40->unk_15 & 7) { + sp6C += func_843776FC(arg0, arg1, 0x8A) * 0x34; + } + + if (sp40->unk_4E & 1) { + sp6C += sp40->unk_51 * 0x4D; + if (sp40->unk_4D & 0x80) { + sp6C *= 2; + } + } + + sp6C -= sp40->unk_5C[0] * 4; + sp6C += 0x1C; + sp6C -= sp40->unk_5C[1] * 4; + sp6C += 0x1C; + sp6C -= sp40->unk_5C[2] * 4; + sp6C += 0x1C; + sp6C -= sp40->unk_5C[3] * 4; + sp6C += 0x1C; + sp6C -= sp40->unk_5C[4] * 0x1A; + sp6C += 0xB6; + sp6C -= sp40->unk_5C[5] * 0x1A; + sp6C += 0xB6; + + if (sp40->unk_4E & 4) { + sp6C -= 0x34; + } + + if (sp40->unk_4E & 2) { + sp6C -= 0x34; + } + + if (sp40->unk_4D & 0x40) { + sp6C -= 0x4D; + } + + if (!(D_843C5564->unk_00 & 0x400000) && (sp60 < sp58)) { + sp6C -= func_84380EB4(arg0, arg1, sp69); + } + } + } + + sp6C += D_843C5564->unk_05; + sp6C -= 0x7F; + } else { + *arg4 = func_8437FC10(arg2); + sp6C = 0x3F; + } + + if ((arg2->unk_14[*arg4].unk_12.unk_0C == 0) || (*arg4 < 0) || (*arg4 >= arg2->unk_06)) { + *arg4 = func_8437FC10(arg2); + } + + if (!(D_843C5564->unk_00 & 0x40)) { + sp6C = 0; + } + + if (sp4C != 0) { + sp6C = 0; + } + + if ((sp6C >= 0x100) || (sp40->unk_0C == 0)) { + sp6C = 0xFF; + } + + if (sp6C < 0) { + sp6C = 0; + } + return sp6C; +} + +u16 func_84381BD4(u16* arg0, u16 arg1, u8 arg2) { + *arg0 = (arg1 * D_8438ACB8[arg2 - 1].unk_00) / D_8438ACB8[arg2 - 1].unk_01; + + if (*arg0 == 0) { + *arg0 = 1; + } + + if (*arg0 >= 0x3E8) { + *arg0 = 0x3E7; + } + return *arg0; +} + +void func_84381C78(unk_D_800FCB18* arg0, unk_D_800FCB18* arg1, u8 arg2, u8 arg3) { + u16 tmp; + + if (D_80072B00[arg2 - 1].unk_02 != 0) { + if (D_80072B00[arg2 - 1].unk_03 < 0xA) { + if (arg3) { + tmp = arg1->unk_38 - func_843767E4(6); + tmp += 3; + arg0->unk_38 = tmp; + if (tmp <= 0) { + arg0->unk_38 = 1; + } + + if (arg0->unk_15 & 0x10) { + arg0->unk_2A = arg0->unk_38 >> 1; + } else { + arg0->unk_2A = arg0->unk_38; + } + func_84381BD4(&arg0->unk_2A, arg0->unk_2A, arg0->unk_5C[0]); + } else { + tmp = arg1->unk_3A - func_843767E4(6); + tmp += 3; + arg0->unk_3A = tmp; + if (tmp <= 0) { + arg0->unk_3A = 1; + } + func_84381BD4(&arg0->unk_2C, arg0->unk_3A, arg0->unk_5C[1]); + } + } else { + tmp = arg1->unk_3E - func_843767E4(6); + tmp += 3; + arg0->unk_3E = tmp; + if (tmp <= 0) { + arg0->unk_3E = 1; + } + func_84381BD4(&arg0->unk_30, arg0->unk_3E, arg0->unk_5C[3]); + } + } +} + +void func_84381DD4(unk_func_8438220C* arg0) { + u8 i; + u8 sp5E; + u8 j; + unk_D_800FCB18* temp_a0; + unk_D_843C60AC* temp_s1; + + if (D_843C60B4->unk_0C > 0) { + func_84378B0C(D_843C60B0, D_843C60AC, &sp5E, 0xB); + } + + for (i = 0; i < D_843C60A4->unk_06; i++) { + temp_s1 = &D_843C60A4->unk_14[i]; + temp_a0 = &temp_s1->unk_12; + + if (temp_a0->unk_0C > 0) { + for (j = 0; j < 4 && temp_a0->unk_1F[j] != 0; j++) {} + + arg0[i].unk_00 = j; + func_843794CC(temp_s1, D_843C60B0, i != D_843C60AC->unk_00 && D_843C60B4->unk_0C > 0, sp5E, j, + arg0[i].unk_04); + } + } +} + +void func_84381F50(unk_func_8438220C* arg0) { + u8 i; + u8 j; + u8 sp4D; + unk_func_8438220C* temp_s1; + + sp4D = D_843C60A4->unk_10; + + for (i = 0; i < D_843C60A4->unk_06; i++) { + D_843C60A4->unk_10 = i; + + temp_s1 = &arg0[i]; + temp_s1->unk_B8 = 0x80000002; + + if (D_843C60A4->unk_14[i].unk_12.unk_0C > 0) { + func_8437B0CC(D_843C60A4, D_843C60A8, temp_s1->unk_00, temp_s1->unk_04, 1); + + for (j = 0; j < temp_s1->unk_00; j++) { + if (temp_s1->unk_B8 < temp_s1->unk_04[j].unk_28) { + temp_s1->unk_B8 = temp_s1->unk_04[j].unk_28; + temp_s1->unk_B4 = j; + } + } + } + } + + D_843C60A4->unk_10 = sp4D; +} + +u8 func_843820B8(unk_func_8438220C* arg0) { + UNUSED u8 pad; + u8 sp3E = 0; + s32 sp38; + UNUSED s32 pad2[2]; + u8 sp2F = 0; + + if (D_843C60B4->unk_0C > 0) { + sp2F = func_8437E448(D_843C60AC, D_843C60B0, arg0[D_843C60AC->unk_00].unk_00, arg0[D_843C60AC->unk_00].unk_04); + } + + if ((func_843783CC(D_843C60A4) != 0) && (D_843C60B4->unk_0C > 0)) { + return sp2F; + } + + sp38 = func_84381584(D_843C60AC, D_843C60B0, D_843C60A4, D_843C60A8, &sp3E, arg0); + D_843C60C0[D_843C60E8].unk_00 = sp38; + D_843C60C0[D_843C60E8].unk_01 = sp3E; + + if ((func_843767E4(0xFE) < sp38) && (sp3E != D_843C60A4->unk_10)) { + return sp3E + 4; + } + return sp2F; +} + +s32 func_8438220C(void) { + unk_func_8438220C sp18[6]; + + func_84381DD4(sp18); + func_84381F50(sp18); + return func_843820B8(sp18); +} + +s32 func_8438223C(s32 arg0) { + u8 i; + u8 sp5E; + s32 max = 0xFF; + s32 temp_a0; + s32 temp_v1; + s32 sp4C; + s32 var_a0; + s32 var_fp; + s32 var_s0; + s32 var_s2; + s32 var_s6; + s32 var_v0; + s32 var_v0_2; + + var_v0 = 0xF999999B; + var_s2 = 0x80000002; + var_fp = func_8437FCCC(D_843C60B4); + func_8437FC10(D_843C60A4); + + if (D_843C60C0[0].unk_01 == D_843C60C0[1].unk_01) { + var_v0_2 = D_843C60C0[1].unk_00 * arg0; + var_s6 = max - arg0; + var_a0 = D_843C60C0[0].unk_00 * var_s6; + sp5E = D_843C60C0[0].unk_01; + } else { + var_v0_2 = D_843C60C0[1].unk_00 * arg0; + var_s6 = max - arg0; + var_a0 = D_843C60C0[0].unk_00 * var_s6; + if (var_v0_2 < var_a0) { + sp5E = D_843C60C0[0].unk_01; + } else { + sp5E = D_843C60C0[1].unk_01; + } + } + + if (var_v0_2 < var_a0) { + sp4C = var_a0; + } else { + sp4C = var_v0_2; + } + + for (i = 0; i < D_843C60C0[0].unk_02; i++) { + temp_v1 = D_843C60C0[1].unk_04[i]; + temp_a0 = D_843C60C0[0].unk_04[i]; + if ((temp_v1 + temp_a0) < var_v0) { + var_s0 = -0x06666666; + } else { + var_s0 = (temp_v1 * ((f32)arg0 / 255.0)) + (temp_a0 * ((f32)var_s6 / 255.0)); + } + + if ((D_843C60B4->unk_32[i] > 0) && ((var_s2 < var_s0) || ((var_s0 == var_s2) && (func_843767E4(1) != 0)))) { + var_s2 = var_s0; + var_fp = i; + } + } + + if ((func_843767E4(0xFE) < ((sp4C / 255) & 0xFFFF)) || (D_843C60B4->unk_0C == 0)) { + return sp5E + 4; + } + return var_fp; +} + +s32 func_8438249C(u8 arg0, u8 arg1) { + UNUSED s32 pad; + unk_D_80072B00* sp18; + + if (D_843C6138[arg0] == 0) { + return 0; + } + + sp18 = &D_80072B00[D_843C6138[arg0] - 1]; + + if (arg1 == D_843C6138[arg0]) { + return 1; + } + + if ((func_8436FD54(D_80072B00[arg1 - 1].unk_01, D_8438B0D8, 0x1A) != 0) && + (func_8436FD54(sp18->unk_01, D_8438B0D8, 0x1A) != 0)) { + return 1; + } + return 0; +} + +s32 func_8438255C(u8 arg0, u8 arg1) { + if (D_843C6138[arg0] == 0) { + return 0; + } + + if (func_8436FD54(D_80072B00[arg1 - 1].unk_01, D_8438B0F4, 2) != 0) { + return 1; + } + return 0; +} + +s32 func_843825D8(u8 arg0) { + if (func_8436FD54(arg0, D_8438B0BC, 5) != 0) { + return 1; + } + return 0; +} + +s32 func_84382614(u8 arg0) { + if ((func_8436FD54(arg0, D_8438B0C4, 0x11) != 0) && (func_843767E4(0xF) != 0)) { + return 1; + } + return 0; +} + +s32 func_84382668(unk_D_800FCB18* arg0, s32 arg1, u8 arg2, u8 arg3) { + u8 i; + + for (i = 0; i < 4; i++) { + if (arg3 == D_80070FA0[arg1 - 1].unk_0A[i]) { + return 0; + } + + if ((D_84384588[arg2]->unk_00 != 0) && (arg3 == D_80070FA0[D_84384588[arg2]->unk_00 - 1].unk_0A[i])) { + return 0; + } + + if ((D_84384588[arg2]->unk_01 != 0) && (arg3 == D_80070FA0[D_84384588[arg2]->unk_01 - 1].unk_0A[i])) { + return 0; + } + } + + for (i = 1; i < 0x38; i++) { + if ((func_84377550(arg1, i) != 0) && (arg3 == D_8438AFB4[i - 1])) { + return 0; + } + } + + for (i = 0; D_843C5310[arg2].unk_00[i] != 0 && arg0->unk_26 >= D_843C5310[arg2].unk_00[i]; i++) { + if (arg3 == D_843C5310[arg2].unk_0A[i]) { + return 0; + } + } + + return 1; +} + +s32 func_84382840(unk_D_800FCB18* arg0, unk_D_800FCB18* arg1, u8 arg2) { + s32 sp24 = 0; + unk_D_80072B00* sp1C = &D_80072B00[arg2 - 1]; + + if (D_80072B00[arg2 - 1].unk_02 != 0) { + if (func_8437738C(D_80072B00[arg2 - 1].unk_03, arg1) < 1.0) { + return 1; + } + } + + switch (sp1C->unk_01) { + case 0x0: + if ((arg2 == 0x62) && (arg1->unk_4C & 0x40)) { + sp24 = 1; + } + break; + + case 0x1: + case 0x20: + if ((arg1->unk_4D & 0x10) || (arg1->unk_15 != 0)) { + sp24 = 1; + } + break; + + case 0x2: + case 0x21: + case 0x42: + case 0x4D: + if ((arg1->unk_15 != 0) || (arg1->unk_16[6] == 3) || (arg1->unk_16[7] == 3) || (arg1->unk_4D & 0x10)) { + sp24 = 1; + } + break; + + case 0x4: + case 0x22: + if (arg1->unk_15 & 0x20) { + return 1; + } + break; + + case 0x43: + if ((arg1->unk_15 != 0) || (arg1->unk_4D & 0x10) || + ((sp1C->unk_03 == 0x17) && ((arg1->unk_16[6] == 4) || (arg1->unk_16[7] == 4)))) { + sp24 = 1; + } + break; + + case 0x7: + if (arg1->unk_4C & 0x40) { + sp24 = 1; + } + break; + + case 0x8: + if (!(arg1->unk_15 & 7)) { + return 1; + } + break; + + case 0x9: + if (arg1->unk_58 == 0) { + sp24 = 1; + } + break; + + case 0x31: + if ((arg1->unk_4C & 0x80) || (arg1->unk_4D & 0x10)) { + sp24 = 1; + } + break; + + case 0x38: + if (arg0->unk_0C == arg0->unk_28) { + sp24 = 1; + } + break; + + case 0x39: + if (arg1->unk_0B == 0x84) { + sp24 = 1; + } + break; + + case 0x4F: + if (arg0->unk_0C < (arg0->unk_28 >> 2)) { + sp24 = 1; + } + break; + } + + if ((sp1C->unk_02 == 0) && (sp24 != 0)) { + return 1; + } + return 0; +} + +void func_84382ACC(void) { + u8 i; + u8 j; + u8 k; + s32 var_a2; + s32 temp_v1_5; + u8 var_v0; + u8 var_v1; + unk_D_800FCB18* temp_s2; + unk_D_800FCB18* temp_s0; + unk_D_843C5568* var_s3; + + for (i = 0; i < 2; i++) { + temp_s2 = &D_84390010[i]->unk_654.unk_38; + if (D_84390010[i]->unk_654.unk_2C != 0) { + var_s3 = &D_843C5568[i]; + var_v1 = var_s3->unk_003; + } else { + var_s3 = &D_843C5568[i]; + var_v1 = 0; + } + + var_s3->unk_012 = D_84390010[i]->unk_654.unk_08 + var_v1; + temp_s0 = &var_s3->unk_016[var_s3->unk_012].unk_12; + + temp_s0->unk_0C = temp_s2->unk_0C; + temp_s0->unk_28 = temp_s2->unk_28; + temp_s0->unk_15 = temp_s2->unk_15; + temp_s0->unk_16[6] = temp_s2->unk_16[6]; + temp_s0->unk_16[7] = temp_s2->unk_16[7]; + temp_s0->unk_4C = temp_s2->unk_4C; + temp_s0->unk_4D = temp_s2->unk_4D; + temp_s0->unk_4E = temp_s2->unk_4E; + temp_s0->unk_4F = temp_s2->unk_4F; + temp_s0->unk_50 = temp_s2->unk_50; + temp_s0->unk_51 = temp_s2->unk_51; + temp_s0->unk_52 = temp_s2->unk_52; + temp_s0->unk_54 = temp_s2->unk_54; + temp_s0->unk_57 = temp_s2->unk_57; + temp_s0->unk_58 = temp_s2->unk_58; + temp_s0->unk_59 = temp_s2->unk_59; + + _bcopy(temp_s2->unk_1F, temp_s0->unk_1F, 4); + _bcopy(temp_s2->unk_5C, temp_s0->unk_5C, 6); + + if ((temp_s2->unk_4E & 8) && (temp_s2->unk_5A == 0x90)) { + D_843C5568[1 - i].unk_016[D_843C5568[1 - i].unk_012].unk_01 = 15; + + temp_s0->unk_2A = temp_s2->unk_2A; + temp_s0->unk_2C = temp_s2->unk_2C; + temp_s0->unk_2E = temp_s2->unk_2E; + temp_s0->unk_30 = temp_s2->unk_30; + temp_s0->unk_38 = temp_s2->unk_38; + temp_s0->unk_3A = temp_s2->unk_3A; + temp_s0->unk_3C = temp_s2->unk_3C; + temp_s0->unk_3E = temp_s2->unk_3E; + } else if (D_843C5564->unk_00 & 8) { + temp_s0->unk_2A = (temp_s0->unk_15 & 0x10) ? temp_s0->unk_38 >> 1 : temp_s0->unk_38; + + if (temp_s0->unk_2A == 0) { + temp_s0->unk_2A++; + } + + temp_s0->unk_2E = (temp_s0->unk_15 & 0x40) ? temp_s0->unk_3C >> 2 : temp_s0->unk_3C; + + if (temp_s0->unk_2E == 0) { + temp_s0->unk_2E++; + } + + func_84381BD4(&temp_s0->unk_2A, temp_s0->unk_2A, temp_s0->unk_5C[0]); + func_84381BD4(&temp_s0->unk_2C, temp_s0->unk_3A, temp_s0->unk_5C[1]); + func_84381BD4(&temp_s0->unk_2E, temp_s0->unk_2E, temp_s0->unk_5C[2]); + func_84381BD4(&temp_s0->unk_30, temp_s0->unk_3E, temp_s0->unk_5C[3]); + } + + if (i == D_843C5568[0].unk_000) { + for (j = 0; j < 4; j++) { + temp_s0->unk_32[j] = temp_s2->unk_32[j] & 0x3F; + } + } + + for (j = 0; j < D_843C5568[i].unk_008; j++) { + temp_s0 = &D_843C5568[i].unk_016[j].unk_12; + temp_s0->unk_0C = D_84390010[i]->unk_724->unk_01C[j].unk_02; + + if ((temp_s0->unk_0C > 0) && (D_843C5568[i].unk_012 != j)) { + func_84377030(&D_843C5568[i].unk_016[j]); + temp_s0->unk_2A = temp_s0->unk_38; + temp_s0->unk_2C = temp_s0->unk_3A; + temp_s0->unk_2E = temp_s0->unk_3C; + temp_s0->unk_30 = temp_s0->unk_3E; + + if (D_843C5564->unk_00 & 8) { + temp_s0->unk_2A = (temp_s0->unk_15 & 0x10) ? temp_s0->unk_38 >> 2 : temp_s0->unk_38; + + if (temp_s0->unk_2A == 0) { + temp_s0->unk_2A++; + } + + temp_s0->unk_2E = (temp_s0->unk_15 & 0x40) ? temp_s0->unk_3C >> 2 : temp_s0->unk_3C; + + if (temp_s0->unk_2E == 0) { + temp_s0->unk_2E++; + } + } + } + } + } + + if (D_843C60A8->unk_09 < D_843C60A8->unk_06) { + var_a2 = 0; + for (i = 0; i < D_843C60A8->unk_09; i++) { + if (D_843C60A8->unk_10 == D_843C60A8->unk_0A[i]) { + var_a2 = 1; + } + } + + if (var_a2 == 0) { + D_843C60A8->unk_0A[D_843C60A8->unk_09] = D_843C60A8->unk_10; + if (D_843C60A8->unk_10 < D_843C60A8->unk_01[0]) { + D_843C60A8->unk_07[0]++; + } else { + D_843C60A8->unk_08++; + } + D_843C60A8->unk_09++; + } + } + + for (i = 0; i < D_843C60A8->unk_00; i++) { + if (i) { + var_v0 = D_843C60A8->unk_01[0]; + } else { + var_v0 = 0; + } + + for (j = 0; j < D_843C60A8->unk_04[i]; j++) { + temp_v1_5 = j + var_v0; + var_a2 = 1; + D_843C60A8->unk_14[temp_v1_5].unk_12.unk_0C = + D_84390010[1 - D_843C5568[0].unk_000]->unk_720->unk_08[i]->unk_01C[j].unk_02; + if (D_843C60A8->unk_14[temp_v1_5].unk_12.unk_0C == 0) { + var_a2 = 0; + for (k = 0; k < D_843C60A8->unk_09; k++) { + if (temp_v1_5 == D_843C60A8->unk_0A[k]) { + var_a2 = 1; + } + } + } + + if (var_a2 == 0) { + D_843C60A8->unk_0A[D_843C60A8->unk_09] = temp_v1_5; + if (temp_v1_5 < D_843C60A8->unk_01[0]) { + D_843C60A8->unk_07[0]++; + } else { + D_843C60A8->unk_08++; + } + D_843C60A8->unk_09++; + } + } + } +} + +s32 func_843831A0(unk_D_800AE540_0004* arg0, unk_D_800AE540_0004* arg1, unk_D_800AE540_0004* arg2, s32 arg3, u8* arg4, + s32 arg5, s32 arg6) { + u8 i; + u8 j; + u8 sp40[4]; + u8 sp38[8]; + + if (arg3 < 0xFF) { + func_84376790(arg3, &D_843C60F0); + } + bzero(D_843C5568, sizeof(D_843C5568) + 2); + D_843C5568->unk_000 = 1; + func_843768D8(0x35); + + for (i = 0; i < 6; i++) { + arg4[i] = i; + } + + func_84378474(arg0, arg1, arg2, D_843C5568, arg5); + + D_843C60A4 = &D_843C5568[D_843C5568->unk_000].unk_002; + D_843C60A8 = &D_843C5568[1 - D_843C5568->unk_000].unk_002; + D_843C60A4->unk_12 = arg3; + D_843C60A4->unk_13 = 1; + D_843C60A4->unk_07[0] = D_843C60A4->unk_09 = D_843C60A4->unk_06; + + for (i = 0; i < D_843C60A4->unk_09; i++) { + if (!D_843C60A8) {} + + D_843C60A4->unk_0A[i] = i; + } + + if (D_843C60A8->unk_06 == D_843C60A8->unk_03) { + for (i = 0; i < D_843C60A8->unk_06; i++) { + D_843C60A8->unk_0A[i] = i; + } + D_843C60A8->unk_09 = D_843C60A8->unk_06; + D_843C60A8->unk_07[0] = D_843C60A8->unk_04[0]; + D_843C60A8->unk_08 = D_843C60A8->unk_04[1]; + } else { + D_843C60A8->unk_09 = 0; + } + + D_843C5564 = &D_843C60F0.unk_0C[1]; + + func_8437E974(arg0, arg1, &D_843C5568->unk_002, D_843C5568->unk_000); + func_8437E974(arg2, NULL, &D_843C5568[1].unk_002, 1 - D_843C5568->unk_000); + func_8437717C(arg0); + func_8437717C(arg1); + func_8437717C(arg2); + + if (D_843C5564->unk_00 & 0x100) { + if (D_843C5564->unk_00 & 1) { + if (func_843804F4(D_843C60A8, D_843C60A4, sp38, NULL, arg5) == 0) { + return 0; + } + + if (func_843804F4(D_843C60A4, D_843C60A8, sp40, sp38, arg5) == 0) { + return 0; + } + + if ((func_843767E4(1) != 0) && (D_843C5564->unk_00 & 2)) { + if (0) {} + + if (func_843804F4(D_843C60A8, D_843C60A4, sp38, sp40, arg5) == 0) { + return 0; + } + + if (func_843804F4(D_843C60A4, D_843C60A8, sp40, sp38, arg5) == 0) { + return 0; + } + } + } else { + for (i = 0; i < D_843C60A8->unk_06; i++) { + sp38[i] = i; + } + + if (func_843804F4(D_843C60A4, D_843C60A8, sp40, NULL, arg5) == 0) { + return 0; + } + } + } else { + func_8437FB14(D_843C60A4, &sp40, arg5); + } + + for (i = 0; i < D_843C60A4->unk_06; i++) { + if ((sp40[i] < 0) || ((D_843C60A4->unk_03 - 1) < sp40[i])) { + for (j = 0; j < 6; j++) { + arg4[j] = j; + } + return 0; + } else { + arg4[i] = sp40[i]; + D_843C5568[D_843C5568->unk_000].unk_00C[i] = i; + } + } + + return 1; +} + +void func_8438363C(UNUSED s32 arg0, UNUSED s32 arg1, s32 arg2) { + u8 i; + + D_843C60AC->unk_02 = D_84390010[D_843C5568->unk_000]->unk_654.unk_38.unk_5A; + D_843C60B0->unk_02 = D_84390010[1 - D_843C5568->unk_000]->unk_654.unk_38.unk_5A; + + for (i = 0; i < 4; i++) { + if (D_843C60B0->unk_02 == D_843C60B8->unk_1F[i]) { + D_843C60B0->unk_01 |= 1 << i; + D_843C60B8->unk_32[i]--; + if (D_843C60B8->unk_32[i] < 0) { + D_843C60B8->unk_32[i] = 0; + } + } + } + + if (D_843C60B0->unk_02 == 0xA5) { + for (i = 0; i < 4; i++) { + D_843C60B8->unk_32[i] = 0; + } + } + + if (((arg2 == 0) || (arg2 == 1)) && !(D_843C60B8->unk_4D & 0x20)) { + func_84378578(D_843C60B0, D_843C60A4->unk_10); + } else { + D_843C60AC->unk_02 = 0; + D_843C60B0->unk_02 = D_843C60AC->unk_02; + } + + for (i = 0; i < 4; i++) { + if (D_843C60AC->unk_02 == D_843C60B4->unk_1F[i]) { + D_843C60AC->unk_01 |= 1 << i; + } + } + + if (D_843C5564->unk_00 & 0x400) { + func_84381C78(D_843C60B8, &D_84390010[1 - D_843C5568->unk_000]->unk_654.unk_38, D_843C60B0->unk_02, 1); + func_84381C78(D_843C60B8, &D_84390010[1 - D_843C5568->unk_000]->unk_654.unk_38, D_843C60AC->unk_02, 0); + } + + if ((arg2 == 0) && (D_843C5564->unk_00 & 8)) { + if ((D_843C60B4->unk_2E < D_843C60B8->unk_2E) && (D_843C60AC->unk_02 != 0x62) && (D_843C60B0->unk_02 != 0x44)) { + D_843C60B8->unk_2E = D_843C60B4->unk_2E - 1; + if (D_843C60B8->unk_15 & 0x40) { + D_843C60B8->unk_3C = D_843C60B8->unk_2E * 4; + } else { + D_843C60B8->unk_3C = D_843C60B8->unk_2E; + } + D_843C60B8->unk_3C = (D_843C60B8->unk_3C * D_8438ACB8[D_843C60B8->unk_5C[2] - 1].unk_01) / + D_8438ACB8[D_843C60B8->unk_5C[2] - 1].unk_00; + } + } + + if ((arg2 == 1) && (D_843C5564->unk_00 & 8)) { + if ((D_843C60B8->unk_2E < D_843C60B4->unk_2E) && (D_843C60B0->unk_02 != 0x62) && (D_843C60AC->unk_02 != 0x44)) { + D_843C60B8->unk_2E = D_843C60B4->unk_2E + 1; + if (D_843C60B8->unk_15 & 0x40) { + D_843C60B8->unk_3C = D_843C60B8->unk_2E * 4; + } else { + D_843C60B8->unk_3C = D_843C60B8->unk_2E; + } + D_843C60B8->unk_3C = (D_843C60B8->unk_3C * D_8438ACB8[D_843C60B8->unk_5C[2] - 1].unk_01) / + D_8438ACB8[D_843C60B8->unk_5C[2] - 1].unk_00; + } + } + + for (i = 0; i < 2; i++) { + if (D_84390010[i]->unk_654.unk_38.unk_5A == 0x44) { + D_843C5568[i].unk_016[D_843C5568[i].unk_012].unk_03 = 2; + } + } +} + +s32 func_84383B5C(UNUSED s32 arg0) { + s32 sp44; + u8 var_v1; + u8 sp42; + u8 sp41; + u8 sp40; + u8 sp3F; + unk_D_800AE540_0004* temp_v0; + unk_D_800AE540_0004* temp_v00; + unk_D_800AE540_0004* sp30; + + if (D_843C5568[0].unk_001 == 0) { + temp_v0 = D_84390010[0]->unk_720->unk_08[0]; + sp30 = D_84390010[1]->unk_720->unk_08[0]; + if (D_84390010[0]->unk_720->unk_01 == 2) { + temp_v00 = D_84390010[0]->unk_720->unk_08[1]; + func_8437E974(temp_v0, temp_v00, D_843C60A8, 1); + } else { + func_8437E974(temp_v0, NULL, D_843C60A8, 1); + } + func_8437E974(sp30, NULL, D_843C60A4, 0); + D_843C5568[0].unk_001 = 2; + } + + if (D_843C60BC != 0) { + if (D_84390010[0]->unk_654.unk_2C != 0) { + var_v1 = D_843C5568[0].unk_003; + } else { + var_v1 = 0; + } + + if (D_843C60A8->unk_10 != (D_84390010[0]->unk_654.unk_08 + var_v1)) { + D_8438AFB0 += 1; + goto label1; + } + } + D_8438AFB0 = 0; + +label1: + func_84382ACC(); + D_843C60AC = &D_843C60A4->unk_14[D_843C60A4->unk_10]; + D_843C60B0 = &D_843C60A8->unk_14[D_843C60A8->unk_10]; + D_843C60B4 = &D_843C60AC->unk_12; + D_843C60B8 = &D_843C60B0->unk_12; + func_84380598(); + D_843C5564 = &D_843C60F0.unk_0C[D_843C60A4->unk_13]; + bzero(D_843C60C0, sizeof(unk_D_843C60C0) * 2); + D_843C60E8 = 0; + + if (D_843C5564->unk_00 & 0x400000) { + sp44 = func_8438220C(); + } else { + D_843C60C0[D_843C60E8].unk_00 = func_84381584(D_843C60AC, D_843C60B0, D_843C60A4, D_843C60A8, &sp3F, 0); + D_843C60C0[D_843C60E8].unk_01 = sp3F; + if (func_843767E4(0xFE) < D_843C60C0[D_843C60E8].unk_00) { + sp44 = D_843C60C0[D_843C60E8].unk_01 + 4; + } else { + sp44 = func_8437E7A4(); + } + } + + D_843C60BC = 0; + if ((D_843C60B8->unk_0C != 0) && (D_843C5564->unk_00 & 4)) { + if ((D_843C5564->unk_08 + 0x33) < func_84377068(D_843C60B4->unk_0C, D_843C60B4->unk_28)) { + sp42 = func_84381584(D_843C60B0, D_843C60AC, D_843C60A8, D_843C60A4, &sp40, 0) >> D_8438AFB0; + if (func_843767E4(0xFE) < sp42) { + D_843C60A8->unk_10 = sp40; + D_843C60B0 = &D_843C60A8->unk_14[sp40]; + D_843C60B8 = &D_843C60B0->unk_12; + D_843C60BC = 1; + D_843C60E8++; + if (D_843C5564->unk_00 & 0x400000) { + sp44 = func_8438220C(); + } else { + // clang-format off + sp41 = func_84381584(D_843C60AC, D_843C60B0, D_843C60A4, D_843C60A8, &sp3F, 0); D_843C60C0[D_843C60E8].unk_00 = sp41; + // clang-format on + D_843C60C0[D_843C60E8].unk_01 = sp3F; + + if (func_843767E4(0xFE) < sp41) { + sp44 = D_843C60C0[D_843C60E8].unk_01 + 4; + } else { + sp44 = func_8437E7A4(); + } + } + } + } + } + + if ((D_843C5564->unk_00 & 0x01000000) && (D_843C60E8 != 0) && + (!(D_843C5564->unk_00 & 0x200000) || (D_843C60AC->unk_04 == 1))) { + sp44 = func_8438223C(sp42); + } + + D_843C60AC->unk_04 = 1; + if (((D_843C60B4->unk_0C == 0) && (sp44 < 4)) || ((D_843C60A4->unk_06 + 3) < sp44)) { + sp44 = func_8437FC10(D_843C60A4) + 4; + } + + if ((sp44 >= 0) && ((sp44 >= 4) || ((D_843C60B4->unk_1F[sp44] != 0) && (D_843C60B4->unk_32[sp44] != 0)))) { + if ((D_843C60B4->unk_0C != 0) && (sp44 >= 4)) { + if (func_843783CC(D_843C60A4) != 0) { + goto block_44; + } + } + } else { + block_44: + sp44 = func_8437FCCC(D_843C60B4); + } + return sp44; +} + +void func_84384124(void) { + u8 i; + u8 temp_a0; + + for (i = 0; i < 2; i++) { + D_843C6138[i] = 0; + temp_a0 = D_84390010[i]->unk_654.unk_38.unk_0B; + D_843C5550[i] = temp_a0; + func_8430255C(temp_a0, &D_843C5310[i]); + } +} + +s32 func_843841C4(s32 arg0, s32 arg1) { + unk_D_800FCB18* temp_s4 = &D_84390010[arg0]->unk_654.unk_38; + unk_D_800FCB18* temp_s6 = &D_84390010[1 - arg0]->unk_654.unk_38; + s32 var_s2 = 0; + u8 var_s0; + u8 var_s3; + + if ((arg1 > 0) && (arg1 < 0xA6)) { + return arg1; + } + + if (temp_s4->unk_4E & 8) { + var_s3 = D_84390010[arg0]->unk_654.unk_BE; + } else { + var_s3 = temp_s4->unk_0B; + } + + while (true) { + if (func_843767E4(7) != 0) { + var_s0 = func_843767E4(0xA3) + 1; + } else { + var_s0 = D_8438AFEC[var_s3 - 1]; + } + + var_s2++; + if (var_s2 >= 0x12D) { + var_s0 = 0xA5; + break; + } + + if (var_s0) {} + + if (!func_8438249C(arg0, var_s0) && !func_8438255C(arg0, var_s0) && !func_843825D8(var_s0) && + !func_84382614(var_s0) && !func_84382668(temp_s4, var_s3, arg0, var_s0) && + !func_84382840(temp_s4, temp_s6, var_s0)) { + break; + } + } + + D_843C6138[arg0] = var_s0; + return var_s0; +} diff --git a/src/fragments/64/fragment64.c b/src/fragments/64/fragment64.c index 2e6fd3a..57eaec8 100644 --- a/src/fragments/64/fragment64.c +++ b/src/fragments/64/fragment64.c @@ -128,7 +128,7 @@ void func_84800184(void) { s32 var_s4; s8 temp_v0; s8* var_v0; - unk_func_80007444_018* sp58; + unk_D_80068BB0* sp58; Color_RGB8 sp54; Color_RGB8 sp50; @@ -161,7 +161,7 @@ void func_84800184(void) { } func_8001F444(); - gDPSetScissorFrac(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, sp58->unk_04 * 4.0f, sp58->unk_06 * 4.0f); + gDPSetScissorFrac(gDisplayListHead++, G_SC_NON_INTERLACE, 0, 0, sp58->width * 4.0f, sp58->height * 4.0f); D_8480379A += 2; if (D_8480379A >= ((strlen(var_v0) * 0x18) + 0x18)) { diff --git a/src/fragments/9/fragment9.c b/src/fragments/9/fragment9.c index f03e647..d2dd693 100644 --- a/src/fragments/9/fragment9.c +++ b/src/fragments/9/fragment9.c @@ -1,5 +1,5 @@ #include "fragment9.h" -#include "include/libc/math.h" +#include "include/math.h" #include "src/12D80.h" #include "src/18140.h" #include "src/geo_layout.h" diff --git a/src/memmap.h b/src/memmap.h index 94c8222..ef65927 100644 --- a/src/memmap.h +++ b/src/memmap.h @@ -28,8 +28,6 @@ struct RelocTable { /* 0x04 */ u32 relocations[RELOCATIONS_SIZE]; // variable size }; -typedef s32 (*FragmentEntry)(s32, s32); - typedef struct Fragment { /* 0x00 */ u32 inst[2]; // MIPS instructions to jump to the main function, typically something like "j 0x8xx00020; nop" /* 0x08 */ char magic[8]; // "FRAGMENT" @@ -38,7 +36,9 @@ typedef struct Fragment { /* 0x18 */ u32 sizeInRom; /* 0x1C */ u32 sizeInRam; /* 0x20 */ char data[RELOCATIONS_SIZE]; // variable size -} Fragment; +} Fragment; // size = 0x20 + +typedef s32 (*FragmentEntry)(s32, s32); void Memmap_SetSegmentMap(u32 id, uintptr_t vaddr, size_t size); uintptr_t Memmap_GetSegmentBaseVaddr(u32 id); diff --git a/src/stage_loader.c b/src/stage_loader.c index c4785f2..99a419d 100644 --- a/src/stage_loader.c +++ b/src/stage_loader.c @@ -577,8 +577,8 @@ void func_800079C4(void) { } } -unk_func_80007444_018* func_80007A2C(void) { - unk_func_80007444_018* ret = NULL; +unk_D_80068BB0* func_80007A2C(void) { + unk_D_80068BB0* ret = NULL; if (D_800A7464 != NULL) { ret = D_800A7464->unk_18[D_800A7464->unk_16]; diff --git a/src/stage_loader.h b/src/stage_loader.h index c3e4aa5..9afd797 100644 --- a/src/stage_loader.h +++ b/src/stage_loader.h @@ -2,6 +2,7 @@ #define _STAGE_LOADER_H_ #include "global.h" +#include "src/6BC0.h" typedef struct unk_D_800A7450 { /* 0x00 */ u8 unk_00; @@ -14,14 +15,6 @@ typedef struct unk_D_800A7450 { /* 0x10 */ char unk10[0x4]; } unk_D_800A7450; // size >= 0x14 -typedef struct unk_func_80007444_018 { - /* 0x00 */ char unk00[0x4]; - /* 0x04 */ u16 unk_04; - /* 0x06 */ u16 unk_06; - /* 0x08 */ s32 unk_08; - /* 0x0C */ char unk0C[0x4]; -} unk_func_80007444_018; // size = 0x10 - typedef struct unk_func_80007444 { /* 0x00 */ s16 unk_00; /* 0x02 */ s16 unk_02; @@ -39,7 +32,7 @@ typedef struct unk_func_80007444 { /* 0x13 */ u8 unk_13; /* 0x14 */ u16 unk_14; /* 0x16 */ s8 unk_16; - /* 0x18 */ unk_func_80007444_018* unk_18[3]; + /* 0x18 */ unk_D_80068BB0* unk_18[3]; } unk_func_80007444; // size = 0x24 void func_800069F0(void); @@ -69,7 +62,7 @@ s32 func_80007820(u32 arg0, s32 (*arg1)(u8)); s32 func_800078D4(s32 (*arg0)(u8), s32 arg1, s32 arg2); void func_80007990(u16 arg0); void func_800079C4(void); -unk_func_80007444_018* func_80007A2C(void); +unk_D_80068BB0* func_80007A2C(void); s32 func_80007A58(void); void func_80007A80(void); void func_80007C3C(void); diff --git a/tools/asm-processor/asm_processor.py b/tools/asm-processor/asm_processor.py index 23f6102..a14854c 100644 --- a/tools/asm-processor/asm_processor.py +++ b/tools/asm-processor/asm_processor.py @@ -223,12 +223,12 @@ class Section: assert self.sh_type == SHT_STRTAB to = self.data.find(b'\0', index) assert to != -1 - return self.data[index:to].decode('latin1') + return self.data[index:to].decode('utf8') def add_str(self, string): assert self.sh_type == SHT_STRTAB ret = len(self.data) - self.data += string.encode('latin1') + b'\0' + self.data += string.encode('utf8') + b'\0' return ret def is_rel(self): @@ -523,7 +523,7 @@ class GlobalAsmBlock: raise Failure(message + "\nwithin " + context) def count_quoted_size(self, line, z, real_line, output_enc): - line = line.encode(output_enc).decode('latin1') + line = line.encode(output_enc).decode('utf8') in_quote = False has_comma = True num_parts = 0 @@ -1309,7 +1309,7 @@ def fixup_objfile(objfile_name, functions, asm_prelude, assembler, output_enc, d st_other=STV_DEFAULT, st_shndx=section.index, strtab=objfile.symtab.strtab, - name=symbol_name[:-1].decode('latin1')) + name=symbol_name[:-1].decode('utf8')) strtab_index += len(emitted_symbol_name) new_strtab_data.append(emitted_symbol_name) new_syms.append(sym) @@ -1420,8 +1420,8 @@ def run_wrapped(argv, outfile, functions): parser.add_argument('--post-process', dest='objfile', help="path to .o file to post-process") parser.add_argument('--assembler', dest='assembler', help="assembler command (e.g. \"mips-linux-gnu-as -march=vr4300 -mabi=32\")") parser.add_argument('--asm-prelude', dest='asm_prelude', help="path to a file containing a prelude to the assembly file (with .set and .macro directives, e.g.)") - parser.add_argument('--input-enc', default='latin1', help="input encoding (default: %(default)s)") - parser.add_argument('--output-enc', default='latin1', help="output encoding (default: %(default)s)") + parser.add_argument('--input-enc', default='utf8', help="input encoding (default: %(default)s)") + parser.add_argument('--output-enc', default='utf8', help="output encoding (default: %(default)s)") parser.add_argument('--drop-mdebug-gptab', dest='drop_mdebug_gptab', action='store_true', help="drop mdebug and gptab sections") parser.add_argument('--convert-statics', dest='convert_statics', choices=["no", "local", "global", "global-with-filename"], default="local", help="change static symbol visibility (default: %(default)s)") parser.add_argument('--force', dest='force', action='store_true', help="force processing of files without GLOBAL_ASM blocks") diff --git a/tools/asm-processor/build.py b/tools/asm-processor/build.py index efbaade..83fc38c 100644 --- a/tools/asm-processor/build.py +++ b/tools/asm-processor/build.py @@ -52,7 +52,7 @@ asmproc_flags += opt_flags + [str(in_file)] # asmproc_flags += ["--drop-mdebug-gptab"] # Convert encoding before compiling. -# asmproc_flags += ["--input-enc", "utf-8", "--output-enc", "euc-jp"] +asmproc_flags += ["--input-enc", "euc-jp", "--output-enc", "euc-jp"] with tempfile.TemporaryDirectory(prefix="asm_processor") as tmpdirname: tmpdir_path = Path(tmpdirname) diff --git a/tools/n64splat b/tools/n64splat index 4aa96ba..433edd2 160000 --- a/tools/n64splat +++ b/tools/n64splat @@ -1 +1 @@ -Subproject commit 4aa96babe54fa17bb75f674a9e6be6f8e8e4f0e5 +Subproject commit 433edd205953812ebd29f96602daa1a729947514 diff --git a/tools/permuter_settings.toml b/tools/permuter_settings.toml index 941ea7b..125524f 100644 --- a/tools/permuter_settings.toml +++ b/tools/permuter_settings.toml @@ -31,3 +31,4 @@ SINS = "float" "tools/ido/linux/5.3/cc" = "ido5.3" "tools/ido/macos/5.3/cc" = "ido5.3" "tools/ido/windows/5.3/cc" = "ido5.3" +"./tools/preprocess.sh" = "ido7.1" diff --git a/tools/preprocess.sh b/tools/preprocess.sh new file mode 100755 index 0000000..ea7e5da --- /dev/null +++ b/tools/preprocess.sh @@ -0,0 +1,78 @@ +#!/usr/bin/env bash + +# SPDX-FileCopyrightText: © 2024 ZeldaRET +# SPDX-License-Identifier: CC0-1.0 + +# Usage: preprocess [flags] -- [compile command minus input file...] [single input file] +# Flags: +# -v OOT_VERSION (required) +# -i ICONV_PATH (optional, default: iconv) +# Preprocess a C file to: +# * Re-encode from UTF-8 to EUC-JP +# (the repo uses UTF-8 for text encoding, but the strings in the ROM are encoded in EUC-JP) +# * Replace `#pragma increment_block_number` (see preprocess_pragma) + +set -e +set -o pipefail + +if [ "${VERBOSE-}" ] +then + set -x +fi + +for i in `seq ${#@}` +do + if [[ "${!i}" = '--' ]] + then + # flags before -- + flags=("${@:1:$(($i - 1))}") + # compile command, between -- and the input source file + compilecmd="${@:$(($i + 1)):$((${#@} - $i - 1))}" + # The last argument, the input source file to be compiled + srcfile="${@: -1}" + break + fi +done + +if [ "${VERBOSE-}" ] +then + echo flags="${flags[@]}" + echo compilecmd="$compilecmd" + echo srcfile="$srcfile" +fi + +ICONV=iconv + +while getopts "i:" opt "${flags[@]}" +do + case $opt in + i) + ICONV=$OPTARG + ;; + ?) + echo "Error: Bad flags" + exit 1 + ;; + esac +done + +if [[ "${!OPTIND}" != '--' ]] +then + echo "Error: Positional arguments in flags not allowed" + exit 1 +fi + +# Create a temporary directory, and remove it on script exit +# We use a temp dir instead of a temp file because ido_block_numbers.py and fix_bss.py +# need the symbol table .T file from IDO, which is always named like the input file. +# So we use a file named like the original input file, inside a temp dir. +tempdir=`mktemp -d` +tempfile=$tempdir/`basename $srcfile` +trap "rm -rf $tempdir" EXIT + +# Preprocess pragmas and re-encode from UTF-8 to EUC-JP +"${ICONV}" -f UTF-8 -t EUC-JP "$srcfile" > "$tempfile" + +# Also include the source file's directory to have the include path as if we compiled the original source. +# Pass the processed temporary file for compilation. +$compilecmd -I `dirname $srcfile` $tempfile diff --git a/tools/print_decls.py b/tools/print_decls.py index 675351e..eabae8d 100755 --- a/tools/print_decls.py +++ b/tools/print_decls.py @@ -5,7 +5,29 @@ import re with open(sys.argv[1], "r") as f: fd = f.read() - -funcs = re.findall("(^[a-zA-Z0-9*_]+ .*\(.*\)) {$", fd, re.MULTILINE) +""" +funcs = re.findall("(^[a-zA-Z0-9*_]+ .*\(.*?\)) {", fd, re.MULTILINE | re.DOTALL) for func in funcs: print(func + ";") +""" + +func_re = re.compile( + r''' + ^\s* # line start + (?!if\b|for\b|while\b|switch\b|case\b|return\b) # skip control statements + (?:(?:static|inline|extern|const|volatile)\s+)* # qualifiers (optional) + [A-Za-z_][\w\s\*\d]*? # return type (rough) + \s+ # space + (?P[A-Za-z_]\w*) # function name + \s* # optional space + \( # '(' + (?:[^(){}]|\([^()]*\))*? # arguments (allows nested ()) + \) # ')' + \s* # optional space/newlines + (?=\{) # next non-space char is '{' + ''', + re.MULTILINE | re.DOTALL | re.VERBOSE) + +for m in func_re.finditer(fd): + print(" ".join(m.group(0).split()) + ";") # collapse whitespace, add semicolon + diff --git a/yamls/us/rom.yaml b/yamls/us/rom.yaml index bde8711..e58d71a 100644 --- a/yamls/us/rom.yaml +++ b/yamls/us/rom.yaml @@ -2148,23 +2148,29 @@ - [0x2F6930, c, fragments/62/fragment62_2F6930] - [0x2F74E0, c, fragments/62/fragment62_2F74E0] - [0x2FA4D0, c, fragments/62/fragment62_2FA4D0] + - [0x3020D0, c, fragments/62/fragment62_3020D0] - [0x304060, c, fragments/62/fragment62_304060] - [0x3055E0, c, fragments/62/fragment62_3055E0] - [0x309ED0, c, fragments/62/fragment62_309ED0] - [0x313250, c, fragments/62/fragment62_313250] + - [0x313D60, c, fragments/62/fragment62_313D60] - [0x315830, c, fragments/62/fragment62_315830] - [0x315D50, c, fragments/62/fragment62_315D50] - [0x317E70, c, fragments/62/fragment62_317E70] - [0x31A7E0, c, fragments/62/fragment62_31A7E0] - [0x31AA30, c, fragments/62/fragment62_31AA30] - [0x31C660, c, fragments/62/fragment62_31C660] + - [0x31D9F0, c, fragments/62/fragment62_31D9F0] - [0x3223B0, c, fragments/62/fragment62_3223B0] - [0x3274D0, c, fragments/62/fragment62_3274D0] - [0x328F10, c, fragments/62/fragment62_328F10] - [0x32A640, c, fragments/62/fragment62_32A640] - [0x32B680, c, fragments/62/fragment62_32B680] + - [0x339CA0, c, fragments/62/fragment62_339CA0] - [0x3438B0, c, fragments/62/fragment62_3438B0] - [0x343BA0, c, fragments/62/fragment62_343BA0] + - [0x347330, c, fragments/62/fragment62_347330] + - [0x34A420, c, fragments/62/fragment62_34A420] - [0x34E1A0, c, fragments/62/fragment62_34E1A0] - [0x34F1A0, c, fragments/62/fragment62_34F1A0] - [0x3502D0, c, fragments/62/fragment62_3502D0] @@ -2173,49 +2179,120 @@ - [0x352570, c, fragments/62/fragment62_352570] - [0x353370, c, fragments/62/fragment62_353370] - [0x3540B0, c, fragments/62/fragment62_3540B0] + - [0x354CD0, c, fragments/62/fragment62_354CD0] - [0x355A00, c, fragments/62/fragment62_355A00] - [0x356730, c, fragments/62/fragment62_356730] - [0x357C30, c, fragments/62/fragment62_357C30] + - [0x3591E0, c, fragments/62/fragment62_3591E0] - [0x3597B0, c, fragments/62/fragment62_3597B0] - [0x359F80, c, fragments/62/fragment62_359F80] - [0x359F90, c, fragments/62/fragment62_359F90] - [0x35DF70, c, fragments/62/fragment62_35DF70] - [0x361050, c, fragments/62/fragment62_361050] - - [0x36EC10, data, fragments/62/fragment62_data] - - [0x3759C0, rodata, fragments/62/fragment62_rodata_3759C0] - - [0x375A60, rodata, fragments/62/fragment62_rodata_375A60] - - [0x375BA0, rodata, fragments/62/fragment62_rodata_375BA0] - - [0x375BB0, rodata, fragments/62/fragment62_rodata_375BB0] - - [0x375C50, rodata, fragments/62/fragment62_rodata_375C50] - - [0x375D50, rodata, fragments/62/fragment62_rodata_375D50] - - [0x375EA0, rodata, fragments/62/fragment62_rodata_375EA0] - - [0x3764E0, rodata, fragments/62/fragment62_rodata_3764E0] - - [0x376650, rodata, fragments/62/fragment62_rodata_376650] - - [0x3768B0, rodata, fragments/62/fragment62_rodata_3768B0] - - [0x3768E0, rodata, fragments/62/fragment62_rodata_3768E0] - - [0x3769B0, rodata, fragments/62/fragment62_rodata_3769B0] - - [0x376A10, rodata, fragments/62/fragment62_rodata_376A10] - - [0x376A40, rodata, fragments/62/fragment62_rodata_376A40] - - [0x376AE0, rodata, fragments/62/fragment62_rodata_376AE0] - - [0x376B40, rodata, fragments/62/fragment62_rodata_376B40] - - [0x3778A0, rodata, fragments/62/fragment62_rodata_3778A0] - - [0x377C90, rodata, fragments/62/fragment62_rodata_377C90] - - [0x377DA0, rodata, fragments/62/fragment62_rodata_377DA0] - - [0x377E40, rodata, fragments/62/fragment62_rodata_377E40] - - [0x377FA0, rodata, fragments/62/fragment62_rodata_377FA0] - - [0x378000, rodata, fragments/62/fragment62_rodata_378000] - - [0x378040, rodata, fragments/62/fragment62_rodata_378040] - - [0x3780B0, rodata, fragments/62/fragment62_rodata_3780B0] - - [0x378140, rodata, fragments/62/fragment62_rodata_378140] - - [0x378170, rodata, fragments/62/fragment62_rodata_378170] - - [0x3781A0, rodata, fragments/62/fragment62_rodata_3781A0] - - [0x3781B0, rodata, fragments/62/fragment62_rodata_3781B0] - - [0x3781D0, rodata, fragments/62/fragment62_rodata_3781D0] - - [0x3784C0, rodata, fragments/62/fragment62_rodata_3784C0] - - [0x378540, rodata, fragments/62/fragment62_rodata_378540] - - [0x3786B0, rodata, fragments/62/fragment62_rodata_3786B0] - - {vram: 0x8438E440, type: bss, name: fragments/62/fragment62_bss} + - [0x36EC10, .data, fragments/62/fragment62_2EA8E0] + - [0x36EE30, .data, fragments/62/fragment62_2EC3C0] + - [0x36EEC0, .data, fragments/62/fragment62_2F3CB0] + - [0x370010, .data, fragments/62/fragment62_2F74E0] + - [0x370050, .data, fragments/62/fragment62_2FA4D0] + - [0x370250, .data, fragments/62/fragment62_3020D0] + - [0x3702A0, .data, fragments/62/fragment62_304060] + - [0x370410, .data, fragments/62/fragment62_3055E0] + - [0x370430, .data, fragments/62/fragment62_309ED0] + - [0x370470, .data, fragments/62/fragment62_315D50] + - [0x3723C0, .data, fragments/62/fragment62_32B680] + - [0x372880, .data, fragments/62/fragment62_343BA0] + - [0x372B40, .data, fragments/62/fragment62_347330] + - [0x373920, .data, fragments/62/fragment62_34A420] + - [0x373BC0, .data, fragments/62/fragment62_34E1A0] + - [0x373CF0, .data, fragments/62/fragment62_34F1A0] + - [0x373E20, .data, fragments/62/fragment62_3502D0] + - [0x373F50, .data, fragments/62/fragment62_3512D0] + - [0x374040, .data, fragments/62/fragment62_351F20] + - [0x374170, .data, fragments/62/fragment62_352570] + - [0x374270, .data, fragments/62/fragment62_353370] + - [0x3742C0, .data, fragments/62/fragment62_3540B0] + - [0x374310, .data, fragments/62/fragment62_354CD0] + - [0x374420, .data, fragments/62/fragment62_355A00] + - [0x374530, .data, fragments/62/fragment62_356730] + - [0x3745A0, .data, fragments/62/fragment62_357C30] + - [0x374620, .data, fragments/62/fragment62_3591E0] + - [0x375110, .data, fragments/62/fragment62_3597B0] + - [0x375520, .data, fragments/62/fragment62_359F90] + - [0x375710, .data, fragments/62/fragment62_35DF70] + - [0x375870, .data, fragments/62/fragment62_361050] + + - [0x3759C0, .rodata, fragments/62/fragment62_2EC3C0] + - [0x375A60, .rodata, fragments/62/fragment62_2F3CB0] + - [0x375B60, .rodata, fragments/62/fragment62_2F6930] + - [0x375BA0, .rodata, fragments/62/fragment62_2F74E0] + - [0x375BB0, .rodata, fragments/62/fragment62_2FA4D0] + - [0x375C50, .rodata, fragments/62/fragment62_3020D0] + - [0x375D50, .rodata, fragments/62/fragment62_304060] + - [0x375EA0, .rodata, fragments/62/fragment62_3055E0] + - [0x376100, .rodata, fragments/62/fragment62_309ED0] + - [0x3764B0, .rodata, fragments/62/fragment62_313250] + - [0x3764E0, .rodata, fragments/62/fragment62_313D60] + - [0x376650, .rodata, fragments/62/fragment62_315D50] + - [0x376790, .rodata, fragments/62/fragment62_317E70] + - [0x3768B0, .rodata, fragments/62/fragment62_31C660] + - [0x3768E0, .rodata, fragments/62/fragment62_31D9F0] + - [0x3769B0, .rodata, fragments/62/fragment62_3223B0] + - [0x376A10, .rodata, fragments/62/fragment62_3274D0] + - [0x376A40, .rodata, fragments/62/fragment62_328F10] + - [0x376AE0, .rodata, fragments/62/fragment62_32A640] + - [0x376B40, .rodata, fragments/62/fragment62_32B680] + - [0x3778A0, .rodata, fragments/62/fragment62_339CA0] + - [0x377C90, .rodata, fragments/62/fragment62_343BA0] + - [0x377DA0, .rodata, fragments/62/fragment62_347330] + - [0x377E40, .rodata, fragments/62/fragment62_34A420] + - [0x377FA0, .rodata, fragments/62/fragment62_34E1A0] + - [0x377FC0, .rodata, fragments/62/fragment62_34F1A0] + - [0x377FE0, .rodata, fragments/62/fragment62_3502D0] + - [0x378000, .rodata, fragments/62/fragment62_3512D0] + - [0x378040, .rodata, fragments/62/fragment62_351F20] + - [0x378070, .rodata, fragments/62/fragment62_352570] + - [0x3780B0, .rodata, fragments/62/fragment62_353370] + - [0x378100, .rodata, fragments/62/fragment62_3540B0] + - [0x378140, .rodata, fragments/62/fragment62_354CD0] + - [0x378170, .rodata, fragments/62/fragment62_355A00] + - [0x3781A0, .rodata, fragments/62/fragment62_356730] + - [0x3781B0, .rodata, fragments/62/fragment62_357C30] + - [0x3781D0, .rodata, fragments/62/fragment62_3591E0] + - [0x3781E0, rodata, fragments/62/fragment62_rodata_3781E0] + - [0x3784C0, .rodata, fragments/62/fragment62_359F90] + - [0x378540, .rodata, fragments/62/fragment62_35DF70] + - [0x3786B0, .rodata, fragments/62/fragment62_361050] + + - {vram: 0x8438E440, type: .bss, name: fragments/62/fragment62_2EA8E0} + - {vram: 0x8438E7B0, type: .bss, name: fragments/62/fragment62_2EC3C0} + - {vram: 0x843900B0, type: bss, name: fragments/62/fragment62_bss1} + - {vram: 0x843900D0, type: .bss, name: fragments/62/fragment62_2F6930} + - {vram: 0x84390120, type: .bss, name: fragments/62/fragment62_2F74E0} + - {vram: 0x84390190, type: .bss, name: fragments/62/fragment62_2FA4D0} + - {vram: 0x843901A0, type: .bss, name: fragments/62/fragment62_3020D0} + - {vram: 0x843901B0, type: .bss, name: fragments/62/fragment62_3055E0} + - {vram: 0x84390200, type: .bss, name: fragments/62/fragment62_309ED0} + - {vram: 0x84390240, type: .bss, name: fragments/62/fragment62_313D60} + - {vram: 0x843902A0, type: .bss, name: fragments/62/fragment62_315D50} + - {vram: 0x843920C0, type: .bss, name: fragments/62/fragment62_343BA0} + - {vram: 0x843925E0, type: .bss, name: fragments/62/fragment62_347330} + - {vram: 0x84397610, type: .bss, name: fragments/62/fragment62_34A420} + - {vram: 0x8439CA60, type: .bss, name: fragments/62/fragment62_34E1A0} + - {vram: 0x8439E680, type: .bss, name: fragments/62/fragment62_34F1A0} + - {vram: 0x843A06A0, type: .bss, name: fragments/62/fragment62_3502D0} + - {vram: 0x843A22C0, type: .bss, name: fragments/62/fragment62_3512D0} + - {vram: 0x843AA880, type: .bss, name: fragments/62/fragment62_352570} + - {vram: 0x843AB940, type: .bss, name: fragments/62/fragment62_353370} + - {vram: 0x843ACA10, type: .bss, name: fragments/62/fragment62_3540B0} + - {vram: 0x843ADA80, type: .bss, name: fragments/62/fragment62_354CD0} + - {vram: 0x843B8340, type: .bss, name: fragments/62/fragment62_355A00} + - {vram: 0x843C2C00, type: .bss, name: fragments/62/fragment62_356730} + - {vram: 0x843C3500, type: .bss, name: fragments/62/fragment62_357C30} + - {vram: 0x843C49C0, type: .bss, name: fragments/62/fragment62_3591E0} + - {vram: 0x843C4D90, type: .bss, name: fragments/62/fragment62_3597B0} + - {vram: 0x843C4DA0, type: .bss, name: fragments/62/fragment62_359F90} + - {vram: 0x843C5310, type: .bss, name: fragments/62/fragment62_361050} - name: fragment62_relocs type: code