diff --git a/config/GMPE01_00/rels/m429Dll/symbols.txt b/config/GMPE01_00/rels/m429Dll/symbols.txt index 36d104de..baf92ef1 100644 --- a/config/GMPE01_00/rels/m429Dll/symbols.txt +++ b/config/GMPE01_00/rels/m429Dll/symbols.txt @@ -69,166 +69,166 @@ ModuleProlog = .text:0x0000DC9C; // type:function size:0xCD0 fn_1_E96C = .text:0x0000E96C; // type:function size:0x104 _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:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 data:double -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double -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_140 = .rodata:0x00000140; // type:object size:0x8 data:double -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // 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:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -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_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:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 scope:local data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +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_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 scope:local data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // 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:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +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_data_0 = .data:0x00000000; // type:object size:0x10 -lbl_1_data_10 = .data:0x00000010; // type:object size:0xD data:string -lbl_1_data_1D = .data:0x0000001D; // type:object size:0xE data:string -lbl_1_data_2B = .data:0x0000002B; // type:object size:0xE data:string -lbl_1_data_39 = .data:0x00000039; // type:object size:0xE data:string -lbl_1_data_47 = .data:0x00000047; // type:object size:0xD data:string -lbl_1_data_54 = .data:0x00000054; // type:object size:0xD data:string -lbl_1_data_61 = .data:0x00000061; // type:object size:0xE data:string -lbl_1_data_6F = .data:0x0000006F; // type:object size:0xE data:string -lbl_1_data_7D = .data:0x0000007D; // type:object size:0xE data:string -lbl_1_data_8B = .data:0x0000008B; // type:object size:0xD data:string -lbl_1_data_98 = .data:0x00000098; // type:object size:0xE data:string -lbl_1_data_A6 = .data:0x000000A6; // type:object size:0xE data:string -lbl_1_data_B4 = .data:0x000000B4; // type:object size:0xE data:string -lbl_1_data_C2 = .data:0x000000C2; // type:object size:0xD data:string -lbl_1_data_CF = .data:0x000000CF; // type:object size:0xD data:string -lbl_1_data_DC = .data:0x000000DC; // type:object size:0xD data:string -lbl_1_data_E9 = .data:0x000000E9; // type:object size:0xD data:string -lbl_1_data_F6 = .data:0x000000F6; // type:object size:0xE data:string -lbl_1_data_104 = .data:0x00000104; // type:object size:0xE data:string -lbl_1_data_112 = .data:0x00000112; // type:object size:0xE data:string -lbl_1_data_120 = .data:0x00000120; // type:object size:0xE data:string -lbl_1_data_12E = .data:0x0000012E; // type:object size:0xE data:string -lbl_1_data_13C = .data:0x0000013C; // type:object size:0xE data:string -lbl_1_data_14A = .data:0x0000014A; // type:object size:0xE data:string -lbl_1_data_158 = .data:0x00000158; // type:object size:0xE data:string -lbl_1_data_166 = .data:0x00000166; // type:object size:0xE data:string -lbl_1_data_174 = .data:0x00000174; // type:object size:0xE data:string -lbl_1_data_182 = .data:0x00000182; // type:object size:0xE data:string -lbl_1_data_190 = .data:0x00000190; // type:object size:0xE data:string -lbl_1_data_19E = .data:0x0000019E; // type:object size:0xE data:string -lbl_1_data_1AC = .data:0x000001AC; // type:object size:0xE data:string -lbl_1_data_1BA = .data:0x000001BA; // type:object size:0xE data:string -lbl_1_data_1C8 = .data:0x000001C8; // type:object size:0xE data:string -lbl_1_data_1D6 = .data:0x000001D6; // type:object size:0xE data:string -lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0xE data:string -lbl_1_data_1F2 = .data:0x000001F2; // type:object size:0xE data:string -lbl_1_data_200 = .data:0x00000200; // type:object size:0xE data:string -lbl_1_data_20E = .data:0x0000020E; // type:object size:0xE data:string -lbl_1_data_21C = .data:0x0000021C; // type:object size:0xE data:string +lbl_1_data_10 = .data:0x00000010; // type:object size:0xD scope:local data:string +lbl_1_data_1D = .data:0x0000001D; // type:object size:0xE scope:local data:string +lbl_1_data_2B = .data:0x0000002B; // type:object size:0xE scope:local data:string +lbl_1_data_39 = .data:0x00000039; // type:object size:0xE scope:local data:string +lbl_1_data_47 = .data:0x00000047; // type:object size:0xD scope:local data:string +lbl_1_data_54 = .data:0x00000054; // type:object size:0xD scope:local data:string +lbl_1_data_61 = .data:0x00000061; // type:object size:0xE scope:local data:string +lbl_1_data_6F = .data:0x0000006F; // type:object size:0xE scope:local data:string +lbl_1_data_7D = .data:0x0000007D; // type:object size:0xE scope:local data:string +lbl_1_data_8B = .data:0x0000008B; // type:object size:0xD scope:local data:string +lbl_1_data_98 = .data:0x00000098; // type:object size:0xE scope:local data:string +lbl_1_data_A6 = .data:0x000000A6; // type:object size:0xE scope:local data:string +lbl_1_data_B4 = .data:0x000000B4; // type:object size:0xE scope:local data:string +lbl_1_data_C2 = .data:0x000000C2; // type:object size:0xD scope:local data:string +lbl_1_data_CF = .data:0x000000CF; // type:object size:0xD scope:local data:string +lbl_1_data_DC = .data:0x000000DC; // type:object size:0xD scope:local data:string +lbl_1_data_E9 = .data:0x000000E9; // type:object size:0xD scope:local data:string +lbl_1_data_F6 = .data:0x000000F6; // type:object size:0xE scope:local data:string +lbl_1_data_104 = .data:0x00000104; // type:object size:0xE scope:local data:string +lbl_1_data_112 = .data:0x00000112; // type:object size:0xE scope:local data:string +lbl_1_data_120 = .data:0x00000120; // type:object size:0xE scope:local data:string +lbl_1_data_12E = .data:0x0000012E; // type:object size:0xE scope:local data:string +lbl_1_data_13C = .data:0x0000013C; // type:object size:0xE scope:local data:string +lbl_1_data_14A = .data:0x0000014A; // type:object size:0xE scope:local data:string +lbl_1_data_158 = .data:0x00000158; // type:object size:0xE scope:local data:string +lbl_1_data_166 = .data:0x00000166; // type:object size:0xE scope:local data:string +lbl_1_data_174 = .data:0x00000174; // type:object size:0xE scope:local data:string +lbl_1_data_182 = .data:0x00000182; // type:object size:0xE scope:local data:string +lbl_1_data_190 = .data:0x00000190; // type:object size:0xE scope:local data:string +lbl_1_data_19E = .data:0x0000019E; // type:object size:0xE scope:local data:string +lbl_1_data_1AC = .data:0x000001AC; // type:object size:0xE scope:local data:string +lbl_1_data_1BA = .data:0x000001BA; // type:object size:0xE scope:local data:string +lbl_1_data_1C8 = .data:0x000001C8; // type:object size:0xE scope:local data:string +lbl_1_data_1D6 = .data:0x000001D6; // type:object size:0xE scope:local data:string +lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0xE scope:local data:string +lbl_1_data_1F2 = .data:0x000001F2; // type:object size:0xE scope:local data:string +lbl_1_data_200 = .data:0x00000200; // type:object size:0xE scope:local data:string +lbl_1_data_20E = .data:0x0000020E; // type:object size:0xE scope:local data:string +lbl_1_data_21C = .data:0x0000021C; // type:object size:0xE scope:local data:string lbl_1_data_22C = .data:0x0000022C; // type:object size:0x57C -lbl_1_data_7A8 = .data:0x000007A8; // type:object size:0xD data:string -lbl_1_data_7B5 = .data:0x000007B5; // type:object size:0xD data:string -lbl_1_data_7C2 = .data:0x000007C2; // type:object size:0xD data:string -lbl_1_data_7CF = .data:0x000007CF; // type:object size:0xE data:string -lbl_1_data_7DD = .data:0x000007DD; // type:object size:0xE data:string -lbl_1_data_7EB = .data:0x000007EB; // type:object size:0xE data:string -lbl_1_data_7F9 = .data:0x000007F9; // type:object size:0xE data:string -lbl_1_data_807 = .data:0x00000807; // type:object size:0xD data:string -lbl_1_data_814 = .data:0x00000814; // type:object size:0xD data:string -lbl_1_data_821 = .data:0x00000821; // type:object size:0xD data:string -lbl_1_data_82E = .data:0x0000082E; // type:object size:0xE data:string -lbl_1_data_83C = .data:0x0000083C; // type:object size:0xE data:string -lbl_1_data_84A = .data:0x0000084A; // type:object size:0xD data:string -lbl_1_data_857 = .data:0x00000857; // type:object size:0xD data:string -lbl_1_data_864 = .data:0x00000864; // type:object size:0xD data:string -lbl_1_data_871 = .data:0x00000871; // type:object size:0xE data:string -lbl_1_data_87F = .data:0x0000087F; // type:object size:0xE data:string -lbl_1_data_88D = .data:0x0000088D; // type:object size:0xE data:string -lbl_1_data_89B = .data:0x0000089B; // type:object size:0xE data:string -lbl_1_data_8A9 = .data:0x000008A9; // type:object size:0xE data:string -lbl_1_data_8B7 = .data:0x000008B7; // type:object size:0xE data:string -lbl_1_data_8C5 = .data:0x000008C5; // type:object size:0xE data:string -lbl_1_data_8D3 = .data:0x000008D3; // type:object size:0xE data:string -lbl_1_data_8E1 = .data:0x000008E1; // type:object size:0xE data:string -lbl_1_data_8EF = .data:0x000008EF; // type:object size:0xE data:string -lbl_1_data_8FD = .data:0x000008FD; // type:object size:0xE data:string -lbl_1_data_90B = .data:0x0000090B; // type:object size:0xE data:string -lbl_1_data_919 = .data:0x00000919; // type:object size:0xE data:string -lbl_1_data_927 = .data:0x00000927; // type:object size:0xE data:string -lbl_1_data_935 = .data:0x00000935; // type:object size:0xE data:string -lbl_1_data_943 = .data:0x00000943; // type:object size:0xE data:string -lbl_1_data_951 = .data:0x00000951; // type:object size:0xE data:string -lbl_1_data_95F = .data:0x0000095F; // type:object size:0xE data:string -lbl_1_data_96D = .data:0x0000096D; // type:object size:0xE data:string -lbl_1_data_97B = .data:0x0000097B; // type:object size:0xE data:string -lbl_1_data_989 = .data:0x00000989; // type:object size:0xE data:string -lbl_1_data_997 = .data:0x00000997; // type:object size:0xE data:string -lbl_1_data_9A5 = .data:0x000009A5; // type:object size:0xE data:string -lbl_1_data_9B3 = .data:0x000009B3; // type:object size:0xE data:string -lbl_1_data_9C1 = .data:0x000009C1; // type:object size:0xE data:string -lbl_1_data_9CF = .data:0x000009CF; // type:object size:0xE data:string -lbl_1_data_9DD = .data:0x000009DD; // type:object size:0xF +lbl_1_data_7A8 = .data:0x000007A8; // type:object size:0xD scope:local data:string +lbl_1_data_7B5 = .data:0x000007B5; // type:object size:0xD scope:local data:string +lbl_1_data_7C2 = .data:0x000007C2; // type:object size:0xD scope:local data:string +lbl_1_data_7CF = .data:0x000007CF; // type:object size:0xE scope:local data:string +lbl_1_data_7DD = .data:0x000007DD; // type:object size:0xE scope:local data:string +lbl_1_data_7EB = .data:0x000007EB; // type:object size:0xE scope:local data:string +lbl_1_data_7F9 = .data:0x000007F9; // type:object size:0xE scope:local data:string +lbl_1_data_807 = .data:0x00000807; // type:object size:0xD scope:local data:string +lbl_1_data_814 = .data:0x00000814; // type:object size:0xD scope:local data:string +lbl_1_data_821 = .data:0x00000821; // type:object size:0xD scope:local data:string +lbl_1_data_82E = .data:0x0000082E; // type:object size:0xE scope:local data:string +lbl_1_data_83C = .data:0x0000083C; // type:object size:0xE scope:local data:string +lbl_1_data_84A = .data:0x0000084A; // type:object size:0xD scope:local data:string +lbl_1_data_857 = .data:0x00000857; // type:object size:0xD scope:local data:string +lbl_1_data_864 = .data:0x00000864; // type:object size:0xD scope:local data:string +lbl_1_data_871 = .data:0x00000871; // type:object size:0xE scope:local data:string +lbl_1_data_87F = .data:0x0000087F; // type:object size:0xE scope:local data:string +lbl_1_data_88D = .data:0x0000088D; // type:object size:0xE scope:local data:string +lbl_1_data_89B = .data:0x0000089B; // type:object size:0xE scope:local data:string +lbl_1_data_8A9 = .data:0x000008A9; // type:object size:0xE scope:local data:string +lbl_1_data_8B7 = .data:0x000008B7; // type:object size:0xE scope:local data:string +lbl_1_data_8C5 = .data:0x000008C5; // type:object size:0xE scope:local data:string +lbl_1_data_8D3 = .data:0x000008D3; // type:object size:0xE scope:local data:string +lbl_1_data_8E1 = .data:0x000008E1; // type:object size:0xE scope:local data:string +lbl_1_data_8EF = .data:0x000008EF; // type:object size:0xE scope:local data:string +lbl_1_data_8FD = .data:0x000008FD; // type:object size:0xE scope:local data:string +lbl_1_data_90B = .data:0x0000090B; // type:object size:0xE scope:local data:string +lbl_1_data_919 = .data:0x00000919; // type:object size:0xE scope:local data:string +lbl_1_data_927 = .data:0x00000927; // type:object size:0xE scope:local data:string +lbl_1_data_935 = .data:0x00000935; // type:object size:0xE scope:local data:string +lbl_1_data_943 = .data:0x00000943; // type:object size:0xE scope:local data:string +lbl_1_data_951 = .data:0x00000951; // type:object size:0xE scope:local data:string +lbl_1_data_95F = .data:0x0000095F; // type:object size:0xE scope:local data:string +lbl_1_data_96D = .data:0x0000096D; // type:object size:0xE scope:local data:string +lbl_1_data_97B = .data:0x0000097B; // type:object size:0xE scope:local data:string +lbl_1_data_989 = .data:0x00000989; // type:object size:0xE scope:local data:string +lbl_1_data_997 = .data:0x00000997; // type:object size:0xE scope:local data:string +lbl_1_data_9A5 = .data:0x000009A5; // type:object size:0xE scope:local data:string +lbl_1_data_9B3 = .data:0x000009B3; // type:object size:0xE scope:local data:string +lbl_1_data_9C1 = .data:0x000009C1; // type:object size:0xE scope:local data:string +lbl_1_data_9CF = .data:0x000009CF; // type:object size:0xE scope:local data:string +lbl_1_data_9DD = .data:0x000009DD; // type:object size:0xF scope:local lbl_1_data_9EC = .data:0x000009EC; // type:object size:0x5E8 lbl_1_data_FD4 = .data:0x00000FD4; // type:object size:0xC lbl_1_data_FE0 = .data:0x00000FE0; // type:object size:0xC @@ -258,12 +258,12 @@ lbl_1_data_13B8 = .data:0x000013B8; // type:object size:0x10 lbl_1_data_13C8 = .data:0x000013C8; // type:object size:0x10 lbl_1_data_13D8 = .data:0x000013D8; // type:object size:0x10 lbl_1_data_13E8 = .data:0x000013E8; // type:object size:0x50 -lbl_1_data_1438 = .data:0x00001438; // type:object size:0x21 data:string -lbl_1_data_1459 = .data:0x00001459; // type:object size:0x1F +lbl_1_data_1438 = .data:0x00001438; // type:object size:0x21 scope:local data:string +lbl_1_data_1459 = .data:0x00001459; // type:object size:0x1F scope:local jumptable_1_data_1478 = .data:0x00001478; // type:object size:0x24 scope:local -lbl_1_data_149C = .data:0x0000149C; // type:object size:0x1B data:string +lbl_1_data_149C = .data:0x0000149C; // type:object size:0x1B scope:local data:string jumptable_1_data_14B8 = .data:0x000014B8; // type:object size:0x34 scope:local -lbl_1_data_14EC = .data:0x000014EC; // type:object size:0x24 data:string +lbl_1_data_14EC = .data:0x000014EC; // type:object size:0x24 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x2 data:2byte diff --git a/config/GMPE01_00/rels/m440Dll/symbols.txt b/config/GMPE01_00/rels/m440Dll/symbols.txt index ae880f06..a07b1c3d 100644 --- a/config/GMPE01_00/rels/m440Dll/symbols.txt +++ b/config/GMPE01_00/rels/m440Dll/symbols.txt @@ -99,134 +99,134 @@ fn_1_F4D4 = .text:0x0000F4D4; // type:function size:0x28 fn_1_F4FC = .text:0x0000F4FC; // type:function size:0x18 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float -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_F0 = .rodata:0x000000F0; // type:object size:0x8 data:double -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:0x8 data:double -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x1 data:byte -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0xC data:2byte -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:0xC data:4byte -lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // 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:0x8 data:double -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 data:double -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0xC data:2byte -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_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float -lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float -lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float -lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 data:double -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 data:double -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float -lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float -lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float -lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x8 data:double -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 data:double -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 data:double -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float -lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 scope:local data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 scope:local data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +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_F0 = .rodata:0x000000F0; // type:object size:0x8 scope:local data:double +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:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0xC scope:local data:2byte +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:0xC scope:local data:4byte +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // 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:0x8 scope:local data:double +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0xC scope:local data:2byte +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_1E8 = .rodata:0x000001E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 scope:local data:double +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x8 scope:local data:double +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x14 lbl_1_data_14 = .data:0x00000014; // type:object size:0xC lbl_1_data_20 = .data:0x00000020; // type:object size:0xC data:float @@ -237,7 +237,7 @@ lbl_1_data_54 = .data:0x00000054; // type:object size:0xC data:float lbl_1_data_60 = .data:0x00000060; // type:object size:0xC lbl_1_data_6C = .data:0x0000006C; // type:object size:0xC data:float lbl_1_data_78 = .data:0x00000078; // type:object size:0x54 data:float -lbl_1_data_CC = .data:0x000000CC; // type:object size:0x18 +lbl_1_data_CC = .data:0x000000CC; // type:object size:0x18 scope:local lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x2 data:2byte lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x2 data:2byte lbl_1_data_EC = .data:0x000000EC; // type:object size:0x2 data:2byte @@ -246,13 +246,13 @@ lbl_1_data_F4 = .data:0x000000F4; // type:object size:0x10 lbl_1_data_104 = .data:0x00000104; // type:object size:0x2 data:2byte lbl_1_data_108 = .data:0x00000108; // type:object size:0x2 data:2byte lbl_1_data_10C = .data:0x0000010C; // type:object size:0x12 -lbl_1_data_11E = .data:0x0000011E; // type:object size:0x13 data:string -lbl_1_data_131 = .data:0x00000131; // type:object size:0x18 -lbl_1_data_149 = .data:0x00000149; // type:object size:0x19 data:string -lbl_1_data_162 = .data:0x00000162; // type:object size:0x1C data:string -lbl_1_data_17E = .data:0x0000017E; // type:object size:0x10 data:string -lbl_1_data_18E = .data:0x0000018E; // type:object size:0x26 data:string -lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0x24 data:string +lbl_1_data_11E = .data:0x0000011E; // type:object size:0x13 scope:local data:string +lbl_1_data_131 = .data:0x00000131; // type:object size:0x18 scope:local data:string +lbl_1_data_149 = .data:0x00000149; // type:object size:0x19 scope:local data:string +lbl_1_data_162 = .data:0x00000162; // type:object size:0x1C scope:local data:string +lbl_1_data_17E = .data:0x0000017E; // type:object size:0x10 scope:local data:string +lbl_1_data_18E = .data:0x0000018E; // type:object size:0x26 scope:local data:string +lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0x24 scope:local data:string lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x2 data:2byte lbl_1_data_1DA = .data:0x000001DA; // type:object size:0x2 data:2byte lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x40 diff --git a/configure.py b/configure.py index 95620d8f..a4f9ea09 100644 --- a/configure.py +++ b/configure.py @@ -1141,7 +1141,7 @@ config.libs = [ "m440Dll", objects={ Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m440Dll/main.c"), + Object(Matching, "REL/m440Dll/main.c"), Object(NonMatching, "REL/m440Dll/object.c"), }, ), diff --git a/include/REL/m440Dll.h b/include/REL/m440Dll.h new file mode 100644 index 00000000..9844466f --- /dev/null +++ b/include/REL/m440Dll.h @@ -0,0 +1,334 @@ +#include "dolphin/types.h" +#include "game/hsfman.h" + +#include "game/object.h" +extern s32 rand8(void); + +////// TYPES ////// +typedef void (*m440Func5)(ModelData*, struct _unkStruct5*, Mtx); +typedef void (*m440Func6)(struct _unkStruct6*); +typedef void (*m440Func14)(struct _unkStruct14*); + +typedef struct _unkStruct { + f32 zoom; + Vec center; + Vec rot; +} unkStruct; + +typedef struct _unkStruct2 { + s32 unk0; + s16 unk4; + s16 unk6; + s16 unk8; + s16 unkA; + s32 unkC; + char unk10[0xC]; + s16 unk1C; + char unk20[0x4]; + f32 unk24; + char unk28[0x4]; + s16 unk2C; + s16 unk2E; + f32 unk30; +} unkStruct2; + +typedef struct _unkStruct3 { + char unk0[0x34]; + f32 unk34; + char unk38[0x8]; + f32 unk40; +} unkStruct3; + +typedef struct _unkStruct4 { + Vec unk0; + char unkC[0xC]; + f32 unk18; + f32 unk1C; + char unk20[0x4]; + f32 unk24; + f32 unk28; + f32 unk2C; + f32 unk30; + s16 unk34; + s16 unk36; + char unk38[0x4]; + s32 unk3C; + s16 unk40; + s16 unk42; + f32 unk44; + Vec unk48; + Vec unk54; + s16 unk60; + s8 unk62; +} unkStruct4; // sizeof 0x64 + +typedef struct _unkStruct5 { + s16 unk0; + s16 unk2; + u32 unk4; + u8 unk8; + m440Func5 unkC; + AnimData* unk10; + s16 unk14; + unkStruct4* unk18; + Vec* unk1C; + HsfVector2f* unk20; + GXColor* unk24; + void* unk28; + Vec unk2C; + Vec unk38; + Vec unk44; + Vec unk50; + HsfVector2f* unk5C; + f32 unk60; + f32 unk64; +} unkStruct5; + +typedef struct _unkStruct6 { + s16 unk0; + u16 unk2; + s16 unk4; + s16 unk6; + u32 unk8; + Vec* unkC; + Vec* unk10; + Vec* unk14; + Vec* unk18; + HsfVector2f* unk1C; + s32 unk20; + struct _unkStruct8* unk24; + HsfMaterial* unk28; + HsfAttribute* unk2C; + void* unk30; + u32 unk34; + m440Func6 unk38; + s16 unk3C; + s16 unk3E; +} unkStruct6; // sizeof 0x40 + +typedef struct _unkStruct7 { + GXColor unk0; + Vec unk4; +} unkStruct7; // sizeof 0x10 + +typedef struct _unkStruct11 { + s16 unk0; + s16 unk2; + s16 unk4; + s16 unk6; +} unkStruct11; + +typedef struct _unkStruct8 { + unkStruct11 unk0[3]; + s16 unk18[3]; + s16 unk1E; + unkStruct11 unk20[3]; + char unk38[0x30]; + f32 unk68[5]; + Vec unk7C; + Vec unk88; + Vec unk94; + Vec unkA0; + Vec unkAC; + Vec unkB8; + Vec unkC4; +} unkStruct8; // sizeof 0xD0 + +typedef struct _unkStruct10 { + s16 unk0; + s16 unk2; + unkStruct11 unk4[3]; + u32 unk1C; + unkStruct11* unk20; + char unk24[0xC]; +} unkStruct10; // sizeof 0x30 + +typedef struct _unkStruct12 { + char unk0[0xA]; + u8 unkA; + u8 unkB[3]; + u8 unkE[3]; + char unk12[0x2]; + f32 unk14; + char unk18[0x4]; + f32 unk1C; + char unk20[0x10]; + u32 unk30; + u32 unk34; + s32* unk38; +} unkStruct12; + +typedef struct _unkStruct13 { + char unk0[0xA]; + u8 unkA; + char unkB[0x15]; + f32 unk20; + char unk24[0x40]; + u32 unk64; + u32 unk68; + char unk6C[0x14]; + struct _unkStruct15* unk80; +} unkStruct13; // sizeof 0x84 + +typedef struct _unkStruct14 { + s16 unk0; + s16 unk2; + char unk4[0x8]; + void* unkC; + char unk10[0x4]; + void* unk14; + unkStruct4* unk18; + void* unk1C; + char unk20[0x4]; + GXColor* unk24; + unkStruct12* unk28; + unkStruct13* unk2C; + void* unk30; + u32 unk34; + m440Func14 unk38; + s16 unk3C; +} unkStruct14; + +typedef struct _unkStruct15 { + char unk0[0x8]; + u8 unk8; + u8 unk9; + s16 unkA; + s16 unkC; + s16 unkE; + char unk10[0x4]; + void* unk14; + char unk18[0x4]; + void* unk1C; +} unkStruct15; + + +////// BSS ////// +// object.c +extern omObjData* lbl_1_bss_C0[4]; +// main.c +extern omObjData* lbl_1_bss_6C; +extern omObjData* lbl_1_bss_68; +extern unkStruct6* lbl_1_bss_64; +extern s16 lbl_1_bss_60; +extern Mtx lbl_1_bss_30; +extern s16 lbl_1_bss_2C; +extern void* lbl_1_bss_28; +extern u32 lbl_1_bss_24; +extern s16 lbl_1_bss_10[10]; +extern s16 lbl_1_bss_E; +extern u8 lbl_1_bss_C; +extern u8 lbl_1_bss_B; +extern u8 lbl_1_bss_A; +extern s16 lbl_1_bss_8; +extern s16 lbl_1_bss_6; +extern s16 lbl_1_bss_4; +extern s8 lbl_1_bss_2; +extern s8 lbl_1_bss_1; +extern s8 lbl_1_bss_0; + +////// DATA ////// +// main.c +extern f32 lbl_1_data_0[5]; +extern s16 lbl_1_data_14[6]; +extern Vec lbl_1_data_20; +extern Vec lbl_1_data_2C; +extern Vec lbl_1_data_38; +extern unkStruct7 lbl_1_data_44; +extern Vec lbl_1_data_54; +extern Vec lbl_1_data_60; +extern Vec lbl_1_data_6C; +extern unkStruct lbl_1_data_78[3]; +extern s16 lbl_1_data_E4[2]; +extern s16 lbl_1_data_E8[2]; +extern s16 lbl_1_data_EC[2]; +extern s16 lbl_1_data_F0[2]; +extern s32 lbl_1_data_F4[4]; +extern s16 lbl_1_data_104[2]; +extern s16 lbl_1_data_108[2]; +// object.c +extern s16 lbl_1_data_1D8; + +////// FUNCTIONS ////// +// main.c +extern void ModuleProlog(void); +extern void fn_1_3C4(omObjData* object); +extern void fn_1_434(omObjData* object); +extern s32 fn_1_4A4(void); +extern s32 fn_1_6C8(void); +extern void fn_1_8F0(omObjData* object); +extern void fn_1_AE0(omObjData* object); +extern u8 fn_1_E14(omObjData* object); +extern u8 fn_1_1138(omObjData* object); +extern void fn_1_16D8(void); +extern void fn_1_1708(void); +extern void fn_1_1768(void); +extern s16 fn_1_17CC(void); +extern s16 fn_1_17F4(void); +extern void fn_1_181C(void); +extern u8 fn_1_1890(void); +extern void fn_1_18E0(void); +extern s32 fn_1_1954(void); +extern void fn_1_19B0(void); +extern void fn_1_1CAC(void); +extern void fn_1_2240(ModelData* data, unkStruct5*, Mtx); +extern u16 fn_1_23E4(u16); +extern void fn_1_2428(u16, u16); +extern void fn_1_2470(omObjData* object); +extern void fn_1_2A74(omObjData* object); +extern void fn_1_2AB4(omObjData* object); +extern void fn_1_2B04(omObjData* object); +extern void fn_1_2CA8(omObjData* object); +extern void fn_1_2D28(omObjData* object); +extern void fn_1_33D4(omObjData* object); +extern void fn_1_3DD8(omObjData* object); +extern void fn_1_4558(omObjData* object); +extern void fn_1_45BC(omObjData* object); +extern void fn_1_4660(omObjData* object); +extern void fn_1_46E0(omObjData* object); +extern void fn_1_4A20(omObjData* object); +extern void fn_1_4B44(omObjData* object); +extern void fn_1_4E00(s16, f32); +extern s16 fn_1_4E2C(void); +extern s16 fn_1_4E54(s16); +extern u16 fn_1_4EA8(u16); +extern void fn_1_4EEC(u16, u16); +extern void fn_1_4F34(unkStruct6*); +extern void fn_1_5010(unkStruct6*, Vec*, f32); +extern void fn_1_57B4(unkStruct6*); +extern void fn_1_5C2C(s16, HsfObject*, unkStruct6*, u16); +extern void fn_1_6554(unkStruct6*, HsfObject*); +extern void fn_1_6B58(unkStruct6*, HsfObject*); +extern void fn_1_71FC(unkStruct6*, Vec*, s16, Vec); +extern void fn_1_7934(unkStruct6*, unkStruct8*, Vec*); +extern void fn_1_7D60(unkStruct15*, unkStruct13*, s16); +extern void fn_1_806C(ModelData*, Mtx); +extern void fn_1_8470(unkStruct12*, unkStruct13*); +extern void fn_1_8AC4(Mtx); +extern void fn_1_8D1C(void); +extern void fn_1_91A4(Vec*, Vec*, Vec*, f32[5]); +extern f32 fn_1_927C(f32, f32, f32); +extern void fn_1_9344(Mtx, Mtx); +extern f32 fn_1_93C0(f32, f32, f32); +extern f32 fn_1_93D0(f32, f32, f32, f32); +extern unkStruct4* fn_1_942C(s16, Vec*, Vec*, f32, GXColor*); +extern s16 fn_1_956C(AnimData*, s16, f32, s16, s16); +extern void fn_1_9AB0(s16); +extern unkStruct5* fn_1_9B10(s16); +extern unkStruct4* fn_1_9B3C(s16, s16); +extern void fn_1_9B94(s16, m440Func5); +extern void fn_1_9BCC(s16, u8); +extern void fn_1_9C04(ModelData*, Mtx); +extern void fn_1_A1B8(HsfVector2f*, s16, s16, f32, f32); +extern void fn_1_A284(HsfVector2f*, HsfVector2f*, s16, f32, f32); +extern void fn_1_A328(Vec*, Vec*, Vec*, s16); +void fn_1_A390(ModelData*, Mtx); +extern void fn_1_AA94(void); +// object.c +extern void fn_1_AE08(Process*); +extern void fn_1_EE78(void); +extern void fn_1_EF50(void); +extern s16 fn_1_F0FC(void); +extern void fn_1_F168(void); +extern void fn_1_F228(void); +extern s32 fn_1_F4FC(s32); \ No newline at end of file diff --git a/src/REL/m440Dll/main.c b/src/REL/m440Dll/main.c new file mode 100644 index 00000000..5603491c --- /dev/null +++ b/src/REL/m440Dll/main.c @@ -0,0 +1,2544 @@ +#include "REL/m440Dll.h" + +#include "rel_sqrt_consts.h" +#include "math.h" +#include "ext_math.h" +#include "string.h" +#include "game/frand.h" +#include "game/hsfdraw.h" +#include "game/hsfmotion.h" +#include "game/wipe.h" +#include "game/audio.h" +#include "game/objsub.h" +#include "game/minigame_seq.h" +#include "game/sprite.h" +#include "game/printfunc.h" +#include "game/pad.h" + +// bss +omObjData* lbl_1_bss_6C; +omObjData* lbl_1_bss_68; +unkStruct6* lbl_1_bss_64; +s16 lbl_1_bss_60; +Mtx lbl_1_bss_30; +s16 lbl_1_bss_2C; +void* lbl_1_bss_28; +u32 lbl_1_bss_24; +s16 lbl_1_bss_10[10]; +s16 lbl_1_bss_E; +u8 lbl_1_bss_C; +u8 lbl_1_bss_B; +u8 lbl_1_bss_A; +s16 lbl_1_bss_8; +s16 lbl_1_bss_6; +s16 lbl_1_bss_4; +s8 lbl_1_bss_2; +s8 lbl_1_bss_1; +s8 lbl_1_bss_0; + +// data +f32 lbl_1_data_0[5] = { 90.0f, 80.0f, 100.0f, 70.0f, 110.0f }; +s16 lbl_1_data_14[6] = { 1, 1, 1, 1, 1 }; +Vec lbl_1_data_20 = { 0.0f, 0.0f, 0.0f }; +Vec lbl_1_data_2C = { 800.0f, 1300.0f, 1000.0f }; +Vec lbl_1_data_38 = { 0.0f, 0.0f, 0.0f }; +unkStruct7 lbl_1_data_44 = { + 0xFF, 0xFF, 0xFF, 0xFF, + 10.0f, 45.0f, 0.0f +}; +Vec lbl_1_data_54 = { 1300.0f, 2500.0f, 1300.0f }; +Vec lbl_1_data_60 = { 0.0f, 1.0f, 0.0f }; +Vec lbl_1_data_6C = { 0.0f, 0.0f, -500.0f }; +unkStruct lbl_1_data_78[3] = { + { 1450.0f, { 0.0f, 452.0f, 0.0f }, { 11.0f, -23.0f, 0.0f } }, + { 1700.0f, { 0.0f, 315.0f, 0.0f }, { -2.0f, 0.0f, 0.0f } }, + { 1040.0f, { 200.0f, 21.0f, 0.0f }, { -6.0f, 0.0f, 0.0f } }, +}; + +void ModuleProlog(void) { + Vec sp8; + LightData* var_r30; + Process* var_r31; + + Hu3DLightAllKill(); + lbl_1_bss_E = Hu3DGLightCreateV(&lbl_1_data_2C, &lbl_1_data_38, &lbl_1_data_44.unk0); + Hu3DGLightInfinitytSet(lbl_1_bss_E); + var_r30 = &Hu3DGlobalLight[lbl_1_bss_E]; + var_r30->unk_00 |= 0x8000; + sp8.x = sp8.y = sp8.z = 0.0f; + Hu3DGLightPosAimSetV(lbl_1_bss_E, &lbl_1_data_2C, &sp8); + Hu3DShadowCreate(45.0f, 20.0f, 10000.0f); + Hu3DShadowTPLvlSet(0.5f); + Hu3DShadowPosSet(&lbl_1_data_54, &lbl_1_data_60, &lbl_1_data_6C); + HuAudSndGrpSet(0x42); + var_r31 = omInitObjMan(0x32, 0x2000); + omGameSysInit(var_r31); + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 41.5f, 5.0f, 5000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + omAddObjEx(var_r31, 0x7FDA, 0, 0, -1, omOutView); + CRot.x = lbl_1_data_78[0].rot.x; + CRot.y = lbl_1_data_78[0].rot.y; + CRot.z = lbl_1_data_78[0].rot.z; + Center.x = lbl_1_data_78[0].center.x; + Center.y = lbl_1_data_78[0].center.y; + Center.z = lbl_1_data_78[0].center.z; + CZoom = lbl_1_data_78[0].zoom; + omAddObjEx(var_r31, 0x3E8, 0, 0, -1, fn_1_3C4); + lbl_1_bss_6C = omAddObjEx(var_r31, 10, 9, 0, -1, fn_1_8F0); + lbl_1_bss_68 = omAddObjEx(var_r31, 50, 9, 9, -1, fn_1_2470); + Hu3DBGColorSet(0, 0, 0); + fn_1_AE08(var_r31); +} + +void fn_1_3C4(omObjData* object) { + if ((omSysExitReq != 0) || (lbl_1_bss_0 != 0)) { + WipeCreate(2, 0, 0x3C); + object->func = &fn_1_434; + } +} + +void fn_1_434(omObjData* object) { + if ((WipeStatGet() == 0) && (MGSeqDoneCheck() != 0)) { + HuMemDirectFree(lbl_1_bss_64); + fn_1_9AB0(lbl_1_bss_10[0]); + MGSeqKillAll(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + } +} + +s32 fn_1_4A4(void) { + f32 var_f31; + unkStruct *var_r31; + s32 var_r30; + + var_r31 = &lbl_1_data_78[0]; + var_r30 = 0; + lbl_1_bss_4++; + var_f31 = lbl_1_bss_4 / 120.0f; + if (var_f31 > 1.0f) { + lbl_1_bss_4 = 0; + var_f31 = 1.0f; + var_r30 = 1; + } + + var_f31 = (sin((M_PI * (90.0f * var_f31)) / 180.0) * sin((M_PI * (90.0f * var_f31)) / 180.0)); + CZoom = fn_1_93C0(var_r31[0].zoom, var_r31[1].zoom, var_f31); + Center.x = fn_1_93C0(var_r31[0].center.x, var_r31[1].center.x, var_f31); + Center.y = fn_1_93C0(var_r31[0].center.y, var_r31[1].center.y, var_f31); + Center.z = fn_1_93C0(var_r31[0].center.z, var_r31[1].center.z, var_f31); + CRot.x = fn_1_93C0(var_r31[0].rot.x, var_r31[1].rot.x, var_f31); + CRot.y = fn_1_93C0(var_r31[0].rot.y, var_r31[1].rot.y, var_f31); + CRot.z = fn_1_93C0(var_r31[0].rot.z, var_r31[1].rot.z, var_f31); + return var_r30; +} + +s32 fn_1_6C8(void) { + f32 var_f31; + unkStruct *var_r31; + s32 var_r30; + + var_r31 = &lbl_1_data_78[1]; + var_r30 = 0; + lbl_1_bss_4++; + var_f31 = lbl_1_bss_4 / 120.0f; + if (var_f31 > 1.0f) { + lbl_1_bss_4 = 0; + var_f31 = 1.0f; + var_r30 = 1; + } + + var_f31 = (sin((M_PI * (90.0f * var_f31)) / 180.0) * sin((M_PI * (90.0f * var_f31)) / 180.0)); + CZoom = fn_1_93C0(var_r31[0].zoom, var_r31[1].zoom, var_f31); + Center.x = fn_1_93C0(var_r31[0].center.x, var_r31[1].center.x, var_f31); + Center.y = fn_1_93C0(var_r31[0].center.y, var_r31[1].center.y, var_f31); + Center.z = fn_1_93C0(var_r31[0].center.z, var_r31[1].center.z, var_f31); + CRot.x = fn_1_93C0(var_r31[0].rot.x, var_r31[1].rot.x, var_f31); + CRot.y = fn_1_93C0(var_r31[0].rot.y, var_r31[1].rot.y, var_f31); + CRot.z = fn_1_93C0(var_r31[0].rot.z, var_r31[1].rot.z, var_f31); + return var_r30; +} + +void fn_1_8F0(omObjData* arg0) { + s16 var_r30; + unkStruct2* temp_r31; + AnimData *anim; + + arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x10, 0x10000000); + temp_r31 = (unkStruct2*)arg0->data; + temp_r31->unk0 = 1; + temp_r31->unk4 = -1; + temp_r31->unk8 = -1; + temp_r31->unk6 = 0x12C; + temp_r31->unkA = 0; + temp_r31->unkC = -1; + + for (var_r30 = 1; var_r30 < 4; var_r30++) { + lbl_1_bss_10[var_r30] = Hu3DModelCreate(HuDataSelHeapReadNum(0x47000A, 0x10000000, HEAP_DATA)); + Hu3DModelAttrSet(lbl_1_bss_10[var_r30], 1); + Hu3DModelAttrSet(lbl_1_bss_10[var_r30], 0x40000002); + Hu3DModelLayerSet(lbl_1_bss_10[var_r30], 7); + Hu3DModelScaleSet(lbl_1_bss_10[var_r30], 3.0f, 3.0f, 3.0f); + } + + anim = HuSprAnimRead(HuDataReadNum(0x47000B, 0x10000000)); + lbl_1_bss_10[0] = fn_1_956C(anim, 0x40, 50.0f, 0x40, 0x40); + fn_1_9B94(lbl_1_bss_10[0], fn_1_2240); + Hu3DModelLayerSet(lbl_1_bss_10[0], 7); + arg0->func = &fn_1_AE0; +} + +void fn_1_AE0(omObjData* arg0) { + f32 temp_f31; + unkStruct2* temp_r31; + + temp_r31 = arg0->data; + switch (fn_1_23E4(7)) { + case 1: + if (lbl_1_bss_A == 0) { + WipeCreate(1, 0, 0x3C); + lbl_1_bss_A = 1; + } + if (WipeStatGet() != 0) break; + fn_1_2428(7, 2); + break; + case 2: + if (fn_1_E14(arg0) != 0) { + fn_1_2428(7, 3); + } + break; + case 3: + if (temp_r31->unk8 != -1) { + MGSeqParamSet(temp_r31->unk8, 1, ((temp_r31->unk6 + 0x3B) / 60)); + } + if ((temp_r31->unkC < 0) && ((MGSeqStatGet(temp_r31->unk4) & 0x10) != 0)) { + temp_r31->unkC = HuAudSeqPlay(0x49); + } + if (lbl_1_bss_2 == 0) { + if (temp_r31->unkA != 0) { + temp_r31->unkA++; + temp_f31 = (((rand8() << 8) | rand8()) % 361); + Center.x = (lbl_1_data_78[1].center.x + (10.0 * sin((M_PI * temp_f31) / 180.0))); + Center.y = (lbl_1_data_78[1].center.y + (10.0 * cos((M_PI * temp_f31) / 180.0))); + if (temp_r31->unkA > 0x28) { + temp_r31->unkA = 0; + return; + } + } else { + Center.x = lbl_1_data_78[1].center.x; + Center.y = lbl_1_data_78[1].center.y; + Center.z = lbl_1_data_78[1].center.z; + return; + } + } + break; + case 4: + if (fn_1_1138(arg0) != 0) { + fn_1_2428(7, 5); + return; + } + break; + case 5: + lbl_1_bss_0 = 1; + break; + } +} + +u8 fn_1_E14(omObjData* arg0) { + f32 var_f31; + unkStruct* var_r31; + u8 var_r30; + + switch (lbl_1_bss_6) { + case 0: + fn_1_4EEC(7, 1); + fn_1_4EEC(0x18, 8); + HuAudFXPlay(0x70E); + lbl_1_bss_6++; + break; + case 1: + if (++lbl_1_bss_8 > 0x1E) { + fn_1_F168(); + lbl_1_bss_8 = 0; + lbl_1_bss_6++; + } + break; + case 2: + var_r31 = lbl_1_data_78; + var_r30 = 0; + lbl_1_bss_4++; + var_f31 = lbl_1_bss_4 / 120.0f; + if (var_f31 > 1.0f) { + lbl_1_bss_4 = 0; + var_f31 = 1.0f; + var_r30 = 1; + } + var_f31 = (sin((M_PI * (90.0f * var_f31)) / 180.0) * sin((M_PI * (90.0f * var_f31)) / 180.0)); + CZoom = fn_1_93C0(var_r31[0].zoom, var_r31[1].zoom, var_f31); + Center.x = fn_1_93C0(var_r31[0].center.x, var_r31[1].center.x, var_f31); + Center.y = fn_1_93C0(var_r31[0].center.y, var_r31[1].center.y, var_f31); + Center.z = fn_1_93C0(var_r31[0].center.z, var_r31[1].center.z, var_f31); + CRot.x = fn_1_93C0(var_r31[0].rot.x, var_r31[1].rot.x, var_f31); + CRot.y = fn_1_93C0(var_r31[0].rot.y, var_r31[1].rot.y, var_f31); + CRot.z = fn_1_93C0(var_r31[0].rot.z, var_r31[1].rot.z, var_f31); + if (var_r30 != 0) { + lbl_1_bss_8 = 0; + lbl_1_bss_6 = 0; + return 1; + } + break; + } + return 0; +} + +u8 fn_1_1138(omObjData* object) { + unkStruct2* sp8; + f32 var_f31; + f32 var_f30; + s16 temp_r29; + u8 var_r28; + unkStruct3* temp_r30; + unkStruct* var_r31; + + sp8 = (unkStruct2*)lbl_1_bss_6C->data; + temp_r29 = fn_1_F0FC(); + temp_r30 = (unkStruct3*)lbl_1_bss_C0[temp_r29]->data; + switch (lbl_1_bss_6) { + case 0: + if (lbl_1_bss_8 == 0) { + Hu3DMotionShiftSet(lbl_1_bss_C0[temp_r29]->model[0], lbl_1_bss_C0[temp_r29]->motion[1], 0.0f, 7.0f, 0x40000001); + temp_r30->unk40 = temp_r30->unk34; + } + lbl_1_bss_8++; + var_f30 = lbl_1_bss_8 / 30.0f; + if (var_f30 >= 1.0f) { + var_f30 = 1.0f; + if (lbl_1_bss_B == 0) { + lbl_1_bss_B = 1; + Hu3DMotionShiftSet(lbl_1_bss_C0[temp_r29]->model[0], lbl_1_bss_C0[temp_r29]->motion[0], 0.0f, 7.0f, 0x40000001); + } + } + temp_r30->unk34 = (temp_r30->unk40 + (var_f30 * (360.0f - temp_r30->unk40))); + var_r31 = &lbl_1_data_78[1]; // could be fn_1_6C8 + var_r28 = 0; + lbl_1_bss_4++; + var_f31 = lbl_1_bss_4 / 120.0f; + if (var_f31 > 1.0f) { + lbl_1_bss_4 = 0; + var_f31 = 1.0f; + var_r28 = 1; + } + var_f31 = (sin((M_PI * (90.0f * var_f31)) / 180.0) * sin((M_PI * (90.0f * var_f31)) / 180.0)); + CZoom = fn_1_93C0(var_r31[0].zoom, var_r31[1].zoom, var_f31); + Center.x = fn_1_93C0(var_r31[0].center.x, var_r31[1].center.x, var_f31); + Center.y = fn_1_93C0(var_r31[0].center.y, var_r31[1].center.y, var_f31); + Center.z = fn_1_93C0(var_r31[0].center.z, var_r31[1].center.z, var_f31); + CRot.x = fn_1_93C0(var_r31[0].rot.x, var_r31[1].rot.x, var_f31); + CRot.y = fn_1_93C0(var_r31[0].rot.y, var_r31[1].rot.y, var_f31); + CRot.z = fn_1_93C0(var_r31[0].rot.z, var_r31[1].rot.z, var_f31); + if (var_r28 != 0) { + lbl_1_bss_8 = 0; + lbl_1_bss_6++; + } + break; + case 1: + Hu3DMotionShiftSet(lbl_1_bss_C0[temp_r29]->model[0], lbl_1_bss_C0[temp_r29]->motion[5], 0.0f, 7.0f, 0); + HuAudSStreamPlay(1); + lbl_1_bss_6++; + lbl_1_bss_8 = 0; + break; + case 2: + if (++lbl_1_bss_8 > 210.0f) { + lbl_1_bss_6 = 0; + return 1; + } + break; + } + return 0; +} + +void fn_1_16D8(void) { + unkStruct2* temp_r31; + + temp_r31 = (unkStruct2*)lbl_1_bss_6C->data; + temp_r31->unk6--; +} + +void fn_1_1708(void) { + unkStruct2* temp_r31; + + temp_r31 = (unkStruct2*)lbl_1_bss_6C->data; + if (temp_r31->unk8 != -1) { + MGSeqParamSet(temp_r31->unk8, 2, -1); + temp_r31->unk8 = -1; + temp_r31->unk6 = 0; + } +} + +void fn_1_1768(void) { + unkStruct2* temp_r31; + + temp_r31 = (unkStruct2*)lbl_1_bss_6C->data; + if (temp_r31->unk8 == -1) { + temp_r31->unk6 = 0x12C; + temp_r31->unk8 = MGSeqCreate(1, 5, -1, -1); + } +} + +s16 fn_1_17CC(void) { + unkStruct2* var_r31; + + var_r31 = (unkStruct2*)lbl_1_bss_6C->data; + return var_r31->unk6; +} + +s16 fn_1_17F4(void) { + unkStruct2* var_r31; + + var_r31 = (unkStruct2*)lbl_1_bss_6C->data; + return var_r31->unk8; +} + +void fn_1_181C(void) { + unkStruct2* temp_r31; + + temp_r31 = (unkStruct2*)lbl_1_bss_6C->data; + if (temp_r31->unk4 == -1) { + temp_r31->unk4 = MGSeqCreate(3, 0); + MGSeqPosSet(temp_r31->unk4, 320.0f, 240.0f); + } +} + +u8 fn_1_1890(void) { + unkStruct2* temp_r31; + + temp_r31 = (unkStruct2*)lbl_1_bss_6C->data; + if (temp_r31->unk4 != -1) { + return MGSeqStatGet(temp_r31->unk4); + } else { + return 0; + } +} + +void fn_1_18E0(void) { + unkStruct2* temp_r31; + + temp_r31 = (unkStruct2*)lbl_1_bss_6C->data; + temp_r31->unk4 = MGSeqCreate(3, 1); + MGSeqPosSet(temp_r31->unk4, 320.0f, 240.0f); + HuAudSeqFadeOut(temp_r31->unkC, 0x64); +} + +s32 fn_1_1954(void) { + unkStruct2* sp8; + + sp8 = (unkStruct2*)lbl_1_bss_6C->data; + if ((lbl_1_bss_2 != 0) || (lbl_1_bss_1 != 0)) { + return 0; + } else { + return 1; + } +} + +void fn_1_19B0(void) { + f32 temp_f29; + f32 var_f28; + f32 var_f27; + f32 temp_f31; + f32 var_f30; + s16 var_r31; + + var_f30 = (((rand8() << 8) | rand8()) % 361); + + for (var_r31 = 1; var_r31 < 4; var_r31++, var_f30+=120.0f) { + temp_f31 = 0.01f * ((((rand8() << 8) | rand8()) % 51) + 50); + temp_f29 = (temp_f31 * (200.0 * sin((M_PI * var_f30) / 180.0))); + var_f28 = (temp_f31 * (200.0 * cos((M_PI * var_f30) / 180.0))); + var_f27 = 0.0f; + Hu3DModelPosSet(lbl_1_bss_10[var_r31], temp_f29, 300.0f + var_f28, var_f27); + temp_f31 = 0.1f * ((((rand8() << 8) | rand8()) % 11) + 25); + Hu3DModelScaleSet(lbl_1_bss_10[var_r31], temp_f31, temp_f31, temp_f31); + Hu3DModelAttrReset(lbl_1_bss_10[var_r31], 1); + Hu3DModelAttrReset(lbl_1_bss_10[var_r31], 0x40000002); + } +} + +void fn_1_1CAC(void) { + s16 var_r31; + + for (var_r31 = 1; var_r31 < 4; var_r31++) { + Hu3DMotionTimeSet(lbl_1_bss_10[var_r31], 0.0f); + Hu3DModelAttrSet(lbl_1_bss_10[var_r31], 1); + Hu3DModelAttrSet(lbl_1_bss_10[var_r31], 0x40000002); + } +} + +void fn_1_1D54(f32 arg8, f32 arg9, f32 argA, s16 arg0, f32 argB, s16 arg1) { + Vec sp30; + Vec sp24; + GXColor sp1E; + f32 temp_f30; + f32 temp_f29; + f32 temp_f31; + s16 var_r30; + unkStruct4* var_r31; + + for (var_r30 = 0; var_r30 < arg0; var_r30++) { + temp_f31 = argB + ((((rand8() << 8) | rand8()) % 11) - 5); + temp_f30 = sin((M_PI * temp_f31) / 180.0); + temp_f29 = cos((M_PI * temp_f31) / 180.0); + sp30.x = arg8 + ((((rand8() << 8) | rand8()) % 21) - 10); + sp30.y = arg9 + ((((rand8() << 8) | rand8()) % 21) - 10); + sp30.z = argA; + sp24.x = sp24.y = sp24.z = 1.0f; + sp1E.r = sp1E.g = sp1E.b = 0xFF; + sp1E.a = 0x80; + var_r31 = fn_1_942C(arg1, &sp30, &sp24, 0.0f, &sp1E); + if (!var_r31) break; + + var_r31->unk34 = 0; + var_r31->unk36 = ((rand8() << 8) | rand8()) % 2 + 2; + var_r31->unk0.x = (temp_f30 * (0.1f * ((((rand8() << 8) | rand8()) % 41) + 0x28))); + var_r31->unk0.y = (temp_f29 * (0.1f * ((((rand8() << 8) | rand8()) % 61) + 0x3C))); + var_r31->unk0.z = 0.0f; + var_r31->unk18 = (0.01f * var_r31->unk0.x); + var_r31->unk1C = 0.1f; + var_r31->unk24 = 1.5f; + var_r31->unk28 = ((0.1f * ((((rand8() << 8) | rand8()) % 7) + 2)) / (var_r31->unk36 * 0xE)); + var_r31->unk2C = sp1E.a; + var_r31->unk30 = (var_r31->unk2C / (var_r31->unk36 * 0xE)); + } +} + +void fn_1_2240(ModelData* data, unkStruct5* arg1, Mtx arg2) { + unkStruct4* var_r31; + GXColor* var_r30; + s16 var_r29; + + var_r31 = arg1->unk18; + var_r30 = arg1->unk24; + + for (var_r29 = 0; var_r29 < arg1->unk0; var_r29++, var_r31++, var_r30++) { + if (var_r31->unk62 != 0) { + var_r31->unk54.x += var_r31->unk0.x; + var_r31->unk54.y += var_r31->unk0.y; + var_r31->unk54.z += var_r31->unk0.z; + var_r31->unk0.x -= var_r31->unk18; + var_r31->unk0.y += var_r31->unk1C; + var_r31->unk18 = (0.001f * var_r31->unk0.x); + var_r31->unk1C *= 1.05f; + var_r31->unk24 += var_r31->unk28; + var_r31->unk48.x = var_r31->unk48.y = var_r31->unk48.z = var_r31->unk24; + var_r31->unk2C -= var_r31->unk30; + var_r30->a = var_r31->unk2C > 255.0f ? 255 : (u8)var_r31->unk2C; + var_r31->unk34++; + if (var_r31->unk34 >= var_r31->unk36) { + var_r31->unk34 = 0; + var_r31->unk60++; + } + if (var_r31->unk60 >= arg1->unk14 - 2) { + var_r31->unk62 = 0; + } + } + } +} + +u16 fn_1_23E4(u16 arg0) { + unkStruct2* temp_r31; + + temp_r31 = (unkStruct2*)lbl_1_bss_6C->data; + if (!temp_r31) { + return 0; + } + return temp_r31->unk0 & arg0; +} + +void fn_1_2428(u16 arg0, u16 arg1) { + unkStruct2* temp_r31; + + temp_r31 = (unkStruct2*)lbl_1_bss_6C->data; + temp_r31->unk0 = (temp_r31->unk0 & ~arg0); + temp_r31->unk0 = (temp_r31->unk0 | arg1); +} + +void fn_1_2470(omObjData* arg0) { + ModelData* temp_r29; + HsfObject* temp_r28; + f32 temp_f31; + f32 var_f30; + f32 var_f29; + s16 temp_r26; + s16 var_r30; + unkStruct2* temp_r27; + + arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x34, 0x10000000); + temp_r27 = arg0->data; + arg0->stat |= 0x100; + arg0->model[0] = Hu3DModelCreateFile(0x470008); + arg0->model[1] = Hu3DModelCreateFile(0x470009); + arg0->model[2] = Hu3DModelCreateFile(0x470000); + arg0->model[3] = Hu3DModelCreateFile(0x470002); + arg0->model[8] = Hu3DModelCreateFile(0x470003); + arg0->model[6] = Hu3DModelCreateFile(0x470004); + arg0->model[4] = Hu3DModelCreateFile(0x470005); + arg0->model[5] = Hu3DModelCreateFile(0x470006); + arg0->model[7] = Hu3DModelCreateFile(0x470007); + temp_r26 = Hu3DModelCreateFile(0x470001); + Hu3DModelAttrSet(arg0->model[0], 0x40000001); + Hu3DModelAttrSet(arg0->model[2], 0x20000); + Hu3DModelAttrSet(arg0->model[2], 0x40000002); + Hu3DModelAttrSet(temp_r26, 1); + + for (var_r30 = 0; var_r30 < 8; var_r30++) { + Hu3DModelLayerSet(arg0->model[var_r30], 1); + } + Hu3DModelPosSet(arg0->model[2], 0.0f, 5000.0f, 0.0f); + Hu3DModelPosSet(arg0->model[3], 0.0f, 5000.0f, 0.0f); + Hu3DModelShadowSet(arg0->model[2]); + Hu3DModelShadowSet(arg0->model[3]); + Hu3DModelShadowMapSet(arg0->model[0]); + + for (var_r30 = 0; var_r30 < 5; var_r30++) { + temp_f31 = (450.0 * cos(M_PI * lbl_1_data_0[var_r30] / 180.0)); + var_f29 = (450.0 * sin(M_PI * lbl_1_data_0[var_r30] / 180.0)); + Hu3DModelPosSet(arg0->model[var_r30+4], temp_f31, 0.0f, var_f29); + var_f30 = 90.0f - lbl_1_data_0[var_r30]; + Hu3DModelRotSet(arg0->model[var_r30+4], 0.0f, var_f30, 0.0f); + Hu3DMotionSpeedSet(arg0->model[var_r30+4], 0.0f); + } + temp_r27->unk0 = 0; + temp_r27->unk1C = 5; + temp_r29 = &Hu3DData[temp_r26]; + temp_r28 = temp_r29->hsfData->root; + lbl_1_bss_60 = temp_r28->data.childrenCount; + lbl_1_bss_64 = HuMemDirectMalloc(HEAP_DATA, lbl_1_bss_60 * 64); + OSReport("Koopa Object Count %d\n", temp_r29->hsfData->objectCnt); + + for (var_r30 = 0; var_r30 < lbl_1_bss_60; var_r30++) { + lbl_1_bss_64[var_r30].unk20 = 0; + } + + for (var_r30 = 0; var_r30 < lbl_1_bss_60; var_r30++) { + lbl_1_bss_64[var_r30].unk4 = var_r30; + fn_1_5C2C(temp_r26, temp_r28->data.children[var_r30], &lbl_1_bss_64[var_r30], 2); + if (lbl_1_bss_64[var_r30].unk20 != 0) { + Hu3DModelAttrSet(lbl_1_bss_64[var_r30].unk0, 1); + Hu3DModelPosSet(lbl_1_bss_64[var_r30].unk0, 0.0f, 250.0f, 0.0f); + lbl_1_bss_64[var_r30].unk38 = &fn_1_57B4; + } + } + arg0->func = &fn_1_2A74; +} + +void fn_1_2A74(omObjData* object) { + fn_1_2AB4(object); + fn_1_2CA8(object); + fn_1_4660(object); +} + +void fn_1_2AB4(omObjData* object) { + unkStruct2* sp8; + + sp8 = (unkStruct2*)object->data; + + switch (fn_1_4EA8(0x20)) { + case 0x20: + fn_1_2B04(object); + } +} + +s16 lbl_1_data_E4[2] = {0, 0}; +s16 lbl_1_data_E8[2] = {0, 0}; +s16 lbl_1_data_EC[2] = {0, 0}; +s16 lbl_1_data_F0[2] = {0, 0}; +s32 lbl_1_data_F4[4] = { 20, 60, 100, 140 }; +s16 lbl_1_data_104[2] = {0, 0}; +s16 lbl_1_data_108[2] = {0, 0}; +s16 lbl_1_data_10C[9] = { 0, 3, 1, 0, 2, 3, 1, 3, 2 }; + +void fn_1_2B04(omObjData* object) { + f32 temp_f31; + unkStruct* temp_r31; + + temp_r31 = (unkStruct*)object->data; + switch (lbl_1_data_E4[0]) { + case 0: + lbl_1_data_E8[0]++; + temp_f31 = lbl_1_data_E8[0] / 360.0f; + if (temp_f31 > 1.0f) { + temp_f31 = 1.0f; + Hu3DModelAttrSet(object->model[3], 1); + lbl_1_data_E8[0] = 0; + lbl_1_data_E4[0] = 0; + fn_1_4EEC(0x20, 0); + return; + } + temp_f31 = sin((M_PI * (90.0f * temp_f31)) / 180.0); + temp_r31->center.y = (250.0f + (1750.0f * temp_f31)); + } + Hu3DModelPosSet(object->model[3], temp_r31->center.x, temp_r31->center.y, temp_r31->center.z); + Hu3DModelRotSet(object->model[3], temp_r31->rot.x, temp_r31->rot.y, temp_r31->rot.z); +} + +void fn_1_2CA8(omObjData* arg0) { + unkStruct2* sp8; + + sp8 = (unkStruct2*)arg0->data; + + switch (fn_1_4EA8(7)) { + case 1: + fn_1_2D28(arg0); + break; + case 3: + fn_1_33D4(arg0); + break; + case 4: + case 5: + fn_1_3DD8(arg0); + } +} + +void fn_1_2D28(omObjData* object) { + f32 var_f31; + unkStruct* temp_r31; + + temp_r31 = (unkStruct*)object->data; + switch (lbl_1_data_EC[0]) { + case 0x0: + temp_r31->center.x = temp_r31->center.z = 0.0f; + temp_r31->center.y = 2000.0f; + temp_r31->rot.x = temp_r31->rot.y = temp_r31->rot.z = 0.0f; + Hu3DModelAttrReset(object->model[2], 1); + Hu3DModelAttrReset(object->model[3], 1); + Hu3DModelAttrSet(object->model[3], 0x40000002); + Hu3DMotionTimeSet(object->model[3], 0.0f); + lbl_1_data_EC[0] ++; + lbl_1_data_F0[0] = 0; + HuAudFXPlay(0x709); + HuAudFXPlay(0x711); + break; + case 0x1: + lbl_1_data_F0[0] ++; + var_f31 = lbl_1_data_F0[0] / 120.0f; + if (var_f31 > 1.0f) { + var_f31 = 1.0f; + lbl_1_data_F0[0] = 0; + lbl_1_data_F0[1] = 0xF; + lbl_1_data_EC[1] = (lbl_1_data_EC[0] + 1); + lbl_1_data_EC[0] = 0x63; + } + if (110.0f == lbl_1_data_F0[0]) { + HuAudFXPlay(0x70A); + } + var_f31 = sin((M_PI * (90.0f * var_f31)) / 180.0); + temp_r31->center.y = (2000.0f + (-1750.0f * var_f31)); + break; + case 0x2: + if (lbl_1_data_F0[0] == 0) { + HuAudFXPlay(0x713); + } + lbl_1_data_F0[0] ++; + var_f31 = lbl_1_data_F0[0] / 60.0f; + if (var_f31 > 1.0f) { + var_f31 = 1.0f; + lbl_1_data_F0[0] = 0; + lbl_1_data_F0[1] = 0xF; + lbl_1_data_EC[1] = lbl_1_data_EC[0] + 1; + lbl_1_data_EC[0] = 0x63; + HuAudFXPlay(0x714); + } + temp_r31->rot.y = (360.0f * var_f31); + break; + case 0x3: + Hu3DModelAttrReset(object->model[3], 0x40000002); + Hu3DMotionSpeedSet(object->model[3], 2.0f); + if (lbl_1_data_F0[0] == 0) { + HuAudFXPlay(0x711); + } + if (++lbl_1_data_F0[0] > 12.0) { + if (fn_1_4EA8(0x40) != 0) { + fn_1_4EEC(0x40, 0); + fn_1_F228(); + } + fn_1_4EEC(0x20, 0x20); + fn_1_4EEC(7, 2); + lbl_1_data_F0[0] = 0; + lbl_1_data_EC[0] = 0; + } + break; + case 0x4: + lbl_1_data_F0[0]++; + var_f31 = lbl_1_data_F0[0] / 360.0f; + if (var_f31 > 1.0f) { + var_f31 = 1.0f; + Hu3DModelAttrSet(object->model[3], 1); + lbl_1_data_F0[0] = 0; + lbl_1_data_EC[0] = 0; + fn_1_4EEC(7, 2); + return; + } + var_f31 = sin((M_PI * (90.0f * var_f31)) / 180.0); + temp_r31->center.y = (250.0f + (1750.0f * var_f31)); + break; + case 0x63: + if (++lbl_1_data_F0[0] > lbl_1_data_F0[1]) { + lbl_1_data_F0[0] = 0; + lbl_1_data_EC[0] = lbl_1_data_EC[1]; + } + break; + } + Hu3DModelPosSet(object->model[3], temp_r31->center.x, temp_r31->center.y, temp_r31->center.z); + Hu3DModelRotSet(object->model[3], temp_r31->rot.x, temp_r31->rot.y, temp_r31->rot.z); + Hu3DModelPosSet(object->model[2], temp_r31->center.x, temp_r31->center.y, temp_r31->center.z); + Hu3DModelRotSet(object->model[2], temp_r31->rot.x, temp_r31->rot.y, temp_r31->rot.z); + return; +} + +void fn_1_33D4(omObjData* object) { + unkStruct2* sp10; + + sp10 = (unkStruct2*)object->data; + switch (lbl_1_data_EC[0]) { + case 0: + fn_1_1D54(30.0f, 500.0f, 200.0f, 12, 135.0f, lbl_1_bss_10[0]); + fn_1_1D54(-30.0f, 500.0f, 200.0f, 12, 225.0f, lbl_1_bss_10[0]); + fn_1_4EEC(0x100, 0x100); + fn_1_4EEC(7, 2); + HuAudFXPlay(0x710); + } +} + +void fn_1_3DD8(omObjData* object) { + unkStruct* sp8; + f32 var_f29; + f32 var_f28; + f32 var_f27; + f32 var_f26; + f32 var_f30; + f32 var_f31; + unkStruct2* var_r25; + omObjData** var_r24; + s16 var_r29; + s16 var_r31; + s32 var_r23; + s32* var_r26; + unkStruct2* var_r28; + s16 var_r27; + + var_r25 = (unkStruct2*)lbl_1_bss_6C->data; + sp8 = (unkStruct*)object->data; + switch (lbl_1_data_EC[0]) { + case 0: + Hu3DModelAttrReset(object->model[2], 0x40000002); + lbl_1_data_EC[0]++; + return; + case 1: + if (++lbl_1_data_F0[0] == 0x1E) { + fn_1_4EEC(0x100, 0x100); + } else if (lbl_1_data_F0[0] == 0x32) { + fn_1_EE78(); + } + var_f26 = Hu3DMotionMaxTimeGet(object->model[2]); + if (Hu3DMotionTimeGet(object->model[2]) >= var_f26) { + Hu3DModelAttrSet(object->model[2], 1); + for (var_r31 = 0; var_r31 < lbl_1_bss_60; var_r31++) { + Hu3DModelAttrReset(lbl_1_bss_64[var_r31].unk0, 1); + fn_1_57B4(&lbl_1_bss_64[var_r31]); + } + lbl_1_data_F0[0] = 0; + lbl_1_data_EC[0]++; + HuAudFXPlay(0x70C); + } + + for (var_r31 = 0; var_r31 < 4U; var_r31++) { + if (lbl_1_data_F0[0] == lbl_1_data_F4[var_r31] * 2) { + HuAudFXPlay(0x70D); + } + } + return; + case 2: + var_f30 = (((rand8() << 8) | rand8()) % 361); + + for (var_r29 = 1; var_r29 < 4; var_r29++, var_f30 += 120.0f) { + var_f31 = 0.01f * ((((rand8() << 8) | rand8()) % 51) + 0x32); + var_f27 = (var_f31 * (200.0 * sin((M_PI * var_f30) / 180.0))); + var_f28 = var_f31 * (200.0 * cos((M_PI * var_f30) / 180.0)); + var_f29 = 0.0f; + Hu3DModelPosSet(lbl_1_bss_10[var_r29], var_f27, 300.0f + var_f28, var_f29); + var_f31 = 0.1f * ((((rand8() << 8) | rand8()) % 11) + 0x19); + Hu3DModelScaleSet(lbl_1_bss_10[var_r29], var_f31, var_f31, var_f31); + Hu3DModelAttrReset(lbl_1_bss_10[var_r29], 1); + Hu3DModelAttrReset(lbl_1_bss_10[var_r29], 0x40000002); + } + fn_1_45BC(object); + fn_1_4EEC(7, 5); + var_r25->unkA = 1; + lbl_1_data_EC[0]++; + var_r24 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (fn_1_F4FC(var_r31) >= 0) { + var_r28 = (unkStruct2*)var_r24[fn_1_F4FC(var_r31)]->data; + switch (var_r28->unk0 & 0xF) { + case 6: + omVibrate(var_r28->unk4, 0x30, 0xC, 0); + break; + case 8: + omVibrate(var_r28->unk4, 0x30, 4, 2); + break; + } + } + } + return; + case 3: + if (lbl_1_bss_64[0].unk3C == 0) { + for (var_r27 = 1; var_r27 < 4; var_r27++) { + Hu3DMotionTimeSet(lbl_1_bss_10[var_r27], 0.0f); + Hu3DModelAttrSet(lbl_1_bss_10[var_r27], 1); + Hu3DModelAttrSet(lbl_1_bss_10[var_r27], 0x40000002); + } + Hu3DModelAttrSet(object->model[2], 0x40000002); + Hu3DMotionTimeSet(object->model[2], 0.0f); + for (var_r31 = 0; var_r31 < lbl_1_bss_60; var_r31++) { + Hu3DModelAttrSet(lbl_1_bss_64[var_r31].unk0, 1); + } + fn_1_4558(object); + if (lbl_1_data_1D8 >= 0) { + fn_1_EF50(); + fn_1_4EEC(0x18, 0x18); + fn_1_4EEC(0x40, 0x40); + fn_1_4EEC(7, 1); + HuAudFXPlay(0x70E); + } else { + fn_1_4EEC(7, 2); + var_r26 = lbl_1_bss_6C->data; + var_r26[0] &= 0xFFFFFFF8; + var_r26[0] |= 4; + } + lbl_1_data_EC[0] = 0; + } + } +} + +void fn_1_4558(omObjData* object) { + s16 var_r31; + + for (var_r31 = 0; var_r31 < lbl_1_bss_60; var_r31++) { + fn_1_4F34(&lbl_1_bss_64[var_r31]); + } +} + +void fn_1_45BC(omObjData* object) { + Vec sp8; + s16 var_r31; + + sp8.x = 0.0f; + sp8.y = 250.0f; + sp8.z = 0.0f; + + for (var_r31 = 0; var_r31 < lbl_1_bss_60; var_r31++) { + fn_1_5010(&lbl_1_bss_64[var_r31], &sp8, 1500.0f); + } +} + +void fn_1_4660(omObjData* object) { + void* sp8; + s16 temp_r3; + + sp8 = object->data; + switch (fn_1_4EA8(0x18)) { + case 8: + fn_1_46E0(object); + return; + case 16: + fn_1_4A20(object); + return; + case 24: + fn_1_4B44(object); + } +} + +void fn_1_46E0(omObjData* object) { + f32 var_f31; + s16 temp_r0; + s16 var_r30; + s32 temp_r28; + unkStruct2* temp_r31; + + temp_r31 = (unkStruct2*)object->data; + switch (lbl_1_data_104[0]) { + case 0x0: + fn_1_4E00(-1, 0.0f); + + for (var_r30 = 0; var_r30 < 5; var_r30++) { + Hu3DMotionTimeSet(object->model[var_r30 + 4], 0.0f); + lbl_1_data_14[var_r30] = 0; + } + temp_r31->unk2C = (((rand8() << 8) | rand8()) % (s16)temp_r31->unk1C); + temp_r31->unk24 = 0.0f; + lbl_1_data_108[0] = 0; + lbl_1_data_104[0]++; + break; + case 0x1: + lbl_1_data_108[0]++; + var_f31 = lbl_1_data_108[0] / 60.0f; + if (var_f31 > 1.0f) { + var_f31 = 1.0f; + lbl_1_data_108[0] = 0; + lbl_1_data_104[0] = 0; + fn_1_4EEC(0x18, 0x10); + HuAudFXPlay(0x70F); + } + var_f31 = sin((M_PI * (90.0f * var_f31)) / 180.0); + temp_r31->unk24 = (150.0f * var_f31); + break; + case 0x63: + if (++lbl_1_data_108[0] > lbl_1_data_108[1]) { + lbl_1_data_108[0] = 0; + lbl_1_data_104[0] = lbl_1_data_104[1]; + } + break; + } + + for (var_r30 = 0; var_r30 < temp_r31->unk1C; var_r30++) { + Hu3DData[object->model[var_r30 + 4]].pos.y = temp_r31->unk24; + lbl_1_data_14[var_r30] = 1; + } + Hu3DData[object->model[1]].pos.y = temp_r31->unk24; +} + +void fn_1_4A20(omObjData* object) { + ModelData* temp_r31; + s16 temp_r28; + unkStruct2* temp_r30; + f32 var_f31; + + temp_r30 = (unkStruct2*)object->data; + temp_r28 = temp_r30->unk2E; + if (temp_r28 != -1) { + temp_r31 = &Hu3DData[object->model[temp_r28 + 4]]; + if (-1.0f == temp_r30->unk30) { + if (0.0f != temp_r31->unk_64) { + temp_r31->unk_64 -= 4.0f; + if (temp_r31->unk_64 < 0.0f) { + temp_r31->unk_64 = 0.0f; + } + } + } else { + var_f31 = Hu3DMotionMaxTimeGet(object->model[temp_r28 + 4]); + temp_r31->unk_64 = var_f31 * temp_r30->unk30; + } + } +} + +void fn_1_4B44(omObjData* object) { + f32 var_f31; + s16 var_r30; + unkStruct2* temp_r31; + + temp_r31 = (unkStruct2*)object->data; + switch (lbl_1_data_104[0]) { + case 0: + lbl_1_data_108[0]++; + var_f31 = lbl_1_data_108[0] / 60.0f; + if (var_f31 > 1.0f) { + var_f31 = 1.0f; + lbl_1_data_108[0] = 0; + lbl_1_data_104[0]++; + } + var_f31 = sin((M_PI * (90.0f * var_f31)) / 180.0); + temp_r31->unk24 = (150.0f + (-150.0f * var_f31)); + break; + case 1: + lbl_1_data_108[0]++; + var_f31 = (lbl_1_data_108[0] / 30.0f); + if (var_f31 >= 1.0f) { + lbl_1_data_108[0] = 0; + lbl_1_data_104[0] = 0; + if (fn_1_4EA8(0x40) != 0) { + temp_r31->unk1C--; + } + fn_1_4EEC(0x18, 8); + } + break; + } + + for (var_r30 = 0; var_r30 < temp_r31->unk1C; var_r30++) { + Hu3DData[object->model[var_r30 + 4]].pos.y = temp_r31->unk24; + lbl_1_data_14[var_r30] = 1; + } + Hu3DData[object->model[1]].pos.y = temp_r31->unk24; +} + +void fn_1_4E00(s16 arg0, f32 arg8) { + unkStruct2* temp_r31; + + temp_r31 = (unkStruct2*)lbl_1_bss_68->data; + temp_r31->unk2E = arg0; + temp_r31->unk30 = arg8; +} + +s16 fn_1_4E2C(void) { + unkStruct2* var_r31; + + var_r31 = (unkStruct2*)lbl_1_bss_68->data; + return var_r31->unk1C; +} + +s16 fn_1_4E54(s16 arg0) { + unkStruct2* temp_r31; + + temp_r31 = (unkStruct2*)lbl_1_bss_68->data; + if (arg0 == -1) { + return temp_r31->unk2C; + } + if (arg0 == temp_r31->unk2C) { + return 1; + } + return 0; +} + +u16 fn_1_4EA8(u16 arg0) { + unkStruct2* temp_r31; + + temp_r31 = (unkStruct2*)lbl_1_bss_68->data; + if (!temp_r31) { + return 0; + } + return temp_r31->unk0 & arg0; +} + +void fn_1_4EEC(u16 arg0, u16 arg1) { + unkStruct2* temp_r31; + + temp_r31 = (unkStruct2*)lbl_1_bss_68->data; + temp_r31->unk0 &= ~arg0; + temp_r31->unk0 |= arg1; +} + +void fn_1_4F34(unkStruct6* arg0) { + s16 var_r30; + unkStruct8* var_r31; + + var_r31 = arg0->unk24; + if (arg0->unk20 != 0) { + for (var_r30 = 0; var_r30 < arg0->unk20; var_r30++, var_r31++) { + var_r31->unk94.x = var_r31->unk94.y = var_r31->unk94.z = 0.0f; + var_r31->unkA0.x = var_r31->unkA0.y = var_r31->unkA0.z = 0.0f; + var_r31->unkAC.x = var_r31->unkAC.y = var_r31->unkAC.z = 0.0f; + var_r31->unkB8.x = var_r31->unkB8.y = var_r31->unkB8.z = 0.0f; + var_r31->unkC4.y = 0.0f; + } + arg0->unk2 &= ~4; + arg0->unk3C = 0xFF; + arg0->unk3E = 0; + } +} + +void fn_1_5010(unkStruct6* arg0, Vec* arg1, f32 arg8) { + Vec sp14; + ModelData* temp_r29; + f32 var_f25; + f32 var_f28; + f32 var_f27; + f32 var_f26; + s32 var_r27; + unkStruct8* var_r31; + + var_r31 = arg0->unk24; + if (arg0->unk20 != 0) { + temp_r29 = &Hu3DData[arg0->unk0]; + arg0->unk2 |= 4; + + for (var_r27 = 0; var_r27 < arg0->unk20; var_r27++, var_r31++) { + sp14.x = (var_r31->unk7C.x + temp_r29->pos.x) - arg1->x; + sp14.y = (var_r31->unk7C.y + temp_r29->pos.y) - arg1->y; + sp14.z = (var_r31->unk7C.z + temp_r29->pos.z) - arg1->z; + var_f25 = sqrtf((sp14.z * sp14.z) + ((sp14.x * sp14.x) + (sp14.y * sp14.y))); + sp14.x /= var_f25; + sp14.y /= var_f25; + sp14.z /= var_f25; + + var_f25 = (1.0f - (var_f25 / arg8)); + if (var_f25 < 0.0f) { + var_f25 = 0.0f; + } + var_f28 = (ABS(sp14.x) < 0.1f) ? 100.0f : 100.0f * sp14.x; + var_f27 = (ABS(sp14.y) < 0.1f) ? 100.0f : 100.0f * sp14.y; + var_f26 = (ABS(sp14.z) < 0.1f) ? 100.0f : 100.0f * sp14.z; + sp14.x += (0.001f * (-var_f28 + (((rand8() << 8) | rand8()) % (s16)(1.0f + (var_f28 - -var_f28))))); + sp14.y += (0.001f * (-var_f27 + (((rand8() << 8) | rand8()) % (s16)(1.0f + (var_f27 - -var_f27))))); + sp14.z += (0.001f * (-var_f26 + (((rand8() << 8) | rand8()) % (s16)(1.0f + (var_f26 - -var_f26))))); + var_r31->unkAC.x = (sp14.x * ((((rand8() << 8) | rand8()) % 21) + 0x50)); + var_r31->unkAC.y = (sp14.y * ((((rand8() << 8) | rand8()) % 16) + 0x1E)); + var_r31->unkAC.z = (sp14.z * ((((rand8() << 8) | rand8()) % 21) + 0x50)); + var_r31->unkC4.y = 1.47f; + var_r31->unkB8.x = (120.0f * (-sp14.z * ABS(sp14.y))); + var_r31->unkB8.z = (120.0f * (-sp14.x * ABS(sp14.y))); + } + } +} + +void fn_1_57B4(unkStruct6* arg0) { + Mtx sp14; + Vec sp8; + s16 var_r29; + Vec* temp_r26; + s32 var_r27; + s32 var_r28; + unkStruct8* var_r31; + + var_r31 = arg0->unk24; + temp_r26 = arg0->unk10; + + for (var_r27 = 0; var_r27 < arg0->unk20; var_r27++, var_r31++) { + var_r31->unkAC.y = (var_r31->unkAC.y - var_r31->unkC4.y); + var_r31->unk94.x = (var_r31->unk94.x + var_r31->unkAC.x); + var_r31->unk94.y = (var_r31->unk94.y + var_r31->unkAC.y); + var_r31->unk94.z = (var_r31->unk94.z + var_r31->unkAC.z); + var_r31->unkA0.x = (var_r31->unkA0.x + var_r31->unkB8.x); + var_r31->unkA0.y = (var_r31->unkA0.y + var_r31->unkB8.y); + var_r31->unkA0.z = (var_r31->unkA0.z + var_r31->unkB8.z); + if ((var_r31->unk94.x < -500.0f) || (var_r31->unk94.x > 500.0f)) { + var_r31->unkAC.x = (0.5f * -var_r31->unkAC.x); + var_r31->unkB8.x = (0.5f * -var_r31->unkB8.x); + } + if (var_r31->unk94.z < -500.0f) { + var_r31->unkAC.z = (0.5f * -var_r31->unkAC.z); + var_r31->unkB8.z = (0.5f * -var_r31->unkB8.z); + } + if ((var_r31->unk7C.y + var_r31->unk94.y) < -250.0f) { + if (var_r31->unkAC.y > -2.0f) { + var_r31->unk94.y = (-250.0f - var_r31->unk7C.y); + var_r31->unkAC.x = 0.0f; + var_r31->unkAC.y = 0.0f; + var_r31->unkAC.z = 0.0f; + var_r31->unkB8.x = 0.0f; + var_r31->unkB8.z = 0.0f; + } else { + var_r31->unkAC.x *= 0.5f; + var_r31->unkAC.y = -(0.3f * var_r31->unkAC.y); + var_r31->unkAC.z *= 0.5f; + var_r31->unkB8.x *= 0.5f; + var_r31->unkB8.z *= 0.5f; + } + } + PSMTXScale(sp14, var_r31->unk88.x, var_r31->unk88.y, var_r31->unk88.z); + mtxTransCat(sp14, -var_r31->unk7C.x, -var_r31->unk7C.y, -var_r31->unk7C.z); + mtxRotCat(sp14, var_r31->unkA0.x, var_r31->unkA0.y, var_r31->unkA0.z); + mtxTransCat(sp14, var_r31->unk94.x + var_r31->unk7C.x, var_r31->unk94.y + var_r31->unk7C.y, var_r31->unk94.z + var_r31->unk7C.z); + + for (var_r28 = 0; var_r28 < 3; var_r28++) { + if ((arg0->unk2 & 1) != 0) { + var_r29 = var_r31->unk0[var_r28].unk0; + } else { + var_r29 = var_r31->unk18[var_r28]; + } + PSMTXMultVec(sp14, &temp_r26[var_r29], &sp8); + arg0->unkC[var_r29].x = sp8.x; + arg0->unkC[var_r29].y = sp8.y; + arg0->unkC[var_r29].z = sp8.z; + } + if ((arg0->unk2 & 2) != 0) { + var_r29 = var_r31->unk1E; + PSMTXMultVec(sp14, &temp_r26[var_r29], &sp8); + arg0->unkC[var_r29].x = sp8.x; + arg0->unkC[var_r29].y = sp8.y; + arg0->unkC[var_r29].z = sp8.z; + } + } + if ((arg0->unk2 & 4) != 0) { + if (++arg0->unk3E > 0x50) { + arg0->unk3C = ((arg0->unk3C - 10) < 0) ? 0 : arg0->unk3C - 10; + } + } + DCFlushRangeNoSync(arg0->unkC, arg0->unk8 * 0xC); +} + +void fn_1_5C2C(s16 arg0, HsfObject* arg1, unkStruct6* arg2, u16 arg3) { + Mtx sp68; + Vec sp44[3]; + Vec sp38; + Vec sp2C; + ModelData* sp1C; + GXColor sp18 = { 0xFF, 0xFF, 0xFF, 0xFF }; + Vec* var_r21; + Vec* var_r19; + s16 var_r20; + HsfVector2f* var_r22; + s16 var_r24; + s16 var_r23; + HsfTransform* var_r25; + s16 var_r27; + ModelData* var_r29; + s16 var_r28; + s16 var_r30; + + sp1C = &Hu3DData[arg0]; + arg2->unk20 = 0; + if (arg1->type == 2) { + var_r30 = Hu3DHookFuncCreate(&fn_1_806C); + arg2->unk0 = var_r30; + Hu3DModelLayerSet(var_r30, 1); + var_r29 = &Hu3DData[var_r30]; + var_r29->unk_120 = (ParticleData* ) arg2; + var_r29->unk_58.x = var_r29->unk_58.z = var_r29->unk_58.y = 1.0f; + arg2->unk2 = arg3; + arg2->unk28 = &arg1->data.material[((s16*)(arg1->data.face->data))[1] & 0xFFF]; + arg2->unk2C = arg1->data.attribute; + arg2->unk38 = NULL; + arg2->unk3C = 0xFF; + arg2->unk3E = 0; + arg2->unk18 = HuMemDirectMallocNum(HEAP_DATA, arg1->data.vertex->count * 0xC, var_r29->unk_48); + fn_1_6554(arg2, arg1); + fn_1_6B58(arg2, arg1); + arg2->unkC = HuMemDirectMallocNum(HEAP_DATA, arg2->unk8 * 0xC, var_r29->unk_48); + arg2->unk10 = HuMemDirectMallocNum(HEAP_DATA, arg2->unk8 * 0xC, var_r29->unk_48); + arg2->unk14 = HuMemDirectMallocNum(HEAP_DATA, arg2->unk8 * 0xC, var_r29->unk_48); + if (arg2->unk28->numAttrs != 0) { + arg2->unk1C = HuMemDirectMallocNum(HEAP_DATA, arg1->data.st->count * 8, var_r29->unk_48); + var_r22 = arg1->data.st->data; + } else { + arg2->unk1C = NULL; + var_r22 = NULL; + } + var_r25 = &arg1->data.base; + PSMTXScale(sp68, var_r25->scale.x, var_r25->scale.y, var_r25->scale.z); + mtxRotCat(sp68, var_r25->rot.x, var_r25->rot.y, var_r25->rot.z); + mtxTransCat(sp68, var_r25->pos.x, var_r25->pos.y, var_r25->pos.z); + + for (var_r30 = 0; var_r30 < arg2->unk20; var_r30++) { + sp2C.x = sp2C.y = sp2C.z = 0.0f; + + for (var_r28 = 0; var_r28 < 3; var_r28++) { + if ((arg2->unk2 & 1) != 0) { + var_r23 = arg2->unk24[var_r30].unk0[var_r28].unk0; + var_r27 = var_r23; + } else { + var_r27 = arg2->unk24[var_r30].unk18[var_r28]; + var_r23 = arg2->unk24[var_r30].unk0[var_r28].unk0; + } + PSMTXMultVec(sp68, &((Vec*)(arg1->data.vertex->data))[var_r23], &sp38); + arg2->unkC[var_r27] = sp38; + sp44[var_r28] = arg2->unkC[var_r27]; + arg2->unk14[var_r27] = arg2->unk18[var_r23]; + sp2C.x += sp38.x; + sp2C.y += sp38.y; + sp2C.z += sp38.z; + if (arg2->unk28->numAttrs != 0) { + var_r23 = arg2->unk24[var_r30].unk0[var_r28].unk6; + var_r27 = var_r23; + arg2->unk1C[var_r27].x = var_r22[var_r23].x; + arg2->unk1C[var_r27].y = var_r22[var_r23].y; + } + } + fn_1_91A4(&sp44[0], &sp44[1], &sp44[2], arg2->unk24[var_r30].unk68); + if ((arg2->unk2 & 2) != 0) { + var_r27 = arg2->unk24[var_r30].unk1E; + fn_1_71FC(arg2, &arg2->unkC[var_r27], var_r30, sp2C); + sp2C.x += arg2->unkC[var_r27].x; + sp2C.y += arg2->unkC[var_r27].y; + sp2C.z += arg2->unkC[var_r27].z; + } + fn_1_7934(arg2, &arg2->unk24[var_r30], &sp2C); + } + memcpy(arg2->unk10, arg2->unkC, arg2->unk8 * 0xC); + DCFlushRangeNoSync(arg2->unkC, arg2->unk8 * 0xC); + DCFlushRangeNoSync(arg2->unk14, arg2->unk8 * 0xC); + if (arg2->unk28->numAttrs != 0) { + DCFlushRangeNoSync(arg2->unk1C, arg1->data.st->count * 8); + } + var_r20 = 0; + var_r19 = var_r21 = HuMemDirectMallocNum(HEAP_DATA, 0x20000, var_r29->unk_48); + GXBeginDisplayList(var_r19, 0x20000); + if ((arg2->unk2 & 2) != 0) { + GXBegin(GX_TRIANGLES, GX_VTXFMT0, (arg2->unk20 * 0xC)); + + for (var_r30 = 0; var_r30 < arg2->unk20; var_r30++) { + + for (var_r28 = 0; var_r28 < 3; var_r28++) { + if ((arg2->unk2 & 1) != 0) { + var_r27 = arg2->unk24[var_r30].unk0[var_r28].unk0; + } else { + var_r27 = arg2->unk24[var_r30].unk18[var_r28]; + } + GXPosition1x16(var_r27); + GXNormal1x16(var_r27); + if (arg2->unk28->numAttrs != 0) { + GXTexCoord1x16(arg2->unk24[var_r30].unk0[var_r28].unk6); + } + } + + for (var_r24 = 0; var_r24 < 9; var_r24++) { + if (var_r20 < arg2->unk24[var_r30].unk20[var_r24].unk0) { + var_r20 = arg2->unk24[var_r30].unk20[var_r24].unk0; + } + GXPosition1x16(arg2->unk24[var_r30].unk20[var_r24].unk0); + GXNormal1x16(arg2->unk24[var_r30].unk20[var_r24].unk0); + if (arg2->unk28->numAttrs != 0) { + GXTexCoord1x16(arg2->unk24[var_r30].unk20[var_r24].unk6); + } + } + } + } else { + GXBegin(GX_TRIANGLES, GX_VTXFMT0, (arg2->unk20 * 3)); + for (var_r30 = 0; var_r30 < arg2->unk20; var_r30++) { + for (var_r28 = 0; var_r28 < 3; var_r28++) { + if ((arg2->unk2 & 1) != 0) { + var_r27 = arg2->unk24[var_r30].unk0[var_r28].unk0; + } else { + var_r27 = arg2->unk24[var_r30].unk18[var_r28]; + } + GXPosition1x16(var_r27); + GXNormal1x16(var_r27); + if (arg2->unk28->numAttrs != 0) { + GXTexCoord1x16(arg2->unk24[var_r30].unk0[var_r28].unk6); + } + } + } + } + arg2->unk34 = GXEndDisplayList(); + DCFlushRangeNoSync(var_r21, arg2->unk34); + arg2->unk30 = HuMemDirectMallocNum(HEAP_DATA, arg2->unk34, var_r29->unk_48); + memcpy(arg2->unk30, var_r21, arg2->unk34); + DCFlushRangeNoSync(arg2->unk30, arg2->unk34); + HuMemDirectFree(var_r21); + } +} + +void fn_1_6554(unkStruct6* arg0, HsfObject* arg1) { + Vec sp20[3]; + f32 spC[5]; + f32 var_f28; + HsfBuffer* temp_r26; + s16 var_r28; + s16 var_r29; + unkStruct10* var_r30; + + temp_r26 = arg1->data.face; + + for (var_r28 = 0; var_r28 < arg1->data.vertex->count; var_r28++) { + arg0->unk18[var_r28].x = 0.0f; + arg0->unk18[var_r28].y = 0.0f; + arg0->unk18[var_r28].z = 0.0f; + } + var_r30 = (unkStruct10*)temp_r26->data; + + for (var_r28 = 0; var_r28 < temp_r26->count; var_r28++, var_r30++) { + sp20[0] = ((Vec*)(arg1->data.vertex->data))[var_r30->unk4[0].unk0]; + sp20[1] = ((Vec*)(arg1->data.vertex->data))[var_r30->unk4[1].unk0]; + sp20[2] = ((Vec*)(arg1->data.vertex->data))[var_r30->unk4[2].unk0]; + fn_1_91A4(&sp20[0], &sp20[1], &sp20[2], spC); + spC[0] = -spC[0]; + spC[1] = -spC[1]; + spC[2] = -spC[2]; + switch (var_r30->unk0 & 7) { + case 2: + for (var_r29 = 0; var_r29 < 3; var_r29++) { + arg0->unk18[var_r30->unk4[var_r29].unk0].x += spC[0]; + arg0->unk18[var_r30->unk4[var_r29].unk0].y += spC[1]; + arg0->unk18[var_r30->unk4[var_r29].unk0].z += spC[2]; + } + break; + case 3: + for (var_r29 = 0; var_r29 < 4; var_r29++) { + arg0->unk18[var_r30->unk4[var_r29].unk0].x += spC[0]; + arg0->unk18[var_r30->unk4[var_r29].unk0].y += spC[1]; + arg0->unk18[var_r30->unk4[var_r29].unk0].z += spC[2]; + } + break; + case 4: + for (var_r29 = 0; var_r29 < 3; var_r29++) { + arg0->unk18[var_r30->unk4[var_r29].unk0].x += spC[0]; + arg0->unk18[var_r30->unk4[var_r29].unk0].y += spC[1]; + arg0->unk18[var_r30->unk4[var_r29].unk0].z += spC[2]; + } + for (var_r29 = 0; var_r29 < var_r30->unk1C; var_r29++) { + arg0->unk18[var_r30->unk20[var_r29].unk0].x += spC[0]; + arg0->unk18[var_r30->unk20[var_r29].unk0].y += spC[1]; + arg0->unk18[var_r30->unk20[var_r29].unk0].z += spC[2]; + } + break; + } + } + + for (var_r28 = 0; var_r28 < arg1->data.vertex->count; var_r28++) { + sp20[0].x = arg0->unk18[var_r28].x; + sp20[0].y = arg0->unk18[var_r28].y; + sp20[0].z = arg0->unk18[var_r28].z; + var_f28 = sqrtf((sp20[0].z * sp20[0].z) + ((sp20[0].x * sp20[0].x) + (sp20[0].y * sp20[0].y))); + arg0->unk18[var_r28].x /= var_f28; + arg0->unk18[var_r28].y /= var_f28; + arg0->unk18[var_r28].z /= var_f28; + } +} + +void fn_1_6B58(unkStruct6* arg0, HsfObject* arg1) { + HsfBuffer* temp_r25; + s32 var_r28; + s32 var_r30; + u8 var_r24; + ModelData* var_r22; + unkStruct8* var_r31; + unkStruct11 *temp_r26; + unkStruct10* var_r29; + + var_r22 = &Hu3DData[arg0->unk0]; + temp_r25 = arg1->data.face; + var_r24 = ((arg0->unk2 & 1) != 0) ? 1 : 0; + arg0->unk20 = 0; + + var_r28 = 0; + var_r29 = (unkStruct10*)temp_r25->data; + for (;var_r28 < temp_r25->count;var_r28++, var_r29++) { + switch (var_r29->unk0 & 7) { + case 2: + arg0->unk20 += 1; + break; + case 3: + arg0->unk20 += 2; + break; + case 4: + arg0->unk20 += var_r29->unk1C + 1; + break; + } + } + arg0->unk24 = HuMemDirectMallocNum(HEAP_DATA, arg0->unk20 * 0xD0, var_r22->unk_48); + var_r31 = arg0->unk24; + if (var_r24 != 0) { + var_r30 = arg1->data.vertex->count; + } else { + var_r30 = 0; + } + + var_r28 = 0; + var_r29 = (unkStruct10*)temp_r25->data;\ + for (;var_r28 < temp_r25->count; var_r28++, var_r29++) { + switch (var_r29->unk0 & 7) { + case 2: + var_r31->unk0[0] = var_r29->unk4[0]; + var_r31->unk0[1] = var_r29->unk4[2]; + var_r31->unk0[2] = var_r29->unk4[1]; + if (var_r24 == 0) { + var_r31->unk18[0] = var_r30++; + var_r31->unk18[1] = var_r30++; + var_r31->unk18[2] = var_r30++; + } + var_r31->unk1E = var_r30++; + var_r31++; + break; + case 3: + var_r31->unk0[0] = var_r29->unk4[0]; + var_r31->unk0[1] = var_r29->unk4[2]; + var_r31->unk0[2] = var_r29->unk4[1]; + if (var_r24 == 0) { + var_r31->unk18[0] = var_r30++; + var_r31->unk18[1] = var_r30++; + var_r31->unk18[2] = var_r30++; + } + var_r31->unk1E = var_r30++; + var_r31++; + var_r31->unk0[0] = var_r29->unk4[1]; + var_r31->unk0[1] = var_r29->unk4[2]; + var_r31->unk0[2] = var_r29->unk4[3]; + if (var_r24 == 0) { + var_r31->unk18[0] = var_r30++; + var_r31->unk18[1] = var_r30++; + var_r31->unk18[2] = var_r30++; + } + var_r31->unk1E = var_r30++; + var_r31++; + break; + case 4: + var_r31->unk0[0] = var_r29->unk4[0]; + var_r31->unk0[1] = var_r29->unk4[2]; + var_r31->unk0[2] = var_r29->unk4[1]; + if (var_r24 == 0) { + var_r31->unk18[0] = var_r30++; + var_r31->unk18[1] = var_r30++; + var_r31->unk18[2] = var_r30++; + } + var_r31->unk1E = var_r30++; + var_r31++; + var_r28 = 0; + temp_r26 = var_r29->unk20; + for (;var_r28 < var_r29->unk1C; var_r28++) { + if (var_r28 == 0) { + var_r31->unk0[0] = var_r31->unk0[1]; + var_r31->unk0[1] = var_r31->unk0[2]; + var_r31->unk0[2] = temp_r26[0]; + } else if (var_r28 == 1) { + var_r31->unk0[0] = var_r31->unk0[2]; + var_r31->unk0[1] = temp_r26[1]; + var_r31->unk0[2] = temp_r26[0]; + } else { + if ((var_r28 % 2) != 0) { + var_r31->unk0[0] = temp_r26[var_r28 - 2]; + var_r31->unk0[1] = temp_r26[var_r28 - 0]; + var_r31->unk0[2] = temp_r26[var_r28 - 1]; + } else { + var_r31->unk0[0] = temp_r26[var_r28 - 2]; + var_r31->unk0[1] = temp_r26[var_r28 - 1]; + var_r31->unk0[2] = temp_r26[var_r28 - 0]; + } + } + if (var_r24 == 0) { + var_r31->unk18[0] = var_r30++; + var_r31->unk18[1] = var_r30++; + var_r31->unk18[2] = var_r30++; + } + var_r31->unk1E = var_r30++; + var_r31++; + } + break; + } + } + arg0->unk8 = var_r30; +} + +void fn_1_71FC(unkStruct6* arg0, Vec* arg1, s16 arg2, Vec arg3) { + Vec sp40; + Vec sp34; + Vec sp28[3]; + Vec sp1C; + unkStruct8* temp_r30 = &arg0->unk24[arg2]; + s16 sp10[3][2] = { { 0, 1 }, { 0, 2 }, { 1, 2 } }; + f32 var_f31; + f32 var_f30; + f32 var_f29; + f32 var_f27; + s16 var_r31; + + if ((arg0->unk2 & 1) != 0) { + sp28[0] = arg0->unkC[temp_r30->unk0[0].unk0]; + sp28[1] = arg0->unkC[temp_r30->unk0[1].unk0]; + sp28[2] = arg0->unkC[temp_r30->unk0[2].unk0]; + } else { + sp28[0] = arg0->unkC[temp_r30->unk18[0]]; + sp28[1] = arg0->unkC[temp_r30->unk18[1]]; + sp28[2] = arg0->unkC[temp_r30->unk18[2]]; + } + sp1C.x = temp_r30->unk68[0]; + sp1C.y = temp_r30->unk68[1]; + sp1C.z = temp_r30->unk68[2]; + PSVECNormalize(&sp1C, &sp1C); + var_f31 = var_f30 = var_f29 = 0.0f; + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + var_f31 += (sp28[sp10[var_r31][0]].x - sp28[sp10[var_r31][1]].x < 0.0f) + ? -(sp28[sp10[var_r31][0]].x - sp28[sp10[var_r31][1]].x) + : (sp28[sp10[var_r31][0]].x - sp28[sp10[var_r31][1]].x); + + + var_f30 += (sp28[sp10[var_r31][0]].y - sp28[sp10[var_r31][1]].y < 0.0f) + ? -(sp28[sp10[var_r31][0]].y - sp28[sp10[var_r31][1]].y) + : (sp28[sp10[var_r31][0]].y - sp28[sp10[var_r31][1]].y); + + var_f29 += (sp28[sp10[var_r31][0]].z - sp28[sp10[var_r31][1]].z < 0.0f) + ? -(sp28[sp10[var_r31][0]].z - sp28[sp10[var_r31][1]].z) + : (sp28[sp10[var_r31][0]].z - sp28[sp10[var_r31][1]].z); + } + var_f31 *= 0.3333f; + var_f30 *= 0.3333f; + var_f29 *= 0.3333f; + var_f27 = 0.5f * sqrtf((var_f29 * var_f29) + ((var_f31 * var_f31) + (var_f30 * var_f30))); + sp28[0].x = 0.3333f * arg3.x; + sp28[0].y = 0.3333f * arg3.y; + sp28[0].z = 0.3333f * arg3.z; + arg1->x = (sp28[0].x - (sp1C.x * var_f27)); + arg1->y = (sp28[0].y - (sp1C.y * var_f27)); + arg1->z = (sp28[0].z - (sp1C.z * var_f27)); +} + +void fn_1_7934(unkStruct6* arg0, unkStruct8* arg1, Vec* arg2) { + Vec sp2C[3]; + f32 sp18[5]; + s16 sp10[4]; + s16 sp8[4]; + s16 var_r28; + Vec* temp_r30; + Vec* temp_r4; + Vec* temp_r4_2; + Vec* temp_r4_3; + + arg1->unk88.x = arg1->unk88.y = arg1->unk88.z = 1.0f; + arg1->unk94.x = arg1->unk94.y = arg1->unk94.z = 0.0f; + arg1->unkA0.x = arg1->unkA0.y = arg1->unkA0.z = 0.0f; + arg1->unkAC.x = arg1->unkAC.y = arg1->unkAC.z = 0.0f; + arg1->unkB8.x = arg1->unkB8.y = arg1->unkB8.z = 0.0f; + arg1->unkC4.x = arg1->unkC4.y = arg1->unkC4.z = 0.0f; + + if ((arg0->unk2 & 2) != 0) { + arg2->x *= 0.25f; + arg2->y *= 0.25f; + arg2->z *= 0.25f; + } else { + arg2->x /= 3.0f; + arg2->y /= 3.0f; + arg2->z /= 3.0f; + } + arg1->unk7C.x = arg2->x; + arg1->unk7C.y = arg2->y; + arg1->unk7C.z = arg2->z; + if ((arg0->unk2 & 2) != 0) { + if ((arg0->unk2 & 1) != 0) { + sp10[0] = arg1->unk0[0].unk0; + sp10[1] = arg1->unk0[1].unk0; + sp10[2] = arg1->unk0[2].unk0; + } else { + sp10[0] = arg1->unk18[0]; + sp10[1] = arg1->unk18[1]; + sp10[2] = arg1->unk18[2]; + } + sp10[3] = arg1->unk1E; + sp8[0] = arg1->unk0[0].unk6; + sp8[1] = arg1->unk0[1].unk6; + sp8[2] = arg1->unk0[2].unk6; + sp8[3] = arg1->unk0[0].unk6; + + for (var_r28 = 0; var_r28 < 9; var_r28++) { + arg1->unk20[var_r28].unk0 = sp10[lbl_1_data_10C[var_r28]]; + arg1->unk20[var_r28].unk6 = sp8[lbl_1_data_10C[var_r28]]; + } + temp_r30 = &arg0->unk14[arg1->unk1E]; + temp_r30->x = temp_r30->y = temp_r30->z = 0.0f; + + for (var_r28 = 0; var_r28 < 3; var_r28++) { + sp2C[0] = arg0->unkC[sp10[lbl_1_data_10C[var_r28]]]; + sp2C[1] = arg0->unkC[sp10[lbl_1_data_10C[var_r28 + 1]]]; + sp2C[2] = arg0->unkC[sp10[lbl_1_data_10C[var_r28 + 2]]]; + fn_1_91A4(&sp2C[0], &sp2C[1], &sp2C[2], sp18); + temp_r30->x += sp18[0]; + temp_r30->y += sp18[1]; + temp_r30->z += sp18[2]; + } + temp_r30->x *= 0.3333f; + temp_r30->y *= 0.3333f; + temp_r30->z *= 0.3333f; + } +} + +void fn_1_7D60(unkStruct15* arg0, unkStruct13* arg1, s16 arg2) { + GXTexObj sp1C; + GXTlutObj sp10; + s32 sp8; + s16 temp_r29; + s16 temp_r28; + s16 var_r27; + s16 var_r26; + + if (!arg0) { + OSReport("Error: No Texture\n"); + return; + } + temp_r29 = arg0->unkA; + temp_r28 = arg0->unkC; + var_r27 = (arg1->unk64 == 1) ? 1 : 0; + var_r26 = (arg1->unk68 == 1) ? 1 : 0; + switch (arg0->unk8) { + case 6: + GXInitTexObj(&sp1C, arg0->unk1C, temp_r29, temp_r28, GX_TF_RGBA8, var_r27, var_r26, GX_FALSE); + break; + case 4: + GXInitTexObj(&sp1C, arg0->unk1C, temp_r29, temp_r28, GX_TF_RGB565, var_r27, var_r26, GX_FALSE); + break; + case 5: + GXInitTexObj(&sp1C, arg0->unk1C, temp_r29, temp_r28, GX_TF_RGB5A3, var_r27, var_r26, GX_FALSE); + break; + case 9: + if (arg0->unk9 < 8) { + GXInitTlutObj(&sp10, arg0->unk14, GX_TL_RGB565, arg0->unkE); + GXLoadTlut(&sp10, arg2); + GXInitTexObjCI(&sp1C, arg0->unk1C, temp_r29, temp_r28, GX_TF_C4, var_r27, var_r26, GX_FALSE, arg2); + } else { + GXInitTlutObj(&sp10, arg0->unk14, GX_TL_RGB565, arg0->unkE); + GXLoadTlut(&sp10, arg2); + GXInitTexObjCI(&sp1C, arg0->unk1C, temp_r29, temp_r28, GX_TF_C8, var_r27, var_r26, GX_FALSE, arg2); + } + break; + case 10: + if (arg0->unk9 < 8) { + GXInitTlutObj(&sp10, arg0->unk14, GX_TL_RGB5A3, arg0->unkE); + GXLoadTlut(&sp10, arg2); + GXInitTexObjCI(&sp1C, arg0->unk1C, temp_r29, temp_r28, GX_TF_C4, var_r27, var_r26, GX_FALSE, arg2); + } else { + GXInitTlutObj(&sp10, arg0->unk14, GX_TL_RGB5A3, arg0->unkE); + GXLoadTlut(&sp10, arg2); + GXInitTexObjCI(&sp1C, arg0->unk1C, temp_r29, temp_r28, GX_TF_C8, var_r27, var_r26, GX_FALSE, arg2); + } + break; + default: + OSReport("Error: Texture format\n"); + return; + } + GXInitTexObjLOD(&sp1C, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, 0, 0, GX_ANISO_1); + GXLoadTexObj(&sp1C, arg2); + return; +} + +void fn_1_806C(ModelData* arg0, Mtx arg1) { + Mtx sp14; + GXColor sp10; + unkStruct13* temp_r29; + unkStruct14* temp_r31; + m440Func14 temp_r27; + + temp_r31 = (unkStruct14*)arg0->unk_120; + if (((u8)omPauseChk() == 0) && (temp_r31->unk38)) { + temp_r27 = temp_r31->unk38; + temp_r27(temp_r31); + } + GXLoadPosMtxImm(arg1, 0); + PSMTXInvXpose(arg1, sp14); + GXLoadNrmMtxImm(sp14, 0); + fn_1_8AC4(arg1); + sp10.r = (temp_r31->unk28->unkB[0] * arg0->unk_58.x); + sp10.g = (temp_r31->unk28->unkB[1] * arg0->unk_58.z); + sp10.b = (temp_r31->unk28->unkB[2] * arg0->unk_58.y); + sp10.a = 0xFF; + GXSetChanAmbColor(GX_COLOR0A0, sp10); + sp10.r = temp_r31->unk28->unkE[0]; + sp10.g = temp_r31->unk28->unkE[1]; + sp10.b = temp_r31->unk28->unkE[2]; + sp10.a = 0xFF; + GXSetChanMatColor(GX_COLOR0A0, sp10); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); + GXSetArray(GX_VA_POS, temp_r31->unkC, 0xC); + GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_TEX_S, GX_RGBA6, 0); + GXSetArray(GX_VA_NRM, temp_r31->unk14, 0xC); + lbl_1_bss_C = temp_r31->unk3C; + if (temp_r31->unk28->unk34 == 0) { + GXSetNumTevStages(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ONE, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumTexGens(0); + GXSetNumChans(0); + } else { + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); + GXSetArray(GX_VA_TEX0, temp_r31->unk1C, 8); + temp_r29 = &temp_r31->unk2C[temp_r31->unk28->unk38[0]]; + fn_1_7D60(temp_r29->unk80, temp_r29, 0); + lbl_1_bss_2C = 1; + HuSprTexLoad(*hiliteAnim, 0, lbl_1_bss_2C, GX_CLAMP, GX_CLAMP, GX_LINEAR); + fn_1_8470(temp_r31->unk28, temp_r29); + } + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZCompLoc(GX_FALSE); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + GXCallDisplayList(temp_r31->unk30, temp_r31->unk34); +} + +void fn_1_8470(unkStruct12* arg0, unkStruct13* arg1) { + ModelData sp40; + Mtx sp10; + GXColor spC; + GXColor sp8; + f32 var_f30; + f32 var_f31; + s16 temp_r29; + u16 var_r31; + u32 temp_r24; + u16 var_r28; + u16 var_r27; + s32 var_r25; + + sp40.attr = 0x20000; + temp_r24 = arg0->unk30; + if ((arg0->unkA == 2) || (arg0->unkA == 3)) { + var_r27 = 1; + } else { + var_r27 = 0; + if ((arg0->unkA == 0) || (arg0->unkA == 5)) { + var_r25 = 0; + } else { + var_r25 = 1; + } + } + var_r28 = var_r31 = 1; + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); + if (1.0f == arg1->unk20) { + if (arg1->unkA == 0) { + GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); + GXSetTevOrder(var_r31, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(var_r31, GX_CC_CPREV, GX_CC_TEXC, GX_CC_TEXA, GX_CC_ZERO); + GXSetTevColorOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(var_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + GXSetTevAlphaOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + var_r31++; + } else { + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); + 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_TEXA, GX_CA_RASA, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + } + } else { + GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); + } + if (var_r27 != 0) { + if (((sp40.attr & 0x20000) != 0) || ((temp_r24 & 0x100) != 0)) { + spC.a = lbl_1_bss_C; + GXSetTevColor(GX_TEVREG0, spC); + GXSetTexCoordGen2(var_r28, GX_TG_MTX2x4, GX_TG_NRM, GX_TEXMTX2, GX_FALSE, GX_PTIDENTITY); + GXSetTevOrder(var_r31, var_r28, lbl_1_bss_2C, GX_COLOR0A0); + GXSetTevColorIn(var_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_ONE, GX_CC_CPREV); + GXSetTevColorOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(var_r31, GX_CA_ZERO, GX_CA_APREV, GX_CA_A0, GX_CA_ZERO); + GXSetTevAlphaOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); + var_f31 = 6.0f * (arg0->unk14 / 300.0f); + if (var_f31 < 0.1) { + var_f31 = 0.1f; + } + PSMTXCopy(lbl_1_bss_30, sp10); + mtxScaleCat(sp10, var_f31, var_f31, var_f31); + GXLoadTexMtxImm(sp10, 0x24, GX_MTX2x4); + var_r31++; + var_r28++; + var_r27 = 0; + var_r25 = 1; + } else { + if (1.0f == arg1->unk20) { + GXSetTevOrder(var_r31, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR1A1); + GXSetTevColorIn(var_r31, GX_CC_CPREV, GX_CC_ONE, GX_CC_RASC, GX_CC_ZERO); + } else { + GXSetTevOrder(var_r31, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR1A1); + GXSetTevColorIn(var_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_CPREV); + } + GXSetTevColorOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(var_r31, GX_CA_ZERO, GX_CA_APREV, GX_CA_A0, GX_CA_ZERO); + GXSetTevAlphaOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + var_r31++; + } + } else if (0.0f != arg0->unk1C) { + GXSetTevOrder(var_r31, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetTevColorIn(var_r31, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_CPREV); + GXSetTevColorOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(var_r31, GX_CA_ZERO, GX_CA_APREV, GX_CA_A0, GX_CA_ZERO); + GXSetTevAlphaOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + var_r31++; + } + GXSetNumTexGens(var_r28); + GXSetNumTevStages(var_r31); + if (var_r27 != 0) { + var_f30 = arg0->unk14; + } else { + var_f30 = 0.0f; + } + temp_r29 = Hu3DLightSet(&sp40, &Hu3DCameraMtx, &Hu3DCameraMtxXPose, var_f30); + if (var_r27 != 0) { + GXSetNumChans(2); + if (arg0->unkA == 5) { + GXSetChanCtrl(GX_COLOR0A0, 1, GX_SRC_REG, GX_SRC_VTX, temp_r29, GX_DF_CLAMP, GX_AF_NONE); + GXSetChanCtrl(GX_COLOR1A1, 1, GX_SRC_REG, GX_SRC_VTX, temp_r29, GX_DF_NONE, GX_AF_SPEC); + return; + } + GXSetChanCtrl(GX_COLOR0A0, 1, GX_SRC_REG, GX_SRC_REG, temp_r29, GX_DF_CLAMP, GX_AF_NONE); + GXSetChanCtrl(GX_COLOR1A1, 1, GX_SRC_REG, GX_SRC_REG, temp_r29, GX_DF_NONE, GX_AF_SPEC); + return; + } + GXSetNumChans(1); + if (arg0->unkA == 5) { + GXSetChanCtrl(GX_COLOR0A0, var_r25, GX_SRC_REG, GX_SRC_REG, temp_r29, GX_DF_CLAMP, GX_AF_SPOT); + return; + } + GXSetChanCtrl(GX_COLOR0A0, var_r25, GX_SRC_REG, GX_SRC_REG, temp_r29, GX_DF_CLAMP, GX_AF_SPOT); +} + +void fn_1_8AC4(Mtx arg0) { + Mtx spA0; + Mtx sp70; + Mtx sp40; + Vec sp34; + Vec sp28; + Vec sp1C; + Vec sp10 = {0, 0, -1}; + f32 var_f29; + f32 var_f30; + LightData* var_r29; + s16 temp_r31; + + var_r29 = &Hu3DGlobalLight[0]; + sp34 = var_r29->unk_28; + if ((var_r29->unk_00 & 0x8000) != 0) { + PSMTXMultVecSR(Hu3DCameraMtx, &sp34, &sp34); + } + var_f30 = PSVECDotProduct(&sp34, &sp10); + var_f30 *= 10000.0f; + OSf32tos16(&var_f30, &temp_r31); + if (temp_r31 == -0x2710) { + PSMTXScale(lbl_1_bss_30, 0.0f, 0.0f, 0.0f); + return; + } + C_VECHalfAngle( &sp34, &sp10, &sp28); + sp28.x = -sp28.x; + sp28.y = -sp28.y; + sp28.z = -sp28.z; + PSMTXInvXpose(arg0, sp70); + if (temp_r31 == 0x2710) { + PSMTXIdentity(sp40); + } else { + PSVECCrossProduct(&sp28, &sp10, &sp1C); + var_f29 = acosf(PSVECDotProduct(&sp10, &sp28)); + PSMTXRotAxisRad(sp40, &sp1C, var_f29); + } + PSMTXConcat(sp40, sp70, spA0); + PSMTXTrans(sp40, 0.5f, 0.5f, 0.0f); + PSMTXConcat(sp40, spA0, lbl_1_bss_30); +} + +void fn_1_8D1C(void) { + Mtx44 sp60; + Mtx sp30; + GXTexObj sp10; + GXColor spC; + u16 var_r30; + unkStruct2* temp_r31; + + temp_r31 = (unkStruct2*)lbl_1_bss_68->data; + if (!temp_r31) { + var_r30 = 0; + } else { + var_r30 = temp_r31->unk0 & 7; + } + + if (var_r30 == 5) { + C_MTXOrtho(sp60, 0.0f, 480.0f, 0.0f, 640.0f, 0.0f, 10.0f); + GXSetProjection(sp60, GX_ORTHOGRAPHIC); + PSMTXIdentity(sp30); + GXLoadPosMtxImm(sp30, 0); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXInitTexObj(&sp10, lbl_1_bss_28, 0x280, 0x1E0, 6, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXInitTexObjLOD(&sp10, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); + GXLoadTexObj(&sp10, GX_TEXMAP0); + GXSetNumTevStages(1); + spC.a = 0xC4; + GXSetTevColor(GX_TEVREG0, spC); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_TEXC, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); + 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(1); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); + GXSetZMode(0, GX_LEQUAL, GX_FALSE); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(0.0f, 0.0f, 0.0f); + GXTexCoord2f32(0.0f, 0.0f); + GXPosition3f32(640.0f, 0.0f, 0.0f); + GXTexCoord2f32(1.0f, 0.0f); + GXPosition3f32(640.0f, 480.0f, 0.0f); + GXTexCoord2f32(1.0f, 1.0f); + GXPosition3f32(0.0f, 480.0f, 0.0f); + GXTexCoord2f32(0.0f, 1.0f); + } + GXSetTexCopySrc(0, 0, 0x280, 0x1E0); + GXSetTexCopyDst(0x280, 0x1E0, GX_TF_RGBA8, GX_FALSE); + GXCopyTex(lbl_1_bss_28, 0); + DCFlushRange(lbl_1_bss_28, lbl_1_bss_24); +} + +void fn_1_91A4(Vec* arg0, Vec* arg1, Vec* arg2, f32 arg3[5]) { + Vec sp14; + Vec sp8; + + sp14.x = arg1->x - arg0->x; + sp14.y = arg1->y - arg0->y; + sp14.z = arg1->z - arg0->z; + sp8.x = arg2->x - arg1->x; + sp8.y = arg2->y - arg1->y; + sp8.z = arg2->z - arg1->z; + arg3[0] = -((sp14.y * sp8.z) - (sp14.z * sp8.y)); + arg3[1] = -((sp14.z * sp8.x) - (sp14.x * sp8.z)); + arg3[2] = -((sp14.x * sp8.y) - (sp14.y * sp8.x)); +} + +f32 fn_1_927C(f32 arg8, f32 arg9, f32 argA) { + f32 var_f31; + + var_f31 = arg9 - arg8; + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } else if (var_f31 < -180.0f) { + var_f31 += 360.0f; + } + var_f31 = arg8 + (var_f31 * argA); + if (var_f31 >= 360.0f) { + var_f31 -= 360.0f; + } else if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + return var_f31; +} + +void fn_1_9344(Mtx arg0, Mtx arg1) { + arg1[0][0] = arg0[0][0]; + arg1[1][0] = arg0[0][1]; + arg1[2][0] = arg0[0][2]; + arg1[0][1] = arg0[1][0]; + arg1[1][1] = arg0[1][1]; + arg1[2][1] = arg0[1][2]; + arg1[0][2] = arg0[2][0]; + arg1[1][2] = arg0[2][1]; + arg1[2][2] = arg0[2][2]; + arg1[0][3] = 0.0f; + arg1[1][3] = 0.0f; + arg1[2][3] = 0.0f; +} + +f32 fn_1_93C0(f32 arg0, f32 arg1, f32 arg2) { + return arg0 + (arg2 * (arg1 - arg0)); +} + +f32 fn_1_93D0(f32 arg8, f32 arg9, f32 argA, f32 argB) { + f32 temp_f31; + + temp_f31 = 1.0f - argB; + return (argA * (argB * argB)) + ((arg8 * (temp_f31 * temp_f31)) + (arg9 * (2.0f * temp_f31 * argB))); +} + +unkStruct4* fn_1_942C(s16 arg0, Vec* arg1, Vec* arg2, f32 arg3, GXColor* arg4) { + ModelData* var_r28; + s16 var_r29; + unkStruct4* var_r31; + unkStruct14* temp_r30; + + var_r28 = &Hu3DData[arg0]; + temp_r30 = var_r28->unk_120; + var_r29 = 0; + var_r31 = temp_r30->unk18; + for (;var_r29 < temp_r30->unk0; var_r29++, var_r31++) { + if (var_r31->unk62 == 0) break; + } + if (var_r29 == temp_r30->unk0) { + return NULL; + } + temp_r30->unk24[var_r29].r = arg4->r; + temp_r30->unk24[var_r29].g = arg4->g; + temp_r30->unk24[var_r29].b = arg4->b; + temp_r30->unk24[var_r29].a = arg4->a; + var_r31->unk40 = var_r29; + var_r31->unk44 = arg3; + var_r31->unk48 = *arg2; + var_r31->unk54 = *arg1; + var_r31->unk60 = 0; + var_r31->unk3C = 0; + var_r31->unk62 = 1; + return var_r31; +} + +s16 fn_1_956C(AnimData* arg0, s16 arg1, f32 arg2, s16 arg3, s16 arg4) { + ModelData* temp_r28; + s16 var_r20; + s16 var_r22; + s16 var_r19; + HsfVector2f* var_r29; + s16 var_r30; + unkStruct5* var_r31; + void* var_r21; + void* var_r18; + unkStruct4* var_r24; + Vec* var_r25; + GXColor* var_r27; + + var_r20 = Hu3DHookFuncCreate(fn_1_9C04); + temp_r28 = &Hu3DData[var_r20]; + var_r31 = HuMemDirectMallocNum(HEAP_DATA, 0x68, temp_r28->unk_48); + temp_r28->unk_120 = var_r31; + arg0->useNum += 1; + var_r31->unk10 = arg0; + var_r31->unk0 = arg1; + var_r31->unk8 = 0; + var_r31->unkC = NULL; + var_r24 = HuMemDirectMallocNum(HEAP_DATA, arg1 * 0x64, temp_r28->unk_48); + var_r31->unk18 = var_r24; + + for (var_r30 = 0; var_r30 < arg1; var_r30++, var_r24++) { + var_r24->unk60 = -1; + var_r24->unk62 = 0; + } + var_r25 = HuMemDirectMallocNum(HEAP_DATA, arg1 * 0xC * 4, temp_r28->unk_48); + var_r31->unk1C = var_r25; + + for (var_r30 = 0; var_r30 < (arg1 * 4); var_r30++, var_r25++) { + var_r25->x = var_r25->y = var_r25->z = 0.0f; + } + var_r27 = HuMemDirectMallocNum(HEAP_DATA, arg1 * 4, temp_r28->unk_48); + var_r31->unk24 = var_r27; + + for (var_r30 = 0; var_r30 < arg1; var_r30++, var_r27++) { + var_r27->r = var_r27->g = var_r27->b = var_r27->a = 0xFF; + } + var_r29 = HuMemDirectMallocNum(HEAP_DATA, arg1 * 8 * 4, temp_r28->unk_48); + var_r31->unk20 = var_r29; + + for (var_r30 = 0; var_r30 < arg1; var_r30++) { + var_r29->x = 0.0f; + var_r29->y = 0.0f; + var_r29++; + var_r29->x = 1.0f; + var_r29->y = 0.0f; + var_r29++; + var_r29->x = 1.0f; + var_r29->y = 1.0f; + var_r29++; + var_r29->x = 0.0f; + var_r29->y = 1.0f; + var_r29++; + } + if ((arg3 != 0) || (arg4 != 0)) { + var_r22 = (arg0->bmp->sizeX / arg3); + var_r19 = arg0->bmp->sizeY / arg4; + var_r31->unk14 = (var_r22 * var_r19); + var_r31->unk60 = (1.0f / var_r22); + var_r31->unk64 = (1.0f / var_r19); + } else { + var_r22 = 1; + var_r31->unk14 = 1; + var_r31->unk60 = 1.0f; + var_r31->unk64 = 1.0f; + } + var_r31->unk5C = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk14 * 8, temp_r28->unk_48); + fn_1_A1B8(var_r31->unk5C, var_r31->unk14, var_r22, var_r31->unk60, var_r31->unk64); + var_r31->unk2C.x = var_r31->unk50.x = var_r31->unk44.y = var_r31->unk50.y = -arg2; + var_r31->unk38.x = var_r31->unk44.x = var_r31->unk2C.y = var_r31->unk38.y = arg2; + var_r31->unk2C.z = var_r31->unk38.z = var_r31->unk44.z = var_r31->unk50.z = 0.0f; + var_r21 = HuMemDirectMallocNum(HEAP_DATA, 0x20000, temp_r28->unk_48); + var_r18 = var_r21; + GXBeginDisplayList(var_r18, 0x20000); + GXBegin(GX_QUADS, GX_VTXFMT0, (arg1 * 4)); + + for (var_r30 = 0; var_r30 < arg1; var_r30++) { + GXPosition1x16(var_r30 * 4); + GXColor1x16(var_r30); + GXTexCoord1x16(var_r30 * 4); + GXPosition1x16((var_r30 * 4) + 1); + GXColor1x16(var_r30); + GXTexCoord1x16((var_r30 * 4) + 1); + GXPosition1x16((var_r30 * 4) + 2); + GXColor1x16(var_r30); + GXTexCoord1x16((var_r30 * 4) + 2); + GXPosition1x16((var_r30 * 4) + 3); + GXColor1x16(var_r30); + GXTexCoord1x16((var_r30 * 4) + 3); + } + var_r31->unk4 = GXEndDisplayList(); + DCFlushRangeNoSync(var_r21, var_r31->unk4); + var_r31->unk28 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk4, temp_r28->unk_48); + memcpy(var_r31->unk28, var_r21, var_r31->unk4); + DCFlushRangeNoSync(var_r31->unk28, var_r31->unk4); + HuMemDirectFree(var_r21); + return var_r20; +} + +void fn_1_9AB0(s16 arg0) { + ModelData* data; + unkStruct5* temp2; + + data = &Hu3DData[arg0]; + temp2 = (unkStruct5*)data->unk_120; + HuSprAnimKill(temp2->unk10); + Hu3DModelKill(arg0); +} + +unkStruct5* fn_1_9B10(s16 arg0) { + ModelData* data; + + data = &Hu3DData[arg0]; + return (unkStruct5*)data->unk_120; +} + +unkStruct4* fn_1_9B3C(s16 arg0, s16 arg1) { + ModelData* data; + unkStruct5* temp; + + data = &Hu3DData[arg0]; + temp = (unkStruct5*)data->unk_120; + + if (arg1 == -1) { + return 0; + } + + return &temp->unk18[arg1]; +} + +void fn_1_9B94(s16 arg0, m440Func5 arg1) { + ModelData* data; + unkStruct5* temp; + + data = &Hu3DData[arg0]; + temp = (unkStruct5*)data->unk_120; + temp->unkC = arg1; +} + +void fn_1_9BCC(s16 arg0, u8 arg1) { + ModelData* data; + unkStruct5* temp; + + data = &Hu3DData[arg0]; + temp = (unkStruct5*)data->unk_120; + temp->unk8 = arg1; +} + +void fn_1_9C04(ModelData* arg0, Mtx arg1) { + Mtx sp128; + ROMtx spF8; + Mtx spC8; + Mtx sp98; + Mtx sp68; + Vec sp5C; + Vec sp50; + Vec sp44; + Vec sp38; + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + Vec* var_r31; + s16 temp_r0; + u8 temp_r0_2; + unkStruct5* temp_r30; + HsfVector2f* var_r27; + s16 var_r26; + unkStruct4* var_r29; + m440Func5 var_r23; + + temp_r30 = (unkStruct5*)arg0->unk_120; + GXLoadPosMtxImm(arg1, 0); + GXSetNumTevStages(1); + GXSetNumTexGens(1); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + temp_r0 = temp_r30->unk10->bmp->dataFmt & 0xF; + if ((temp_r0 == 7) || (temp_r0 == 8)) { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXA, GX_CC_RASC, GX_CC_ZERO); + } else { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); + } + 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_TEXA, GX_CA_RASA, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + HuSprTexLoad(temp_r30->unk10, 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZCompLoc(0); + switch (temp_r30->unk8) { + case 0: + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + break; + case 1: + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); + break; + case 2: + GXSetBlendMode(GX_BM_BLEND, GX_BL_ZERO, GX_BL_INVDSTCLR, GX_LO_NOOP); + break; + } + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, temp_r30->unk1C, 0xC); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, temp_r30->unk24, 4); + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_TEX0, temp_r30->unk20, 8); + fn_1_9344(arg1, sp128); + PSMTXReorder(sp128, spF8); + if (((u8)omPauseChk() == 0) && (temp_r30->unkC)) { + var_r23 = temp_r30->unkC; + var_r23(arg0, temp_r30, arg1); + } + var_r29 = temp_r30->unk18; + var_r31 = temp_r30->unk1C; + var_r27 = temp_r30->unk20; + PSMTXROMultVecArray(spF8, &temp_r30->unk2C, (Vec*)&sp68[0], 4); + + for (var_r26 = 0; var_r26 < temp_r30->unk0; var_r26++, var_r29++, var_r27+=4) { + if (var_r29->unk62 == 0) { + var_r31->x = var_r31->y = var_r31->z = 0.0f; + var_r31++; + var_r31->x = var_r31->y = var_r31->z = 0.0f; + var_r31++; + var_r31->x = var_r31->y = var_r31->z = 0.0f; + var_r31++; + var_r31->x = var_r31->y = var_r31->z = 0.0f; + var_r31++; + } else { + if (0.0f == var_r29->unk44) { + fn_1_A328((Vec*)&sp68[0], &sp38, &var_r29->unk48, 4); + PSVECAdd(&sp38, &var_r29->unk54, var_r31++); + PSVECAdd(&sp44, &var_r29->unk54, var_r31++); + PSVECAdd(&sp50, &var_r29->unk54, var_r31++); + PSVECAdd(&sp5C, &var_r29->unk54, var_r31++); + } else { + fn_1_A328(&temp_r30->unk2C, &sp38, &var_r29->unk48, 4); + PSMTXRotRad(spC8, 0x5A, 0.017453292f * var_r29->unk44); + PSMTXConcat(sp128, spC8, sp98); + PSMTXMultVecArray(sp98, &sp38, &sp8, 4); + PSVECAdd(&sp8, &var_r29->unk54, var_r31++); + PSVECAdd(&sp14, &var_r29->unk54, var_r31++); + PSVECAdd(&sp20, &var_r29->unk54, var_r31++); + PSVECAdd(&sp2C, &var_r29->unk54, var_r31++); + } + if (var_r29->unk60 != -1) { + fn_1_A284(var_r27, temp_r30->unk5C, var_r29->unk60, temp_r30->unk60, temp_r30->unk64); + } + } + } + DCFlushRangeNoSync(temp_r30->unk1C, temp_r30->unk0 * 0xC * 4); + DCFlushRangeNoSync(temp_r30->unk20, temp_r30->unk0 * 8 * 4); + GXCallDisplayList(temp_r30->unk28, temp_r30->unk4); +} + +void fn_1_A1B8(HsfVector2f* arg0, s16 arg1, s16 arg2, f32 arg8, f32 arg9) { + s16 var_r31; + s16 var_r30; + s16 var_r29; + + for (var_r31 = 0; var_r31 < arg1; var_r31++, arg0++) { + var_r30 = (var_r31 % arg2); + var_r29 = (var_r31 / arg2); + arg0->x = (var_r30 * arg8); + arg0->y = (var_r29 * arg9); + } +} + +void fn_1_A284(HsfVector2f* arg0, HsfVector2f* arg1, s16 arg2, f32 arg3, f32 arg4) { + arg0[0].x = arg1[arg2].x; + arg0[0].y = arg1[arg2].y; + arg0[1].x = (arg3 + arg1[arg2].x); + arg0[1].y = arg1[arg2].y; + arg0[2].x = (arg3 + arg1[arg2].x); + arg0[2].y = (arg4 + arg1[arg2].y); + arg0[3].x = arg1[arg2].x; + arg0[3].y = (arg4 + arg1[arg2].y); +} + +void fn_1_A328(Vec* arg0, Vec* arg1, Vec* arg2, s16 arg3) { + s16 var_r31; + + for (var_r31 = 0; var_r31 < arg3; var_r31++, arg0++, arg1++) { + arg1->x = (arg0->x * arg2->x); + arg1->y = (arg0->y * arg2->y); + arg1->z = (arg0->z * arg2->z); + } +} + +static s8 lbl_1_data_148 = 0xFF; + +void fn_1_A390(ModelData* arg0, Mtx arg1) { + if (lbl_1_bss_2 == 0) { + if ((HuPadBtnDown[0] & 0x10) != 0) { + lbl_1_bss_1 ^= 1; + } + if (lbl_1_bss_1 == 0) return; + + if ((HuPadBtn[0] & 1) != 0) { + lbl_1_data_20.x -= 4.0f; + } + if ((HuPadBtn[0] & 2) != 0) { + lbl_1_data_20.x += 4.0f; + } + lbl_1_data_2C.x += HuPadSubStkX[0]; + if ((HuPadBtn[0] & 0x20) != 0) { + if ((HuPadBtn[0] & 8) != 0) { + lbl_1_data_20.y -= 4.0f; + } + if ((HuPadBtn[0] & 4) != 0) { + lbl_1_data_20.y += 4.0f; + } + lbl_1_data_2C.y += HuPadSubStkY[0]; + } else { + if ((HuPadBtn[0] & 8) != 0) { + lbl_1_data_20.z -= 4.0f; + } + if ((HuPadBtn[0] & 4) != 0) { + lbl_1_data_20.z += 4.0f; + } + lbl_1_data_2C.z -= HuPadSubStkY[0]; + } + lbl_1_data_54.x = lbl_1_data_2C.x; + lbl_1_data_54.y = lbl_1_data_2C.y; + lbl_1_data_54.z = lbl_1_data_2C.z; + lbl_1_data_6C.x = lbl_1_data_20.x; + lbl_1_data_6C.y = lbl_1_data_20.y; + lbl_1_data_6C.z = lbl_1_data_20.z - 500.0f; + Hu3DGLightPosSet(lbl_1_bss_E, lbl_1_data_2C.x, lbl_1_data_2C.y, lbl_1_data_2C.z, 0.0f, 0.0f, 0.0f); + Hu3DGLightPosAimSetV(lbl_1_bss_E, &lbl_1_data_2C, &lbl_1_data_20); + Hu3DShadowPosSet(&lbl_1_data_54, &lbl_1_data_60, &lbl_1_data_6C); + } + + print8(8, 0x64, 1.5f, "InterXYZ: %.2f %.2f %.2f", lbl_1_data_20.x, lbl_1_data_20.y, lbl_1_data_20.z); + print8(8, 0x70, 1.5f, "PositionXYZ: %.2f %.2f %.2f", lbl_1_data_2C.x, lbl_1_data_2C.y, lbl_1_data_2C.z); + GXLoadPosMtxImm(arg1, 0); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0); + GXSetNumTevStages(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_RASC, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_RASA, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, 0, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetZMode(1, GX_LEQUAL, 1); + GXBegin(GX_LINES, GX_VTXFMT0, 2); + GXPosition3f32(lbl_1_data_20.x, lbl_1_data_20.y, lbl_1_data_20.z); + GXColor4u8(0xFF, 0xFF, 0xFF, 0xFF); + GXPosition3f32(lbl_1_data_2C.x, lbl_1_data_2C.y, lbl_1_data_2C.z); + GXColor4u8(0xFF, 0x00, 0x00, 0xFF); +} + +void fn_1_AA94(void) { + if ((HuPadBtnDown[0] & 0x40) != 0) { + lbl_1_bss_2 ^= 1; + } + if (lbl_1_bss_2 != 0) { + if ((HuPadBtn[0] & 1) != 0) { + CRot.y += 1.0f; + } + if ((HuPadBtn[0] & 2) != 0) { + CRot.y -= 1.0f; + } + if ((HuPadBtn[0] & 8) != 0) { + CRot.x -= 1.0f; + } + if ((HuPadBtn[0] & 4) != 0) { + CRot.x += 1.0f; + } + Center.x += HuPadSubStkX[0]; + if ((HuPadBtn[0] & 0x20) != 0) { + Center.y += HuPadSubStkY[0]; + } else { + Center.z += HuPadSubStkY[0]; + } + if ((HuPadBtn[0] & 0x400) != 0) { + CZoom += 10.0f; + } + if ((HuPadBtn[0] & 0x800) != 0) { + CZoom -= 10.0f; + } + if ((HuPadBtnDown[0] & 0x100) != 0) { + OSReport("\nCZoom = %.2f \n", CZoom); + OSReport("Center x = %.2f: y = %.2f: z = %.2f \n", Center.x, Center.y, Center.z); + OSReport("CRot x = %.2f: y = %.2f: z = %.2f \n", CRot.x, CRot.y, CRot.z); + } + } +} \ No newline at end of file diff --git a/src/REL/m440Dll/object.c b/src/REL/m440Dll/object.c new file mode 100644 index 00000000..cc6e6d54 --- /dev/null +++ b/src/REL/m440Dll/object.c @@ -0,0 +1,24 @@ +#include "REL/m440Dll.h" + +// bss +omObjData* lbl_1_bss_C0[4]; + +// data + +// prototypes +void fn_1_AEE4(omObjData*); +void fn_1_B180(omObjData*); + +void fn_1_AE08(Process* arg0) { + s16 var_r31; + + omMakeGroupEx(arg0, 0, 4); + omGetGroupMemberListEx(arg0, 0); + +loop_2: + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_C0[var_r31] = omAddObjEx(arg0, 0x64, 9, 8, 0, fn_1_AEE4); + lbl_1_bss_C0[var_r31]->work[0] = var_r31; + } + omAddObjEx(arg0, 0x65, 0, 0, -1, fn_1_B180); +} diff --git a/src/REL/m446Dll/main.c b/src/REL/m446Dll/main.c index 279e2bdc..bbc5f6f2 100644 --- a/src/REL/m446Dll/main.c +++ b/src/REL/m446Dll/main.c @@ -634,7 +634,7 @@ s32 fn_1_1970(s16 arg0, s32 arg1, s32 arg2, s32 arg3) { } } -const s32 lbl_1_rodata_18[12] = { +static const s32 lbl_1_rodata_18[12] = { 0x180003, 0x180004, 0x180005, 0x180006, 0x180007, 0x180008, 0x180009, 0x18000A, 0x18000B, 0x18000C, 0x18000D, 0