diff --git a/config/GMPE01_00/rels/m411Dll/symbols.txt b/config/GMPE01_00/rels/m411Dll/symbols.txt index bf5b0d38..340c10ca 100644 --- a/config/GMPE01_00/rels/m411Dll/symbols.txt +++ b/config/GMPE01_00/rels/m411Dll/symbols.txt @@ -211,9 +211,9 @@ lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float -lbl_1_data_0 = .data:0x00000000; // type:object size:0x54 +lbl_1_data_0 = .data:0x00000000; // type:object size:0x54 data:float lbl_1_data_54 = .data:0x00000054; // type:object size:0xC -lbl_1_data_60 = .data:0x00000060; // type:object size:0xC +lbl_1_data_60 = .data:0x00000060; // type:object size:0x9 data:string lbl_1_data_6C = .data:0x0000006C; // type:object size:0xC lbl_1_data_78 = .data:0x00000078; // type:object size:0xE data:string lbl_1_data_86 = .data:0x00000086; // type:object size:0xE data:string @@ -249,7 +249,7 @@ lbl_1_data_2D0 = .data:0x000002D0; // type:object size:0x14 lbl_1_data_2E4 = .data:0x000002E4; // type:object size:0xB data:string lbl_1_data_2EF = .data:0x000002EF; // type:object size:0xB data:string lbl_1_data_2FA = .data:0x000002FA; // type:object size:0x8 data:string -lbl_1_data_302 = .data:0x00000302; // type:object size:0xA +lbl_1_data_302 = .data:0x00000302; // type:object size:0x7 data:string lbl_1_data_30C = .data:0x0000030C; // type:object size:0x10 lbl_1_data_31C = .data:0x0000031C; // type:object size:0xC data:string lbl_1_data_328 = .data:0x00000328; // type:object size:0x7 data:string diff --git a/config/GMPE01_00/rels/m425Dll/symbols.txt b/config/GMPE01_00/rels/m425Dll/symbols.txt index 4995965e..cae3368f 100644 --- a/config/GMPE01_00/rels/m425Dll/symbols.txt +++ b/config/GMPE01_00/rels/m425Dll/symbols.txt @@ -38,11 +38,11 @@ fn_1_6C08 = .text:0x00006C08; // type:function size:0xC8 fn_1_6CD0 = .text:0x00006CD0; // type:function size:0x12C fn_1_6DFC = .text:0x00006DFC; // type:function size:0xC8 fn_1_6EC4 = .text:0x00006EC4; // type:function size:0x69D8 -fn_1_D89C = .text:0x0000D89C; // type:function size:0x10 -fn_1_D8AC = .text:0x0000D8AC; // type:function size:0x10 -fn_1_D8BC = .text:0x0000D8BC; // type:function size:0x10 -fn_1_D8CC = .text:0x0000D8CC; // type:function size:0x10 -fn_1_D8DC = .text:0x0000D8DC; // type:function size:0xCC +GXTexCoord1x16 = .text:0x0000D89C; // type:function size:0x10 scope:local +GXColor1x16 = .text:0x0000D8AC; // type:function size:0x10 scope:local +GXNormal1x16 = .text:0x0000D8BC; // type:function size:0x10 scope:local +GXPosition1x16 = .text:0x0000D8CC; // type:function size:0x10 scope:local +sqrtf = .text:0x0000D8DC; // type:function size:0xCC scope:local fn_1_D9A8 = .text:0x0000D9A8; // type:function size:0x19C fn_1_DB44 = .text:0x0000DB44; // type:function size:0x2F8 fn_1_DE3C = .text:0x0000DE3C; // type:function size:0x3D4 diff --git a/config/GMPE01_00/rels/m441Dll/symbols.txt b/config/GMPE01_00/rels/m441Dll/symbols.txt index 08b35ee9..f8c7e432 100644 --- a/config/GMPE01_00/rels/m441Dll/symbols.txt +++ b/config/GMPE01_00/rels/m441Dll/symbols.txt @@ -45,147 +45,147 @@ fn_1_892C = .text:0x0000892C; // type:function size:0x174 fn_1_8AA0 = .text:0x00008AA0; // type:function size:0x2B8 fn_1_8D58 = .text:0x00008D58; // type:function size:0x11E8 fn_1_9F40 = .text:0x00009F40; // type:function size:0x570 -fn_1_A4B0 = .text:0x0000A4B0; // type:function size:0x59C +ObjectSetup = .text:0x0000A4B0; // type:function size:0x59C fn_1_AA4C = .text:0x0000AA4C; // type:function size:0xD0 _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:0x8 data:double -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:0x8 data:double -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 data:double -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:0x8 data:double -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:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -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:0x8 data:double -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float -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:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 data:double -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float -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:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -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:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -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:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -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:0x4 data:float -lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -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_1A8 = .rodata:0x000001A8; // type:object size:0x8 data:double -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 data:double -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 data:double -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 data:double -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_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:0x8 scope:local data:double +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:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 scope:local data:double +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:0x8 scope:local data:double +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:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +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:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +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:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +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:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +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:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +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:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +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:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +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_1A8 = .rodata:0x000001A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 scope:local data:double +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_data_0 = .data:0x00000000; // type:object size:0x10 lbl_1_data_10 = .data:0x00000010; // type:object size:0xC data:4byte lbl_1_data_1C = .data:0x0000001C; // type:object size:0xC lbl_1_data_28 = .data:0x00000028; // type:object size:0xC data:4byte -lbl_1_data_34 = .data:0x00000034; // type:object size:0xC data:4byte -lbl_1_data_40 = .data:0x00000040; // type:object size:0xC -lbl_1_data_4C = .data:0x0000004C; // type:object size:0xC data:4byte -lbl_1_data_58 = .data:0x00000058; // type:object size:0xC data:4byte -lbl_1_data_64 = .data:0x00000064; // type:object size:0xC -lbl_1_data_70 = .data:0x00000070; // type:object size:0xC data:4byte -lbl_1_data_7C = .data:0x0000007C; // type:object size:0xC -lbl_1_data_88 = .data:0x00000088; // type:object size:0xC +lbl_1_data_34 = .data:0x00000034; // type:object size:0xC data:float +lbl_1_data_40 = .data:0x00000040; // type:object size:0xC data:float +lbl_1_data_4C = .data:0x0000004C; // type:object size:0xC data:float +lbl_1_data_58 = .data:0x00000058; // type:object size:0xC data:float +lbl_1_data_64 = .data:0x00000064; // type:object size:0xC data:float +lbl_1_data_70 = .data:0x00000070; // type:object size:0xC data:float +lbl_1_data_7C = .data:0x0000007C; // type:object size:0xC data:float +lbl_1_data_88 = .data:0x00000088; // type:object size:0xC data:float lbl_1_data_94 = .data:0x00000094; // type:object size:0x4 -lbl_1_data_98 = .data:0x00000098; // type:object size:0xC -lbl_1_data_A4 = .data:0x000000A4; // type:object size:0xC +lbl_1_data_98 = .data:0x00000098; // type:object size:0xC data:float +lbl_1_data_A4 = .data:0x000000A4; // type:object size:0xC data:float lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x200 lbl_1_data_2B0 = .data:0x000002B0; // type:object size:0x8 lbl_1_data_2B8 = .data:0x000002B8; // type:object size:0xC lbl_1_data_2C4 = .data:0x000002C4; // type:object size:0x10 -lbl_1_data_2D4 = .data:0x000002D4; // type:object size:0x40 +lbl_1_data_2D4 = .data:0x000002D4; // type:object size:0x40 data:float lbl_1_data_314 = .data:0x00000314; // type:object size:0xC lbl_1_data_320 = .data:0x00000320; // type:object size:0x6 lbl_1_data_326 = .data:0x00000326; // type:object size:0x6 -lbl_1_data_32C = .data:0x0000032C; // type:object size:0x24 -lbl_1_data_350 = .data:0x00000350; // type:object size:0x18 +lbl_1_data_32C = .data:0x0000032C; // type:object size:0x24 data:float +lbl_1_data_350 = .data:0x00000350; // type:object size:0x18 data:float lbl_1_data_368 = .data:0x00000368; // type:object size:0x4 -lbl_1_data_36C = .data:0x0000036C; // type:object size:0xC -lbl_1_data_378 = .data:0x00000378; // type:object size:0xC -lbl_1_data_384 = .data:0x00000384; // type:object size:0xC -lbl_1_data_390 = .data:0x00000390; // type:object size:0xC +lbl_1_data_36C = .data:0x0000036C; // type:object size:0xC data:float +lbl_1_data_378 = .data:0x00000378; // type:object size:0xC data:float +lbl_1_data_384 = .data:0x00000384; // type:object size:0xC data:float +lbl_1_data_390 = .data:0x00000390; // type:object size:0xC data:float lbl_1_data_39C = .data:0x0000039C; // type:object size:0x50 lbl_1_data_3EC = .data:0x000003EC; // type:object size:0x50 lbl_1_data_43C = .data:0x0000043C; // type:object size:0x50 lbl_1_data_48C = .data:0x0000048C; // type:object size:0x50 -lbl_1_data_4DC = .data:0x000004DC; // type:object size:0x18 data:string -lbl_1_data_4F4 = .data:0x000004F4; // type:object size:0x9 data:string -lbl_1_data_4FD = .data:0x000004FD; // type:object size:0x6 data:string -lbl_1_data_503 = .data:0x00000503; // type:object size:0x1D data:string +lbl_1_data_4DC = .data:0x000004DC; // type:object size:0x18 scope:local data:string +lbl_1_data_4F4 = .data:0x000004F4; // type:object size:0x9 scope:local data:string +lbl_1_data_4FD = .data:0x000004FD; // type:object size:0x6 scope:local data:string +lbl_1_data_503 = .data:0x00000503; // type:object size:0x1D scope:local data:string jumptable_1_data_520 = .data:0x00000520; // type:object size:0x40 scope:local -lbl_1_data_560 = .data:0x00000560; // type:object size:0x8 data:string -lbl_1_data_568 = .data:0x00000568; // type:object size:0x1C +lbl_1_data_560 = .data:0x00000560; // type:object size:0x8 scope:local data:string +lbl_1_data_568 = .data:0x00000568; // type:object size:0x1B scope:local data:string jumptable_1_data_584 = .data:0x00000584; // type:object size:0x24 scope:local -lbl_1_data_5A8 = .data:0x000005A8; // type:object size:0x24 data:string +lbl_1_data_5A8 = .data:0x000005A8; // type:object size:0x24 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:float lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:float lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:float @@ -200,7 +200,8 @@ lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:float lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x2 data:2byte lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x2 data:2byte -lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x8 data:4byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:4byte +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_00/rels/m449Dll/symbols.txt b/config/GMPE01_00/rels/m449Dll/symbols.txt index b43a66db..2a91efc3 100644 --- a/config/GMPE01_00/rels/m449Dll/symbols.txt +++ b/config/GMPE01_00/rels/m449Dll/symbols.txt @@ -3,10 +3,10 @@ _epilog = .text:0x00000054; // type:function size:0x4C scope:global fn_1_A0 = .text:0x000000A0; // type:function size:0x358 fn_1_3F8 = .text:0x000003F8; // type:function size:0x360 fn_1_758 = .text:0x00000758; // type:function size:0x5EB8 -fn_1_6610 = .text:0x00006610; // type:function size:0x8 -fn_1_6618 = .text:0x00006618; // type:function size:0x2C -fn_1_6644 = .text:0x00006644; // type:function size:0x140 -fn_1_6784 = .text:0x00006784; // type:function size:0xCC +fabs = .text:0x00006610; // type:function size:0x8 scope:local +asinf = .text:0x00006618; // type:function size:0x2C scope:local +sqrt = .text:0x00006644; // type:function size:0x140 scope:local +sqrtf = .text:0x00006784; // type:function size:0xCC scope:local fn_1_6850 = .text:0x00006850; // type:function size:0x958 fn_1_71A8 = .text:0x000071A8; // type:function size:0x39C fn_1_7544 = .text:0x00007544; // type:function size:0x988 diff --git a/config/GMPE01_00/rels/mgmodedll/splits.txt b/config/GMPE01_00/rels/mgmodedll/splits.txt index b03224af..a4f47392 100644 --- a/config/GMPE01_00/rels/mgmodedll/splits.txt +++ b/config/GMPE01_00/rels/mgmodedll/splits.txt @@ -10,13 +10,13 @@ REL/executor.c: .text start:0x00000000 end:0x000000A0 REL/mgmodedll/mgmode.c: - .text start:0x000000A0 end:0x00006C18 + .text start:0x000000A0 end:0x00006D28 .rodata start:0x00000000 end:0x00000160 .data start:0x00000000 end:0x000000A0 .bss start:0x00000000 end:0x000002E0 REL/mgmodedll/free_play.c: - .text start:0x00006C18 end:0x0000D8D0 + .text start:0x00006D28 end:0x0000D8D0 .rodata start:0x00000160 end:0x000002F0 .data start:0x000000A0 end:0x00000120 .bss start:0x000002E0 end:0x00000370 diff --git a/config/GMPE01_00/rels/mstory3Dll/splits.txt b/config/GMPE01_00/rels/mstory3Dll/splits.txt index ae5dd759..6d23734f 100644 --- a/config/GMPE01_00/rels/mstory3Dll/splits.txt +++ b/config/GMPE01_00/rels/mstory3Dll/splits.txt @@ -7,13 +7,13 @@ Sections: .bss type:bss align:8 REL/mstory3Dll/main.c: - .text start:0x00000000 end:0x00006A78 + .text start:0x00000000 end:0x00006E34 .rodata start:0x00000000 end:0x00000110 .data start:0x00000000 end:0x00000130 .bss start:0x00000000 end:0x00000058 REL/mstory3Dll/result_seq.c: - .text start:0x00006A78 end:0x000157F0 + .text start:0x00006E34 end:0x000157F0 .rodata start:0x00000110 end:0x00000418 .data start:0x00000130 end:0x000007E0 .bss start:0x00000058 end:0x000018D0 diff --git a/config/GMPE01_00/rels/mstoryDll/splits.txt b/config/GMPE01_00/rels/mstoryDll/splits.txt index b8e8873f..1c6cb09d 100644 --- a/config/GMPE01_00/rels/mstoryDll/splits.txt +++ b/config/GMPE01_00/rels/mstoryDll/splits.txt @@ -7,14 +7,14 @@ Sections: .bss type:bss align:8 REL/mstoryDll/main.c: - .text start:0x00000000 end:0x00006AFC - .rodata start:0x00000000 end:0x00000100 + .text start:0x00000000 end:0x00007090 + .rodata start:0x00000000 end:0x00000108 .data start:0x00000000 end:0x00000190 .bss start:0x00000000 end:0x00000058 REL/mstoryDll/board_clear.c: - .text start:0x00006AFC end:0x0000A830 - .rodata start:0x00000100 end:0x00000268 + .text start:0x00007090 end:0x0000A830 + .rodata start:0x00000108 end:0x00000268 .data start:0x00000190 end:0x00000388 .bss start:0x00000058 end:0x000002C8 diff --git a/configure.py b/configure.py index 89ae9792..9a523092 100644 --- a/configure.py +++ b/configure.py @@ -912,7 +912,7 @@ config.libs = [ "m411Dll", # Photo Finish objects={ Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m411Dll/main.c"), + Object(Matching, "REL/m411Dll/main.c"), }, ), Rel( @@ -1148,7 +1148,7 @@ config.libs = [ Rel( "m441Dll", # Butterfly Blitz objects={ - Object(NonMatching, "REL/m441Dll/main.c"), + Object(Matching, "REL/m441Dll/main.c"), }, ), Rel( diff --git a/src/REL/m405Dll/main.c b/src/REL/m405Dll/main.c index 2837051e..1950ce88 100755 --- a/src/REL/m405Dll/main.c +++ b/src/REL/m405Dll/main.c @@ -887,7 +887,7 @@ void fn_1_2AAC(omObjData *arg0) { } for (i = 0; i < 3; i++) { temp_r26 = &lbl_1_data_10[i]; - temp_r26->unk04 = GXGetTexBufferSize(temp_r26->unk08, temp_r26->unk0A, 4, 0, 0); + temp_r26->unk04 = GXGetTexBufferSize(temp_r26->unk08, temp_r26->unk0A, GX_TF_RGB565, GX_FALSE, 0); temp_r26->unk00 = HuMemDirectMallocNum(HEAP_DATA, temp_r26->unk04, MEMORY_DEFAULT_NUM); } fn_1_280C(arg0); diff --git a/src/REL/m410Dll/player.c b/src/REL/m410Dll/player.c index 98d1e2c4..6af51bc0 100644 --- a/src/REL/m410Dll/player.c +++ b/src/REL/m410Dll/player.c @@ -735,7 +735,7 @@ void fn_1_A0A4(omObjData *object) object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM410Struct14), MEMORY_DEFAULT_NUM); var_r30 = object->data; memset(var_r30, 0, sizeof(UnkM410Struct14)); - var_r30->unk_F80 = GXGetTexBufferSize(640, 480, 5, GX_FALSE, 0); + var_r30->unk_F80 = GXGetTexBufferSize(640, 480, GX_TF_RGB5A3, GX_FALSE, 0); var_r30->unk_F84 = HuMemDirectMallocNum(HEAP_SYSTEM, var_r30->unk_F80, MEMORY_DEFAULT_NUM); DCFlushRange(var_r30->unk_F84, var_r30->unk_F80); fn_1_A9A4(&var_r30->unk_120); diff --git a/src/REL/m411Dll/main.c b/src/REL/m411Dll/main.c new file mode 100755 index 00000000..82e7e78b --- /dev/null +++ b/src/REL/m411Dll/main.c @@ -0,0 +1,2897 @@ +#include "REL/executor.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/frand.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/process.h" +#include "game/sprite.h" +#include "game/wipe.h" + +#include "dolphin.h" +#include "ext_math.h" +#include "rel_sqrt_consts.h" + +typedef struct { + /* 0x00 */ s16 unk00; + /* 0x02 */ s16 unk02[5]; + /* 0x0C */ s16 unk0C; + /* 0x0E */ s16 unk0E; + /* 0x10 */ Vec unk10; + /* 0x1C */ Vec unk1C; +} UnkBss138InnerStruct00; // Size 0x28 + +typedef struct { + /* 0x000 */ s16 unk00; + /* 0x002 */ char unk02[2]; + /* 0x004 */ Vec unk04; + /* 0x010 */ Vec unk10; + /* 0x01C */ UnkBss138InnerStruct00 unk1C[5]; + /* 0x0E4 */ UnkBss138InnerStruct00 unkE4[5]; + /* 0x1AC */ UnkBss138InnerStruct00 unk1AC[4]; + /* 0x24C */ char unk24C[0x28]; + /* 0x274 */ UnkBss138InnerStruct00 unk274[5]; +} UnkBss138Struct; // Size 0x33C + +typedef struct { + /* 0x00 */ float unk00; + /* 0x04 */ float unk04; + /* 0x08 */ float unk08; + /* 0x0C */ float unk0C; + /* 0x10 */ float unk10; + /* 0x14 */ float unk14; + /* 0x18 */ float unk18; + /* 0x1C */ float unk1C; + /* 0x20 */ float unk20; +} UnkBss474DoublyInnerStruct6C; // Size unknown + +// Maybe HsfObject, but unk1C doesn't seem to match. +typedef struct { + /* 0x00 */ char unk00[0x1C]; + /* 0x1C */ UnkBss474DoublyInnerStruct6C unk1C; +} UnkBss474InnerStruct6C; // Size unknown + +typedef struct { + /* 0x00 */ float unk00; + /* 0x04 */ float unk04; + /* 0x08 */ float unk08; + /* 0x0C */ float unk0C; + /* 0x10 */ float unk10; + /* 0x14 */ float unk14; + /* 0x18 */ float unk18; + /* 0x1C */ float unk1C; + /* 0x20 */ float unk20; +} UnkBss474InnerStructE4; // Size 0x24 + +typedef struct { + /* 0x000 */ s16 unk00; + /* 0x002 */ s16 unk02; + /* 0x004 */ s16 unk04; + /* 0x006 */ s16 unk06; + /* 0x008 */ s16 unk08; + /* 0x00A */ s16 unk0A; + /* 0x00C */ s16 unk0C; + /* 0x00E */ s16 unk0E[9]; + /* 0x020 */ s16 unk20; + /* 0x022 */ s16 unk22[9]; + /* 0x034 */ s32 unk34; + /* 0x038 */ s32 unk38; + /* 0x03C */ s32 unk3C; + /* 0x040 */ s32 unk40; + /* 0x044 */ s32 unk44; + /* 0x048 */ float unk48; + /* 0x04C */ float unk4C; + /* 0x050 */ float unk50; + /* 0x054 */ float unk54; + /* 0x058 */ float unk58; + /* 0x05C */ float unk5C; + /* 0x060 */ float unk60; + /* 0x064 */ float unk64; + /* 0x068 */ float unk68; + /* 0x06C */ UnkBss474InnerStruct6C* unk6C[10]; + /* 0x094 */ UnkBss474InnerStruct6C* unk94[10]; + /* 0x0BC */ UnkBss474InnerStruct6C* unkBC[10]; + /* 0x0E4 */ UnkBss474InnerStructE4 unkE4[10]; + /* 0x24C */ AnimData* unk24C; + /* 0x250 */ AnimData* unk250; + /* 0x254 */ s8 unk254; + /* 0x255 */ s8 unk255; + /* 0x256 */ s8 unk256; + /* 0x257 */ s8 unk257; + /* 0x258 */ u16 unk258; + /* 0x25A */ char unk25A[0xA]; + /* 0x264 */ s32 unk264; + /* 0x268 */ s32 unk268; +} UnkBss474Struct; // Size 0x26C + +typedef struct { + /* 0x00 */ UnkBss474Struct* unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32* unk0C; +} UnkFn64A3Struct; // Size unknown + +void fn_1_E80(omObjData* arg0); +void fn_1_F8C(float arg0); +void fn_1_1074(void); +void fn_1_1498(s16 layer); +s32 fn_1_1520(void); +s32 fn_1_1C4C(void); +s32 fn_1_20C8(void); +void fn_1_25D0(void); +void fn_1_34B0(ModelData* model, ParticleData* particle, Mtx matrix, s32 arg3); +void fn_1_3A60(ModelData* model, ParticleData* particle, Mtx matrix); +void fn_1_3A9C(ModelData* model, ParticleData* particle, Mtx matrix); +void fn_1_3AD8(ModelData* model, ParticleData* particle, Mtx matrix); +void fn_1_3B14(ModelData* model, ParticleData* particle, Mtx matrix); +void fn_1_3B50(void); +void fn_1_3F34(void); +void fn_1_4218(void); +void fn_1_4454(void); +void fn_1_4968(void); +void fn_1_4BB0(void); +void fn_1_4E8C(void); +void fn_1_507C(void); +void fn_1_5384(void); +void fn_1_544C(void); +void fn_1_5554(void); +void fn_1_58BC(void); +void fn_1_5910(void); +s8 fn_1_5D58(s32 arg0, s32 arg1); +u8 fn_1_5E10(s32 arg0, s32 arg1); +u16 fn_1_5ED0(s32 arg0); +void fn_1_5F3C(UnkBss474Struct* arg0, s32 arg1); +void fn_1_6428(UnkBss474Struct* arg0, s32 arg1); +void fn_1_6820(UnkBss474Struct* arg0, s32 arg1, s32 arg2); +void fn_1_6A3C(void); +void fn_1_6CF4(void); +void fn_1_6DD8(UnkBss474Struct* arg0, s32 arg1); +void fn_1_6E9C(s32 arg0, s32 arg1); +void fn_1_6F48(UnkBss474Struct* arg0, s32 arg1, s32 arg2); +void fn_1_75C8(void); +void fn_1_7680(void); +void fn_1_7738(void); +void fn_1_8A80(float arg0, float arg1); +void fn_1_8DBC(void); +void fn_1_9490(void); +void fn_1_9BC0(s32 arg0); +void fn_1_A004(void); +void fn_1_A07C(void); +void fn_1_A120(s32 arg0); +void fn_1_A4B4(s32 arg0); +void fn_1_A788(s32 arg0); +void fn_1_ACB0(void); +void fn_1_AD58(void); + +s16 lbl_1_bss_EA0; +s16 lbl_1_bss_E9E; +s16 lbl_1_bss_E9C; +s32 lbl_1_bss_E98; +s32 lbl_1_bss_E94; +s32 lbl_1_bss_E6C[10]; +s32 lbl_1_bss_E44[10]; +s32 lbl_1_bss_E40; +s32 lbl_1_bss_E3C; +s32 lbl_1_bss_E38; +s32 lbl_1_bss_E2C[3]; +s32 lbl_1_bss_E28; +float lbl_1_bss_E24; +UnkBss474Struct lbl_1_bss_474[4]; +UnkBss138Struct lbl_1_bss_138; +omObjData* lbl_1_bss_134; +Process* lbl_1_bss_124[4]; +Vec lbl_1_bss_C4[8]; +Vec lbl_1_bss_64[8]; +Vec lbl_1_bss_4[8]; +void* lbl_1_bss_0; + +float lbl_1_data_0[][7] = { + { -10.0f, 0.0f, 0.0f, 0.0f, 0.0f, -3375.0f, 7460.0f }, + { -9.5f, 0.0f, 0.0f, 0.0f, 0.0f, -510.0f, 1860.0f }, + { -5.0f, 0.0f, 0.0f, 0.0f, 0.0f, -2870.0f, 5060.0f } +}; + +s32 lbl_1_data_54[] = { + DATA_MAKE_NUM(DATADIR_M411, 9), + DATA_MAKE_NUM(DATADIR_M411, 11), + DATA_MAKE_NUM(DATADIR_M411, 10) +}; + +char* lbl_1_data_6C[] = { + "puzzle00", "puzzle00", "puzzle00" +}; + +char* lbl_1_data_1C8[][10] = { + { + "puzzle_B1-p01", "puzzle_B1-p02", "puzzle_B1-p03", "puzzle_B1-p04", + "puzzle_B1-p05", "puzzle_B1-p06", "puzzle_B1-p07", "puzzle_B1-p08" + }, + { + "puzzle_B2-p01", "puzzle_B2-p02", "puzzle_B2-p03", "puzzle_B2-p04", + "puzzle_B2-p05", "puzzle_B2-p06", "puzzle_B2-p07", "puzzle_B2-p08" + }, + { + "puzzle_B3-p01", "puzzle_B3-p02", "puzzle_B3-p03", "puzzle_B3-p04", + "puzzle_B3-p05", "puzzle_B3-p06", "puzzle_B3-p07", "puzzle_B3-p08" + } +}; + +s32 lbl_1_data_240[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; + +s32 lbl_1_data_260[8] = { + DATA_MAKE_NUM(DATADIR_MARIOMDL1, 0), + DATA_MAKE_NUM(DATADIR_LUIGIMDL1, 0), + DATA_MAKE_NUM(DATADIR_PEACHMDL1, 0), + DATA_MAKE_NUM(DATADIR_YOSHIMDL1, 0), + DATA_MAKE_NUM(DATADIR_WARIOMDL1, 0), + DATA_MAKE_NUM(DATADIR_DONKEYMDL1, 0), + DATA_MAKE_NUM(DATADIR_DAISYMDL1, 0), + DATA_MAKE_NUM(DATADIR_WALUIGIMDL1, 0) +}; + +s32 lbl_1_data_280[] = { + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 1), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 2), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 5), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 6), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 27), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 32), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 33), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 23) +}; + +s32 lbl_1_data_2A4[8] = { + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0) +}; + +s32 lbl_1_data_2C4[] = { + DATA_MAKE_NUM(DATADIR_M411, 27), + DATA_MAKE_NUM(DATADIR_M411, 28), + DATA_MAKE_NUM(DATADIR_M411, 23) +}; + +s32 lbl_1_data_2D0[] = { + DATA_MAKE_NUM(DATADIR_M411, 30), + DATA_MAKE_NUM(DATADIR_M411, 31), + DATA_MAKE_NUM(DATADIR_M411, 32), + DATA_MAKE_NUM(DATADIR_M411, 33), + DATA_MAKE_NUM(DATADIR_M411, 34) +}; + +void ObjectSetup(void) { + Vec sp24; + Vec sp18; + Vec spC; + float temp_f31; + float temp_f30; + float sp8; + Process* temp_r3; + s32 var_r29; + s32 i; + + var_r29 = GWSystem.mg_type; + lbl_1_bss_E40 = var_r29; + if (var_r29 == -1) { + lbl_1_bss_E40 = frandmod(3); + } + lbl_1_bss_E3C = frandmod(3); + switch (lbl_1_bss_E3C) { + case 0: + lbl_1_bss_E38 = 8; + break; + case 1: + lbl_1_bss_E38 = 8; + break; + default: + lbl_1_bss_E38 = 8; + break; + } + temp_r3 = omInitObjMan(50, 0x2000); + omGameSysInit(temp_r3); + Hu3DCameraCreate(0x1F); + Hu3DCameraPerspectiveSet(1, 15.0f, 20.0f, 25000.0f, 1.2f); + Hu3DCameraPerspectiveSet(0x1E, 15.0f, 20.0f, 25000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 320.0f, 240.0f, 0.0f, 1.0f); + Hu3DCameraViewportSet(2, 0.0f, 0.0f, 318.0f, 238.0f, 0.0f, 1.0f); + Hu3DCameraViewportSet(4, 322.0f, 0.0f, 318.0f, 238.0f, 0.0f, 1.0f); + Hu3DCameraViewportSet(8, 0.0f, 242.0f, 318.0f, 238.0f, 0.0f, 1.0f); + Hu3DCameraViewportSet(0x10, 322.0f, 242.0f, 318.0f, 238.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(1, 0, 0, 0x140, 0xF0); + Hu3DCameraScissorSet(2, 0, 0, 0x13E, 0xEE); + Hu3DCameraScissorSet(4, 0x142, 0, 0x13E, 0xEE); + Hu3DCameraScissorSet(8, 0, 0xF2, 0x13E, 0xEE); + Hu3DCameraScissorSet(0x10, 0x142, 0xF2, 0x13E, 0xEE); + if (lbl_1_bss_E40 == 0) { + lbl_1_bss_134 = omAddObjEx(temp_r3, 0x7FDA, 0, 0, -1, fn_1_E80); + } else { + lbl_1_bss_134 = omAddObjEx(temp_r3, 0x7FDA, 0, 0, -1, omOutViewMulti); + } + lbl_1_bss_134->work[0] = 5; + for (i = 0; i < 1; i++) { + CRotM[i].x = lbl_1_data_0[lbl_1_bss_E40][0]; + CRotM[i].y = lbl_1_data_0[lbl_1_bss_E40][1]; + CRotM[i].z = lbl_1_data_0[lbl_1_bss_E40][2]; + CenterM[i].x = lbl_1_data_0[lbl_1_bss_E40][3]; + CenterM[i].y = lbl_1_data_0[lbl_1_bss_E40][4]; + CenterM[i].z = lbl_1_data_0[lbl_1_bss_E40][5]; + CZoomM[i] = lbl_1_data_0[lbl_1_bss_E40][6]; + } + for (i = 1; i < lbl_1_bss_134->work[0]; i++) { + CRotM[i].x = 0.0f; + CRotM[i].y = 0.0f; + CRotM[i].z = 0.0f; + CenterM[i].x = 0.0f; + CenterM[i].y = 0.0f; + CenterM[i].z = 0.0f; + CZoomM[i] = 1900.0f; + } + temp_f31 = CRotM[1].x; + temp_f30 = CRotM[1].y; + sp8 = CRotM[1].z; + lbl_1_bss_C4[1].x = CenterM[1].x + sind(temp_f30) * cosd(temp_f31) * CZoomM[1]; + lbl_1_bss_C4[1].y = CenterM[1].y + -sind(temp_f31) * CZoomM[1]; + lbl_1_bss_C4[1].z = CenterM[1].z + cosd(temp_f30) * cosd(temp_f31) * CZoomM[1]; + lbl_1_bss_64[1].x = CenterM[1].x; + lbl_1_bss_64[1].y = CenterM[1].y; + lbl_1_bss_64[1].z = CenterM[1].z; + lbl_1_bss_4[1].x = sind(temp_f30) * sind(temp_f31); + lbl_1_bss_4[1].y = cosd(temp_f31); + lbl_1_bss_4[1].z = cosd(temp_f30) * sind(temp_f31); + for (i = 0; i < 1; i++) { + lbl_1_bss_C4[i].x = 0.0f; + lbl_1_bss_C4[i].y = 1295.0f; + lbl_1_bss_C4[i].z = 3971.0f; + lbl_1_bss_4[i].x = 0.0f; + lbl_1_bss_4[i].y = 1.0f; + lbl_1_bss_4[i].z = 0.0f; + lbl_1_bss_64[i].x = 0.0f; + lbl_1_bss_64[i].y = 0.0f; + lbl_1_bss_64[i].z = -3375.0f; + } + for (i = 1; i < lbl_1_bss_134->work[0]; i++) { + lbl_1_bss_C4[i].x = 0.0f; + lbl_1_bss_C4[i].y = 0.0f; + lbl_1_bss_C4[i].z = 1900.0f; + lbl_1_bss_4[i].x = 0.0f; + lbl_1_bss_4[i].y = 1.0f; + lbl_1_bss_4[i].z = 0.0f; + lbl_1_bss_64[i].x = 0.0f; + lbl_1_bss_64[i].y = 0.0f; + lbl_1_bss_64[i].z = 0.0f; + } + Hu3DLighInit(); + lbl_1_bss_EA0 = Hu3DGLightCreate(10000.0f, 0.0f, 10000.0f, -1.0f, 0.0f, -1.0f, 0xFF, 0xFF, 0xFF); + Hu3DGLightPosAimSet(lbl_1_bss_EA0, 0.0f, 6796.88f, 9706.95f, 0.0f, 0.0f, 0.0f); + Hu3DGLightInfinitytSet(lbl_1_bss_EA0); + sp24.x = -1800.0f; + sp24.y = 3600.0f; + sp24.z = 0.0f; + sp18.x = sp18.z = 0.0f; + sp18.y = 1.0f; + spC.x = -100.0f; + spC.y = 0.0f; + spC.z = 0.0f; + Hu3DShadowCreate(30.0f, 20.0f, 10000.0f); + Hu3DShadowTPLvlSet(0.4f); + Hu3DShadowPosSet(&sp24, &sp18, &spC); + Hu3DBGColorSet(0, 0, 0); + fn_1_25D0(); + fn_1_8A80(640.0f, 480.0f); + HuPrcChildCreate(fn_1_AD58, 0x1000, 0x2000, 0, HuPrcCurrentGet()); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); +} + +void fn_1_E80(omObjData* arg0) { + s32 i; + + for (i = 0; i < arg0->work[0]; i++) { + Hu3DCameraPosSet(1 << i, lbl_1_bss_C4[i].x, lbl_1_bss_C4[i].y, lbl_1_bss_C4[i].z, lbl_1_bss_4[i].x, lbl_1_bss_4[i].y, lbl_1_bss_4[i].z, lbl_1_bss_64[i].x, lbl_1_bss_64[i].y, lbl_1_bss_64[i].z); + } +} + +void fn_1_F8C(float arg0) { + lbl_1_bss_E24 = arg0; + Hu3DTexScrollPosMoveSet(lbl_1_bss_E9E, -0.01f * arg0, 0.0f, 0.0f); + Hu3DTexScrollPosMoveSet(lbl_1_bss_E9C, -0.017f * arg0, 0.0f, 0.0f); + HuAudFXPitchSet(lbl_1_bss_E2C[0], -8191.0f * (1.0f - arg0)); +} + +void fn_1_1074(void) { + Mtx44 sp64; + Mtx sp34; + Vec sp28; + Vec sp1C; + Vec sp10; + GXColor spC; + CameraData* var_r31; + + var_r31 = &Hu3DCamera[0]; + C_MTXPerspective(sp64, var_r31->fov, var_r31->aspect, var_r31->near, var_r31->far); + GXSetProjection(sp64, GX_PERSPECTIVE); + GXSetViewport(0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + GXSetScissor(0, 0, 640, 480); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_RGBA6, 0); + spC.r = spC.g = spC.b = 0; + spC.a = 0xFF; + GXSetTevColor(GX_TEVREG0, spC); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_A0); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumTexGens(0); + GXSetNumTevStages(1); + GXSetCullMode(GX_CULL_NONE); + GXSetZMode(GX_TRUE, GX_ALWAYS, GX_TRUE); + sp28.x = sp28.y = sp28.z = 0.0f; + sp1C.x = sp1C.y = 0.0f; + sp1C.z = -100.0f; + sp10.x = sp10.z = 0.0f; + sp10.y = 1.0f; + C_MTXLookAt(sp34, &sp28, &sp10, &sp1C); + GXLoadPosMtxImm(sp34, GX_PNMTX0); + sp28.x = 10000.0f * -sin(var_r31->fov / 2) * 1.2f; + sp28.y = 10000.0f * -sin(var_r31->fov / 2) * 0.8333333f; + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(-sp28.x, -sp28.y, -10000.0f); + GXPosition3f32(sp28.x, -sp28.y, -10000.0f); + GXPosition3f32(sp28.x, sp28.y, -10000.0f); + GXPosition3f32(-sp28.x, sp28.y, -10000.0f); + GXEnd(); +} + +void fn_1_1498(s16 layer) { + if (Hu3DCameraNo == 1) { + GXSetTexCopySrc(0, 0, 320, 240); + GXSetTexCopyDst(320, 240, GX_TF_RGB5A3, GX_FALSE); + GXCopyTex(lbl_1_bss_0, GX_TRUE); + DCFlushRange(lbl_1_bss_0, 0x25800); // TODO: sizeof? + fn_1_1074(); + } +} + +s32 fn_1_1520(void) { + UnkBss138Struct* var_r30; + UnkBss138InnerStruct00* var_r31; + UnkBss138InnerStruct00* temp_r28; + Process* var_r23; + void* var_r26; + s16 var_r27; + s16 var_r24; + s16 var_r22; + s16 var_r21; + s32 i; + s32 j; + + var_r30 = &lbl_1_bss_138; + var_r26 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 15), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30->unk00 = var_r27 = Hu3DModelCreate(var_r26); + Hu3DModelCameraSet(var_r27, 1); + var_r30->unk04.x = var_r30->unk04.y = var_r30->unk04.z = 0.0f; + var_r30->unk10.x = var_r30->unk10.y = var_r30->unk10.z = 0.0f; + Hu3DModelPosSet(var_r27, var_r30->unk04.x, var_r30->unk04.y, var_r30->unk04.z); + Hu3DModelRotSet(var_r27, var_r30->unk10.x, var_r30->unk10.y, var_r30->unk10.z); + Hu3DModelShadowMapSet(var_r27); + var_r26 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 16), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30->unk1C[0].unk00 = var_r27 = Hu3DModelCreate(var_r26); + Hu3DModelCameraSet(var_r27, 1); + Hu3DModelPosSet(var_r27, var_r30->unk04.x, var_r30->unk04.y, var_r30->unk04.z); + Hu3DModelRotSet(var_r27, var_r30->unk10.x, var_r30->unk10.y, var_r30->unk10.z); + var_r31 = &var_r30->unkE4[0]; + var_r26 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 17), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r31->unk00 = var_r27 = Hu3DModelCreate(var_r26); + Hu3DModelAttrSet(var_r27, 1); + Hu3DModelCameraSet(var_r27, 1); + var_r26 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 18), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r31->unk0C = var_r24 = Hu3DModelCreate(var_r26); + Hu3DModelAttrSet(var_r24, 1); + Hu3DModelCameraSet(var_r24, 1); + for (i = 1; i < 5; i++) { + var_r31 = &var_r30->unkE4[i]; + var_r31->unk00 = Hu3DModelLink(var_r27); + Hu3DModelAttrSet(var_r31->unk00, 1); + Hu3DModelCameraSet(var_r31->unk00, 1); + if (i == 1) { + var_r26 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 19), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r31->unk0C = var_r22 = Hu3DModelCreate(var_r26); + } else if (i & 1) { + var_r31->unk0C = Hu3DModelLink(var_r22); + } else { + var_r31->unk0C = Hu3DModelLink(var_r24); + } + Hu3DModelAttrSet(var_r31->unk0C, 1); + Hu3DModelCameraSet(var_r31->unk0C, 1); + } + var_r26 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 17), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30->unk274[0].unk00 = var_r27 = Hu3DModelCreate(var_r26); + Hu3DModelAttrSet(var_r27, 1); + Hu3DModelCameraSet(var_r27, 1); + for (i = 1; i < 5; i++) { + var_r30->unk274[i].unk00 = Hu3DModelLink(var_r27); + Hu3DModelAttrSet(var_r30->unk274[i].unk00, 1); + Hu3DModelCameraSet(var_r30->unk274[i].unk00, 1); + } + var_r31 = &var_r30->unk1C[1]; + var_r26 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 20), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r31->unk00 = var_r27 = Hu3DModelCreate(var_r26); + Hu3DModelCameraSet(var_r27, 1); + var_r31->unk10.x = -470.0f; + var_r31->unk10.y = 0.0f; + var_r31->unk10.z = -930.0f; + var_r31->unk1C.x = 0.0f; + var_r31->unk1C.y = 90.0f; + var_r31->unk1C.z = 0.0f; + Hu3DModelPosSet(var_r27, var_r31->unk10.x, var_r31->unk10.y, var_r31->unk10.z); + Hu3DModelRotSet(var_r27, var_r31->unk1C.x, var_r31->unk1C.y, var_r31->unk1C.z); + for (i = 0; i < 3; i++) { + var_r26 = HuDataSelHeapReadNum(lbl_1_data_2C4[i], MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r31->unk02[i] = Hu3DJointMotion(var_r27, var_r26); + } + Hu3DMotionSet(var_r27, var_r31->unk02[0]); + Hu3DModelAttrSet(var_r27, 0x40000001); + Hu3DModelShadowSet(var_r27); + temp_r28 = &var_r30->unk1C[2]; + temp_r28->unk00 = Hu3DModelLink(var_r27); + Hu3DModelCameraSet(temp_r28->unk00, 1); + Hu3DModelPosSet(temp_r28->unk00, var_r31->unk10.x, var_r31->unk10.y, var_r31->unk10.z); + Hu3DModelRotSet(temp_r28->unk00, var_r31->unk1C.x, var_r31->unk1C.y, var_r31->unk1C.z); + for (i = 0; i < 3; i++) { + var_r26 = HuDataSelHeapReadNum(lbl_1_data_2C4[i], MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r28->unk02[i] = Hu3DJointMotion(var_r27, var_r26); + } + Hu3DModelAttrSet(temp_r28->unk00, 0x800000); + Hu3DModelAttrSet(temp_r28->unk00, 0x40000001); + Hu3DModelScaleSet(temp_r28->unk00, 1.0f, -1.0f, 1.0f); + for (i = 0; i < 2; i++) { + var_r31 = &var_r30->unk1AC[i]; + var_r26 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 29), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r31->unk00 = var_r21 = Hu3DModelCreate(var_r26); + var_r27 = var_r31->unk00; + var_r31->unk0E = i; + Hu3DModelCameraSet(var_r27, 1); + for (j = 0; j < 5; j++) { + var_r26 = HuDataSelHeapReadNum(lbl_1_data_2D0[j], MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r31->unk02[j] = Hu3DJointMotion(var_r27, var_r26); + } + Hu3DMotionSet(var_r27, var_r31->unk02[0]); + Hu3DModelAttrSet(var_r27, 0x40000001); + var_r31->unk10.x = 200.0f; + var_r31->unk10.y = 0.0f; + var_r31->unk10.z = -930.0f; + Hu3DModelPosSet(var_r27, var_r31->unk10.x, var_r31->unk10.y, var_r31->unk10.z); + Hu3DModelShadowSet(var_r27); + } + for (i = 2; i < 4; i++) { + temp_r28 = &var_r30->unk1AC[i]; + temp_r28->unk00 = Hu3DModelLink(var_r21); + temp_r28->unk0E = i; + for (j = 0; j < 5; j++) { + var_r26 = HuDataSelHeapReadNum(lbl_1_data_2D0[j], MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r28->unk02[j] = Hu3DJointMotion(temp_r28->unk00, var_r26); + } + Hu3DModelCameraSet(temp_r28->unk00, 1); + Hu3DModelAttrSet(temp_r28->unk00, 0x800000); + Hu3DModelAttrSet(temp_r28->unk00, 0x40000001); + Hu3DModelPosSet(temp_r28->unk00, var_r31->unk10.x, var_r31->unk10.y, var_r31->unk10.z); + Hu3DModelScaleSet(temp_r28->unk00, 1.0f, -1.0f, 1.0f); + } + var_r23 = HuPrcChildCreate(fn_1_4BB0, 0x2000, 0x2000, 0, HuPrcCurrentGet()); + var_r23->user_data = var_r30; +} + +s32 fn_1_1C4C(void) { + UnkBss138Struct* var_r30; + UnkBss138InnerStruct00* var_r29; + s16 var_r31; + s16 sp8; + s16 temp_r27; + Process* var_r26; + void* var_r28; + + var_r30 = &lbl_1_bss_138; + var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 35), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30->unk00 = var_r31 = Hu3DModelCreate(var_r28); + Hu3DModelCameraSet(var_r31, 1); + var_r30->unk04.x = var_r30->unk04.y = var_r30->unk04.z = 0.0f; + var_r30->unk10.x = var_r30->unk10.y = var_r30->unk10.z = 0.0f; + Hu3DModelPosSet(var_r31, var_r30->unk04.x, var_r30->unk04.y, var_r30->unk04.z); + Hu3DModelRotSet(var_r31, var_r30->unk10.x, var_r30->unk10.y, var_r30->unk10.z); + Hu3DModelShadowMapSet(var_r31); + var_r29 = &var_r30->unk1C[0]; + var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 36), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r29->unk00 = var_r31 = Hu3DModelCreate(var_r28); + Hu3DModelCameraSet(var_r31, 1); + Hu3DModelAttrSet(var_r31, 0x40000001); + Hu3DModelShadowSet(var_r31); + var_r29 = &var_r30->unk1C[1]; + var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 38), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r31 = sp8 = Hu3DModelCreate(var_r28); + var_r29->unk00 = var_r31; + Hu3DModelCameraSet(var_r31, 1); + var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 39), MEMORY_DEFAULT_NUM, HEAP_DATA); + Hu3DMotionSet(var_r31, Hu3DJointMotion(var_r31, var_r28)); + Hu3DModelAttrSet(var_r31, 0x40000001); + Hu3DModelShadowSet(var_r31); + var_r29 = &var_r30->unk1C[2]; + var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 38), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r29->unk00 = var_r31 = Hu3DModelCreate(var_r28); + Hu3DModelCameraSet(var_r31, 1); + var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 40), MEMORY_DEFAULT_NUM, HEAP_DATA); + Hu3DMotionSet(var_r31, Hu3DJointMotion(var_r31, var_r28)); + Hu3DModelAttrSet(var_r31, 0x40000001); + Hu3DModelPosSet(var_r31, 0.0f, 60.0f, -70.0f); + Hu3DModelShadowSet(var_r31); + var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 37), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r27 = Hu3DModelCreate(var_r28); + var_r29 = &var_r30->unkE4[0]; + var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 38), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r29->unk00 = var_r31 = Hu3DModelCreate(var_r28); + Hu3DModelCameraSet(var_r31, 1); + var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 41), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r29->unk02[0] = Hu3DJointMotion(var_r31, var_r28); + var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 42), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r29->unk02[1] = Hu3DJointMotion(var_r31, var_r28); + var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 45), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r29->unk02[2] = Hu3DJointMotion(var_r31, var_r28); + Hu3DMotionSet(var_r31, var_r29->unk02[0]); + Hu3DModelAttrSet(var_r31, 1); + Hu3DModelAttrSet(var_r31, 0x40000001); + Hu3DModelHookSet(var_r31, "itemhook_r", temp_r27); + Hu3DModelShadowSet(var_r31); + var_r29 = &var_r30->unkE4[1]; + var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 38), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r29->unk00 = var_r31 = Hu3DModelCreate(var_r28); + Hu3DModelCameraSet(var_r31, 1); + var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 43), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r29->unk02[0] = Hu3DJointMotion(var_r31, var_r28); + var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 44), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r29->unk02[1] = Hu3DJointMotion(var_r31, var_r28); + var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 46), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r29->unk02[2] = Hu3DJointMotion(var_r31, var_r28); + Hu3DMotionSet(var_r31, var_r29->unk02[0]); + Hu3DModelAttrSet(var_r31, 1); + Hu3DModelAttrSet(var_r31, 0x40000001); + Hu3DModelHookSet(var_r31, "itemhook_l", temp_r27); + Hu3DModelShadowSet(var_r31); + var_r26 = HuPrcChildCreate(fn_1_5384, 0x2000, 0x2000, 0, HuPrcCurrentGet()); + var_r26->user_data = var_r30; +} + +s32 fn_1_20C8(void) { + UnkBss138Struct* var_r31; + UnkBss138InnerStruct00* temp_r29; + Process* var_r26; + void* var_r28; + s16 var_r30; + s16 var_r25; + s32 i; + + var_r31 = &lbl_1_bss_138; + var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 47), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r28); + var_r31->unk00 = var_r30; + Hu3DModelCameraSet(var_r30, 1); + var_r31->unk04.x = var_r31->unk04.y = var_r31->unk04.z = 0.0f; + var_r31->unk10.x = var_r31->unk10.y = var_r31->unk10.z = 0.0f; + Hu3DModelPosSet(var_r30, var_r31->unk04.x, var_r31->unk04.y, var_r31->unk04.z); + Hu3DModelRotSet(var_r30, var_r31->unk10.x, var_r31->unk10.y, var_r31->unk10.z); + Hu3DModelShadowMapSet(var_r30); + lbl_1_bss_E9E = Hu3DTexScrollCreate(var_r30, "jimen01"); + Hu3DTexScrollPosMoveSet(lbl_1_bss_E9E, -0.01f, 0.0f, 0.0f); + lbl_1_bss_E9C = Hu3DTexScrollCreate(var_r30, "kusa01"); + Hu3DTexScrollPosMoveSet(lbl_1_bss_E9C, -0.017f, 0.0f, 0.0f); + lbl_1_bss_E24 = 1.0f; + Hu3DTexScrollPosMoveSet(lbl_1_bss_E9E, -0.01f, 0.0f, 0.0f); + Hu3DTexScrollPosMoveSet(lbl_1_bss_E9C, -0.017f, 0.0f, 0.0f); + HuAudFXPitchSet(lbl_1_bss_E2C[0], 0); + temp_r29 = &var_r31->unk1C[0]; + var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 48), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r28); + temp_r29->unk00 = var_r30; + Hu3DModelCameraSet(var_r30, 1); + Hu3DModelPosSet(var_r30, var_r31->unk04.x, var_r31->unk04.y, var_r31->unk04.z); + Hu3DModelRotSet(var_r30, var_r31->unk10.x, var_r31->unk10.y, var_r31->unk10.z); + Hu3DModelAttrSet(var_r30, 0x40000001); + Hu3DMotionTimeSet(var_r30, Hu3DMotionMaxTimeGet(var_r30) / 4); + temp_r29 = &var_r31->unk1C[1]; + var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 49), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r28); + temp_r29->unk00 = var_r30; + Hu3DModelCameraSet(var_r30, 1); + Hu3DModelPosSet(var_r30, var_r31->unk04.x, var_r31->unk04.y, var_r31->unk04.z); + Hu3DModelRotSet(var_r30, var_r31->unk10.x, var_r31->unk10.y, var_r31->unk10.z); + Hu3DModelAttrSet(var_r30, 0x40000001); + Hu3DMotionTimeSet(var_r30, Hu3DMotionMaxTimeGet(var_r30) / 4); + for (i = 0; i < 3; i++) { + temp_r29 = &var_r31->unk1C[i + 2]; + if (i == 0) { + var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 50), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r29->unk00 = var_r30 = var_r25 = Hu3DModelCreate(var_r28); + } else { + temp_r29->unk00 = Hu3DModelLink(var_r25); + } + var_r30 = temp_r29->unk00; + Hu3DModelCameraSet(var_r30, 1); + Hu3DModelAttrSet(var_r30, 0x40000040); + } + temp_r29 = &var_r31->unkE4[0]; + var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 51), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r28); + temp_r29->unk00 = var_r30; + Hu3DModelCameraSet(var_r30, 1); + for (i = 0; i < 5; i++) { + var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 52 + i), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r29->unk02[i] = Hu3DJointMotion(var_r30, var_r28); + } + temp_r29->unk10.x = temp_r29->unk10.y = temp_r29->unk10.z = 0.0f; + Hu3DModelPosSet(var_r30, temp_r29->unk10.x, temp_r29->unk10.y, temp_r29->unk10.z); + Hu3DModelRotSet(var_r30, 0.0f, -90.0f, 0.0f); + Hu3DModelAttrSet(var_r30, 0x40000001); + Hu3DModelShadowSet(var_r30); + Hu3DMotionSet(var_r30, temp_r29->unk02[0]); + temp_r29 = &var_r31->unk1AC[0]; + var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 57), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r28); + temp_r29->unk00 = var_r30; + Hu3DModelCameraSet(var_r30, 1); + Hu3DModelAttrSet(var_r30, 1); + var_r26 = HuPrcChildCreate(fn_1_5910, 0x2000, 0x2000, 0, HuPrcCurrentGet()); + var_r26->user_data = var_r31; +} + +ParticleHook lbl_1_data_30C[] = { + fn_1_3A60, + fn_1_3A9C, + fn_1_3AD8, + fn_1_3B14 +}; + +void fn_1_25D0(void) { + u32 temp_r24; + UnkBss474Struct* temp_r31; + void* var_r28; + UnkBss474InnerStructE4* temp_r27; + UnkBss474DoublyInnerStruct6C* temp_r26; + AnimData* var_r21; + AnimData* var_r20; + Process* var_r23; + s16 temp_r25; + s32 var_r22; + s32 i; + s32 j; + + HuAudSndGrpSet(0x24); + temp_r24 = GXGetTexBufferSize(320, 240, GX_TF_RGB5A3, GX_FALSE, 0); + if (!lbl_1_bss_0) { + lbl_1_bss_0 = HuMemDirectMallocNum(HEAP_DATA, temp_r24, MEMORY_DEFAULT_NUM); + } + Hu3DLayerHookSet(0, fn_1_1498); + switch (lbl_1_bss_E40) { + case 0: + fn_1_1520(); + break; + case 1: + fn_1_1C4C(); + break; + default: + fn_1_20C8(); + break; + } + for (i = 0; i < 4; i++) { + temp_r31 = &lbl_1_bss_474[i]; + temp_r31->unk34 = i; + temp_r31->unk3C = GWPlayerCfg[i].pad_idx; + temp_r31->unk38 = i + 1; + temp_r31->unk44 = 0; + temp_r31->unk264 = -1; + var_r28 = HuDataSelHeapReadNum(lbl_1_data_54[lbl_1_bss_E3C], MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unk00 = Hu3DModelCreate(var_r28); + temp_r31->unk24C = HuSprAnimMake(320, 240, 2); + temp_r31->unk24C->bmp->data = lbl_1_bss_0; + Hu3DAnimCreate(temp_r31->unk24C, temp_r31->unk00, lbl_1_data_6C[lbl_1_bss_E3C]); + Hu3DModelCameraSet(temp_r31->unk00, 1 << temp_r31->unk38); + Hu3DModelPosSet(temp_r31->unk00, 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(temp_r31->unk00, 0.0f, 0.0f, 0.0f); + Hu3DModelAttrSet(temp_r31->unk00, 0x4001); + var_r28 = HuDataSelHeapReadNum(lbl_1_data_54[lbl_1_bss_E3C], MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unk04 = Hu3DModelCreate(var_r28); + var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 14), MEMORY_DEFAULT_NUM, HEAP_DATA); + Hu3DAnimCreate(var_r28, temp_r31->unk04, lbl_1_data_6C[lbl_1_bss_E3C]); + Hu3DModelCameraSet(temp_r31->unk04, 1 << temp_r31->unk38); + Hu3DModelPosSet(temp_r31->unk04, 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(temp_r31->unk04, 0.0f, 0.0f, 0.0f); + var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 12), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unk02 = Hu3DModelCreate(var_r28); + temp_r31->unk250 = HuSprAnimMake(320, 240, 2); + temp_r31->unk250->bmp->data = lbl_1_bss_0; + Hu3DAnimCreate(temp_r31->unk250, temp_r31->unk02, lbl_1_data_6C[lbl_1_bss_E3C]); + Hu3DModelCameraSet(temp_r31->unk02, 1 << temp_r31->unk38); + Hu3DModelPosSet(temp_r31->unk02, 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(temp_r31->unk02, 0.0f, 0.0f, 0.0f); + var_r28 = HuDataSelHeapReadNum(lbl_1_data_54[lbl_1_bss_E3C], MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unk06 = Hu3DModelCreate(var_r28); + Hu3DModelCameraSet(temp_r31->unk06, 1 << temp_r31->unk38); + Hu3DModelPosSet(temp_r31->unk06, 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(temp_r31->unk06, 0.0f, 0.0f, 0.0f); + Hu3DModelTPLvlSet(temp_r31->unk06, 128.0f); + Hu3DModelAttrSet(temp_r31->unk06, 0x4000); + for (j = 0; j < lbl_1_bss_E38; j++) { + temp_r31->unk6C[j] = (void*) Hu3DModelObjPtrGet(temp_r31->unk00, lbl_1_data_1C8[lbl_1_bss_E3C][j]); + if (!temp_r31->unk6C[j]) { + OSReport("objname %s\n", lbl_1_data_1C8[lbl_1_bss_E3C][j]); + OSPanic("m411.c", 908, "ObjPtr"); + } + temp_r27 = &temp_r31->unkE4[j]; + temp_r26 = &temp_r31->unk6C[j]->unk1C; + temp_r27->unk00 = temp_r26->unk00; + temp_r27->unk04 = temp_r26->unk04; + temp_r27->unk08 = temp_r26->unk08; + temp_r27->unk0C = temp_r26->unk0C; + temp_r27->unk10 = temp_r26->unk10; + temp_r27->unk14 = temp_r26->unk14; + temp_r27->unk18 = temp_r26->unk18; + temp_r27->unk1C = temp_r26->unk1C; + temp_r27->unk20 = temp_r26->unk20; + temp_r31->unk94[j] = (void*) Hu3DModelObjPtrGet(temp_r31->unk06, lbl_1_data_1C8[lbl_1_bss_E3C][j]); + if (!temp_r31->unk94[j]) { + OSReport("objname %s\n", lbl_1_data_1C8[lbl_1_bss_E3C][j]); + OSPanic("m411.c", 919, "ObjPtr"); + } + temp_r31->unkBC[j] = (void*) Hu3DModelObjPtrGet(temp_r31->unk04, lbl_1_data_1C8[lbl_1_bss_E3C][j]); + if (!temp_r31->unkBC[j]) { + OSReport("objname %s\n", lbl_1_data_1C8[lbl_1_bss_E3C][j]); + OSPanic("m411.c", 925, "ObjPtr"); + } + } + var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 0), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unk0A = Hu3DModelCreate(var_r28); + Hu3DModelCameraSet(temp_r31->unk0A, 1 << temp_r31->unk38); + Hu3DModelPosSet(temp_r31->unk0A, 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(temp_r31->unk0A, 0.0f, 0.0f, 0.0f); + var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M411, 1 + GWPlayerCfg[i].character), MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r25 = Hu3DModelCreate(var_r28); + Hu3DModelCameraSet(temp_r25, 1 << temp_r31->unk38); + var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_MGCONST, 56 + GWPlayerCfg[i].character), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r21 = HuSprAnimRead(var_r28); + temp_r25 = HuSprCreate(var_r21, 0x4000, 0); + temp_r31->unk0C = HuSprGrpCreate(1); + HuSprGrpMemberSet(temp_r31->unk0C, 0, temp_r25); + HuSprAttrSet(temp_r31->unk0C, 0, 7); + temp_r31->unk08 = CharModelCreate(lbl_1_data_240[GWPlayerCfg[i].character], 2); + Hu3DModelCameraSet(temp_r31->unk08, 1 << temp_r31->unk38); + CharModelStepTypeSet(lbl_1_data_240[GWPlayerCfg[i].character], 1); + CharModelLayerSetAll(2); + temp_r31->unk48 = 0.0f; + switch (lbl_1_data_240[GWPlayerCfg[i].character]) { + case 7: + temp_r31->unk4C = -400.0f; + break; + case 5: + temp_r31->unk4C = -330.0f; + break; + case 2: + case 6: + temp_r31->unk4C = -375.0f; + break; + default: + temp_r31->unk4C = -350.0f; + break; + } + temp_r31->unk50 = 500.0f; + temp_r31->unk54 = temp_r31->unk5C = 0.0f; + temp_r31->unk58 = 180.0f; + Hu3DModelPosSet(temp_r31->unk08, temp_r31->unk48, temp_r31->unk4C, temp_r31->unk50); + Hu3DModelRotSet(temp_r31->unk08, temp_r31->unk54, temp_r31->unk58, temp_r31->unk5C); + Hu3DModelAttrSet(temp_r31->unk08, 1); + for (j = 0; j < 9; j++) { + temp_r31->unk0E[j] = CharModelMotionCreate(lbl_1_data_240[GWPlayerCfg[i].character], lbl_1_data_280[j]); + } + CharModelMotionSet(lbl_1_data_240[GWPlayerCfg[i].character], temp_r31->unk0E[0]); + Hu3DModelAttrSet(temp_r31->unk08, 0x40000001); + if (lbl_1_bss_E40 == 0) { + var_r28 = HuDataSelHeapReadNum(lbl_1_data_260[GWPlayerCfg[i].character], MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unk20 = Hu3DModelCreate(var_r28); + Hu3DModelAttrSet(temp_r31->unk20, 0x800001); + Hu3DModelCameraSet(temp_r31->unk20, 1); + for (j = 0; j < 9; j++) { + var_r28 = HuDataSelHeapReadNum((u8) lbl_1_data_280[j] + lbl_1_data_2A4[GWPlayerCfg[i].character], MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unk22[j] = Hu3DJointMotion(temp_r31->unk20, var_r28); + } + Hu3DMotionSet(temp_r31->unk20, temp_r31->unk22[3]); + Hu3DModelPosSet(temp_r31->unk20, temp_r31->unk48, 0.0f, temp_r31->unk50); + Hu3DModelRotSet(temp_r31->unk20, temp_r31->unk54, temp_r31->unk58, temp_r31->unk5C); + Hu3DModelScaleSet(temp_r31->unk20, 1.0f, -1.0f, 1.0f); + } + CharModelMotionDataClose(lbl_1_data_240[GWPlayerCfg[i].character]); + var_r20 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M411, 13), MEMORY_DEFAULT_NUM)); + temp_r25 = Hu3DParticleCreate(var_r20, 300); + Hu3DModelPosSet(temp_r25, 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(temp_r25, 1.0f, 1.0f, 1.0f); + Hu3DModelLayerSet(temp_r25, 1); + Hu3DParticleColSet(temp_r25, 0xFF, 0xFF, 0); + Hu3DParticleScaleSet(temp_r25, 0.0f); + Hu3DParticleHookSet(temp_r25, lbl_1_data_30C[temp_r31->unk34]); + Hu3DModelCameraSet(temp_r25, 1 << temp_r31->unk38); + var_r23 = HuPrcChildCreate(fn_1_7738, 0x2000, 0x3000, 0, HuPrcCurrentGet()); + var_r23->user_data = temp_r31; + lbl_1_bss_124[i] = var_r23; + } + for (i = 0; i < lbl_1_bss_E38; i++) { + lbl_1_bss_E6C[i] = i; + lbl_1_bss_E44[i] = frandmod(4); + } + for (i = 0; i < 50; i++) { + j = frandmod(lbl_1_bss_E38); + var_r22 = frandmod(lbl_1_bss_E38); + temp_r24 = lbl_1_bss_E6C[j]; + lbl_1_bss_E6C[j] = lbl_1_bss_E6C[var_r22]; + lbl_1_bss_E6C[var_r22] = temp_r24; + } + HuPrcChildCreate(fn_1_ACB0, 0x1000, 0x1000, 0, HuPrcCurrentGet()); +} + +void fn_1_34B0(ModelData* model, ParticleData* particle, Mtx matrix, s32 arg3) { + float var_f30; + float temp_f28; + float var_f31; + float temp_f29; + HsfanimStruct01* var_r31; + UnkBss474Struct* temp_r28; + s16 i; + s16 j; + s16 k; + s32 var_r25; + + if (particle->unk_34 == 0) { + var_r31 = particle->unk_48; + for (k = 0; k < particle->unk_30; k++, var_r31++) { + var_r31->unk14.x = var_r31->unk2C = 0.0f; + } + } + var_r31 = particle->unk_48; + temp_r28 = &lbl_1_bss_474[arg3]; + if (temp_r28->unk44 == 1) { + for (i = 0; i < 4; i++) { + temp_f28 = 1.0f; + for (j = 0, var_f30 = 0.0f; j < 24; j++, var_f30 += 15.0f) { + for (k = 0; k < particle->unk_30; k++, var_r31++) { + if (var_r31->unk14.x == 0.0f) { + break; + } + } + if (k == particle->unk_30) { + break; + } + var_f31 = var_f30; + temp_f29 = temp_f28 + 5.0f * frandf(); + var_r31->unk34.x = temp_r28->unk64 + 10.0f * i * sind(var_f31); + var_r31->unk34.y = temp_r28->unk68 + 10.0f * i * cosd(var_f31); + var_r31->unk34.z = 50.0f; + var_r31->unk08.x = temp_f29 * sind(var_f31); + var_r31->unk08.y = temp_f29 * cosd(var_f31); + var_r31->unk08.z = 0.0f; + var_r31->unk14.x = 30.0f; + var_r31->unk14.y = 360.0f * frandf(); + var_r31->unk14.z = 225.0f; + var_r31->unk2C = 40.0f + 10.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 = 0xFF; + } + } + temp_r28->unk44++; + DCStoreRangeNoSync(particle->unk_48, particle->unk_30 * sizeof(*particle->unk_48)); + } + var_r31 = particle->unk_48; + for (k = 0; k < particle->unk_30; k++, var_r31++) { + if (var_r31->unk14.x == 0.0f) { + continue; + } + PSVECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); + var_r31->unk08.x *= 0.95f; + var_r31->unk08.y *= 0.95f; + var_r31->unk14.y += 20.0f; + if (var_r31->unk14.y >= 180.0f && var_r31->unk14.y < 200.0f) { + var_r31->unk14.z *= 0.6f; + } + if (var_r31->unk14.y >= 360.0f && var_r31->unk14.y < 380.0f) { + var_r31->unk14.z *= 0.6f; + } + if (var_r31->unk14.y >= 360.0f) { + var_r31->unk14.y -= 360.0f; + } + var_r25 = var_r31->unk14.z + 30.0 * sind(var_r31->unk14.y); + if (var_r25 < 0) { + var_r25 = 0; + var_r31->unk14.x = 0.0f; + } + var_r31->unk40.a = var_r25; + if (var_r31->unk14.x == 0.0f) { + var_r31->unk2C = 0.0f; + } + } + PPCSync(); +} + +void fn_1_3A60(ModelData* model, ParticleData* particle, Mtx matrix) { + fn_1_34B0(model, particle, matrix, 0); +} + +void fn_1_3A9C(ModelData* model, ParticleData* particle, Mtx matrix) { + fn_1_34B0(model, particle, matrix, 1); +} + +void fn_1_3AD8(ModelData* model, ParticleData* particle, Mtx matrix) { + fn_1_34B0(model, particle, matrix, 2); +} + +void fn_1_3B14(ModelData* model, ParticleData* particle, Mtx matrix) { + fn_1_34B0(model, particle, matrix, 3); +} + +void fn_1_3B50(void) { + float temp_f31; + float temp_f30; + UnkBss138InnerStruct00* temp_r31; + s16 temp_r30; + + temp_r31 = HuPrcCurrentGet()->user_data; + temp_r30 = temp_r31->unk0C; + Hu3DModelRotSet(temp_r30, 0.0f, 0.0f, 0.0f); + Hu3DModelAttrReset(temp_r30, 1); + temp_f31 = -15.0f; + temp_f30 = -15.0f; + Hu3DModelPosSet(temp_r30, + temp_r31->unk10.x + 2.0 * sind(temp_r31->unk1C.y) + temp_f31, + temp_r31->unk10.y + temp_f30, + temp_r31->unk10.z + 2.0 * cosd(temp_r31->unk1C.y)); + HuPrcVSleep(); + Hu3DModelAttrSet(temp_r30, 1); + HuPrcSleep(4); + Hu3DModelAttrReset(temp_r30, 1); + temp_f31 = 15.0f; + temp_f30 = -15.0f; + Hu3DModelPosSet(temp_r30, + temp_r31->unk10.x + 2.0 * sind(temp_r31->unk1C.y) + temp_f31, + temp_r31->unk10.y + temp_f30, + temp_r31->unk10.z + 2.0 * cosd(temp_r31->unk1C.y)); + HuPrcVSleep(); + Hu3DModelAttrSet(temp_r30, 1); + HuPrcSleep(4); + Hu3DModelAttrReset(temp_r30, 1); + temp_f31 = -15.0f; + temp_f30 = 15.0f; + Hu3DModelPosSet(temp_r30, + temp_r31->unk10.x + 2.0 * sind(temp_r31->unk1C.y) + temp_f31, + temp_r31->unk10.y + temp_f30, + temp_r31->unk10.z + 2.0 * cosd(temp_r31->unk1C.y)); + HuPrcVSleep(); + Hu3DModelAttrSet(temp_r30, 1); + HuPrcSleep(4); + Hu3DModelAttrReset(temp_r30, 1); + temp_f31 = 15.0f; + temp_f30 = 15.0f; + Hu3DModelPosSet(temp_r30, + temp_r31->unk10.x + 2.0 * sind(temp_r31->unk1C.y) + temp_f31, + temp_r31->unk10.y + temp_f30, + temp_r31->unk10.z + 2.0 * cosd(temp_r31->unk1C.y)); + HuPrcVSleep(); + Hu3DModelAttrSet(temp_r30, 1); + HuPrcSleep(4); + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_3F34(void) { + float temp_f28; + float var_f31; + float temp_f30; + float var_f29; + UnkBss138InnerStruct00* temp_r31; + Process* var_r30; + + temp_r31 = HuPrcCurrentGet()->user_data; + temp_r31->unk10.x = -500.0f + 1000.0f * frandf(); + temp_r31->unk10.y = 1200.0f; + temp_r31->unk10.z = 0.0f; + temp_r31->unk1C.x = temp_r31->unk1C.y = temp_r31->unk1C.z = 0.0f; + Hu3DModelAttrReset(temp_r31->unk00, 1); + temp_f28 = temp_r31->unk10.x; + var_f31 = 0.0f; + temp_f30 = 1.0f + 2.0f * frandf(); + Hu3DModelScaleSet(temp_r31->unk00, temp_f30, temp_f30, temp_f30); + Hu3DModelScaleSet(temp_r31->unk0C, temp_f30, temp_f30, temp_f30); + var_f29 = 10.0f + 20.0f * frandf(); + while (TRUE) { + temp_r31->unk10.x = temp_f28 + var_f29 * sind(var_f31); + var_f31 += 10.0f; + if (var_f31 == 180.0f || var_f31 == 360.0f) { + var_f29 = 10.0f + 20.0f * frandf(); + } + if (var_f31 > 360.0f) { + var_f31 -= 360.0f; + } + temp_r31->unk10.y -= 3.0f; + if (temp_r31->unk10.y < 0.0f) { + break; + } + temp_r31->unk1C.y += 10.0f; + if (temp_r31->unk1C.y > 360.0f) { + temp_r31->unk1C.y -= 360.0f; + } + Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk10.x, temp_r31->unk10.y, temp_r31->unk10.z); + Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk1C.x, temp_r31->unk1C.y, temp_r31->unk1C.z); + if (temp_r31->unk1C.y == 350.0f) { + var_r30 = HuPrcChildCreate(fn_1_3B50, 0x2000, 0x2000, 0, HuPrcCurrentGet()); + var_r30->user_data = temp_r31; + } + HuPrcVSleep(); + } + HuPrcCurrentGet()->user_data = (void*) 10000; + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_4218(void) { + float temp_f28; + float var_f29; + float temp_f26; + float temp_f25; + float var_f31; + float temp_f24; + float var_f30; + float temp_f23; + float temp_f27; + float temp_f22; + UnkBss138InnerStruct00* temp_r31; + + temp_r31 = HuPrcCurrentGet()->user_data; + temp_f28 = -600.0f + 1200.0f * frandf(); + var_f29 = 1200.0f; + temp_f26 = -2900.0f; + temp_f25 = var_f31 = temp_f24 = 0.0f; + Hu3DModelAttrReset(temp_r31->unk00, 1); + temp_f23 = temp_f28; + var_f30 = 0.0f; + temp_f27 = 1.0f + 2.0f * frandf(); + Hu3DModelScaleSet(temp_r31->unk00, temp_f27, temp_f27, temp_f27); + temp_f22 = 10.0f + 20.0f * frandf(); + while (TRUE) { + temp_f28 = temp_f23 + temp_f22 * sind(var_f30); + var_f30 += 10.0f; + if (var_f30 > 360.0f) { + var_f30 -= 360.0f; + } + var_f29 -= 3.0f; + if (var_f29 < 0.0f) { + break; + } + var_f31 += 10.0f; + if (var_f31 > 360.0f) { + var_f31 -= 360.0f; + } + Hu3DModelPosSet(temp_r31->unk00, temp_f28, var_f29, temp_f26); + Hu3DModelRotSet(temp_r31->unk00, temp_f25, var_f31, temp_f24); + HuPrcVSleep(); + } + HuPrcCurrentGet()->user_data = (void*) 10000; + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_4454(void) { + float temp_f30; + float sp8; + float temp_f29; + float var_f31; + UnkBss138InnerStruct00* temp_r31; + UnkBss138InnerStruct00* var_r30; + s32 i; + + temp_r31 = HuPrcCurrentGet()->user_data; + if (temp_r31->unk0E == 0) { + var_f31 = 0.0f; + var_r30 = &lbl_1_bss_138.unk1AC[2]; + } else { + var_f31 = 180.0f; + var_r30 = &lbl_1_bss_138.unk1AC[3]; + } + temp_f30 = temp_r31->unk10.x; + sp8 = temp_r31->unk10.y; + temp_f29 = temp_r31->unk10.z; + while (TRUE) { + temp_r31->unk10.x = temp_f30 + 200.0 * sind(var_f31); + temp_r31->unk10.z = temp_f29 + 200.0 * cosd(var_f31); + var_f31 += 1.5f; + if (!HuPrcCurrentGet()->user_data && ((var_f31 > 90.0f && var_f31 < 100.0f) || (var_f31 > 270.0f && var_f31 < 280.0f))) { + break; + } + if (var_f31 > 360.0f) { + var_f31 -= 360.0f; + } + temp_r31->unk1C.y = var_f31 + 90.0f; + Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk10.x, temp_r31->unk10.y, temp_r31->unk10.z); + Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk1C.x, temp_r31->unk1C.y, temp_r31->unk1C.z); + Hu3DModelPosSet(var_r30->unk00, temp_r31->unk10.x, temp_r31->unk10.y, temp_r31->unk10.z); + Hu3DModelRotSet(var_r30->unk00, temp_r31->unk1C.x, temp_r31->unk1C.y, temp_r31->unk1C.z); + HuPrcVSleep(); + } + while (TRUE) { + if (temp_r31->unk1C.y > 180.0f) { + temp_r31->unk1C.y += 10.0f; + if (temp_r31->unk1C.y >= 360.0f) { + break; + } + } + if (temp_r31->unk1C.y <= 180.0f) { + temp_r31->unk1C.y -= 10.0f; + if (temp_r31->unk1C.y <= 0.0f) { + break; + } + } + Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk1C.x, temp_r31->unk1C.y, temp_r31->unk1C.z); + Hu3DModelRotSet(var_r30->unk00, temp_r31->unk1C.x, temp_r31->unk1C.y, temp_r31->unk1C.z); + HuPrcVSleep(); + } + Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk1C.x, 0.0f, temp_r31->unk1C.z); + Hu3DModelRotSet(var_r30->unk00, temp_r31->unk1C.x, 0.0f, temp_r31->unk1C.z); + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk02[1], 0.0f, 5.0f, 0); + Hu3DMotionShiftSet(var_r30->unk00, var_r30->unk02[1], 0.0f, 5.0f, 0); + for (i = 0; i < 120; i++) { + if (var_f31 > 180.0f) { + temp_r31->unk10.x += 1.6666666f; + temp_r31->unk10.z += 0.8333333f; + } else { + temp_r31->unk10.z += 0.8333333f; + } + Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk10.x, temp_r31->unk10.y, temp_r31->unk10.z); + Hu3DModelPosSet(var_r30->unk00, temp_r31->unk10.x, temp_r31->unk10.y, temp_r31->unk10.z); + HuPrcVSleep(); + } + Hu3DMotionSet(temp_r31->unk00, temp_r31->unk02[2]); + Hu3DModelAttrReset(temp_r31->unk00, 0x40000001); + Hu3DMotionSet(var_r30->unk00, var_r30->unk02[2]); + Hu3DModelAttrReset(var_r30->unk00, 0x40000001); + while (Hu3DMotionEndCheck(temp_r31->unk00) == 0) { + HuPrcVSleep(); + } + if (temp_r31->unk0E == 0) { + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk02[3], 0.0f, 5.0f, 0x40000001); + Hu3DMotionShiftSet(var_r30->unk00, var_r30->unk02[3], 0.0f, 5.0f, 0x40000001); + } else { + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk02[4], 0.0f, 5.0f, 0x40000001); + Hu3DMotionShiftSet(var_r30->unk00, var_r30->unk02[4], 0.0f, 5.0f, 0x40000001); + } + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_4968(void) { + UnkBss138InnerStruct00* var_r31; + UnkBss138InnerStruct00* var_r30; + s32 i; + + var_r31 = &lbl_1_bss_138.unk1C[1]; + var_r30 = &lbl_1_bss_138.unk1C[2]; + for (i = 0; i < 30; i++) { + var_r31->unk1C.y -= 2.6666667f; + Hu3DModelRotSet(var_r31->unk00, var_r31->unk1C.x, var_r31->unk1C.y, var_r31->unk1C.z); + Hu3DModelRotSet(var_r30->unk00, var_r31->unk1C.x, var_r31->unk1C.y, var_r31->unk1C.z); + HuPrcVSleep(); + } + Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[2], 0.0f, 5.0f, 0x40000001); + Hu3DMotionShiftSet(var_r30->unk00, var_r30->unk02[2], 0.0f, 5.0f, 0x40000001); + for (i = 0; i < 60; i++) { + var_r31->unk10.x += 2.5f; + var_r31->unk10.z += 3.3333333f; + Hu3DModelPosSet(var_r31->unk00, var_r31->unk10.x, var_r31->unk10.y, var_r31->unk10.z); + Hu3DModelPosSet(var_r30->unk00, var_r31->unk10.x, var_r31->unk10.y, var_r31->unk10.z); + HuPrcVSleep(); + } + for (i = 0; i < 5; i++) { + var_r31->unk1C.y -= 2.0f; + Hu3DModelRotSet(var_r31->unk00, var_r31->unk1C.x, var_r31->unk1C.y, var_r31->unk1C.z); + Hu3DModelRotSet(var_r30->unk00, var_r31->unk1C.x, var_r31->unk1C.y, var_r31->unk1C.z); + HuPrcVSleep(); + } + Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[1], 0.0f, 10.0f, 0x40000001); + Hu3DMotionShiftSet(var_r30->unk00, var_r30->unk02[1], 0.0f, 10.0f, 0x40000001); + while (TRUE) { + if (lbl_1_bss_E98 >= 5) { + break; + } + if (Hu3DMotionTimeGet(var_r31->unk00) == 0.0f) { + HuAudFXPlay(0x576); + } + HuPrcVSleep(); + } + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_4BB0(void) { + UnkBss138Struct* temp_r28; + Process* sp24[5]; + Process* sp10[5]; + Process* sp8[2]; + s32 var_r30; + s32 var_r29; + s32 var_r27; + s32 i; + + temp_r28 = HuPrcCurrentGet()->user_data; + for (i = 0; i < 5; i++) { + sp24[i] = NULL; + sp10[i] = NULL; + } + for (i = 0; i < 2; i++) { + sp8[i] = HuPrcChildCreate(fn_1_4454, 0x2000, 0x2000, 0, HuPrcCurrentGet()); + sp8[i]->user_data = &temp_r28->unk1AC[i]; + } + var_r30 = var_r29 = 0; + var_r27 = 0; + while (TRUE) { + if (var_r30 == 0) { + for (i = 0; i < 5; i++) { + if (!sp24[i]) { + sp24[i] = HuPrcChildCreate(fn_1_3F34, 0x2000, 0x2000, 0, HuPrcCurrentGet()); + sp24[i]->user_data = &temp_r28->unkE4[i]; + var_r30 = frandmod(20) + 20; + break; + } + } + } else { + var_r30--; + } + if (var_r29 == 0) { + for (i = 0; i < 5; i++) { + if (!sp10[i]) { + sp10[i] = HuPrcChildCreate(fn_1_4218, 0x2000, 0x2000, 0, HuPrcCurrentGet()); + sp10[i]->user_data = &temp_r28->unk274[i]; + var_r29 = frandmod(20) + 20; + break; + } + } + } else { + var_r29--; + } + if (lbl_1_bss_E98 == 4 && var_r27 == 0) { + var_r27 = 1; + HuPrcChildCreate(fn_1_4968, 0x2000, 0x2000, 0, HuPrcCurrentGet()); + for (i = 0; i < 2; i++) { + sp8[i]->user_data = NULL; + } + } + HuPrcVSleep(); + for (i = 0; i < 5; i++) { + if (sp24[i] && sp24[i]->user_data == (void*) 10000) { + sp24[i] = NULL; + } + if (sp10[i] && sp10[i]->user_data == (void*) 10000) { + sp10[i] = NULL; + } + } + } +} + +void fn_1_4E8C(void) { + float var_f31; + UnkBss138InnerStruct00* temp_r31; + s32 temp_r29; + s32 i; + + temp_r29 = (s32) HuPrcCurrentGet()->user_data; + temp_r31 = &lbl_1_bss_138.unkE4[temp_r29 - 1]; + temp_r31->unk10.y = 0.0f; + temp_r31->unk10.z = 200.0f; + if (temp_r29 < 2) { + temp_r31->unk10.x = 500.0f; + temp_r31->unk1C.x = temp_r31->unk1C.z = 0.0f; + temp_r31->unk1C.y = -90.0f; + var_f31 = (120.0f - temp_r31->unk10.x) / 60.0f; + } else { + temp_r31->unk10.x = -500.0f; + temp_r31->unk1C.x = temp_r31->unk1C.z = 0.0f; + temp_r31->unk1C.y = 90.0f; + var_f31 = (-120.0f - temp_r31->unk10.x) / 60.0f; + } + Hu3DModelAttrReset(temp_r31->unk00, 1); + Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk1C.x, temp_r31->unk1C.y, temp_r31->unk1C.z); + for (i = 0; i < 60; i++) { + temp_r31->unk10.x += var_f31; + Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk10.x, temp_r31->unk10.y, temp_r31->unk10.z); + HuPrcVSleep(); + } + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk02[1], 0.0f, 5.0f, 0); + while (!Hu3DMotionEndCheck(temp_r31->unk00)) { + HuPrcVSleep(); + } + Hu3DMotionShiftSet(temp_r31->unk00, temp_r31->unk02[2], 0.0f, 2.0f, 0x40000001); + HuAudFXPlay(0x36); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_507C(void) { + float temp_f31; + s32 var_r28; + s32 var_r29; + UnkBss138Struct* temp_r27; + UnkBss138InnerStruct00* temp_r31; + UnkBss138InnerStruct00* temp_r30; + + temp_r27 = HuPrcCurrentGet()->user_data; + temp_r31 = &temp_r27->unk1C[0]; + temp_r30 = &temp_r27->unk1C[1]; + temp_f31 = 2.0f; + var_r28 = 0; + lbl_1_bss_E2C[0] = -1; + while (TRUE) { + if (lbl_1_bss_E98 == 4) { + break; + } + temp_r31->unk10.x = 500.0f; + temp_r31->unk10.y = 0.0f; + temp_r31->unk10.z = 100.0f; + temp_r31->unk1C.x = temp_r31->unk1C.z = 0.0f; + temp_r31->unk1C.y = -90.0f; + Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk1C.x, temp_r31->unk1C.y, temp_r31->unk1C.z); + Hu3DModelRotSet(temp_r30->unk00, temp_r31->unk1C.x, temp_r31->unk1C.y, temp_r31->unk1C.z); + var_r29 = 0; + while (TRUE) { + temp_r31->unk10.x -= temp_f31; + if (var_r29 == 0 && temp_r31->unk10.x < 400.0f) { + var_r29 = 1; + if (lbl_1_bss_E2C[0] != -1) { + HuAudFXStop(lbl_1_bss_E2C[0]); + } + lbl_1_bss_E2C[0] = HuAudFXPlayVol(0x56E, 0); + if (var_r28 == 0) { + var_r28 = 1; + HuAudFXVolSet(lbl_1_bss_E2C[0], 0x7F); + } + } + if (temp_r31->unk10.x < -300.0f) { + break; + } + Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk10.x, temp_r31->unk10.y, temp_r31->unk10.z); + Hu3DModelPosSet(temp_r30->unk00, temp_r31->unk10.x + 35.0f, temp_r31->unk10.y, temp_r31->unk10.z); + HuPrcVSleep(); + } + if (lbl_1_bss_E98 == 4) { + break; + } + temp_r31->unk10.x = -500.0f; + temp_r31->unk1C.y = 90.0f; + Hu3DModelRotSet(temp_r31->unk00, temp_r31->unk1C.x, temp_r31->unk1C.y, temp_r31->unk1C.z); + Hu3DModelRotSet(temp_r30->unk00, temp_r31->unk1C.x, temp_r31->unk1C.y, temp_r31->unk1C.z); + var_r29 = 0; + while (TRUE) { + temp_r31->unk10.x += temp_f31; + if (var_r29 == 0 && temp_r31->unk10.x > -400.0f) { + var_r29 = 1; + if (lbl_1_bss_E2C[0] != -1) { + HuAudFXStop(lbl_1_bss_E2C[0]); + } + lbl_1_bss_E2C[0] = HuAudFXPlayVol(0x56E, 0); + } + if (temp_r31->unk10.x > 300.0f) { + break; + } + Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk10.x, temp_r31->unk10.y, temp_r31->unk10.z); + Hu3DModelPosSet(temp_r30->unk00, temp_r31->unk10.x - 35.0f, temp_r31->unk10.y, temp_r31->unk10.z); + HuPrcVSleep(); + } + } + Hu3DModelAttrSet(temp_r31->unk00, 1); + Hu3DModelAttrSet(temp_r30->unk00, 1); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_5384(void) { + UnkBss138Struct* temp_r30; + Process* var_r31; + + temp_r30 = HuPrcCurrentGet()->user_data; + var_r31 = HuPrcChildCreate(fn_1_507C, 0x2000, 0x2000, 0, HuPrcCurrentGet()); + var_r31->user_data = temp_r30; + while (lbl_1_bss_E98 != 4) { + HuPrcVSleep(); + } + HuPrcSleep(0x122); + var_r31 = HuPrcChildCreate(fn_1_4E8C, 0x2000, 0x2000, 0, HuPrcCurrentGet()); + var_r31->user_data = (void*) 1; + var_r31 = HuPrcChildCreate(fn_1_4E8C, 0x2000, 0x2000, 0, HuPrcCurrentGet()); + var_r31->user_data = (void*) 2; + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_544C(void) { + UnkBss138InnerStruct00* temp_r31; + s32 temp_r30; + + temp_r30 = (s32) HuPrcCurrentGet()->user_data; + temp_r31 = &lbl_1_bss_138.unk1C[temp_r30 + 2]; + switch (temp_r30) { + case 0: + temp_r31->unk10.x = 433.0f; + break; + case 1: + temp_r31->unk10.x = 0.0f; + break; + default: + temp_r31->unk10.x = -433.0f; + break; + } + while (TRUE) { + Hu3DModelAttrSet(temp_r31->unk00, 0x40000001); + temp_r31->unk10.x += 2.0f * lbl_1_bss_E24; + if (temp_r31->unk10.x > 650.0f) { + temp_r31->unk10.x -= 1300.0f; + } + Hu3DModelPosSet(temp_r31->unk00, temp_r31->unk10.x, temp_r31->unk10.y, temp_r31->unk10.z); + HuPrcVSleep(); + } +} + +void fn_1_5554(void) { + float var_f28; + float temp_f25; + float temp_f27; + float var_f26; + float var_f31; + float var_f30; + float var_f29; + float sp8; + float temp_f24; + UnkBss138InnerStruct00 spC; + UnkBss138InnerStruct00* var_r31; + UnkBss138InnerStruct00* var_r30; + + var_r31 = &spC; + var_r30 = &lbl_1_bss_138.unk1AC[0]; + var_r31->unk00 = Hu3DModelLink(var_r30->unk00); + Hu3DModelCameraSet(var_r31->unk00, 1); + Hu3DModelAttrReset(var_r31->unk00, 1); + var_r31->unk10.x = -500.0f + 100.0f * frandf(); + var_r31->unk10.y = var_f26 = 200.0f + 500.0f * frandf(); + var_r31->unk10.z = 400.0f; + var_r31->unk1C.x = -80.0f; + var_r31->unk1C.y = 190.0f; + var_r31->unk1C.z = 45.0f; + var_f28 = 5.5f + frandf(); + temp_f25 = 2.0f; + temp_f27 = 0.4f + 0.2f * frandf(); + Hu3DModelScaleSet(var_r31->unk00, temp_f27, temp_f27, temp_f27); + var_f31 = 0.0f; + var_f30 = 0.0f; + while (TRUE) { + var_r31->unk10.x += var_f28; + var_f29 += 10.0f; + if (var_f29 > 360.0f) { + var_f29 -= 360.0f; + } + var_r31->unk10.y = var_f26 + 20.0 * sind(var_f29); + var_f26 -= temp_f25; + var_f28 += 0.1f; + Hu3DModelPosSet(var_r31->unk00, var_r31->unk10.x, var_r31->unk10.y, var_r31->unk10.z); + var_f31 += 20.0f; + var_f30 += 20.0f; + if (var_f31 > 360.0f) { + var_f31 -= 360.0f; + } + if (var_f30 > 360.0f) { + var_f30 -= 360.0f; + } + temp_f24 = var_r31->unk1C.y + 40.0 * sind(var_f31); + sp8 = var_r31->unk1C.x + 30.0 * sind(var_f31); + Hu3DModelRotSet(var_r31->unk00, var_r31->unk1C.x, temp_f24, var_r31->unk1C.z); + if (var_r31->unk10.x > 400.0f) { + break; + } + HuPrcVSleep(); + } + Hu3DModelKill(var_r31->unk00); + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_58BC(void) { + while (TRUE) { + if (lbl_1_bss_E98 == 4) { + break; + } + HuPrcChildCreate(fn_1_5554, 0x2000, 0x2000, 0, HuPrcCurrentGet()); + HuPrcSleep(20); + } + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_5910(void) { + float var_f31; + UnkBss138Struct* spC; + Process* var_r29; + UnkBss138InnerStruct00* var_r31; + UnkBss474Struct* sp8; + s32 i; + + spC = HuPrcCurrentGet()->user_data; + HuPrcChildCreate(fn_1_58BC, 0x2000, 0x2000, 0, HuPrcCurrentGet()); + for (i = 0; i < 3; i++) { + var_r29 = HuPrcChildCreate(fn_1_544C, 0x2000, 0x2000, 0, HuPrcCurrentGet()); + var_r29->user_data = (void*) i; + } + while (lbl_1_bss_E98 != 4) { + HuPrcVSleep(); + } + var_r31 = &lbl_1_bss_138.unkE4[0]; + Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[1], 0.0f, 5.0f, 0); + for (var_f31 = 1.0f; var_f31 > 0.0f; var_f31 -= 0.033333335f) { + lbl_1_bss_E24 = var_f31; + Hu3DTexScrollPosMoveSet(lbl_1_bss_E9E, -0.01f * var_f31, 0.0f, 0.0f); + Hu3DTexScrollPosMoveSet(lbl_1_bss_E9C, -0.017f * var_f31, 0.0f, 0.0f); + HuAudFXPitchSet(lbl_1_bss_E2C[0], -8191.0f * (1.0f - var_f31)); + HuPrcVSleep(); + } + lbl_1_bss_E24 = 0.0f; + Hu3DTexScrollPosMoveSet(lbl_1_bss_E9E, -0.0f, 0.0f, 0.0f); + Hu3DTexScrollPosMoveSet(lbl_1_bss_E9C, -0.0f, 0.0f, 0.0f); + HuAudFXPitchSet(lbl_1_bss_E2C[0], -0x1FFF); + HuPrcSleep(270); + sp8 = &lbl_1_bss_474[lbl_1_bss_E94]; + Hu3DMotionSet(var_r31->unk00, var_r31->unk02[2]); + for (var_f31 = 0.0f; var_f31 < 1.0f; var_f31 += 0.033333335f) { + lbl_1_bss_E24 = var_f31; + Hu3DTexScrollPosMoveSet(lbl_1_bss_E9E, -0.01f * var_f31, 0.0f, 0.0f); + Hu3DTexScrollPosMoveSet(lbl_1_bss_E9C, -0.017f * var_f31, 0.0f, 0.0f); + HuAudFXPitchSet(lbl_1_bss_E2C[0], -8191.0f * (1.0f - var_f31)); + HuPrcVSleep(); + } + lbl_1_bss_E24 = 1.0f; + Hu3DTexScrollPosMoveSet(lbl_1_bss_E9E, -0.01f, 0.0f, 0.0f); + Hu3DTexScrollPosMoveSet(lbl_1_bss_E9C, -0.017f, 0.0f, 0.0f); + HuAudFXPitchSet(lbl_1_bss_E2C[0], 0); + Hu3DMotionShiftSet(var_r31->unk00, var_r31->unk02[0], 0.0f, 5.0f, 0x40000001); + while (TRUE) { + HuPrcVSleep(); + } +} + +s8 fn_1_5D58(s32 arg0, s32 arg1) { + UnkBss474Struct* temp_r31; + s8 var_r30; + s8 var_r29; + s8 var_r28; + + temp_r31 = &lbl_1_bss_474[arg0]; + if (!GWPlayerCfg[arg0].iscom) { + if (arg1 != 0) { + var_r29 = var_r30 = HuPadStkY[temp_r31->unk3C]; + } else { + var_r29 = var_r30 = HuPadStkX[temp_r31->unk3C]; + } + (void) 1; // Required to match. + } else { + if (arg1 != 0) { + var_r28 = var_r30 = temp_r31->unk255; + } else { + var_r28 = var_r30 = temp_r31->unk254; + } + } + return var_r30; +} + +static inline s8 fn_1_5D58_copy(s32 arg0, s32 arg1) { + UnkBss474Struct* temp_r31; + s8 var_r30; + s8 var_r29; + s8 var_r28; + + temp_r31 = &lbl_1_bss_474[arg0]; + if (!GWPlayerCfg[arg0].iscom) { + if (arg1 != 0) { + var_r30 = HuPadStkY[temp_r31->unk3C]; + } else { + var_r30 = HuPadStkX[temp_r31->unk3C]; + } + } else { + if (arg1 != 0) { + var_r30 = temp_r31->unk255; + } else { + var_r30 = temp_r31->unk254; + } + } + return var_r30; +} + +u8 fn_1_5E10(s32 arg0, s32 arg1) { + UnkBss474Struct* temp_r31; + s8 var_r30; + s8 var_r29; + s8 var_r28; + + temp_r31 = &lbl_1_bss_474[arg0]; + if (!GWPlayerCfg[arg0].iscom) { + if (arg1 != 0) { + var_r29 = var_r30 = HuPadTrigR[temp_r31->unk3C]; + } else { + var_r29 = var_r30 = HuPadTrigL[temp_r31->unk3C]; + } + (void) 1; // Required to match. + } else { + if (arg1 != 0) { + var_r28 = var_r30 = temp_r31->unk256; + } else { + var_r28 = var_r30 = temp_r31->unk257; + } + } + return var_r30; +} + + +static inline u8 fn_1_5E10_copy(s32 arg0, s32 arg1) { + UnkBss474Struct* temp_r31; + s8 var_r30; + s8 var_r29; + s8 var_r28; + + temp_r31 = &lbl_1_bss_474[arg0]; + if (!GWPlayerCfg[arg0].iscom) { + if (arg1 != 0) { + var_r30 = HuPadTrigR[temp_r31->unk3C]; + } else { + var_r30 = HuPadTrigL[temp_r31->unk3C]; + } + } else { + if (arg1 != 0) { + var_r30 = temp_r31->unk256; + } else { + var_r30 = temp_r31->unk257; + } + } + return var_r30; +} + +u16 fn_1_5ED0(s32 arg0) { + UnkBss474Struct* temp_r31; + u16 var_r30; + + temp_r31 = &lbl_1_bss_474[arg0]; + (void)temp_r31; + (void)temp_r31; + (void)temp_r31; + (void)temp_r31; + if (!GWPlayerCfg[arg0].iscom) { + var_r30 = HuPadBtnDown[temp_r31->unk3C]; + } else { + var_r30 = temp_r31->unk258; + } + return var_r30; +} + +void fn_1_5F3C(UnkBss474Struct* arg0, s32 arg1) { + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + float temp_f31; + float temp_f30; + float temp_f29; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + UnkBss474DoublyInnerStruct6C* temp_r31; + UnkBss474DoublyInnerStruct6C* temp_r29; + UnkBss474DoublyInnerStruct6C* temp_r27; + UnkBss474InnerStructE4* temp_r28; + s32 var_r25; + s32 i; + + temp_r31 = &arg0->unk6C[arg1]->unk1C; + temp_r29 = &arg0->unk94[arg1]->unk1C; + temp_r27 = &arg0->unkBC[arg1]->unk1C; + temp_r28 = &arg0->unkE4[arg1]; + temp_f31 = (temp_r28->unk00 - temp_r31->unk00) / 15.0f; + temp_f29 = (temp_r28->unk08 - temp_r31->unk08) / 30.0f; + temp_f30 = (temp_r28->unk04 - temp_r31->unk04) / 15.0f; + HuSprAttrSet(arg0->unk0C, 0, HUSPR_ATTR_REVERSE); + omVibrate(arg0->unk34, 12, 6, 6); + var_r25 = 0; + for (i = 0; i < 30; i++) { + temp_r31->unk08 += temp_f29; + temp_r27->unk08 = temp_r29->unk08 = temp_r31->unk08 - 5.0f; + if (i < 15) { + temp_r31->unk00 += temp_f31; + temp_r31->unk04 += temp_f30; + temp_r27->unk00 = temp_r29->unk00 = temp_r31->unk00; + temp_r27->unk04 = temp_r29->unk04 = temp_r31->unk04; + temp_r29->unk18 *= 0.95f; + temp_r29->unk1C *= 0.95f; + sp2C.x = temp_r31->unk00 + 60.0f; + sp2C.z = 100.0f; + sp2C.y = temp_r31->unk04 - 30.0f; + Hu3D3Dto2D(&sp2C, 1 << arg0->unk38, &sp20); + var_f28 = 290.0f * (arg0->unk34 % 2) + sp20.x / 2; + var_f27 = 245.0f * (arg0->unk34 / 2) + sp20.y / 2; + HuSprGrpPosSet(arg0->unk0C, var_f28, var_f27); + } + temp_r27->unk08 += 10.0f; + if (i < 14) { + var_r25 += 17; + } else if (i < 28) { + var_r25 -= 17; + } + Hu3DModelTPLvlSet(arg0->unk04, 255 - var_r25); + HuPrcVSleep(); + } + temp_r31->unk00 = temp_r28->unk00; + temp_r31->unk04 = temp_r28->unk04; + temp_r31->unk08 = temp_r28->unk08; + sp14.x = temp_r31->unk00 + 60.0f; + sp14.z = 100.0f; + sp14.y = temp_r31->unk04 - 30.0f; + Hu3D3Dto2D(&sp14, 1 << arg0->unk38, &sp8); + var_f26 = 290.0f * (arg0->unk34 % 2) + sp8.x / 2; + var_f25 = 245.0f * (arg0->unk34 / 2) + sp8.y / 2; + HuSprGrpPosSet(arg0->unk0C, var_f26, var_f25); + temp_r29->unk00 = 5000.0f; + temp_r27->unk00 = 5000.0f; +} + +void fn_1_6428(UnkBss474Struct* arg0, s32 arg1) { + float var_f31; + UnkBss474DoublyInnerStruct6C* temp_r31; + UnkBss474DoublyInnerStruct6C* temp_r29; + UnkBss474InnerStructE4* temp_r30; + + temp_r31 = &arg0->unk6C[arg1]->unk1C; + temp_r29 = &arg0->unk94[arg1]->unk1C; + temp_r30 = &arg0->unkE4[arg1]; + for (var_f31 = 0.0f; var_f31 < 180.0f; var_f31 += 10.0f) { + temp_r31->unk18 = 0.8f * temp_r30->unk18 + temp_r30->unk18 * (1.0 - sind(var_f31)) * 0.2f; + temp_r31->unk1C = 0.8f * temp_r30->unk1C + temp_r30->unk1C * (1.0 - sind(var_f31)) * 0.2f; + temp_r31->unk20 = 0.8f * temp_r30->unk20 + temp_r30->unk20 * (1.0 - sind(var_f31)) * 0.2f; + temp_r29->unk18 = temp_r31->unk18; + temp_r29->unk1C = temp_r31->unk1C; + temp_r29->unk20 = 0.8f * temp_r31->unk20; + HuPrcVSleep(); + } + for (var_f31 = 180.0f; var_f31 < 360.0f; var_f31 += 20.0f) { + temp_r31->unk18 = 0.9f * temp_r30->unk18 + temp_r30->unk18 * (1.0 - sind(var_f31)) * 0.1f; + temp_r31->unk1C = 0.9f * temp_r30->unk1C + temp_r30->unk1C * (1.0 - sind(var_f31)) * 0.1f; + temp_r31->unk20 = 0.9f * temp_r30->unk20 + temp_r30->unk20 * (1.0 - sind(var_f31)) * 0.1f; + temp_r29->unk18 = temp_r31->unk18; + temp_r29->unk1C = temp_r31->unk1C; + temp_r29->unk20 = 0.8f * temp_r31->unk20; + HuPrcVSleep(); + } + temp_r31->unk18 = temp_r30->unk18; + temp_r31->unk1C = temp_r30->unk1C; + temp_r31->unk20 = temp_r30->unk20; + temp_r29->unk18 = temp_r31->unk18; + temp_r29->unk1C = temp_r31->unk1C; + temp_r29->unk20 = 0.8f * temp_r31->unk20; +} + +void fn_1_6820(UnkBss474Struct* arg0, s32 arg1, s32 arg2) { + UnkBss474DoublyInnerStruct6C* temp_r30; + UnkBss474DoublyInnerStruct6C* temp_r31; + float temp_f30; + float temp_f29; + float temp_f28; + float var_f31; + s32 i; + + temp_r31 = &arg0->unk6C[arg1]->unk1C; + temp_r30 = &arg0->unk94[arg1]->unk1C; + temp_f30 = temp_r31->unk18; + temp_f29 = temp_r31->unk1C; + temp_f28 = temp_r31->unk20; + temp_r31->unk18 = temp_r31->unk1C = temp_r31->unk20 = 0.0f; + temp_r30->unk18 = temp_r30->unk1C = temp_r30->unk20 = 0.0f; + for (i = 0, var_f31 = 0.0f; i < 30; i++, var_f31 += 0.033333335f) { + temp_r31->unk18 += temp_f30 / 30.0f; + temp_r31->unk1C += temp_f29 / 30.0f; + temp_r31->unk20 += temp_f28 / 30.0f; + temp_r30->unk18 = temp_r31->unk18; + temp_r30->unk1C = temp_r31->unk1C; + temp_r30->unk20 = 0.8f * temp_r31->unk20; + if (arg2 == 0) { + HuSprGrpScaleSet(arg0->unk0C, var_f31, var_f31); + } + HuPrcVSleep(); + } + temp_r31->unk18 = temp_f30; + temp_r31->unk1C = temp_f29; + temp_r31->unk20 = temp_f28; + temp_r30->unk18 = temp_r31->unk18; + temp_r30->unk1C = temp_r31->unk1C; + temp_r30->unk20 = 0.8f * temp_r31->unk20; + if (arg2 == 0) { + HuSprAttrReset(arg0->unk0C, 0, HUSPR_ATTR_NOANIM); + HuSprGrpScaleSet(arg0->unk0C, 1.0f, 1.0f); + return; + } + HuSprAttrReset(arg0->unk0C, 0, HUSPR_ATTR_REVERSE); +} + +void fn_1_6A3C(void) { + float var_f31; + float var_f30; + float temp_f29; + UnkFn64A3Struct* temp_r30; + UnkBss474DoublyInnerStruct6C* temp_r31; + UnkBss474DoublyInnerStruct6C* temp_r28; + s32 var_r27; + s32 i; + + temp_r30 = HuPrcCurrentGet()->user_data; + temp_r31 = &temp_r30->unk00->unk6C[temp_r30->unk04]->unk1C; + temp_r28 = &temp_r30->unk00->unk94[temp_r30->unk04]->unk1C; + HuAudFXPlay(0x56C); + if (temp_r30->unk08 != 0) { + var_f30 = temp_r31->unk14 + 90.0f; + } else { + var_f30 = temp_r31->unk14 - 90.0f; + } + if (var_f30 >= 360.0f) { + var_f30 -= 360.0f; + } + if (var_f30 < 0.0f) { + var_f30 += 360.0f; + } + temp_f29 = temp_r31->unk14; + var_f31 = 0.0f; + for (i = 0, var_r27 = 15; i < var_r27; i++) { + if (temp_r30->unk08 != 0) { + temp_r31->unk14 = temp_f29 + 100.0 * sind(var_f31); + } else { + temp_r31->unk14 = temp_f29 - 100.0 * sind(var_f31); + } + temp_r28->unk14 = temp_r31->unk14; + var_f31 += 6.0f; + HuPrcVSleep(); + } + var_f31 = 90.0f; + for (i = 0, var_r27 = 3; i < var_r27; i++) { + var_f31 -= 8.333333f; + if (temp_r30->unk08 != 0) { + temp_r31->unk14 = temp_f29 + 100.0 * sind(var_f31); + } else { + temp_r31->unk14 = temp_f29 - 100.0 * sind(var_f31); + } + temp_r28->unk14 = temp_r31->unk14; + HuPrcVSleep(); + } + temp_r28->unk14 = var_f30; + temp_r31->unk14 = var_f30; + *temp_r30->unk0C = 0; + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_6CF4(void) { + float temp_f30; + float var_f31; + UnkBss474DoublyInnerStruct6C* temp_r31; + + temp_r31 = HuPrcCurrentGet()->user_data; + HuPrcSleep(frandmod(30)); + temp_f30 = temp_r31->unk00 / 100.0f; + var_f31 = -7.0f; + while (TRUE) { + temp_r31->unk04 -= var_f31; + if (temp_r31->unk04 < -500.0f) { + break; + } + var_f31 += 0.5f; + if (var_f31 > 20.0f) { + var_f31 = 20.0f; + } + temp_r31->unk00 += temp_f30; + temp_r31->unk08 += 10.0f; + HuPrcVSleep(); + } + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_6DD8(UnkBss474Struct* arg0, s32 arg1) { + UnkBss474DoublyInnerStruct6C* temp_r31; + + temp_r31 = &arg0->unk6C[arg1]->unk1C; + if (temp_r31->unk00 > 220.0f) { + temp_r31->unk00 = 220.0f; + } + if (temp_r31->unk00 < -220.0f) { + temp_r31->unk00 = -220.0f; + } + if (temp_r31->unk04 > 140.0f) { + temp_r31->unk04 = 140.0f; + } + if (temp_r31->unk04 < -140.0f) { + temp_r31->unk04 = -140.0f; + } +} + +void fn_1_6E9C(s32 arg0, s32 arg1) { + switch (GWPlayerCfg[arg0].diff) { + case 0: + arg1 *= 8; + break; + case 1: + arg1 *= 4; + break; + case 2: + arg1 *= 3; + break; + default: + arg1 *= 2; + break; + } + if (arg1 <= 1) { + HuPrcVSleep(); + } else { + HuPrcSleep(arg1 + frandmod(arg1 / 2)); + } +} + +void fn_1_6F48(UnkBss474Struct* arg0, s32 arg1, s32 arg2) { + Vec sp24; + Vec sp18; + Vec spC; + float temp_f29; + UnkBss474DoublyInnerStruct6C* temp_r30; + UnkBss474InnerStructE4* temp_r25; + s32 var_r27; + s32 var_r23; + + arg1 = lbl_1_bss_E6C[arg2]; + temp_r30 = &arg0->unk6C[arg1]->unk1C; + arg0->unk254 = arg0->unk255 = 0; + arg0->unk257 = arg0->unk256 = 0; + arg0->unk258 = 0; + switch (GWPlayerCfg[arg0->unk34].diff) { + case 0: + var_r27 = arg2 * 2 + 60; + break; + case 1: + var_r27 = arg2 + 80; + break; + case 2: + var_r27 = arg2 + 85; + break; + default: + var_r27 = arg2 + 90; + break; + } + if (var_r27 > 100) { + var_r27 = 100; + } + if (arg0->unk264 == -1) { + if (frandmod(100) < var_r27 || lbl_1_bss_E38 == arg2 + 1) { + arg0->unk264 = arg1; + } else { + var_r23 = frandmod(lbl_1_bss_E38 - arg2); + arg0->unk264 = lbl_1_bss_E6C[arg2 + var_r23]; + } + arg0->unk268 = -1; + if ((GWPlayerCfg[arg0->unk34].diff == 2 || GWPlayerCfg[arg0->unk34].diff == 3) && (frandmod(100) < var_r27 || lbl_1_bss_E38 == arg2 + 1)) { + arg0->unk268 = 10; + } + fn_1_6E9C(arg0->unk34, 10); + } + temp_r25 = &arg0->unkE4[arg0->unk264]; + HuSetVecF(&sp24, temp_r25->unk00, temp_r25->unk04, 0.0); + HuSetVecF(&sp18, temp_r30->unk00, temp_r30->unk04, 0.0); + HuSubVecF(&spC, &sp24, &sp18); + if (sqrtf(spC.x * spC.x + spC.y * spC.y) >= 40.0f) { + temp_f29 = atan2d(spC.x, spC.y); + arg0->unk254 = 50.0 * sind(temp_f29); + arg0->unk255 = 50.0 * cosd(temp_f29); + if (arg0->unk268 >= 0) { + if (arg0->unk268-- == 0 && temp_r30->unk14 != 0.0f) { + arg0->unk268 = 10; + if (temp_r30->unk14 - 90.0f == 0.0f) { + arg0->unk256 = 50; + } else { + arg0->unk257 = 50; + } + } + } + } else { + fn_1_6E9C(arg0->unk34, 1); + if (frandmod(100) < var_r27 || lbl_1_bss_E38 == arg2 + 1) { + if (temp_r30->unk14 != 0.0f) { + if (temp_r30->unk14 - 90.0f == 0.0f) { + arg0->unk256 = 50; + } else { + arg0->unk257 = 50; + } + } else { + arg0->unk258 = 0x100; + arg0->unk264 = -1; + } + } else { + switch (frandmod(3)) { + case 0: + arg0->unk256 = 50; + break; + case 1: + arg0->unk256 = 50; + break; + default: + arg0->unk258 = 0x100; + arg0->unk264 = -1; + break; + } + if (frandmod(100) < var_r27) { + arg0->unk264 = -1; + } + } + } +} + +void fn_1_75C8(void) { + s16 var_r30; + s32 var_r31; + + for (var_r30 = 127; var_r30 > 0; var_r30 -= 4) { + for (var_r31 = 0; var_r31 < lbl_1_bss_E28; var_r31++) { + HuAudFXVolSet(lbl_1_bss_E2C[var_r31], var_r30); + } + HuPrcVSleep(); + } + for (var_r31 = 0; var_r31 < lbl_1_bss_E28; var_r31++) { + HuAudFXVolSet(lbl_1_bss_E2C[var_r31], 0); + } + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_7680(void) { + s16 var_r30; + s32 var_r31; + + for (var_r30 = 0; var_r30 < 127; var_r30 += 4) { + for (var_r31 = 0; var_r31 < lbl_1_bss_E28; var_r31++) { + HuAudFXVolSet(lbl_1_bss_E2C[var_r31], var_r30); + } + HuPrcVSleep(); + } + for (var_r31 = 0; var_r31 < lbl_1_bss_E28; var_r31++) { + HuAudFXVolSet(lbl_1_bss_E2C[var_r31], 0x7F); + } + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + + +static inline void m411InlineFunc(UnkBss474Struct* temp_r31, UnkBss474DoublyInnerStruct6C* temp_r30) { + Vec sp74; + Vec sp80; + + float var_f22; + float var_f23; + + sp80.x = 60.0f + temp_r30->unk00; + sp80.z = 100.0f; + sp80.y = temp_r30->unk04 - 30.0f; + Hu3D3Dto2D(&sp80, 1 << temp_r31->unk38, &sp74); + var_f23 = 290.0f * (temp_r31->unk34 % 2) + sp74.x / 2.0f; + var_f22 = 245.0f * (temp_r31->unk34 / 2) + sp74.y / 2.0f; + HuSprGrpPosSet(temp_r31->unk0C, var_f23, var_f22); +} + +#define SOME_MACRO(x) ((x) >= 0 ? (x) : (-(x) > 20)) + +void fn_1_7738(void) { + f32 temp_f26; + f32 temp_f27; + Process* var_r24; + UnkBss474Struct* temp_r31; + UnkBss474DoublyInnerStruct6C* temp_r30; + s32 var_r29; + UnkBss474DoublyInnerStruct6C* temp_r28; + s32 temp_r26; + UnkBss474InnerStructE4* temp_r25; + s32 var_r23; + Vec spCC; + Vec spC0; + Vec spB4; + UnkFn64A3Struct spA4; + s32 sp70; + + temp_r31 = HuPrcCurrentGet()->user_data; + temp_r31->unk40 = 0; + for (var_r29 = 0; var_r29 < lbl_1_bss_E38; var_r29++) { + temp_r30 = &temp_r31->unk94[var_r29]->unk1C; + temp_r30->unk00 = 5000.0f; + temp_r30 = &temp_r31->unkBC[var_r29]->unk1C; + temp_r30->unk00 = 5000.0f; + } + while (lbl_1_bss_E98 == 0) { + HuPrcVSleep(); + } + Hu3DModelAttrReset(temp_r31->unk08, 1); + for (var_r29 = 0; var_r29 < 30; var_r29++) { + if (lbl_1_bss_E40 == 0) { + lbl_1_bss_C4[temp_r31->unk38].z += 10.0f; + } else { + CZoomM[temp_r31->unk38] += 10.0f; + } + HuPrcVSleep(); + } + Hu3DModelAttrReset(temp_r31->unk00, 1); + Hu3DModelAttrSet(temp_r31->unk02, 1); + if (temp_r31->unk34 == 0) { + HuAudFXPlay(0x56F); + } + for (var_r29 = 0; var_r29 < lbl_1_bss_E38; var_r29++) { + temp_r30 = &temp_r31->unk6C[var_r29]->unk1C; + temp_f26 = atan2d(temp_r30->unk00, temp_r30->unk04); + temp_f27 = sqrtf(temp_r30->unk00 * temp_r30->unk00 + temp_r30->unk04 * temp_r30->unk04); + temp_f27 *= 1.05f; + temp_r30->unk00 = temp_f27 * sind(temp_f26); + temp_r30->unk04 = temp_f27 * cosd(temp_f26); + } + omVibrate(temp_r31->unk34, 12, 6, 6); + HuPrcSleep(30); + CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[5], 0.0f, 5.0f, 0); + HuPrcChildCreate(fn_1_75C8, 0x2000, 0x1000, 0, HuPrcCurrentGet()); + if (temp_r31->unk34 == 0) { + HuAudFXPlay(0x56B); + } + for (var_r29 = 0; var_r29 < lbl_1_bss_E38; var_r29++) { + var_r24 = HuPrcChildCreate(fn_1_6CF4, 0x2000, 0x1000, 0, HuPrcCurrentGet()); + temp_r30 = &temp_r31->unk6C[var_r29]->unk1C; + var_r24->user_data = temp_r30; + } + HuPrcSleep(40); + HuPrcSleep(40); + for (var_r29 = 0; var_r29 < 30; var_r29++) { + if (lbl_1_bss_E40 == 0) { + lbl_1_bss_C4[temp_r31->unk38].z -= 10.0f; + } else { + CZoomM[temp_r31->unk38] -= 10.0f; + } + HuPrcVSleep(); + } + Hu3DModelAttrSet(temp_r31->unk08, 1); + HuPrcSleep(60); + lbl_1_bss_E98 = 2; + for (var_r29 = 0; var_r29 < lbl_1_bss_E38; var_r29++) { + sp70 = 0; + temp_r31->unk44 = 0; + temp_r31->unk264 = -1; + temp_r26 = lbl_1_bss_E6C[var_r29]; + temp_r30 = &temp_r31->unk6C[temp_r26]->unk1C; + temp_r28 = &temp_r31->unk94[temp_r26]->unk1C; + if (var_r29 != 0) { + temp_r25 = &temp_r31->unkE4[lbl_1_bss_E6C[var_r29 - 1]]; + temp_r30->unk00 = temp_r25->unk00; + temp_r30->unk04 = temp_r25->unk04; + temp_r28->unk00 = 20.0f + temp_r30->unk00; + temp_r28->unk04 = -20.0f + temp_r30->unk04; + } else { + temp_r30->unk00 = temp_r30->unk04 = 0.0f; + temp_r28->unk00 = 20.0f + temp_r30->unk00; + temp_r28->unk04 = -20.0f + temp_r30->unk04; + m411InlineFunc(temp_r31, temp_r30); + HuSprAttrReset(temp_r31->unk0C, 0, 4); + } + temp_r30->unk08 = 50.0f; + temp_r28->unk08 = temp_r30->unk08 - 5.0f; + temp_r30->unk14 = temp_r28->unk14 = 90.0f * lbl_1_bss_E44[var_r29]; + fn_1_6820(temp_r31, temp_r26, var_r29); + if (var_r29 == 0) { + while (lbl_1_bss_E98 != 3) { + HuPrcVSleep(); + } + } + while (TRUE) { + if (GWPlayerCfg[temp_r31->unk34].iscom == 1) { + fn_1_6F48(temp_r31, temp_r26, var_r29); + } + if (sp70 == 0) { + var_r23 = -1; + if (fn_1_5E10_copy(temp_r31->unk34, 0) > 20) { + var_r23 = 1; + } + if (fn_1_5E10_copy(temp_r31->unk34, 1) > 20) { + var_r23 = 0; + } + if (var_r23 != -1) { + sp70 = 1; + var_r24 = HuPrcChildCreate(fn_1_6A3C, 0x2000, 0x2000, 0, HuPrcCurrentGet()); + var_r24->user_data = &spA4; + spA4.unk00 = temp_r31; + spA4.unk04 = temp_r26; + spA4.unk08 = var_r23; + spA4.unk0C = &sp70; + } + (void)var_r23; + (void)var_r23; + (void)var_r23; + (void)var_r23; + } + if ((fn_1_5ED0(temp_r31->unk34) & 0x100) && sp70 == 0) { + if (0.0f == temp_r30->unk14) { + temp_r25 = &temp_r31->unkE4[temp_r26]; + HuSetVecF(&spCC, temp_r25->unk00, temp_r25->unk04, 0.0); + HuSetVecF(&spC0, temp_r30->unk00, temp_r30->unk04, 0.0); + HuSubVecF(&spB4, &spCC, &spC0); + if (sqrtf(spB4.x * spB4.x + spB4.y * spB4.y) < 40.0f) { + HuAudFXPlay(0x56D); + temp_r31->unk44 = 1; + temp_r31->unk64 = temp_r30->unk00; + temp_r31->unk68 = temp_r30->unk04; + fn_1_5F3C(temp_r31, temp_r26); + break; + } + } + fn_1_6428(temp_r31, temp_r26); + } + temp_r31->unk60 = -1.0f; + if (SOME_MACRO(fn_1_5D58_copy(temp_r31->unk34, 0)) != 0 + || SOME_MACRO(fn_1_5D58_copy(temp_r31->unk34, 1)) != 0) + { + temp_r31->unk60 = atan2d(fn_1_5D58_copy(temp_r31->unk34, 0), fn_1_5D58_copy(temp_r31->unk34, 1)); + } + if (-1.0f != temp_r31->unk60) { + temp_r30->unk00 += 5 * sind(temp_r31->unk60); + temp_r30->unk04 += 5 * cosd(temp_r31->unk60); + fn_1_6DD8(temp_r31, temp_r26); + temp_r28->unk00 = 20.0f + temp_r30->unk00; + temp_r28->unk04 = -20.0f + temp_r30->unk04; + m411InlineFunc(temp_r31, temp_r30); + } + HuPrcVSleep(); + } + } + temp_r31->unk40 = 4; + while (TRUE) { + HuPrcVSleep(); + } + (void) var_r24; + (void) var_r24; + (void) var_r24; +} + +void fn_1_8A80(float arg0, float arg1) { + Hu3DCameraViewportSet(2, 10.0f, 10.0f, arg0 - 11.0f, arg1 - 11.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(2, 10, 10, arg0 - 11.0f, arg1 - 11.0f); + Hu3DCameraViewportSet(4, arg0 + 2.0f, 10.0f, 630.0f - arg0, arg1 - 11.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(4, arg0 + 2.0f, 10, 630.0f - arg0, arg1 - 11.0f); + Hu3DCameraViewportSet(8, 10.0f, arg1 + 2.0f, arg0 - 11.0f, 470.0f - arg1, 0.0f, 1.0f); + Hu3DCameraScissorSet(8, 10, arg1 + 2.0f, arg0 - 11.0f, 470.0f - arg1); + Hu3DCameraViewportSet(16, arg0 + 2.0f, arg1 + 2.0f, 630.0f - arg0, 470.0f - arg1, 0.0f, 1.0f); + Hu3DCameraScissorSet(16, arg0 + 2.0f, arg1 + 2.0f, 630.0f - arg0, 470.0f - arg1); +} + +void fn_1_8DBC(void) { + float var_f31; + float var_f30; + s32 i; + + Hu3DCameraViewportSet(2, 10.0f, 10.0f, 629.0f, 469.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(2, 10, 10, 629, 469); + Hu3DCameraViewportSet(4, 642.0f, 10.0f, -10.0f, 469.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(4, 642, 10, -10, 469); + Hu3DCameraViewportSet(8, 10.0f, 482.0f, 629.0f, -10.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(8, 10, 482, 629, -10); + Hu3DCameraViewportSet(16, 642.0f, 482.0f, -10.0f, -10.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(16, 642, 482, -10, -10); + HuPrcSleep(60); + for (i = 0, var_f31 = 645.0f, var_f30 = 485.0f; i < 30; i++) { + var_f31 -= 10.833333f; + var_f30 -= 8.166667f; + fn_1_8A80(var_f31, var_f30); + HuPrcVSleep(); + } + Hu3DCameraViewportSet(2, 10.0f, 10.0f, 309.0f, 229.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(2, 10, 10, 309, 229); + Hu3DCameraViewportSet(4, 322.0f, 10.0f, 310.0f, 229.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(4, 322, 10, 310, 229); + Hu3DCameraViewportSet(8, 10.0f, 242.0f, 309.0f, 230.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(8, 10, 242, 309, 230); + Hu3DCameraViewportSet(16, 322.0f, 242.0f, 310.0f, 230.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(16, 322, 242, 310, 230); +} + +void fn_1_9490(void) { + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float temp_f27; + float temp_f26; + s32 temp_r30; + s32 i; + + temp_r30 = (s32) HuPrcCurrentGet()->user_data; + switch (temp_r30) { + case 0: + var_f31 = 645.0f; + var_f30 = 485.0f; + break; + case 1: + var_f31 = -5.0f; + var_f30 = 485.0f; + break; + case 2: + var_f31 = 645.0f; + var_f30 = -5.0f; + break; + default: + var_f31 = -5.0f; + var_f30 = -5.0f; + break; + } + var_f29 = 320.0f; + var_f28 = 240.0f; + temp_f27 = (var_f31 - var_f29) / 30.0f; + temp_f26 = (var_f30 - var_f28) / 30.0f; + for (i = 0; i < 30; i++) { + var_f29 += temp_f27; + var_f28 += temp_f26; + fn_1_8A80(var_f29, var_f28); + HuPrcVSleep(); + } + fn_1_8A80(var_f31, var_f30); + HuPrcChildCreate(fn_1_7680, 0x2000, 0x1000, 0, HuPrcCurrentGet()); + HuPrcCurrentGet()->user_data = NULL; + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_9BC0(s32 arg0) { + float var_f30; + float var_f31; + s32 var_r29; + UnkBss474Struct* temp_r31; + UnkBss474Struct* var_r26; + Process* var_r28; + UnkBss138InnerStruct00* var_r27; + s32 i; + + temp_r31 = &lbl_1_bss_474[arg0]; + for (i = 0, var_f30 = 1.0f; i < 15; i++) { + var_f30 -= 0.06666667f; + for (var_r29 = 0; var_r29 < 4; var_r29++) { + var_r26 = &lbl_1_bss_474[var_r29]; + HuSprGrpScaleSet(var_r26->unk0C, var_f30, var_f30); + } + HuPrcVSleep(); + } + for (i = 0; i < 4; i++) { + HuSprAttrSet(lbl_1_bss_474[i].unk0C, 0, HUSPR_ATTR_DISPOFF); + } + Hu3DModelAttrReset(temp_r31->unk02, 1); + Hu3DModelAttrSet(temp_r31->unk00, 1); + var_r28 = HuPrcChildCreate(fn_1_9490, 0x2000, 0x1000, 0, HuPrcCurrentGet()); + var_r28->user_data = (void*) arg0; + while (var_r28->user_data) { + HuPrcVSleep(); + } + temp_r31->unk48 = 500.0f; + temp_r31->unk4C = -280.0f; + temp_r31->unk50 = 200.0f; + temp_r31->unk58 = -90.0f; + Hu3DModelAttrReset(temp_r31->unk08, 1); + Hu3DModelRotSet(temp_r31->unk08, temp_r31->unk54, temp_r31->unk58, temp_r31->unk5C); + CharModelMotionSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[2]); + Hu3DModelAttrSet(temp_r31->unk08, 0x40000001); + Hu3DModelCameraSet(temp_r31->unk08, 1 << temp_r31->unk38); + i = 0; + while (TRUE) { + temp_r31->unk48 -= 5.0f; + if (temp_r31->unk48 <= 0.0f) { + break; + } + if (i == 70 && lbl_1_bss_E40 == 2) { + var_r27 = &lbl_1_bss_138.unkE4[0]; + Hu3DMotionSet(var_r27->unk00, var_r27->unk02[4]); + HuAudFXPlay(0x41); + } + Hu3DModelPosSet(temp_r31->unk08, temp_r31->unk48, temp_r31->unk4C, temp_r31->unk50); + HuPrcVSleep(); + i++; + } + Hu3DModelPosSet(temp_r31->unk08, 0.0f, temp_r31->unk4C, temp_r31->unk50); + CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[0], 0.0f, 5.0f, 0x40000001); + HuPrcSleep(10); + for (i = 0; i < 9; i++) { + temp_r31->unk58 -= 10.0f; + Hu3DModelRotSet(temp_r31->unk08, temp_r31->unk54, temp_r31->unk58, temp_r31->unk5C); + HuPrcVSleep(); + } + HuPrcSleep(20); + CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[3], 0.0f, 5.0f, 0); + if (lbl_1_bss_E40 == 1) { + var_f31 = -20.0f; + } else { + var_f31 = -20.0f; + } + for (; var_f31 < 0.0f; var_f31 += 1.765f) { + temp_r31->unk4C -= var_f31; + Hu3DModelPosSet(temp_r31->unk08, temp_r31->unk48, temp_r31->unk4C, temp_r31->unk50); + HuPrcVSleep(); + } + Hu3DModelShadowSet(temp_r31->unk08); +} + +void fn_1_A004(void) { + s32 i; + + for (i = 0; i < 67; i++) { + lbl_1_bss_C4->y += -10.0f; + lbl_1_bss_C4->z += -26.656717f; + HuPrcVSleep(); + } + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_A07C(void) { + UnkBss474Struct* temp_r31; + + temp_r31 = &lbl_1_bss_474[lbl_1_bss_E94]; + while (TRUE) { + temp_r31->unk58 += 10.0f; + if (temp_r31->unk58 > 360.0f) { + temp_r31->unk58 -= 360.0f; + } + Hu3DModelRotSet(temp_r31->unk08, temp_r31->unk54, temp_r31->unk58, temp_r31->unk5C); + Hu3DModelRotSet(temp_r31->unk20, temp_r31->unk54, temp_r31->unk58, temp_r31->unk5C); + HuPrcVSleep(); + } +} + +void fn_1_A120(s32 arg0) { + float temp_f30; + float var_f31; + UnkBss474Struct* temp_r31; + s32 var_r29; + s32 i; + + temp_r31 = &lbl_1_bss_474[arg0]; + temp_r31->unk48 = 0.0f; + temp_r31->unk4C = 930.0f; + temp_r31->unk50 = 2790.0f; + Hu3DModelAttrReset(temp_r31->unk20, 1); + Hu3DModelCameraSet(temp_r31->unk08, 1); + HuPrcChildCreate(fn_1_A004, 0x2000, 0x1000, 0, HuPrcCurrentGet()); + temp_f30 = (-730.0f - temp_r31->unk50) / 80.0f; + var_f31 = 0.0f; + for (i = 0, var_r29 = 0; i < 80; i++) { + if (var_r29 == 0) { + temp_r31->unk4C -= var_f31; + if (temp_r31->unk4C < 0.0f) { + var_r29 = 1; + CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[4], 0.0f, 5.0f, 0); + Hu3DMotionShiftSet(temp_r31->unk20, temp_r31->unk22[4], 0.0f, 5.0f, 0); + temp_r31->unk4C = 0.0f; + break; + } + } + var_f31 += 1.2f; + if (var_f31 > 14.0f) { + var_f31 = 14.0f; + } + if (-530.0f < temp_r31->unk50) { + temp_r31->unk50 += temp_f30; + } + Hu3DModelPosSet(temp_r31->unk08, temp_r31->unk48, temp_r31->unk4C, temp_r31->unk50); + Hu3DModelPosSet(temp_r31->unk20, temp_r31->unk48, -temp_r31->unk4C, temp_r31->unk50); + HuPrcVSleep(); + } + HuPrcSleep(5); + while (!Hu3DMotionEndCheck(temp_r31->unk08)) { + HuPrcVSleep(); + } + CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[0], 0.0f, 5.0f, 0x40000001); + HuPrcSleep(30); + HuAudSStreamPlay(1); + HuAudPlayerVoicePlay(temp_r31->unk34, 0x124); + CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[7], 0.0f, 5.0f, 0); + Hu3DMotionShiftSet(temp_r31->unk20, temp_r31->unk22[7], 0.0f, 5.0f, 0); + HuPrcChildCreate(fn_1_A07C, 0x2000, 0x1000, 0, HuPrcCurrentGet()); +} + +void fn_1_A4B4(s32 arg0) { + float temp_f30; + float var_f31; + UnkBss474Struct* temp_r31; + s32 var_r29; + s32 i; + + temp_r31 = &lbl_1_bss_474[arg0]; + temp_r31->unk48 = 0.0f; + temp_r31->unk4C = -40.0f; + temp_r31->unk50 = 180.0f; + Hu3DModelCameraSet(temp_r31->unk08, 1); + temp_f30 = (200.0f - temp_r31->unk50) / 30.0f; + var_f31 = 0.0f; + for (i = 0, var_r29 = 0; i < 30; i++) { + if (var_r29 == 0) { + temp_r31->unk4C -= var_f31; + if (temp_r31->unk4C < 0.0f) { + var_r29 = 1; + CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[2], 0.0f, 20.0f, 0x40000001); + temp_r31->unk4C = 0.0f; + } + } + var_f31 += 1.0f; + if (var_f31 > 10.0f) { + var_f31 = 10.0f; + } + temp_r31->unk50 += temp_f30; + Hu3DModelPosSet(temp_r31->unk08, temp_r31->unk48, temp_r31->unk4C, temp_r31->unk50); + HuPrcVSleep(); + } + CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[0], 0.0f, 5.0f, 0x40000001); + for (i = 0; i < 30; i++) { + temp_r31->unk58 += 6.0f; + Hu3DModelRotSet(temp_r31->unk08, temp_r31->unk54, temp_r31->unk58, temp_r31->unk5C); + HuPrcVSleep(); + } + HuAudSStreamPlay(1); + CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[8], 0.0f, 5.0f, 0); +} + +void fn_1_A788(s32 arg0) { + float temp_f30; + float temp_f29; + float var_f31; + UnkBss474Struct* temp_r31; + UnkBss138InnerStruct00* var_r29; + s32 var_r28; + s32 i; + + temp_r31 = &lbl_1_bss_474[arg0]; + var_r29 = &lbl_1_bss_138.unkE4[0]; + temp_r31->unk48 = 0.0f; + temp_r31->unk4C = 170.0f; + temp_r31->unk50 = 900.0f; + Hu3DModelCameraSet(temp_r31->unk08, 1); + temp_f29 = (150.0f - temp_r31->unk50) / 30.0f; + temp_f30 = -temp_r31->unk48 / 30.0f; + var_f31 = 0.0f; + for (i = 0, var_r28 = 0; i < 30; i++) { + if (var_r28 == 0) { + temp_r31->unk4C -= var_f31; + if (temp_r31->unk4C < 0.0f) { + var_r28 = 1; + CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[2], 0.0f, 5.0f, 0x40000001U); + temp_r31->unk4C = 0.0f; + } + } + var_f31 += 1.0f; + if (var_f31 > 10.0f) { + var_f31 = 10.0f; + } + temp_r31->unk48 += temp_f30; + temp_r31->unk50 += temp_f29; + Hu3DModelPosSet(temp_r31->unk08, temp_r31->unk48, temp_r31->unk4C, temp_r31->unk50); + HuPrcVSleep(); + } + CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[0], 0.0f, 5.0f, 0x40000001); + HuPrcSleep(30); + temp_f30 = (100.0f - temp_r31->unk48) / 30.0f; + temp_f29 = -temp_r31->unk50 / 30.0f; + var_f31 = 20.0f; + Hu3DMotionShiftSet(var_r29->unk00, var_r29->unk02[3], 0.0f, 5.0f, 0); + HuPrcSleep(10); + CharModelMotionShiftSet(lbl_1_data_240[GWPlayerCfg[temp_r31->unk34].character], temp_r31->unk0E[6], 0.0f, 5.0f, 0); + for (i = 0; i < 30; i++) { + temp_r31->unk4C += var_f31; + var_f31 -= 1.2f; + temp_r31->unk48 += temp_f30; + temp_r31->unk50 += temp_f29; + Hu3DModelPosSet(temp_r31->unk08, temp_r31->unk48, temp_r31->unk4C, temp_r31->unk50); + temp_r31->unk58 += 3.0f; + Hu3DModelRotSet(temp_r31->unk08, temp_r31->unk54, temp_r31->unk58, temp_r31->unk5C); + HuPrcVSleep(); + } + HuAudPlayerVoicePlay(temp_r31->unk34, 0x124); + Hu3DModelPosSet(temp_r31->unk08, 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(temp_r31->unk08, 0.0f, 0.0f, 0.0f); + switch (GWPlayerCfg[temp_r31->unk34].character) { + case 1: + Hu3DModelPosSet(temp_r31->unk08, 0.0f, -80.0f, 0.0f); + break; + case 3: + Hu3DModelPosSet(temp_r31->unk08, 0.0f, -90.0f, 0.0f); + break; + case 2: + Hu3DModelPosSet(temp_r31->unk08, 0.0f, 20.0f, 0.0f); + break; + } + Hu3DModelHookSet(var_r29->unk00, "zaseki", temp_r31->unk08); + HuAudSStreamPlay(1); +} + +void fn_1_ACB0(void) { + s32 i; + + while (TRUE) { + if (omSysExitReq == 1) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuAudFadeOut(1000); + HuPrcSleep(60); + for (i = 0; i < 4; i++) { + HuSprAnimKill(lbl_1_bss_474[i].unk24C); + HuSprAnimKill(lbl_1_bss_474[i].unk250); + } + MGSeqKillAll(); + omOvlReturnEx(1, 1); + while (TRUE) { + HuPrcVSleep(); + } + } + HuPrcVSleep(); + } +} + +void fn_1_AD58(void) { + s16 temp_r28; + s16 var_r27; + s16 temp_r25; + s32 var_r24; + s32 var_r29; + s32 var_r30; + s32 i; + + lbl_1_bss_E98 = 0; + HuPrcSleep(1.0f + wipeData.duration); + switch (lbl_1_bss_E40) { + case 0: + lbl_1_bss_E28 = 1; + lbl_1_bss_E2C[0] = HuAudFXPlay(0x573); + break; + case 1: + lbl_1_bss_E28 = 2; + lbl_1_bss_E2C[1] = HuAudFXPlay(0x577); + break; + default: + lbl_1_bss_E28 = 1; + lbl_1_bss_E2C[0] = HuAudFXPlay(0x571); + break; + } + fn_1_8DBC(); + HuPrcSleep(60); + lbl_1_bss_E98 = 1; + while (lbl_1_bss_E98 == 1) { + HuPrcVSleep(); + } + var_r24 = HuAudSeqPlay(0x45); + temp_r28 = MGSeqCreate(3, 0); + while (MGSeqStatGet(temp_r28) != 0) { + HuPrcVSleep(); + } + var_r27 = 3659; + temp_r25 = MGSeqCreate(1, var_r27 / 60, -1, -1); + lbl_1_bss_E98 = 3; + while (TRUE) { + for (i = 0, var_r29 = 0; i < 4; i++) { + if (lbl_1_bss_474[i].unk40 == 4) { + var_r29++; + var_r30 = i; + } + } + if (var_r29 > 0) { + if (var_r29 > 1) { + var_r29 = frandmod(var_r29); + for (i = 0; i < 4; i++) { + if (lbl_1_bss_474[i].unk40 == 4 && var_r29-- == 0) { + var_r30 = i; + break; + } + } + } + break; + } else if (var_r27 < 59) { + var_r30 = -1; + break; + } + MGSeqParamSet(temp_r25, 1, var_r27-- / 60); + HuPrcVSleep(); + } + HuAudSeqFadeOut(var_r24, 100); + for (i = 0; i < 4; i++) { + HuPrcKill(lbl_1_bss_124[i]); + } + MGSeqParamSet(temp_r25, 2, -1); + temp_r28 = MGSeqCreate(3, 1); + while (MGSeqStatGet(temp_r28) != 0) { + HuPrcVSleep(); + } + if (var_r30 != -1) { + lbl_1_bss_E98 = 4; + lbl_1_bss_E94 = var_r30; + fn_1_9BC0(var_r30); + switch (lbl_1_bss_E40) { + case 0: + fn_1_A120(var_r30); + break; + case 1: + fn_1_A4B4(var_r30); + break; + default: + fn_1_A788(var_r30); + break; + } + } + if (var_r30 != -1) { + if (!_CheckFlag(FLAG_ID_MAKE(1, 12))) { + GWPlayer[var_r30].coin_win = 10; + } + temp_r28 = MGSeqCreate(5, 3, GWPlayerCfg[var_r30].character, -1, -1, -1); + } else { + HuAudSStreamPlay(4); + temp_r28 = MGSeqCreate(3, 2); + } + HuPrcSleep(210); + lbl_1_bss_E98 = 5; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuPrcSleep(60); + HuAudFadeOut(1); + for (i = 0; i < 4; i++) { + HuSprAnimKill(lbl_1_bss_474[i].unk24C); + HuSprAnimKill(lbl_1_bss_474[i].unk250); + } + MGSeqKillAll(); + omOvlReturnEx(1, 1); + while (TRUE) { + HuPrcVSleep(); + } +} diff --git a/src/REL/m414Dll/main.c b/src/REL/m414Dll/main.c index ff10a801..a906f552 100644 --- a/src/REL/m414Dll/main.c +++ b/src/REL/m414Dll/main.c @@ -1385,7 +1385,7 @@ void fn_1_4E10(UnkM414BssF0Struct *arg0) } } -s8 fn_1_5554(s32 arg0, s32 arg1) // identical to m411Dll/main.c::fn_1_5D58 +s8 fn_1_5554(s32 arg0, s32 arg1) // similar to m411Dll/main.c::fn_1_5D58 { UnkM414BssF0Struct *var_r31; s8 var_r30; @@ -1416,7 +1416,7 @@ s8 fn_1_5554(s32 arg0, s32 arg1) // identical to m411Dll/main.c::fn_1_5D58 } -static inline s8 fn_1_5554_inline(s32 arg0, s32 arg1) // identical to m411Dll/main.c::fn_1_5D58 +static inline s8 fn_1_5554_inline(s32 arg0, s32 arg1) // similar to m411Dll/main.c::fn_1_5D58 { UnkM414BssF0Struct *var_r31; s8 var_r30; diff --git a/src/REL/m441Dll/main.c b/src/REL/m441Dll/main.c new file mode 100644 index 00000000..b5545366 --- /dev/null +++ b/src/REL/m441Dll/main.c @@ -0,0 +1,2159 @@ +#include "REL/executor.h" +#include "game/chrman.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/frand.h" +#include "game/wipe.h" +#include "game/minigame_seq.h" + +#include "game/gamework_data.h" + +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/mapspace.h" + +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" + +#include "game/esprite.h" +#include "game/sprite.h" + +#include "ext_math.h" +#include "rel_sqrt_consts.h" + + +#undef ABS +#define ABS(x) ((0 > (x)) ? -(x) : (x)) + +typedef struct unk_bss_1F8_struct { + /* 0x00 */ u16 unk00; + /* 0x02 */ s16 unk02; + /* 0x04 */ struct unk_bss_1F8_struct *unk04; + /* 0x08 */ struct unk_bss_1F8_struct *unk08; +} UnkBss1F8Struct; // Size 0xC + +typedef struct unk_bss_1E0_struct { + /* 0x00 */ HsfanimStruct00 *unk00; + /* 0x04 */ s32 *unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ struct unk_bss_1E0_struct *unk10; + /* 0x14 */ struct unk_bss_1E0_struct *unk14; +} UnkBss1E0Struct; // Size 0x18 + +typedef struct { + /* 0x00 */ u32 unk00; + /* 0x04 */ s16 unk04; +} UnkBss1B0Struct; // Size 8 + +UnkBss1F8Struct lbl_1_bss_1F8; +UnkBss1E0Struct lbl_1_bss_1E0; +Process *lbl_1_bss_1DC; +Vec lbl_1_bss_1D0; +Vec lbl_1_bss_1C4; +Vec lbl_1_bss_1B8; +Vec lbl_1_bss_1AC; +u32 lbl_1_bss_1A8; +s32 lbl_1_bss_1A4; +u32 lbl_1_bss_1A0; +s16 lbl_1_bss_19E; +s16 lbl_1_bss_19C; +s32 lbl_1_bss_198; +s32 lbl_1_bss_194; +float lbl_1_bss_190; +s32 lbl_1_bss_150[16]; +UnkBss1B0Struct lbl_1_bss_50[32]; + +void fn_1_0(void) { + lbl_1_bss_1F8.unk04 = NULL; + lbl_1_bss_1F8.unk08 = NULL; +} + +void fn_1_24(u16 arg0, s16 arg1) { + UnkBss1F8Struct *temp_r31; + UnkBss1F8Struct *temp_r30; + UnkBss1F8Struct *temp_r29; + + temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r31), MEMORY_DEFAULT_NUM); + temp_r31->unk00 = arg0; + temp_r31->unk02 = arg1; + temp_r30 = &lbl_1_bss_1F8; + temp_r29 = temp_r30->unk08; + temp_r30->unk08 = temp_r31; + if (NULL != temp_r29) { + temp_r29->unk04 = temp_r31; + } + temp_r31->unk04 = temp_r30; + temp_r31->unk08 = temp_r29; +} + +s16 fn_1_AC(s16 arg0) { + UnkBss1F8Struct *var_r31; + UnkBss1F8Struct *temp_r29; + UnkBss1F8Struct *temp_r30; + s16 temp_r28; + + var_r31 = lbl_1_bss_1F8.unk08; + while (NULL != var_r31) { + if (arg0 == var_r31->unk00) { + temp_r28 = var_r31->unk02; + temp_r29 = var_r31->unk04; + temp_r30 = var_r31->unk08; + temp_r29->unk08 = temp_r30; + if (NULL != temp_r30) { + temp_r30->unk04 = temp_r29; + } + HuMemDirectFree(var_r31); + return temp_r28; + } + var_r31 = var_r31->unk08; + } + return -1; +} + +void fn_1_150(void) { + lbl_1_bss_1E0.unk10 = NULL; + lbl_1_bss_1E0.unk14 = NULL; +} + +void fn_1_174(s16 arg0, HsfanimStruct00 *arg1, s32 arg2, s32 arg3, s32 arg4, Vec *arg5, u8 arg6) { + UnkBss1E0Struct *temp_r27; + UnkBss1E0Struct *var_r31; + UnkBss1E0Struct *temp_r28; + s32 i; + + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*var_r31), MEMORY_DEFAULT_NUM); + var_r31->unk00 = arg1; + var_r31->unk08 = arg3; + var_r31->unk0C = arg4; + var_r31->unk04 = HuMemDirectMallocNum(HEAP_SYSTEM, arg4 * sizeof(*var_r31->unk04), MEMORY_DEFAULT_NUM); + for (i = 0; i < arg4; i++, arg5++) { + var_r31->unk04[i] = Hu3DParManLink(arg0, arg1); + if (var_r31->unk04[i] >= 0) { + Hu3DParManAttrReset(var_r31->unk04[i], 1); + Hu3DParManPosSet(var_r31->unk04[i], arg5->x, arg5->y, arg5->z); + Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(var_r31->unk04[i]), arg6); + Hu3DModelLayerSet(Hu3DParManModelIDGet(var_r31->unk04[i]), arg2); + } + } + temp_r28 = &lbl_1_bss_1E0; + temp_r27 = temp_r28->unk14; + temp_r28->unk14 = var_r31; + if (NULL != temp_r27) { + temp_r27->unk10 = var_r31; + } + var_r31->unk10 = temp_r28; + var_r31->unk14 = temp_r27; +} + +void fn_1_2D8(void) { + UnkBss1E0Struct *var_r31; + UnkBss1E0Struct *temp_r28; + UnkBss1E0Struct *temp_r29; + s32 i; + + var_r31 = lbl_1_bss_1E0.unk14; + while (NULL != var_r31) { + var_r31->unk08--; + if (var_r31->unk08 == 0) { + for (i = 0; i < var_r31->unk0C; i++) { + if (var_r31->unk04[i] >= 0) { + Hu3DParManAttrSet(var_r31->unk04[i], 1); + } + } + } + temp_r28 = var_r31->unk10; + temp_r29 = var_r31->unk14; + if (-var_r31->unk00->unk00 > var_r31->unk08) { + for (i = 0; i < var_r31->unk0C; i++) { + if (var_r31->unk04[i] >= 0) { + Hu3DParManKill(var_r31->unk04[i]); + } + } + temp_r28->unk14 = temp_r29; + if (NULL != temp_r29) { + temp_r29->unk10 = temp_r28; + } + HuMemDirectFree(var_r31->unk04); + HuMemDirectFree(var_r31); + } + var_r31 = temp_r29; + } +} + +void fn_1_414(void) { + s32 i; + + for (i = 0; i < 32; i++) { + lbl_1_bss_50[i].unk00 = 0; + lbl_1_bss_50[i].unk04 = -1; + } +} + +s16 fn_1_46C(s32 arg0) { + s32 i; + + for (i = 0; i < 32; i++) { + if (arg0 == lbl_1_bss_50[i].unk00) { + return Hu3DModelLink(lbl_1_bss_50[i].unk04); + } + } + for (i = 0; i < 32; i++) { + if (lbl_1_bss_50[i].unk00 == 0) { + lbl_1_bss_50[i].unk00 = arg0; + lbl_1_bss_50[i].unk04 = Hu3DModelCreateFile(arg0); + return lbl_1_bss_50[i].unk04; + } + } + return Hu3DModelCreateFile(arg0); +} + +void fn_1_580(s32 *arg0, s32 arg1, s32 arg2) { + s32 var_r30; + + espBankSet(arg0[arg1 + 1], 10); + espBankSet(arg0[arg1 + 4], 11); + if (36000 <= arg2) { + arg2 = 35999; + } + var_r30 = arg2 / 3600; + arg2 -= var_r30 * 3600; + if (var_r30 > 9) { + var_r30 = 9; + } + espBankSet(arg0[arg1], var_r30); + var_r30 = arg2 / 60; + arg2 -= var_r30 * 60; + espBankSet(arg0[arg1 + 2], var_r30 / 10); + espBankSet(arg0[arg1 + 3], var_r30 % 10); + var_r30 = 101.5f * arg2 / 60.0f; + espBankSet(arg0[arg1 + 5], var_r30 / 10); + espBankSet(arg0[arg1 + 6], var_r30 % 10); +} + +void fn_1_798(s32 arg0) { + lbl_1_bss_190 = 0.0f; + lbl_1_bss_1A0 = lbl_1_bss_1A4; + GWMGRecordSet(arg0, lbl_1_bss_1A0); + fn_1_580(lbl_1_bss_150, 7, lbl_1_bss_1A4); +} + +void fn_1_9EC(void) { + s32 i; + + for (i = 0; i < 16; i++) { + espDispOn(lbl_1_bss_150[i]); + } +} + +void fn_1_A40(void) { + float temp_f31; + s32 i; + + if (0.0f <= lbl_1_bss_190) { + lbl_1_bss_190 += 16.0f; + temp_f31 = 1.0 + 0.2f * sind(lbl_1_bss_190); + for (i = 7; i <= 14; i++) { + espScaleSet(lbl_1_bss_150[i], temp_f31, temp_f31); + } + } +} + +void fn_1_B4C(float arg0, s32 arg1) { + float temp_f30; + float temp_f31; + s32 i; + + temp_f31 = 288.0f; + temp_f30 = arg0; + lbl_1_bss_150[15] = espEntry(arg1, 0, 0); + espTPLvlSet(lbl_1_bss_150[15], 0.5f); + espColorSet(lbl_1_bss_150[15], 0, 0, 0); + espPosSet(lbl_1_bss_150[15], temp_f31, temp_f30); + temp_f31 = 248.0f; + temp_f30 = arg0 - 8.0f; + lbl_1_bss_150[14] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 55), 0, 0); + espPosSet(lbl_1_bss_150[14], temp_f31 - 18.0f, temp_f30); + for (i = 7; i <= 13; i++) { + lbl_1_bss_150[i] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 48), 0, 0); + espPosSet(lbl_1_bss_150[i], temp_f31, temp_f30); + temp_f31 += 16.0f; + } + fn_1_580(lbl_1_bss_150, 7, lbl_1_bss_1A0); + temp_f31 = 248.0f; + temp_f30 = arg0 + 8.0f; + for (i = 0; i <= 6; i++) { + lbl_1_bss_150[i] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 49), 0, 0); + espPosSet(lbl_1_bss_150[i], temp_f31, temp_f30); + temp_f31 += 16.0f; + } + fn_1_580(lbl_1_bss_150, 0, 0); + for (i = 0; i < 16; i++) { + espDrawNoSet(lbl_1_bss_150[i], 0); + espDispOff(lbl_1_bss_150[i]); + espAttrSet(lbl_1_bss_150[i], HUSPR_ATTR_NOANIM); + espPriSet(lbl_1_bss_150[i], 0x80 + i); + } +} + +void fn_1_11F4(float arg0, Vec *arg1, Vec *arg2, Vec *arg3) { + float temp_f31; + + if (1.0f < arg0) { + arg0 = 1.0f; + } + temp_f31 = sind(90.0f * arg0) * sind(90.0f * arg0); + arg3->x = arg1->x + temp_f31 * (arg2->x - arg1->x); + arg3->y = arg1->y + temp_f31 * (arg2->y - arg1->y); + arg3->z = arg1->z + temp_f31 * (arg2->z - arg1->z); +} + +void fn_1_1350(Vec *arg0, Vec *arg1, Vec *arg2) { + Hu3DCameraPosSetV(1, arg0, arg1, arg2); + lbl_1_bss_1D0 = *arg0; + lbl_1_bss_1B8 = *arg2; +} + +s32 fn_1_13DC(float arg0, Vec *arg1) { + Vec sp18; + Vec spC; + + fn_1_11F4(arg0, &lbl_1_bss_1D0, &lbl_1_bss_1C4, &sp18); + fn_1_11F4(arg0, &lbl_1_bss_1B8, &lbl_1_bss_1AC, &spC); + Hu3DCameraPosSetV(1, &sp18, arg1, &spC); + if (1.0f <= arg0) { + return 1; + } else { + lbl_1_bss_194 = 1; + return 0; + } +} + +void fn_1_1710(float arg0, Vec *arg1) { + Vec sp18; + Vec spC; + + fn_1_11F4(arg0, &lbl_1_bss_1D0, &lbl_1_bss_1C4, &sp18); + fn_1_11F4(arg0, &lbl_1_bss_1B8, &lbl_1_bss_1AC, &spC); + fn_1_1350(&sp18, arg1, &spC); + lbl_1_bss_194 = 1; +} + +void fn_1_1A60(Vec *arg0, s16 arg1, Vec *arg2) { + Mtx sp1C; + Vec sp10; + float temp_f30; + float temp_f29; + float temp_f28; + float temp_f31; + CameraData *temp_r31; + s32 i; + + for (i = 0; i < 16; i++) { + if (arg1 & (1 << i)) { + break; + } + } + temp_r31 = &Hu3DCamera[i]; + MTXLookAt(sp1C, &temp_r31->pos, &temp_r31->up, &temp_r31->target); + MTXMultVec(sp1C, arg0, &sp10); + temp_f30 = sp10.z * (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2)) * temp_r31->aspect; + temp_f29 = sp10.z * (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2)); + temp_f28 = 0.9f * temp_r31->viewport_x; + temp_f31 = 0.9f * temp_r31->viewport_w; + arg2->x = temp_f31 / 2 + sp10.x * ((temp_f31 / 2) / -temp_f30) + temp_f28; + arg2->y = temp_r31->viewport_h / 2 + sp10.y * ((temp_r31->viewport_h / 2) / temp_f29) + temp_r31->viewport_y; + arg2->z = 0.0f; +} + +void fn_1_1D18(s16 arg0, char *arg1, Vec *arg2) { + Mtx sp10; + + Hu3DModelObjMtxGet(arg0, arg1, sp10); + arg2->x = sp10[0][3]; + arg2->y = sp10[1][3]; + arg2->z = sp10[2][3]; +} + +void fn_1_1D70(s16 arg0, char *arg1, Vec *arg2, Mtx arg3) { + Mtx spC; + ModelData *var_r30; + + var_r30 = &Hu3DData[arg0]; + Hu3DModelObjMtxGet(arg0, arg1, spC); + PSMTXConcat(var_r30->unk_F0, spC, spC); + if (NULL != arg3) { + PSMTXCopy(spC, arg3); + } + arg2->x = spC[0][3]; + arg2->y = spC[1][3]; + arg2->z = spC[2][3]; +} + +float fn_1_1E20(float arg0, float arg1, float arg2) { + float var_f31; + float var_f30; + + var_f31 = fmod(arg1 - arg0, 360.0); + if (0.0f > var_f31) { + var_f31 += 360.0f; + } + if (180.0f < var_f31) { + var_f31 -= 360.0f; + } + var_f30 = fmod(arg0 + var_f31 * arg2, 360.0); + if (0.0f > var_f30) { + var_f30 += 360.0f; + } + return var_f30; +} + +void fn_1_1F24(s32 arg0) { + lbl_1_bss_198 = HuAudSeqPlay((s32)arg0); +} + +void fn_1_1F58(s32 arg0) { + if (lbl_1_bss_198 >= 0) { + if (arg0 < 0) { + arg0 = 1000; + } + HuAudSeqFadeOut(lbl_1_bss_198, arg0); + } + lbl_1_bss_198 = -1; +} + +void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3) { + Vec sp18; + float var_f28; + s32 var_r30; + + sp18.x = 0.0f; + sp18.y = 0.0f; + sp18.z = 0.0f; + sp18.x = arg2 / 4.0f; + sp18.z = -(float) arg3 / 4.0f; + var_r30 = 0; + var_f28 = VECMagXZ(&sp18); + if (0.5f <= var_f28) { + if (10.0f <= var_f28) { + sp18.x /= var_f28; + sp18.z /= var_f28; + var_f28 = 10.0f; + sp18.x = 10.0f * sp18.x; + sp18.z = 10.0f * sp18.z; + } + *arg1 = fn_1_1E20(*arg1, atan2d(sp18.x, sp18.z), 0.4f); + if (8.0f <= var_f28) { + var_r30 = 2; + } else { + var_r30 = 1; + } + } + PSVECAdd((Vec*) &arg0, &sp18, (Vec*) &arg0); +} + +omObjData *lbl_1_bss_4C; +omObjData **lbl_1_bss_48; +omObjData **lbl_1_bss_44; +omObjData **lbl_1_bss_40; +s32 lbl_1_bss_3C; +AnimData *lbl_1_bss_38; +s16 lbl_1_bss_34; +AnimData *lbl_1_bss_30; +s16 lbl_1_bss_2C; +float lbl_1_bss_28; +float lbl_1_bss_24; +s16 lbl_1_bss_20; +s16 lbl_1_bss_1E; +s16 lbl_1_bss_18[3]; +s16 lbl_1_bss_12[3]; +s16 lbl_1_bss_10[1]; +s32 lbl_1_bss_C; +float lbl_1_bss_8; +float lbl_1_bss_4; +float lbl_1_bss_0; + +s16 lbl_1_data_0[8] = { + 0, 1, 2, 3, + 4, 5, 6, 7 +}; + +Vec lbl_1_data_10 = { 0, 100, 400 }; +Vec lbl_1_data_1C = { 0, 1, 0 }; +Vec lbl_1_data_28 = { 0, 100, 0 }; +Vec lbl_1_data_34 = { 0, 1200, 2100 }; +Vec lbl_1_data_40 = { 0, 1, 0 }; +Vec lbl_1_data_4C = { 0, 0, 0 }; +Vec lbl_1_data_58 = { 0, 200, 1000 }; +Vec lbl_1_data_64 = { 0, 1, 0 }; +Vec lbl_1_data_70 = { 0, 150, 0 }; +Vec lbl_1_data_7C = { 0, 3000, 1000 }; +Vec lbl_1_data_88 = { 0, -3, -1 }; +GXColor lbl_1_data_94 = { 255, 255, 255, 255 }; +Vec lbl_1_data_98 = { 0, 3000, 1000 }; +Vec lbl_1_data_A4 = { 0, 0, 0 }; + +s32 lbl_1_data_B0[8][16] = { + { + 0x005F0000, + 0x00480000, + 0x00480008, + 0x00480010, + 0x00480018, + 0x00480020, + 0x005F0000, + 0x00480030, + 0x00480028, + 0x005F0017, + 0x005F0018 + }, + { + 0x001A0000, + 0x00480001, + 0x00480009, + 0x00480011, + 0x00480019, + 0x00480021, + 0x001A0000, + 0x00480031, + 0x00480029, + 0x001A0017, + 0x001A0018 + }, + { + 0x006D0000, + 0x00480002, + 0x0048000A, + 0x00480012, + 0x0048001A, + 0x00480022, + 0x006D0000, + 0x00480032, + 0x0048002A, + 0x006D0017, + 0x006D0018 + }, + { + 0x008A0000, + 0x00480003, + 0x0048000B, + 0x00480013, + 0x0048001B, + 0x00480023, + 0x008A0000, + 0x00480033, + 0x0048002B, + 0x008A0017, + 0x008A0018 + }, + { + 0x00850000, + 0x00480004, + 0x0048000C, + 0x00480014, + 0x0048001C, + 0x00480024, + 0x00850000, + 0x00480034, + 0x0048002C, + 0x00850017, + 0x00850018 + }, + { + 0x00110000, + 0x00480005, + 0x0048000D, + 0x00480015, + 0x0048001D, + 0x00480025, + 0x00110000, + 0x00480035, + 0x0048002D, + 0x00110017, + 0x00110018 + }, + { + 0x000D0000, + 0x00480006, + 0x0048000E, + 0x00480016, + 0x0048001E, + 0x00480026, + 0x000D0000, + 0x00480036, + 0x0048002E, + 0x000D0017, + 0x000D0018 + }, + { + 0x00810000, + 0x00480007, + 0x0048000F, + 0x00480017, + 0x0048001F, + 0x00480027, + 0x00810000, + 0x00480037, + 0x0048002F, + 0x00810017, + 0x00810018 + } +}; + +s32 lbl_1_data_2B0[2] = { + 0x00480040, + 0x00480041 +}; + +s32 lbl_1_data_2B8[3] = { + 0x00480043, + 0x00480044, + 0x00480045 +}; + +s32 lbl_1_data_2C4[4] = { + 0x00610022, + 0x00610021, + 0x0061002F, + 0x0061002F +}; + +float lbl_1_data_2D4[4][4] = { + -350, 0, 350, 135, + 350, 0, 350, 225, + 350, 0, -350, 315, + -350, 0, -350, 45 +}; + +s32 lbl_1_data_314[3] = { + 0x0048003D, + 0x0048003C, + 0x0048003B +}; + +s16 lbl_1_data_320[3] = { 10, 5, 2 }; +s16 lbl_1_data_326[3] = { 1, 2, 3 }; +Vec lbl_1_data_32C[3] = { + { 0.5f, 0.5f, 0.5f }, + { 0.7f, 0.7f, 0.7f }, + { 0.9f, 0.9f, 0.9f } +}; + +float lbl_1_data_350[3][2] = { + 0.5f, 4.0f, + 0.5f, 4.0f, + 2.0f, 6.0f +}; + +s32 lbl_1_data_368[1] = { 0x0048003E }; + +float lbl_1_data_36C[3] = { 0.7f, 85.0f, 22.0f }; +float lbl_1_data_378[3] = { 0.8f, 70.0f, 27.0f }; +float lbl_1_data_384[3] = { 0.9f, 55.0f, 32.0f }; +float lbl_1_data_390[3] = { 1.0f, 40.0f, 37.0f }; + +HsfanimStruct00 lbl_1_data_39C = { + 20, + { 0, 0 }, + 1, + 30, + 0, + { 0, -0.05f, 0 }, + 1.0f, + 0.99f, + 20.0f, + 0.98f, + 4, + { + { 128, 128, 128, 255 }, + { 255, 0, 255, 255 }, + { 0, 255, 255, 255 }, + { 255, 255, 255, 255 } + }, + { + { 128, 128, 128, 0 }, + { 255, 0, 255, 0 }, + { 0, 255, 255, 0 }, + { 255, 255, 255, 0 } + } +}; + +HsfanimStruct00 lbl_1_data_3EC = { + 30, + { 0, 0 }, + 1, + 0, + 360, + { 0, -0.05f, 0 }, + 10.0f, + 0.98f, + 20.0f, + 1.05f, + 4, + { + { 128, 128, 128, 255 }, + { 255, 0, 255, 255 }, + { 0, 255, 255, 255 }, + { 255, 255, 255, 255 } + }, + { + { 128, 128, 128, 0 }, + { 255, 0, 255, 0 }, + { 0, 255, 255, 0 }, + { 255, 255, 255, 0 } + } +}; + +HsfanimStruct00 lbl_1_data_43C = { + 60, + { 0, 0 }, + 1, + 0, + 360, + { 0, -0.05f, 0 }, + 10.0f, + 0.99f, + 30.0f, + 0.98f, + 1, + { + { 255, 255, 255, 255 }, + { 255, 255, 255, 255 }, + { 255, 255, 255, 255 }, + { 255, 255, 255, 255 } + }, + { + { 255, 255, 255, 0 }, + { 255, 255, 255, 0 }, + { 255, 255, 255, 0 }, + { 255, 255, 255, 0 } + }, +}; + +HsfanimStruct00 lbl_1_data_48C = { + 30, + { 0, 0 }, + 1, + 10, + 360, + { 0, 0.1f, 0 }, + 1.0f, + 1.0f, + 30.0f, + 1.05f, + 1, + { + { 255, 255, 255, 255 }, + { 255, 255, 255, 255 }, + { 255, 255, 255, 255 }, + { 255, 255, 255, 255 } + }, + { + { 255, 255, 255, 0 }, + { 255, 255, 255, 0 }, + { 255, 255, 255, 0 }, + { 255, 255, 255, 0 } + }, +}; + +#include "src/REL/executor.c" + +void fn_1_2454(omObjData *object) +{ + HuSysVWaitSet(1); + if(HuPadBtn[0] & PAD_BUTTON_X) { + lbl_1_bss_1A4 = -1; + } + print8(24, 32, 1.5f, "COUNT:%d MODE:%d MES:%d", lbl_1_bss_1A8, lbl_1_bss_4C->work[0], lbl_1_bss_19E); + print8(24, 48, 1.5f, "%f %f %f", lbl_1_bss_0, lbl_1_bss_8, lbl_1_bss_4); + print8(24, 64, 1.5f, "%x %x", HuMemHeapSizeGet(HEAP_SYSTEM)-HuMemUsedMallocSizeGet(HEAP_SYSTEM), HuMemHeapSizeGet(HEAP_DATA)-HuMemUsedMallocSizeGet(HEAP_DATA)); + lbl_1_bss_4 -= HuPadSubStkX[0]/59.0f; + lbl_1_bss_8 -= 4.0f*(HuPadSubStkY[0]/59.0f); + lbl_1_bss_0 -= (HuPadTrigL[0]/150.0f)*4.0f; + lbl_1_bss_0 += (HuPadTrigR[0]/150.0f)*4.0f; +} + +typedef struct work_53E8 { + float *unk0; + Vec unk4; + Vec unk10; + Vec unk1C; + Vec unk28; + Vec unk34; + Vec unk40; + Vec unk4C; + float unk58; + float unk5C; + float unk60; + Vec unk64; + Vec unk70; + Vec unk7C; + float unk88; + float unk8C; + s32 unk90; + s32 unk94; + s32 unk98; + s32 unk9C; + s32 unkA0; + s32 unkA4; + s32 unkA8; + s32 unkAC; + s32 unkB0; + s32 unkB4; + s32 unkB8; + s32 unkBC; + s32 unkC0; + s32 unkC4[3]; + s32 unkD0[4]; + s16 unkE0; + float unkE4; +} Work53E8; + + +void fn_1_273C(Work53E8 *arg0) +{ + float temp_f31 = arg0->unk4.x; + float temp_f30 = arg0->unk4.z; + float temp_f28 = sqrtf((temp_f31*temp_f31)+(temp_f30*temp_f30)); + if(600.0f-arg0->unk60 < temp_f28) { + temp_f31 /= temp_f28; + temp_f30 /= temp_f28; + arg0->unk4.x = temp_f31*(600.0f-arg0->unk60); + arg0->unk4.z = temp_f30*(600.0f-arg0->unk60); + } +} + +void fn_1_2904(Work53E8 *arg0, s32 arg1) +{ + s32 i; + for(i=0; i<4; i++) { + Work53E8 *temp_r31 = lbl_1_bss_48[i]->data; + if(arg0->unkB0 != temp_r31->unkB0) { + float temp_f31 = arg0->unk4.x-temp_r31->unk4.x; + float temp_f30 = arg0->unk4.z-temp_r31->unk4.z; + float temp_f28 = sqrtf((temp_f31*temp_f31)+(temp_f30*temp_f30)); + if(temp_f28 < arg0->unk60+temp_r31->unk60) { + if(arg1 && arg0->unk1C.z == temp_r31->unk1C.z) { + arg0->unk1C.z += 55.0f*((0 > arg0->unk4.z) ? -1 : 1); + } + if(0.0f == temp_f28) { + temp_f31 = 0.0f; + temp_f30 = -1.0f; + } else { + temp_f31 /= temp_f28; + temp_f30 /= temp_f28; + } + arg0->unk4.x = temp_r31->unk4.x+(temp_f31*(arg0->unk60+temp_r31->unk60)); + arg0->unk4.z = temp_r31->unk4.z+(temp_f30*(arg0->unk60+temp_r31->unk60)); + } + } + + } +} + +void fn_1_2BD4(Work53E8 *arg0, omObjData *arg1, s32 arg2) +{ + s32 temp_r29; + if(!arg2) { + arg0->unk10.x = 0; + arg0->unk10.y = 0; + arg0->unk10.z = 0; + arg0->unk10.x = arg0->unkA4/4.0f; + arg0->unk10.z = -((float)arg0->unkA8)/4.0f; + } + temp_r29 = 1; + arg0->unk5C = VECMagXZ(&arg0->unk10); + if(0.5f <= arg0->unk5C) { + if(10.0f <= arg0->unk5C) { + arg0->unk10.x /= arg0->unk5C; + arg0->unk10.z /= arg0->unk5C; + arg0->unk5C = 10.0f; + arg0->unk10.x = 10.0f*arg0->unk10.x; + arg0->unk10.z = 10.0f*arg0->unk10.z; + } + arg0->unk58 = fn_1_1E20(arg0->unk58, atan2d(arg0->unk10.x, arg0->unk10.z), 0.4f); + if(8.0f <= arg0->unk5C) { + temp_r29 = 3; + } else { + temp_r29 = 2; + } + } + VECAdd(&arg0->unk4, &arg0->unk10, &arg0->unk4); + fn_1_273C(arg0); + fn_1_2904(arg0, arg2); + if(arg2) { + temp_r29 += 6; + if(temp_r29 > 6) { + temp_r29 = 7; + } + } + if(temp_r29 >= 0 && arg0->unk9C != temp_r29) { + arg0->unk9C = temp_r29; + Hu3DMotionShiftSet(arg1->model[0], arg1->motion[arg0->unk9C], 0, 8, 0x40000001); + } +} + +void fn_1_3404(Work53E8 *arg0) +{ + float temp_f31; + float temp_f30; + float temp_f27; + float temp_f26; + float temp_f25; + + if(NULL == arg0->unk0) { + return; + } + temp_f31 = 0; + temp_f30 = 0; + if(arg0->unk94 == 0) { + temp_f31 = arg0->unk7C.x-arg0->unk4.x; + temp_f30 = arg0->unk7C.z-arg0->unk4.z; + temp_f27 = sqrtf((temp_f31*temp_f31)+(temp_f30*temp_f30)); + if(10.0f <= temp_f27) { + temp_f31 /= temp_f27; + temp_f30 /= temp_f27; + } else { + temp_f31 = 0; + temp_f30 = 0; + } + if(170.0f < temp_f27 && 224.0f > temp_f27) { + if(200.0f > arg0->unk7C.y) { + arg0->unkAC |= PAD_BUTTON_B; + } else { + arg0->unkAC |= PAD_BUTTON_A; + } + arg0->unk94 = 1; + arg0->unk8C = arg0->unk0[1]+((frandf()*arg0->unk0[1])/2); + temp_f25 = 1.0f-(lbl_1_bss_1A4/3600.0f); + if(0.25f < temp_f25) { + arg0->unk8C *= arg0->unk90/(arg0->unk0[2]*temp_f25); + } + if(arg0->unk8C < frandmod(100)) { + arg0->unk94 = 0; + } + } + } else { + if(arg0->unk94 == 1) { + arg0->unk94 = 2; + temp_f26 = 360.0f*frandf(); + temp_f27 = (600.0f-arg0->unk60)*frandf(); + arg0->unk70.x = temp_f27*sind(temp_f26); + arg0->unk70.y = 0; + arg0->unk70.z = temp_f27*cosd(temp_f26); + } + temp_f31 = arg0->unk70.x-arg0->unk4.x; + temp_f30 = arg0->unk70.z-arg0->unk4.z; + temp_f27 = sqrtf((temp_f31*temp_f31)+(temp_f30*temp_f30)); + if(10.0f <= temp_f27) { + temp_f31 /= temp_f27; + temp_f30 /= temp_f27; + } else { + temp_f31 = 0; + temp_f30 = 0; + arg0->unk94 = 1; + } + arg0->unk8C--; + if(0.0f > arg0->unk8C) { + arg0->unk94 = 0; + } + } + arg0->unkA4 = (72.0f*temp_f31)*arg0->unk0[0]; + arg0->unkA8 = (72.0f*-temp_f30)*arg0->unk0[0]; + if(ABS(arg0->unkA4) > 72) { + arg0->unkA4 = ((arg0->unkA4 < 0) ? -1 : 1)*72; + } + if(ABS(arg0->unkA8) > 72) { + arg0->unkA8 = ((arg0->unkA8 < 0) ? -1 : 1)*72; + } +} + +void fn_1_3B04(Work53E8 *arg0, omObjData *arg1) +{ + arg0->unk64.z++; + if(10.0f >= arg0->unk64.z) { + float temp_f31 = (0.3f*sind(180.0f*(arg0->unk64.z/10.0f)))+1.5f; + Hu3DModelScaleSet(arg1->model[2], temp_f31, temp_f31, temp_f31); + } +} + +void fn_1_40A8(omObjData *object); + +void fn_1_3C00(omObjData *object) +{ + Work53E8 *work = object->data; + Mtx hookMtx; + Vec netOfs; + if(work->unk98 == 2004 && lbl_1_bss_4C->work[0] >= 1005) { + work->unk98 = 2007; + work->unk64.x = 20; + Hu3DMotionShiftSet(object->model[0], object->motion[1], 0, 20, 0x40000001); + object->func = fn_1_40A8; + return; + } + work->unk88 = 10000; + if(GWPlayerCfg[work->unkB0].iscom) { + work->unkA4 = 0; + work->unkA8 = 0; + work->unkAC = 0; + fn_1_3404(work); + } else { + work->unkA4 = HuPadStkX[work->unkB8]; + work->unkA8 = HuPadStkY[work->unkB8]; + work->unkAC = HuPadBtnDown[work->unkB8]; + } + switch(work->unk98) { + case 2004: + fn_1_2BD4(work, object, 0); + if(work->unkAC & PAD_BUTTON_A) { + work->unk98 = 2005; + work->unk64.x = 10; + work->unkE4 = 0; + Hu3DModelAttrReset(object->model[0], 0x40000001); + Hu3DMotionShiftSet(object->model[0], object->motion[4], 0, 8, 0); + Hu3DMotionSet(object->model[1], object->motion[11]); + HuAudFXEmiterPlay(1814, &work->unk4); + } + if(work->unkAC & PAD_BUTTON_B) { + work->unk98 = 2005; + work->unk64.x = 10; + work->unkE4 = 0; + Hu3DModelAttrReset(object->model[0], 0x40000001); + Hu3DMotionShiftSet(object->model[0], object->motion[5], 0, 8, 0); + Hu3DMotionSet(object->model[1], object->motion[11]); + HuAudFXEmiterPlay(1814, &work->unk4); + } + break; + + case 2005: + work->unk64.x--; + if(0.0f > work->unk64.x && 20.0f < Hu3DMotionTimeGet(object->model[0])) { + work->unk98++; + } + work->unkE4++; + if(240.0f < work->unkE4) { + work->unk98 = 2006; + } + break; + + case 2006: + work->unkE4++; + if(240.0f < work->unkE4 || Hu3DMotionEndCheck(object->model[0])) { + work->unk98 = 2004; + work->unk9C = 1; + Hu3DMotionShiftSet(object->model[0], object->motion[1], 0, 8, 0x40000001); + } + break; + + default: + OSReport("*** player mode error(%d)!!\n", work->unk98); + break; + } + omSetTra(object, work->unk4.x, work->unk4.y, work->unk4.z); + omSetRot(object, 0, work->unk58, 0); + netOfs.x = 0; + netOfs.y = 0; + netOfs.z = 170; + Hu3DModelObjMtxGet(object->model[0], CharModelHookNameGet(work->unkB4, 2, 0), hookMtx); + MTXMultVec(hookMtx, &netOfs, &work->unk28); + +} + +static inline void fn_1_40A8InlineFunc(Vec *arg0, float arg1, float arg2, float arg3) { + arg0->x = arg1; + arg0->y = arg2; + arg0->z = arg3; +} + +void fn_1_892C(s16 arg0, s16 arg1, Vec *arg2); + +void fn_1_40A8(omObjData *object) +{ + float angle; + Mtx hookMtx; + Vec pos3D; + Vec pos2D; + Work53E8 *work = object->data; + s32 i; + + switch(work->unk98) { + case 2000: + if(lbl_1_bss_4C->work[0] == 1002 && 90.0f < lbl_1_bss_28) { + work->unk98++; + work->unk64.x = 10.0f; + Hu3DModelAttrReset(object->model[0], 0x40000003); + Hu3DMotionShiftSet(object->model[0], object->motion[4], 0, 10, 0); + Hu3DMotionSet(object->model[1], object->motion[11]); + HuAudFXEmiterPlay(1814, &work->unk4); + } + break; + + case 2001: + work->unk64.x--; + if(0.0f > work->unk64.x && Hu3DMotionEndCheck(object->model[0])) { + work->unk98++; + work->unk64.x = 10.0f; + Hu3DMotionShiftSet(object->model[0], object->motion[5], 0, 10, 0); + Hu3DMotionSet(object->model[1], object->motion[11]); + HuAudFXEmiterPlay(1814, &work->unk4); + } + break; + + case 2002: + work->unk64.x--; + if(0.0f > work->unk64.x && Hu3DMotionEndCheck(object->model[0])) { + work->unk98++; + Hu3DMotionShiftSet(object->model[0], object->motion[1], 0, 10, 0x40000001); + } + break; + + case 2003: + if(lbl_1_bss_4C->work[0] >= 1004) { + work->unk98++; + object->func = fn_1_3C00; + } + break; + + case 2007: + work->unk64.x--; + if(0.0f > work->unk64.x && lbl_1_bss_4C->work[0] == 1006) { + work->unk98++; + work->unk64.x = 40; + Hu3DModelObjMtxGet(object->model[0], CharModelHookNameGet(work->unkB4, 2, 0), hookMtx); + Hu3DMtxTransGet(hookMtx, &work->unk28); + Hu3DMtxRotGet(hookMtx, &work->unk34); + Hu3DMtxScaleGet(hookMtx, &work->unk40); + Hu3DModelPosSet(object->model[1], work->unk28.x, work->unk28.y, work->unk28.z); + Hu3DModelRotSet(object->model[1], work->unk34.x, work->unk34.y, work->unk34.z); + Hu3DModelScaleSet(object->model[1], work->unk40.x, work->unk40.y, work->unk40.z); + Hu3DModelHookObjReset(object->model[0], CharModelHookNameGet(work->unkB4, 2, 0)); + } + break; + + case 2008: + work->unk28.y += 4; + work->unk34.x += 24.0f; + work->unk40.x *= 0.95f; + work->unk40.y *= 0.95f; + work->unk40.z *= 0.95f; + Hu3DModelPosSet(object->model[1], work->unk28.x, work->unk28.y, work->unk28.z); + Hu3DModelRotSet(object->model[1], work->unk34.x, work->unk34.y, work->unk34.z); + Hu3DModelScaleSet(object->model[1], work->unk40.x, work->unk40.y, work->unk40.z); + work->unk64.x--; + if(0.0f > work->unk64.x) { + float temp_f24; + work->unk98++; + work->unk64.x = 0; + temp_f24 = (work->unkB0*160.0f)-240.0f; + work->unk1C.x = temp_f24; + work->unk1C.y = 0; + work->unk1C.z = 0; + Hu3DModelAttrSet(object->model[1], 1); + work->unkE0 = Hu3DParManLink(lbl_1_bss_2C, &lbl_1_data_48C); + Hu3DParManPosSet(work->unkE0, work->unk28.x, work->unk28.y, work->unk28.z); + Hu3DParManAttrReset(work->unkE0, 1); + Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(work->unkE0), 1); + Hu3DModelLayerSet(Hu3DParManModelIDGet(work->unkE0), 4); + HuAudFXPlay(1815); + + } + break; + + case 2009: + work->unk64.x++; + if(10.0f == work->unk64.x) { + Hu3DParManAttrSet(work->unkE0, 1); + } + work->unk10.x = 0; + work->unk10.y = 0; + work->unk10.z = 0; + work->unk10.x = work->unk1C.x-work->unk4.x; + work->unk10.z = work->unk1C.z-work->unk4.z; + if(10.0f < work->unk64.x && 0.0f == work->unk10.x && 0.0f == work->unk10.z && 0.0f == work->unk1C.z) { + work->unk98++; + work->unkA0 = 1; + } else { + fn_1_2BD4(work, object, 1); + if(0.0f != work->unk1C.z) { + work->unk1C.z -= ((0.0f > work->unk1C.z) ? -1 : 1)*5.0f; + } + } + break; + + case 2010: + work->unk58 = fn_1_1E20(work->unk58, 0.0f, 0.5f); + angle = fmod(-work->unk58, 360.0f); + if(-180.0f > angle) { + angle += 360.0f; + } + if(work->unkA0) { + if(8.0f > ABS(angle)) { + work->unkA0 = 0; + Hu3DModelPosSet(object->model[2], 0, 0, -10); + Hu3DMotionShiftSet(object->model[0], object->motion[6], 0, 4, 0x40000001); + } + } + if(lbl_1_bss_4C->work[0] == 1007) { + work->unk98++; + work->unk64.x = 10.0f; + Hu3DModelAttrReset(object->model[0], 0x40000001); + Hu3DMotionShiftSet(object->model[0], object->motion[8], 0, 8, 0); + work->unk64.y = -90; + fn_1_40A8InlineFunc(&pos3D, work->unk4.x, 250, work->unk4.z); + Hu3D3Dto2D(&pos3D, 1, &pos2D); + espTPLvlSet(work->unkD0[0], 0.5f); + espPosSet(work->unkD0[0], pos2D.x, pos2D.y); + espPosSet(work->unkD0[1], pos2D.x, pos2D.y); + espPosSet(work->unkD0[2], pos2D.x-14, 10+pos2D.y); + espPosSet(work->unkD0[3], (pos2D.x-14)+28, 10+pos2D.y); + for(i=0; i<4; i++) { + espScaleSet(work->unkD0[i], 0.1f, 0.1f); + espBankSet(work->unkD0[i], 0); + espDispOn(work->unkD0[i]); + } + work->unkE0 = Hu3DParManLink(lbl_1_bss_34, &lbl_1_data_43C); + Hu3DParManPosSet(work->unkE0, pos3D.x, pos3D.y, pos3D.z); + } + break; + + case 2011: + work->unk64.y += 18.0f; + if(180.0f >= work->unk64.y) { + for(i=0; i<4; i++) { + espScaleSet(work->unkD0[i], sind(work->unk64.y)+1, sind(work->unk64.y)+1); + } + } + work->unk64.x--; + if(0.0f > work->unk64.x) { + float motTime = Hu3DMotionTimeGet(object->model[0]); + if(18.0f == motTime) { + Hu3DParManAttrSet(work->unkE0, 1); + Hu3DModelPosSet(object->model[2], 0, 0, 0); + Hu3DModelHookObjReset(object->model[0], CharModelHookNameGet(work->unkB4, 2, 4)); + Hu3DModelHookSet(object->model[0], CharModelHookNameGet(work->unkB4, 2, 0), object->model[2]); + } + if(40.0f == motTime) { + work->unk64.z = 0; + Hu3DModelHookObjReset(object->model[0], CharModelHookNameGet(work->unkB4, 2, 0)); + fn_1_1D18(object->model[0], CharModelHookNameGet(work->unkB4, 2, 0), &work->unk4C); + work->unk4C.z += 20.0f; + Hu3DModelPosSet(object->model[2], work->unk4C.x, work->unk4C.y, work->unk4C.z); + } + if(40.0f <= motTime) { + work->unk64.z++; + if(12.0f >= work->unk64.z) { + float scale = sind(150.0f*(work->unk64.z/12.0f))+1.0; + Hu3DModelScaleSet(object->model[2], scale, scale, scale); + } + } + if(Hu3DMotionEndCheck(object->model[0])) { + work->unk98++; + Hu3DModelAttrSet(object->model[0], 0x40000001); + Hu3DMotionSet(object->model[0], object->motion[0]); + Hu3DMotionSet(object->model[2], object->motion[14]); + for(i=0; i<4; i++) { + espScaleSet(work->unkD0[i], 1.0f, 1.0f); + } + } + } + break; + + case 2012: + if(Hu3DMotionEndCheck(object->model[2])) { + work->unk98++; + work->unk64.x = 0; + } + break; + + case 2013: + work->unk64.x--; + if(0.0f > work->unk64.x) { + s32 choType; + work->unk64.x = (20.0f*frandf())+20.0f; + choType = -1; + for(i=0; i<3; i++) { + if(choType < 0 && work->unkC4[i] > 0) { + choType = i; + } + } + if(choType < 0) { + work->unk98++; + work->unk64.x = 0; + } else { + lbl_1_bss_20++; + work->unkBC += lbl_1_data_326[choType]; + if(work->unkBC > 99) { + work->unkBC = 99; + } + work->unkC4[choType]--; + fn_1_892C(work->unkB0, choType, &work->unk4C); + HuAudFXPlay(1816); + espBankSet(work->unkD0[2], work->unkBC/10); + espBankSet(work->unkD0[3], work->unkBC%10); + work->unk64.z = 0; + } + } + break; + + case 2014: + work->unk64.x++; + if(30.0f == work->unk64.x) { + Hu3DModelAttrSet(object->model[2], 1); + work->unkE0 = Hu3DParManLink(lbl_1_bss_2C, &lbl_1_data_48C); + Hu3DParManPosSet(work->unkE0, work->unk4C.x, work->unk4C.y+20, work->unk4C.z); + Hu3DParManAttrReset(work->unkE0, 1); + Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(work->unkE0), 1); + Hu3DModelLayerSet(Hu3DParManModelIDGet(work->unkE0), 4); + HuAudFXPlay(1815); + } + if(40.0f == work->unk64.x) { + Hu3DParManAttrSet(work->unkE0, 1); + } + if(60.0f < work->unk64.x && work->unkC0 >= 0) { + work->unk98++; + if(work->unkC0 == 1) { + Hu3DMotionShiftSet(object->model[0], object->motion[9], 0, 20, 0); + } else { + Hu3DMotionShiftSet(object->model[0], object->motion[10], 0, 20, 0); + } + } + break; + + default: + OSReport("*** player mode error(%d)!!\n", work->unk98); + break; + + case 2015: + break; + } + omSetTra(object, work->unk4.x, work->unk4.y, work->unk4.z); + omSetRot(object, 0, work->unk58, 0); +} + +void fn_1_53E8(omObjData *object) +{ + Work53E8 *work = object->data; + s32 i; + + work->unk0 = NULL; + work->unk88 = 10000; + work->unk8C = 0; + work->unk90 = 0; + work->unk94 = 0; + work->unk7C.x = 0; + work->unk7C.y = 0; + work->unk7C.z = 0; + work->unkB0 = object->work[0]; + work->unkB4 = GWPlayerCfg[work->unkB0].character; + work->unkB8 = GWPlayerCfg[work->unkB0].pad_idx; + work->unk98 = 2000; + work->unkBC = 0; + work->unkC0 = -1; + for(i=0; i<3; i++) { + work->unkC4[i] = 0; + } + work->unk9C = 1; + work->unk60 = 50; + work->unk4.x = lbl_1_data_2D4[work->unkB0][0]; + work->unk4.y = lbl_1_data_2D4[work->unkB0][1]; + work->unk4.z = lbl_1_data_2D4[work->unkB0][2]; + work->unk58 = lbl_1_data_2D4[work->unkB0][3]; + work->unk4C.x = 0; + work->unk4C.y = 0; + work->unk4C.z = 0; + object->model[0] = CharModelCreate(lbl_1_data_0[work->unkB4], 2); + CharModelStepTypeSet(lbl_1_data_0[work->unkB4], 0); + for(i=0; i<16; i++) { + object->motion[i] = CharModelMotionCreate(lbl_1_data_0[work->unkB4], lbl_1_data_B0[work->unkB4][i]); + CharModelMotionSet(lbl_1_data_0[work->unkB4], object->motion[i]); + } + CharModelMotionIndexSet(work->unkB4, object->motion[2], 0x5F0002); + CharModelMotionIndexSet(work->unkB4, object->motion[7], 0x5F0002); + CharModelMotionIndexSet(work->unkB4, object->motion[3], 0x5F0003); + Hu3DModelAttrSet(object->model[0], 1); + Hu3DModelAttrSet(object->model[0], 0x40000001); + Hu3DModelLayerSet(object->model[0], 2); + Hu3DMotionSet(object->model[0], object->motion[1]); + object->model[1] = Hu3DModelCreateFile(0x48003F); + for(i=11; i<=12; i++) { + object->motion[i] = Hu3DJointMotionFile(object->model[1], lbl_1_data_2B0[i-11]); + } + Hu3DModelAttrSet(object->model[1], 1); + Hu3DModelAttrReset(object->model[1], 0x40000001); + Hu3DModelLayerSet(object->model[1], 2); + Hu3DModelHookSet(object->model[0], CharModelHookNameGet(work->unkB4, 2, 0), object->model[1]); + object->model[2] = Hu3DModelCreateFile(0x480042); + for(i=13; i<=15; i++) { + object->motion[i] = Hu3DJointMotionFile(object->model[2], lbl_1_data_2B8[i-13]); + } + Hu3DModelAttrSet(object->model[2], 1); + Hu3DModelAttrReset(object->model[2], 0x40000001); + Hu3DModelLayerSet(object->model[2], 2); + Hu3DModelHookSet(object->model[0], CharModelHookNameGet(work->unkB4, 2, 4), object->model[2]); + for(i=0; i<4; i++) { + work->unkD0[i] = espEntry(lbl_1_data_2C4[i], 0, 0); + espDrawNoSet(work->unkD0[i], 0x40); + espDispOff(work->unkD0[i]); + espAttrSet(work->unkD0[i], HUSPR_ATTR_NOANIM); + espBankSet(work->unkD0[i], 0); + espPriSet(work->unkD0[i], 128-i); + espPosSet(work->unkD0[i], 0, 0); + if(i == 0) { + espColorSet(work->unkD0[i], 0, 0, 0); + } + } + omSetTra(object, work->unk4.x, work->unk4.y, work->unk4.z); + omSetRot(object, 0, work->unk58, 0); + for(i=0; i<3; i++) { + Hu3DModelShadowSet(object->model[i]); + } + for(i=0; i<3; i++) { + Hu3DModelAttrReset(object->model[i], 1); + } + if(GWPlayerCfg[work->unkB0].iscom) { + switch(GWPlayerCfg[work->unkB0].diff) { + case 0: + work->unk0 = lbl_1_data_36C; + break; + + case 1: + work->unk0 = lbl_1_data_378; + break; + + case 2: + work->unk0 = lbl_1_data_384; + break; + + case 3: + default: + work->unk0 = lbl_1_data_390; + break; + } + } + CharModelLayerSetAll2(6); + CharModelMotionDataClose(lbl_1_data_0[work->unkB4]); + object->func = fn_1_40A8; +} + +typedef struct work_713C { + Vec unk0; + Vec unkC; + Vec unk18; + Vec unk24; + s16 unk30; + s32 unk34; + s32 unk38; +} Work713C; + +void fn_1_5B2C(omObjData *object) +{ + Hu3DModelAttrSet(object->model[0], 1); + fn_1_24(object->work[0]+4096, object->model[0]); + lbl_1_bss_18[object->work[0]]--; + Hu3DParManKill(((Work713C *)object->data)->unk30); + omDelObjEx(lbl_1_bss_1DC, object); +} + +void fn_1_74F4(s32 arg0); + +void fn_1_5C04(omObjData *object) +{ + Work713C *temp_r31; + Work53E8 *temp_r29; + omObjData *temp_r28; + float *temp_r24; + + s32 temp_r23; + s32 temp_r22; + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f23; + float sp78; + temp_r31 = object->data; + if(lbl_1_bss_4C->work[0] < 1002) { + return; + } + if(temp_r31->unk38) { + if(lbl_1_bss_4C->work[0] >= 1006) { + fn_1_5B2C(object); + } else { + temp_r31->unk24.z--; + if(20.0f == temp_r31->unk24.z) { + Hu3DParManAttrSet(temp_r31->unk30, 1); + } + if(0.0f > temp_r31->unk24.z) { + fn_1_5B2C(object); + fn_1_74F4(1); + } + } + return; + } else { + if(lbl_1_bss_4C->work[0] >= 1006) { + temp_r31->unk18.y += 0.1f; + temp_r31->unk18.x = fn_1_1E20(temp_r31->unk18.x, (180.0f > temp_r31->unk18.x) ? 90.0f : 270.0f, 0.05f); + temp_r31->unk0.x += temp_r31->unk18.y*sind(temp_r31->unk18.x); + temp_r31->unk0.z += temp_r31->unk18.y*cosd(temp_r31->unk18.x); + if(1200.0f < ABS(temp_r31->unk0.x)) { + fn_1_5B2C(object); + return; + } + } else { + if(temp_r31->unk34) { + temp_f31 = -temp_r31->unk0.x; + temp_f30 = -temp_r31->unk0.z; + temp_r31->unk18.x = fn_1_1E20(temp_r31->unk18.x, atan2d(temp_f31, temp_f30), 0.05f); + temp_r31->unk0.x += temp_r31->unk18.y*sind(temp_r31->unk18.x); + temp_r31->unk0.z += temp_r31->unk18.y*cosd(temp_r31->unk18.x); + temp_f31 = -temp_r31->unk0.x; + temp_f30 = -temp_r31->unk0.z; + temp_f23 = sqrtf((temp_f31*temp_f31)+(temp_f30*temp_f30)); + if(600.0f >= temp_f23) { + temp_r31->unk34 = 0; + } + } else { + temp_r31->unk18.x += ((frandf()*2.0f)-1.0f)*3.0f; + temp_r31->unk18.y += ((frandf()*2.0f)-1.0f)*0.1f; + temp_r24 = &lbl_1_data_350[object->work[0]][0]; + if(temp_r24[0] > temp_r31->unk18.y) { + temp_r31->unk18.y = temp_r24[0]; + } + if(temp_r24[1] < temp_r31->unk18.y) { + temp_r31->unk18.y = temp_r24[1]; + } + temp_r31->unk0.x += temp_r31->unk18.y*sind(temp_r31->unk18.x); + temp_r31->unk0.z += temp_r31->unk18.y*cosd(temp_r31->unk18.x); + temp_f31 = -temp_r31->unk0.x; + temp_f30 = -temp_r31->unk0.z; + temp_f23 = sqrtf((temp_f31*temp_f31)+(temp_f30*temp_f30)); + if(600.0f < temp_f23) { + temp_r31->unk18.x = fn_1_1E20(temp_r31->unk18.x, atan2d(temp_f31, temp_f30), 0.05f); + } + } + } + temp_f23 = ABS(temp_r31->unk24.y-temp_r31->unk0.y); + if(2.0f > temp_f23) { + temp_r31->unk24.x--; + if(0.0f > temp_r31->unk24.x) { + temp_r31->unk24.x = 60.0f; + if(frandmod(100) > 50) { + temp_r31->unk24.y = (frandf()*220.0f)+80.0f; + } + } + } else { + temp_r31->unk0.y += (temp_r31->unk24.y > temp_r31->unk0.y) ? 1.0f : -1.0f; + } + temp_r31->unk18.z += (frandf()*4.0f)+4.0f; + omSetTra(object, temp_r31->unk0.x, (sind(temp_r31->unk18.z)*10.0)+temp_r31->unk0.y, temp_r31->unk0.z); + omSetRot(object, 0, temp_r31->unk18.x+180.0f, 0); + if(temp_r31->unk30 >= 0) { + temp_f31 = sind(temp_r31->unk18.x+180.0f)*30; + temp_f30 = cosd(temp_r31->unk18.x+180.0f)*30; + Hu3DParManPosSet(temp_r31->unk30, temp_r31->unk0.x+temp_f31, temp_r31->unk0.y, temp_r31->unk0.z+temp_f30); + Hu3DParManVecSet(temp_r31->unk30, temp_r31->unk18.y*sind(temp_r31->unk18.x+180.0f), 0, temp_r31->unk18.y*cosd(temp_r31->unk18.x+180.0f)); + } + temp_r22 = -1; + for(temp_r23=0; temp_r23<4; temp_r23++) { + temp_r29 = lbl_1_bss_48[temp_r23]->data; + if(600.0f > VECMagXZ(&temp_r31->unk0)) { + temp_f31 = temp_r29->unk4.x-temp_r31->unk0.x; + temp_f30 = temp_r29->unk4.z-temp_r31->unk0.z; + temp_f23 = sqrtf((temp_f31*temp_f31)+(temp_f30*temp_f30))-170; + if(0.0f < temp_f23 && temp_r29->unk88 > temp_f23) { + temp_r29->unk88 = temp_f23; + temp_r29->unk7C = temp_r31->unk0; + } + } + if(temp_r29->unk98 == 2005) { + temp_f31 = temp_r29->unk28.x-temp_r31->unk0.x; + temp_f29 = temp_r29->unk28.y-temp_r31->unk0.y; + temp_f30 = temp_r29->unk28.z-temp_r31->unk0.z; + temp_f23 = VECMagPoint(temp_f31, temp_f29, temp_f30); + if(60.0f > temp_f23) { + if(temp_r22 < 0) { + temp_r22 = temp_r23; + } else if(frandmod(100) > 50) { + temp_r22 = temp_r23; + } + } + } + } + if(temp_r22 >= 0) { + temp_r31->unk38 = 1; + temp_r31->unk24.z = 30; + Hu3DParManKill(temp_r31->unk30); + temp_r31->unk30 = Hu3DParManLink(lbl_1_bss_34, &lbl_1_data_3EC); + Hu3DParManPosSet(temp_r31->unk30, temp_r31->unk0.x, temp_r31->unk0.y, temp_r31->unk0.z); + Hu3DParManColorSet(temp_r31->unk30, object->work[0]); + Hu3DModelAttrSet(object->model[0], 1); + temp_r28 = lbl_1_bss_48[temp_r22]; + temp_r29 = temp_r28->data; + temp_r29->unkC4[object->work[0]]++; + temp_r29->unk90 += lbl_1_data_326[object->work[0]]; + sp78 = Hu3DMotionTimeGet(temp_r28->model[1]); + Hu3DMotionSet(temp_r28->model[1], temp_r28->motion[12]); + Hu3DMotionTimeSet(temp_r28->model[1], sp78); + Hu3DMotionSet(temp_r28->model[2], temp_r28->motion[13]); + omVibrate(temp_r29->unkB0, 12, 6, 6); + HuAudFXEmiterPlay(1813, &temp_r31->unk0); + } + } +} + +void fn_1_713C(omObjData *object) +{ + Work713C *work = object->data; + s16 mdlId = fn_1_AC(object->work[0]+4096); + Vec *scale; + if(mdlId < 0) { + object->model[0] = Hu3DModelLink(lbl_1_bss_12[object->work[0]]); + } else { + object->model[0] = mdlId; + } + Hu3DModelAttrSet(object->model[0], 1); + Hu3DModelAttrSet(object->model[0], 0x40000003); + Hu3DModelLayerSet(object->model[0], 3); + Hu3DModelShadowSet(object->model[0]); + scale = &lbl_1_data_32C[object->work[0]]; + omSetTra(object, work->unk0.x, work->unk0.y, work->unk0.z); + omSetRot(object, 0, work->unk18.x+180, 0); + omSetSca(object, scale->x, scale->y, scale->z); + work->unk30 = Hu3DParManLink(lbl_1_bss_34, &lbl_1_data_39C); + if(work->unk30 >= 0) { + float x = sind(work->unk18.x+180)*30.0; + float y = cosd(work->unk18.x+180)*30.0; + Hu3DParManPosSet(work->unk30, work->unk0.x+x, work->unk0.y, work->unk0.z+y); + Hu3DParManVecSet(work->unk30, work->unk18.y*sind(work->unk18.x+180.0f), 0, work->unk18.y*cosd(work->unk18.x+180.0f)); + Hu3DParManAttrSet(work->unk30, 0x804); + Hu3DParManAttrReset(work->unk30, 1); + Hu3DParManColorSet(work->unk30, object->work[0]); + Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(work->unk30), 1); + Hu3DModelLayerSet(Hu3DParManModelIDGet(work->unk30), 4); + + } + Hu3DModelAttrReset(object->model[0], 0x40000002); + Hu3DModelAttrReset(object->model[0], 1); + object->func = fn_1_5C04; +} + +void fn_1_74F4(s32 arg0) +{ + s16 no = -1; + s16 i; + omObjData *object; + Work713C *work; + float radius; + for(i=0; i<3; i++) { + if(lbl_1_data_320[i] > lbl_1_bss_18[i]) { + no = i; + } + } + if(no < 0) { + return; + } + lbl_1_bss_18[no]++; + object = omAddObjEx(lbl_1_bss_1DC, 101, 1, 0, 1, fn_1_713C); + object->work[0] = no; + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work713C), MEMORY_DEFAULT_NUM); + work = object->data; + work->unk34 = arg0; + work->unk18.z = 0; + work->unk38 = 0; + work->unk18.y = 2; + work->unk24.x = (frandf()*180.0f)+180.0f; + if(arg0) { + work->unk18.y = 3; + work->unk18.x = 180.0f-(frandf()*120.0f); + if(frandmod(100) > 50) { + work->unk18.x = 360.0f-work->unk18.x; + } + radius = 1200; + work->unk0.x = radius*sind(work->unk18.x+180.0f); + work->unk0.y = (frandf()*220.0f)+80.0f; + work->unk0.z = radius*cosd(work->unk18.x+180.0f); + } else { + if(lbl_1_bss_C) { + lbl_1_bss_C = 0; + work->unk18.x = 45.0f+(frandf()*90.0f); + if(frandmod(100) > 50) { + work->unk18.x += 180.0f; + } + work->unk0.x = 0; + work->unk0.y = 80; + work->unk0.z = 0; + } else { + repeat: + radius = 300; + radius += radius*frandf(); + work->unk18.x = 360.0f*frandf(); + work->unk0.x = radius*sind(work->unk18.x); + work->unk0.y = (frandf()*220.0f)+80.0f; + work->unk0.z = radius*cosd(work->unk18.x); + if(0.0f < work->unk0.y) { + if(150.0f > ABS(work->unk0.x)) { + goto repeat; + } + } + } + } + work->unk24.y = work->unk0.y; +} + +void fn_1_7958(omObjData *object) +{ + Hu3DModelAttrSet(object->model[0], 1); + fn_1_24(object->work[0]+4096, object->model[0]); + Hu3DParManKill(((Work713C *)object->data)->unk30); + omDelObjEx(lbl_1_bss_1DC, object); + lbl_1_bss_1E--; +} + +void fn_1_7A2C(omObjData *object) +{ + Work713C *work = object->data; + float x = work->unkC.x-work->unk0.x; + float y = work->unkC.y-work->unk0.y; + float len = sqrtf((x*x)+(y*y)); + if(10.0f > len) { + work->unk18.y--; + if(0.0f > work->unk18.y) { + work->unk18.y = 0; + } + work->unk18.x = fn_1_1E20(work->unk18.x, 0.0f, 0.05f); + } else { + work->unk18.y += 0.1f; + if(3.0f < work->unk18.y) { + work->unk18.y = 3.0f; + } + work->unk18.x = fn_1_1E20(work->unk18.x, atan2d(-x, y), 0.05f); + } + work->unk0.x -= work->unk18.y*sind(work->unk18.x); + work->unk0.y += work->unk18.y*cosd(work->unk18.x); + omSetTra(object, work->unk0.x, work->unk0.y, work->unk0.z); + omSetRot(object, 90, 0, work->unk18.x); + if(work->unk30 >= 0) { + Hu3DParManPosSet(work->unk30, work->unk0.x, work->unk0.y, work->unk0.z); + Hu3DParManVecSet(work->unk30, -2*sind(work->unk18.x+180.0f), 2*cosd(work->unk18.x+180.0f), 0); + } +} + +void fn_1_803C(omObjData *object) +{ + Work713C *work = object->data; + float x; + float y; + work->unk18.y -= 0.1f; + if(2.0f > work->unk18.y) { + work->unk18.y = 2.0f; + if(work->unkC.y > work->unk0.y) { + x = work->unkC.x-work->unk0.x; + y = work->unkC.y-work->unk0.y; + work->unk18.x = fn_1_1E20(work->unk18.x, atan2d(-x, y), 0.05f); + } + } + + work->unk0.x -= work->unk18.y*sind(work->unk18.x); + work->unk0.y += work->unk18.y*cosd(work->unk18.x); + omSetTra(object, work->unk0.x, work->unk0.y, work->unk0.z); + omSetRot(object, 90, 0, work->unk18.x); + if(work->unk30 >= 0) { + x = sind(work->unk18.x+180)*-20.0; + y = cosd(work->unk18.x+180)*20.0; + Hu3DParManPosSet(work->unk30, work->unk0.x+x, work->unk0.y+y, work->unk0.z); + Hu3DParManVecSet(work->unk30, -work->unk18.y*sind(work->unk18.x+180.0f), work->unk18.y*cosd(work->unk18.x+180.0f), 0); + } + if(450.0f < work->unk0.y) { + fn_1_7958(object); + } +} + +void fn_1_8518(omObjData *object) +{ + Work713C *work; + s16 mdlId = fn_1_AC(object->work[0]+4096); + Vec *scale; + if(mdlId < 0) { + object->model[0] = Hu3DModelLink(lbl_1_bss_12[object->work[0]]); + } else { + object->model[0] = mdlId; + } + work = object->data; + work->unk18.y = 6.0f; + work->unk18.x = (frandf()*60.0f)-30.0f; + Hu3DModelAttrSet(object->model[0], 1); + Hu3DModelAttrSet(object->model[0], 0x40000003); + Hu3DModelLayerSet(object->model[0], 3); + Hu3DModelShadowSet(object->model[0]); + scale = &lbl_1_data_32C[object->work[0]]; + omSetTra(object, work->unk0.x, work->unk0.y, work->unk0.z); + omSetRot(object, 90, 0, work->unk18.x); + omSetSca(object, scale->x*0.5f, scale->y*0.5f, scale->z*0.5f); + work->unk30 = Hu3DParManLink(lbl_1_bss_34, &lbl_1_data_39C); + if(work->unk30 >= 0) { + float x = sind(work->unk18.x+180)*-20.0; + float y = cosd(work->unk18.x+180)*20.0; + Hu3DParManPosSet(work->unk30, work->unk0.x+x, work->unk0.y+y, work->unk0.z); + Hu3DParManVecSet(work->unk30, -work->unk18.y*sind(work->unk18.x+180.0f), work->unk18.y*cosd(work->unk18.x+180.0f), 0); + Hu3DParManAttrSet(work->unk30, 0x804); + Hu3DParManAttrReset(work->unk30, 1); + Hu3DParManColorSet(work->unk30, object->work[0]); + Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(work->unk30), 1); + Hu3DModelLayerSet(Hu3DParManModelIDGet(work->unk30), 4); + + } + Hu3DModelAttrReset(object->model[0], 0x40000002); + Hu3DModelAttrReset(object->model[0], 1); + object->func = fn_1_803C; +} + +void fn_1_892C(s16 arg0, s16 arg1, Vec *arg2) +{ + omObjData *object; + Work713C *work; + float x; + float y; + float z; + if(lbl_1_bss_1E >= 400) { + OSReport("over!!\n"); + return; + } + lbl_1_bss_1E++; + object = omAddObjEx(lbl_1_bss_1DC, 102, 1, 0, 2, fn_1_8518); + object->work[0] = arg1; + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work713C), MEMORY_DEFAULT_NUM); + work = object->data; + fn_1_40A8InlineFunc(&work->unk0, arg2->x, arg2->y+10, arg2->z+8); + fn_1_40A8InlineFunc(&work->unkC, arg2->x, 250, arg2->z); +} + +s32 fn_1_8AA0(s32 arg0) +{ + float angle = 12.0f*(arg0%30); + float radius = 730.0f+(60.0f*(arg0/30)); + if(arg0/30 >= 2 && (100.0f > angle || 260.0f < angle)) { + return 0; + } else { + s16 model = Hu3DModelLink(lbl_1_bss_10[0]); + Hu3DModelAttrSet(model, 0x4001); + Hu3DModelAttrSet(model, 0x40000003); + Hu3DModelLayerSet(model, 1); + Hu3DMotionTimeSet(model, Hu3DMotionMaxTimeGet(model)*frandf()); + Hu3DModelPosSet(model, ((radius*sind(angle))+(frandf()*20.0f))-10, -60.0f, radius*cosd(angle)); + Hu3DModelScaleSet(model, 2, 2, 2); + Hu3DModelAttrReset(model, 0x40000002); + Hu3DModelAttrReset(model, 1); + return 1; + } +} + +void fn_1_AA4C(omObjData *object); + +void fn_1_8D58(omObjData *object) +{ + Vec sp38; + s32 i; + + if(omSysExitReq) { + fn_1_1F58(-1); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_AA4C; + } + lbl_1_bss_24 += (1.0f/60.0f); + if(360.0f <= lbl_1_bss_24) { + lbl_1_bss_24 -= 360.0f; + } + Hu3DModelRotSet(object->model[2], 0, lbl_1_bss_24, 0); + lbl_1_bss_1A8++; + switch(object->work[0]) { + case 1000: + if(!WipeStatGet()) { + object->work[0]++; + lbl_1_bss_28 = 0; + } + break; + + case 1001: + lbl_1_bss_28++; + if(60.0f < lbl_1_bss_28) { + object->work[0]++; + lbl_1_bss_28 = 0; + lbl_1_bss_1C4 = lbl_1_data_34; + lbl_1_bss_1AC = lbl_1_data_4C; + VECSubtract(&lbl_1_bss_1AC, &lbl_1_bss_1C4, &sp38); + VECNormalize(&sp38, &sp38); + HuAudFXListnerSetEX(&lbl_1_bss_1C4, &sp38, 10000.0, 36000.0, 0.0, 300.0, 300.0); + } + break; + + case 1002: + lbl_1_bss_28++; + fn_1_13DC(lbl_1_bss_28/180.0f, &lbl_1_data_40); + if(180.0f <= lbl_1_bss_28) { + object->work[0]++; + fn_1_1350(&lbl_1_data_34, &lbl_1_data_40, &lbl_1_data_4C); + } + + break; + + case 1003: + if(lbl_1_bss_19E < 0) { + lbl_1_bss_19E = MGSeqStartCreate(); + Hu3DModelAttrSet(lbl_1_bss_4C->model[2], 1); + } else { + if(lbl_1_bss_198 < 0 && (MGSeqStatGet(lbl_1_bss_19E) & 0x10)) { + fn_1_1F24(69); + } + if(!MGSeqStatGet(lbl_1_bss_19E)) { + object->work[0]++; + lbl_1_bss_1A4 = 3600; + lbl_1_bss_19C = MGSeqTimerCreate(lbl_1_bss_1A4/60); + lbl_1_bss_19E = -1; + } + } + break; + + case 1004: + MGSeqParamSet(lbl_1_bss_19C, 1, (lbl_1_bss_1A4+59)/60); + lbl_1_bss_1A4--; + if(lbl_1_bss_1A4 < 0) { + object->work[0] = 1005; + lbl_1_bss_1A4 = 3600; + lbl_1_bss_28 = 0; + } + break; + + case 1005: + if(lbl_1_bss_19E < 0) { + MGSeqParamSet(lbl_1_bss_19C, 2, -1); + lbl_1_bss_19C = -1; + lbl_1_bss_19E = MGSeqFinishCreate(); + fn_1_1F58(100); + Hu3DModelAttrReset(lbl_1_bss_4C->model[2], 1); + } else { + for(i=0; i<4; i++) { + if(OM_GET_DATA_PTR(lbl_1_bss_48[i], Work53E8)->unk98 != 2007) { + break; + } + } + if(i == 4 && !MGSeqStatGet(lbl_1_bss_19E)) { + object->work[0]++; + lbl_1_bss_19E = -1; + lbl_1_bss_20 = 0; + lbl_1_bss_28 = 0; + lbl_1_bss_1C4 = lbl_1_data_58; + lbl_1_bss_1AC = lbl_1_data_70; + } + } + break; + + case 1006: + lbl_1_bss_28++; + fn_1_13DC(lbl_1_bss_28/120.0f, &lbl_1_data_64); + if(120.0f <= lbl_1_bss_28) { + lbl_1_bss_28 = 120.0f; + for(i=0; i<4; i++) { + float temp; + if(OM_GET_DATA_PTR(lbl_1_bss_48[i], Work53E8)->unk98 != 2010) { + break; + } + temp = OM_GET_DATA_PTR(lbl_1_bss_48[i], Work53E8)->unk58; + if(2.0f < temp && 358.0f > temp) { + break; + } + } + if(i == 4) { + object->work[0]++; + lbl_1_bss_28 = 60; + } + } + break; + + case 1007: + for(i=0; i<4; i++) { + if(OM_GET_DATA_PTR(lbl_1_bss_48[i], Work53E8)->unk98 != 2014) { + break; + } + } + if(i == 4) { + if(0.0f > lbl_1_bss_28--) { + object->work[0]++; + lbl_1_bss_28 = 0; + if(lbl_1_bss_20 == 0) { + HuAudSStreamPlay(4); + for(i=0; i<4; i++) { + OM_GET_DATA_PTR(lbl_1_bss_48[i], Work53E8)->unkC0 = 4; + } + } else { + s32 temp_r27; + HuAudSStreamPlay(1); + temp_r27 = -1; + for(i=0; i<4; i++) { + s32 temp_r22 = -1; + s32 temp_r26 = -1; + Work53E8 *temp_r29; + s32 j; + for(j=0; j<4; j++) { + temp_r29 = lbl_1_bss_48[j]->data; + if(temp_r29->unkC0 < 0 && temp_r22 < temp_r29->unkBC) { + temp_r22 = temp_r29->unkBC; + temp_r26 = j; + } + } + temp_r29 = lbl_1_bss_48[temp_r26]->data; + temp_r29->unkC0 = i+1; + if(temp_r27 >= 0 && temp_r29->unkBC == OM_GET_DATA_PTR(lbl_1_bss_48[temp_r27], Work53E8)->unkBC) { + temp_r29->unkC0 = OM_GET_DATA_PTR(lbl_1_bss_48[temp_r27], Work53E8)->unkC0; + } + temp_r27 = temp_r26; + } + } + for(i=0; i<4; i++) { + GWPlayerCoinWinSet(OM_GET_DATA_PTR(lbl_1_bss_48[i], Work53E8)->unkB0, OM_GET_DATA_PTR(lbl_1_bss_48[i], Work53E8)->unkC0-1); + } + } + + } + break; + + case 1008: + lbl_1_bss_28++; + if(210.0f < lbl_1_bss_28) { + fn_1_1F58(-1); + lbl_1_bss_19E = -1; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_AA4C; + } + + break; + + default: + OSReport("*** main mode error(%d)!!\n", object->work[0]); + break; + } +} + +void fn_1_9F40(omObjData *object) +{ + s32 singleNo; + s32 i; + s32 angleNo; + lbl_1_bss_24 = 0; + object->work[0] = 1000; + object->model[0] = Hu3DModelCreateFile(0x480038); + Hu3DModelAttrSet(object->model[0], 0x4001); + Hu3DModelAttrSet(object->model[0], 0x40000002); + Hu3DModelLayerSet(object->model[0], 0); + Hu3DModelAttrReset(object->model[0], 1); + Hu3DModelShadowMapSet(object->model[0]); + omSetTra(object, 0, -31, 0); + object->model[1] = Hu3DModelCreateFile(0x480039); + Hu3DModelAttrSet(object->model[1], 0x4001); + Hu3DModelAttrSet(object->model[1], 0x40000002); + Hu3DModelLayerSet(object->model[1], 0); + Hu3DModelPosSet(object->model[1], 0, -31, 0); + Hu3DModelAttrReset(object->model[1], 1); + object->model[2] = Hu3DModelCreateFile(0x48003A); + Hu3DModelAttrSet(object->model[2], 0x4001); + Hu3DModelAttrSet(object->model[2], 0x40000002); + Hu3DModelLayerSet(object->model[2], 0); + Hu3DModelPosSet(object->model[2], 0, -31, 0); + Hu3DModelAttrReset(object->model[2], 1); + for(singleNo=0; singleNo<1; singleNo++) { + lbl_1_bss_10[singleNo] = Hu3DModelCreateFile(lbl_1_data_368[singleNo]); + Hu3DModelAttrSet(lbl_1_bss_10[singleNo], 0x4001); + Hu3DModelAttrSet(lbl_1_bss_10[singleNo], 0x40000003); + } + for(i=0, angleNo=0; i<30;) { + if(fn_1_8AA0(angleNo++) != 0) { + i++; + } + } + HuAudFXPlay(1818); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_8D58; +} + +void ObjectSetup(void) +{ + Vec shadowDir; + s32 i; + omObjData *object; + s32 glight; + OSReport("******* M441 ObjectSetup *********\n"); + lbl_1_bss_1DC = omInitObjMan(600, 8192); + omGameSysInit(lbl_1_bss_1DC); + lbl_1_bss_1A8 = 0; + lbl_1_bss_19E = -1; + lbl_1_bss_19C = -1; + lbl_1_bss_1E = 0; + lbl_1_bss_198 = -1; + lbl_1_bss_4 = 0; + lbl_1_bss_8 = 2100; + lbl_1_bss_0 = 1200; + Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); + Hu3DCameraPerspectiveSet(1, 30, 20, 20000, 1.2); + fn_1_1350(&lbl_1_data_10, &lbl_1_data_1C, &lbl_1_data_28); + + glight = Hu3DGLightCreateV(&lbl_1_data_7C, &lbl_1_data_88, &lbl_1_data_94); + Hu3DGLightStaticSet(glight, 1); + Hu3DGLightInfinitytSet(glight); + Hu3DShadowCreate(30, 20, 20000); + Hu3DShadowTPLvlSet(0.8); + VECNormalize(&lbl_1_data_98, &shadowDir); + Hu3DShadowPosSet(&lbl_1_data_98, &shadowDir, &lbl_1_data_A4); + HuSprExecLayerSet(64, 5); + omMakeGroupEx(lbl_1_bss_1DC, 0, 4); + lbl_1_bss_48 = omGetGroupMemberListEx(lbl_1_bss_1DC, 0); + for(i=0; i<4; i++) { + object = omAddObjEx(lbl_1_bss_1DC, 100, 3, 16, 0, fn_1_53E8); + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work53E8), MEMORY_DEFAULT_NUM); + object->work[0] = i; + } + fn_1_0(); + lbl_1_bss_C = 1; + omMakeGroupEx(lbl_1_bss_1DC, 1, 20); + lbl_1_bss_44 = omGetGroupMemberListEx(lbl_1_bss_1DC, 1); + for(i=0; i<3; i++) { + lbl_1_bss_18[i] = 0; + lbl_1_bss_12[i] = Hu3DModelCreateFile(lbl_1_data_314[i]); + Hu3DModelAttrSet(lbl_1_bss_12[i], 1); + Hu3DModelAttrSet(lbl_1_bss_12[i], 0x40000003); + } + for(i=0; i<20; i++) { + fn_1_74F4(0); + } + omMakeGroupEx(lbl_1_bss_1DC, 2, 400); + lbl_1_bss_40 = omGetGroupMemberListEx(lbl_1_bss_1DC, 2); + lbl_1_bss_38 = HuSprAnimReadFile(0x480046); + HuSprAnimLock(lbl_1_bss_38); + lbl_1_bss_34 = Hu3DParManCreate(lbl_1_bss_38, 500, &lbl_1_data_39C); + Hu3DParManAttrSet(lbl_1_bss_34, 1); + lbl_1_bss_30 = HuSprAnimReadFile(0x480047); + HuSprAnimLock(lbl_1_bss_30); + lbl_1_bss_2C = Hu3DParManCreate(lbl_1_bss_30, 20, &lbl_1_data_48C); + Hu3DParManAttrSet(lbl_1_bss_2C, 1); + lbl_1_bss_4C = omAddObjEx(lbl_1_bss_1DC, 103, 3, 0, -1, fn_1_9F40); +} + +void fn_1_AA4C(omObjData *object) +{ + s32 i; + if(WipeStatGet()) { + return; + } + if(lbl_1_bss_19E >= 0) { + MGSeqKill(lbl_1_bss_19E); + } + if(lbl_1_bss_19C >= 0) { + MGSeqKill(lbl_1_bss_19C); + } + MGSeqKillAll(); + HuAudAllStop(); + for(i=0; i<4; i++) { + CharModelKill(lbl_1_data_0[GWPlayerCfg[i].character]); + } + omOvlReturnEx(1, 1); + +}