diff --git a/config/GMPE01_00/rels/m437Dll/symbols.txt b/config/GMPE01_00/rels/m437Dll/symbols.txt index 8cd64fd3..2c062d3f 100644 --- a/config/GMPE01_00/rels/m437Dll/symbols.txt +++ b/config/GMPE01_00/rels/m437Dll/symbols.txt @@ -166,7 +166,7 @@ fn_1_108A4 = .text:0x000108A4; // type:function size:0x1EC _prolog = .text:0x00010A90; // type:function size:0x54 scope:global _epilog = .text:0x00010AE4; // type:function size:0x4C scope:global fn_1_10B30 = .text:0x00010B30; // type:function size:0x40C -fn_1_10F3C = .text:0x00010F3C; // type:function size:0x40C +ObjectSetup = .text:0x00010F3C; // type:function size:0x40C fn_1_11348 = .text:0x00011348; // type:function size:0x28 fn_1_11370 = .text:0x00011370; // type:function size:0x40 fn_1_113B0 = .text:0x000113B0; // type:function size:0xC8 @@ -235,9 +235,9 @@ lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0xC data:4byte -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0xC data:4byte -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0xC data:4byte +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0xC data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0xC data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0xC data:float lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float @@ -253,11 +253,11 @@ lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:4byte +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x78 -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x78 +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x78 data:float lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0xC8 -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x78 +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x78 data:float lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float @@ -269,7 +269,7 @@ lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x14 data:4byte lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float -lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x30 data:4byte +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x30 data:float lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float @@ -287,7 +287,7 @@ lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 data:float lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float -lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x30 data:4byte +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x30 data:float lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float @@ -314,7 +314,7 @@ lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x20 data:4byte lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x8 data:4byte lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x20 data:4byte lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x8 data:4byte -lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x30 data:4byte +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x30 data:float lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 data:float lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0x4 data:float lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 data:float @@ -330,26 +330,26 @@ lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x8 data:4byte lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0xC data:4byte lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x8 data:4byte lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x8 data:4byte -lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x30 data:4byte -lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x18 data:4byte +lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x30 data:float +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x18 data:float lbl_1_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 data:float -lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 data:float -lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x8 data:double -lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 data:float -lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x8 data:double -lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x4 data:float -lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x8 data:double -lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 data:double -lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x4 data:float -lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x8 data:double -lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x8 data:double -lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x8 data:double -lbl_1_rodata_628 = .rodata:0x00000628; // type:object size:0x4 data:float -lbl_1_rodata_62C = .rodata:0x0000062C; // type:object size:0x4 data:float -lbl_1_rodata_630 = .rodata:0x00000630; // type:object size:0x4 data:float -lbl_1_rodata_634 = .rodata:0x00000634; // type:object size:0x4 data:float -lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x4 data:float -lbl_1_rodata_63C = .rodata:0x0000063C; // type:object size:0x4 data:float +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 scope:local data:double +lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x4 scope:local data:float +lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x8 scope:local data:double +lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x8 scope:local data:double +lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x8 scope:local data:double +lbl_1_rodata_628 = .rodata:0x00000628; // type:object size:0x4 scope:local data:float +lbl_1_rodata_62C = .rodata:0x0000062C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_630 = .rodata:0x00000630; // type:object size:0x4 scope:local data:float +lbl_1_rodata_634 = .rodata:0x00000634; // type:object size:0x4 scope:local data:float +lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x4 scope:local data:float +lbl_1_rodata_63C = .rodata:0x0000063C; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0xA0 lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x4 data:4byte lbl_1_data_A4 = .data:0x000000A4; // type:object size:0x4 data:4byte @@ -358,30 +358,30 @@ lbl_1_data_AC = .data:0x000000AC; // type:object size:0x1B data:string lbl_1_data_C7 = .data:0x000000C7; // type:object size:0x22 data:string lbl_1_data_E9 = .data:0x000000E9; // type:object size:0x1A data:string lbl_1_data_103 = .data:0x00000103; // type:object size:0x1A data:string -lbl_1_data_11D = .data:0x0000011D; // type:object size:0xF +lbl_1_data_11D = .data:0x0000011D; // type:object size:0xE data:string lbl_1_data_12C = .data:0x0000012C; // type:object size:0x4 data:4byte lbl_1_data_130 = .data:0x00000130; // type:object size:0x16 data:string lbl_1_data_146 = .data:0x00000146; // type:object size:0x13 data:string lbl_1_data_159 = .data:0x00000159; // type:object size:0xE data:string lbl_1_data_167 = .data:0x00000167; // type:object size:0xE data:string -lbl_1_data_175 = .data:0x00000175; // type:object size:0x13 +lbl_1_data_175 = .data:0x00000175; // type:object size:0x12 data:string lbl_1_data_188 = .data:0x00000188; // type:object size:0x4 data:float lbl_1_data_18C = .data:0x0000018C; // type:object size:0x14 data:string jumptable_1_data_1A0 = .data:0x000001A0; // type:object size:0x20 scope:local -lbl_1_data_1C0 = .data:0x000001C0; // type:object size:0x14 +lbl_1_data_1C0 = .data:0x000001C0; // type:object size:0x12 data:string jumptable_1_data_1D4 = .data:0x000001D4; // type:object size:0x30 scope:local lbl_1_data_204 = .data:0x00000204; // type:object size:0x78 lbl_1_data_27C = .data:0x0000027C; // type:object size:0x90 lbl_1_data_30C = .data:0x0000030C; // type:object size:0x18 jumptable_1_data_324 = .data:0x00000324; // type:object size:0x2C scope:local -lbl_1_data_350 = .data:0x00000350; // type:object size:0x10 data:string -lbl_1_data_360 = .data:0x00000360; // type:object size:0x10 data:string -lbl_1_data_370 = .data:0x00000370; // type:object size:0x10 data:string -lbl_1_data_380 = .data:0x00000380; // type:object size:0x10 data:string -lbl_1_data_390 = .data:0x00000390; // type:object size:0x10 data:string -lbl_1_data_3A0 = .data:0x000003A0; // type:object size:0x10 data:string -lbl_1_data_3B0 = .data:0x000003B0; // type:object size:0x10 data:string -lbl_1_data_3C0 = .data:0x000003C0; // type:object size:0x10 data:string +lbl_1_data_350 = .data:0x00000350; // type:object size:0x10 scope:local data:string +lbl_1_data_360 = .data:0x00000360; // type:object size:0x10 scope:local data:string +lbl_1_data_370 = .data:0x00000370; // type:object size:0x10 scope:local data:string +lbl_1_data_380 = .data:0x00000380; // type:object size:0x10 scope:local data:string +lbl_1_data_390 = .data:0x00000390; // type:object size:0x10 scope:local data:string +lbl_1_data_3A0 = .data:0x000003A0; // type:object size:0x10 scope:local data:string +lbl_1_data_3B0 = .data:0x000003B0; // type:object size:0x10 scope:local data:string +lbl_1_data_3C0 = .data:0x000003C0; // type:object size:0x10 scope:local data:string lbl_1_data_3D0 = .data:0x000003D0; // type:object size:0x20 lbl_1_data_3F0 = .data:0x000003F0; // type:object size:0x40 lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte diff --git a/configure.py b/configure.py index 883c245d..7d4cf24a 100644 --- a/configure.py +++ b/configure.py @@ -1118,7 +1118,7 @@ def Rel(lib_name, objects): "m437Dll", # Balloon of Doom objects={ Object(NonMatching, "REL/m437Dll/main.c"), - Object(NonMatching, "REL/m437Dll/sequence.c"), + Object(Matching, "REL/m437Dll/sequence.c"), }, ), Rel( diff --git a/include/REL/m437Dll.h b/include/REL/m437Dll.h new file mode 100755 index 00000000..e96aeaea --- /dev/null +++ b/include/REL/m437Dll.h @@ -0,0 +1,73 @@ +#include "game/object.h" + +#include "dolphin.h" + +typedef struct { + /* 0x00 */ void (*unk00)(void); + /* 0x04 */ s32 (*unk04)(void); + /* 0x08 */ s32 unk08; +} StructData204; // Size 0xC + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ StructData204* unk04; + /* 0x08 */ void (*unk08)(void); + /* 0x0C */ s32 (*unk0C)(void); + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; +} StructBss50; // Size 0x18 + +typedef struct { + /* 0x00 */ void (*unk00)(void); + /* 0x04 */ void (*unk04)(void); + /* 0x08 */ float unk08; + /* 0x08 */ float unk0C; + /* 0x10 */ float unk10; + /* 0x14 */ float unk14; + /* 0x18 */ float unk18; + /* 0x1C */ float unk1C; + /* 0x20 */ float unk20; + /* 0x24 */ float unk24; + /* 0x28 */ float unk28; + /* 0x2C */ float unk2C; + /* 0x30 */ float unk30; + /* 0x34 */ float unk34; + /* 0x38 */ float unk38; + /* 0x3C */ float unk3C; + /* 0x40 */ s32 unk40; + /* 0x44 */ s32 unk44[7]; + /* 0x60 */ float unk60[7]; +} StructBss160; // Size 0x7C + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ char unk04[128]; + /* 0x84 */ s32 unk84; + /* 0x88 */ s32 unk88; + /* 0x8C */ s32 unk8C; + /* 0x90 */ s32 unk90; + /* 0x94 */ s32 unk94[20]; + /* 0xE4 */ omObjData* unkE4; +} StructFn15CD0; // Size 0xE8 + +float fn_1_11348(float arg0, float arg1, float arg2, float arg3); +float fn_1_11370(float arg0, float arg1, float arg2); +float fn_1_113B0(float arg0, float arg1, float arg2, float arg3); +float fn_1_11478(float arg0, float arg1, float arg2, float arg3); +float fn_1_11540(float arg0, float arg1, float arg2, float arg3); +void fn_1_11668(StructBss50* arg0, StructData204* arg1); +s32 fn_1_116C4(StructBss50* arg0); +s32 fn_1_117C0(StructBss50* arg0, s32 arg1); +s32 fn_1_11854(StructBss50* arg0, s32 arg1); +s32 fn_1_11890(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_119A0(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_11B18(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +s32 fn_1_11CE0(omObjData* arg0, Vec arg1, float arg2, float arg3, float arg4, float arg5, s32 arg6); +void fn_1_12ABC(StructBss160* arg0); +void fn_1_12E14(StructBss160* arg0, float arg1); +void fn_1_13658(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3, float arg4); +void fn_1_15544(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3, float arg4); +void fn_1_15CD0(StructFn15CD0* arg0, s32 arg1); +void fn_1_15DC8(StructFn15CD0* arg0); +void fn_1_164B0(Process* arg0, StructFn15CD0* arg1, s32 arg2, const char* arg3); +void fn_1_1660C(Process* arg0, StructFn15CD0* arg1, s32 arg2, s32 arg3); diff --git a/include/game/gamework_data.h b/include/game/gamework_data.h index 5376c63e..cad58011 100644 --- a/include/game/gamework_data.h +++ b/include/game/gamework_data.h @@ -274,6 +274,11 @@ static inline s32 GWBoardGet(void) return GWSystem.board; } +static inline s32 GWPlayerCurrGet(void) +{ + return GWSystem.player_curr; +} + static inline s32 GWPlayerTeamGet(s32 player) { return GWPlayer[player].team; diff --git a/src/REL/m437Dll/main.c b/src/REL/m437Dll/main.c new file mode 100755 index 00000000..27345907 --- /dev/null +++ b/src/REL/m437Dll/main.c @@ -0,0 +1,3360 @@ +#include "REL/m437Dll.h" +#include "game/process.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + +#include "dolphin.h" +#include "rel_sqrt_consts.h" +#include "string.h" + +typedef struct { + /* 0x000 */ omObjData* unk00; + /* 0x004 */ s32 unk04; + /* 0x008 */ s32 unk08; + /* 0x00C */ s32 unk0C; + /* 0x010 */ s32 unk10; + /* 0x014 */ s32 unk14; + /* 0x018 */ char unk18[4]; + /* 0x01C */ s32 unk1C; + /* 0x020 */ s32 unk20; + /* 0x024 */ s32 unk24; + /* 0x028 */ s32 unk28; + /* 0x02C */ s32 unk2C; + /* 0x030 */ s32 unk30; + /* 0x034 */ s32 unk34; + /* 0x038 */ s32 unk38; + /* 0x03C */ s32 unk3C; + /* 0x040 */ s32 unk40; + /* 0x044 */ float unk44; + /* 0x048 */ float unk48; + /* 0x04C */ float unk4C; + /* 0x050 */ StructFn15CD0 unk50; +} StructBss1DC; // Size 0x138 + +typedef struct { + /* 0x00 */ omObjData* unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ s32 unk20; +} StructBss920; // Size 0x24 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; +} StructFn3410; // Size 0x14 + +typedef struct { + /* 0x00 */ omObjData* unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ s32 unk20; + /* 0x24 */ float unk24; +} StructBss8D4; // Size 0x28 + +typedef struct { + /* 0x000 */ omObjData* unk00; + /* 0x004 */ s32 unk04; + /* 0x008 */ s32 unk08; + /* 0x00C */ s32 unk0C; + /* 0x010 */ s32 unk10; + /* 0x014 */ s32 unk14; + /* 0x018 */ s32 unk18; + /* 0x01C */ s32 unk1C; + /* 0x020 */ s32 unk20; + /* 0x024 */ StructFn15CD0 unk24; +} StructBss6BC; // Size 0x10C + +typedef struct { + /* 0x00 */ omObjData* unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ s32 unk20; +} StructBss8FC; // Size 0x24 + +typedef struct { + /* 0x00 */ omObjData* unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ s32 unk20; + /* 0x24 */ float unk24[7]; + /* 0x40 */ char unk40[4]; + /* 0x44 */ float unk44[7]; + /* 0x60 */ char unk60[4]; + /* 0x64 */ float unk64[7]; + /* 0x80 */ char unk80[4]; + /* 0x84 */ float unk84[7]; + /* 0xA0 */ char unkA0[4]; + /* 0xA4 */ float unkA4[7]; + /* 0xC0 */ char unkC0[4]; + /* 0xC4 */ float unkC4[7]; + /* 0xE0 */ char unkE0[4]; +} StructBss68; // Size 0xE4 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ s32 unk20; +} StructBss944; // Size 0x24 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ char unk08[0x38]; +} StructBss968; // Size 0x40 + +void fn_1_0(void); +void fn_1_1A8(void); +void fn_1_230(s32 arg0, s32 arg1, float arg2); +void fn_1_298(s32 arg0, float arg1); +float fn_1_304(s32 arg0); +void fn_1_434(void); +void fn_1_4C0(void); +void fn_1_8A4(void (*arg0)(void)); +void fn_1_8C4(void (*arg0)(void)); +void fn_1_8E4(omObjData* arg0); +void fn_1_F8C(void); +void fn_1_10C0(void); +void fn_1_1184(s32 arg0); +s32 fn_1_11BC(void); +void fn_1_11E0(void); +void fn_1_1218(omObjData* arg0); +void fn_1_13E8(void); +void fn_1_144C(s32 arg0, float arg1, float arg2, s32 arg3); +void fn_1_1A90(void); +void fn_1_1AB4(s32 arg0, float arg1, float arg2); +s32 fn_1_1F0C(float arg0, float arg1, float arg2, float arg3, s32 arg4); +s32 fn_1_20F8(float arg0, float arg1, float arg2, float arg3, s32 arg4); +void fn_1_22E4(s32 arg0, float arg1, float arg2); +void fn_1_273C(s32 arg0); +void fn_1_27A4(s32 arg0); +void fn_1_280C(s32 arg0, s32 arg1); +void fn_1_28F4(s32 arg0); +void fn_1_2A10(s32 arg0, s32 arg1); +void fn_1_2A94(float* arg0, s32 arg1); +void fn_1_2B04(omObjData* arg0); +void fn_1_2BAC(s32 arg0); +void fn_1_2BBC(omObjData* arg0); +void fn_1_3194(omObjData* arg0); +void fn_1_3260(StructBss920* arg0); +void fn_1_3410(omObjData* arg0); +float fn_1_3694(void); +float fn_1_36B4(void); +void fn_1_37D4(s32 arg0); +void fn_1_37E8(omObjData* arg0); +s32 fn_1_3990(void); +void fn_1_39C4(float arg0); +void fn_1_39E4(omObjData* arg0); +void fn_1_3B50(void); +void fn_1_3B64(omObjData* arg0); +void fn_1_3CB8(s32 arg0); +void fn_1_3D40(omObjData* arg0); +void fn_1_3F44(omObjData* arg0); +void fn_1_4538(StructBss8FC* arg0); +void fn_1_46C0(omObjData* arg0); +void fn_1_4928(s32 arg0); +void fn_1_4938(omObjData* arg0); +void fn_1_4AF8(s32 arg0); +void fn_1_4BAC(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_4C40(omObjData* arg0); +void fn_1_4E00(StructBss8D4* arg0); +void fn_1_4EE0(omObjData* arg0); +void fn_1_5148(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_51DC(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_5270(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_5304(s32 arg0); +void fn_1_532C(omObjData* arg0); +void fn_1_5658(omObjData* arg0); +void fn_1_5984(StructBss6BC* arg0); +void fn_1_5AD8(omObjData* arg0); +void fn_1_5FBC(void); +void fn_1_610C(s32 arg0, s32 arg1); +void fn_1_6134(omObjData* arg0); +void fn_1_6198(s32 arg0, s32 arg1); +void fn_1_6200(omObjData* arg0); +void fn_1_6580(s32 arg0, s32 arg1, s32 arg2); +void fn_1_65E0(omObjData* arg0); +void fn_1_70F8(s32 arg0, s32 arg1); +void fn_1_7134(omObjData* arg0); +void fn_1_72CC(omObjData* arg0); +void fn_1_74B0(StructBss1DC* arg0); +void fn_1_7678(omObjData* arg0); +void fn_1_79E0(void); +void fn_1_7A14(omObjData* arg0); +void fn_1_82E0(omObjData* arg0); +void fn_1_8308(StructBss68* arg0); +void fn_1_84C4(omObjData* arg0); +void fn_1_8684(void); +void fn_1_8734(void); +void fn_1_8824(void); +void fn_1_88D4(void); +void fn_1_8984(void); +void fn_1_8A34(void); +void fn_1_8B24(void); +void fn_1_8BD4(void); +void fn_1_8C84(s32 arg0); +void fn_1_8DA4(void); +void fn_1_9320(void); +void fn_1_96D8(void); +void fn_1_9B2C(s32 arg0); +void fn_1_9FA0(void); +void fn_1_A440(void); +void fn_1_A860(void); +s32 fn_1_A864(void); +void fn_1_A9E8(void); +s32 fn_1_AA24(void); +void fn_1_AA80(void); +s32 fn_1_AABC(void); +void fn_1_AB18(void); +s32 fn_1_AB68(void); +void fn_1_ABB0(void); +s32 fn_1_ABEC(void); +void fn_1_AC70(void); +s32 fn_1_ACCC(void); +void fn_1_AD28(void); +s32 fn_1_AD98(void); +void fn_1_ADE0(void); +s32 fn_1_AE1C(void); +void fn_1_AE78(void); +s32 fn_1_AF4C(void); +void fn_1_B194(void); +s32 fn_1_B1C4(void); +float fn_1_B250(void); +void fn_1_B270(void); +s32 fn_1_B3F0(s32 arg0); +float fn_1_B4F4(s32 arg0, s32 arg1); +void fn_1_B7E0(void); +void fn_1_B8D0(void); +void fn_1_BC18(void); +void fn_1_BCC8(void); +void fn_1_BDB8(s32 arg0); +void fn_1_BE80(void); +void fn_1_C248(void); +void fn_1_C610(void); +void fn_1_C9C4(void); +void fn_1_CD20(void); +void fn_1_D03C(void); +void fn_1_D3C0(void); +void fn_1_D754(void); +s32 fn_1_D930(void); +void fn_1_DCEC(void); +s32 fn_1_DEC4(void); +void fn_1_E2A8(void); +s32 fn_1_E598(void); +void fn_1_E634(void); +s32 fn_1_E944(void); +void fn_1_E9A0(void); +s32 fn_1_EAA4(void); +void fn_1_EB38(void); +s32 fn_1_EC10(void); +void fn_1_EDD4(void); +s32 fn_1_EEA0(void); +void fn_1_EFCC(void); +s32 fn_1_F0B8(void); +void fn_1_F0F8(void); +s32 fn_1_F144(void); +void fn_1_F18C(void); +s32 fn_1_F294(void); +void fn_1_F3D8(void); +s32 fn_1_F494(void); +void fn_1_F4D4(void); +s32 fn_1_F504(void); +void fn_1_F590(void); +s32 fn_1_F640(void); +void fn_1_F6EC(void); +s32 fn_1_F71C(void); +void fn_1_F7A8(omObjData* arg0); +s32 fn_1_F89C(void); +void fn_1_F8AC(void); +void fn_1_1043C(omObjData* arg0); +void fn_1_108A4(omObjData* arg0); +void fn_1_10B30(void); + +StructBss968 lbl_1_bss_968; +StructBss944 lbl_1_bss_944; +StructBss920 lbl_1_bss_920; +StructBss8FC lbl_1_bss_8FC; +StructBss8D4 lbl_1_bss_8D4; +StructBss6BC lbl_1_bss_6BC[2]; +StructBss1DC lbl_1_bss_1DC[4]; +StructBss160 lbl_1_bss_160; +float lbl_1_bss_15C; +float lbl_1_bss_158; +float lbl_1_bss_154; +float lbl_1_bss_150; +float lbl_1_bss_14C; +StructBss68 lbl_1_bss_68; +StructBss50 lbl_1_bss_50; +StructBss50 lbl_1_bss_38; +StructBss50 lbl_1_bss_20; +s32 lbl_1_bss_1C; +s32 lbl_1_bss_18; +float lbl_1_bss_14; +s32 lbl_1_bss_10; +s32 lbl_1_bss_C; +s32 lbl_1_bss_8; +s32 lbl_1_bss_4; +Process* lbl_1_bss_0; + + +s32 lbl_1_data_0[][5] = { + { 91, 105, 126, 141, -1 }, + { 91, 105, 126, 141, -1 }, + { 124, 137, -1, -1, -1 }, + { 85, 100, 127, -1, -1 }, + { 124, 139, -1, -1, -1 }, + { 85, 97, 127, 139, -1 }, + { 127, 137, -1, -1, -1 }, + { 79, 95, 109, 127, -1 } +}; + +s32 lbl_1_data_A0 = -1; +s32 lbl_1_data_A4 = -1; +s32 lbl_1_data_A8 = -1; + +void fn_1_0(void) { + s32 i; + + while (TRUE) { + HuPrcVSleep(); + if (lbl_1_data_A0 == -1 || lbl_1_data_A4 == -1 || lbl_1_data_A8 == -1 || lbl_1_data_A4 != Hu3DMotionIDGet(lbl_1_data_A0)) { + continue; + } + for (i = 0; i < 5; i++) { + if (lbl_1_data_0[lbl_1_data_A8][i] != -1 && Hu3DMotionTimeGet(lbl_1_data_A0) >= lbl_1_data_0[lbl_1_data_A8][i]) { + OSReport("KE-System CHR:%d TIME:%d\n", lbl_1_data_A8, lbl_1_data_0[lbl_1_data_A8][i]); + HuAudFXPlay(0x6D8); + lbl_1_data_0[lbl_1_data_A8][i] = -1; + } + } + } +} + +void fn_1_1A8(void) { + s32 var_r31; + + var_r31 = Hu3DGLightCreate(0.0f, 1000.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0xFF, 0xFF, 0xFF); + Hu3DGLightInfinitytSet(var_r31); +} + +void fn_1_230(s32 arg0, s32 arg1, float arg2) { + StructBss160* var_r31; + + var_r31 = &lbl_1_bss_160; + var_r31->unk44[arg0] = arg1; + if (var_r31->unk60[arg0] < 0.0f) { + var_r31->unk60[arg0] = -arg2; + } else { + var_r31->unk60[arg0] = arg2; + } +} + +void fn_1_298(s32 arg0, float arg1) { + fn_1_230(arg0, -1, arg1); +} + +float fn_1_304(s32 arg0) { + StructBss160* var_r31; + + var_r31 = &lbl_1_bss_160; + if (var_r31->unk60[arg0] != 0.0f) { + var_r31->unk60[arg0] *= -0.9f; + if (var_r31->unk44[arg0] == -1) { + if (var_r31->unk60[arg0] >= -0.5f && var_r31->unk60[arg0] <= 0.5f) { + var_r31->unk60[arg0] = 0.0f; + } + } else { + var_r31->unk44[arg0]--; + if (var_r31->unk44[arg0] <= 0) { + var_r31->unk44[arg0] = 0; + var_r31->unk60[arg0] = 0.0f; + } + } + } + return var_r31->unk60[arg0]; +} + +void fn_1_434(void) { + StructBss160* var_r31; + + var_r31 = &lbl_1_bss_160; + var_r31->unk08 = 0.0f; + var_r31->unk0C = 225.0f; + var_r31->unk10 = 1740.0f; + var_r31->unk20 = -10.0f; + var_r31->unk24 = 0.0f; + var_r31->unk28 = 0.0f; + var_r31->unk38 = 300.0f; +} + +void fn_1_4C0(void) { + StructBss160* var_r31; + + var_r31 = &lbl_1_bss_160; + if (HuPadBtn[0] & 0x200) { + if (HuPadBtn[0] & 0x100) { + var_r31->unk10 -= HuPadStkY[0] / 10.0f; + } else { + var_r31->unk08 += HuPadStkX[0] / 10.0f; + var_r31->unk0C += HuPadStkY[0] / 10.0f; + } + } + if (HuPadBtn[0] & 0x800) { + var_r31->unk20 -= HuPadStkY[0] / 100.0f; + var_r31->unk24 += HuPadStkX[0] / 100.0f; + if (var_r31->unk20 < 0.0f) { + var_r31->unk20 += 360.0f; + } + if (var_r31->unk20 >= 360.0f) { + var_r31->unk20 -= 360.0f; + } + if (var_r31->unk24 < 0.0f) { + var_r31->unk24 += 360.0f; + } + if (var_r31->unk24 >= 360.0f) { + var_r31->unk24 -= 360.0f; + } + } + if (HuPadBtn[0] & 0x400) { + var_r31->unk38 -= HuPadStkY[0] / 10.0f; + } + print8(16, 100, 1.0f, ">>>>>>>>>> CAMERA TEST <<<<<<<<<<"); + print8(16, 110, 1.0f, "CENTER : %.2f, %.2f, %.2f", var_r31->unk08, var_r31->unk0C, var_r31->unk10); + print8(16, 120, 1.0f, "ROT : %.2f, %.2f, %.2f", var_r31->unk20, var_r31->unk24, var_r31->unk28); + print8(16, 130, 1.0f, "ZOOM : %.2f", var_r31->unk38); +} + +void fn_1_8A4(void (*arg0)(void)) { + StructBss160* var_r31; + + var_r31 = &lbl_1_bss_160; + var_r31->unk00 = arg0; +} + +void fn_1_8C4(void (*arg0)(void)) { + StructBss160* var_r31; + + var_r31 = &lbl_1_bss_160; + var_r31->unk04 = arg0; +} + +void fn_1_8E4(omObjData* arg0) { + StructBss160* var_r31; + + var_r31 = &lbl_1_bss_160; + if (var_r31->unk00 != NULL) { + var_r31->unk00(); + } + Center.x = var_r31->unk08 + fn_1_304(0); + Center.y = var_r31->unk0C + fn_1_304(1); + Center.z = var_r31->unk10 + fn_1_304(2); + CRot.x = var_r31->unk20 + fn_1_304(3); + CRot.y = var_r31->unk24 + fn_1_304(4); + CRot.z = var_r31->unk28 + fn_1_304(5); + CZoom = var_r31->unk38 + fn_1_304(6); +} + +void fn_1_F8C(void) { + Hu3DCameraCreate(1); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraPerspectiveSet(1, 45.0f, 0.1f, 10000.0f, 1.2f); + fn_1_8A4(fn_1_434); + fn_1_8C4(fn_1_4C0); + omAddObjEx(lbl_1_bss_0, 0x7FDA, 0, 0, -1, omOutView); + omAddObjEx(lbl_1_bss_0, 0x7FD9, 0, 0, -1, fn_1_8E4); +} + +void fn_1_10C0(void) { + Vec sp20 = { 0.0f, 3000.0f, 1.0f }; + Vec sp14 = { 0.0f, 0.0f, 0.0f }; + Vec sp8 = { 0.0f, 1.0f, 0.0f }; + + Hu3DShadowCreate(45.0f, 2000.0f, 25000.0f); + Hu3DShadowTPLvlSet(0.8f); + Hu3DShadowPosSet(&sp20, &sp8, &sp14); +} + +void fn_1_1184(s32 arg0) { + if (lbl_1_bss_8 == 0) { + lbl_1_bss_8 = 1; + lbl_1_bss_4 = arg0 * 60; + } +} + +s32 fn_1_11BC(void) { + if (lbl_1_bss_8 == 3) { + return 1; + } else { + return 0; + } +} + +void fn_1_11E0(void) { + if (lbl_1_bss_8 == 2) { + lbl_1_bss_8 = 3; + lbl_1_bss_4 = 30; + } +} + +s32 lbl_1_data_12C = -1; + +void fn_1_1218(omObjData* arg0) { + switch (lbl_1_bss_8) { + case 1: + if (lbl_1_data_12C == -1) { + lbl_1_data_12C = MGSeqCreate(1, lbl_1_bss_4 / 60, -1, -1); + } + lbl_1_bss_8 = 2; + break; + case 2: + lbl_1_bss_4--; + if (lbl_1_data_12C != -1) { + MGSeqParamSet(lbl_1_data_12C, 1, (lbl_1_bss_4 + 59) / 60); + } + if (lbl_1_bss_4 <= 0) { + lbl_1_bss_4 = 30; + lbl_1_bss_8 = 3; + } + break; + case 3: + if (lbl_1_data_12C != -1) { + MGSeqParamSet(lbl_1_data_12C, 2, -1); + lbl_1_data_12C = -1; + } + lbl_1_bss_4 = 0; + lbl_1_bss_8 = 0; + break; + } +} + +void fn_1_13E8(void) { + lbl_1_bss_4 = 0; + lbl_1_bss_8 = 0; + omAddObjEx(lbl_1_bss_0, 0x2000, 0, 0, -1, fn_1_1218); +} + +// Identical to mgmodedll/main.c::fn_1_245CC +void fn_1_144C(s32 arg0, float arg1, float arg2, s32 arg3) { + WindowData* temp_r29; + float temp_f29; + float temp_f28; + float temp_f25; + float temp_f24; + float temp_f27; + float temp_f26; + float var_f31; + float var_f30; + float var_f23; + float var_f22; + float var_f21; + float var_f20; + s32 i; + + temp_r29 = &winData[arg0]; + temp_f29 = temp_r29->pos_x; + temp_f28 = temp_r29->pos_y; + temp_f25 = temp_r29->w; + temp_f24 = temp_r29->h; + var_f31 = temp_f29 + temp_f25 * arg1; + temp_f27 = 4.0f / temp_f25; + if (var_f31 + 4.0f - (temp_f29 + temp_f25) >= 0.0f) { + var_f31 = temp_f29 + temp_f25 - 4.0f; + } else { + if (temp_f29 - (var_f31 - 2.0f) >= 0.0f) { + var_f31 = temp_f29; + } else { + var_f31 -= 2.0f; + } + } + var_f30 = temp_f28 + temp_f24 * arg2; + temp_f26 = 4.0f / temp_f24; + if (var_f30 + 4.0f - (temp_f28 + temp_f24) >= 0.0f) { + var_f30 = temp_f28 + temp_f24 - 4.0f; + } else { + if (temp_f28 - (var_f30 - 2.0f) >= 0.0f) { + var_f30 = temp_f28; + } else { + var_f30 -= 2.0f; + } + } + if (arg3 != 0) { + HuWinPosSet(arg0, var_f31, var_f30); + HuWinScaleSet(arg0, temp_f27, temp_f26); + var_f23 = var_f31; + var_f21 = temp_f27; + var_f22 = var_f30; + var_f20 = temp_f26; + } else { + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + var_f23 = temp_f29; + var_f21 = 1.0f; + var_f22 = temp_f28; + var_f20 = 1.0f; + } + HuWinDispOn(arg0); + for (i = 0; i <= 15; i++) { + HuPrcVSleep(); + if (arg3 != 0) { + if (i <= 10) { + var_f23 = fn_1_113B0(var_f31, temp_f29, i, 10.0f); + var_f21 = fn_1_113B0(temp_f27, 1.0f, i, 10.0f); + } else { + var_f22 = fn_1_113B0(var_f30, temp_f28, i - 10, 5.0f); + var_f20 = fn_1_113B0(temp_f26, 1.0f, i - 10, 5.0f); + } + } else { + if (i <= 10) { + var_f22 = fn_1_113B0(temp_f28, var_f30, i, 10.0f); + var_f20 = fn_1_113B0(1.0f, temp_f26, i, 10.0f); + } else { + var_f23 = fn_1_113B0(temp_f29, var_f31, i - 10, 5.0f); + var_f21 = fn_1_113B0(1.0f, temp_f27, i - 10, 5.0f); + } + } + HuWinPosSet(arg0, var_f23, var_f22); + HuWinScaleSet(arg0, var_f21, var_f20); + } + if (arg3 != 0) { + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + } else { + HuWinPosSet(arg0, var_f31, var_f30); + HuWinScaleSet(arg0, temp_f27, temp_f26); + } + HuPrcVSleep(); +} + +void fn_1_1A90(void) { + HuWinInit(1); +} + +void fn_1_1AB4(s32 arg0, float arg1, float arg2) { + WindowData* temp_r31; + float temp_f29; + float temp_f28; + float temp_f27; + float temp_f26; + float temp_f25; + float temp_f24; + float var_f31; + float var_f30; + float temp_f23; + float temp_f22; + float temp_f21; + float temp_f20; + s32 i; + + temp_r31 = &winData[arg0]; + temp_f29 = temp_r31->pos_x; + temp_f28 = temp_r31->pos_y; + temp_f27 = temp_r31->w; + temp_f26 = temp_r31->h; + var_f31 = temp_f29 + temp_f27 * arg1; + temp_f25 = 4.0f / temp_f27; + if (var_f31 + 4.0f - (temp_f29 + temp_f27) >= 0.0f) { + var_f31 = temp_f29 + temp_f27 - 4.0f; + } else { + if (temp_f29 - (var_f31 - 2.0f) >= 0.0f) { + var_f31 = temp_f29; + } else { + var_f31 = var_f31 - 2.0f; + } + } + var_f30 = temp_f28 + temp_f26 * arg2; + temp_f24 = 4.0f / temp_f26; + if (var_f30 + 4.0f - (temp_f28 + temp_f26) >= 0.0f) { + var_f30 = temp_f28 + temp_f26 - 4.0f; + } else { + if (temp_f28 - (var_f30 - 2.0f) >= 0.0f) { + var_f30 = temp_f28; + } else { + var_f30 = var_f30 - 2.0f; + } + } + HuWinPosSet(arg0, var_f31, var_f30); + HuWinScaleSet(arg0, temp_f25, temp_f24); + HuPrcVSleep(); + for (i = 0; i < 10; i++) { + temp_f23 = fn_1_113B0(var_f31, temp_f29, i, 10.0f); + temp_f21 = fn_1_113B0(temp_f25, 1.0f, i, 10.0f); + temp_f22 = fn_1_113B0(var_f30, temp_f28, i, 10.0f); + temp_f20 = fn_1_113B0(temp_f24, 1.0f, i, 10.0f); + HuWinPosSet(arg0, temp_f23, temp_f22); + HuWinScaleSet(arg0, temp_f21, temp_f20); + HuPrcVSleep(); + } + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + HuPrcVSleep(); +} + +s32 fn_1_1F0C(float arg0, float arg1, float arg2, float arg3, s32 arg4) { + s32 var_r31; + s32 sp18[][6] = { + { 0xFF, 0xFF, 0xCC, 0x00, 0x09, 0x09 }, + { 0xCC, 0xFF, 0xFF, 0x00, 0x09, 0x09 }, + { 0xFF, 0xCC, 0xFF, 0x00, 0x09, 0x09 } + }; + + var_r31 = HuWinCreate(arg0, arg1, arg2, arg3, 1); + HuSprColorSet(winData[var_r31].group, 0, sp18[arg4][0], sp18[arg4][1], sp18[arg4][2]); + winData[var_r31].mess_color = sp18[arg4][3]; + winData[var_r31].mess_shadow_color = sp18[arg4][4]; + winData[var_r31].attr |= 0x80; + HuWinBGTPLvlSet(var_r31, sp18[arg4][5] / 10.0f); + winData[var_r31].active_pad = 0; + fn_1_144C(var_r31, 0.5f, 0.5f, 1); + return var_r31; +} + +s32 fn_1_20F8(float arg0, float arg1, float arg2, float arg3, s32 arg4) { + return fn_1_1F0C(arg0, arg1, arg2, arg3, arg4); +} + +void fn_1_22E4(s32 arg0, float arg1, float arg2) { + WindowData* temp_r31; + float temp_f29; + float temp_f28; + float temp_f27; + float temp_f26; + float temp_f25; + float temp_f24; + float var_f31; + float var_f30; + float temp_f23; + float temp_f22; + float temp_f21; + float temp_f20; + s32 i; + + temp_r31 = &winData[arg0]; + temp_f29 = temp_r31->pos_x; + temp_f28 = temp_r31->pos_y; + temp_f27 = temp_r31->w; + temp_f26 = temp_r31->h; + var_f31 = temp_f29 + temp_f27 * arg1; + temp_f25 = 4.0f / temp_f27; + if (var_f31 + 4.0f - (temp_f29 + temp_f27) >= 0.0f) { + var_f31 = temp_f29 + temp_f27 - 4.0f; + } else { + if (temp_f29 - (var_f31 - 2.0f) >= 0.0f) { + var_f31 = temp_f29; + } else { + var_f31 = var_f31 - 2.0f; + } + } + var_f30 = temp_f28 + temp_f26 * arg2; + temp_f24 = 4.0f / temp_f26; + if (var_f30 + 4.0f - (temp_f28 + temp_f26) >= 0.0f) { + var_f30 = temp_f28 + temp_f26 - 4.0f; + } else { + if (temp_f28 - (var_f30 - 2.0f) >= 0.0f) { + var_f30 = temp_f28; + } else { + var_f30 = var_f30 - 2.0f; + } + } + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + HuPrcVSleep(); + for (i = 0; i < 10; i++) { + temp_f23 = fn_1_11540(temp_f29, var_f31, i, 10.0f); + temp_f21 = fn_1_11540(1.0f, temp_f25, i, 10.0f); + temp_f22 = fn_1_11540(temp_f28, var_f30, i, 10.0f); + temp_f20 = fn_1_11540(1.0f, temp_f24, i, 10.0f); + HuWinPosSet(arg0, temp_f23, temp_f22); + HuWinScaleSet(arg0, temp_f21, temp_f20); + HuPrcVSleep(); + } + HuWinPosSet(arg0, var_f31, var_f30); + HuWinScaleSet(arg0, temp_f25, temp_f24); + HuPrcVSleep(); +} + +void fn_1_273C(s32 arg0) { + HuWinMesSet(arg0, MAKE_MESSID(29, 22)); + HuPrcVSleep(); + fn_1_144C(arg0, 0.5f, 0.5f, 0); + HuWinKill(arg0); +} + +void fn_1_27A4(s32 arg0) { + fn_1_273C(arg0); +} + +void fn_1_280C(s32 arg0, s32 arg1) { + s32 var_r30; + s32 temp_r28; + s32 i; + + var_r30 = 0; + temp_r28 = GWMessDelayGet(); + if (arg1 > 0) { + HuPrcSleep(arg1); + return; + } + HuWinComKeyReset(); + for (i = 0; i < 4; i++) { + if (lbl_1_bss_1DC[i].unk34 == 0) { + var_r30 = 1; + winData[arg0].active_pad = 0xF; + } + } + if (var_r30 == 0) { + winData[arg0].active_pad = 0xF; + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, temp_r28); + } + HuWinMesWait(arg0); + HuWinComKeyReset(); +} + +void fn_1_28F4(s32 arg0) { + s32 var_r31; + s32 temp_r28; + s32 i; + + var_r31 = 0; + temp_r28 = GWMessDelayGet(); + HuWinComKeyReset(); + for (i = 0; i < 4; i++) { + if (lbl_1_bss_1DC[i].unk34 == 0) { + var_r31 = 1; + winData[arg0].active_pad = 0xF; + } + } + if (var_r31 == 0) { + winData[arg0].active_pad = 0xF; + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, temp_r28); + } + var_r31 = HuWinChoiceGet(arg0, 1); + if (var_r31 == -1 || var_r31 == 1) { + lbl_1_bss_10 = 0; + } else { + lbl_1_bss_10 = 1; + } + HuWinComKeyReset(); +} + +void fn_1_2A10(s32 arg0, s32 arg1) { + winData[arg0].mess_color = 0; + winData[arg0].mess_shadow_color = 9; + winData[arg0].attr |= 0x80; + HuWinMesSet(arg0, arg1); +} + +void fn_1_2A94(float* arg0, s32 arg1) { + float spC[2]; + + HuWinMesMaxSizeGet(1, spC, arg1); + if (spC[0] > arg0[0]) { + arg0[0] = spC[0]; + } + if (spC[1] > arg0[1]) { + arg0[1] = spC[1]; + } +} + +void fn_1_2B04(omObjData* arg0) { + s32 i; + + for (i = 0; i < 3; i++) { + Hu3DData[arg0->model[i + 5]].rot.y += 360.0f / (2500.0f + 2500.0f * i); + } +} + +void fn_1_2BAC(s32 arg0) { + lbl_1_bss_920.unk04 = arg0; +} + +void fn_1_2BBC(omObjData* arg0) { + StructBss920* temp_r30; + + temp_r30 = arg0->data; + switch (temp_r30->unk04) { + case 2: + fn_1_119A0(arg0, 9, 9, 1, 0); + Hu3DModelAttrReset(arg0->model[9], 1); + temp_r30->unk1C = 0; + fn_1_230(1, 10, 4.0f); + HuAudFXPlay(0x6CF); + /* fallthrough */ + case 1: + fn_1_119A0(arg0, 0, 0, 1, 0); + fn_1_119A0(arg0, 3, 3, 1, 0); + fn_1_119A0(arg0, 4, 4, 1, 0); + fn_1_119A0(arg0, 5, 5, 1, 0); + fn_1_119A0(arg0, 6, 6, 1, 0); + fn_1_119A0(arg0, 7, 7, 1, 0); + if (temp_r30->unk04 == 1) { + HuAudFXPlay(0x6CE); + } + temp_r30->unk04 = 10; + break; + case 3: + temp_r30->unk04 = 30; + fn_1_119A0(arg0, 0, 0, 1, 0); + fn_1_119A0(arg0, 1, 1, 1, 0); + fn_1_119A0(arg0, 2, 2, 1, 0); + fn_1_119A0(arg0, 3, 3, 1, 0); + fn_1_119A0(arg0, 4, 4, 1, 0); + fn_1_119A0(arg0, 5, 5, 1, 0); + fn_1_119A0(arg0, 6, 6, 1, 0); + fn_1_119A0(arg0, 7, 7, 1, 0); + fn_1_119A0(arg0, 8, 8, 0, 0); + Hu3DModelAttrReset(arg0->model[8], 1); + Hu3DModelAttrReset(arg0->model[9], 1); + HuAudFXPlay(0x6D0); + break; + case 10: + if (Hu3DMotionEndCheck(arg0->model[3])) { + temp_r30->unk04 = 0; + fn_1_119A0(arg0, 3, 13, 1, 1); + fn_1_119A0(arg0, 4, 14, 1, 1); + Hu3DModelAttrSet(arg0->model[8], 1); + Hu3DModelAttrSet(arg0->model[9], 1); + } + break; + case 30: + fn_1_230(6, -1, 8.0f); + if (Hu3DMotionTimeGet(arg0->model[3]) >= 30.0f) { + temp_r30->unk04 = 10; + fn_1_230(6, -1, 128.0f); + HuAudFXPlay(0x6DA); + omVibrate(lbl_1_bss_1DC[0].unk2C, 12, 12, 0); + omVibrate(lbl_1_bss_1DC[1].unk2C, 12, 12, 0); + omVibrate(lbl_1_bss_1DC[2].unk2C, 12, 12, 0); + omVibrate(lbl_1_bss_1DC[3].unk2C, 12, 12, 0); + fn_1_37D4(1); + } + break; + } + if (Hu3DMotionTimeGet(arg0->model[9]) >= 25.0f && temp_r30->unk1C == 0) { + temp_r30->unk1C = 1; + fn_1_230(1, 10, 4.0f); + } else if (Hu3DMotionTimeGet(arg0->model[9]) >= 40.0f && temp_r30->unk1C == 1) { + temp_r30->unk1C = 2; + fn_1_230(1, 10, 4.0f); + } + if (temp_r30->unk04 == 0) { + if (temp_r30->unk14++ >= 300) { + temp_r30->unk14 = 0; + if (rand8() % 2 != 0) { + fn_1_2BAC(1); + } + } + } +} + +void fn_1_3194(omObjData* arg0) { + fn_1_2B04(arg0); + fn_1_2BBC(arg0); +} + +void fn_1_3260(StructBss920* arg0) { + omObjData* temp_r29 = arg0->unk00; + s32 sp80[][3] = { + { 2, -1, 0 }, + { 2, -1, 0 }, + { 2, -1, 0 }, + { 1, 1, 0 }, + { 1, 1, 0 }, + { 2, -1, 0 }, + { 2, -1, 0 }, + { 2, -1, 0 }, + { 2, -1, 1 }, + { 2, -1, 1 } + }; + Vec sp8[] = { + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, -680.0f }, + { 0.0f, 0.0f, -680.0f }, + { 525.0f, 0.0f, -1150.0f }, + { -525.0f, 0.0f, -1150.0f }, + { 0.0f, 150.0f, 50.0f }, + { 0.0f, 150.0f, 0.0f }, + { 0.0f, 150.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f } + }; + s32 i; + + for (i = 0; i < 10; i++) { + Hu3DModelPosSet(temp_r29->model[i], sp8[i].x, sp8[i].y, sp8[i].z); + if (sp80[i][2] == 1) { + Hu3DModelAttrSet(temp_r29->model[i], 1); + } + if (sp80[i][1] != -1) { + fn_1_119A0(temp_r29, i, i + 10, 1, sp80[i][1]); + } else { + fn_1_119A0(temp_r29, i, i, 1, sp80[i][1]); + } + } + temp_r29->work[0] = temp_r29->work[1] = temp_r29->work[2] = temp_r29->work[3] = 0; + arg0->unk14 = arg0->unk18 = arg0->unk1C = arg0->unk20 = 0; + arg0->unk04 = arg0->unk08 = arg0->unk0C = arg0->unk10 = 0; +} + +void fn_1_3410(omObjData* arg0) { + StructFn3410 sp80[] = { + { DATA_MAKE_NUM(DATADIR_M437, 36), 2, -1, 1, 0 }, + { DATA_MAKE_NUM(DATADIR_M437, 37), 2, -1, 1, 0 }, + { DATA_MAKE_NUM(DATADIR_M437, 38), 2, -1, 2, 0 }, + { DATA_MAKE_NUM(DATADIR_M437, 39), 1, DATA_MAKE_NUM(DATADIR_M437, 41), 2, 0 }, + { DATA_MAKE_NUM(DATADIR_M437, 40), 1, DATA_MAKE_NUM(DATADIR_M437, 42), 2, 0 }, + { DATA_MAKE_NUM(DATADIR_M437, 33), 2, -1, 0, 0 }, + { DATA_MAKE_NUM(DATADIR_M437, 34), 2, -1, 0, 0 }, + { DATA_MAKE_NUM(DATADIR_M437, 35), 2, -1, 0, 0 }, + { DATA_MAKE_NUM(DATADIR_M437, 43), 2, -1, 0, 1 }, + { DATA_MAKE_NUM(DATADIR_M437, 44), 2, -1, 0, 1 } + }; + Vec sp8[] = { + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, -680.0f }, + { 0.0f, 0.0f, -680.0f }, + { 525.0f, 0.0f, -1150.0f }, + { -525.0f, 0.0f, -1150.0f }, + { 0.0f, 150.0f, 50.0f }, + { 0.0f, 150.0f, 0.0f }, + { 0.0f, 150.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f } + }; + s32 i; + + for (i = 0; i < 10; i++) { + arg0->model[i] = Hu3DModelCreateFile(sp80[i].unk00); + arg0->motion[i] = Hu3DMotionIDGet(arg0->model[i]); + if (sp80[i].unk08 != -1) { + arg0->motion[i + 10] = Hu3DJointMotionFile(arg0->model[i], sp80[i].unk08); + } + Hu3DModelPosSet(arg0->model[i], sp8[i].x, sp8[i].y, sp8[i].z); + if (sp80[i].unk0C == 1) { + Hu3DModelShadowMapSet(arg0->model[i]); + } else if (sp80[i].unk0C == 2) { + Hu3DModelShadowSet(arg0->model[i]); + } + if (sp80[i].unk10 == 1) { + Hu3DModelAttrSet(arg0->model[i], 1); + Hu3DModelLayerSet(arg0->model[i], 1); + } + if (sp80[i].unk08 != -1) { + fn_1_119A0(arg0, i, i + 10, 1, sp80[i].unk04); + } else { + fn_1_119A0(arg0, i, i, 1, sp80[i].unk04); + } + } + arg0->data = &lbl_1_bss_920; + arg0->func = fn_1_3194; +} + +float fn_1_3694(void) { + return lbl_1_bss_150 / lbl_1_bss_154; +} + +float fn_1_36B4(void) { + float temp_f31; + StructBss6BC* sp8; + + temp_f31 = lbl_1_bss_150 / lbl_1_bss_154; + sp8 = &lbl_1_bss_6BC[1]; + if (lbl_1_bss_8D4.unk08 == 0) { + if (temp_f31 > 0.875f) { + fn_1_4AF8(3); + fn_1_5304(3); + fn_1_5148(3, 5, 0, 0); + fn_1_5270(5, 10, 2, 1); + } else if (temp_f31 > 0.75f) { + fn_1_4AF8(2); + fn_1_5304(2); + } else if (temp_f31 > 0.5f) { + fn_1_4AF8(1); + fn_1_5304(1); + } else { + fn_1_4AF8(0); + fn_1_5304(0); + } + } + return temp_f31; +} + +void fn_1_37D4(s32 arg0) { + lbl_1_bss_8FC.unk04 = 1; +} + +void fn_1_37E8(omObjData* arg0) { + Mtx sp8; + StructBss8FC* var_r30; + + var_r30 = &lbl_1_bss_8FC; + switch (var_r30->unk04) { + case 1: + var_r30->unk04 = 2; + Hu3DModelAttrReset(arg0->model[0], 1); + Hu3DModelAttrReset(arg0->model[1], 1); + Hu3DModelAttrReset(arg0->model[2], 1); + fn_1_119A0(arg0, 0, 3, 1, 0); + fn_1_119A0(arg0, 2, 10, 1, 0); + break; + case 2: + if (Hu3DMotionTimeGet(arg0->model[0]) >= 20.0f) { + arg0->trans.y -= 20.0f; + if (arg0->trans.y <= 0.0f) { + arg0->trans.y = 0.0f; + var_r30->unk04 = 3; + } + } + break; + case 3: + if (Hu3DMotionEndCheck(arg0->model[0])) { + var_r30->unk04 = 4; + Hu3DModelHookReset(arg0->model[2]); + Hu3DModelObjMtxGet(arg0->model[0], "m437a01-balloon-point", sp8); + Hu3DModelPosSet(arg0->model[1], sp8[0][3], 0.0f, -250.0f); + } + break; + } +} + +s32 fn_1_3990(void) { + if (lbl_1_bss_15C <= lbl_1_bss_158) { + return 1; + } else { + return 0; + } +} + +void fn_1_39C4(float arg0) { + lbl_1_bss_158 += arg0; +} + +void fn_1_39E4(omObjData* arg0) { + if (lbl_1_bss_15C > lbl_1_bss_158) { + lbl_1_bss_150 = lbl_1_bss_158 * (lbl_1_bss_154 / lbl_1_bss_15C); + lbl_1_bss_14C = fn_1_11370(lbl_1_bss_14C, lbl_1_bss_150, 5.0f); + Hu3DMotionTimeSet(arg0->model[1], lbl_1_bss_14C); + } else { + lbl_1_bss_158 = lbl_1_bss_15C; + lbl_1_bss_150 = lbl_1_bss_158 * (lbl_1_bss_154 / lbl_1_bss_15C); + lbl_1_bss_14C = fn_1_11370(lbl_1_bss_14C, lbl_1_bss_150, 5.0f); + Hu3DMotionTimeSet(arg0->model[1], lbl_1_bss_14C); + } +} + +void fn_1_3B50(void) { + lbl_1_bss_8FC.unk08 = 1; +} + +void fn_1_3B64(omObjData* arg0) { + Mtx sp8; + StructBss8FC* var_r30; + + var_r30 = &lbl_1_bss_8FC; + if (var_r30->unk08 == 1) { + var_r30->unk08 = 0; + Hu3DModelAttrReset(arg0->model[3], 1); + Hu3DModelAttrSet(arg0->model[1], 1); + Hu3DModelObjMtxGet(arg0->model[0], "m437a01-balloon-point", sp8); + Hu3DModelPosSet(arg0->model[3], sp8[0][3], 0.0f, -250.0f); + fn_1_119A0(arg0, 3, 6, 1, 0); + omVibrate(lbl_1_bss_1DC[0].unk2C, 12, 12, 0); + omVibrate(lbl_1_bss_1DC[1].unk2C, 12, 12, 0); + omVibrate(lbl_1_bss_1DC[2].unk2C, 12, 12, 0); + omVibrate(lbl_1_bss_1DC[3].unk2C, 12, 12, 0); + HuAudFXPlay(0x6F4); + HuAudSeqAllFadeOut(100); + } +} + +void fn_1_3CB8(s32 arg0) { + lbl_1_bss_14 += arg0; + if (lbl_1_bss_14 >= 3.0f) { + lbl_1_bss_14 = 3.0f; + } +} + +void fn_1_3D40(omObjData* arg0) { + float temp_f31; + StructBss8FC* sp8; + s32 temp_r31; + + sp8 = &lbl_1_bss_8FC; + temp_r31 = 100.0f * fn_1_3694(); + temp_f31 = fn_1_11478(0.0f, lbl_1_bss_14, lbl_1_bss_8FC.unk1C++, temp_r31); + if (lbl_1_bss_8FC.unk1C >= temp_r31) { + lbl_1_bss_8FC.unk1C = 0; + lbl_1_bss_14 -= 0.5f; + if (lbl_1_bss_14 <= 0.0f) { + lbl_1_bss_14 = 0.0f; + } + } + if (fn_1_3694() >= 0.2f) { + Hu3DModelRotSet(arg0->model[1], 0.0f, 0.0f, temp_f31); + } +} + +void fn_1_3F44(omObjData* arg0) { + fn_1_37E8(arg0); + fn_1_39E4(arg0); + fn_1_3D40(arg0); + fn_1_3B64(arg0); +} + +void fn_1_4538(StructBss8FC* arg0) { + omObjData* temp_r31; + + temp_r31 = arg0->unk00; + omSetTra(temp_r31, 0.0f, 210.0f, -250.0f); + Hu3DModelAttrSet(temp_r31->model[0], 1); + Hu3DModelAttrSet(temp_r31->model[1], 1); + lbl_1_bss_150 = 0.0f; + lbl_1_bss_154 = Hu3DMotionMaxTimeGet(temp_r31->model[1]); + lbl_1_bss_14C = 0.0f; + lbl_1_bss_158 = 0.0f; + lbl_1_bss_15C = rand8() % 7 + 30; + Hu3DModelAttrSet(temp_r31->model[2], 1); + temp_r31->work[0] = temp_r31->work[1] = temp_r31->work[2] = temp_r31->work[3] = 0; + arg0->unk14 = arg0->unk18 = arg0->unk1C = arg0->unk20 = 0; + arg0->unk04 = arg0->unk08 = arg0->unk0C = arg0->unk10 = 0; +} + +void fn_1_46C0(omObjData* arg0) { + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M437, 24)); + arg0->motion[0] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 28)); + arg0->motion[1] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 29)); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 30)); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 31)); + Hu3DModelShadowMapSet(arg0->model[0]); + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M437, 26)); + arg0->motion[5] = Hu3DMotionIDGet(arg0->model[1]); + Hu3DModelLayerSet(arg0->model[1], 2); + fn_1_119A0(arg0, 1, 5, 1, 2); + lbl_1_bss_15C = Hu3DMotionMaxTimeGet(arg0->model[1]); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M437, 25)); + arg0->motion[10] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 32)); + Hu3DModelShadowMapSet(arg0->model[0]); + Hu3DModelHookSet(arg0->model[0], "m437a01-balloon-point", arg0->model[2]); + Hu3DModelHookSet(arg0->model[2], "m437test04-b_point", arg0->model[1]); + arg0->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M437, 27)); + arg0->motion[6] = Hu3DMotionIDGet(arg0->model[3]); + Hu3DModelLayerSet(arg0->model[3], 2); + Hu3DModelAttrSet(arg0->model[3], 1); + arg0->func = fn_1_3F44; +} + +void fn_1_4928(s32 arg0) { + lbl_1_bss_8D4.unk04 = arg0; +} + +void fn_1_4938(omObjData* arg0) { + float sp8; + StructBss8D4* temp_r31; + + sp8 = 0.0f; + temp_r31 = arg0->data; + switch (temp_r31->unk04) { + case 1: + temp_r31->unk04 = 2; + temp_r31->unk14 = temp_r31->unk18 = 0; + temp_r31->unk24 = 0.0f; + /* fallthrough */ + case 2: + temp_r31->unk24 = fn_1_11478(0.0f, 10.0f, temp_r31->unk14, 30.0f); + if (temp_r31->unk14++ >= 30) { + temp_r31->unk14 = 0; + temp_r31->unk18++; + if (temp_r31->unk18 >= 2) { + temp_r31->unk04 = 3; + } + } + break; + case 3: + temp_r31->unk24 = fn_1_11370(temp_r31->unk24, 0.0f, 5.0f); + if (temp_r31->unk14++ >= 15) { + temp_r31->unk04 = 0; + temp_r31->unk14 = temp_r31->unk18 = 0; + temp_r31->unk24 = 0.0f; + Hu3DMotionNoMotReset(arg0->model[0], "g000m0-ns_ago", 0x200); + } + break; + } + if (temp_r31->unk04 != 0) { + Hu3DMotionForceSet(arg0->model[0], "g000m0-ns_ago", 0x200, temp_r31->unk24); + } +} + +void fn_1_4AF8(s32 arg0) { + s32 sp8[] = { 4, 5, 6, 7, 8 }; + + if (arg0 <= 3) { + fn_1_11B18(lbl_1_bss_8D4.unk00, 0, sp8[arg0], 120, 1); + } else { + fn_1_11B18(lbl_1_bss_8D4.unk00, 0, sp8[arg0], 5, 0); + } +} + +void fn_1_4BAC(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { + if (arg3 != 0) { + fn_1_119A0(lbl_1_bss_8D4.unk00, 0, arg0, arg1, arg2); + } else { + fn_1_11B18(lbl_1_bss_8D4.unk00, 0, arg0, arg1, arg2); + } +} + +void fn_1_4C40(omObjData* arg0) { + fn_1_4938(arg0); +} + +void fn_1_4E00(StructBss8D4* arg0) { + omObjData* temp_r30; + + temp_r30 = arg0->unk00; + omSetTra(temp_r30, 0.0f, 37.0f, -565.0f); + omSetSca(temp_r30, 1.5f, 1.5f, 1.5f); + fn_1_119A0(temp_r30, 0, 0, 1, 1); + temp_r30->work[0] = temp_r30->work[1] = temp_r30->work[2] = temp_r30->work[3] = 0; + arg0->unk14 = arg0->unk18 = arg0->unk1C = arg0->unk20 = 0; + arg0->unk04 = arg0->unk08 = arg0->unk0C = arg0->unk10 = 0; +} + +void fn_1_4EE0(omObjData* arg0) { + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M437, 45)); + arg0->motion[0] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 46)); + arg0->motion[1] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 47)); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 48)); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 49)); + arg0->motion[4] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 50)); + arg0->motion[5] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 51)); + arg0->motion[6] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 52)); + arg0->motion[7] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 53)); + arg0->motion[8] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 54)); + omSetTra(arg0, 0.0f, 37.0f, -565.0f); + omSetSca(arg0, 1.5f, 1.5f, 1.5f); + Hu3DModelShadowSet(arg0->model[0]); + fn_1_119A0(arg0, 0, 0, 1, 1); + arg0->data = &lbl_1_bss_8D4; + arg0->func = fn_1_4C40; +} + +void fn_1_5148(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { + if (arg3 != 0) { + fn_1_119A0(lbl_1_bss_6BC[0].unk00, 0, arg0, arg1, arg2); + } else { + fn_1_11B18(lbl_1_bss_6BC[0].unk00, 0, arg0, arg1, arg2); + } +} + +void fn_1_51DC(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { + if (arg3 != 0) { + fn_1_119A0(lbl_1_bss_6BC[1].unk00, 0, arg0, arg1, arg2); + } else { + fn_1_11B18(lbl_1_bss_6BC[1].unk00, 0, arg0, arg1, arg2); + } +} + +void fn_1_5270(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { + if (arg3 != 0) { + fn_1_119A0(lbl_1_bss_6BC[0].unk00, 1, arg0, arg1, arg2); + } else { + fn_1_11B18(lbl_1_bss_6BC[0].unk00, 1, arg0, arg1, arg2); + } +} + +void fn_1_5304(s32 arg0) { + StructBss6BC* var_r31; + + var_r31 = &lbl_1_bss_6BC[1]; + var_r31->unk04 = arg0 + 1; +} + +void fn_1_532C(omObjData* arg0) { + StructBss6BC* temp_r31 = arg0->data; + Vec sp38[] = { + { 480.0f, 0.0f, -1250.0f }, + { 400.0f, 37.0f, -850.0f }, + { 400.0f, 37.0f, -600.0f }, + { 400.0f, 37.0f, -425.0f } + }; + + if (arg0->work[0] == 0) { + return; + } + if (temp_r31->unk04 == 7) { + temp_r31->unk08 = temp_r31->unk04; + } + if (temp_r31->unk04 != 4 || temp_r31->unk08 <= 4) { + temp_r31->unk08 = temp_r31->unk04; + } + switch (temp_r31->unk08) { + case 1: + case 2: + case 3: + fn_1_11CE0(arg0, sp38[4 - temp_r31->unk08], 0.0f, 6.0f, 10.0f, 10.0f, 1); + temp_r31->unk00->trans.x = 400.0f; + break; + case 4: + fn_1_11CE0(arg0, sp38[0], 0.0f, 6.0f, 10.0f, 10.0f, 1); + temp_r31->unk00->trans.x = 400.0f; + if (temp_r31->unk18++ >= 60) { + temp_r31->unk08 = 5; + temp_r31->unk18 = 0; + } + break; + case 5: + fn_1_11CE0(arg0, sp38[0], 0.0f, 6.0f, 10.0f, 10.0f, 1); + if (temp_r31->unk18++ >= 60) { + temp_r31->unk08 = 6; + temp_r31->unk18 = 0; + } + break; + case 6: + fn_1_11B18(arg0, 0, 6, 10, 0); + break; + case 7: + fn_1_11CE0(arg0, sp38[3], -15.0f, 6.0f, 10.0f, 10.0f, 1); + break; + } +} + +void fn_1_5658(omObjData* arg0) { + fn_1_532C(arg0); +} + +void fn_1_5984(StructBss6BC* arg0) { + s32 var_r29; + omObjData* temp_r30; + + var_r29 = arg0->unk00->work[0]; + temp_r30 = arg0->unk00; + if (var_r29 != 0) { + omSetTra(temp_r30, 400.0f, 37.0f, -425.0f); + omSetRot(temp_r30, 0.0f, -15.0f, 0.0f); + fn_1_119A0(temp_r30, 0, 0, 1, 1); + } else { + omSetTra(temp_r30, -400.0f, 37.0f, -425.0f); + fn_1_119A0(temp_r30, 0, 0, 1, 1); + fn_1_119A0(temp_r30, 1, 5, 1, 1); + } + temp_r30->work[1] = temp_r30->work[2] = temp_r30->work[3] = 0; + arg0->unk14 = arg0->unk18 = arg0->unk1C = arg0->unk20 = 0; + arg0->unk04 = arg0->unk08 = arg0->unk0C = arg0->unk10 = 0; +} + +void fn_1_5AD8(omObjData* arg0) { + StructBss6BC* temp_r29; + s32 temp_r30; + + temp_r30 = arg0->work[0]; + temp_r29 = &lbl_1_bss_6BC[temp_r30]; + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M437, 57)); + if (temp_r30 != 0) { + arg0->motion[0] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 58)); + arg0->motion[1] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 59)); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 63)); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 64)); + arg0->motion[4] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 65)); + arg0->motion[5] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 66)); + arg0->motion[6] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 67)); + arg0->motion[7] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 68)); + arg0->motion[8] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 69)); + arg0->motion[9] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 71)); + omSetTra(arg0, 400.0f, 37.0f, -425.0f); + omSetRot(arg0, 0.0f, -15.0f, 0.0f); + fn_1_119A0(arg0, 0, 0, 1, 1); + fn_1_164B0(lbl_1_bss_0, &temp_r29->unk24, arg0->model[0], "g007m0-skl_at"); + fn_1_15DC8(&temp_r29->unk24); + } else { + arg0->motion[0] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 60)); + arg0->motion[1] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 61)); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 62)); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 70)); + arg0->motion[4] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 72)); + omSetTra(arg0, -400.0f, 37.0f, -425.0f); + fn_1_119A0(arg0, 0, 0, 1, 1); + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M437, 73)); + arg0->motion[5] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_M437, 74)); + arg0->motion[6] = Hu3DJointMotionFile(arg0->model[1], DATA_MAKE_NUM(DATADIR_M437, 75)); + Hu3DModelHookSet(arg0->model[0], "g007m0-itemhook_r", arg0->model[1]); + Hu3DModelLayerSet(arg0->model[0], 2); + Hu3DModelLayerSet(arg0->model[1], 2); + fn_1_119A0(arg0, 1, 5, 1, 1); + } + Hu3DModelShadowSet(arg0->model[0]); + arg0->data = &lbl_1_bss_6BC[temp_r30]; + arg0->func = fn_1_5658; +} + +void fn_1_5FBC(void) { + StructBss1DC* temp_r31; + s32 sp8[4]; + s32 i; + + sp8[0] = GWPlayerCurrGet(); + for (i = 1; i < 4; i++) { + sp8[i] = sp8[i - 1] + 1; + if (sp8[i] >= 4) { + sp8[i] = 0; + } + } + for (i = 0; i < 4; i++) { + temp_r31 = &lbl_1_bss_1DC[i]; + temp_r31->unk2C = sp8[i]; + temp_r31->unk30 = GWPlayerCfg[temp_r31->unk2C].group; + temp_r31->unk34 = GWPlayerCfg[temp_r31->unk2C].iscom; + temp_r31->unk38 = GWPlayerCfg[temp_r31->unk2C].diff; + temp_r31->unk3C = GWPlayerCfg[temp_r31->unk2C].character; + temp_r31->unk40 = GWPlayerCfg[temp_r31->unk2C].pad_idx; + } +} + +void fn_1_610C(s32 arg0, s32 arg1) { + StructBss1DC* temp_r31; + + temp_r31 = &lbl_1_bss_1DC[arg0]; + temp_r31->unk04 = arg1; +} + +void fn_1_6134(omObjData* arg0) { + StructBss1DC* var_r30; + + var_r30 = arg0->data; + if (var_r30->unk04 != 0) { + Hu3DModelAttrReset(arg0->model[0], 1); + } else { + Hu3DModelAttrSet(arg0->model[0], 1); + } +} + +void fn_1_6198(s32 arg0, s32 arg1) { + StructBss1DC* temp_r31; + + temp_r31 = &lbl_1_bss_1DC[arg0]; + temp_r31->unk08 = arg1; + fn_1_15DC8(&temp_r31->unk50); + fn_1_11B18(temp_r31->unk00, 0, 2, 10, 0); +} + +void fn_1_6200(omObjData* arg0) { + StructBss1DC* temp_r30; + HsfMaterial* var_r31; + HsfData* temp_r28; + char** temp_r27; + s32 var_r23; + s32 i, j; + ModelData* temp_r25; + HsfAttribute* temp_r24; + + temp_r30 = &lbl_1_bss_1DC[arg0->work[0]]; + if (temp_r30->unk08 != 1) { + return; + } + var_r23 = 1; + temp_r25 = &Hu3DData[arg0->model[0]]; + temp_r28 = temp_r25->hsfData; + var_r31 = temp_r28->material; + if (temp_r30->unk3C == 3) { + for (i = 0; i < temp_r25->hsfData->materialCnt; i++, var_r31++) { + if (i == 1 || i == 2) { + continue; + } + var_r31->color[0] *= temp_r30->unk44; + if (var_r31->color[0] == 0) { + var_r31->color[0] = 0; + } + var_r31->color[1] *= temp_r30->unk44; + if (var_r31->color[1] == 0) { + var_r31->color[1] = 0; + } + var_r31->color[2] *= temp_r30->unk44; + if (var_r31->color[2] == 0) { + var_r31->color[2] = 0; + } + } + } else { + temp_r27 = CharModelTexNameGet(temp_r30->unk3C, 2); + for (i = 0; i < temp_r28->materialCnt; i++, var_r31++) { + var_r23 = 1; + for (j = 0; j < var_r31->numAttrs; j++) { + temp_r24 = &temp_r28->attribute[var_r31->attrs[j]]; + if (strcmp(temp_r27[0], temp_r24->bitmap->name) == 0 || strcmp(temp_r27[1], temp_r24->bitmap->name) == 0) { + var_r23 = 0; + } + } + if (var_r23 == 0) { + continue; + } + var_r31->color[0] *= temp_r30->unk44; + if (var_r31->color[0] == 0) { + var_r31->color[0] = 0; + } + var_r31->color[1] *= temp_r30->unk44; + if (var_r31->color[1] == 0) { + var_r31->color[1] = 0; + } + var_r31->color[2] *= temp_r30->unk44; + if (var_r31->color[2] == 0) { + var_r31->color[2] = 0; + } + } + } + temp_r30->unk44 -= 0.01; + if (temp_r30->unk44 < 0.0f) { + temp_r30->unk08 = 99; + temp_r30->unk44 = 0.0f; + } +} + +void fn_1_6580(s32 arg0, s32 arg1, s32 arg2) { + StructBss1DC* temp_r31; + + temp_r31 = &lbl_1_bss_1DC[arg0]; + if (temp_r31->unk0C == 0) { + temp_r31->unk0C = arg1; + temp_r31->unk10 = arg2; + temp_r31->unk28 = 0; + } else if (temp_r31->unk0C == 2) { + temp_r31->unk10 = 0; + temp_r31->unk28 = 1; + } +} + +float lbl_1_data_188 = -1.0f; + +// TODO: https://decomp.me/scratch/dek39 +void fn_1_65E0(omObjData* arg0) { + Mtx sp60; + StructBss1DC* temp_r31; + StructBss1DC* var_r26; + StructBss1DC* temp_r27; + StructBss8FC* var_r28; + StructBss8FC* spC; + s32 var_r29; + + temp_r31 = arg0->data; + switch (temp_r31->unk0C) { + case 1: + temp_r31->unk0C = 2; + temp_r31->unk48 = -1.5f; + lbl_1_data_188 = -1.0f; + fn_1_119A0(arg0, 0, 5, 15, 0); + break; + case 2: + if (temp_r31->unk48 >= 1.7f) { + temp_r31->unk48 = 1.7f; + } + arg0->trans.y += temp_r31->unk48 * temp_r31->unk48 * (temp_r31->unk48 >= 0.0f ? -25.0f : 25.0f); + if (temp_r31->unk28 != 0 && arg0->trans.y >= 25.0f + temp_r31->unk4C && temp_r31->unk10 == 0) { + temp_r31->unk0C = 5; + temp_r31->unk48 = 0.0f; + lbl_1_data_188 = arg0->trans.y - temp_r31->unk4C; + fn_1_11B18(arg0, 0, 7, 15, 0); + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (var_r29 != arg0->work[0]) { + var_r26 = &lbl_1_bss_1DC[var_r29]; + var_r26->unk00->work[2] = rand8() % 10; + } + } + } + if (((!(HuPadBtn[temp_r31->unk40] & 0x100) && temp_r31->unk10 == 0) || temp_r31->unk10 == 2) && temp_r31->unk48 < -0.8f) { + temp_r31->unk48 = -0.8f; + } + if (arg0->trans.y <= temp_r31->unk4C && temp_r31->unk48 > 0.0f) { + arg0->trans.y = temp_r31->unk4C; + temp_r31->unk0C = 4; + temp_r31->unk48 = 0.0f; + fn_1_11B18(arg0, 0, 6, 5, 0); + } + temp_r31->unk48 += 0.09f; + break; + case 4: + if (temp_r31->unk48++ >= 15.0f) { + temp_r31->unk0C = 0; + temp_r31->unk28 = 0; + fn_1_11B18(arg0, 0, 0, 15, 1); + } + break; + case 5: + if (fn_1_36B4() > 0.75f) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (var_r29 != arg0->work[0]) { + temp_r27 = &lbl_1_bss_1DC[var_r29]; + if (temp_r27->unk00->work[2]-- == 0) { + fn_1_11B18(temp_r27->unk00, 0, 11, 5, 0); + } + } + } + } + if (temp_r31->unk48++ >= 25.0f) { + temp_r31->unk0C = 6; + } + break; + case 6: + if (temp_r31->unk48 >= 1.7f) { + temp_r31->unk48 = 1.7f; + } + arg0->trans.y += temp_r31->unk48 * temp_r31->unk48 * (temp_r31->unk48 >= 0.0f ? -17.5f : 17.5f); + if (arg0->trans.y <= temp_r31->unk4C && temp_r31->unk48 > 0.0f) { + arg0->trans.y = temp_r31->unk4C; + temp_r31->unk0C = 7; + temp_r31->unk48 = 0.0f; + var_r28 = &lbl_1_bss_8FC; + if (lbl_1_data_188 <= 135.0f) { + fn_1_119A0(var_r28->unk00, 0, 2, 5, 0); + } else if (lbl_1_data_188 <= 245.0f) { + fn_1_119A0(var_r28->unk00, 0, 1, 5, 0); + } else { + fn_1_119A0(var_r28->unk00, 0, 0, 5, 0); + } + HuAudFXPlay(0x6F5); + omVibrate(temp_r31->unk2C, 12, 6, 6); + fn_1_11B18(arg0, 0, 8, 15, 0); + } + temp_r31->unk48 += 0.1f; + break; + case 7: + if (temp_r31->unk48++ >= 15.0f) { + spC = &lbl_1_bss_8FC; + if (lbl_1_data_188 <= 135.0f) { + fn_1_39C4(1.0f); + fn_1_3CB8(1.0f); + HuAudFXPlay(0x6F6); + } else if (lbl_1_data_188 <= 245.0f) { + fn_1_39C4(2.0f); + fn_1_3CB8(2.0f); + HuAudFXPlay(0x6F7); + } else { + fn_1_39C4(3.0f); + fn_1_3CB8(3.0f); + HuAudFXPlay(0x6F8); + } + fn_1_11B18(arg0, 0, 9, 15, 0); + temp_r31->unk48 = 0.0f; + temp_r31->unk0C = 4; + } + break; + } + if ((temp_r31->unk0C == 4 || temp_r31->unk0C == 7) && temp_r31->unk10 == 0) { + Hu3DModelObjMtxGet(lbl_1_bss_8FC.unk00->model[0], "m437a01-chara-point", sp60); + arg0->trans.y = sp60[1][3]; + } +} + +void fn_1_70F8(s32 arg0, s32 arg1) { + StructBss1DC* temp_r31; + + temp_r31 = &lbl_1_bss_1DC[arg0]; + temp_r31->unk14 = arg1; + temp_r31->unk24 = 15 - arg1 * 5; + temp_r31->unk28 = 0; +} + +void fn_1_7134(omObjData* arg0) { + StructBss1DC* temp_r31 = &lbl_1_bss_1DC[arg0->work[0]]; + Vec sp14[] = { + { 0.0f, 0.0f, 0.0f }, + { -1000.0f, 0.0f, 800.0f }, + { -200.0f, 0.0f, 800.0f }, + { 1000.0f, 0.0f, 800.0f } + }; + + if (temp_r31->unk14 < 1) { + return; + } + if (temp_r31->unk24-- <= 0) { + fn_1_11B18(arg0, 0, 4, 15, 1); + temp_r31->unk28 = 1; + } + if (temp_r31->unk28 != 0) { + fn_1_11CE0(arg0, sp14[temp_r31->unk14], -1.0f, temp_r31->unk0C + 7.0f, 30.0f, 5.0f, 0); + } +} + +void fn_1_72CC(omObjData* arg0) { + fn_1_6134(arg0); + fn_1_6200(arg0); + fn_1_65E0(arg0); + fn_1_7134(arg0); +} + +void fn_1_74B0(StructBss1DC* arg0) { + s32 var_r29; + omObjData* temp_r30; + + var_r29 = arg0->unk00->work[0]; + temp_r30 = arg0->unk00; + omSetTra(temp_r30, var_r29 * -150 - (rand8() % 100) * 2, 0.0f, (rand8() % 100) * 2 + 250); + omSetRot(temp_r30, 0.0f, 180.0f, 0.0f); + fn_1_119A0(temp_r30, 0, 0, 1, 1); + fn_1_15DC8(&arg0->unk50); + fn_1_15CD0(&arg0->unk50, lbl_1_bss_8FC.unk00->model[0]); + arg0->unk44 = 1.0f; + temp_r30->work[1] = temp_r30->work[2] = temp_r30->work[3] = 0; + arg0->unk1C = arg0->unk20 = arg0->unk24 = arg0->unk28 = 0; + arg0->unk04 = arg0->unk08 = arg0->unk0C = arg0->unk10 = 0; + arg0->unk14 = 0; +} + +void fn_1_7678(omObjData* arg0) { + StructBss1DC* temp_r30; + s32 temp_r29; + + temp_r29 = arg0->work[0]; + temp_r30 = &lbl_1_bss_1DC[temp_r29]; + arg0->model[0] = CharModelCreate(temp_r30->unk3C, 2); + arg0->motion[0] = CharModelMotionCreate(temp_r30->unk3C, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0)); + arg0->motion[1] = CharModelMotionCreate(temp_r30->unk3C, DATA_MAKE_NUM(DATADIR_MARIOMOT, 3)); + arg0->motion[2] = CharModelMotionCreate(temp_r30->unk3C, DATA_MAKE_NUM(DATADIR_MARIOMOT, 28)); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, temp_r30->unk3C)); + arg0->motion[4] = Hu3DJointMotionFile(arg0->model[0], DATA_MAKE_NUM(DATADIR_M437, 8 + temp_r30->unk3C)); + arg0->motion[5] = CharModelMotionCreate(temp_r30->unk3C, DATA_MAKE_NUM(DATADIR_MARIOMOT, 5)); + arg0->motion[6] = CharModelMotionCreate(temp_r30->unk3C, DATA_MAKE_NUM(DATADIR_MARIOMOT, 6)); + arg0->motion[7] = CharModelMotionCreate(temp_r30->unk3C, DATA_MAKE_NUM(DATADIR_MARIOMOT, 8)); + arg0->motion[8] = CharModelMotionCreate(temp_r30->unk3C, DATA_MAKE_NUM(DATADIR_MARIOMOT, 10)); + arg0->motion[9] = CharModelMotionCreate(temp_r30->unk3C, DATA_MAKE_NUM(DATADIR_MARIOMOT, 9)); + arg0->motion[10] = CharModelMotionCreate(temp_r30->unk3C, DATA_MAKE_NUM(DATADIR_MARIOMOT, 2)); + arg0->motion[11] = CharModelMotionCreate(temp_r30->unk3C, DATA_MAKE_NUM(DATADIR_MARIOMOT, 78)); + arg0->motion[12] = CharModelMotionCreate(temp_r30->unk3C, DATA_MAKE_NUM(DATADIR_MARIOMOT, 27)); + omSetTra(arg0, temp_r29 * -150 + (rand8() % 100) * 5, 0.0f, (rand8() % 100) * 5 + 250); + omSetRot(arg0, 0.0f, 180.0f, 0.0f); + Hu3DModelShadowSet(arg0->model[0]); + fn_1_119A0(arg0, 0, 0, 1, 1); + CharModelMotionDataClose(temp_r30->unk3C); + fn_1_1660C(lbl_1_bss_0, &temp_r30->unk50, arg0->model[0], temp_r30->unk3C); + fn_1_15DC8(&temp_r30->unk50); + temp_r30->unk04 = 1; + arg0->data = &lbl_1_bss_1DC[temp_r29]; + arg0->func = fn_1_72CC; +} + +void fn_1_79E0(void) { + lbl_1_bss_68.unk04 = 1; + lbl_1_bss_68.unk08 = 1; + lbl_1_bss_68.unk14 = 0; +} + +void fn_1_7A14(omObjData* arg0) { + Mtx sp8; + StructBss68* temp_r31; + StructBss8D4* var_r29; + StructBss6BC* var_r25; + s32 var_r24; + s32 i; + + temp_r31 = arg0->data; + var_r29 = &lbl_1_bss_8D4; + switch (temp_r31->unk04) { + case 1: + temp_r31->unk04 = 2; + for (i = 1; i < 7; i++) { + Hu3DModelPosSet(arg0->model[i], 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(arg0->model[i], 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[i], 0.0f, 0.0f, 0.0f); + temp_r31->unk24[i] = -1.0f + rand8() % 3; + temp_r31->unk44[i] = 0.0f; + temp_r31->unk64[i] = -(50.0f * (i - 1)); + temp_r31->unk84[i] = 0.0f; + temp_r31->unkA4[i] = 0.5f; + temp_r31->unkC4[i] = 0.0f; + } + fn_1_119A0(var_r29->unk00, 0, 3, 10, 0); + var_r25 = &lbl_1_bss_6BC[0]; + fn_1_119A0(var_r25->unk00, 0, 1, 60, 1); + fn_1_119A0(var_r25->unk00, 1, 6, 60, 1); + break; + case 2: + if (fn_1_11890(var_r29->unk00, 0, 3, 90, 1) != 0) { + temp_r31->unk04 = 3; + Hu3DMotionTimeSet(var_r29->unk00->model[0], 90.0f); + Hu3DMotionSpeedSet(var_r29->unk00->model[0], 0.0f); + HuAudCharVoicePlay(lbl_1_bss_1DC[lbl_1_bss_944.unk10].unk3C, 0x123); + HuAudFXPlay(0x6D5); + omVibrate(lbl_1_bss_1DC[lbl_1_bss_944.unk10].unk2C, 120, 12, 0); + } + break; + case 3: + Hu3DModelObjMtxGet(var_r29->unk00->model[0], "g000m0-itemhook_M", sp8); + var_r24 = lbl_1_bss_944.unk10; + fn_1_6198(var_r24, 1); + for (i = 1; i < 7; i++) { + if (temp_r31->unk08 == 1 || (temp_r31->unk08 == 0 && temp_r31->unk64[i] > 0.0f)) { + temp_r31->unk64[i] += 10.0f; + } + if (temp_r31->unk64[i] > 0.0f) { + temp_r31->unk84[i] += 0.1f; + temp_r31->unk24[i] += rand8() % 5 - 2; + temp_r31->unk44[i] -= rand8() % 5 - 2 + 2.5f; + if (temp_r31->unkC4[i] == 0.0f) { + fn_1_119A0(arg0, i, i, 1, 1); + } + if (temp_r31->unkC4[i] < 8.0f) { + temp_r31->unkA4[i] += 0.025f; + } else if (temp_r31->unkC4[i] < 23.0f) { + temp_r31->unkA4[i] = 0.7f; + } else if (temp_r31->unkC4[i] < 31.0f) { + temp_r31->unkA4[i] -= 0.1f; + if (temp_r31->unkA4[i] < 0.0f) { + temp_r31->unkA4[i] = 0.0f; + } + } + temp_r31->unkC4[i] += 1.0f; + } + Hu3DModelPosSet(arg0->model[i], sp8[0][3] + temp_r31->unk24[i], sp8[1][3] + temp_r31->unk44[i], sp8[2][3] + temp_r31->unk64[i]); + Hu3DModelScaleSet(arg0->model[i], 1.5f * temp_r31->unk84[i], 1.5f * temp_r31->unk84[i], 1.5f * temp_r31->unk84[i]); + Hu3DModelTPLvlSet(arg0->model[i], temp_r31->unkA4[i]); + if (temp_r31->unkC4[i] >= 31.0f) { + temp_r31->unk24[i] = 0.0f; + temp_r31->unk44[i] = 0.0f; + temp_r31->unk64[i] = 0.0f; + temp_r31->unk84[i] = 0.0f; + temp_r31->unkA4[i] = 0.5f; + temp_r31->unkC4[i] = 0.0f; + } + } + if (temp_r31->unk14++ == 120) { + temp_r31->unk08 = 0; + Hu3DMotionSpeedSet(var_r29->unk00->model[0], 1.0f); + } else if (temp_r31->unk14 >= 180) { + temp_r31->unk04 = 4; + } + break; + case 4: + temp_r31->unk04 = 0; + fn_1_119A0(var_r29->unk00, 0, 0, 30, 1); + break; + } + if (temp_r31->unk14 >= 10 && temp_r31->unk14 <= 120) { + fn_1_298(6, 8.0f); + } +} + +void fn_1_82E0(omObjData* arg0) { + fn_1_7A14(arg0); +} + +void fn_1_8308(StructBss68* arg0) { + omObjData* temp_r29; + s32 i; + + temp_r29 = arg0->unk00; + for (i = 1; i < 7; i++) { + Hu3DModelPosSet(temp_r29->model[i], 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(temp_r29->model[i], 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(temp_r29->model[i], 0.0f, 0.0f, 0.0f); + fn_1_119A0(temp_r29, i, i, 1, 2); + arg0->unk24[i] = 0.0f; + arg0->unk44[i] = 0.0f; + arg0->unk64[i] = 0.0f; + arg0->unk84[i] = 0.0f; + arg0->unkA4[i] = 0.0f; + arg0->unkC4[i] = 0.0f; + } + arg0->unk04 = arg0->unk08 = arg0->unk0C = arg0->unk10 = 0; + arg0->unk14 = arg0->unk18 = arg0->unk1C = arg0->unk20 = 0; +} + +void fn_1_84C4(omObjData* arg0) { + s32 i; + + for (i = 1; i < 7; i++) { + if (i % 2 == 0) { + arg0->model[i] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M437, 55)); + arg0->motion[i] = Hu3DMotionIDGet(arg0->model[i]); + } else { + arg0->model[i] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M437, 56)); + arg0->motion[i] = Hu3DMotionIDGet(arg0->model[i]); + } + Hu3DModelPosSet(arg0->model[i], 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(arg0->model[i], 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[i], 0.0f, 0.0f, 0.0f); + fn_1_119A0(arg0, i, i, 1, 2); + Hu3DModelLayerSet(arg0->model[i], 2); + } + arg0->data = &lbl_1_bss_68; + arg0->func = fn_1_82E0; +} + +void fn_1_8684(void) { + StructBss160* var_r31; + + var_r31 = &lbl_1_bss_160; + var_r31->unk14 = 0.0f; + var_r31->unk18 = 300.0f; + var_r31->unk1C = 1740.0f; + var_r31->unk2C = -10.0f; + var_r31->unk30 = 0.0f; + var_r31->unk34 = 0.0f; + var_r31->unk3C = 300.0f; + fn_1_12E14(var_r31, 200.0f); +} + +void fn_1_8734(void) { + StructBss160* var_r31; + StructBss160 sp8; + + var_r31 = &lbl_1_bss_160; + sp8.unk08 = 0.0f; + sp8.unk0C = 200.0f; + sp8.unk10 = -50.0f; + sp8.unk20 = 5.0f; + sp8.unk24 = 0.0f; + sp8.unk28 = 0.0f; + sp8.unk38 = 200.0f; + fn_1_15544(var_r31, &sp8, var_r31->unk40++, 30.0f, 5.0f); +} + +void fn_1_8824(void) { + StructBss160* var_r31; + + var_r31 = &lbl_1_bss_160; + var_r31->unk14 = 0.0f; + var_r31->unk18 = 200.0f; + var_r31->unk1C = -50.0f; + var_r31->unk2C = 5.0f; + var_r31->unk30 = 0.0f; + var_r31->unk34 = 0.0f; + var_r31->unk3C = 200.0f; + fn_1_12E14(var_r31, 200.0f); +} + +void fn_1_88D4(void) { + StructBss160* var_r31; + + var_r31 = &lbl_1_bss_160; + var_r31->unk14 = 0.0f; + var_r31->unk18 = 300.0f; + var_r31->unk1C = -550.0f; + var_r31->unk2C = -15.0f; + var_r31->unk30 = 0.0f; + var_r31->unk34 = 0.0f; + var_r31->unk3C = 1200.0f; + fn_1_12E14(var_r31, 45.0f); +} + +void fn_1_8984(void) { + StructBss160* var_r31; + + var_r31 = &lbl_1_bss_160; + var_r31->unk14 = 0.0f; + var_r31->unk18 = 150.0f; + var_r31->unk1C = -550.0f; + var_r31->unk2C = -15.0f; + var_r31->unk30 = 0.0f; + var_r31->unk34 = 0.0f; + var_r31->unk3C = 1200.0f; + fn_1_12E14(var_r31, 30.0f); +} + +void fn_1_8A34(void) { + StructBss160* var_r31; + StructBss160 sp8; + + var_r31 = &lbl_1_bss_160; + sp8.unk08 = 0.0f; + sp8.unk0C = 300.0f; + sp8.unk10 = 0.0f; + sp8.unk20 = 0.0f; + sp8.unk24 = 0.0f; + sp8.unk28 = 0.0f; + sp8.unk38 = 1200.0f; + fn_1_13658(var_r31, &sp8, var_r31->unk40++, 30.0f, 10.0f); +} + +void fn_1_8B24(void) { + StructBss160* var_r31; + + var_r31 = &lbl_1_bss_160; + var_r31->unk14 = 0.0f; + var_r31->unk18 = 150.0f; + var_r31->unk1C = -550.0f; + var_r31->unk2C = -15.0f; + var_r31->unk30 = 0.0f; + var_r31->unk34 = 0.0f; + var_r31->unk3C = 1200.0f; + fn_1_12E14(var_r31, 20.0f); +} + +void fn_1_8BD4(void) { + StructBss160* var_r31; + + var_r31 = &lbl_1_bss_160; + var_r31->unk14 = 0.0f; + var_r31->unk18 = 300.0f; + var_r31->unk1C = -550.0f; + var_r31->unk2C = -15.0f; + var_r31->unk30 = 0.0f; + var_r31->unk34 = 0.0f; + var_r31->unk3C = 1200.0f; + fn_1_12E14(var_r31, 20.0f); +} + +void fn_1_8C84(s32 arg0) { + StructBss160* var_r23; + + var_r23 = &lbl_1_bss_160; + fn_1_12ABC(var_r23); + switch (arg0) { + case 0: + fn_1_8A4(fn_1_8684); + break; + case 1: + fn_1_8A4(fn_1_8734); + break; + case 2: + fn_1_8A4(fn_1_8824); + break; + case 3: + fn_1_8A4(fn_1_88D4); + break; + case 4: + fn_1_8A4(fn_1_8984); + break; + case 5: + fn_1_8A4(fn_1_8A34); + break; + case 10: + fn_1_8A4(fn_1_8B24); + break; + case 11: + fn_1_8A4(fn_1_8BD4); + break; + } +} + +void fn_1_8DA4(void) { + float sp18[] = { 0.0f, 0.0f }; + s32 var_r31; + + lbl_1_bss_C = 0; + fn_1_2A94(sp18, MAKE_MESSID(29, 0)); + fn_1_2A94(sp18, MAKE_MESSID(29, 1)); + var_r31 = fn_1_20F8((580.0f - sp18[0]) / 2, 80.0f, sp18[0], sp18[1], 2); + HuAudFXPlay(0x6D1); + fn_1_4BAC(1, 10, 0, 1); + fn_1_2A10(var_r31, MAKE_MESSID(29, 0)); + fn_1_280C(var_r31, 0); + fn_1_4BAC(1, 10, 0, 1); + fn_1_2A10(var_r31, MAKE_MESSID(29, 1)); + fn_1_280C(var_r31, 0); + fn_1_4BAC(0, 10, 1, 1); + fn_1_27A4(var_r31); + lbl_1_bss_C = 1; + HuPrcEnd(); +} + +void fn_1_9320(void) { + float sp10[] = { 0.0f, 0.0f }; + s32 var_r31; + + lbl_1_bss_C = 0; + fn_1_2A94(sp10, MAKE_MESSID(29, 4)); + var_r31 = fn_1_20F8((580.0f - sp10[0]) / 2, 100.0f, sp10[0], sp10[1], 2); + HuAudFXPlay(0x6D2); + fn_1_4BAC(2, 10, 0, 1); + fn_1_2A10(var_r31, MAKE_MESSID(29, 4)); + fn_1_280C(var_r31, 60); + fn_1_2BAC(3); + fn_1_280C(var_r31, 60); + fn_1_4BAC(0, 30, 1, 1); + fn_1_27A4(var_r31); + lbl_1_bss_C = 1; + HuPrcEnd(); +} + +void fn_1_96D8(void) { + float sp10[] = { 0.0f, 0.0f }; + s32 var_r31; + + lbl_1_bss_C = 0; + fn_1_2A94(sp10, MAKE_MESSID(29, 64)); + var_r31 = fn_1_20F8(550.0f - sp10[0], 340.0f, sp10[0], sp10[1], 1); + HuAudFXPlayVolPan(0x65, 0x7F, 0x60); + fn_1_51DC(4, 10, 0, 1); + fn_1_2A10(var_r31, MAKE_MESSID(29, 64)); + fn_1_28F4(var_r31); + fn_1_51DC(0, 10, 1, 1); + fn_1_27A4(var_r31); + lbl_1_bss_C = 1; + HuPrcEnd(); +} + +void fn_1_9B2C(s32 arg0) { + float sp10[2] = { 0.0f, 0.0f }; + s32 sp18[] = { + MAKE_MESSID(29, 6), + MAKE_MESSID(29, 66), + MAKE_MESSID(29, 68), + MAKE_MESSID(29, 70), + MAKE_MESSID(29, 72), + MAKE_MESSID(29, 74), + MAKE_MESSID(29, 76), + -1 + }; + s32 var_r31; + + if (sp18[arg0] == -1) { + return; + } + fn_1_2A94(sp10, sp18[arg0]); + var_r31 = fn_1_20F8(20.0f, 360.0f, sp10[0], sp10[1], 0); + HuAudFXPlayVolPan(0x3E, 0x7F, 0x20); + fn_1_5148(2, 10, 0, 1); + fn_1_5270(5, 10, 2, 1); + fn_1_2A10(var_r31, sp18[arg0]); + fn_1_280C(var_r31, 0); + fn_1_5148(0, 10, 1, 1); + fn_1_5270(5, 10, 1, 1); + fn_1_27A4(var_r31); +} + +void fn_1_9FA0(void) { + float sp10[2] = { 0.0f, 0.0f }; + s32 sp18[] = { + MAKE_MESSID(29, 5), + MAKE_MESSID(29, 65), + MAKE_MESSID(29, 67), + MAKE_MESSID(29, 69), + MAKE_MESSID(29, 71), + MAKE_MESSID(29, 73), + MAKE_MESSID(29, 75), + MAKE_MESSID(29, 77) + }; + s32 i; + s32 var_r30; + + lbl_1_bss_C = 0; + for (i = 0; i < 8; i++) { + fn_1_2A94(sp10, sp18[i]); + } + var_r30 = fn_1_20F8(550.0f - sp10[0], 340.0f, sp10[0], sp10[1], 1); + HuAudFXPlayVolPan(0x65, 0x7F, 0x60); + for (i = 0; i < 8; i++) { + fn_1_51DC(4, 10, 0, 1); + fn_1_2A10(var_r30, sp18[i]); + fn_1_280C(var_r30, 0); + fn_1_51DC(0, 10, 1, 1); + fn_1_9B2C(i); + } + fn_1_27A4(var_r30); + lbl_1_bss_C = 1; + HuPrcEnd(); +} + +void fn_1_A440(void) { + float sp10[] = { 0.0f, 0.0f }; + s32 var_r31; + + lbl_1_bss_C = 0; + fn_1_2A94(sp10, MAKE_MESSID(29, 78)); + var_r31 = fn_1_20F8((580.0f - sp10[0]) / 2, 80.0f, sp10[0], sp10[1], 2); + HuAudFXPlay(0x6D2); + fn_1_4BAC(1, 10, 0, 1); + fn_1_2A10(var_r31, MAKE_MESSID(29, 78)); + fn_1_280C(var_r31, 0); + fn_1_4BAC(0, 10, 1, 1); + fn_1_27A4(var_r31); + lbl_1_bss_C = 1; + HuPrcEnd(); +} + +void fn_1_A860(void) { +} + +s32 fn_1_A864(void) { + if (fn_1_11854(&lbl_1_bss_50, 0) == 80) { + fn_1_8C84(1); + lbl_1_bss_968.unk00 = HuAudSeqPlay(6); + } + if (fn_1_11854(&lbl_1_bss_50, 0) == 115) { + fn_1_8C84(2); + } + if (fn_1_11854(&lbl_1_bss_50, 0) == 180) { + fn_1_8C84(3); + } + if (fn_1_11854(&lbl_1_bss_50, 0) == 0) { + fn_1_2BAC(2); + } + if (fn_1_11854(&lbl_1_bss_50, 0) == 150) { + fn_1_2BAC(1); + } + if (fn_1_11854(&lbl_1_bss_50, 1) != 0) { + return fn_1_116C4(&lbl_1_bss_50); + } + return 0; +} + +void fn_1_A9E8(void) { + HuPrcChildCreate(fn_1_8DA4, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_AA24(void) { + if (lbl_1_bss_C != 0 && fn_1_11854(&lbl_1_bss_50, 1) != 0) { + return fn_1_116C4(&lbl_1_bss_50); + } + return 0; +} + +void fn_1_AA80(void) { + HuPrcChildCreate(fn_1_9320, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_AABC(void) { + if (lbl_1_bss_C != 0 && fn_1_11854(&lbl_1_bss_50, 1) != 0) { + return fn_1_116C4(&lbl_1_bss_50); + } + return 0; +} + +void fn_1_AB18(void) { + fn_1_8C84(10); +} + +s32 fn_1_AB68(void) { + if (fn_1_11854(&lbl_1_bss_50, 1) != 0) { + return fn_1_116C4(&lbl_1_bss_50); + } + return 0; +} + +void fn_1_ABB0(void) { + HuPrcChildCreate(fn_1_96D8, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_ABEC(void) { + if (lbl_1_bss_C != 0 && fn_1_11854(&lbl_1_bss_50, 1) != 0) { + if (lbl_1_bss_10 != 0) { + return fn_1_116C4(&lbl_1_bss_50); + } else { + return fn_1_117C0(&lbl_1_bss_50, 6); + } + } + return 0; +} + +void fn_1_AC70(void) { + fn_1_4BAC(4, 60, 1, 1); + HuPrcChildCreate(fn_1_9FA0, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_ACCC(void) { + if (lbl_1_bss_C != 0 && fn_1_11854(&lbl_1_bss_50, 1) != 0) { + return fn_1_116C4(&lbl_1_bss_50); + } + return 0; +} + +void fn_1_AD28(void) { + fn_1_8C84(11); + fn_1_4BAC(0, 60, 1, 0); +} + +s32 fn_1_AD98(void) { + if (fn_1_11854(&lbl_1_bss_50, 1) != 0) { + return fn_1_116C4(&lbl_1_bss_50); + } + return 0; +} + +void fn_1_ADE0(void) { + HuPrcChildCreate(fn_1_A440, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_AE1C(void) { + if (lbl_1_bss_C != 0 && fn_1_11854(&lbl_1_bss_50, 1) != 0) { + return fn_1_116C4(&lbl_1_bss_50); + } + return 0; +} + +void fn_1_AE78(void) { + StructBss6BC* var_r30; + StructBss1DC* sp8; + StructBss8FC* var_r29; + s32 i; + + fn_1_8C84(5); + for (i = 0; i < 4; i++) { + fn_1_610C(i, 1); + } + var_r30 = &lbl_1_bss_6BC[1]; + sp8 = &lbl_1_bss_1DC[i]; + var_r29 = &lbl_1_bss_8FC; + fn_1_15DC8(&var_r30->unk24); + fn_1_15CD0(&var_r30->unk24, var_r29->unk00->model[2]); + HuAudSeqFadeOut(lbl_1_bss_968.unk00, 1000); +} + +s32 fn_1_AF4C(void) { + Vec sp20[] = { + { -200.0f, 0.0f, -250.0f }, + { -340.0f, 0.0f, -250.0f }, + { -490.0f, 0.0f, -250.0f }, + { -640.0f, 0.0f, -250.0f } + }; + s32 i; + + for (i = 0; i < 4; i++) { + if (lbl_1_bss_1DC[i].unk3C == 7) { + fn_1_11CE0(lbl_1_bss_1DC[i].unk00, sp20[i], 90.0f, 9.0f, 30.0f, 15.0f, 3); + } else { + fn_1_11CE0(lbl_1_bss_1DC[i].unk00, sp20[i], 90.0f, 9.0f, 30.0f, 15.0f, 1); + } + } + if (fn_1_11854(&lbl_1_bss_50, 1) != 0) { + fn_1_4BAC(4, 60, 1, 1); + for (i = 0; i < 4; i++) { + fn_1_11B18(lbl_1_bss_1DC[i].unk00, 0, 0, 10, 1); + } + return fn_1_116C4(&lbl_1_bss_50); + } + return 0; +} + +StructData204 lbl_1_data_204[] = { + { fn_1_A860, fn_1_A864, 300 }, + { fn_1_A9E8, fn_1_AA24, 60 }, + { fn_1_AA80, fn_1_AABC, 60 }, + { fn_1_AB18, fn_1_AB68, 45 }, + { fn_1_ABB0, fn_1_ABEC, 60 }, + { fn_1_AC70, fn_1_ACCC, 60 }, + { fn_1_AD28, fn_1_AD98, 45 }, + { fn_1_ADE0, fn_1_AE1C, 60 }, + { fn_1_AE78, fn_1_AF4C, 120 }, + { NULL, NULL, -1 } +}; + +void fn_1_B194(void) { + fn_1_11668(&lbl_1_bss_50, lbl_1_data_204); +} + +s32 fn_1_B1C4(void) { + if (lbl_1_bss_50.unk08 != NULL) { + lbl_1_bss_50.unk08(); + lbl_1_bss_50.unk08 = NULL; + } + if (lbl_1_bss_50.unk0C != NULL) { + return lbl_1_bss_50.unk0C(); + } + return 0; +} + +float fn_1_B250(void) { + return lbl_1_bss_15C - lbl_1_bss_158; +} + +void fn_1_B270(void) { + StructBss944* var_r30; + StructBss1DC* temp_r31; + + var_r30 = &lbl_1_bss_944; + temp_r31 = &lbl_1_bss_1DC[var_r30->unk10]; + if (fn_1_B250() <= 3.0f) { + temp_r31->unk00->work[1] = fn_1_B250() - 1.0f; + if (temp_r31->unk00->work[1] == 0) { + temp_r31->unk00->work[1] = rand8() % 3 + 1; + } + } else { + temp_r31->unk00->work[1] = rand8() % 3 + 1; + } + temp_r31->unk00->work[2] = 0; + temp_r31->unk00->work[3] = rand8() % 60 + 60; +} + +s32 fn_1_B3F0(s32 arg0) { + StructBss944* var_r30; + StructBss1DC* temp_r31; + float temp_f31; + + var_r30 = &lbl_1_bss_944; + temp_r31 = &lbl_1_bss_1DC[var_r30->unk10]; + temp_f31 = temp_r31->unk00->trans.y - temp_r31->unk4C; + switch (arg0) { + case 1: + if (temp_f31 > 80.0f && temp_f31 <= 135.0f) { + return 1; + } + break; + case 2: + if (temp_f31 > 190.0f && temp_f31 <= 245.0f) { + return 1; + } + break; + case 3: + if (temp_f31 > 300.0f) { + return 1; + } + break; + } + return 0; +} + +float fn_1_B4F4(s32 arg0, s32 arg1) { + StructBss1DC* temp_r31; + + temp_r31 = &lbl_1_bss_1DC[arg0]; + if (temp_r31->unk34 != 0) { + if (arg1 > temp_r31->unk00->work[3]) { + if (temp_r31->unk00->work[2] == 0) { + temp_r31->unk00->work[2] = 1; + fn_1_6580(arg0, 1, 1); + } else if (fn_1_B3F0(temp_r31->unk00->work[1]) != 0) { + fn_1_6580(arg0, 1, 0); + } + } + } else if ((HuPadBtnDown[temp_r31->unk40] & 0x100) || ((HuPadBtnDown[temp_r31->unk40] & 0x40) && temp_r31->unk0C == 2)) { + fn_1_6580(arg0, 1, 0); + } + return temp_r31->unk0C; +} + +void fn_1_B7E0(void) { + StructBss160* var_r31; + StructBss160 sp8; + + var_r31 = &lbl_1_bss_160; + sp8.unk08 = 0.0f; + sp8.unk0C = 300.0f; + sp8.unk10 = 0.0f; + sp8.unk20 = 0.0f; + sp8.unk24 = 0.0f; + sp8.unk28 = 0.0f; + sp8.unk38 = 1200.0f; + fn_1_13658(var_r31, &sp8, var_r31->unk40++, 30.0f, 10.0f); +} + +void fn_1_B8D0(void) { + StructBss160* var_r31; + + var_r31 = &lbl_1_bss_160; + var_r31->unk14 = 0.0f; + var_r31->unk18 = 300.0f; + var_r31->unk1C = -350.0f + 450.0f * fn_1_36B4(); + var_r31->unk2C = 0.0f; + var_r31->unk30 = 0.0f; + var_r31->unk34 = 0.0f; + var_r31->unk3C = 1200.0f; + fn_1_12E14(var_r31, 10.0f); +} + +void fn_1_BC18(void) { + StructBss160* var_r31; + + var_r31 = &lbl_1_bss_160; + var_r31->unk14 = 0.0f; + var_r31->unk18 = 300.0f; + var_r31->unk1C = -50.0f; + var_r31->unk2C = -15.0f; + var_r31->unk30 = 0.0f; + var_r31->unk34 = 0.0f; + var_r31->unk3C = 1200.0f; + fn_1_12E14(var_r31, 5.0f); +} + +void fn_1_BCC8(void) { + StructBss160* var_r31; + StructBss160 sp8; + + var_r31 = &lbl_1_bss_160; + sp8.unk08 = 0.0f; + sp8.unk0C = 225.0f; + sp8.unk10 = -800.0f; + sp8.unk20 = 0.0f; + sp8.unk24 = 0.0f; + sp8.unk28 = 0.0f; + sp8.unk38 = 1200.0f; + fn_1_15544(var_r31, &sp8, var_r31->unk40++, 30.0f, 10.0f); +} + +void fn_1_BDB8(s32 arg0) { + StructBss160* var_r27; + + var_r27 = &lbl_1_bss_160; + fn_1_12ABC(var_r27); + switch (arg0) { + case 0: + fn_1_8A4(fn_1_B7E0); + break; + case 1: + fn_1_8A4(fn_1_B8D0); + break; + case 2: + fn_1_8A4(fn_1_BC18); + break; + case 3: + fn_1_8A4(fn_1_BCC8); + break; + } +} + +void fn_1_BE80(void) { + s32 sp1C[] = { + MAKE_MESSID(29, 79), + MAKE_MESSID(29, 80), + MAKE_MESSID(29, 81), + MAKE_MESSID(29, 82) + }; + float sp14[2] = { 0.0f, 0.0f }; + s32 temp_r27; + s32 var_r30; + + temp_r27 = rand8() % 4; + lbl_1_bss_C = 0; + fn_1_2A94(sp14, sp1C[temp_r27]); + var_r30 = fn_1_20F8((580.0f - sp14[0]) / 2, 100.0f, sp14[0], sp14[1], 2); + HuAudFXPlay(0x6D2); + fn_1_4928(1); + fn_1_2A10(var_r30, sp1C[temp_r27]); + fn_1_280C(var_r30, 60); + lbl_1_bss_C = 1; + fn_1_280C(var_r30, 60); + fn_1_27A4(var_r30); + HuPrcEnd(); +} + +void fn_1_C248(void) { + s32 sp1C[] = { + MAKE_MESSID(29, 83), + MAKE_MESSID(29, 84), + MAKE_MESSID(29, 85) + }; + float sp14[2] = { 0.0f, 0.0f }; + s32 temp_r27; + s32 var_r31; + + temp_r27 = rand8() % 3; + lbl_1_bss_C = 0; + fn_1_2A94(sp14, sp1C[temp_r27]); + var_r31 = fn_1_20F8((580.0f - sp14[0]) / 2, 100.0f, sp14[0], sp14[1], 2); + HuAudFXPlay(0x6D2); + fn_1_4928(1); + fn_1_2A10(var_r31, sp1C[temp_r27]); + fn_1_280C(var_r31, 60); + lbl_1_bss_C = 1; + fn_1_280C(var_r31, 60); + fn_1_27A4(var_r31); + HuPrcEnd(); +} + +void fn_1_C610(void) { + float sp14[2] = { 0.0f, 0.0f }; + s32 var_r31; + + lbl_1_bss_C = 0; + fn_1_2A94(sp14, MAKE_MESSID(29, 86)); + var_r31 = fn_1_20F8((580.0f - sp14[0]) / 2, 80.0f, sp14[0], sp14[1], 2); + HuAudFXPlay(0x6D2); + fn_1_4AF8(4); + lbl_1_bss_C = 1; + fn_1_2A10(var_r31, MAKE_MESSID(29, 86)); + fn_1_280C(var_r31, 30); + fn_1_27A4(var_r31); + lbl_1_bss_C = 2; + HuPrcEnd(); +} + +void fn_1_C9C4(void) { + float sp10[] = { 0.0f, 0.0f }; + s32 var_r31; + + fn_1_2A94(sp10, MAKE_MESSID(29, 87)); + var_r31 = fn_1_20F8(580.0f - sp10[0] - 40.0f, 200.0f, sp10[0], sp10[1], 1); + HuAudFXPlayVolPan(0x65, 0x7F, 0x60); + fn_1_51DC(9, 10, 0, 0); + fn_1_2A10(var_r31, MAKE_MESSID(29, 87)); + fn_1_280C(var_r31, 30); + fn_1_27A4(var_r31); + HuPrcEnd(); +} + +void fn_1_CD20(void) { + float sp10[] = { 0.0f, 0.0f }; + s32 var_r31; + + fn_1_2A94(sp10, MAKE_MESSID(29, 88)); + var_r31 = fn_1_20F8(40.0f, 200.0f, sp10[0], sp10[1], 0); + HuAudFXPlayVolPan(0x3E, 0x7F, 0x20); + fn_1_5148(4, 10, 0, 0); + fn_1_2A10(var_r31, MAKE_MESSID(29, 88)); + fn_1_280C(var_r31, 30); + fn_1_27A4(var_r31); + HuPrcEnd(); +} + +void fn_1_D03C(void) { + s32 sp18[] = { + MAKE_MESSID(29, 89), + MAKE_MESSID(29, 90), + MAKE_MESSID(29, 91) + }; + float sp10[2] = { 0.0f, 0.0f }; + s32 temp_r28; + s32 var_r31; + + temp_r28 = rand8() % 3; + fn_1_2A94(sp10, sp18[temp_r28]); + var_r31 = fn_1_20F8((580.0f - sp10[0]) / 2, 100.0f, sp10[0], sp10[1], 2); + HuAudFXPlay(0x6D6); + fn_1_2A10(var_r31, sp18[temp_r28]); + fn_1_280C(var_r31, 120); + fn_1_27A4(var_r31); + HuPrcEnd(); +} + +void fn_1_D3C0(void) { + float sp10[] = { 0.0f, 0.0f }; + s32 var_r31; + + lbl_1_bss_C = 0; + fn_1_2A94(sp10, MAKE_MESSID(29, 92)); + var_r31 = fn_1_20F8((580.0f - sp10[0]) / 2, 80.0f, sp10[0], sp10[1], 2); + HuAudFXPlay(0x6D6); + fn_1_4BAC(1, 10, 0, 1); + fn_1_2A10(var_r31, MAKE_MESSID(29, 92)); + fn_1_280C(var_r31, 120); + fn_1_4BAC(0, 30, 1, 1); + fn_1_27A4(var_r31); + lbl_1_bss_C = 1; + HuPrcEnd(); +} + +void fn_1_D754(void) { + Mtx sp8; + s32 var_r26; + s32 i; + StructBss944* var_r29; + StructBss8FC* var_r24; + StructBss1DC* temp_r27; + StructBss1DC* temp_r25; + StructBss1DC* var_r23; + + var_r29 = &lbl_1_bss_944; + var_r24 = &lbl_1_bss_8FC; + temp_r27 = &lbl_1_bss_1DC[var_r29->unk10]; + for (i = 0; i < 4; i++) { + if (i != var_r29->unk10) { + temp_r25 = &lbl_1_bss_1DC[i]; + fn_1_15DC8(&temp_r25->unk50); + fn_1_15CD0(&temp_r25->unk50, temp_r27->unk00->model[0]); + temp_r25->unk50.unkE4->trans.z = 10.0f; + } else { + fn_1_15DC8(&temp_r27->unk50); + } + } + if (var_r29->unk20 != 0) { + lbl_1_bss_38.unk14 = 180; + var_r26 = var_r29->unk10 - 1; + if (var_r26 < 0) { + var_r26 = 3; + } + var_r23 = &lbl_1_bss_1DC[var_r26]; + var_r23->unk4C = 0.0f; + fn_1_6580(var_r26, 1, 2); + } + Hu3DModelObjMtxGet(var_r24->unk00->model[0], "m437a01-chara-point", sp8); + temp_r27->unk4C = sp8[1][3]; + fn_1_6580(var_r29->unk10, 1, 1); +} + +s32 fn_1_D930(void) { + s32 var_r25 = 4; + StructBss944* var_r31 = &lbl_1_bss_944; + Vec sp5C[] = { + { 5.0f, 0.0f, -250.0f }, + { -175.0f, 0.0f, -250.0f }, + { -325.0f, 0.0f, -250.0f }, + { -490.0f, 0.0f, -250.0f } + }; + StructBss1DC* temp_r27; + StructBss1DC* temp_r30; + s32 var_r28; + s32 var_r26; + s32 i; + + var_r28 = var_r31->unk10; + if (var_r31->unk20 != 0) { + var_r25 = 3; + } + for (i = 0; i < var_r25; i++) { + temp_r27 = &lbl_1_bss_1DC[var_r28]; + if (i == 0) { + fn_1_11CE0(temp_r27->unk00, sp5C[i], 0.0f, 4.5f, 10.0f, 5.0f, 0); + } else if (fn_1_11854(&lbl_1_bss_38, 0) >= i * 5 + 10) { + fn_1_11CE0(temp_r27->unk00, sp5C[i], 90.0f, 9.0f, 30.0f, 15.0f, 2); + } + var_r28++; + if (var_r28 >= 4) { + var_r28 = 0; + } + } + if (var_r31->unk20 != 0) { + Vec sp44[] = { + { 0.0f, 0.0f, -50.0f }, + { -510.0f, 0.0f, -250.0f } + }; + + var_r26 = var_r31->unk10 - 1; + if (var_r26 < 0) { + var_r26 = 3; + } + temp_r30 = &lbl_1_bss_1DC[var_r26]; + if (fn_1_11854(&lbl_1_bss_38, 0) <= 60) { + fn_1_11CE0(temp_r30->unk00, sp44[0], -1.0f, 9.0f, 10.0f, 15.0f, 0); + } else if (temp_r30->unk3C == 7) { + fn_1_11CE0(temp_r30->unk00, sp44[1], 90.0f, 9.0f, 30.0f, 15.0f, 3); + } else { + fn_1_11CE0(temp_r30->unk00, sp44[1], 90.0f, 9.0f, 30.0f, 15.0f, 1); + } + } + if (fn_1_11854(&lbl_1_bss_38, 1) != 0) { + var_r31->unk20 = 1; + return fn_1_116C4(&lbl_1_bss_38); + } +} + +void fn_1_DCEC(void) { + fn_1_B270(); + fn_1_BDB8(1); + fn_1_1184(5); +} + +s32 fn_1_DEC4(void) { + StructBss944* var_r24; + + var_r24 = &lbl_1_bss_944; + fn_1_11854(&lbl_1_bss_38, 1); + if (fn_1_11854(&lbl_1_bss_38, 0) <= 10) { + return 0; + } + if (fn_1_11BC() != 0) { + return fn_1_117C0(&lbl_1_bss_38, 8); + } + if (fn_1_B4F4(var_r24->unk10, fn_1_11854(&lbl_1_bss_38, 0)) == 5.0f) { + fn_1_11E0(); + return fn_1_116C4(&lbl_1_bss_38); + } + return 0; +} + +void fn_1_E2A8(void) { + if (fn_1_36B4() < 0.75f) { + lbl_1_bss_38.unk14 = 60; + } else { + lbl_1_bss_38.unk14 = 120; + } +} + +s32 fn_1_E598(void) { + if (fn_1_11854(&lbl_1_bss_38, 1) != 0) { + if (fn_1_3990()) { + return fn_1_117C0(&lbl_1_bss_38, 5); + } else { + return fn_1_116C4(&lbl_1_bss_38); + } + } + return 0; +} + +void fn_1_E634(void) { + if (fn_1_36B4() < 0.75f) { + HuPrcChildCreate(fn_1_BE80, 100, 0x2000, 0, HuPrcCurrentGet()); + } else { + HuPrcChildCreate(fn_1_C248, 100, 0x2000, 0, HuPrcCurrentGet()); + } +} + +s32 fn_1_E944(void) { + if (lbl_1_bss_C != 0 && fn_1_11854(&lbl_1_bss_38, 1) != 0) { + return fn_1_116C4(&lbl_1_bss_38); + } + return 0; +} + +void fn_1_E9A0(void) { + StructBss944* var_r30; + StructBss1DC* temp_r29; + s32 i; + + var_r30 = &lbl_1_bss_944; + temp_r29 = &lbl_1_bss_1DC[var_r30->unk10]; + fn_1_BDB8(0); + for (i = 0; i < 4; i++) { + if (i != var_r30->unk10) { + StructBss1DC* var_r28 = &lbl_1_bss_1DC[i]; + + fn_1_15DC8(&temp_r29->unk50); + fn_1_15CD0(&temp_r29->unk50, var_r28->unk00->model[0]); + } + } + for (i = 0; i < 4; i++) { + if (i != temp_r29->unk00->work[0]) { + StructBss1DC* var_r27 = &lbl_1_bss_1DC[i]; + + fn_1_11B18(var_r27->unk00, 0, 0, 15, 0); + } + } +} + +s32 fn_1_EAA4(void) { + StructBss944* var_r30; + StructBss1DC* sp8; + + var_r30 = &lbl_1_bss_944; + sp8 = &lbl_1_bss_1DC[var_r30->unk10]; + if (fn_1_11854(&lbl_1_bss_38, 1) != 0) { + var_r30->unk10++; + if (var_r30->unk10 >= 4) { + var_r30->unk10 = 0; + } + return fn_1_117C0(&lbl_1_bss_38, 0); + } + return 0; +} + +void fn_1_EB38(void) { + StructBss8D4* sp8; + StructBss6BC* var_r31; + + lbl_1_bss_8D4.unk08 = 1; + var_r31 = &lbl_1_bss_6BC[1]; + var_r31->unk04 = 0; + var_r31->unk08 = 0; + var_r31->unk14 = 0; + lbl_1_bss_C = 0; + fn_1_3B50(); + HuPrcChildCreate(fn_1_C610, 100, 0x2000, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_C9C4, 100, 0x2000, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_CD20, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_EC10(void) { + StructBss1DC* var_r29; + StructBss8D4* var_r31; + s32 i; + + if (lbl_1_bss_C == 1) { + lbl_1_bss_C = 0; + for (i = 0; i < 4; i++) { + var_r29 = &lbl_1_bss_1DC[i]; + fn_1_119A0(var_r29->unk00, 0, 12, 1, 0); + } + } + var_r31 = &lbl_1_bss_8D4; + if (var_r31->unk00->motion[8] == Hu3DMotionIDGet(var_r31->unk00->model[0]) && Hu3DMotionTimeGet(var_r31->unk00->model[0]) >= 5.0f) { + Hu3DMotionTimeSet(var_r31->unk00->model[0], 5.0f); + Hu3DMotionSpeedSet(var_r31->unk00->model[0], 0.0f); + fn_1_5148(0, 30, 1, 0); + fn_1_51DC(0, 30, 1, 0); + fn_1_5270(5, 10, 1, 1); + } + if (lbl_1_bss_C == 2 && fn_1_11854(&lbl_1_bss_38, 1) != 0) { + return fn_1_116C4(&lbl_1_bss_38); + } + return 0; +} + +void fn_1_EDD4(void) { + StructBss944* var_r30; + StructBss8D4* var_r29; + StructBss1DC* temp_r31; + + var_r30 = &lbl_1_bss_944; + var_r29 = &lbl_1_bss_8D4; + temp_r31 = &lbl_1_bss_1DC[var_r30->unk10]; + fn_1_4BAC(0, 60, 1, 1); + Hu3DMotionSpeedSet(var_r29->unk00->model[0], 1.0f); + temp_r31->unk00->rot.y = 0.0f; + temp_r31->unk1C = 0; + fn_1_BDB8(3); +} + +s32 fn_1_EEA0(void) { + StructBss944* var_r30; + StructBss1DC* temp_r31; + + var_r30 = &lbl_1_bss_944; + temp_r31 = &lbl_1_bss_1DC[var_r30->unk10]; + if (temp_r31->unk1C++ == 0) { + fn_1_11B18(temp_r31->unk00, 0, 10, 30, 1); + } else if (temp_r31->unk1C > 0) { + temp_r31->unk00->rot.y = fn_1_11348(0.0f, 180.0f, temp_r31->unk1C, 30.0f); + if (temp_r31->unk1C >= 30) { + fn_1_11B18(temp_r31->unk00, 0, 0, 30, 1); + } + } + if (fn_1_11854(&lbl_1_bss_38, 1) != 0) { + return fn_1_116C4(&lbl_1_bss_38); + } + return 0; +} + +void fn_1_EFCC(void) { + StructBss944* var_r28; + s32 var_r29; + s32 i; + + fn_1_79E0(); + var_r28 = &lbl_1_bss_944; + var_r29 = var_r28->unk10; + for (i = 0; i < 4; i++) { + if (i >= 1) { + fn_1_70F8(var_r29, i); + } + var_r29++; + if (var_r29 >= 4) { + var_r29 = 0; + } + } + HuPrcChildCreate(fn_1_D03C, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_F0B8(void) { + if (fn_1_11854(&lbl_1_bss_38, 1) != 0) { + return 1; + } + return 0; +} + +void fn_1_F0F8(void) { + lbl_1_bss_8D4.unk08 = 1; + fn_1_4BAC(0, 60, 1, 1); +} + +s32 fn_1_F144(void) { + if (fn_1_11854(&lbl_1_bss_38, 1) != 0) { + return fn_1_116C4(&lbl_1_bss_38); + } + return 0; +} + +void fn_1_F18C(void) { + StructBss944* var_r30; + StructBss1DC* temp_r31; + + var_r30 = &lbl_1_bss_944; + temp_r31 = &lbl_1_bss_1DC[var_r30->unk10]; + HuPrcChildCreate(fn_1_D3C0, 100, 0x2000, 0, HuPrcCurrentGet()); + temp_r31->unk00->rot.y = 0.0f; + temp_r31->unk1C = 0; + fn_1_5148(0, 10, 1, 0); + fn_1_51DC(0, 10, 1, 0); + fn_1_5270(5, 10, 1, 1); + fn_1_BDB8(3); +} + +s32 fn_1_F294(void) { + StructBss944* var_r30; + StructBss1DC* temp_r31; + + var_r30 = &lbl_1_bss_944; + temp_r31 = &lbl_1_bss_1DC[var_r30->unk10]; + if (temp_r31->unk1C++ == 60) { + fn_1_11B18(temp_r31->unk00, 0, 10, 30, 1); + } else if (temp_r31->unk1C > 60) { + temp_r31->unk00->rot.y = fn_1_11348(0.0f, 180.0f, temp_r31->unk1C - 60, 30.0f); + if (temp_r31->unk1C >= 90) { + fn_1_11B18(temp_r31->unk00, 0, 0, 30, 1); + } + } + if (lbl_1_bss_C != 0 && (fn_1_11854(&lbl_1_bss_38, 1) != 0)) { + return fn_1_116C4(&lbl_1_bss_38); + } + return 0; +} + +void fn_1_F3D8(void) { + StructBss944* var_r28; + s32 var_r29; + s32 i; + + fn_1_79E0(); + var_r28 = &lbl_1_bss_944; + var_r29 = var_r28->unk10; + for (i = 0; i < 4; i++) { + if (i >= 1) { + fn_1_70F8(var_r29, i); + } + var_r29++; + if (var_r29 >= 4) { + var_r29 = 0; + } + } +} + +s32 fn_1_F494(void) { + if (fn_1_11854(&lbl_1_bss_38, 1) != 0) { + return 1; + } + return 0; +} + +StructData204 lbl_1_data_27C[] = { + { fn_1_D754, fn_1_D930, 60 }, + { fn_1_DCEC, fn_1_DEC4, 60 }, + { fn_1_E2A8, fn_1_E598, 60 }, + { fn_1_E634, fn_1_E944, 10 }, + { fn_1_E9A0, fn_1_EAA4, 30 }, + { fn_1_EB38, fn_1_EC10, 60 }, + { fn_1_EDD4, fn_1_EEA0, 60 }, + { fn_1_EFCC, fn_1_F0B8, 90 }, + { fn_1_F0F8, fn_1_F144, 60 }, + { fn_1_F18C, fn_1_F294, 60 }, + { fn_1_F3D8, fn_1_F494, 90 }, + { NULL, NULL, -1 } +}; + +void fn_1_F4D4(void) { + fn_1_11668(&lbl_1_bss_38, lbl_1_data_27C); +} + +s32 fn_1_F504(void) { + if (lbl_1_bss_38.unk08 != NULL) { + lbl_1_bss_38.unk08(); + lbl_1_bss_38.unk08 = NULL; + } + if (lbl_1_bss_38.unk0C != NULL) { + return lbl_1_bss_38.unk0C(); + } + return 0; +} + +void fn_1_F590(void) { + StructBss944* var_r30; + StructBss1DC* temp_r31; + + var_r30 = &lbl_1_bss_944; + temp_r31 = &lbl_1_bss_1DC[var_r30->unk10]; + var_r30->unk1C = 0; + lbl_1_data_A0 = temp_r31->unk00->model[0]; + lbl_1_data_A4 = temp_r31->unk00->motion[3]; + lbl_1_data_A8 = temp_r31->unk3C; + HuPrcChildCreate(fn_1_0, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +s32 fn_1_F640(void) { + StructBss944* var_r31; + StructBss1DC* temp_r30; + + var_r31 = &lbl_1_bss_944; + temp_r30 = &lbl_1_bss_1DC[var_r31->unk10]; + if (fn_1_11854(&lbl_1_bss_20, 0) == 120) { + fn_1_119A0(temp_r30->unk00, 0, 3, 30, 0); + HuAudSStreamPlay(3); + } + if (fn_1_11854(&lbl_1_bss_20, 1) != 0) { + return fn_1_116C4(&lbl_1_bss_20); + } + return 0; +} + +StructData204 lbl_1_data_30C[] = { + { fn_1_F590, fn_1_F640, 360 }, + { NULL, NULL, -1 } +}; + +void fn_1_F6EC(void) { + fn_1_11668(&lbl_1_bss_20, lbl_1_data_30C); +} + +s32 fn_1_F71C(void) { + if (lbl_1_bss_20.unk08 != NULL) { + lbl_1_bss_20.unk08(); + lbl_1_bss_20.unk08 = NULL; + } + if (lbl_1_bss_20.unk0C != NULL) { + return lbl_1_bss_20.unk0C(); + } + return 0; +} + +void fn_1_F7A8(omObjData* arg0) { + StructBss944* var_r30; + StructBss1DC* temp_r29; + s32 i; + + if (WipeStatGet() == 0) { + HuAudFadeOut(1); + CharModelKill(-1); + MGSeqKillAll(); + var_r30 = &lbl_1_bss_944; + temp_r29 = &lbl_1_bss_1DC[var_r30->unk10]; + for (i = 0; i < 4; i++) { + GWPlayerCoinWinSet(i, 0); + } + GWPlayerCoinWinSet(temp_r29->unk2C, 1); + omOvlReturnEx(1, 1); + arg0->func = NULL; + } +} + +s32 fn_1_F89C(void) { + return omSysExitReq; +} + +void fn_1_F8AC(void) { + StructBss944* var_r29; + s32 i; + + fn_1_3260(&lbl_1_bss_920); + fn_1_4538(&lbl_1_bss_8FC); + fn_1_4E00(&lbl_1_bss_8D4); + for (i = 0; i < 2; i++) { + fn_1_5984(&lbl_1_bss_6BC[i]); + } + for (i = 0; i < 4; i++) { + fn_1_74B0(&lbl_1_bss_1DC[i]); + } + fn_1_8308(&lbl_1_bss_68); + var_r29 = &lbl_1_bss_944; + var_r29->unk00 = var_r29->unk04 = var_r29->unk08 = var_r29->unk0C = 0; + var_r29->unk10 = var_r29->unk14 = var_r29->unk18 = var_r29->unk1C = 0; + fn_1_B194(); + fn_1_F4D4(); + fn_1_F6EC(); + fn_1_8C84(0); + HuAudFXPlay(0x6D7); +} + +void fn_1_1043C(omObjData* arg0) { + StructBss920* var_r30; + + switch (lbl_1_bss_18) { + case 0: + fn_1_F8AC(); + lbl_1_bss_18++; + break; + case 1: + if (WipeStatGet() == 0) { + lbl_1_bss_18++; + } + break; + case 2: + if (fn_1_B1C4() != 0) { + lbl_1_bss_18++; + } + break; + case 3: + lbl_1_bss_1C = MGSeqStartCreate(); + lbl_1_bss_18++; + lbl_1_bss_968.unk04 = -1; + break; + case 4: + if ((MGSeqStatGet(lbl_1_bss_1C) & 0x10) && lbl_1_bss_968.unk04 == -1) { + lbl_1_bss_968.unk04 = HuAudSeqPlay(0x4D); + } + if (MGSeqStatGet(lbl_1_bss_1C) == 0) { + lbl_1_bss_18++; + } + break; + case 5: + if (fn_1_F504() != 0) { + lbl_1_bss_18++; + } + break; + case 6: + lbl_1_bss_1C = MGSeqFinishCreate(); + lbl_1_bss_18++; + HuAudSeqPauseAll(0); + HuAudSeqAllFadeOut(0xFA); + break; + case 7: + if (MGSeqStatGet(lbl_1_bss_1C) == 0) { + lbl_1_bss_18++; + } + break; + case 8: + var_r30 = &lbl_1_bss_920; + var_r30->unk04 = 999; + if (fn_1_F71C() != 0) { + lbl_1_bss_18++; + } + break; + case 9: + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + arg0->func = fn_1_F7A8; + break; + case 10: + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + arg0->func = fn_1_F7A8; + break; + } + if (omSysExitReq != 0) { + HuAudSeqAllFadeOut(0xFA); + lbl_1_bss_18 = 10; + } +} + +void fn_1_108A4(omObjData* arg0) { + s32 i; + + lbl_1_bss_920.unk00 = omAddObjEx(lbl_1_bss_0, 0x100, 16, 16, -1, fn_1_3410); + lbl_1_bss_8FC.unk00 = omAddObjEx(lbl_1_bss_0, 0x200, 16, 16, -1, fn_1_46C0); + lbl_1_bss_8D4.unk00 = omAddObjEx(lbl_1_bss_0, 0x300, 16, 16, -1, fn_1_4EE0); + for (i = 0; i < 2; i++) { + lbl_1_bss_6BC[i].unk00 = omAddObjEx(lbl_1_bss_0, 0x400, 16, 16, -1, fn_1_5AD8); + lbl_1_bss_6BC[i].unk00->work[0] = i; + } + for (i = 0; i < 4; i++) { + lbl_1_bss_1DC[i].unk00 = omAddObjEx(lbl_1_bss_0, 0x500, 16, 16, -1, fn_1_7678); + lbl_1_bss_1DC[i].unk00->work[0] = i; + } + lbl_1_bss_68.unk00 = omAddObjEx(lbl_1_bss_0, 0x600, 16, 16, -1, fn_1_84C4); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + arg0->func = fn_1_1043C; +} + +#include "src/REL/executor.c" + +void fn_1_10B30(void) { + lbl_1_bss_0 = omInitObjMan(62, 0x2000); + omGameSysInit(lbl_1_bss_0); + fn_1_1A8(); + fn_1_F8C(); + fn_1_10C0(); + fn_1_13E8(); + fn_1_1A90(); + fn_1_5FBC(); + omAddObjEx(lbl_1_bss_0, 0x1000, 0, 0, -1, fn_1_108A4); +} + +void ObjectSetup(void) { + fn_1_10B30(); +} diff --git a/src/REL/m437Dll/sequence.c b/src/REL/m437Dll/sequence.c new file mode 100755 index 00000000..df17ce31 --- /dev/null +++ b/src/REL/m437Dll/sequence.c @@ -0,0 +1,586 @@ +#include "REL/m437Dll.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" + +#include "ext_math.h" +#include "string.h" + +void fn_1_11618(StructBss50* arg0); +s32 fn_1_1174C(StructBss50* arg0); +void fn_1_12494(omObjData* arg0, s32 arg1, Vec* arg2, Vec* arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8); +void fn_1_12958(omObjData* arg0, s32 arg1, Vec* arg2, Vec* arg3, s32 arg4, s32 arg5, s32 arg6); +void fn_1_129B8(omObjData* arg0, s32 arg1, Vec* arg2, Vec* arg3, s32 arg4, s32 arg5, s32 arg6); +void fn_1_12A1C(omObjData* arg0, s32 arg1, Vec* arg2, Vec* arg3, s32 arg4, s32 arg5, s32 arg6); +void fn_1_12A80(StructBss160* arg0); +void fn_1_12B00(StructBss160* arg0, StructBss160* arg1, float arg2); +void fn_1_13128(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3); +void fn_1_133A4(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3); +void fn_1_13B88(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3); +void fn_1_13FDC(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3); +void fn_1_14468(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3, float arg4); +void fn_1_14B84(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3); +void fn_1_15048(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3); +void fn_1_15D3C(StructFn15CD0* arg0, s32 arg1); +void fn_1_15DA4(StructFn15CD0* arg0, s32 arg1); +void fn_1_15DB4(StructFn15CD0* arg0); +void fn_1_15DC0(StructFn15CD0* arg0, s32 arg1); +float fn_1_15E10(s32 arg0, s32 arg1, s32 arg2); +float fn_1_16154(s32 arg0, s32 arg1); +float fn_1_162E4(s32 arg0, float arg1, float arg2); +void fn_1_16348(omObjData* arg0); +void fn_1_1634C(Process* arg0, StructFn15CD0* arg1, s32 arg2, const char* arg3, s32 arg4, s32 arg5); + +const char* lbl_1_data_3D0[] = { + "c000m1-ske_head", + "c001m1-ske_head", + "c002m1-ske_head", + "c003m1-ske_head", + "c004m1-ske_head", + "c005m1-ske_head", + "c006m1-ske_head", + "c007m1-ske_head" +}; + +s32 lbl_1_data_3F0[][2] = { + { 0x100, 1 }, + { 0x100, 1 }, + { 0x80, 0 }, + { 0x80, 0 }, + { 0x80, 0 }, + { 0x100, 1 }, + { 0x80, 0 }, + { 0x80, 0 } +}; + +// Similar to mgmodedll/main.c::fn_1_240E4 (identical in behavior) +float fn_1_11348(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg1; + } + return arg0 + (arg2 / arg3) * (arg1 - arg0); +} + +float fn_1_11370(float arg0, float arg1, float arg2) { + if (arg2 <= 1.0f) { + return arg1; + } + return (arg1 + arg0 * (arg2 - 1.0f)) / arg2; +} + +// Identical to mgmodedll/main.c::fn_1_24204 +float fn_1_113B0(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg1; + } + return arg0 + (arg1 - arg0) * sind((90.0f / arg3) * arg2); +} + +// Identical to mgmodedll/main.c::fn_1_242CC +float fn_1_11478(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg1; + } + return arg0 + (arg1 - arg0) * sind((360.0f / arg3) * arg2); +} + +// Identical to mgmodedll/main.c::fn_1_2412C +float fn_1_11540(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg1; + } + return arg0 + (arg1 - arg0) * (1.0 - cosd((90.0f / arg3) * arg2)); +} + +void fn_1_11618(StructBss50* arg0) { + arg0->unk10 = 0; + arg0->unk14 = arg0->unk04[arg0->unk00].unk08; + arg0->unk08 = arg0->unk04[arg0->unk00].unk00; + arg0->unk0C = arg0->unk04[arg0->unk00].unk04; +} + +void fn_1_11668(StructBss50* arg0, StructData204* arg1) { + arg0->unk00 = 0; + arg0->unk04 = arg1; + fn_1_11618(arg0); +} + +s32 fn_1_116C4(StructBss50* arg0) { + arg0->unk00++; + fn_1_11618(arg0); + if (arg0->unk08 == NULL && arg0->unk0C == NULL) { + return 1; + } + return 0; +} + +s32 fn_1_1174C(StructBss50* arg0) { + arg0->unk00--; + if (arg0->unk00 < 0) { + return 1; + } + fn_1_11618(arg0); + return 0; +} + +s32 fn_1_117C0(StructBss50* arg0, s32 arg1) { + arg0->unk00 = arg1; + if (arg0->unk00 < 0) { + return 1; + } + fn_1_11618(arg0); + if (arg0->unk08 == NULL && arg0->unk0C == NULL) { + return 1; + } + return 0; +} + +s32 fn_1_11854(StructBss50* arg0, s32 arg1) { + if (arg1 != 0) { + arg0->unk10 += arg1; + if (arg0->unk10 >= arg0->unk14) { + return 1; + } + } else { + return arg0->unk10; + } + return 0; +} + +s32 fn_1_11890(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + if (arg0->motion[arg2] == Hu3DMotionIDGet(arg0->model[0])) { + if (arg4 != 0) { + if (Hu3DMotionTimeGet(arg0->model[arg1]) >= arg3) { + return 1; + } + } else if (Hu3DMotionTimeGet(arg0->model[arg1]) <= arg3) { + return 1; + } + } + return 0; +} + +void fn_1_119A0(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + switch (arg4) { + case 0: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0); + break; + case 1: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000001); + break; + case 2: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000002); + break; + } +} + +void fn_1_11B18(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + if (arg0->motion[arg2] != Hu3DMotionIDGet(arg0->model[arg1]) && arg0->motion[arg2] != Hu3DMotionShiftIDGet(arg0->model[arg1])) { + fn_1_119A0(arg0, arg1, arg2, arg3, arg4); + } +} + +s32 fn_1_11CE0(omObjData* arg0, Vec arg1, float arg2, float arg3, float arg4, float arg5, s32 arg6) { + float var_f31; + float var_f30; + float var_f26; + float var_f27; + + var_f31 = arg1.x - arg0->trans.x; + var_f30 = arg0->trans.z - arg1.z; + var_f26 = 90.0 + atan2d(var_f30, var_f31); + var_f27 = sqrtf(var_f31 * var_f31 + var_f30 * var_f30); + if (var_f27 <= arg4) { + var_f31 = var_f30 = 0.0f; + } else { + var_f31 = 72.0f * (var_f31 / var_f27); + var_f30 = 72.0f * (var_f30 / var_f27); + } + var_f27 = arg3 * (sqrtf(var_f31 * var_f31 + var_f30 * var_f30) / 72.0f); + if (var_f27 >= arg3) { + var_f27 = arg3; + } else if (var_f27 <= 1.0f) { + var_f31 = var_f30 = var_f27 = 0.0f; + } + if (var_f31 != 0.0f || var_f30 != 0.0f || arg2 >= 0.0f) { + if (arg2 >= 0.0f && var_f31 == 0.0f && var_f30 == 0.0f) { + var_f26 = arg2; + } + if (var_f26 >= 180.0f) { + if (arg0->rot.y - var_f26 >= 180.0f) { + arg0->rot.y -= 360.0f; + } + if (arg0->rot.y - var_f26 < -180.0f) { + arg0->rot.y += 360.0f; + } + } else { + if (arg0->rot.y - var_f26 > 180.0f) { + arg0->rot.y -= 360.0f; + } + if (arg0->rot.y - var_f26 <= -180.0f) { + arg0->rot.y += 360.0f; + } + } + arg0->rot.y = (var_f26 + arg0->rot.y * (arg5 - 1.0f)) / arg5; + } + arg0->trans.x += var_f27 * sind(arg0->rot.y); + arg0->trans.z += var_f27 * cosd(arg0->rot.y); + if (arg6 != 0) { + if (var_f27 > 0.0f) { + if (arg6 == 1 || arg6 == 3) { + if (arg0->motion[1] != Hu3DMotionIDGet(arg0->model[0]) && arg0->motion[1] != Hu3DMotionShiftIDGet(arg0->model[0])) { + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[1], 0.0f, 10.0f, 0x40000001); + } + } else if (arg0->motion[10] != Hu3DMotionIDGet(arg0->model[0]) && arg0->motion[10] != Hu3DMotionShiftIDGet(arg0->model[0])) { + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[10], 0.0f, 10.0f, 0x40000001); + } + } else { + if (arg0->motion[0] != Hu3DMotionIDGet(arg0->model[0]) && arg0->motion[0] != Hu3DMotionShiftIDGet(arg0->model[0])) { + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[0], 0.0f, 10.0f, 0x40000001); + } + return 1; + } + } + return 0; +} + +void fn_1_12494(omObjData* arg0, s32 arg1, Vec* arg2, Vec* arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8) { + Vec sp2C; + Vec sp20; + Vec sp14; + float var_f31; + float var_f30; + float temp_f29; + float temp_f28; + + sp2C.x = arg2->x; + sp2C.y = arg2->y; + sp2C.z = arg2->z; + sp20.x = arg3->x; + sp20.y = arg3->y; + sp20.z = arg3->z; + var_f31 = Hu3DData[arg0->model[arg1]].rot.y; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } else if (var_f31 >= 360.0f) { + var_f31 -= 360.0f; + } + temp_f29 = arg5; + temp_f28 = arg6; + if (arg7 != 0) { + sp14.x = fn_1_11348(sp2C.x, sp20.x, temp_f29, temp_f28); + sp14.y = fn_1_11348(sp2C.y, sp20.y, temp_f29, temp_f28); + sp14.z = fn_1_11348(sp2C.z, sp20.z, temp_f29, temp_f28); + if (arg1 == 0) { + omSetTra(arg0, sp14.x, sp14.y, sp14.z); + } else { + Hu3DModelPosSet(arg0->model[arg1], sp14.x, sp14.y, sp14.z); + } + } + if (arg8 == 0) { + return; + } + var_f30 = -(atan2d(sp20.z - sp2C.z, sp20.x - sp2C.x) - 90.0); + if (var_f30 < 0.0f) { + var_f30 += 360.0f; + } else if (var_f30 >= 360.0f) { + var_f30 -= 360.0f; + } + if (var_f30 >= 180.0f) { + if (var_f31 - var_f30 >= 180.0f) { + var_f31 -= 360.0f; + } + if (var_f31 - var_f30 < -180.0f) { + var_f31 += 360.0f; + } + } else { + if (var_f31 - var_f30 > 180.0f) { + var_f31 -= 360.0f; + } + if (var_f31 - var_f30 <= -180.0f) { + var_f31 += 360.0f; + } + } + var_f31 = (var_f30 + var_f31 * (arg4 - 1)) / arg4; + if (arg1 == 0) { + arg0->rot.y = var_f31; + } else { + Hu3DData[arg0->model[arg1]].rot.y = var_f31; + } +} + +void fn_1_12958(omObjData* arg0, s32 arg1, Vec* arg2, Vec* arg3, s32 arg4, s32 arg5, s32 arg6) { + fn_1_12494(arg0, arg1, arg2, arg3, 0, arg5, arg6, 1, 0); +} + +void fn_1_129B8(omObjData* arg0, s32 arg1, Vec* arg2, Vec* arg3, s32 arg4, s32 arg5, s32 arg6) { + fn_1_12494(arg0, arg1, arg2, arg3, arg4, arg5, arg6, 0, 1); +} + +void fn_1_12A1C(omObjData* arg0, s32 arg1, Vec* arg2, Vec* arg3, s32 arg4, s32 arg5, s32 arg6) { + fn_1_12494(arg0, arg1, arg2, arg3, arg4, arg5, arg6, 1, 1); +} + +void fn_1_12A80(StructBss160* arg0) { + arg0->unk08 = arg0->unk14; + arg0->unk0C = arg0->unk18; + arg0->unk10 = arg0->unk1C; + arg0->unk20 = arg0->unk2C; + arg0->unk24 = arg0->unk30; + arg0->unk28 = arg0->unk34; + arg0->unk38 = arg0->unk3C; +} + +void fn_1_12ABC(StructBss160* arg0) { + arg0->unk40 = 0; + arg0->unk14 = arg0->unk08; + arg0->unk18 = arg0->unk0C; + arg0->unk1C = arg0->unk10; + arg0->unk2C = arg0->unk20; + arg0->unk30 = arg0->unk24; + arg0->unk34 = arg0->unk28; + arg0->unk3C = arg0->unk38; +} + +void fn_1_12B00(StructBss160* arg0, StructBss160* arg1, float arg2) { + arg0->unk08 = fn_1_11370(arg0->unk08, arg1->unk14, arg2); + arg0->unk0C = fn_1_11370(arg0->unk0C, arg1->unk18, arg2); + arg0->unk10 = fn_1_11370(arg0->unk10, arg1->unk1C, arg2); + arg0->unk20 = fn_1_11370(arg0->unk20, arg1->unk2C, arg2); + arg0->unk24 = fn_1_11370(arg0->unk24, arg1->unk30, arg2); + arg0->unk28 = fn_1_11370(arg0->unk28, arg1->unk34, arg2); + arg0->unk38 = fn_1_11370(arg0->unk38, arg1->unk3C, arg2); +} + +void fn_1_12E14(StructBss160* arg0, float arg1) { + fn_1_12B00(arg0, arg0, arg1); +} + +void fn_1_13128(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3) { + arg1->unk14 = fn_1_11348(arg0->unk14, arg1->unk08, arg2, arg3); + arg1->unk18 = fn_1_11348(arg0->unk18, arg1->unk0C, arg2, arg3); + arg1->unk1C = fn_1_11348(arg0->unk1C, arg1->unk10, arg2, arg3); + arg1->unk2C = fn_1_11348(arg0->unk2C, arg1->unk20, arg2, arg3); + arg1->unk30 = fn_1_11348(arg0->unk30, arg1->unk24, arg2, arg3); + arg1->unk34 = fn_1_11348(arg0->unk34, arg1->unk28, arg2, arg3); + arg1->unk3C = fn_1_11348(arg0->unk3C, arg1->unk38, arg2, arg3); +} + +void fn_1_133A4(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3) { + fn_1_13128(arg0, arg1, arg2, arg3); + arg0->unk08 = arg1->unk14; + arg0->unk0C = arg1->unk18; + arg0->unk10 = arg1->unk1C; + arg0->unk20 = arg1->unk2C; + arg0->unk24 = arg1->unk30; + arg0->unk28 = arg1->unk34; + arg0->unk38 = arg1->unk3C; +} + +void fn_1_13658(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3, float arg4) { + fn_1_13128(arg0, arg1, arg2, arg3); + fn_1_12B00(arg0, arg1, arg4); +} + +void fn_1_13B88(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3) { + arg1->unk14 = fn_1_113B0(arg0->unk14, arg1->unk08, arg2, arg3); + arg1->unk18 = fn_1_113B0(arg0->unk18, arg1->unk0C, arg2, arg3); + arg1->unk1C = fn_1_113B0(arg0->unk1C, arg1->unk10, arg2, arg3); + arg1->unk2C = fn_1_113B0(arg0->unk2C, arg1->unk20, arg2, arg3); + arg1->unk30 = fn_1_113B0(arg0->unk30, arg1->unk24, arg2, arg3); + arg1->unk34 = fn_1_113B0(arg0->unk34, arg1->unk28, arg2, arg3); + arg1->unk3C = fn_1_113B0(arg0->unk3C, arg1->unk38, arg2, arg3); +} + +void fn_1_13FDC(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3) { + fn_1_13B88(arg0, arg1, arg2, arg3); + arg0->unk08 = arg1->unk14; + arg0->unk0C = arg1->unk18; + arg0->unk10 = arg1->unk1C; + arg0->unk20 = arg1->unk2C; + arg0->unk24 = arg1->unk30; + arg0->unk28 = arg1->unk34; + arg0->unk38 = arg1->unk3C; +} + +void fn_1_14468(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3, float arg4) { + fn_1_13B88(arg0, arg1, arg2, arg3); + fn_1_12B00(arg0, arg1, arg4); +} + +void fn_1_14B84(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3) { + arg1->unk14 = fn_1_11540(arg0->unk14, arg1->unk08, arg2, arg3); + arg1->unk18 = fn_1_11540(arg0->unk18, arg1->unk0C, arg2, arg3); + arg1->unk1C = fn_1_11540(arg0->unk1C, arg1->unk10, arg2, arg3); + arg1->unk2C = fn_1_11540(arg0->unk2C, arg1->unk20, arg2, arg3); + arg1->unk30 = fn_1_11540(arg0->unk30, arg1->unk24, arg2, arg3); + arg1->unk34 = fn_1_11540(arg0->unk34, arg1->unk28, arg2, arg3); + arg1->unk3C = fn_1_11540(arg0->unk3C, arg1->unk38, arg2, arg3); +} + +void fn_1_15048(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3) { + fn_1_14B84(arg0, arg1, arg2, arg3); + arg0->unk08 = arg1->unk14; + arg0->unk0C = arg1->unk18; + arg0->unk10 = arg1->unk1C; + arg0->unk20 = arg1->unk2C; + arg0->unk24 = arg1->unk30; + arg0->unk28 = arg1->unk34; + arg0->unk38 = arg1->unk3C; +} + +void fn_1_15544(StructBss160* arg0, StructBss160* arg1, float arg2, float arg3, float arg4) { + fn_1_14B84(arg0, arg1, arg2, arg3); + fn_1_12B00(arg0, arg1, arg4); +} + +void fn_1_15CD0(StructFn15CD0* arg0, s32 arg1) { + s32 var_r30; + s32 i; + + var_r30 = -1; + for (i = 0; i < 20; i++) { + if (arg0->unk94[i] == -1) { + var_r30 = i; + break; + } + } + if (var_r30 != -1) { + arg0->unk94[var_r30] = arg1; + arg0->unk00 = 1; + } +} + +void fn_1_15D3C(StructFn15CD0* arg0, s32 arg1) { + s32 i; + + for (i = 0; i < 20; i++) { + if (arg1 == -1) { + arg0->unk94[i] = -1; + } else if (arg0->unk94[i] == arg1) { + arg0->unk94[i] = -1; + } + } +} + +void fn_1_15DA4(StructFn15CD0* arg0, s32 arg1) { + arg0->unk90 = arg1; + arg0->unk00 = 1; +} + +void fn_1_15DB4(StructFn15CD0* arg0) { + arg0->unk90 = -1; +} + +void fn_1_15DC0(StructFn15CD0* arg0, s32 arg1) { + arg0->unk00 = arg1; +} + +void fn_1_15DC8(StructFn15CD0* arg0) { + fn_1_15DC0(arg0, 0); + fn_1_15D3C(arg0, -1); + fn_1_15DB4(arg0); +} + +float fn_1_15E10(s32 arg0, s32 arg1, s32 arg2) { + Vec sp20; + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + + sp20.x = Hu3DData[arg0].pos.x; + sp20.z = Hu3DData[arg0].pos.z; + sp14.x = Hu3DData[arg1].pos.x; + sp14.z = Hu3DData[arg1].pos.z; + sp8.x = sp14.x - sp20.x; + sp8.z = sp14.z - sp20.z; + var_f30 = Hu3DData[arg0].rot.y; + if (var_f30 >= 360.0f) { + var_f30 -= 360.0f; + } else if (var_f30 < 0.0f) { + var_f30 += 360.0f; + } + if (var_f30 >= 360.0f) { + var_f30 -= 360.0f; + } else if (var_f30 < 0.0f) { + var_f30 += 360.0f; + } + if (var_f30 >= 360.0f) { + var_f30 -= 360.0f; + } else if (var_f30 < 0.0f) { + var_f30 += 360.0f; + } + var_f31 = atan2d(sp8.z, sp8.x) - 90.0; + if (arg2 == 0) { + var_f31 *= -1.0f; + } + if (arg2 != 0) { + var_f31 += var_f30; + } else { + var_f31 -= var_f30; + } + if (var_f31 >= 180.0f) { + var_f31 -= 360.0f; + } else if (var_f31 < -180.0f) { + var_f31 += 360.0f; + } + if (var_f31 >= 180.0f) { + var_f31 -= 360.0f; + } else if (var_f31 < -180.0f) { + var_f31 += 360.0f; + } + if (var_f31 >= 180.0f) { + var_f31 -= 360.0f; + } else if (var_f31 < -180.0f) { + var_f31 += 360.0f; + } + return var_f31; +} + +float fn_1_16154(s32 arg0, s32 arg1) { + Vec sp24; + Vec sp18; + Vec spC; + + sp24.x = Hu3DData[arg0].pos.x; + sp24.z = Hu3DData[arg0].pos.z; + sp18.x = Hu3DData[arg1].pos.x; + sp18.z = Hu3DData[arg1].pos.z; + spC.x = sp18.x - sp24.x; + spC.z = sp18.z - sp24.z; + return sqrtf(spC.x * spC.x + spC.z * spC.z); +} + +float fn_1_162E4(s32 arg0, float arg1, float arg2) { + return (arg2 + arg1 * (arg0 - 1)) / arg0; +} + +void fn_1_16348(omObjData* arg0) { +} + +void fn_1_1634C(Process* arg0, StructFn15CD0* arg1, s32 arg2, const char* arg3, s32 arg4, s32 arg5) { + arg1->unk00 = 0; + arg1->unk84 = arg2; + strcpy(arg1->unk04, arg3); + arg1->unk88 = arg4; + arg1->unk8C = arg5; + arg1->unk90 = -1; + fn_1_15D3C(arg1, -1); + arg1->unkE4 = omAddObjEx(arg0, 0x3000, 0, 0, -1, fn_1_16348); + arg1->unkE4->data = arg1; + arg1->unkE4->trans.x = 10.0f; + arg1->unkE4->trans.y = 10000.0f; + arg1->unkE4->trans.z = 10.0f; + arg1->unkE4->rot.x = 0.0f; + arg1->unkE4->rot.y = 0.0f; + arg1->unkE4->rot.z = 0.0f; + arg1->unkE4->work[0] = arg1->unkE4->work[1] = arg1->unkE4->work[2] = arg1->unkE4->work[3] = 0; +} + +void fn_1_164B0(Process* arg0, StructFn15CD0* arg1, s32 arg2, const char* arg3) { + fn_1_1634C(arg0, arg1, arg2, arg3, 0x100, 0); +} + +void fn_1_1660C(Process* arg0, StructFn15CD0* arg1, s32 arg2, s32 arg3) { + fn_1_1634C(arg0, arg1, arg2, lbl_1_data_3D0[arg3], lbl_1_data_3F0[arg3][0], lbl_1_data_3F0[arg3][1]); +}