From be10a87a1b8830bd78e8c24457f5ca62193d2fc9 Mon Sep 17 00:00:00 2001 From: kabiskac Date: Sun, 26 May 2024 06:39:21 +0200 Subject: [PATCH] Almost fully matched m414Dll --- config/GMPE01_00/rels/m414Dll/symbols.txt | 206 +- src/REL/m414Dll/main.c | 2315 +++++++++++++++++++++ 2 files changed, 2418 insertions(+), 103 deletions(-) create mode 100644 src/REL/m414Dll/main.c diff --git a/config/GMPE01_00/rels/m414Dll/symbols.txt b/config/GMPE01_00/rels/m414Dll/symbols.txt index d1d3b636..c8a52db1 100644 --- a/config/GMPE01_00/rels/m414Dll/symbols.txt +++ b/config/GMPE01_00/rels/m414Dll/symbols.txt @@ -49,118 +49,118 @@ fn_1_8A10 = .text:0x00008A10; // type:function size:0x60 fn_1_8A70 = .text:0x00008A70; // type:function size:0x458 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -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:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -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:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 data:double -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float -lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float -lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 scope:local data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 scope:local data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x10 lbl_1_data_10 = .data:0x00000010; // type:object size:0x10 lbl_1_data_20 = .data:0x00000020; // type:object size:0x10 lbl_1_data_30 = .data:0x00000030; // type:object size:0x20 lbl_1_data_50 = .data:0x00000050; // type:object size:0x18 -lbl_1_data_68 = .data:0x00000068; // type:object size:0x24 +lbl_1_data_68 = .data:0x00000068; // type:object size:0x24 data:float lbl_1_data_8C = .data:0x0000008C; // type:object size:0x18 lbl_1_data_A4 = .data:0x000000A4; // type:object size:0x10 lbl_1_data_B4 = .data:0x000000B4; // type:object size:0x10 lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x60 -lbl_1_data_124 = .data:0x00000124; // type:object size:0x10 data:string -lbl_1_data_134 = .data:0x00000134; // type:object size:0x7 data:string +lbl_1_data_124 = .data:0x00000124; // type:object size:0x10 scope:local data:string +lbl_1_data_134 = .data:0x00000134; // type:object size:0x7 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0xC data:float lbl_1_bss_C = .bss:0x0000000C; // type:object size:0xC data:float lbl_1_bss_18 = .bss:0x00000018; // type:object size:0xC data:float diff --git a/src/REL/m414Dll/main.c b/src/REL/m414Dll/main.c new file mode 100644 index 00000000..220f758c --- /dev/null +++ b/src/REL/m414Dll/main.c @@ -0,0 +1,2315 @@ +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/frand.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "game/wipe.h" +#include "rel_sqrt_consts.h" + +typedef struct UnkM414Struct { + s32 unk00; + s32 unk04; + float unk08; + char unk0C[0x38]; + s32 unk_44; + char unk48[0x0C]; + s32 unk_54; + char unk58[0x24]; + float unk_7C; + float unk_80; + float unk_84; + char unk88[0xB0]; + Vec unk_138[16]; + s32 unk_1F8; +} UnkM414Struct; // size unknown + +typedef struct UnkM414BssF0Struct { + s16 unk_00[9]; + s16 unk_12; + s16 unk_14[6]; + s16 unk_20; + s16 unk_22[5]; + s16 unk_2C; + s16 unk_2E; + s16 unk_30[9]; + s16 unk_42; + s32 unk_44; + s32 unk_48; + s32 unk_4C; + s32 unk_50; + s32 unk_54; + s32 unk_58; + s32 unk_5C; + float unk_60; + float unk_64; + float unk_68; + float unk_6C; + float unk_70; + float unk_74; + char unk78[4]; + float unk_7C; + float unk_80; + float unk_84; + float unk_88; + char unk8C[4]; + float unk_90; + s16 unk_94[16]; + s16 unk_B4[16]; + s16 unk_D4[16]; + s32 unk_F4[16]; + Vec unk_134[16]; + s32 unk_1F4; + s32 unk_1F8; + s8 unk_1FC; + s8 unk_1FD; + s8 unk_1FE; + s8 unk_1FF; + u16 unk_200; + char unk202[2]; + s32 unk_204; +} UnkM414BssF0Struct; // size 0x208 + +typedef struct UnkM414Struct2 { + UnkM414BssF0Struct *unk_00; + s32 unk_04; + union { + s32 unk_08; + s32 *unk_08_ptr; + }; + s32 unk_0C; +} UnkM414Struct2; // size unknown + +typedef struct UnkM414Struct3 { + s32 unk_00; + s32 unk_04; + float unk_08; +} UnkM414Struct3; // size unknown + +s16 lbl_1_bss_A12; +s16 lbl_1_bss_A10; +s16 lbl_1_bss_990[16][4]; +s32 lbl_1_bss_98C; +s32 lbl_1_bss_97C[4]; +s32 lbl_1_bss_978; +s32 lbl_1_bss_938[16]; +s32 lbl_1_bss_930[2]; +float lbl_1_bss_920[4]; +float lbl_1_bss_910[4]; +UnkM414BssF0Struct lbl_1_bss_F0[4]; +Process *lbl_1_bss_E0[4]; +Process *lbl_1_bss_DC; +Vec lbl_1_bss_A0[5]; +Vec lbl_1_bss_64[5]; +Vec lbl_1_bss_28[5]; +omObjData *lbl_1_bss_24; +Vec lbl_1_bss_18; +Vec lbl_1_bss_C; +Vec lbl_1_bss_0; + +void fn_1_91C(omObjData *object); +void fn_1_1388(ModelData *arg0, ParticleData *arg1, Mtx arg2); +void fn_1_13C4(ModelData *arg0, ParticleData *arg1, Mtx arg2); +void fn_1_1400(ModelData *arg0, ParticleData *arg1, Mtx arg2); +void fn_1_143C(ModelData *arg0, ParticleData *arg1, Mtx arg2); +void fn_1_168C(ModelData *arg0, ParticleData *arg1, Mtx arg2); +void fn_1_16C8(ModelData *arg0, ParticleData *arg1, Mtx arg2); +void fn_1_1704(ModelData *arg0, ParticleData *arg1, Mtx arg2); +void fn_1_1740(ModelData *arg0, ParticleData *arg1, Mtx arg2); +void fn_1_1B58(ModelData *arg0, ParticleData *arg1, Mtx arg2); +void fn_1_1B94(ModelData *arg0, ParticleData *arg1, Mtx arg2); +void fn_1_1BD0(ModelData *arg0, ParticleData *arg1, Mtx arg2); +void fn_1_1C0C(ModelData *arg0, ParticleData *arg1, Mtx arg2); +void fn_1_1E04(); +void fn_1_3ECC(); +void fn_1_5780(UnkM414BssF0Struct *arg0, float arg8); +s32 fn_1_654C(s32 arg0, s32 arg1); +void fn_1_6644(); +void fn_1_8A10(); +void fn_1_8A70(); + +ParticleHook lbl_1_data_0[] = { fn_1_1388, fn_1_13C4, fn_1_1400, fn_1_143C }; + +ParticleHook lbl_1_data_10[] = { fn_1_168C, fn_1_16C8, fn_1_1704, fn_1_1740 }; + +ParticleHook lbl_1_data_20[] = { fn_1_1B58, fn_1_1B94, fn_1_1BD0, fn_1_1C0C }; + +s32 lbl_1_data_30[] = { 0, 1, 2, 3, 4, 5, 6, 7 }; + +s32 lbl_1_data_50[] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), DATA_MAKE_NUM(DATADIR_MARIOMOT, 79), DATA_MAKE_NUM(DATADIR_MARIOMOT, 72), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 23), DATA_MAKE_NUM(DATADIR_MARIOMOT, 24), DATA_MAKE_NUM(DATADIR_MARIOMOT, 54) }; + +float lbl_1_data_68[] = { 0.0f, 2.0f, 3.0f, 1.0f, 2.0f, 3.0f, 1.0f, 2.0f, 3.0f }; + +s32 lbl_1_data_8C[] = { 75, 64, 67, 79, 73, 80 }; + +s32 lbl_1_data_A4[] = { 230, 510, 230, 510 }; + +s32 lbl_1_data_B4[] = { 205, 205, 420, 420 }; + +s32 lbl_1_data_C4[][3] = { + // rgb color + { 254, 0, 0 }, + { 1, 0, 254 }, + { 255, 123, 222 }, + { 0, 255, 1 }, + { 175, 50, 240 }, + { 225, 127, 80 }, + { 255, 255, 1 }, + { 0, 0, 0 }, +}; + +void ModuleProlog(void) +{ + s32 var_r31; + s32 var_r30; + Process *var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + + var_r29 = omInitObjMan(50, 8192); + omGameSysInit(var_r29); + Hu3DCameraCreate(31); + Hu3DCameraPerspectiveSet(31, 30.0f, 20.0f, 25000.0f, 1.2f); + Hu3DCameraViewportSet(1, 10.0f, 20.0f, 309.0f, 219.0f, 0.0f, 1.0f); + Hu3DCameraViewportSet(2, 322.0f, 20.0f, 309.0f, 219.0f, 0.0f, 1.0f); + Hu3DCameraViewportSet(4, 10.0f, 242.0f, 309.0f, 219.0f, 0.0f, 1.0f); + Hu3DCameraViewportSet(8, 322.0f, 242.0f, 309.0f, 219.0f, 0.0f, 1.0f); + Hu3DCameraViewportSet(16, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(1, 10, 20, 309, 219); + Hu3DCameraScissorSet(2, 322, 20, 309, 219); + Hu3DCameraScissorSet(4, 10, 242, 309, 219); + Hu3DCameraScissorSet(8, 322, 242, 309, 219); + Hu3DCameraScissorSet(16, 0, 0, 640, 480); + lbl_1_bss_24 = omAddObjEx(var_r29, 32730, 0, 0, -1, fn_1_91C); + lbl_1_bss_24->work[0] = 4; + + for (var_r31 = 0; var_r31 < lbl_1_bss_24->work[0]; var_r31++) { + lbl_1_bss_920[var_r31] = 0.0f; + lbl_1_bss_910[var_r31] = 1900.0f; + lbl_1_bss_A0[var_r31].y = 455.0f; + lbl_1_bss_64[var_r31].x = var_r31 % 2 * 2000.0f; + lbl_1_bss_64[var_r31].z = var_r31 / 2 * 2000.0f; + lbl_1_bss_64[var_r31].y = 610.0f; + lbl_1_bss_28[var_r31].x = 0.0f; + lbl_1_bss_28[var_r31].y = 1.0f; + lbl_1_bss_28[var_r31].z = 0.0f; + } + Hu3DCameraPosSet(16, 0.0f, 265.0f, 180.0f, 0.0f, 1.0f, 0.0f, 0.0f, 265.0f, 0.0f); + Hu3DLighInit(); + lbl_1_bss_A12 = Hu3DGLightCreate(10000.0f, 0.0f, 10000.0f, -1.0f, 0.0f, -1.0f, 255, 255, 255); + Hu3DGLightPosAimSet(lbl_1_bss_A12, 0.0f, 4330.13f, 2500.0f, 0.0f, 0.0f, 0.0f); + Hu3DGLightInfinitytSet(lbl_1_bss_A12); + lbl_1_bss_18.x = 1000.0f; + lbl_1_bss_18.y = 7000.0f; + lbl_1_bss_18.z = 0.0f; + lbl_1_bss_C.x = lbl_1_bss_C.z = 0.0f; + lbl_1_bss_C.y = 1.0f; + lbl_1_bss_0.x = 1000.0f; + lbl_1_bss_0.y = 0.0f; + lbl_1_bss_0.z = 1000.0f; + Hu3DShadowCreate(30.0f, 20.0f, 50000.0f); + Hu3DShadowTPLvlSet(0.8f); + Hu3DShadowPosSet(&lbl_1_bss_18, &lbl_1_bss_C, &lbl_1_bss_0); + Hu3DBGColorSet(0, 0, 0); + lbl_1_bss_978 = frandmod(6); + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + lbl_1_bss_938[var_r31] = lbl_1_bss_978; + } + var_r30 = frandmod(6); + + for (; var_r31 < 16; var_r31++, var_r30++) { + if (var_r30 == lbl_1_bss_978) { + var_r30++; + } + if (var_r30 >= 6) { + if (lbl_1_bss_978 == 0) { + var_r30 = 1; + } else { + var_r30 = 0; + } + } + lbl_1_bss_938[var_r31] = var_r30; + } + for (var_r31 = 0; var_r31 < 50; var_r31++) { + var_r28 = frandmod(16); + var_r27 = frandmod(16); + var_r26 = lbl_1_bss_938[var_r28]; + lbl_1_bss_938[var_r28] = lbl_1_bss_938[var_r27]; + lbl_1_bss_938[var_r27] = var_r26; + } + fn_1_1E04(); + lbl_1_bss_DC = HuPrcChildCreate(fn_1_8A70, 4096, 8192, 0, HuPrcCurrentGet()); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); +} + +void fn_1_91C(omObjData *object) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < object->work[0]; var_r31++) { + lbl_1_bss_A0[var_r31].x = (var_r31 % 2 * 2000.0f) + (lbl_1_bss_910[var_r31] * sind(lbl_1_bss_920[var_r31])); + lbl_1_bss_A0[var_r31].z = (var_r31 / 2 * 2000.0f) + (lbl_1_bss_910[var_r31] * cosd(lbl_1_bss_920[var_r31])); + + Hu3DCameraPosSet(1 << var_r31, lbl_1_bss_A0[var_r31].x, lbl_1_bss_A0[var_r31].y, lbl_1_bss_A0[var_r31].z, lbl_1_bss_28[var_r31].x, + lbl_1_bss_28[var_r31].y, lbl_1_bss_28[var_r31].z, lbl_1_bss_64[var_r31].x, lbl_1_bss_64[var_r31].y, lbl_1_bss_64[var_r31].z); + } +} + +void fn_1_B84(void) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + + UnkM414Struct3 *var_r31; + s32 var_r30; + + var_r31 = HuPrcCurrentGet()->user_data; + if (!var_r31->unk_00) { + var_f29 = lbl_1_bss_A0[var_r31->unk_04].y; + var_f28 = lbl_1_bss_64[var_r31->unk_04].y; + + for (var_r30 = 0, var_f31 = 0.0f; var_r30 < 10; var_r30++, var_f31 += 36.0f) { + var_f30 = var_r31->unk_08 * sind(var_f31); + lbl_1_bss_A0[var_r31->unk_04].y = var_f29 + var_f30; + lbl_1_bss_64[var_r31->unk_04].y = var_f28 + var_f30; + HuPrcVSleep(); + } + lbl_1_bss_A0[var_r31->unk_04].y = var_f29; + lbl_1_bss_64[var_r31->unk_04].y = var_f28; + } + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_CD8(s32 arg0, s32 arg1, float arg8) +{ + UnkM414Struct3 sp14; + UnkM414Struct3 *var_r31; + Process *var_r30; + + var_r31 = &sp14; + var_r30 = HuPrcChildCreate(fn_1_B84, 8192, 8192, 0, HuPrcCurrentGet()); + var_r30->user_data = var_r31; + var_r31->unk_00 = arg0; + var_r31->unk_04 = arg1; + var_r31->unk_08 = arg8; +} + +void fn_1_D54(ModelData *arg0, ParticleData *arg1, Mtx arg2, s32 arg3) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + double var_f27; + + HsfanimStruct01 *var_r31; + UnkM414BssF0Struct *var_r30; + s16 var_r28; + s16 var_r27; + s16 var_r26; + s32 var_r25; + + if (arg1->unk_34 == 0) { + var_r31 = arg1->unk_48; + + for (var_r28 = 0; var_r28 < arg1->unk_30; var_r28++, var_r31++) { + var_r31->unk14.x = var_r31->unk2C = 0.0f; + } + } + var_r31 = arg1->unk_48; + var_r30 = &lbl_1_bss_F0[arg3]; + if (var_r30->unk_54 == 1) { + for (var_r27 = 0; var_r27 < 2; var_r27++) { + var_f28 = 2.4f; + for (var_r26 = 0, var_f29 = 0.0f; var_r26 < 4; var_r26++, var_f29 += 90.0f) { + for (var_r28 = 0; var_r28 < arg1->unk_30; var_r28++, var_r31++) { + if (0.0f == var_r31->unk14.x) { + break; + } + } + if (var_r28 == arg1->unk_30) { + break; + } + var_f31 = var_f29 + frandmod(70); + var_f30 = var_f28 + (3.6f * frandf()); + var_r31->unk34.x = var_r30->unk_7C + ((20.0f * var_r27) * (sind(var_f31) * cosd(lbl_1_bss_920[var_r30->unk_44]))); + var_r31->unk34.y = var_r30->unk_80 + ((20.0f * var_r27) * cosd(var_f31)); + var_r31->unk34.z = var_r30->unk_84 + (-(20.0f * var_r27) * (sind(lbl_1_bss_920[var_r30->unk_44]) * sind(var_f31))); + var_r31->unk08.x = var_f30 * (sind(var_f31) * cosd(lbl_1_bss_920[var_r30->unk_44])); + var_r31->unk08.y = var_f30 * cosd(var_f31); + var_r31->unk08.z = -var_f30 * (sind(lbl_1_bss_920[var_r30->unk_44]) * sind(var_f31)); + var_r31->unk14.x = 30.0f; + var_r31->unk2C = 40.0f + (20.0f * frandf()); + var_r31->unk40.r = frandmod(20) + 235; + var_r31->unk40.g = frandmod(50) + 205; + var_r31->unk40.b = frandmod(50); + var_r31->unk40.a = 255; + } + } + var_r30->unk_54++; + } + var_r31 = arg1->unk_48; + for (var_r28 = 0; var_r28 < arg1->unk_30; var_r28++, var_r31++) { + if (0.0f != var_r31->unk14.x) { + PSVECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); + if (var_r31->unk14.x > 10.0f) { + var_r31->unk14.x = var_r31->unk14.x - 1.0f; + } + if (10.0f == var_r31->unk14.x) { + var_r25 = var_r31->unk40.a - 25; + if (var_r25 < 0) { + var_r25 = 0; + var_r31->unk14.x = 0.0f; + } + var_r31->unk40.a = var_r25; + } + if (0.0f == var_r31->unk14.x) { + var_r31->unk2C = 0.0f; + } + } + } +} + +void fn_1_1388(ModelData *arg0, ParticleData *arg1, Mtx arg2) +{ + fn_1_D54(arg0, arg1, arg2, 0); +} + +void fn_1_13C4(ModelData *arg0, ParticleData *arg1, Mtx arg2) +{ + fn_1_D54(arg0, arg1, arg2, 1); +} + +void fn_1_1400(ModelData *arg0, ParticleData *arg1, Mtx arg2) +{ + fn_1_D54(arg0, arg1, arg2, 2); +} + +void fn_1_143C(ModelData *arg0, ParticleData *arg1, Mtx arg2) +{ + fn_1_D54(arg0, arg1, arg2, 3); +} + +void fn_1_1478(ModelData *arg0, ParticleData *arg1, Mtx arg2, s32 arg3) +{ + HsfanimStruct01 *var_r31; + s16 var_r30; + UnkM414BssF0Struct *var_r29; + s32 var_r28; + + if (arg1->unk_34 == 0) { + var_r31 = arg1->unk_48; + for (var_r30 = 0; var_r30 < arg1->unk_30; var_r30++, var_r31++) { + var_r31->unk14.x = var_r31->unk2C = 0.0f; + } + } + var_r31 = arg1->unk_48; + var_r29 = &lbl_1_bss_F0[arg3]; + if (var_r29->unk_54 == 2) { + for (var_r30 = 0; var_r30 < arg1->unk_30; var_r30++, var_r31++) { + if (0.0f == var_r31->unk14.x) { + break; + } + } + if (var_r30 != arg1->unk_30) { + var_r31->unk34.x = var_r29->unk_7C; + var_r31->unk34.y = var_r29->unk_80; + var_r31->unk34.z = var_r29->unk_84; + var_r31->unk14.x = 30.0f; + var_r31->unk2C = 300.0f; + var_r31->unk40.r = 255; + var_r31->unk40.g = 255; + var_r31->unk40.b = 255; + var_r31->unk40.a = 255; + } + var_r29->unk_54++; + } + var_r31 = arg1->unk_48; + for (var_r30 = 0; var_r30 < arg1->unk_30; var_r30++, var_r31++) { + if (0.0f != var_r31->unk14.x) { + if (var_r31->unk14.x > 25.0f) { + var_r31->unk14.x -= 1.0f; + } + if (25.0f == var_r31->unk14.x) { + var_r28 = var_r31->unk40.a - 25; + if (var_r28 < 0) { + var_r28 = 0; + var_r31->unk14.x = 0.0f; + } + var_r31->unk40.a = var_r28; + } + if (0.0f == var_r31->unk14.x) { + var_r31->unk2C = 0.0f; + } + } + } +} + +void fn_1_168C(ModelData *arg0, ParticleData *arg1, Mtx arg2) +{ + fn_1_1478(arg0, arg1, arg2, 0); +} + +void fn_1_16C8(ModelData *arg0, ParticleData *arg1, Mtx arg2) +{ + fn_1_1478(arg0, arg1, arg2, 1); +} + +void fn_1_1704(ModelData *arg0, ParticleData *arg1, Mtx arg2) +{ + fn_1_1478(arg0, arg1, arg2, 2); +} + +void fn_1_1740(ModelData *arg0, ParticleData *arg1, Mtx arg2) +{ + fn_1_1478(arg0, arg1, arg2, 3); +} + +void fn_1_177C(ModelData *arg1, ParticleData *arg2, Mtx arg3, s32 arg4) +{ + float var_f31; + float var_f30; + + HsfanimStruct01 *var_r31; + UnkM414BssF0Struct *var_r29; + s16 var_r28; + s16 var_r27; + s32 var_r26; + + if (arg2->unk_34 == 0) { + var_r31 = arg2->unk_48; + for (var_r28 = 0; var_r28 < arg2->unk_30; var_r28++, var_r31++) { + var_r31->unk14.x = var_r31->unk2C = 0.0f; + } + } + var_r31 = arg2->unk_48; + var_r29 = &lbl_1_bss_F0[arg4]; + if (var_r29->unk_54 == 3) { + for (var_r27 = 0, var_f30 = 0.0f; var_r27 < 8; var_r27++, var_f30 += 45.0f) { + for (var_r28 = 0; var_r28 < arg2->unk_30; var_r28++, var_r31++) { + if (0.0f == var_r31->unk14.x) { + break; + } + } + if (var_r28 == arg2->unk_30) { + break; + } + var_f31 = var_f30 + frandmod(30); + var_r31->unk34.x = var_r29->unk_7C + (120.0 * (sind(var_f31) * cosd(lbl_1_bss_920[var_r29->unk_44]))); + var_r31->unk34.y = var_r29->unk_80 + (120.0 * cosd(var_f31)); + var_r31->unk34.z = var_r29->unk_84 + (-120.0 * (sind(lbl_1_bss_920[var_r29->unk_44]) * sind(var_f31))); + var_r31->unk30 = (M_PI * (360.0f - var_f31)) / 180.0; + var_r31->unk14.x = 30.0f; + var_r31->unk2C = 50.0f; + var_r31->unk40.r = 255; + var_r31->unk40.g = 255; + var_r31->unk40.b = 0; + var_r31->unk40.a = 255; + } + var_r29->unk_54++; + } + var_r31 = arg2->unk_48; + for (var_r28 = 0; var_r28 < arg2->unk_30; var_r28++, var_r31++) { + if (0.0f != var_r31->unk14.x) { + var_r26 = var_r31->unk40.a - 8; + if (var_r26 < 0) { + var_r26 = 0; + var_r31->unk14.x = 0.0f; + } + var_r31->unk40.a = var_r26; + if (0.0f == var_r31->unk14.x) { + var_r31->unk2C = 0.0f; + } + } + } +} + +void fn_1_1B58(ModelData *arg0, ParticleData *arg1, Mtx arg2) +{ + fn_1_177C(arg0, arg1, arg2, 0); +} + +void fn_1_1B94(ModelData *arg0, ParticleData *arg1, Mtx arg2) +{ + fn_1_177C(arg0, arg1, arg2, 1); +} + +void fn_1_1BD0(ModelData *arg0, ParticleData *arg1, Mtx arg2) +{ + fn_1_177C(arg0, arg1, arg2, 2); +} + +void fn_1_1C0C(ModelData *arg0, ParticleData *arg1, Mtx arg2) +{ + fn_1_177C(arg0, arg1, arg2, 3); +} + +void fn_1_1C48(void) +{ + UnkM414Struct *var_r31; + + var_r31 = HuPrcCurrentGet()->user_data; + if (var_r31->unk_44 & 1) { + HuAudFXPlay(1446); + } else { + HuAudFXPlay(1445); + } + var_r31->unk_54 = 1; + var_r31->unk_7C = -800.0 * sind(lbl_1_bss_920[var_r31->unk_44]); + var_r31->unk_80 = var_r31->unk_138[var_r31->unk_1F8].x; + var_r31->unk_84 = -800.0 * cosd(lbl_1_bss_920[var_r31->unk_44]); + var_r31->unk_7C += 2000.0f * (var_r31->unk_44 % 2); + var_r31->unk_84 += 2000.0f * (var_r31->unk_44 / 2); + HuPrcSleep(30); + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_1E04(void) +{ + s32 sp18[6]; + AnimData *sp8[4]; + + float var_f31; + float var_f30; + float var_f29; + float var_f28; + + UnkM414BssF0Struct *var_r31; + s16 var_r30; + s32 var_r29; + s32 var_r28; + void *var_r27; + Process *var_r26; + AnimData *var_r25; + s16 var_r24; + s16 var_r23; + s16 var_r22; + AnimData *var_r21; + + HuAudSndGrpSet(39); + for (var_r28 = 0; var_r28 < 4; var_r28++) { + var_r31 = &lbl_1_bss_F0[var_r28]; + var_r31->unk_44 = var_r28; + var_r31->unk_48 = var_r28; + var_r31->unk_4C = GWPlayerCfg[var_r28].pad_idx; + if (!var_r28) { + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 8), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r27); + var_r22 = var_r30; + } else { + var_r30 = Hu3DModelLink(var_r22); + } + Hu3DModelCameraSet(var_r30, 15); + Hu3DModelPosSet(var_r30, 2000.0f * (var_r28 % 2), 0.0f, 2000.0f * (var_r28 / 2)); + for (var_r29 = 0; var_r29 < 9; var_r29++) { + if (!var_r28 && !var_r29) { + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 0), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r27); + var_r24 = var_r30; + } else { + var_r30 = Hu3DModelLink(var_r24); + } + var_r31->unk_30[var_r29] = var_r30; + Hu3DModelCameraSet(var_r30, 1 << var_r31->unk_48); + Hu3DModelShadowMapSet(var_r30); + Hu3DModelAttrSet(var_r30, 0x4000); + Hu3DModelRotSet(var_r30, 0.0f, 40.0f * var_r29, 0.0f); + Hu3DModelPosSet(var_r30, 2000.0f * (var_r28 % 2), 0.0f, 2000.0f * (var_r28 / 2)); + } + if (!var_r28) { + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 5), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r27); + } else { + var_r30 = Hu3DModelLink(lbl_1_bss_F0[0].unk_42); + } + var_r31->unk_42 = var_r30; + Hu3DModelCameraSet(var_r30, 1 << var_r31->unk_48); + Hu3DModelShadowMapSet(var_r30); + Hu3DModelAttrSet(var_r30, 1); + Hu3DModelPosSet(var_r30, 2000.0f * (var_r28 % 2), 0.0f, 2000.0f * (var_r28 / 2)); + for (var_r29 = 0; var_r29 < 9; var_r29++) { + if (!var_r28) { + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 1) + lbl_1_data_68[var_r29], MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r27); + } else { + var_r30 = Hu3DModelLink(lbl_1_bss_F0->unk_00[var_r29]); + } + var_r31->unk_00[var_r29] = var_r30; + Hu3DModelRotSet(var_r30, 0.0f, 40.0f * var_r29, 0.0f); + Hu3DModelCameraSet(var_r30, 1 << var_r31->unk_48); + Hu3DModelAttrSet(var_r30, 0x4000); + Hu3DModelPosSet(var_r30, 2000.0f * (var_r28 % 2), 0.0f, 2000.0f * (var_r28 / 2)); + Hu3DModelAttrSet(var_r30, 0x40000002); + } + for (var_r29 = 0; var_r29 < 16; var_r29++) { + if (!var_r28 && !var_r29) { + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 6), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r27); + var_r23 = var_r30; + } else { + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 6), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r27); + var_r23 = var_r30; + } + Hu3DModelCameraSet(var_r30, 1 << var_r31->unk_48); + var_r31->unk_D4[var_r29] = var_r30; + Hu3DModelPosSet(var_r30, 2000.0f * (var_r28 % 2), 330.0f - (330.0f * (var_r29 & 1)), 2000.0f * (var_r28 / 2)); + Hu3DModelRotSet(var_r30, 0.0f, 40.0f * ((var_r29 + 2) / 2), 0.0f); + Hu3DModelAttrSet(var_r30, 0x4000); + Hu3DModelAttrSet(var_r30, 0x40000082); + Hu3DMotionSpeedSet(var_r30, 3.0f); + Hu3DMotionShapeSpeedSet(var_r30, 3.0f); + } + if (!var_r28) { + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 9), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r27); + } else { + var_r30 = Hu3DModelLink(lbl_1_bss_F0[0].unk_20); + } + var_r31->unk_20 = var_r30; + Hu3DModelPosSet(var_r30, 2000.0f * (var_r28 % 2), 0.0f, 2000.0f * (var_r28 / 2)); + Hu3DModelCameraSet(var_r30, 1 << var_r31->unk_48); + Hu3DModelShadowMapObjSet(var_r30, "m414_11_R-dai_1"); + for (var_r29 = 0; var_r29 < 5; var_r29++) { + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 10) + var_r29, MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r31->unk_22[var_r29] = Hu3DJointMotion(var_r30, var_r27); + } + Hu3DMotionSet(var_r30, var_r31->unk_22[0]); + Hu3DMotionTimeSet(var_r30, 0.0f); + Hu3DModelAttrSet(var_r30, 0x40000002); + Hu3DMotionSpeedSet(var_r30, 2.0f); + + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 15), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r21 = HuSprAnimRead(var_r27); + var_r30 = HuSprCreate(var_r21, 0x4000, 0); + var_r31->unk_2C = HuSprGrpCreate(1); + HuSprGrpMemberSet(var_r31->unk_2C, 0, var_r30); + HuSprAttrSet(var_r31->unk_2C, 0, 4); + HuSprColorSet(var_r31->unk_2C, 0, lbl_1_data_C4[GWPlayerCfg[var_r28].character][0], lbl_1_data_C4[GWPlayerCfg[var_r28].character][1], + lbl_1_data_C4[GWPlayerCfg[var_r28].character][2]); + HuSprTPLvlSet(var_r31->unk_2C, 0, 0.9f); + HuSprGrpPosSet(var_r31->unk_2C, 320.0f, 240.0f); + if (!var_r28) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 16) + var_r29, MEMORY_DEFAULT_NUM, HEAP_DATA); + sp8[var_r29] = HuSprAnimRead(var_r27); + } + } + var_r31->unk_2E = HuSprGrpCreate(8); + var_r30 = HuSprCreate(sp8[2], 0x4000, 0); + HuSprGrpMemberSet(var_r31->unk_2E, 0, var_r30); + HuSprPosSet(var_r31->unk_2E, 0, 0.0f, 0.0f); + var_r30 = HuSprCreate(sp8[3], 0x4000, 0); + HuSprGrpMemberSet(var_r31->unk_2E, 1, var_r30); + HuSprPosSet(var_r31->unk_2E, 1, 0.0f, 0.0f); + HuSprTPLvlSet(var_r31->unk_2E, 1, 0.5f); + + for (var_r29 = 2; var_r29 < 8; var_r29++) { + var_r30 = HuSprCreate(sp8[var_r29 & 1], 0x4000, 0); + HuSprGrpMemberSet(var_r31->unk_2E, var_r29, var_r30); + if (var_r29 & 1) { + HuSprAttrSet(var_r31->unk_2E, var_r29, 4); + } + HuSprPosSet(var_r31->unk_2E, var_r29, -62.0f + (30.0f * (var_r29 / 2)), -2.0f); + } + HuSprGrpPosSet(var_r31->unk_2E, lbl_1_data_A4[var_r31->unk_44], lbl_1_data_B4[var_r31->unk_44]); + HuSprGrpScaleSet(var_r31->unk_2E, 0.0f, 0.0f); + var_f31 = 0.0f; + if (!var_r28) { + for (var_r29 = 0; var_r29 < 6; var_r29++) { + sp18[var_r29] = -1; + } + } + var_f31 += 40.0f; + for (var_r29 = 0; var_r29 < 16; var_r29++) { + if (!var_r28) { + if (sp18[lbl_1_bss_938[var_r29]] == -1) { + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 22) + lbl_1_bss_938[var_r29], MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r27); + sp18[lbl_1_bss_938[var_r29]] = var_r30; + } else { + var_r30 = Hu3DModelLink(sp18[lbl_1_bss_938[var_r29]]); + } + } else { + var_r30 = Hu3DModelLink(sp18[lbl_1_bss_938[var_r29]]); + } + var_r31->unk_94[var_r29] = var_r30; + var_r31->unk_F4[var_r29] = 0; + Hu3DModelCameraSet(var_r30, 1 << var_r31->unk_48); + Hu3DModelAttrSet(var_r30, 0x40000001); + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 34) + lbl_1_bss_938[var_r29], MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r31->unk_B4[var_r29] = Hu3DJointMotion(var_r30, var_r27); + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 28) + lbl_1_bss_938[var_r29], MEMORY_DEFAULT_NUM, HEAP_DATA); + Hu3DMotionSet(var_r30, Hu3DJointMotion(var_r30, var_r27)); + Hu3DModelAttrSet(var_r30, 0x40000001); + Hu3DModelAttrSet(var_r30, 0x4000); + var_f29 = -950.0 * sind(var_f31); + var_f29 = var_f29; + var_f28 = -950.0 * cosd(var_f31); + var_f28 = var_f28; + if (var_r29 & 1) { + var_f30 = 220.0f; + var_f31 += 40.0f; + } else { + var_f30 = 570.0f; + } + if (!lbl_1_bss_938[var_r29]) { + var_f30 += 70.0f; + } + HuSetVecF(&var_r31->unk_134[var_r29], var_f29, var_f30, var_f28); + if (lbl_1_bss_938[var_r29]) { + (void)var_r29; + } else { + (void)var_r29; + } + Hu3DModelPosSet(var_r30, var_f29 + (2000.0f * (var_r28 % 2)), var_f30, var_f28 + (2000.0f * (var_r28 / 2))); + Hu3DModelRotSet(var_r30, 0.0f, atan2d(-var_f29, -var_f28), 0.0f); + if (lbl_1_bss_938[var_r29] == 4 || lbl_1_bss_938[var_r29] == 5) { + Hu3DModelScaleSet(var_r30, 0.6f, 0.6f, 0.6f); + } + if (lbl_1_bss_938[var_r29] == 2) { + Hu3DModelScaleSet(var_r30, 1.2f, 1.2f, 1.2f); + } + } + fn_1_5780(var_r31, lbl_1_bss_920[var_r31->unk_44]); + var_r31->unk_12 = CharModelCreate(lbl_1_data_30[GWPlayerCfg[var_r28].character], 8); + Hu3DModelCameraSet(var_r31->unk_12, 1 << var_r31->unk_48); + var_r31->unk_6C = var_r31->unk_74 = var_r31->unk_70 = 0.0f; + var_r31->unk_90 = 0.0f; + var_r31->unk_60 = 37.0 * sind(var_r31->unk_70); + var_r31->unk_64 = 70.0f; + var_r31->unk_68 = 37.0 * cosd(var_r31->unk_70); + Hu3DModelPosSet(var_r31->unk_12, var_r31->unk_60 + (2000.0f * (var_r28 % 2)), var_r31->unk_64, var_r31->unk_68 + (2000.0f * (var_r28 / 2))); + Hu3DModelRotSet(var_r31->unk_12, var_r31->unk_6C, var_r31->unk_70, var_r31->unk_74); + Hu3DModelShadowSet(var_r31->unk_12); + for (var_r29 = 0; var_r29 < 6; var_r29++) { + var_r31->unk_14[var_r29] = CharModelMotionCreate(lbl_1_data_30[GWPlayerCfg[var_r28].character], lbl_1_data_50[var_r29]); + } + CharModelMotionSet(lbl_1_data_30[GWPlayerCfg[var_r28].character], var_r31->unk_14[0]); + Hu3DModelAttrSet(var_r31->unk_12, 0x40000001); + CharModelMotionDataClose(lbl_1_data_30[GWPlayerCfg[var_r28].character]); + + var_r25 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_EFFECT, 0), MEMORY_DEFAULT_NUM)); + HuDataDirClose(DATA_MAKE_NUM(DATADIR_EFFECT, 0)); + var_r30 = Hu3DParticleCreate(var_r25, 100); + Hu3DModelPosSet(var_r30, 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(var_r30, 1.0f, 1.0f, 1.0f); + Hu3DModelLayerSet(var_r30, 1); + Hu3DParticleColSet(var_r30, 255, 255, 0); + Hu3DParticleScaleSet(var_r30, 0.0f); + Hu3DParticleHookSet(var_r30, lbl_1_data_0[var_r31->unk_44]); + Hu3DModelCameraSet(var_r30, 1 << var_r31->unk_48); + + var_r25 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M414, 20), MEMORY_DEFAULT_NUM)); + var_r30 = Hu3DParticleCreate(var_r25, 1); + Hu3DModelPosSet(var_r30, 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(var_r30, 1.0f, 1.0f, 1.0f); + Hu3DModelLayerSet(var_r30, 1); + Hu3DParticleColSet(var_r30, 255, 255, 255); + Hu3DParticleScaleSet(var_r30, 0.0f); + Hu3DParticleHookSet(var_r30, lbl_1_data_10[var_r31->unk_44]); + Hu3DModelCameraSet(var_r30, 1 << var_r31->unk_48); + + var_r25 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M414, 21), MEMORY_DEFAULT_NUM)); + var_r30 = Hu3DParticleCreate(var_r25, 8); + Hu3DModelPosSet(var_r30, 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(var_r30, 1.0f, 1.0f, 1.0f); + Hu3DModelLayerSet(var_r30, 1); + Hu3DParticleColSet(var_r30, 255, 255, 0); + Hu3DParticleScaleSet(var_r30, 0.0f); + Hu3DParticleHookSet(var_r30, lbl_1_data_20[var_r31->unk_44]); + Hu3DModelCameraSet(var_r30, 1 << var_r31->unk_48); + var_r26 = HuPrcChildCreate(fn_1_6644, 8192, 12288, 0, HuPrcCurrentGet()); + var_r26->user_data = var_r31; + lbl_1_bss_E0[var_r28] = var_r26; + } + for (var_r28 = 0; var_r28 < 4; var_r28++) { + var_r31 = &lbl_1_bss_F0[var_r28]; + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 40), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r27); + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 41) + lbl_1_bss_978, MEMORY_DEFAULT_NUM, HEAP_DATA); + Hu3DAnimCreate(var_r27, var_r30, "gsp000"); + Hu3DModelPosSet(var_r30, 2000.0f * (var_r28 % 2), 520.0f, -820.0f + (2000.0f * (var_r28 / 2))); + Hu3DModelCameraSet(var_r30, 1 << var_r31->unk_48); + } + for (var_r28 = 0; var_r28 < 16; var_r28++) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + lbl_1_bss_990[var_r28][var_r29] = frandmod(120) + 60; + } + } + for (var_r28 = 0; var_r28 < 4; var_r28++) { + for (var_r29 = 0; var_r29 < 16; var_r29++) { + var_r26 = HuPrcChildCreate(fn_1_3ECC, 8192, 4096, 0, HuPrcCurrentGet()); + var_r26->user_data = (void *)(var_r29 + (var_r28 << 16)); + } + } + + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 7), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r27); + lbl_1_bss_A10 = var_r30; + Hu3DModelScaleSet(var_r30, 0.5f, 0.5f, 0.5f); + Hu3DModelCameraSet(var_r30, 16); + Hu3DModelAttrSet(var_r30, 0x40000002); + + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 40), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r27); + + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 41) + lbl_1_bss_978, MEMORY_DEFAULT_NUM, HEAP_DATA); + Hu3DAnimCreate(var_r27, var_r30, "gsp000"); + Hu3DModelPosSet(var_r30, 0.0f, 260.0f, -410.0f); + Hu3DModelScaleSet(var_r30, 0.5f, 0.5f, 0.5f); + Hu3DModelCameraSet(var_r30, 16); + HuPrcChildCreate(fn_1_8A10, 4096, 4096, 0, HuPrcCurrentGet()); +} + +void fn_1_397C(void) +{ + float var_f31; + + s32 var_r31; + UnkM414BssF0Struct *var_r30; + s32 var_r29; + + for (var_r29 = 0, var_f31 = 0.0f; var_r29 < 15; var_r29++) { + var_f31 += 0.06666667f; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = &lbl_1_bss_F0[var_r31]; + HuSprGrpScaleSet(var_r30->unk_2E, var_f31, var_f31); + } + HuPrcVSleep(); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = &lbl_1_bss_F0[var_r31]; + HuSprGrpScaleSet(var_r30->unk_2E, 1.0f, 1.0f); + } + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_3A58(void) +{ + float var_f31; + s32 var_r29; + s32 var_r31; + UnkM414BssF0Struct *var_r30; + + for (var_r29 = 0, var_f31 = 1.0f; var_r29 < 15; var_r29++) { + var_f31 -= 0.06666667f; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = &lbl_1_bss_F0[var_r31]; + HuSprGrpScaleSet(var_r30->unk_2E, var_f31, var_f31); + } + HuPrcVSleep(); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = &lbl_1_bss_F0[var_r31]; + HuSprGrpScaleSet(var_r30->unk_2E, 0.0f, 0.0f); + } + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_3B34(void) +{ + float var_f31; + float var_f30; + double var_f29; + + UnkM414BssF0Struct *var_r31; + s32 var_r30; + s32 var_r29; + + var_r31 = HuPrcCurrentGet()->user_data; + HuAudFXPlay(9); + for (var_r30 = 30; var_r30 != 0; var_r30--) { + var_f31 = 1.0f - ((var_r30 - 1) / 30.0f); + var_f31 = (0.5 * var_f31) + (0.5 * (1.0f - ((1.0f - var_f31) * (1.0f - var_f31)))); + if (var_f31 < 0.75) { + var_f29 = var_f31 / 0.75; + } else { + var_f29 = 1.0; + } + var_f30 = var_f29; + var_f31 = 1.0f - ((1.0f - var_f31) * (1.0f - var_f31)); + var_f30 = 1.0f - ((1.0f - var_f30) * (1.0f - var_f30)); + var_r29 = (var_r31->unk_5C * 2) + 3; + HuSprTPLvlSet(var_r31->unk_2E, var_r29, var_f30); + HuSprScaleSet(var_r31->unk_2E, var_r29, 4.0f - (3.0f * var_f31), 4.0f - (3.0f * var_f31)); + HuPrcVSleep(); + } + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_3D48(s32 arg0, s32 arg1) +{ + UnkM414BssF0Struct *var_r31; + s32 var_r30; + Process *var_r29; + s32 var_r28; + + var_r31 = &lbl_1_bss_F0[arg0]; + var_r28 = lbl_1_bss_97C[var_r31->unk_44]; + if (arg1 == 0) { + lbl_1_bss_97C[var_r31->unk_44]++; + } else { + lbl_1_bss_97C[var_r31->unk_44]--; + } + for (var_r30 = 0; var_r30 < 3; var_r30++) { + if (var_r30 < lbl_1_bss_97C[var_r31->unk_44]) { + if (arg1 == 0 && var_r28 == var_r30) { + var_r29 = HuPrcChildCreate(fn_1_3B34, 8192, 8192, 0, lbl_1_bss_DC); + var_r29->user_data = var_r31; + var_r31->unk_5C = var_r30; + } + HuSprAttrSet(var_r31->unk_2E, (var_r30 * 2) + 2, 4); + HuSprAttrReset(var_r31->unk_2E, (var_r30 * 2) + 3, 4); + } else { + HuSprAttrReset(var_r31->unk_2E, (var_r30 * 2) + 2, 4); + HuSprAttrSet(var_r31->unk_2E, (var_r30 * 2) + 3, 4); + } + } +} + +void fn_1_3ECC(void) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + + UnkM414BssF0Struct *var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + + var_r30 = (s32)HuPrcCurrentGet()->user_data; + var_r27 = (var_r30 >> 16); + var_r30 = (u16)var_r30; + + while (lbl_1_bss_98C == 0) { + HuPrcVSleep(); + } + var_r31 = &lbl_1_bss_F0[var_r27]; + var_r29 = 0; + while (TRUE) { + HuPrcSleep(lbl_1_bss_990[var_r30][var_r29++]); + if (var_r29 >= 4) { + var_r29 = 0; + } + if (var_r31->unk_1F8 == var_r30) { + continue; + } + if (lbl_1_bss_98C == 5) { + break; + } + + var_f31 = 40.0f * ((var_r30 + 2) / 2); + if (var_r31->unk_70 - var_f31 >= 0.0f) { + var_f29 = var_r31->unk_70 - var_f31; + } else { + var_f29 = -(var_r31->unk_70 - var_f31); + } + if (var_f29 < 45.0f || (0.0f == var_r31->unk_70 && var_r30 >= 14)) { + if (var_r30 == fn_1_654C(var_r31->unk_44, 0) || var_r30 == fn_1_654C(var_r31->unk_44, 1)) { + if (var_r31->unk_44 & 1) { + HuAudFXPlay(1434); + } else { + HuAudFXPlay(1433); + } + } else { + HuAudFXPlay(1450); + } + } + Hu3DModelAttrReset(var_r31->unk_D4[var_r30], 0x40000186); + do { + var_r28 = lbl_1_bss_990[var_r30][var_r29++]; + if (var_r29 >= 4) { + var_r29 = 0; + } + while (var_r28) { + if (lbl_1_bss_98C == 5) { + break; + } + HuPrcVSleep(); + var_r28--; + } + } while (lbl_1_bss_98C != 5 && var_r31->unk_1F8 != -1 && lbl_1_bss_978 == lbl_1_bss_938[var_r31->unk_1F8]); + + Hu3DModelAttrReset(var_r31->unk_D4[var_r30], 0x40000082); + Hu3DModelAttrSet(var_r31->unk_D4[var_r30], 0x40000104); + HuPrcSleep(10); + var_f30 = 40.0f * ((var_r30 + 2) / 2); + if (var_r31->unk_70 - var_f30 >= 0.0f) { + var_f28 = var_r31->unk_70 - var_f30; + } else { + var_f28 = -(var_r31->unk_70 - var_f30); + } + if (var_f28 < 45.0f || (0.0f == var_r31->unk_70 && var_r30 >= 14)) { + if (var_r30 == fn_1_654C(var_r31->unk_44, 0) || var_r30 == fn_1_654C(var_r31->unk_44, 1)) { + if (var_r31->unk_44 & 1) { + HuAudFXPlay(1436); + } else { + HuAudFXPlay(1435); + } + } else { + HuAudFXPlay(1452); + } + } + } + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_42AC(void) +{ + s32 sp8[1]; + + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + float var_f24; + float var_f23; + float var_f22; + + UnkM414BssF0Struct *var_r31; + UnkM414Struct2 *var_r30; + s32 var_r28; + s32 var_r27; + + var_r30 = HuPrcCurrentGet()->user_data; + var_r31 = var_r30->unk_00; + var_r27 = var_r30->unk_00->unk_44; + HuPrcSleep(30); + if (var_r31->unk_44 & 1) { + HuAudFXPlay(1444); + } else { + HuAudFXPlay(1443); + } + if (var_r31->unk_44 & 1) { + HuAudFXPlay(1448); + } else { + HuAudFXPlay(1447); + } + if (var_r30->unk_08) { + var_f24 = -200.0 * (sind(lbl_1_bss_920[var_r27]) * cos(0.0)); + var_f26 = 150.0 + (-200.0 * sin(0.0)); + var_f23 = -200.0 * (cos(0.0) * cosd(lbl_1_bss_920[var_r27])); + } else { + var_f24 = -200.0 * (sind(lbl_1_bss_920[var_r27]) * cos(0.3490658503988659)); + var_f26 = 150.0 + (-200.0 * sin(-0.3490658503988659)); + var_f23 = -200.0 * (cos(-0.3490658503988659) * cosd(lbl_1_bss_920[var_r27])); + } + if (!lbl_1_bss_938[var_r30->unk_04]) { + var_f26 += 70.0f; + } + var_f31 = var_r31->unk_134[var_r30->unk_04].x; + var_f30 = var_r31->unk_134[var_r30->unk_04].y; + var_f29 = var_r31->unk_134[var_r30->unk_04].z; + + var_f28 = (var_f24 - var_f31) / 30.0f; + var_f22 = (var_f26 - var_f30) / 30.0f; + var_f27 = (var_f23 - var_f29) / 30.0f; + + for (var_r28 = 0; var_r28 < 30; var_r28++) { + var_f31 += var_f28; + var_f30 += var_f22; + var_f29 += var_f27; + Hu3DModelPosSet(var_r31->unk_94[var_r30->unk_04], var_f31 + (2000.0f * (var_r27 % 2)), var_f30, var_f29 + (2000.0f * (var_r27 / 2))); + HuPrcVSleep(); + } + HuPrcSleep(10); + HuAudFXPlay(lbl_1_data_8C[lbl_1_bss_978]); + var_f28 = 500.0 * sind(lbl_1_bss_920[var_r27] - 20.0f); + var_f28 = var_f28; + var_f27 = 500.0 * cosd(lbl_1_bss_920[var_r27] - 20.0f); + var_f27 = var_f27; + var_f28 /= 30.0f; + var_f27 /= 30.0f; + + for (var_r28 = 0, var_f25 = -20.0f; var_r28 < 30.0f; var_r28++) { + var_f31 += var_f28; + var_f30 -= var_f25; + var_f29 += var_f27; + var_f25 += 2.0f; + Hu3DModelPosSet(var_r31->unk_94[var_r30->unk_04], var_f31 + (2000.0f * (var_r27 % 2)), var_f30, var_f29 + (2000.0f * (var_r27 / 2))); + HuPrcVSleep(); + } + var_r31->unk_F4[var_r30->unk_04] = 1; + Hu3DModelAttrSet(var_r31->unk_94[var_r30->unk_04], 1); + for (var_r28 = 0, sp8[0] = 0; var_r28 < 4; var_r28++) { + if (lbl_1_bss_97C[var_r28] >= 3) { + break; + } + } + if (var_r28 >= 4) { + fn_1_3D48(var_r31->unk_44, 0); + } + CharModelMotionSpeedSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], 1.0f); + if (var_r30->unk_08) { + CharModelMotionShiftSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], var_r31->unk_14[1], 60.0f, 5.0f, 0); + } else { + CharModelMotionShiftSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], var_r31->unk_14[1], 0.0f, 5.0f, 0); + } + HuPrcSleep(5); + Hu3DModelAttrSet(var_r31->unk_12, 0x40000002); + CharModelMotionSpeedSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], 2.0f); + var_r30->unk_0C = 0; + HuPrcSleep(5); + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +u32 fn_1_4C04(s32 arg0, s32 arg1, s32 arg2) +{ + switch (GWPlayerCfg[arg0].diff) { + case 0: + arg1 *= 12; + break; + case 1: + arg1 *= 10; + break; + case 2: + arg1 *= 10; + break; + default: + arg1 *= 8; + break; + } + if (arg2) { + arg1 / 2; + } + return arg1; +} + +s32 fn_1_4C74(UnkM414BssF0Struct *arg0) +{ + s32 sp8[4]; + + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r27; + s32 var_r26; + s32 var_r25; + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + sp8[var_r31] = -1; + } + + for (var_r31 = var_r30 = 0; var_r31 < 16; var_r31++) { + if (lbl_1_bss_978 == lbl_1_bss_938[var_r31] && !arg0->unk_F4[var_r31]) { + sp8[var_r30++] = var_r31 / 2; + } + } + var_r29 = fn_1_654C(arg0->unk_44, 0) / 2; + if (fn_1_654C(arg0->unk_44, 0) == -1) { + var_r29 = 8; + } + for (var_r31 = 0, var_r30 = 100, var_r26 = -1; var_r31 < 3; var_r31++) { + if (sp8[var_r31] == -1) { + break; + } + if (var_r29 - sp8[var_r31] >= 0) { + var_r25 = var_r29 - sp8[var_r31]; + } else { + var_r25 = -(var_r29 - sp8[var_r31]); + } + var_r27 = var_r25; + if (var_r30 > var_r27) { + var_r30 = var_r27; + var_r26 = var_r31; + } + } + if (!var_r31) { + return 0; + } + return var_r29 - sp8[var_r26]; +} + +inline s32 fn_1_4C74_inline(UnkM414BssF0Struct *arg0) +{ + s32 sp8[4]; + + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r27; + s32 var_r26; + s32 var_r25; + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + sp8[var_r31] = -1; + } + + for (var_r31 = var_r30 = 0; var_r31 < 16; var_r31++) { + if (lbl_1_bss_978 == lbl_1_bss_938[var_r31] && !arg0->unk_F4[var_r31]) { + sp8[var_r30++] = var_r31 / 2; + } + } + var_r29 = fn_1_654C(arg0->unk_44, 0) / 2; + if (fn_1_654C(arg0->unk_44, 0) == -1) { + var_r29 = 8; + } + for (var_r31 = 0, var_r30 = 100, var_r26 = -1; var_r31 < 3; var_r31++) { + if (sp8[var_r31] == -1) { + break; + } + if (var_r29 - sp8[var_r31] >= 0) { + var_r25 = var_r29 - sp8[var_r31]; + } else { + var_r25 = -(var_r29 - sp8[var_r31]); + } + var_r27 = var_r25; + if (var_r30 > var_r27) { + var_r30 = var_r27; + var_r26 = var_r31; + } + } + if (!var_r31) { + return 0; + } + return var_r29 - sp8[var_r26]; +} + +void fn_1_4E10(UnkM414BssF0Struct *arg0) +{ + float var_f31; + + u32 var_r21; + + arg0->unk_1FC = arg0->unk_1FD = 0; + arg0->unk_1FF = arg0->unk_1FE = 0; + arg0->unk_200 = 0; + + switch (GWPlayerCfg[arg0->unk_44].diff) { + case 0: + var_r21 = 45; + break; + case 1: + var_r21 = 55; + break; + case 2: + var_r21 = 70; + break; + default: + var_r21 = 80; + break; + } + if (arg0->unk_204) { + arg0->unk_204--; + return; + } + var_f31 = fn_1_4C74_inline(arg0); + if (var_f31 > 0.0f) { + arg0->unk_1FE = 50; + arg0->unk_204 = fn_1_4C04(arg0->unk_44, 5, 1) + 20 + fn_1_4C04(arg0->unk_44, frandmod(10), 0); + } + if (var_f31 < 0.0f) { + arg0->unk_1FF = 50; + arg0->unk_204 = fn_1_4C04(arg0->unk_44, 5, 1) + 20 + fn_1_4C04(arg0->unk_44, frandmod(10), 0); + } + if (0.0f == var_f31) { + arg0->unk_204 = fn_1_4C04(arg0->unk_44, 1, 1) + 10 + fn_1_4C04(arg0->unk_44, frandmod(5), 0); + + if (arg0->unk_1F4 == 1) { + if (lbl_1_bss_978 == lbl_1_bss_938[fn_1_654C(arg0->unk_44, 0)] && !arg0->unk_F4[fn_1_654C(arg0->unk_44, 0)]) { + if (!(Hu3DModelMotionAttrGet(arg0->unk_D4[fn_1_654C(arg0->unk_44, 0)]) & 0x40000004)) { + arg0->unk_200 = 256; + } + } else { + arg0->unk_1FD = -50; + } + } else if (lbl_1_bss_978 == lbl_1_bss_938[fn_1_654C(arg0->unk_44, 1)] && !arg0->unk_F4[fn_1_654C(arg0->unk_44, 1)]) { + if (!(Hu3DModelMotionAttrGet(arg0->unk_D4[fn_1_654C(arg0->unk_44, 1)]) & 0x40000004)) { + arg0->unk_200 = 256; + } + } else { + arg0->unk_1FD = 50; + } + } + if (frandmod(100) > var_r21) { + switch (frandmod(5)) { + case 0: + arg0->unk_1FE = 50; + break; + case 1: + arg0->unk_1FF = 50; + break; + case 2: + break; + case 3: + arg0->unk_1FD = -50; + break; + default: + arg0->unk_1FD = -50; + break; + } + } +} + +s8 fn_1_5554(s32 arg0, s32 arg1) // identical to m411Dll/main.c::fn_1_5D58 +{ + UnkM414BssF0Struct *var_r31; + s8 var_r30; + s8 var_r29; + s8 var_r28; + + var_r31 = &lbl_1_bss_F0[arg0]; + var_r30 = 0; + if (lbl_1_bss_98C < 4) { + if (!GWPlayerCfg[arg0].iscom) { + if (arg1) { + var_r30 = HuPadStkY[var_r31->unk_4C]; + var_r29 = var_r30; + } else { + var_r30 = HuPadStkX[var_r31->unk_4C]; + var_r29 = var_r30; + } + (void)var_r31; + } else if (arg1) { + var_r30 = var_r31->unk_1FD; + var_r28 = var_r30; + } else { + var_r30 = var_r31->unk_1FC; + var_r28 = var_r30; + } + } + return var_r30; +} + +u8 fn_1_5624(s32 arg0, s32 arg1) +{ + UnkM414BssF0Struct *var_r31; + s8 var_r30; + s8 var_r29; + s8 var_r28; + + var_r31 = &lbl_1_bss_F0[arg0]; + var_r30 = 0; + if (lbl_1_bss_98C < 4) { + if (!GWPlayerCfg[arg0].iscom) { + if (arg1) { + var_r29 = var_r30 = HuPadTrigR[var_r31->unk_4C]; + } else { + var_r29 = var_r30 = HuPadTrigL[var_r31->unk_4C]; + } + (void)var_r31; + } else if (arg1) { + var_r28 = var_r30 = var_r31->unk_1FE; + } else { + var_r28 = var_r30 = var_r31->unk_1FF; + } + } + return var_r30; +} + +u16 fn_1_56FC(s32 arg0) +{ + UnkM414BssF0Struct *var_r31; + u16 var_r30; + + var_r31 = &lbl_1_bss_F0[arg0]; + var_r30 = 0; + if (lbl_1_bss_98C < 4) { + if (!GWPlayerCfg[arg0].iscom) { + var_r30 = HuPadBtnDown[var_r31->unk_4C]; + } else { + var_r30 = var_r31->unk_200; + } + } + return var_r30; +} + +void fn_1_5780(UnkM414BssF0Struct *arg0, float arg8) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + + s32 var_r31; + + var_f29 = 60.0f; + var_f31 = 180.0f + arg8; + if (var_f31 > 360.0f) { + var_f31 -= 360.0f; + } + for (var_r31 = 0, var_f30 = 40.0f; var_r31 < 16; var_r31++) { + if (var_f30 < var_f29 || var_f31 < var_f29) { + var_f30 += var_f29; + var_f31 += var_f29; + } + if (var_f30 - var_f31 >= 0.0f) { + var_f27 = var_f30 - var_f31; + } else { + var_f27 = -(var_f30 - var_f31); + } + var_f28 = var_f27; + if (var_f28 < var_f29 || arg0->unk_F4[var_r31] == 1) { + Hu3DModelAttrSet(arg0->unk_94[var_r31], 1); + } else { + Hu3DModelAttrReset(arg0->unk_94[var_r31], 1); + } + if (var_f28 < var_f29) { + Hu3DModelAttrSet(arg0->unk_D4[var_r31], 1); + } else { + Hu3DModelAttrReset(arg0->unk_D4[var_r31], 1); + } + if (var_r31 & 1) { + var_f30 += 40.0f; + } + } + var_f31 = 180.0f + arg8; + if (var_f31 > 360.0f) { + var_f31 -= 360.0f; + } + for (var_r31 = 0, var_f30 = 0.0f; var_r31 < 9; var_f30 += 40.0f, var_r31++) { + if (var_f30 < var_f29 || var_f31 < var_f29) { + var_f30 += var_f29; + var_f31 += var_f29; + } + if (var_f30 - var_f31 >= 0.0f) { + var_f26 = var_f30 - var_f31; + } else { + var_f26 = -(var_f30 - var_f31); + } + var_f28 = var_f26; + if (var_f28 < var_f29) { + Hu3DModelAttrSet(arg0->unk_00[var_r31], 1); + } else { + Hu3DModelAttrReset(arg0->unk_00[var_r31], 1); + } + } +} + +void fn_1_5A3C(void) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + + UnkM414Struct2 *var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r31 = HuPrcCurrentGet()->user_data; + HuPrcSleep(10); + var_r28 = var_r31->unk_00->unk_44; + var_f26 = lbl_1_bss_920[var_r28]; + fn_1_5780(var_r31->unk_00, lbl_1_bss_920[var_r28]); + + if (var_r31->unk_04) { + var_f30 = 40.0f + lbl_1_bss_920[var_r28]; + var_f29 = 40.0f; + } else { + var_f30 = lbl_1_bss_920[var_r28] - 40.0f; + var_f29 = -40.0f; + } + if (var_f30 >= 360.0f) { + var_f30 -= 360.0f; + } + if (var_f30 < 0.0f) { + var_f30 += 360.0f; + } + for (var_r30 = 0; var_r30 < 9; var_r30++) { + Hu3DModelAttrSet(var_r31->unk_00->unk_00[var_r30], 0x40000002); + } + for (var_r30 = 0, var_f28 = 0.0f; var_r30 < 10; var_r30++, var_f28 += 9.0f) { + var_f27 = (var_f29 * 0.5f) * (1.0 - cosd(var_f28)); + lbl_1_bss_920[var_r28] = var_f26 + var_f27; + for (var_r29 = 0; var_r29 < 9; var_r29++) { + if (!var_r31->unk_04) { + var_f31 = (var_f27 / var_f29) * Hu3DMotionMaxTimeGet(var_r31->unk_00->unk_00[var_r29]); + } else { + var_f31 = Hu3DMotionMaxTimeGet(var_r31->unk_00->unk_00[var_r29]) + - (var_f27 / var_f29) * Hu3DMotionMaxTimeGet(var_r31->unk_00->unk_00[var_r29]); + } + Hu3DMotionTimeSet(var_r31->unk_00->unk_00[var_r29], var_f31 >= 0.0f ? var_f31 : -var_f31); + } + HuPrcVSleep(); + } + for (var_r30 = 0, var_f28 = 0.0f; var_r30 < 10; var_r30++, var_f28 += 9.0f) { + var_f27 = (var_f29 * 0.5f) + (var_f29 * 0.5f * sind(var_f28)); + lbl_1_bss_920[var_r28] = var_f26 + var_f27; + for (var_r29 = 0; var_r29 < 9; var_r29++) { + if (!var_r31->unk_04) { + var_f31 = (var_f27 / var_f29) * Hu3DMotionMaxTimeGet(var_r31->unk_00->unk_00[var_r29]); + } else { + var_f31 = Hu3DMotionMaxTimeGet(var_r31->unk_00->unk_00[var_r29]) + - (var_f27 / var_f29) * Hu3DMotionMaxTimeGet(var_r31->unk_00->unk_00[var_r29]); + } + Hu3DMotionTimeSet(var_r31->unk_00->unk_00[var_r29], var_f31 >= 0.0f ? var_f31 : -var_f31); + } + HuPrcVSleep(); + } + if (!var_r31->unk_04) { + for (var_r30 = 0; var_r30 < 9; var_r30++) { + Hu3DMotionTimeSet(var_r31->unk_00->unk_00[var_r30], Hu3DMotionMaxTimeGet(var_r31->unk_00->unk_00[var_r30])); + } + } else { + for (var_r30 = 0; var_r30 < 9; var_r30++) { + Hu3DMotionTimeSet(var_r31->unk_00->unk_00[var_r30], 0.0f); + } + } + lbl_1_bss_920[var_r28] = var_f30; + *var_r31->unk_08_ptr = 0; + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_5EE8(void) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + + UnkM414Struct2 *var_r31; + s32 var_r30; + s32 var_r29; + + var_r31 = HuPrcCurrentGet()->user_data; + var_r29 = var_r31->unk_00->unk_44; + var_f28 = lbl_1_bss_920[var_r29]; + if (var_r31->unk_04) { + var_f31 = 40.0f + lbl_1_bss_920[var_r29]; + var_f29 = 40.0f; + } else { + var_f31 = lbl_1_bss_920[var_r29] - 40.0f; + var_f29 = -40.0f; + } + if (var_f31 >= 360.0f) { + var_f31 -= 360.0f; + } + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + for (var_r30 = 0, var_f30 = 0.0f; var_r30 < 15; var_r30++, var_f30 += 6.0f) { + var_r31->unk_00->unk_70 = var_f28 + ((var_f29 * 0.5f) * (1.0 - cosd(var_f30))); + HuPrcVSleep(); + } + for (var_r30 = 0, var_f30 = 0.0f; var_r30 < 15; var_r30++, var_f30 += 6.0f) { + var_r31->unk_00->unk_70 = (var_f29 * 0.5f) + (var_f28 + (var_f29 * 0.5f * sind(var_f30))); + HuPrcVSleep(); + } + var_r31->unk_00->unk_70 = var_f31; + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_6134(void) +{ + float var_f31; + float var_f30; + float var_f29; + + UnkM414BssF0Struct *var_r31; + s32 var_r30; + + var_r31 = HuPrcCurrentGet()->user_data; + for (var_r30 = 0, var_f31 = 0.0f; var_r30 < 10; var_r30++, var_f31 += 18.0f) { + var_f30 = 50.0 * sind(lbl_1_bss_920[var_r31->unk_44]) * sind(var_f31); + var_f29 = 50.0 * cosd(lbl_1_bss_920[var_r31->unk_44]) * sind(var_f31); + Hu3DModelPosSet(var_r31->unk_12, (2000.0f * (var_r31->unk_44 % 2)) + (var_r31->unk_60 + var_f30), var_r31->unk_64, + (2000.0f * (var_r31->unk_44 / 2)) + (var_r31->unk_68 + var_f29)); + Hu3DModelPosSet(var_r31->unk_20, var_f30 + (2000.0f * (var_r31->unk_44 % 2)), 0.0f, var_f29 + (2000.0f * (var_r31->unk_44 / 2))); + HuPrcVSleep(); + } + Hu3DModelPosSet( + var_r31->unk_12, var_r31->unk_60 + (2000.0f * (var_r31->unk_44 % 2)), var_r31->unk_64, var_r31->unk_68 + (2000.0f * (var_r31->unk_44 / 2))); + Hu3DModelPosSet(var_r31->unk_20, 2000.0f * (var_r31->unk_44 % 2), 0.0f, 2000.0f * (var_r31->unk_44 / 2)); + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +s32 fn_1_654C(s32 arg0, s32 arg1) +{ + float var_f31; + s32 var_r31; + + for (var_r31 = 0, var_f31 = 40.0f; var_r31 < 16; var_f31 += 40.0f, var_r31 += 2) { + if (var_f31 == lbl_1_bss_920[arg0]) { + if (arg1) { + var_r31++; + } + break; + } + } + if (var_r31 >= 16) { + var_r31 = -1; + } + return var_r31; +} + +s32 fn_1_65DC(UnkM414BssF0Struct *arg0, s32 arg1) +{ + s32 var_r31; + + var_r31 = 1; + if (Hu3DModelMotionAttrGet(arg0->unk_D4[arg1]) & 0x40000004) { + var_r31 = 0; + } + return var_r31; +} + +void fn_1_6644(void) +{ + UnkM414Struct2 sp9C; + UnkM414Struct2 sp8C; + + UnkM414BssF0Struct *var_r31; + Process *var_r30; + s32 var_r29; + s32 var_r28; + + var_r31 = HuPrcCurrentGet()->user_data; + var_r31->unk_50 = 0; + var_r31->unk_1F4 = 1; + var_r31->unk_1F8 = -1; + var_r31->unk_204 = 0; + + while (!lbl_1_bss_98C) { + HuPrcVSleep(); + } + lbl_1_bss_98C = 2; + + while (lbl_1_bss_98C == 2) { + HuPrcVSleep(); + } + var_r31->unk_58 = 0; + lbl_1_bss_97C[var_r31->unk_44] = 0; + + while (TRUE) { + lbl_1_bss_930[0] = lbl_1_bss_930[1] = 0; + if (GWPlayerCfg[var_r31->unk_44].iscom == 1) { + fn_1_4E10(var_r31); + } + if (var_r31->unk_1F4 == 3 && Hu3DMotionEndCheck(var_r31->unk_20)) { + if (0.0f == Hu3DMotionTimeGet(var_r31->unk_20)) { + Hu3DMotionSet(var_r31->unk_20, var_r31->unk_22[0]); + var_r31->unk_1F4 = 1; + } else { + var_r31->unk_1F4 = 2; + Hu3DMotionSet(var_r31->unk_20, var_r31->unk_22[0]); + Hu3DMotionTimeSet(var_r31->unk_20, Hu3DMotionMaxTimeGet(var_r31->unk_20)); + } + } + if (var_r31->unk_1F4 == 4 && Hu3DMotionEndCheck(var_r31->unk_20)) { + var_r31->unk_1F4 = 1; + var_r31->unk_1F8 = -1; + Hu3DMotionSet(var_r31->unk_20, var_r31->unk_22[0]); + Hu3DModelAttrSet(var_r31->unk_20, 0x40000002); + Hu3DModelAttrReset(var_r31->unk_20, 0x40000004); + Hu3DMotionSpeedSet(var_r31->unk_20, 2.0f); + } + if (var_r31->unk_1F4 == 5 && Hu3DMotionEndCheck(var_r31->unk_20)) { + var_r31->unk_1F4 = 2; + var_r31->unk_1F8 = -1; + Hu3DMotionSet(var_r31->unk_20, var_r31->unk_22[0]); + Hu3DModelAttrReset(var_r31->unk_20, 0x40000004); + Hu3DMotionTimeSet(var_r31->unk_20, Hu3DMotionMaxTimeGet(var_r31->unk_20)); + Hu3DMotionSpeedSet(var_r31->unk_20, 2.0f); + } + if ((fn_1_56FC(var_r31->unk_44) & 256) && !var_r31->unk_58) { + if (fn_1_654C(var_r31->unk_44, 0) != -1) { + if (var_r31->unk_1F4 == 1) { + var_r29 = fn_1_654C(var_r31->unk_44, 0); + if (!var_r31->unk_F4[var_r29]) { + if (var_r31->unk_44 & 1) { + HuAudFXPlay(1442); + } else { + HuAudFXPlay(1441); + } + omVibrate(var_r31->unk_44, 12, 6, 6); + var_r31->unk_1F4 = 4; + var_r31->unk_1F8 = var_r29; + Hu3DMotionSet(var_r31->unk_20, var_r31->unk_22[1]); + Hu3DModelAttrReset(var_r31->unk_20, 0x40000006); + Hu3DMotionSpeedSet(var_r31->unk_20, 1.0f); + var_r30 = HuPrcChildCreate(fn_1_6134, 8192, 8192, 0, HuPrcCurrentGet()); + var_r30->user_data = var_r31; + if (lbl_1_bss_978 == lbl_1_bss_938[var_r29]) { + if (fn_1_65DC(var_r31, var_r29)) { + Hu3DModelAttrReset(var_r31->unk_D4[var_r29], 0x40000186); + var_r30 = HuPrcChildCreate(fn_1_42AC, 8192, 8192, 0, HuPrcCurrentGet()); + var_r30->user_data = &sp8C; + sp8C.unk_00 = var_r31; + sp8C.unk_08 = 0; + sp8C.unk_0C = 1; + sp8C.unk_04 = fn_1_654C(var_r31->unk_44, sp8C.unk_0C); + while (sp8C.unk_0C) { + HuPrcVSleep(); + } + } else { + goto block_62; + } + } else { + block_62: + HuPrcSleep(10); + Hu3DModelAttrReset(var_r31->unk_D4[var_r29], 0x40000082); + Hu3DModelAttrSet(var_r31->unk_D4[var_r29], 0x40000104); + HuPrcSleep(10); + omVibrate(var_r31->unk_44, 12, 4, 2); + var_r30 = HuPrcChildCreate(fn_1_1C48, 8192, 8192, 0, HuPrcCurrentGet()); + var_r30->user_data = var_r31; + + fn_1_CD8(0, var_r31->unk_44, 5.0f); + Hu3DModelAttrSet(var_r31->unk_20, 0x40000004); + HuPrcSleep(10); + if (var_r31->unk_44 & 1) { + HuAudFXPlay(1444); + } else { + HuAudFXPlay(1443); + } + Hu3DModelAttrReset(var_r31->unk_D4[var_r29], 0x40000004); + HuPrcSleep(10); + } + } + } else if (var_r31->unk_1F4 == 2) { + var_r29 = fn_1_654C(var_r31->unk_44, 1); + if (!var_r31->unk_F4[var_r29]) { + if (var_r31->unk_44 & 1) { + HuAudFXPlay(1442); + } else { + HuAudFXPlay(1441); + } + omVibrate(var_r31->unk_44, 12, 6, 6); + var_r31->unk_1F4 = 5; + var_r31->unk_1F8 = var_r29; + Hu3DMotionSet(var_r31->unk_20, var_r31->unk_22[3]); + Hu3DMotionSpeedSet(var_r31->unk_20, 1.0f); + var_r30 = HuPrcChildCreate(fn_1_6134, 8192, 8192, 0, HuPrcCurrentGet()); + var_r30->user_data = var_r31; + if (lbl_1_bss_978 == lbl_1_bss_938[var_r29]) { + if (fn_1_65DC(var_r31, var_r29)) { + Hu3DModelAttrReset(var_r31->unk_D4[var_r29], 0x40000186); + var_r30 = HuPrcChildCreate(fn_1_42AC, 8192, 8192, 0, HuPrcCurrentGet()); + var_r30->user_data = &sp8C; + sp8C.unk_00 = var_r31; + sp8C.unk_08 = 1; + sp8C.unk_0C = 1; + sp8C.unk_04 = fn_1_654C(var_r31->unk_44, sp8C.unk_08); + while (sp8C.unk_0C) { + HuPrcVSleep(); + } + } else { + goto block_94; + } + } else { + block_94: + HuPrcSleep(10); + Hu3DModelAttrReset(var_r31->unk_D4[var_r29], 0x40000082); + Hu3DModelAttrSet(var_r31->unk_D4[var_r29], 0x40000104); + HuPrcSleep(10); + omVibrate(var_r31->unk_44, 12, 4, 2); + var_r30 = HuPrcChildCreate(fn_1_1C48, 8192, 8192, 0, HuPrcCurrentGet()); + var_r30->user_data = var_r31; + fn_1_CD8(0, var_r31->unk_44, 5.0f); + Hu3DModelAttrSet(var_r31->unk_20, 0x40000004); + HuPrcSleep(15); + if (var_r31->unk_44 & 1) { + HuAudFXPlay(1444); + } else { + HuAudFXPlay(1443); + } + Hu3DModelAttrReset(var_r31->unk_D4[var_r29], 0x40000004); + HuPrcSleep(15); + } + } + } + } + } + if (fn_1_5554(var_r31->unk_44, 1) > 20 && (var_r31->unk_1F4 == 2 || var_r31->unk_1F4 == 0)) { // wrong + Hu3DModelAttrReset(var_r31->unk_20, 0x40000002); + Hu3DModelAttrSet(var_r31->unk_20, 0x40000004); + var_r31->unk_1F4 = 3; + Hu3DModelAttrReset(var_r31->unk_12, 0x40000002); + Hu3DModelAttrSet(var_r31->unk_12, 0x40000004); + Hu3DMotionSpeedSet(var_r31->unk_12, 2.0f); + } + if (fn_1_5554(var_r31->unk_44, 1) < -20 && (var_r31->unk_1F4 == 1 || var_r31->unk_1F4 == 0)) { // wrong + Hu3DModelAttrReset(var_r31->unk_20, 0x40000006); + var_r31->unk_1F4 = 3; + Hu3DModelAttrReset(var_r31->unk_12, 0x40000006); + Hu3DMotionSpeedSet(var_r31->unk_12, 2.0f); + } + if (!var_r31->unk_58) { + var_r28 = -1; + if (fn_1_5624(var_r31->unk_44, 0) > 20 && var_r28 == -1) { // wrong + var_r28 = 1; + } + if (fn_1_5624(var_r31->unk_44, 1) > 20 && var_r28 == -1) { // wrong + var_r28 = 0; + } + if (var_r28 != -1) { + if (var_r28) { + if (var_r31->unk_44 & 1) { + HuAudFXPlay(1440); + } else { + HuAudFXPlay(1439); + } + } else if (var_r31->unk_44 & 1) { + HuAudFXPlay(1438); + } else { + HuAudFXPlay(1437); + } + var_r31->unk_58 = 1; + var_r30 = HuPrcChildCreate(fn_1_5A3C, 8192, 8192, 0, HuPrcCurrentGet()); + var_r30->user_data = &sp9C; + sp9C.unk_00 = var_r31; + sp9C.unk_04 = var_r28; + sp9C.unk_08_ptr = &var_r31->unk_58; + var_r30 = HuPrcChildCreate(fn_1_5EE8, 8192, 8192, 0, HuPrcCurrentGet()); + var_r30->user_data = &sp9C; + sp9C.unk_00 = var_r31; + sp9C.unk_04 = var_r28; + } + } + var_r31->unk_60 = 37.0 * sind(var_r31->unk_70); + var_r31->unk_68 = 37.0 * cosd(var_r31->unk_70); + + Hu3DModelPosSet(var_r31->unk_12, var_r31->unk_60 + (2000.0f * (var_r31->unk_44 % 2)), var_r31->unk_64, + var_r31->unk_68 + (2000.0f * (var_r31->unk_44 / 2))); + Hu3DModelRotSet(var_r31->unk_12, var_r31->unk_6C, var_r31->unk_70 + var_r31->unk_90, var_r31->unk_74); + Hu3DModelRotSet(var_r31->unk_20, var_r31->unk_6C, var_r31->unk_70, var_r31->unk_74); + HuPrcVSleep(); + } +} + +void fn_1_76F4(void) +{ + Vec sp14; + Vec sp8; + + float var_f31; + float var_f30; + float var_f29; + + UnkM414BssF0Struct *var_r31; + + var_r31 = HuPrcCurrentGet()->user_data; + + while (TRUE) { + if (var_r31->unk_1F4 != 4 && var_r31->unk_1F4 != 5) { + sp14.x = (2000.0f * (var_r31->unk_44 % 2)) + (-950.0 * sind(var_r31->unk_70)); + sp14.z = (2000.0f * (var_r31->unk_44 / 2)) + (-950.0 * cosd(var_r31->unk_70)); + var_f29 = Hu3DMotionMaxTimeGet(var_r31->unk_20); + sp14.y = 220.0f + (350.0f * (1.0f - (Hu3DMotionTimeGet(var_r31->unk_20) / var_f29))); + Hu3D3Dto2D(&sp14, 1 << var_r31->unk_48, &sp8); + var_f31 = (282.0f * (var_r31->unk_44 % 2)) + (sp8.x * 0.5f); + var_f30 = (225.0f * (var_r31->unk_44 / 2)) + (sp8.y * 0.5f); + var_f31 += 3.0f; + var_f30 -= 15.0f; + HuSprGrpPosSet(var_r31->unk_2C, var_f31, var_f30); + } + HuPrcVSleep(); + } +} +void fn_1_79A8(void) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + + UnkM414BssF0Struct *var_r31; + s32 var_r30; + s32 var_r29; + UnkM414BssF0Struct *var_r28; + Process *var_r27; + + HuAudFXPlay(lbl_1_data_8C[lbl_1_bss_978]); + HuPrcSleep(60); + HuAudFXPlay(1449); + var_f31 = var_f30 = 0.0f; + var_f29 = 640.0f; + var_f28 = 480.0f; + for (var_r29 = 0; var_r29 < 30; var_r29++) { + Hu3DCameraViewportSet(16, var_f31, var_f30, var_f29, var_f28, 0.0f, 1.0f); + Hu3DCameraScissorSet(16, var_f31, var_f30, var_f29, var_f28); + var_f31 += 10.666667f; + var_f30 += 8.0f; + var_f29 -= 21.333334f; + var_f28 -= 16.0f; + HuPrcVSleep(); + } + Hu3DCameraViewportSet(16, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(16, 0, 0, 0, 0); + Hu3DModelAttrSet(lbl_1_bss_A10, 1); + HuPrcSleep(30); + for (var_r29 = 0; var_r29 < 45; var_r29++) { + for (var_r30 = 0; var_r30 < 4; var_r30++) { + lbl_1_bss_910[var_r30] -= 23.777779f; + lbl_1_bss_A0[var_r30].y -= 3.5555556f; + lbl_1_bss_64[var_r30].y -= 6.2222223f; + } + HuPrcVSleep(); + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r31 = &lbl_1_bss_F0[var_r30]; + CharModelMotionSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], var_r31->unk_14[5]); + CharModelMotionTimeSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], 61.0f); + CharModelMotionSpeedSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], 2.0f); + } + for (var_r29 = 0; var_r29 < 30; var_r29++) { + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r31 = &lbl_1_bss_F0[var_r30]; + var_r31->unk_90 += 6.0f; + Hu3DModelRotSet(var_r31->unk_12, var_r31->unk_6C, var_r31->unk_70 + var_r31->unk_90, var_r31->unk_74); + } + HuPrcVSleep(); + } + var_r31->unk_90 = 180.0f; + Hu3DModelRotSet(var_r31->unk_12, var_r31->unk_6C, var_r31->unk_70 + var_r31->unk_90, var_r31->unk_74); + CharModelMotionSpeedSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], 1.0f); + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r31 = &lbl_1_bss_F0[var_r30]; + CharModelMotionShiftSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], var_r31->unk_14[1], 0.0f, 5.0f, 0); + } + HuPrcSleep(5); + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r31 = &lbl_1_bss_F0[var_r30]; + Hu3DModelAttrSet(var_r31->unk_12, 1073741826); + } + HuPrcChildCreate(fn_1_397C, 4096, 8192, 0, HuPrcCurrentGet()); + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r28 = &lbl_1_bss_F0[var_r30]; + var_r27 = HuPrcChildCreate(fn_1_76F4, 8192, 8192, 0, HuPrcCurrentGet()); + var_r27->user_data = var_r28; + HuSprAttrReset(var_r28->unk_2C, 0, 4); + } + for (var_r29 = 0, var_f27 = 0.0f; var_r29 < 15; var_r29++) { + var_f27 += 0.06666667f; + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r28 = &lbl_1_bss_F0[var_r30]; + HuSprScaleSet(var_r28->unk_2C, 0, var_f27, var_f27); + } + HuPrcVSleep(); + } +} + +void fn_1_7FC8(s32 arg0) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + + UnkM414BssF0Struct *var_r31; + UnkM414BssF0Struct *var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + + if (arg0 != -1) { + for (var_r28 = 0, var_r29 = 0; var_r28 < 16; var_r28++) { + if (lbl_1_bss_978 == lbl_1_bss_938[var_r28]) { + var_r30 = &lbl_1_bss_F0[arg0]; + switch (var_r29) { + case 0: + var_f30 = 35.0f + var_r30->unk_70; + var_f28 = 240.0f; + break; + case 1: + var_f30 = var_r30->unk_70 - 35.0f; + var_f28 = 240.0f; + break; + default: + var_f30 = var_r30->unk_70; + var_f28 = 240.0f; + break; + } + Hu3DMotionSet(var_r30->unk_94[var_r28], var_r30->unk_B4[var_r28]); + var_f31 = 0.0f; + if (!lbl_1_bss_938[var_r28]) { + var_f31 += 70.0f; + } + Hu3DModelPosSet(var_r30->unk_94[var_r28], (2000.0f * (arg0 % 2) + (250.0 * sind(var_f30))), var_f31, + (2000.0f * (arg0 / 2)) + (250.0 * cosd(var_f30))); + Hu3DModelRotSet(var_r30->unk_94[var_r28], var_r30->unk_6C, var_r30->unk_70, var_r30->unk_74); + if (lbl_1_bss_978 == 2) { + Hu3DModelScaleSet(var_r30->unk_94[var_r28], 1.0f, 1.0f, 1.0f); + } + Hu3DModelAttrReset(var_r30->unk_94[var_r28], 1); + Hu3DModelShadowSet(var_r30->unk_94[var_r28]); + if (var_r29++ >= 2) { + break; + } + } + } + } + for (var_r27 = 0; var_r27 < 4; var_r27++) { + var_r30 = &lbl_1_bss_F0[var_r27]; + var_f31 = 40.0f + lbl_1_bss_920[var_r30->unk_44]; + if (var_f31 >= 360.0f) { + var_f31 -= 360.0f; + } + var_r29 = 2.0f + (lbl_1_bss_920[var_r30->unk_44] / 40.0f); + if (var_r29 >= 9) { + var_r29 -= 9; + } + for (var_r28 = 0; var_r28 < 6; var_r28++) { + Hu3DModelAttrSet(var_r30->unk_30[var_r29], 1); + var_r29++; + if (var_r29 >= 9) { + var_r29 = 0; + } + } + Hu3DModelAttrReset(var_r30->unk_42, 1); + Hu3DModelRotSet(var_r30->unk_42, 0.0f, lbl_1_bss_920[var_r30->unk_44], 0.0f); + } + for (var_r28 = 0; var_r28 < 30; var_r28++) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + lbl_1_bss_64[var_r29].y -= 7.6666665f; + } + HuPrcVSleep(); + } + HuAudFXPlay(lbl_1_data_8C[lbl_1_bss_978]); + for (var_r29 = 0; var_r29 < 4; var_r29++) { + var_r31 = &lbl_1_bss_F0[var_r29]; + CharModelMotionShiftSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], var_r31->unk_14[0], 0.0f, 5.0f, 0x40000001); + } + HuPrcSleep(5); + for (var_r29 = 0; var_r29 < 4; var_r29++) { + var_r31 = &lbl_1_bss_F0[var_r29]; + CharModelMotionSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], var_r31->unk_14[5]); + Hu3DModelAttrReset(var_r31->unk_12, 0x40000001); + CharModelMotionTimeSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], 61.0f); + CharModelMotionSpeedSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], 2.0f); + } + for (var_f29 = 37.0f, var_r28 = 0; var_r28 < 30; var_r28++, var_f29 += 1.6666666f) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + var_r31 = &lbl_1_bss_F0[var_r29]; + var_r31->unk_90 += 6.0f; + Hu3DModelRotSet(var_r31->unk_12, var_r31->unk_6C, var_r31->unk_70 + var_r31->unk_90, var_r31->unk_74); + var_r31->unk_60 = var_f29 * sind(var_r31->unk_70); + var_r31->unk_68 = var_f29 * cosd(var_r31->unk_70); + Hu3DModelPosSet(var_r31->unk_12, var_r31->unk_60 + (2000.0f * (var_r31->unk_44 % 2)), var_r31->unk_64, + var_r31->unk_68 + (2000.0f * (var_r31->unk_44 / 2))); + } + HuPrcVSleep(); + } + var_r31->unk_90 = 0.0f; + Hu3DModelRotSet(var_r31->unk_12, var_r31->unk_6C, var_r31->unk_70 + var_r31->unk_90, var_r31->unk_74); + CharModelMotionSpeedSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], 1.0f); + for (var_r29 = 0; var_r29 < 4; var_r29++) { + var_r31 = &lbl_1_bss_F0[var_r29]; + CharModelMotionShiftSet( + lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], var_r31->unk_14[var_r31->unk_44 == arg0 ? 3 : 4], 0.0f, 5.0f, 0); + } +} + +void fn_1_88D4(void) +{ + UnkM414BssF0Struct *var_r31; + + var_r31 = HuPrcCurrentGet()->user_data; + while (TRUE) { + if (var_r31->unk_1F4 == 4 || var_r31->unk_1F4 == 5 || var_r31->unk_58) { + HuPrcVSleep(); + } else { + break; + } + } + HuPrcCurrentGet()->user_data = NULL; + HuPrcKill(lbl_1_bss_E0[var_r31->unk_44]); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_894C(void) +{ + Process *sp8[4]; + + s32 var_r31; + s32 var_r30; + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + sp8[var_r31] = HuPrcChildCreate(fn_1_88D4, 8192, 8192, 0, HuPrcCurrentGet()); + sp8[var_r31]->user_data = &lbl_1_bss_F0[var_r31]; + } + while (TRUE) { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (sp8[var_r31]->user_data) { + break; + } + } + if (var_r31 < 4) { + HuPrcVSleep(); + } else { + break; + } + } + HuPrcCurrentGet()->user_data = NULL; + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_8A10(void) +{ + while (TRUE) { + if (omSysExitReq == 1) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuAudFadeOut(1000); + HuPrcSleep(60); + MGSeqKillAll(); + omOvlReturnEx(1, 1); + while (TRUE) { + HuPrcVSleep(); + } + } + HuPrcVSleep(); + } +} + +void fn_1_8A70(void) +{ + float var_f31; + + s32 var_r31; + s32 var_r30; + s32 var_r29; + s16 var_r28; + s16 var_r27; + s32 var_r26; + Process *var_r25; + s16 var_r24; + UnkM414BssF0Struct *var_r23; + s32 var_r22; + UnkM414BssF0Struct *var_r21; + + lbl_1_bss_98C = 0; + HuPrcSleep(1.0f + wipeData.duration); + fn_1_79A8(); + HuPrcSleep(30); + lbl_1_bss_98C = 1; + + while (lbl_1_bss_98C == 1) { + HuPrcVSleep(); + } + + var_r22 = HuAudSeqPlay(72); + var_r28 = MGSeqCreate(3, 0); + while (MGSeqStatGet(var_r28)) { + HuPrcVSleep(); + } + var_r27 = 3659; + var_r24 = MGSeqCreate(1, var_r27 / 60, -1, -1); + lbl_1_bss_98C = 3; + while (TRUE) { + for (var_r31 = 0, var_r30 = 0; var_r31 < 4; var_r31++) { + var_r21 = &lbl_1_bss_F0[var_r31]; + if (lbl_1_bss_97C[var_r31] >= 3) { + var_r30++; + var_r29 = var_r31; + } + } + if (var_r30 > 0) { + break; + } + if (var_r27 < 59) { + var_r29 = -1; + break; + } + MGSeqParamSet(var_r24, 1, var_r27-- / 60); + HuPrcVSleep(); + } + lbl_1_bss_98C = 4; + HuAudSeqFadeOut(var_r22, 100); + MGSeqParamSet(var_r24, 2, -1); + var_r28 = MGSeqCreate(3, 1); + var_r25 = HuPrcChildCreate(fn_1_894C, 8192, 8192, 0, HuPrcCurrentGet()); + var_r25->user_data = (void *)1; + + while (var_r25->user_data) { + HuPrcVSleep(); + } + for (var_r31 = 0, var_r30 = 0; var_r31 < 4; var_r31++) { + var_r21 = &lbl_1_bss_F0[var_r31]; + if (lbl_1_bss_97C[var_r31] >= 3) { + var_r30++; + var_r29 = var_r31; + } + } + + while (MGSeqStatGet(var_r28)) { + HuPrcVSleep(); + } + lbl_1_bss_98C = 5; + HuPrcChildCreate(fn_1_3A58, 4096, 8192, 0, HuPrcCurrentGet()); + for (var_r31 = 0, var_f31 = 1.0f; var_r31 < 15; var_r31++) { + for (var_f31 -= 0.06666667f, var_r26 = 0; var_r26 < 4; var_r26++) { + var_r23 = &lbl_1_bss_F0[var_r26]; + HuSprScaleSet(var_r23->unk_2C, 0, var_f31, var_f31); + } + HuPrcVSleep(); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuSprAttrSet(lbl_1_bss_F0[var_r31].unk_2C, 0, 4); + } + HuPrcSleep(15); + fn_1_7FC8(var_r29); + if (var_r29 != -1) { + HuAudSStreamPlay(1); + GWPlayerCoinWinSet(var_r29, 10); + var_r28 = MGSeqCreate(5, 3, GWPlayerCfg[var_r29].character, -1, -1, -1); + } else { + HuAudSStreamPlay(4); + var_r28 = MGSeqCreate(3, 2); + } + HuPrcSleep(210); + WipeCreate(2, 0, 60); + HuPrcSleep(60); + HuAudFadeOut(1); + MGSeqKillAll(); + omOvlReturnEx(1, 1); + while (TRUE) { + HuPrcVSleep(); + } +}