diff --git a/config/GMPE01_00/rels/m444dll/symbols.txt b/config/GMPE01_00/rels/m444dll/symbols.txt index 574073a6..6f2bcebd 100644 --- a/config/GMPE01_00/rels/m444dll/symbols.txt +++ b/config/GMPE01_00/rels/m444dll/symbols.txt @@ -235,19 +235,19 @@ lbl_1_data_140 = .data:0x00000140; // type:object size:0xC data:float lbl_1_data_14C = .data:0x0000014C; // type:object size:0x3C data:float lbl_1_data_188 = .data:0x00000188; // type:object size:0xC lbl_1_data_194 = .data:0x00000194; // type:object size:0x20 -lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0x24 data:string -lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0xA data:string -lbl_1_data_1E2 = .data:0x000001E2; // type:object size:0xA data:string -lbl_1_data_1EC = .data:0x000001EC; // type:object size:0xA data:string -lbl_1_data_1F6 = .data:0x000001F6; // type:object size:0xD data:string -lbl_1_data_203 = .data:0x00000203; // type:object size:0xD data:string -lbl_1_data_210 = .data:0x00000210; // type:object size:0xD data:string -lbl_1_data_21D = .data:0x0000021D; // type:object size:0xD data:string -lbl_1_data_22A = .data:0x0000022A; // type:object size:0xB data:string -lbl_1_data_235 = .data:0x00000235; // type:object size:0xB 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:0xA scope:local data:string +lbl_1_data_1E2 = .data:0x000001E2; // type:object size:0xA scope:local data:string +lbl_1_data_1EC = .data:0x000001EC; // type:object size:0xA scope:local data:string +lbl_1_data_1F6 = .data:0x000001F6; // type:object size:0xD scope:local data:string +lbl_1_data_203 = .data:0x00000203; // type:object size:0xD scope:local data:string +lbl_1_data_210 = .data:0x00000210; // type:object size:0xD scope:local data:string +lbl_1_data_21D = .data:0x0000021D; // type:object size:0xD scope:local data:string +lbl_1_data_22A = .data:0x0000022A; // type:object size:0xB scope:local data:string +lbl_1_data_235 = .data:0x00000235; // type:object size:0xB scope:local data:string lbl_1_data_240 = .data:0x00000240; // type:object size:0x4 -lbl_1_data_244 = .data:0x00000244; // type:object size:0xA data:string -lbl_1_data_24E = .data:0x0000024E; // type:object size:0x4 data:string +lbl_1_data_244 = .data:0x00000244; // type:object size:0xA scope:local data:string +lbl_1_data_24E = .data:0x0000024E; // type:object size:0x4 scope:local data:string lbl_1_data_258 = .data:0x00000258; // type:object size:0xC lbl_1_data_264 = .data:0x00000264; // type:object size:0x3C lbl_1_data_2A0 = .data:0x000002A0; // type:object size:0x28 diff --git a/config/GMPE01_00/rels/m455Dll/symbols.txt b/config/GMPE01_00/rels/m455Dll/symbols.txt index 36dee25b..5cefea64 100644 --- a/config/GMPE01_00/rels/m455Dll/symbols.txt +++ b/config/GMPE01_00/rels/m455Dll/symbols.txt @@ -116,111 +116,111 @@ lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 scope:local data:d 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:0x8 scope:local data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_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:0x8 data:double -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size: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:0x4 data:float -lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double -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:0x8 data:double -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:0x8 data:double -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 data:double -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float -lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float -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_284 = .rodata:0x00000284; // 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_294 = .rodata:0x00000294; // 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:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 data:double -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x8 data:double -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float -lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 data:double -lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 data:double -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x8 data:double -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 data:double -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 data:double -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float -lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 scope:local data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_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:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size: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:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +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:0x8 scope:local data:double +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:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +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_284 = .rodata:0x00000284; // 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_294 = .rodata:0x00000294; // 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:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 scope:local data:double lbl_1_data_0 = .data:0x00000000; // type:object size:0x38 data:float lbl_1_data_38 = .data:0x00000038; // type:object size:0xC data:float lbl_1_data_44 = .data:0x00000044; // type:object size:0xC data:float @@ -244,27 +244,28 @@ lbl_1_data_179 = .data:0x00000179; // type:object size:0xB scope:local data:stri lbl_1_data_184 = .data:0x00000184; // type:object size:0x8 data:float lbl_1_data_18C = .data:0x0000018C; // type:object size:0x10 lbl_1_data_19C = .data:0x0000019C; // type:object size:0x3C data:float -lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x30 -lbl_1_data_208 = .data:0x00000208; // type:object size:0x1 data:byte +lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x30 data:float +lbl_1_data_208 = .data:0x00000208; // type:object size:0x4 data:byte lbl_1_data_20C = .data:0x0000020C; // type:object size:0x50 -lbl_1_data_25C = .data:0x0000025C; // type:object size:0x7 data:string -lbl_1_data_263 = .data:0x00000263; // type:object size:0x7 data:string -lbl_1_data_26A = .data:0x0000026A; // type:object size:0x1 data:byte -lbl_1_data_26E = .data:0x0000026E; // type:object size:0x1 data:byte -lbl_1_data_272 = .data:0x00000272; // type:object size:0x6 data:byte -lbl_1_data_278 = .data:0x00000278; // type:object size:0x30 -lbl_1_data_2A8 = .data:0x000002A8; // type:object size:0x138 +lbl_1_data_25C = .data:0x0000025C; // type:object size:0x7 scope:local data:string +lbl_1_data_263 = .data:0x00000263; // type:object size:0x7 scope:local data:string +lbl_1_data_26A = .data:0x0000026A; // type:object size:0x4 data:byte +lbl_1_data_26E = .data:0x0000026E; // type:object size:0x4 data:byte +lbl_1_data_272 = .data:0x00000272; // type:object size:0x4 data:byte +lbl_1_data_278 = .data:0x00000278; // type:object size:0x30 data:float +lbl_1_data_2A8 = .data:0x000002A8; // type:object size:0x138 data:float lbl_1_data_3E0 = .data:0x000003E0; // type:object size:0x68 -lbl_1_data_448 = .data:0x00000448; // type:object size:0xD0 -lbl_1_data_518 = .data:0x00000518; // type:object size:0xD0 -lbl_1_data_5E8 = .data:0x000005E8; // type:object size:0x18 -lbl_1_data_600 = .data:0x00000600; // type:object size:0x1 data:byte -lbl_1_data_604 = .data:0x00000604; // type:object size:0x6C +lbl_1_data_448 = .data:0x00000448; // type:object size:0xD0 data:float +lbl_1_data_518 = .data:0x00000518; // type:object size:0xD0 data:float +lbl_1_data_5E8 = .data:0x000005E8; // type:object size:0x18 data:float +lbl_1_data_600 = .data:0x00000600; // type:object size:0x4 data:byte +lbl_1_data_604 = .data:0x00000604; // type:object size:0x6C data:float lbl_1_data_670 = .data:0x00000670; // type:object size:0x24 -lbl_1_data_694 = .data:0x00000694; // type:object size:0x8 data:byte -lbl_1_data_69C = .data:0x0000069C; // type:object size:0x1 data:byte -lbl_1_data_6A0 = .data:0x000006A0; // type:object size:0x10 -lbl_1_data_6B0 = .data:0x000006B0; // type:object size:0x10 +lbl_1_data_694 = .data:0x00000694; // type:object size:0x4 data:byte +lbl_1_data_698 = .data:0x00000698; // type:object size:0x4 data:byte +lbl_1_data_69C = .data:0x0000069C; // type:object size:0x4 data:byte +lbl_1_data_6A0 = .data:0x000006A0; // type:object size:0x10 data:float +lbl_1_data_6B0 = .data:0x000006B0; // type:object size:0x10 data:float lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x2 data:2byte lbl_1_bss_8 = .bss:0x00000008; // type:object size:0xC data:float @@ -282,7 +283,8 @@ lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:4byte lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte -lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x10 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0xC data:4byte lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 data:4byte lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x4 data:4byte lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_00/rels/m456Dll/symbols.txt b/config/GMPE01_00/rels/m456Dll/symbols.txt index 18fc4b5a..1f2502e9 100644 --- a/config/GMPE01_00/rels/m456Dll/symbols.txt +++ b/config/GMPE01_00/rels/m456Dll/symbols.txt @@ -272,7 +272,8 @@ lbl_1_bss_80 = .bss:0x00000080; // type:object size:0x4 data:4byte lbl_1_bss_84 = .bss:0x00000084; // type:object size:0x4 data:4byte lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x4 data:4byte lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x4 data:4byte -lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x10 data:4byte +lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x4 data:4byte +lbl_1_bss_94 = .bss:0x00000094; // type:object size:0xC data:4byte lbl_1_bss_A0 = .bss:0x000000A0; // type:object size:0x4 data:4byte lbl_1_bss_A4 = .bss:0x000000A4; // type:object size:0x4 data:4byte lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_00/rels/mentDll/splits.txt b/config/GMPE01_00/rels/mentDll/splits.txt index 57db84a5..77b37cde 100644 --- a/config/GMPE01_00/rels/mentDll/splits.txt +++ b/config/GMPE01_00/rels/mentDll/splits.txt @@ -9,9 +9,11 @@ Sections: REL/mentDll/common.c: .text start:0x00000000 end:0x0000658C .rodata start:0x00000000 end:0x000000E8 + .data start:0x00000000 end:0x000000D8 + .bss start:0x00000000 end:0x00000008 REL/mentDll/main.c: .text start:0x0000658C end:0x00023A38 .rodata start:0x000000E8 end:0x00000528 - .data start:0x00000000 end:0x000006D0 - .bss start:0x00000000 end:0x000036C4 + .data start:0x000000D8 end:0x000006D0 + .bss start:0x00000008 end:0x000036C4 diff --git a/config/GMPE01_00/rels/mentDll/symbols.txt b/config/GMPE01_00/rels/mentDll/symbols.txt index a567448f..e29109dd 100644 --- a/config/GMPE01_00/rels/mentDll/symbols.txt +++ b/config/GMPE01_00/rels/mentDll/symbols.txt @@ -204,222 +204,223 @@ fn_1_225F4 = .text:0x000225F4; // type:function size:0xE38 fn_1_2342C = .text:0x0002342C; // type:function size:0x60C _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_18 = .rodata:0x00000018; // type:object size:0x8 data:double -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0xC data:4byte -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0xC data:4byte -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0xC data:4byte -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_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_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float -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:0x8 data:double -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:byte -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x1C data:4byte -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:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0xC data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x10 data:4byte -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x18 data:4byte -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0xC data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0xC 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:0xC data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x18 data:4byte -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0xC data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0xC data:float -lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0xC data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x1C data:4byte -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x10 data:4byte -lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x18 data:4byte -lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0xC data:float -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0xC data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x1C data:4byte -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0xC data:float -lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0xC data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0xC data:float -lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0xC data:float -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0xC data:float -lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0xC data:float -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float -lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x18 data:4byte -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x90 -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x18 data:4byte -lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float -lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float -lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 data:float -lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 data:float -lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 data:float -lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 data:float -lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float -lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float -lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float -lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 data:float -lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 data:float -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float -lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float -lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float -lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 data:float -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:float -lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float -lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 data:float -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float -lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 data:float -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float -lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 data:float -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float -lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float -lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float -lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 data:float -lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 data:float -lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float -lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float -lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float -lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float -lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float -lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float -lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float -lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x40 data:4byte -lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 data:float -lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 data:float -lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 data:float -lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 data:float -lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 data:float -lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float -lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 data:float -lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x20 data:4byte -lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float -lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float -lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x20 data:4byte -lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float -lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float -lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 data:float -lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float -lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 data:float -lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 data:float -lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float -lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 data:float -lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 data:float -lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float -lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 data:float -lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x8 data:double -lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 data:double -lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 data:float -lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 data:float -lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float -lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // 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:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0xC scope:local data:4byte +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_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_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_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +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:0x8 scope:local data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x1C scope:local data:4byte +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:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0xC 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:0x10 scope:local data:4byte +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0xC scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0xC 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:0xC 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:0x18 scope:local data:4byte +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0xC scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0xC scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0xC scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0xC scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0xC scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0xC scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0xC scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0xC scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0xC scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0xC scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0xC scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x90 scope:local +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 scope:local data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x40 scope:local data:4byte +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 scope:local data:float +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 scope:local data:float +lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 scope:local data:float +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x20 scope:local data:4byte +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x20 scope:local data:4byte +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x8 scope:local data:double +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 scope:local data:double +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x70 data:4byte lbl_1_data_70 = .data:0x00000070; // type:object size:0x4 data:4byte -lbl_1_data_74 = .data:0x00000074; // type:object size:0x22 data:string -lbl_1_data_96 = .data:0x00000096; // type:object size:0x1A data:string -lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x1A data:string -lbl_1_data_CA = .data:0x000000CA; // type:object size:0xE data:string +lbl_1_data_74 = .data:0x00000074; // type:object size:0x22 scope:local data:string +lbl_1_data_96 = .data:0x00000096; // type:object size:0x1A scope:local data:string +lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x1A scope:local data:string +lbl_1_data_CA = .data:0x000000CA; // type:object size:0xE scope:local data:string lbl_1_data_D8 = .data:0x000000D8; // type:object size:0x48 data:float lbl_1_data_120 = .data:0x00000120; // type:object size:0x18 jumptable_1_data_138 = .data:0x00000138; // type:object size:0x30 scope:local -lbl_1_data_168 = .data:0x00000168; // type:object size:0x16 data:string -lbl_1_data_17E = .data:0x0000017E; // type:object size:0x15 data:string -lbl_1_data_193 = .data:0x00000193; // type:object size:0x17 data:string -lbl_1_data_1AA = .data:0x000001AA; // type:object size:0x16 data:string -lbl_1_data_1C0 = .data:0x000001C0; // type:object size:0x17 data:string -lbl_1_data_1D7 = .data:0x000001D7; // type:object size:0x16 data:string -lbl_1_data_1ED = .data:0x000001ED; // type:object size:0x17 data:string -lbl_1_data_204 = .data:0x00000204; // type:object size:0x16 data:string -lbl_1_data_21A = .data:0x0000021A; // type:object size:0xF data:string -lbl_1_data_229 = .data:0x00000229; // type:object size:0x1C data:string -lbl_1_data_245 = .data:0x00000245; // type:object size:0x1D data:string -lbl_1_data_262 = .data:0x00000262; // type:object size:0x14 data:string -lbl_1_data_276 = .data:0x00000276; // type:object size:0x15 data:string -lbl_1_data_28B = .data:0x0000028B; // type:object size:0x14 data:string -lbl_1_data_29F = .data:0x0000029F; // type:object size:0x15 data:string +lbl_1_data_168 = .data:0x00000168; // type:object size:0x16 scope:local data:string +lbl_1_data_17E = .data:0x0000017E; // type:object size:0x15 scope:local data:string +lbl_1_data_193 = .data:0x00000193; // type:object size:0x17 scope:local data:string +lbl_1_data_1AA = .data:0x000001AA; // type:object size:0x16 scope:local data:string +lbl_1_data_1C0 = .data:0x000001C0; // type:object size:0x17 scope:local data:string +lbl_1_data_1D7 = .data:0x000001D7; // type:object size:0x16 scope:local data:string +lbl_1_data_1ED = .data:0x000001ED; // type:object size:0x17 scope:local data:string +lbl_1_data_204 = .data:0x00000204; // type:object size:0x16 scope:local data:string +lbl_1_data_21A = .data:0x0000021A; // type:object size:0xF scope:local data:string +lbl_1_data_229 = .data:0x00000229; // type:object size:0x1C scope:local data:string +lbl_1_data_245 = .data:0x00000245; // type:object size:0x1D scope:local data:string +lbl_1_data_262 = .data:0x00000262; // type:object size:0x14 scope:local data:string +lbl_1_data_276 = .data:0x00000276; // type:object size:0x15 scope:local data:string +lbl_1_data_28B = .data:0x0000028B; // type:object size:0x14 scope:local data:string +lbl_1_data_29F = .data:0x0000029F; // type:object size:0x15 scope:local data:string lbl_1_data_2B4 = .data:0x000002B4; // type:object size:0x3C lbl_1_data_2F0 = .data:0x000002F0; // type:object size:0x4 data:4byte -lbl_1_data_2F4 = .data:0x000002F4; // type:object size:0x20 data:string -lbl_1_data_314 = .data:0x00000314; // type:object size:0x20 data:string -lbl_1_data_334 = .data:0x00000334; // type:object size:0x2A data:string -lbl_1_data_35E = .data:0x0000035E; // type:object size:0x3 data:string -lbl_1_data_361 = .data:0x00000361; // type:object size:0x1B data:string -lbl_1_data_37C = .data:0x0000037C; // type:object size:0x1A data:string -lbl_1_data_396 = .data:0x00000396; // type:object size:0x29 data:string -lbl_1_data_3BF = .data:0x000003BF; // type:object size:0x2A data:string -lbl_1_data_3E9 = .data:0x000003E9; // type:object size:0x2A data:string -lbl_1_data_413 = .data:0x00000413; // type:object size:0x2B data:string -lbl_1_data_43E = .data:0x0000043E; // type:object size:0x29 data:string -lbl_1_data_467 = .data:0x00000467; // type:object size:0x2B data:string -lbl_1_data_492 = .data:0x00000492; // type:object size:0x20 data:string -lbl_1_data_4B2 = .data:0x000004B2; // type:object size:0x22 data:string +lbl_1_data_2F4 = .data:0x000002F4; // type:object size:0x20 scope:local data:string +lbl_1_data_314 = .data:0x00000314; // type:object size:0x20 scope:local data:string +lbl_1_data_334 = .data:0x00000334; // type:object size:0x2A scope:local data:string +lbl_1_data_35E = .data:0x0000035E; // type:object size:0x3 scope:local data:string +lbl_1_data_361 = .data:0x00000361; // type:object size:0x1B scope:local data:string +lbl_1_data_37C = .data:0x0000037C; // type:object size:0x1A scope:local data:string +lbl_1_data_396 = .data:0x00000396; // type:object size:0x29 scope:local data:string +lbl_1_data_3BF = .data:0x000003BF; // type:object size:0x2A scope:local data:string +lbl_1_data_3E9 = .data:0x000003E9; // type:object size:0x2A scope:local data:string +lbl_1_data_413 = .data:0x00000413; // type:object size:0x2B scope:local data:string +lbl_1_data_43E = .data:0x0000043E; // type:object size:0x29 scope:local data:string +lbl_1_data_467 = .data:0x00000467; // type:object size:0x2B scope:local data:string +lbl_1_data_492 = .data:0x00000492; // type:object size:0x20 scope:local data:string +lbl_1_data_4B2 = .data:0x000004B2; // type:object size:0x22 scope:local data:string jumptable_1_data_4D4 = .data:0x000004D4; // type:object size:0x54 scope:local -lbl_1_data_528 = .data:0x00000528; // type:object size:0x1B data:string -lbl_1_data_543 = .data:0x00000543; // type:object size:0x1A data:string -lbl_1_data_55D = .data:0x0000055D; // type:object size:0xF data:string -lbl_1_data_56C = .data:0x0000056C; // type:object size:0x10 data:string +lbl_1_data_528 = .data:0x00000528; // type:object size:0x1B scope:local data:string +lbl_1_data_543 = .data:0x00000543; // type:object size:0x1A scope:local data:string +lbl_1_data_55D = .data:0x0000055D; // type:object size:0xF scope:local data:string +lbl_1_data_56C = .data:0x0000056C; // type:object size:0x10 scope:local data:string lbl_1_data_57C = .data:0x0000057C; // type:object size:0x40 lbl_1_data_5BC = .data:0x000005BC; // type:object size:0x20 lbl_1_data_5DC = .data:0x000005DC; // type:object size:0x64 data:float lbl_1_data_640 = .data:0x00000640; // type:object size:0x50 data:4byte lbl_1_data_690 = .data:0x00000690; // type:object size:0x40 data:4byte -lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x14 data:4byte +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0xC data:4byte lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x10 data:4byte lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x40 data:4byte lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x44 data:float diff --git a/config/GMPE01_00/rels/mpexDll/splits.txt b/config/GMPE01_00/rels/mpexDll/splits.txt index 965cdf04..c53e66f4 100644 --- a/config/GMPE01_00/rels/mpexDll/splits.txt +++ b/config/GMPE01_00/rels/mpexDll/splits.txt @@ -6,8 +6,11 @@ Sections: .data type:data align:8 .bss type:bss align:8 +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + REL/mpexDll/main.c: - .text start:0x00000000 end:0x00003044 + .text start:0x000000A0 end:0x00003044 .rodata start:0x00000000 end:0x000000A0 .data start:0x00000000 end:0x00000240 .bss start:0x00000000 end:0x000000A8 diff --git a/config/GMPE01_00/rels/mpexDll/symbols.txt b/config/GMPE01_00/rels/mpexDll/symbols.txt index 85a09fc4..8b856ada 100644 --- a/config/GMPE01_00/rels/mpexDll/symbols.txt +++ b/config/GMPE01_00/rels/mpexDll/symbols.txt @@ -3,7 +3,7 @@ _epilog = .text:0x00000054; // type:function size:0x4C scope:global fn_1_A0 = .text:0x000000A0; // type:function size:0xE8 fn_1_188 = .text:0x00000188; // type:function size:0x38 fn_1_1C0 = .text:0x000001C0; // type:function size:0x70 -fn_1_230 = .text:0x00000230; // type:function size:0x68 +ObjectSetup = .text:0x00000230; // type:function size:0x68 fn_1_298 = .text:0x00000298; // type:function size:0xDC fn_1_374 = .text:0x00000374; // type:function size:0xC4 fn_1_438 = .text:0x00000438; // type:function size:0x3E4 @@ -213,183 +213,185 @@ fn_1_1CB80 = .text:0x0001CB80; // type:function size:0x4AC fn_1_1D02C = .text:0x0001D02C; // type:function size:0x16C _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:0xC data:4byte -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0xC data:4byte -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0xC data:4byte -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size: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:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x78 -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:double -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0xC data:4byte -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_154 = .rodata:0x00000154; // type:object size:0xC data:4byte -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:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0xC data:4byte -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:0x8 data:double -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0xC data:4byte -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0xC data:4byte -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0xC data:4byte -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float -lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0xC data:4byte -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0xC data:4byte -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0xC data:4byte -lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double -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_244 = .rodata:0x00000244; // type:object size:0x4 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float -lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float -lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float -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:4byte -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0xB4 -lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x6C -lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x2C data:4byte -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0xB0 -lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 data:float -lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float -lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 data:float -lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 data:float -lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 data:float -lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 data:float -lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 data:float -lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float -lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 data:float -lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 data:float -lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 data:float -lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float -lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 data:float -lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float -lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float -lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float -lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float -lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float -lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float -lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float -lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float -lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float -lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0xC data:4byte -lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 data:float -lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float -lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float -lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 data:float -lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float -lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 data:float -lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 data:float -lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float -lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 data:float -lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 data:float -lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float -lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 data:float -lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 data:float -lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x18 data:4byte -lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float -lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0xC data:4byte -lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x8 data:float -lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 data:float -lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x8 data:double -lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x4 data:float -lbl_1_rodata_54C = .rodata:0x0000054C; // type:object size:0x4 data:float -lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x4 data:float -lbl_1_rodata_554 = .rodata:0x00000554; // type:object size:0x4 data:float -lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 data:float -lbl_1_rodata_55C = .rodata:0x0000055C; // type:object size:0x4 data:float -lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 data:float -lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 data:float -lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x4 data:float -lbl_1_rodata_56C = .rodata:0x0000056C; // type:object size:0x4 data:float -lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 data:float -lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x4 data:float -lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 data:float -lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 data:float -lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 data:float -lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 data:float -lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 data:float -lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 data:float -lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 data:float -lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 data:float -lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 data:float -lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 data:float -lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x4 data:float -lbl_1_rodata_5A4 = .rodata:0x000005A4; // type:object size:0x4 data:float -lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x8 data:double -lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x8 data:double -lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x4 data:float -lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x8 data:double -lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x4 data:float -lbl_1_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 data:float -lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 data:float -lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 data:float -lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x38 data:4byte -lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x8 data:double -lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x4 data:float -lbl_1_rodata_61C = .rodata:0x0000061C; // type:object size:0x4 data:float -lbl_1_data_0 = .data:0x00000000; // type:object size:0x4F data:string -lbl_1_data_4F = .data:0x0000004F; // type:object size:0x50 data:string -lbl_1_data_9F = .data:0x0000009F; // type:object size:0x50 data:string -lbl_1_data_EF = .data:0x000000EF; // type:object size:0x4E data:string -lbl_1_data_13D = .data:0x0000013D; // type:object size:0x50 data:string -lbl_1_data_18D = .data:0x0000018D; // type:object size:0x4F data:string -lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x22 data:string -lbl_1_data_1FE = .data:0x000001FE; // type:object size:0x1A data:string -lbl_1_data_218 = .data:0x00000218; // type:object size:0x1A data:string -lbl_1_data_232 = .data:0x00000232; // type:object size:0xE data:string +__fakeHalf = .rodata:0x00000000; // type:object size:0x8 scope:local data:double +__fakeThree = .rodata:0x00000008; // type:object size:0x8 scope:local data:double +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:0xC scope:local data:4byte +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size: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:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x78 scope:local +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 scope:local data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0xC scope:local data:4byte +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_154 = .rodata:0x00000154; // type:object size:0xC scope:local data:4byte +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:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0xC scope:local data:4byte +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:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 scope:local data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 scope:local data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 scope:local data:double +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_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +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:4byte +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0xB4 scope:local +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x6C scope:local +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x2C scope:local data:4byte +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0xB0 scope:local +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 scope:local data:float +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 scope:local data:float +lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 scope:local data:float +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 scope:local data:float +lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 scope:local data:float +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x8 scope:local data:float +lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 scope:local data:float +lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x8 scope:local data:double +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54C = .rodata:0x0000054C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x4 scope:local data:float +lbl_1_rodata_554 = .rodata:0x00000554; // type:object size:0x4 scope:local data:float +lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 scope:local data:float +lbl_1_rodata_55C = .rodata:0x0000055C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 scope:local data:float +lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 scope:local data:float +lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x4 scope:local data:float +lbl_1_rodata_56C = .rodata:0x0000056C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 scope:local data:float +lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x4 scope:local data:float +lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 scope:local data:float +lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 scope:local data:float +lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 scope:local data:float +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 scope:local data:float +lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 scope:local data:float +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 scope:local data:float +lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A4 = .rodata:0x000005A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x38 scope:local data:4byte +lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x8 scope:local data:double +lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x4 scope:local data:float +lbl_1_rodata_61C = .rodata:0x0000061C; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x4F scope:local data:string +lbl_1_data_4F = .data:0x0000004F; // type:object size:0x50 scope:local data:string +lbl_1_data_9F = .data:0x0000009F; // type:object size:0x50 scope:local data:string +lbl_1_data_EF = .data:0x000000EF; // type:object size:0x4E scope:local data:string +lbl_1_data_13D = .data:0x0000013D; // type:object size:0x50 scope:local data:string +lbl_1_data_18D = .data:0x0000018D; // type:object size:0x4F scope:local data:string +lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x22 scope:local data:string +lbl_1_data_1FE = .data:0x000001FE; // type:object size:0x1A scope:local data:string +lbl_1_data_218 = .data:0x00000218; // type:object size:0x1A scope:local data:string +lbl_1_data_232 = .data:0x00000232; // type:object size:0xE scope:local data:string lbl_1_data_240 = .data:0x00000240; // type:object size:0x54 lbl_1_data_294 = .data:0x00000294; // type:object size:0x4 data:4byte lbl_1_data_298 = .data:0x00000298; // type:object size:0x4 data:4byte @@ -421,10 +423,10 @@ lbl_1_data_491 = .data:0x00000491; // type:object size:0x16 data:string lbl_1_data_4A7 = .data:0x000004A7; // type:object size:0x19 data:string lbl_1_data_4C0 = .data:0x000004C0; // type:object size:0x16 data:string lbl_1_data_4D6 = .data:0x000004D6; // type:object size:0x42 -lbl_1_data_518 = .data:0x00000518; // type:object size:0x3C data:string -lbl_1_data_554 = .data:0x00000554; // type:object size:0x19 data:string -lbl_1_data_56D = .data:0x0000056D; // type:object size:0x1A data:string -lbl_1_data_587 = .data:0x00000587; // type:object size:0x3D +lbl_1_data_518 = .data:0x00000518; // type:object size:0x3C scope:local data:string +lbl_1_data_554 = .data:0x00000554; // type:object size:0x19 scope:local data:string +lbl_1_data_56D = .data:0x0000056D; // type:object size:0x1A scope:local data:string +lbl_1_data_587 = .data:0x00000587; // type:object size:0x3D scope:local data:string lbl_1_data_5C4 = .data:0x000005C4; // type:object size:0x20 data:4byte lbl_1_data_5E4 = .data:0x000005E4; // type:object size:0x40 data:4byte lbl_1_data_624 = .data:0x00000624; // type:object size:0x70 @@ -436,7 +438,8 @@ lbl_1_data_75C = .data:0x0000075C; // type:object size:0x20 lbl_1_data_77C = .data:0x0000077C; // type:object size:0x4 data:4byte lbl_1_data_780 = .data:0x00000780; // type:object size:0x8 data:4byte lbl_1_data_788 = .data:0x00000788; // type:object size:0x318 -lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x64 data:4byte +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x60 data:4byte lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x44 data:float lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0x4 data:4byte diff --git a/configure.py b/configure.py index 90602312..0de9c77d 100644 --- a/configure.py +++ b/configure.py @@ -955,7 +955,7 @@ def Rel(lib_name, objects): Object(NonMatching, "REL/m420dll/main.c"), Object(NonMatching, "REL/m420dll/player.c"), Object(NonMatching, "REL/m420dll/map.c"), - Object(NonMatching, "REL/m420dll/rand.c"), + Object(Matching, "REL/m420dll/rand.c"), }, ), Rel( @@ -1198,14 +1198,14 @@ def Rel(lib_name, objects): "m455Dll", # Rumble Fishing objects={ Object(Matching, "REL/m455Dll/main.c"), - Object(NonMatching, "REL/m455Dll/stage.c"), + Object(Matching, "REL/m455Dll/stage.c"), }, ), Rel( "m456Dll", # Take a Breather objects={ Object(NonMatching, "REL/m456Dll/main.c"), - Object(NonMatching, "REL/m456Dll/stage.c"), + Object(Matching, "REL/m456Dll/stage.c"), }, ), Rel( @@ -1256,8 +1256,8 @@ def Rel(lib_name, objects): Rel( "mentDll", objects={ - Object(NonMatching, "REL/mentDll/common.c"), - Object(NonMatching, "REL/mentDll/main.c"), + Object(Matching, "REL/mentDll/common.c"), + Object(Matching, "REL/mentDll/main.c"), }, ), Rel( @@ -1299,10 +1299,10 @@ def Rel(lib_name, objects): Rel( "mpexDll", objects={ - Object(NonMatching, "REL/mpexDll/main.c"), + Object(Matching, "REL/mpexDll/main.c"), Object(NonMatching, "REL/mpexDll/mpex.c"), - Object(NonMatching, "REL/mpexDll/charsel.c"), - Object(NonMatching, "REL/mpexDll/mgname.c"), + Object(Matching, "REL/mpexDll/charsel.c"), + Object(Matching, "REL/mpexDll/mgname.c"), }, ), Rel( diff --git a/include/REL/m455Dll.h b/include/REL/m455Dll.h new file mode 100644 index 00000000..af47ff3c --- /dev/null +++ b/include/REL/m455Dll.h @@ -0,0 +1,12 @@ +#ifndef M455DLL_H +#define M455DLL_H + +#include "game/object.h" + +void fn_1_32C4(Process *objman); +void fn_1_340C(void); +s32 fn_1_6698(Vec *arg0, float arg1, float arg2, s32 arg3); +float fn_1_687C(void); +s32 fn_1_6CB0(Vec *arg0, float arg1); + +#endif diff --git a/include/REL/m456Dll.h b/include/REL/m456Dll.h new file mode 100644 index 00000000..749d8bd1 --- /dev/null +++ b/include/REL/m456Dll.h @@ -0,0 +1,12 @@ +#ifndef M456DLL_H +#define M456DLL_H + +#include "game/object.h" + +void fn_1_2DF4(Process *objman); +void fn_1_2F3C(void); +s32 fn_1_61C8(Vec *arg0, float arg1, float arg2, s32 arg3); +float fn_1_63AC(void); +s32 fn_1_67E0(Vec *arg0, float arg1); + +#endif diff --git a/include/REL/mentDll.h b/include/REL/mentDll.h index 9167ed8e..623bdc08 100644 --- a/include/REL/mentDll.h +++ b/include/REL/mentDll.h @@ -2,27 +2,21 @@ #define MENTDLL_H #include "game/object.h" +extern s32 lbl_1_data_0[][4]; +//the prev and current struct member might be vice versa typedef struct MentDllUnkBss64Struct { - /* 0x00 */ s16 unk00; - /* 0x02 */ s16 unk02; - /* 0x04 */ s32 unk04; - /* 0x08 */ float unk_08; - /* 0x0C */ float unk_0C; - /* 0x10 */ float unk_10; - /* 0x14 */ s32 unk14; - /* 0x18 */ s32 unk18; - /* 0x1C */ s32 unk1C; - /* 0x20 */ float unk_20; - /* 0x24 */ float unk_24; - /* 0x28 */ float unk_28; - /* 0x2C */ s32 unk2C; - /* 0x30 */ s32 unk30; - /* 0x34 */ s32 unk34; - /* 0x38 */ float unk_38; - /* 0x3C */ s32 unk3C; + /* 0x00 */ void (*func)(void); + /* 0x04 */ void (*func2)(f32 arg9); + /* 0x08 */ Vec center; + /* 0x14 */ Vec prevCenter; + /* 0x20 */ Vec rot; + /* 0x2C */ Vec prevRot; + /* 0x38 */ float zoom; + /* 0x3C */ f32 prevZoom; /* 0x40 */ s32 unk_40; } MentDllUnkBss64Struct; /* size = 0x44 */ +extern MentDllUnkBss64Struct lbl_1_bss_64; float fn_1_20C(float arg8, float arg9, float argA, float argB); float fn_1_234(float arg8, float arg9, float argA); @@ -36,22 +30,22 @@ void fn_1_5E8(s32 arg0); void fn_1_6D0(void); s32 fn_1_1434(s32 arg0, s32 arg1, s32 arg2); void fn_1_16AC(s32 arg0); -void fn_1_1968(s32 arg0, u32 arg1, s32 arg2, s32 arg3); -s32 fn_1_1A5C(u32 arg0, s32 arg1, s32 arg2); -s32 fn_1_1DD8(u32 arg0, s32 arg1, s32 arg2); -s32 fn_1_2154(u32 arg0); +void fn_1_1968(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +s32 fn_1_1A5C(s32 arg0, s32 arg1, s32 arg2); +s32 fn_1_1DD8(s32 arg0, s32 arg1, s32 arg2); +s32 fn_1_2154(s32 arg0); void fn_1_2318(s32 arg0); -void fn_1_2808(void *arg0); -void fn_1_2844(Process *arg0, void *arg1); -void fn_1_4138(MentDllUnkBss64Struct *arg0, float *arg1, float arg8, float arg9, float argA); -void fn_1_5150(void *arg0, void *arg1, float arg8, float arg9, float argA); +void fn_1_2808(void (*arg0)(void)); +void fn_1_2844(Process* arg0, void (*arg1)(void)); +void fn_1_29A0(MentDllUnkBss64Struct* arg0); +void fn_1_4138(MentDllUnkBss64Struct* arg0, MentDllUnkBss64Struct* arg1, f32 arg8, f32 arg9, f32 argA); +void fn_1_5150(MentDllUnkBss64Struct* arg0, MentDllUnkBss64Struct* arg1, f32 arg8, f32 arg9, f32 argA); void fn_1_5818(omObjData *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); void fn_1_59A0(omObjData *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); void fn_1_5C08(omObjData *arg0); void fn_1_5CDC(omObjData *arg0, s32 arg1, s32 arg2); void fn_1_5D38(omObjData *arg0, s32 arg1, Vec arg2, float arg8, float arg9, float argA, s32 arg3, s32 arg4); void fn_1_6534(s32, s32, float, float); - void fn_1_658C(Process *arg0); #endif diff --git a/include/REL/mpexDll.h b/include/REL/mpexDll.h new file mode 100644 index 00000000..c14b7b54 --- /dev/null +++ b/include/REL/mpexDll.h @@ -0,0 +1,42 @@ +#ifndef MPEXDLL_H +#define MPEXDLL_H + +#include "game/object.h" + +typedef void (*MpexDllUnkFunc)(void); + +typedef struct MpexDllUnkStruct { + /* 0x00 */ MpexDllUnkFunc unk_00; + /* 0x04 */ void *unk_04; // func, unknown args + /* 0x08 */ Vec unk_08; + /* 0x14 */ Vec unk_14; + /* 0x20 */ Vec unk_20; + /* 0x2C */ Vec unk_2C; + /* 0x38 */ float unk_38; + /* 0x3C */ float unk_3C; + /* 0x40 */ s32 unk_40; +} MpexDllUnkStruct; /* size = 0x44 */ + +typedef struct MpexDllUnkStruct2 { + /* 0x00 */ char unk00[0x40]; + /* 0x40 */ s16 *unk_40; + /* 0x44 */ char unk44; + /* 0x48 */ s16 *unk_48; + /* 0x4C */ char unk_4C[0xC]; + /* 0x58 */ u32 unk_58; +} MpexDllUnkStruct2; /* size = unknown */ + +void fn_1_374(void); +void fn_1_298(void); +void fn_1_910(MpexDllUnkFunc arg0); +void fn_1_25C4(MpexDllUnkStruct2 *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_28E0(MpexDllUnkStruct2 *arg0, s32 arg1, Vec *arg2, float arg8, float arg9, float argA, s32 arg3, s32 arg4); +s32 fn_1_3044(Process *arg0); + +void fn_1_1B7D0(s32 arg0); + +s32 fn_1_1D02C(s32 arg0); + +extern u8 lbl_1_bss_6AC; + +#endif diff --git a/include/dolphin/gx/GXBump.h b/include/dolphin/gx/GXBump.h index 74aeffed..cc2cb976 100644 --- a/include/dolphin/gx/GXBump.h +++ b/include/dolphin/gx/GXBump.h @@ -19,8 +19,9 @@ void GXSetTevIndirect(GXTevStageID tev_stage, GXIndTexStageID ind_stage, GXIndTe GXIndTexBiasSel bias_sel, GXIndTexMtxID matrix_sel, GXIndTexWrap wrap_s, GXIndTexWrap wrap_t, GXBool add_prev, GXBool ind_lod, GXIndTexAlphaSel alpha_sel); -void GXSetTevIndWarp(GXTevStageID tev_stage, GXIndTexStageID ind_stage, GXBool signed_offsets, - GXBool replace_mode, GXIndTexMtxID matrix_sel); +//Must be implicit to match m455dll +//void GXSetTevIndWarp(GXTevStageID tev_stage, GXIndTexStageID ind_stage, GXBool signed_offsets, +// GXBool replace_mode, GXIndTexMtxID matrix_sel); void GXSetTevIndTile (GXTevStageID tev_stage, GXIndTexStageID ind_stage, u16 tilesize_s, u16 tilesize_t, diff --git a/include/game/window.h b/include/game/window.h index 85be8616..a2ff8eb1 100644 --- a/include/game/window.h +++ b/include/game/window.h @@ -109,9 +109,7 @@ s16 HuWinChoiceGet(s16 window, s16 start_choice); s16 HuWinChoiceNumGet(s16 window); void HuWinChoiceDisable(s16 window, s16 choice); s16 HuWinChoiceNowGet(s16 window); -#ifndef HUWIN_USE_OLD_DEFS void HuWinMesWait(s16 window); -#endif s16 HuWinAnimSet(s16 window, AnimData *anim, s16 bank, float x, float y); s16 HuWinSprSet(s16 window, s16 sprite, float x, float y); void HuWinSprPosSet(s16 window, s16 index, float x, float y); diff --git a/src/REL/m420dll/rand.c b/src/REL/m420dll/rand.c new file mode 100644 index 00000000..883af017 --- /dev/null +++ b/src/REL/m420dll/rand.c @@ -0,0 +1,11 @@ +#include "dolphin/types.h" + +u32 lbl_1_bss_A48; + +void fn_1_8934 (u32 seed) { + lbl_1_bss_A48 = seed; +} + +s32 fn_1_8944(void) { + return (lbl_1_bss_A48 = (lbl_1_bss_A48 * 0x41C64E6D) + 0x3039) / 65536 & 0x7FFF; +} \ No newline at end of file diff --git a/src/REL/m455Dll/main.c b/src/REL/m455Dll/main.c index 4fe5b14f..3a41ee0b 100644 --- a/src/REL/m455Dll/main.c +++ b/src/REL/m455Dll/main.c @@ -12,17 +12,13 @@ #include "game/minigame_seq.h" #include "game/gamework_data.h" #include "game/chrman.h" +#include "REL/m455Dll.h" #include "ext_math.h" #include "math.h" #include "rel_sqrt_consts.h" -void fn_1_32C4(Process *objman); -void fn_1_340C(void); -void fn_1_6698(Vec *arg0, float arg1, float arg2, s32 arg3); -float fn_1_687C(void); -void fn_1_6CB0(Vec *arg0, float arg1); typedef struct camera_view_params { float zoom; diff --git a/src/REL/m455Dll/stage.c b/src/REL/m455Dll/stage.c new file mode 100644 index 00000000..c7873251 --- /dev/null +++ b/src/REL/m455Dll/stage.c @@ -0,0 +1,1807 @@ +#include "game/object.h" +#include "game/objsub.h" +#include "game/hsfman.h" +#include "game/hsfdraw.h" +#include "game/hsfanim.h" + +#include "game/hsfmotion.h" +#include "game/pad.h" + +#include "game/wipe.h" +#include "game/frand.h" +#include "game/audio.h" +#include "game/minigame_seq.h" +#include "game/gamework_data.h" +#include "game/chrman.h" +#include "game/sprite.h" + +#include "REL/m455Dll.h" + +#include "ext_math.h" +#include "math.h" + +Process *lbl_1_bss_70; +omObjData *lbl_1_bss_6C; +omObjData *lbl_1_bss_68; +omObjData *lbl_1_bss_64; +omObjData *lbl_1_bss_60; +omObjData *lbl_1_bss_5C; +omObjData *lbl_1_bss_58; +Vec lbl_1_bss_4C; + +typedef struct struct_bss48 { + AnimData *unk0[4]; + s32 unk10[4]; + Vec unk20; +} StructBss48; + +StructBss48 *lbl_1_bss_48; + +Vec lbl_1_data_1D8[4] = { + { -460, 0, 150 }, + { 460, 0, 150 }, + { -460, 0, -150 }, + { 460, 0, -150 }, +}; + +GXColor lbl_1_data_208 = { 255, 255, 255, 255 }; + +typedef struct struct_data20C { + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; + BOOL unk10; +} StructData20C; + +StructData20C lbl_1_data_20C[4] = { + { 400, 400, 400, 400, FALSE }, + { 640, 480, 320, 240, TRUE }, + { 640, 480, 640, 480, FALSE }, + { 640, 480, 320, 240, TRUE }, +}; + +void fn_1_8EAC(void); + +void fn_1_6914(omObjData *object); +void fn_1_7280(omObjData *object); +void fn_1_75C0(omObjData *object); +void fn_1_7C48(omObjData *object); +void fn_1_891C(omObjData *object); + +omObjData *fn_1_347C(void); + +void fn_1_32C4(Process *objman) +{ + lbl_1_bss_70 = objman; + fn_1_8EAC(); + lbl_1_bss_68 = omAddObjEx(lbl_1_bss_70, 50, 0, 0, -1, fn_1_6914); + lbl_1_bss_64 = omAddObjEx(lbl_1_bss_70, 50, 8, 0, -1, fn_1_7280); + lbl_1_bss_60 = omAddObjEx(lbl_1_bss_70, 50, 1, 0, -1, fn_1_75C0); + lbl_1_bss_5C = omAddObjEx(lbl_1_bss_70, 50, 0, 0, -1, fn_1_7C48); + lbl_1_bss_58 = omAddObjEx(lbl_1_bss_70, 50, 0, 0, -1, fn_1_891C); + lbl_1_bss_6C = fn_1_347C(); +} + +void fn_1_4104(omObjData *object); + +void fn_1_6C60(omObjData *object); +void fn_1_7430(omObjData *object); +void fn_1_7974(omObjData *object); +void fn_1_8474(omObjData *object); + +void fn_1_9168(void); + +void fn_1_340C(void) +{ + fn_1_4104(lbl_1_bss_6C); + fn_1_9168(); + fn_1_6C60(lbl_1_bss_68); + fn_1_7430(lbl_1_bss_64); + fn_1_7974(lbl_1_bss_60); + fn_1_8474(lbl_1_bss_5C); +} + +typedef struct work_347C_unk4 { + void *unk0; + u32 unk4; + BOOL unk8; + s32 unkC; + s32 unk10; + s32 unk14; + s32 unk18; +} Work347CUnk4; + +typedef struct work_347C_unk74 { + Vec unk0; + Vec unkC; + float unk18; + u16 unk1C; + u16 unk1E; +} Work347CUnk74; + +typedef struct work_347C { + s32 unk0; + Work347CUnk4 unk4[4]; + Work347CUnk74 unk74[64]; + float unk874[26][2]; + float unk944[26][2]; + void *unkA14; + u32 unkA18; + AnimData *unkA1C[9]; + float unkA40; + float unkA44; + u32 unkA48; + u32 unkA4C; + u32 unkA50; + float unkA54; + float unkA58; +} Work347C; + +void fn_1_3DDC(omObjData *object); + +void fn_1_4180(ModelData *model, Mtx matrix); +void fn_1_49AC(ModelData *model, Mtx matrix); +void fn_1_4E64(ModelData *model, Mtx matrix); + +omObjData *fn_1_347C(void) +{ + omObjData *object = omAddObjEx(lbl_1_bss_70, 127, 15, 0, -1, fn_1_3DDC); + Work347C *work = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work347C), MEMORY_DEFAULT_NUM); + Work347C *work2 = work; + Work347CUnk74 *workUnk74 = &work->unk74[0]; + Work347CUnk4 *workUnk4; + s32 id; + ModelData *modelP; + s32 i; + + work->unkA40 = 0; + work->unkA44 = 0; + work->unkA48 = 0; + work->unkA4C = 0; + work->unkA50 = 0; + work->unkA54 = 0; + work->unkA58 = 0; + + object->model[0] = id = Hu3DHookFuncCreate(fn_1_4E64); + Hu3DModelCameraSet(id, HU3D_CAM0); + Hu3DModelLayerSet(id, 5); + modelP = &Hu3DData[id]; + modelP->unk_120 = work; + work->unkA1C[4] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 21), MEMORY_DEFAULT_NUM)); + work->unkA1C[5] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 22), MEMORY_DEFAULT_NUM)); + work->unkA1C[6] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 23), MEMORY_DEFAULT_NUM)); + work->unkA1C[7] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 24), MEMORY_DEFAULT_NUM)); + work->unkA1C[0] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 17), MEMORY_DEFAULT_NUM)); + work->unkA1C[1] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 18), MEMORY_DEFAULT_NUM)); + work->unkA1C[2] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 19), MEMORY_DEFAULT_NUM)); + work->unkA1C[3] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 20), MEMORY_DEFAULT_NUM)); + work->unkA1C[8] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 25), MEMORY_DEFAULT_NUM)); + object->model[1] = id = Hu3DHookFuncCreate(fn_1_4180); + Hu3DModelCameraSet(id, HU3D_CAM0); + Hu3DModelLayerSet(id, 0); + modelP = &Hu3DData[id]; + modelP->unk_120 = work; + work2->unkA18 = 16384; + work2->unkA14 = HuMemDirectMallocNum(HEAP_SYSTEM, work2->unkA18, MEMORY_DEFAULT_NUM); + DCFlushRange(work2->unkA14, 16384); + GXBeginDisplayList(work2->unkA14, work2->unkA18); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition2f32(-0.5f, -0.5f); + GXTexCoord2f32(0, 0); + GXPosition2f32(0.5f, -0.5f); + GXTexCoord2f32(1, 0); + GXPosition2f32(0.5f, 0.5f); + GXTexCoord2f32(1, 1); + GXPosition2f32(-0.5f, 0.5f); + GXTexCoord2f32(0, 1); + work2->unkA18 = GXEndDisplayList(); + for(i=0; i<26; i++) { + work2->unk874[i][0] = 0; + work2->unk874[i][1] = 0; + work2->unk944[i][0] = 0; + work2->unk944[i][1] = 0; + } + + object->model[3] = id = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 5)); + Hu3DModelPosSet(id, 0, 0, -5000); + Hu3DModelScaleSet(id, 2, 2, 2); + Hu3DModelCameraSet(id, HU3D_CAM0); + Hu3DModelLayerSet(id, 1); + id = Hu3DTexScrollCreate(object->model[3], "S3TCsk"); + Hu3DTexScrollPosMoveSet(id, -0.00009166667f, 0, 0); + id = Hu3DTexScrollCreate(object->model[3], "pa_sk3"); + Hu3DTexScrollPosMoveSet(id, -0.00020833335f, 0, 0); + + object->model[4] = id = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 6)); + Hu3DModelPosSet(id, 0, 0, -3000); + Hu3DModelScaleSet(id, 1.2f, 1.2f, 1.2f); + Hu3DModelCameraSet(id, HU3D_CAM0); + Hu3DModelLayerSet(id, 1); + + object->model[8] = id = Hu3DHookFuncCreate(fn_1_49AC); + Hu3DModelCameraSet(id, HU3D_CAM0); + Hu3DModelLayerSet(id, 2); + modelP = &Hu3DData[id]; + modelP->unk_120 = work; + + object->model[10] = id = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 0)); + Hu3DModelPosSet(id, 0, 0, 0); + Hu3DModelCameraSet(id, HU3D_CAM0); + Hu3DModelLayerSet(id, 3); + Hu3DModelShadowMapSet(object->model[10]); + for(i=0; i<4; i++) { + + object->model[i+11] = id = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 1)); + Hu3DModelCameraSet(object->model[i+11], HU3D_CAM0); + Hu3DModelLayerSet(object->model[i+11], 3); + Hu3DModelPosSet(object->model[i+11], lbl_1_data_1D8[i].x, lbl_1_data_1D8[i].y, lbl_1_data_1D8[i].z); + Hu3DModelAttrSet(object->model[i+11], HU3D_MOTATTR_SHAPE_LOOP); + Hu3DMotionShapeTimeSet(object->model[i+11], (0.25*i)*Hu3DMotionShapeMaxTimeGet(object->model[i+11])); + } + modelP = &Hu3DData[object->model[0]]; + workUnk4 = &work2->unk4[0]; + for(i=0; i<4; i++, workUnk4++) { + workUnk4->unkC = lbl_1_data_20C[i].unk0; + workUnk4->unk10 = lbl_1_data_20C[i].unk4; + workUnk4->unk14 = lbl_1_data_20C[i].unk8; + workUnk4->unk18 = lbl_1_data_20C[i].unkC; + workUnk4->unk8 = lbl_1_data_20C[i].unk10; + workUnk4->unk4 = GXGetTexBufferSize(workUnk4->unk14, workUnk4->unk18, GX_TF_RGB565, GX_FALSE, GX_FALSE); + workUnk4->unk0 = HuMemDirectMallocNum(HEAP_DATA, workUnk4->unk4, modelP->unk_48); + memset(workUnk4->unk0, 0, workUnk4->unk4); + DCFlushRange(workUnk4->unk0, workUnk4->unk4); + } + for(i=0; i<64; i++, workUnk74++) { + workUnk74->unk0.x = workUnk74->unk0.y = workUnk74->unk0.z = 0; + workUnk74->unkC.x = 0; + workUnk74->unkC.y = 0; + workUnk74->unkC.z = 1; + workUnk74->unk18 = 0.016666668f; + workUnk74->unk1C = 60; + workUnk74->unk1E = 0; + } + return object; +} + +void fn_1_9CFC(float arg0); + +void fn_1_3DDC(omObjData *object) +{ + Work347C *work = object->data; + Work347C *work2 = work; + s32 i; + if((work->unkA50 = work->unkA50+(0.007874016f*((s32)frand() & 0x7F)*3.0f)) > 360) { + work->unkA50 -= 360; + } + work->unkA44 = (25+work->unkA40)+(5.0*sind(work->unkA50)); + Hu3DModelPosSet(object->model[10], 0, work->unkA44, 0); + for(i=0; i<4; i++) { + Hu3DModelPosSet(object->model[i+11], lbl_1_data_1D8[i].x, work->unkA44+lbl_1_data_1D8[i].y, lbl_1_data_1D8[i].z); + } + work->unkA54 += 0.001f; + work->unkA58 += 0.001f; + work->unkA48++; + work->unkA4C++; + if(work->unkA4C >= 60.0f && work->unkA4C <= 81.0f) { + float time = 1-((work->unkA4C-60.0f)/21.0f); + if(time < 0.0f) { + time = 0.0f; + } + fn_1_9CFC(time); + } +} + +void fn_1_4104(omObjData *object) +{ + Work347C *work = object->data; + HuSprAnimKill(work->unkA1C[0]); + HuSprAnimKill(work->unkA1C[1]); + HuSprAnimKill(work->unkA1C[2]); + HuSprAnimKill(work->unkA1C[3]); + HuSprAnimKill(work->unkA1C[6]); + HuSprAnimKill(work->unkA1C[7]); + HuSprAnimKill(work->unkA1C[4]); + HuSprAnimKill(work->unkA1C[5]); + HuSprAnimKill(work->unkA1C[8]); +} + +GXColor lbl_1_data_26A = { 255, 255, 255, 32 }; +GXColor lbl_1_data_26E = { 255, 255, 255, 10 }; +GXColor lbl_1_data_272 = { 0, 126, 126, 255 }; +Vec lbl_1_data_278[4] = { + -1000, 50, 1000, + -1000, 50, -1000, + 1000, 50, -1000, + 1000, 50, 1000 +}; + +Vec lbl_1_data_2A8[26] = { + -1500, 0, 1000, + -1400, 0, 1000, + 0, 0, 1000, + 1400, 0, 1000, + 1500, 0, 1000, + -1500, 0, -500, + -1400, 0, -500, + 0, 0, -500, + 1400, 0, -500, + 1500, 0, -500, + -1500, 0, -2000, + -1400, 0, -2000, + 0, 0, -2000, + 1400, 0, -2000, + 1500, 0, -2000, + -1500, 0, -5000, + -1400, 0, -5000, + 0, 0, -5000, + 1400, 0, -5000, + 1500, 0, -5000, + -2000, 0, -500, + -2500, 0, -2000, + -3000, 0, -5000, + 2000, 0, -500, + 2500, 0, -2000, + 3000, 0, -5000 +}; + +GXColor lbl_1_data_3E0[26] = { + { 96, 128, 255, 255 }, + { 128, 160, 255, 32 }, + { 128, 160, 255, 32 }, + { 128, 160, 255, 32 }, + { 96, 128, 255, 255 }, + { 24, 48, 255, 255 }, + { 96, 128, 255, 32 }, + { 128, 160, 255, 32 }, + { 96, 128, 255, 32 }, + { 24, 48, 255, 255 }, + { 24, 48, 255, 255 }, + { 24, 48, 255, 255 }, + { 96, 128, 255, 255 }, + { 24, 48, 255, 255 }, + { 24, 48, 255, 255 }, + { 8, 24, 143, 255 }, + { 8, 24, 143, 255 }, + { 8, 24, 143, 255 }, + { 8, 24, 143, 255 }, + { 8, 24, 143, 255 }, + { 24, 48, 255, 255 }, + { 24, 48, 255, 255 }, + { 24, 48, 255, 255 }, + { 24, 48, 255, 255 }, + { 24, 48, 255, 255 }, + { 24, 48, 255, 255 } +}; + +float lbl_1_data_448[26][2] = { + 0, 1, + 0.033333335, 1, + 0.5, 1, + 0.96666664, 1, + 1, 1, + 0, 0.5, + 0.033333335, 0.5, + 0.5, 0.5, + 0.96666664, 0.5, + 1, 0.5, + 0, 0, + 0.033333335, 0, + 0.5, 0, + 0.96666664, 0, + 1, 0, + 0, 0, + 0.033333335, 0, + 0.5, 0, + 0.96666664, 0, + 1, 0, + -0.15, 0.5, + -0.33, 0, + -0.49, 0, + 1.15, 0.5, + 1.33, 0, + 1.49, 0 +}; + +float lbl_1_data_518[26][2] = { + 0, 30, + 0.5, 30, + 7.5, 30, + 14.5, 30, + 15, 30, + 0, 15, + 0.5, 15, + 7.5, 15, + 14.5, 15, + 15, 15, + 0, 7.5, + 0.5, 7.5, + 7.5, 7.5, + 14.5, 7.5, + 15, 7.5, + 0, 0, + 0.5, 0, + 7.5, 0, + 14.5, 0, + 15, 0, + -2.25, 15, + -4.9500003, 7.5, + -7.3500004, 0, + 17.25, 15, + 19.95, 7.5, + 22.35, 0 +}; + +float lbl_1_data_5E8[2][3] = { + 0, 0, 0.5, + 0, 0.5, 0 +}; + +GXColor lbl_1_data_600 = { 80, 80, 80, 80 }; + +Vec lbl_1_data_604[9] = { + -1500, 0, -5000, + 0, 0, -5000, + 1500, 0, -5000, + -1500, 0, -3000, + 0, 0, -3000, + 1500, 0, -3000, + -1500, 0, 1000, + 0, 0, 1000, + 1500, 0, 1000 +}; + +GXColor lbl_1_data_670[9] = { + { 255, 255, 255, 0 }, + { 255, 255, 255, 0 }, + { 255, 255, 255, 0 }, + { 255, 255, 255, 0 }, + { 255, 255, 255, 255 }, + { 255, 255, 255, 0 }, + { 255, 255, 255, 0 }, + { 255, 255, 255, 255 }, + { 255, 255, 255, 0 }, +}; + +GXColor lbl_1_data_694 = { 255, 165, 89, 178 }; +GXColor lbl_1_data_698 = { 153, 114, 89, 178 }; +GXColor lbl_1_data_69C = { 0, 0, 0, 255 }; + +void fn_1_6088(Work347CUnk4 *arg0, s32 arg1); + +void fn_1_4180(ModelData *model, Mtx matrix) +{ + Work347C *work = model->unk_120; + Work347C *work2 = work; + Work347CUnk74 *workUnk74 = &work2->unk74[0]; + Work347CUnk4 *workUnk4 = &work2->unk4[0]; + s32 i; + Mtx proj; + Mtx modelview; + MTXOrtho(proj, 0, 480, 0, 640, 0, 100); + GXSetProjection(proj, GX_ORTHOGRAPHIC); + MTXIdentity(modelview); + GXLoadPosMtxImm(modelview, GX_PNMTX0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_272); + GXSetTevColor(GX_TEVREG0, lbl_1_data_26E); + GXSetNumTexGens(1); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0); + GXSetNumTevStages(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_RASC, GX_CC_TEXC, GX_CC_A0, 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_KONST); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetScissor(0, 0, 400, 400); + HuSprTexLoad(work->unkA1C[4], 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_U16, 0); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition2u16(0, 0); + GXTexCoord2f32(work->unkA54, work->unkA58); + GXPosition2u16(400, 0); + GXTexCoord2f32(work->unkA54+7, work->unkA58); + GXPosition2u16(400, 400); + GXTexCoord2f32(work->unkA54+7, work->unkA58+7); + GXPosition2u16(0, 400); + GXTexCoord2f32(work->unkA54, work->unkA58+7); + GXEnd(); + GXSetNumTexGens(1); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + GXSetNumTevStages(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC); + 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); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + HuSprTexLoad(work->unkA1C[8], 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXClearVtxDesc(); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_F32, 0); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + workUnk74 = &work2->unk74[0]; + for(i=0; i<64; i++, workUnk74++) { + float scale; + float accel; + if(workUnk74->unk1E == 0) { + continue; + } + scale = 128*(workUnk74->unkC.x*(0.2f+cosd(workUnk74->unk1E*workUnk74->unk18*90.0f))); + accel = workUnk74->unk1E*workUnk74->unk18; + lbl_1_data_26A.a = workUnk74->unkC.z*sind((accel*accel)*90.0f)*255.0; + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_26A); + MTXScale(modelview, 0.5f*scale, 0.5f*scale, 1.0f); + mtxRotCat(modelview, 0, 0, workUnk74->unkC.y); + mtxTransCat(modelview, 400*(workUnk74->unk0.x+1500)/3000, 400*(workUnk74->unk0.z - -2000)/3000, 0); + GXLoadPosMtxImm(modelview, GX_PNMTX0); + GXCallDisplayList(work2->unkA14, work2->unkA18); + if(!omPauseChk()) { + workUnk74->unk1E--; + } + } + workUnk4 = &work2->unk4[0]; + fn_1_6088(workUnk4, 1); +} + +void fn_1_59A0(ModelData *model, Mtx matrix); + +void fn_1_49AC(ModelData *model, Mtx matrix) +{ + Work347C *work; + Work347C *work2; + Work347CUnk4 *workUnk4; + fn_1_59A0(model, matrix); + work = model->unk_120; + work2 = work; + workUnk4 = &work2->unk4[1]; + fn_1_6088(workUnk4, 0); +} + +void fn_1_6144(Work347CUnk4 *arg0, float arg1, float arg2, float arg3); + +void fn_1_4A14(ModelData *model, Mtx matrix) +{ + Work347C *work = model->unk_120; + Work347C *work2 = work; + Work347CUnk4 *workUnk4 = &work2->unk4[0]; + + fn_1_6144(workUnk4, 200, 0, 0.5f); + workUnk4 = &work2->unk4[1]; + fn_1_6144(workUnk4, 0, 0, 0.5f); + workUnk4 = &work2->unk4[2]; + fn_1_6144(workUnk4, 0, 150, 0.25f); + workUnk4 = &work2->unk4[3]; + fn_1_6144(workUnk4, 0, 300, 0.5f); +} + +void fn_1_6594(s16 arg0, Work347CUnk4 *arg1, GXTexWrapMode arg2, s32 arg3, BOOL arg4); + +void fn_1_4B1C(ModelData *model, Mtx matrix) +{ + CameraData *cameraP = &Hu3DCamera[Hu3DCameraNo]; + Work347C *work = model->unk_120; + Work347C *work2 = work; + Work347CUnk4 *workUnk4 = &work2->unk4[2]; + float fov; + Mtx proj; + Mtx texMtx; + Mtx projCamera; + s16 lightMask; + s16 i; + + fn_1_6088(workUnk4, 0); + GXLoadPosMtxImm(matrix, GX_PNMTX0); + fov = cameraP->fov; + if(fov <= 0.0f) { + fov = 45; + } + MTXLightPerspective(proj, fov, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); + MTXInverse(Hu3DCameraMtx, texMtx); + MTXConcat(texMtx, Hu3DCameraMtx, texMtx); + MTXConcat(proj, Hu3DCameraMtx, projCamera); + MTXConcat(projCamera, texMtx, texMtx); + GXLoadTexMtxImm(texMtx, GX_TEXMTX0, GX_MTX3x4); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0); + lightMask = Hu3DLightSet(model, &Hu3DCameraMtx, &Hu3DCameraMtxXPose, 4); + GXSetNumTevStages(1); + GXSetNumTexGens(1); + GXSetNumChans(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_208); + GXSetZMode(GX_TRUE, GX_GREATER, GX_FALSE); + GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + workUnk4 = &work2->unk4[1]; + fn_1_6594(0, workUnk4, 0, 0, 0); + GXClearVtxDesc(); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetArray(GX_VA_POS, lbl_1_data_278, sizeof(Vec)); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + for(i=0; i<4; i++) { + GXPosition1x16(i); + } + GXEnd(); + workUnk4 = &work2->unk4[3]; + fn_1_6088(workUnk4, 0); + workUnk4 = &work2->unk4[2]; + fn_1_6594(0, workUnk4, 0, 0, 0); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + for(i=0; i<4; i++) { + GXPosition1x16(i); + } + GXEnd(); +} + +void fn_1_4E64(ModelData *model, Mtx matrix) +{ + CameraData *cameraP = &Hu3DCamera[Hu3DCameraNo]; + Work347C *work = model->unk_120; + Work347C *work2 = work; + Work347CUnk4 *workUnk4 = &work2->unk4[2]; + Mtx invXPose; + Mtx proj; + Mtx texMtx; + Mtx projCamera; + float sp14; + float sp10; + float fov; + s16 i; + fn_1_4B1C(model, matrix); + sp14 = 1.5f; + sp10 = 0; + GXLoadPosMtxImm(matrix, GX_PNMTX0); + MTXInvXpose(matrix, invXPose); + GXLoadNrmMtxImm(invXPose, GX_PNMTX0); + fov = cameraP->fov; + if(fov <= 0.0f) { + fov = 45; + } + MTXLightPerspective(proj, fov, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); + MTXInverse(Hu3DCameraMtx, texMtx); + MTXConcat(texMtx, Hu3DCameraMtx, texMtx); + MTXConcat(proj, Hu3DCameraMtx, projCamera); + MTXConcat(projCamera, texMtx, texMtx); + GXLoadTexMtxImm(texMtx, GX_TEXMTX0, GX_MTX3x4); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0); + GXSetTexCoordGen(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEX1, GX_IDENTITY); + GXSetNumTevStages(2); + GXSetNumTexGens(3); + GXSetNumChans(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_TEXC, GX_CC_RASC, GX_CC_RASA, 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); + GXSetTevColor(GX_TEVREG0, lbl_1_data_600); + GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_ZERO, GX_CC_C0, GX_CC_TEXA, GX_CC_CPREV); + GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_VTX, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_208); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0); + GXSetBlendMode(GX_BM_NONE, GX_BL_ONE, GX_BL_ZERO, GX_LO_NOOP); + workUnk4 = &work2->unk4[3]; + fn_1_6594(0, workUnk4, 0, 0, 0); + HuSprTexLoad(work->unkA1C[3], 0, 1, GX_REPEAT, GX_REPEAT, GX_LINEAR); + workUnk4 = &work2->unk4[0]; + fn_1_6594(2, workUnk4, 0, 0, 1); + GXSetTexCoordGen(GX_TEXCOORD2, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + GXSetNumIndStages(1); + GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD2, GX_TEXMAP2); + GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1); + GXSetTevIndWarp(GX_TEVSTAGE0, GX_INDTEXSTAGE0, GX_TRUE, GX_FALSE, GX_ITM_1); + GXSetIndTexMtx(GX_ITM_1, lbl_1_data_5E8, -1); + for(i=0; i<26; i++) { + work2->unk944[i][0] -= 0.007874016f*((s32)frand() & 0x7F)*0.005f; + work2->unk944[i][1] += 0.007874016f*((s32)frand() & 0x7F)*0.005f; + work2->unk874[i][0] = work2->unk944[i][0]+lbl_1_data_518[i][0]; + work2->unk874[i][1] = work2->unk944[i][1]+lbl_1_data_518[i][1]; + } + DCFlushRange(&work2->unk874[0][0], sizeof(work2->unk874)); + GXClearVtxDesc(); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + + GXSetArray(GX_VA_POS, lbl_1_data_2A8, sizeof(Vec)); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, lbl_1_data_3E0, sizeof(GXColor)); + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_TEX0, lbl_1_data_448, sizeof(float)*2); + GXSetVtxDesc(GX_VA_TEX1, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX1, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_TEX1, &work2->unk874[0][0], sizeof(float)*2); + GXBegin(GX_QUADS, GX_VTXFMT0, 48); + for(i=0; i<12; i++) { + s16 index; + if(i == 4) { + index = 12; + } else if(i == 9) { + index = 13; + } else { + index = i; + } + GXPosition1x16(index+0); + GXColor1x16(index+0); + GXTexCoord1x16(index+0); + GXTexCoord1x16(index+0); + GXPosition1x16(index+5); + GXColor1x16(index+5); + GXTexCoord1x16(index+5); + GXTexCoord1x16(index+5); + GXPosition1x16(index+6); + GXColor1x16(index+6); + GXTexCoord1x16(index+6); + GXTexCoord1x16(index+6); + GXPosition1x16(index+1); + GXColor1x16(index+1); + GXTexCoord1x16(index+1); + GXTexCoord1x16(index+1); + } + GXEnd(); + GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 8); + GXPosition1x16(22); + GXColor1x16(22); + GXTexCoord1x16(22); + GXTexCoord1x16(22); + GXPosition1x16(15); + GXColor1x16(15); + GXTexCoord1x16(15); + GXTexCoord1x16(15); + GXPosition1x16(21); + GXColor1x16(21); + GXTexCoord1x16(21); + GXTexCoord1x16(21); + GXPosition1x16(10); + GXColor1x16(10); + GXTexCoord1x16(10); + GXTexCoord1x16(10); + GXPosition1x16(20); + GXColor1x16(20); + GXTexCoord1x16(20); + GXTexCoord1x16(20); + GXPosition1x16(5); + GXColor1x16(5); + GXTexCoord1x16(5); + GXTexCoord1x16(5); + GXPosition1x16(0); + GXColor1x16(0); + GXTexCoord1x16(0); + GXTexCoord1x16(0); + GXPosition1x16(0); + GXColor1x16(0); + GXTexCoord1x16(0); + GXTexCoord1x16(0); + GXEnd(); + GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 8); + GXPosition1x16(19); + GXColor1x16(19); + GXTexCoord1x16(19); + GXTexCoord1x16(19); + GXPosition1x16(25); + GXColor1x16(25); + GXTexCoord1x16(25); + GXTexCoord1x16(25); + GXPosition1x16(14); + GXColor1x16(14); + GXTexCoord1x16(14); + GXTexCoord1x16(14); + GXPosition1x16(24); + GXColor1x16(24); + GXTexCoord1x16(24); + GXTexCoord1x16(24); + GXPosition1x16(9); + GXColor1x16(9); + GXTexCoord1x16(9); + GXTexCoord1x16(9); + GXPosition1x16(23); + GXColor1x16(23); + GXTexCoord1x16(23); + GXTexCoord1x16(23); + GXPosition1x16(4); + GXColor1x16(4); + GXTexCoord1x16(4); + GXTexCoord1x16(4); + GXPosition1x16(4); + GXColor1x16(4); + GXTexCoord1x16(4); + GXTexCoord1x16(4); + GXEnd(); + GXSetNumIndStages(0); + GXSetTevDirect(GX_TEVSTAGE0); + GXSetTevDirect(GX_TEVSTAGE1); +} + +void fn_1_59A0(ModelData *model, Mtx matrix) +{ + s32 sp10 = 0; + Work347C *work = model->unk_120; + float scale = 1.5f; + float x = 0; + Mtx temp; + Mtx final; + MTXTrans(final, x, -300, 0); + GXSetTevColor(GX_TEVREG0, lbl_1_data_694); + MTXScale(temp, scale, 1, 1); + MTXConcat(final, temp, final); + MTXConcat(Hu3DCameraMtx, final, final); + GXLoadPosMtxImm(final, GX_PNMTX0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_208); + HuSprTexLoad(work->unkA1C[0], 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + HuSprTexLoad(work->unkA1C[1], 0, 1, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXSetNumTexGens(2); + MTXRotDeg(final, 'X', 90.0f); + x = 0.004f*scale; + MTXScale(temp, x, -0.004f, 0.004f); + MTXConcat(final, temp, final); + MTXTrans(temp, (work->unkA48%1024)/(512.0f*x), 0, 1.2499999f*(work->unkA48%400)); + MTXConcat(final, temp, final); + GXLoadTexMtxImm(final, GX_TEXMTX0, GX_MTX2x4); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_POS, GX_TEXMTX0); + MTXRotDeg(final, 'X', 90.0f); + x = 0.004f*scale; + MTXScale(temp, x, -0.004f, 0.004f); + MTXConcat(final, temp, final); + MTXTrans(temp, (work->unkA48%300)/(150.0f*x), 0, 0); + MTXConcat(final, temp, final); + GXLoadTexMtxImm(final, GX_TEXMTX1, GX_MTX2x4); + GXSetTexCoordGen(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_POS, GX_TEXMTX1); + GXSetNumTevStages(2); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR_NULL); + GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_CPREV); + GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_TEXA, GX_CA_APREV, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_SET); + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_POS, lbl_1_data_604, sizeof(Vec)); + GXSetArray(GX_VA_CLR0, lbl_1_data_670, sizeof(GXColor)); + GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 6); + GXPosition1x8(0); + GXColor1x8(0); + GXPosition1x8(1); + GXColor1x8(1); + GXPosition1x8(3); + GXColor1x8(3); + GXPosition1x8(4); + GXColor1x8(4); + GXPosition1x8(6); + GXColor1x8(6); + GXPosition1x8(7); + GXColor1x8(7); + GXEnd(); + GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 6); + GXPosition1x8(1); + GXColor1x8(1); + GXPosition1x8(2); + GXColor1x8(2); + GXPosition1x8(4); + GXColor1x8(4); + GXPosition1x8(5); + GXColor1x8(5); + GXPosition1x8(7); + GXColor1x8(7); + GXPosition1x8(8); + GXColor1x8(8); + GXEnd(); +} + +void fn_1_6088(Work347CUnk4 *arg0, s32 arg1) +{ + GXSetTexCopySrc(0, 0, arg0->unkC, arg0->unk10); + GXSetTexCopyDst(arg0->unk14, arg0->unk18, GX_TF_RGB565, arg0->unk8); + GXSetCopyClear(lbl_1_data_69C, GX_MAX_Z24); + GXCopyTex(arg0->unk0, arg1); + +} + +void fn_1_6144(Work347CUnk4 *fbWork, float x1, float y1, float scale) +{ + float x2 = x1+(fbWork->unk14*scale); + float y2 = y1+(fbWork->unk18*scale); + Mtx44 proj; + Mtx modelview; + GXTexObj texObj; + GXColor color; + GXInitTexObj(&texObj, fbWork->unk0, fbWork->unk14, fbWork->unk18, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXInitTexObjLOD(&texObj, GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); + GXLoadTexObj(&texObj, GX_TEXMAP0); + MTXOrtho(proj, 0, 480, 0, 640, 0, 10); + GXSetProjection(proj, GX_ORTHOGRAPHIC); + 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); + color.a = 255; + GXSetTevColor(GX_TEVREG0, color); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + 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_KONST); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumTexGens(1); + GXSetNumTevStages(1); + MTXIdentity(modelview); + GXLoadPosMtxImm(modelview, GX_PNMTX0); + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(x1, y1, 0); + GXTexCoord2f32(0, 0); + GXPosition3f32(x2, y1, 0); + GXTexCoord2f32(1, 0); + GXPosition3f32(x2, y2, 0); + GXTexCoord2f32(1, 1); + GXPosition3f32(x1, y2, 0); + GXTexCoord2f32(0, 1); + GXEnd(); +} + +void fn_1_6594(s16 arg0, Work347CUnk4 *arg1, GXTexWrapMode arg2, s32 arg3, BOOL arg4) +{ + GXTexObj texObj; + GXInitTexObj(&texObj, arg1->unk0, arg1->unk14, arg1->unk18, GX_TF_RGB565, arg2, arg2, FALSE); + if(arg4) { + GXInitTexObjLOD(&texObj, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); + } else { + GXInitTexObjLOD(&texObj, GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); + } + GXLoadTexObj(&texObj, arg0); +} + +s32 fn_1_6698(Vec *arg0, float arg1, float arg2, s32 arg3) +{ + Work347C *work; + Work347C *work2; + Work347CUnk74 *workUnk74; + s32 i; + if(!lbl_1_bss_6C) { + return -1; + } + work = lbl_1_bss_6C->data; + work2 = work; + workUnk74 = &work->unk74[0]; + for(i=0; i<64; i++, workUnk74++) { + if(workUnk74->unk1E == 0) { + break; + } + } + if(i >= 64) { + return -1; + } + workUnk74->unk0 = *arg0; + if(arg1 < 0.0f) { + workUnk74->unkC.x = 1; + } else { + workUnk74->unkC.x = arg1; + } + if(arg2 < 0.0f) { + workUnk74->unkC.z = 1; + } else { + workUnk74->unkC.z = arg2; + } + if(arg3 < 0) { + workUnk74->unk1C = 60; + } else { + workUnk74->unk1C = arg3; + } + workUnk74->unkC.y = (s32)frand()%360; + workUnk74->unk1E = workUnk74->unk1C; + workUnk74->unk18 = 1.0f/workUnk74->unk1C; + return i; +} + +float fn_1_687C(void) +{ + if(!lbl_1_bss_6C) { + return 0; + } else { + Work347C *work = lbl_1_bss_6C->data; + return work->unkA44; + } +} + +float fn_1_68C8(void) +{ + if(!lbl_1_bss_6C) { + return 0; + } else { + Work347C *work = lbl_1_bss_6C->data; + return work->unkA40; + } +} + +typedef struct work6914 { + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; + AnimData *unk10; + Vec unk14; + Vec unk20; + Vec unk2C; +} Work6914; + +void fn_1_6A6C(omObjData *object); + +void fn_1_6914(omObjData *object) +{ + Work6914 *work; + s32 i; + AnimData *anim; + work = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work6914)*8, MEMORY_DEFAULT_NUM); + memset(work, 0, sizeof(Work6914)*8); + anim = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 26), MEMORY_DEFAULT_NUM)); + for(i=0; i<8; i++, work++) { + work->unk10 = anim; + work->unk0 = i; + work->unk4 = Hu3DParticleCreate(work->unk10, 32); + Hu3DModelCameraSet(work->unk4, HU3D_CAM0); + Hu3DModelLayerSet(work->unk4, 6); + Hu3DModelAttrSet(work->unk4, HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(work->unk4, HU3D_ATTR_PARTICLE_KILL); + work->unk8 = 0; + work->unkC = 0; + work->unk14.x = work->unk14.y = work->unk14.z = 0; + work->unk20.x = work->unk20.y = work->unk20.z = 0; + work->unk2C.x = work->unk2C.y = work->unk2C.z = 1; + } + object->func = fn_1_6A6C; +} + +void fn_1_6A6C(omObjData *object) +{ + Work6914 *work = object->data; + s32 i; + for(i=0; i<8; i++, work++) { + if(work->unk8 == 0) { + continue; + } + if(work->unkC > 1) { + ModelData *modelP = &Hu3DData[work->unk4]; + ParticleData *particleP = modelP->unk_120; + HsfanimStruct01 *data = particleP->unk_48; + s32 j; + for(j=0; junk_30; j++, data++) { + if(++data->unk00_s16 > data->unk02) { + s32 alpha = data->unk40.a-1; + if(alpha < 0) { + data->unk2C = 0; + } else { + data->unk40.a = alpha; + } + } + data->unk2C *= 0.975; + data->unk34.x += data->unk08.x; + data->unk34.y += data->unk08.y; + data->unk34.z += data->unk08.z; + data->unk08.y -= 0.3103333379576603; + } + } + if(++work->unkC > 90.0f) { + Hu3DModelAttrSet(work->unk4, HU3D_ATTR_DISPOFF); + work->unk8 = 0; + } else { + Hu3DModelPosSet(work->unk4, work->unk14.x, work->unk14.y, work->unk14.z); + Hu3DModelRotSet(work->unk4, work->unk20.x, work->unk20.y, work->unk20.z); + Hu3DModelScaleSet(work->unk4, work->unk2C.x, work->unk2C.y, work->unk2C.z); + } + } +} + +void fn_1_6C60(omObjData *object) +{ + Work6914 *work = object->data; + AnimData *anim = work->unk10; + anim->useNum = 0; + HuSprAnimKill(anim); +} + +s32 fn_1_6CB0(Vec *arg0, float arg1) +{ + Work6914 *work = lbl_1_bss_68->data; + s32 i; + ModelData *temp_r27; + ParticleData *temp_r28; + HsfanimStruct01 *temp_r30; + + for(i=0; i<8; i++, work++) { + if(work->unk8 == 0) { + break; + } + } + if(i >= 8) { + return -1; + } + Hu3DModelAttrReset(work->unk4, HU3D_ATTR_DISPOFF); + work->unk8 = 1; + work->unkC = 0; + temp_r27 = &Hu3DData[work->unk4]; + temp_r28 = temp_r27->unk_120; + temp_r28->unk_2C = 1; + temp_r30 = temp_r28->unk_48; + for(i=0; iunk_30; i++, temp_r30++) { + float temp_f30 = ((s32)frand()%20)+90; + float temp_f29 = (s32)frand()%360; + float temp_f26 = sind(temp_f30); + float temp_f28 = cosd(temp_f30); + float temp_f25 = 0.75f+0.15f*(0.007874016f*((s32)frand() & 0x7F)); + float temp_f31 = 0.15f; + temp_r30->unk08.x = temp_f31*(0.65f*(50.0*(temp_f28*sind(temp_f29)))); + temp_r30->unk08.z = temp_f31*(0.65f*(50.0*(temp_f28*cosd(temp_f29)))); + temp_r30->unk08.y = temp_f31*(50*temp_f26*temp_f25); + temp_r30->unk00_s16 = 0; + temp_r30->unk02 = ((s32)frand()%16)+45; + temp_r30->unk30 = (s32)frand()%360; + temp_r30->unk2C = 145; + temp_r30->unk34.x = 0.05f*(((s32)frand() & 0x7F)-64); + temp_r30->unk34.y = 0.65f*(((s32)frand() & 0x7F)-64); + temp_r30->unk34.z = 0.05f*(((s32)frand() & 0x7F)-64); + temp_r30->unk40.r = ((s32)frand()%64)+192; + temp_r30->unk40.g = ((s32)frand()%64)+192; + temp_r30->unk40.b = ((s32)frand()%64)+192; + temp_r30->unk40.a = 64; + } + if(arg1 < 0.0f) { + arg1 = 1.0f; + } + work->unk14 = *arg0; + work->unk20.x = work->unk20.y = work->unk20.z = 0; + work->unk2C.x = work->unk2C.y = work->unk2C.z = arg1; + Hu3DModelPosSet(work->unk4, work->unk14.x, work->unk14.y, work->unk14.z); + Hu3DModelRotSet(work->unk4, work->unk20.x, work->unk20.y, work->unk20.z); + Hu3DModelScaleSet(work->unk4, work->unk2C.x, work->unk2C.y, work->unk2C.z); + return i; +} + +void fn_1_7368(omObjData *object); + +void fn_1_7280(omObjData *object) +{ + s32 i; + for(i=0; imdlcnt; i++) { + if(i == 0) { + object->model[i] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 9)); + } else { + object->model[i] = Hu3DModelLink(object->model[0]); + } + Hu3DModelCameraSet(object->model[i], HU3D_CAM0); + Hu3DModelLayerSet(object->model[i], 6); + Hu3DModelAttrSet(object->model[i], HU3D_ATTR_DISPOFF); + + } + object->stat |= 0x100; + object->func = fn_1_7368; +} + +void fn_1_7368(omObjData *object) +{ + s32 i; + for(i=0; imdlcnt; i++) { + ModelData *modelP = &Hu3DData[object->model[i]]; + if(!(modelP->attr & HU3D_ATTR_DISPOFF)) { + if(Hu3DMotionTimeGet(object->model[i]) >= Hu3DMotionMaxTimeGet(object->model[i])) { + Hu3DModelAttrSet(object->model[i], HU3D_ATTR_DISPOFF); + } + } + } +} + +void fn_1_7430(omObjData *object) +{ + +} + +s32 fn_1_7434(Vec *pos, float scale) +{ + s32 i; + for(i=0; imdlcnt; i++) { + ModelData *modelP = &Hu3DData[lbl_1_bss_64->model[i]]; + if(modelP->attr & HU3D_ATTR_DISPOFF) { + break; + } + } + if(i >= lbl_1_bss_64->mdlcnt) { + return -1; + } + Hu3DMotionTimeSet(lbl_1_bss_64->model[i], 0); + Hu3DMotionSpeedSet(lbl_1_bss_64->model[i], 1); + Hu3DModelPosSet(lbl_1_bss_64->model[i], pos->x, pos->y, pos->z); + Hu3DModelScaleSet(lbl_1_bss_64->model[i], scale, scale, scale); + Hu3DModelAttrReset(lbl_1_bss_64->model[i], HU3D_ATTR_DISPOFF); + return i; +} + +void fn_1_76B0(omObjData *object); + +void fn_1_75C0(omObjData *object) +{ + ParticleData *temp_r30; + HsfanimStruct01 *temp_r29; + s32 i; + ModelData *modelP; + AnimData *anim = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 26), MEMORY_DEFAULT_NUM)); + + object->data = anim; + object->model[0] = Hu3DParticleCreate(anim, 64); + Hu3DModelCameraSet(object->model[0], HU3D_CAM0); + Hu3DModelLayerSet(object->model[0], 3); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_PARTICLE_KILL); + modelP = &Hu3DData[object->model[0]]; + temp_r30 = modelP->unk_120; + temp_r29 = temp_r30->unk_48; + temp_r30->unk_2C = 1; + for(i=0; iunk_30; i++, temp_r29++) { + temp_r29->unk2C = 0; + } + object->func = fn_1_76B0; +} + +void fn_1_76B0(omObjData *object) +{ + ModelData *modelP = &Hu3DData[object->model[0]]; + ParticleData *temp_r29 = modelP->unk_120; + HsfanimStruct01 *temp_r30 = temp_r29->unk_48; + s32 i; + for(i=0; iunk_30; i++, temp_r30++) { + if(temp_r30->unk2C <= 0.0f) { + continue; + } + if(++temp_r30->unk00_s16 > 360) { + temp_r30->unk00_s16 -= 360; + } + temp_r30->unk34.x += temp_r30->unk08.x*sind(2.0f*temp_r30->unk00_s16); + temp_r30->unk34.y += temp_r30->unk08.y; + if(temp_r30->unk34.y >= 0.0f) { + fn_1_6698(&temp_r30->unk34, 0.00625f*temp_r30->unk2C, 1, 15); + temp_r30->unk2C = 0; + } + + } +} + +void fn_1_7974(omObjData *object) +{ + AnimData *anim = object->data; + HuSprAnimKill(anim); + Hu3DModelKill(object->model[0]); + object->model[0] = -1; +} + +s32 fn_1_79C8(Vec *pos, float scale) +{ + s32 i; + ModelData *modelP = &Hu3DData[lbl_1_bss_60->model[0]]; + ParticleData *temp_r30 = modelP->unk_120; + HsfanimStruct01 *temp_r31 = temp_r30->unk_48; + for(i=0; iunk_30; i++, temp_r31++) { + if(temp_r31->unk2C <= 0.0f) { + break; + } + } + if(i >= temp_r30->unk_30) { + return -1; + } + if(scale <= 0.0f) { + scale = 1.0f; + } + temp_r31->unk34 = *pos; + temp_r31->unk08.x = (1.5f+(0.2f*(0.007874016f*((s32)frand() & 0x7F))))*0.5f; + temp_r31->unk08.z = (1.5f+(0.2f*(0.007874016f*((s32)frand() & 0x7F)))); + temp_r31->unk08.y = (1.5f+(0.2f*(0.007874016f*((s32)frand() & 0x7F))))*2.0f; + temp_r31->unk00_s16 = (s32)frand()%360; + temp_r31->unk2C = 20*scale; + return i; +} + + +typedef struct work7C48 { + s32 unk0; + s32 unk4; + s32 unk8; + float unkC; + float unk10; + Vec unk14; + Vec unk20; +} Work7C48; + +void fn_1_8050(omObjData *object); + +void fn_1_7C48(omObjData *object) +{ + Work7C48 *workBase = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work7C48)*8, MEMORY_DEFAULT_NUM); + Work7C48 *workP = workBase; + s32 i; + memset(workP, 0, 8*sizeof(Work7C48)); + for(i=0; i<8; i++, workP++) { + switch(i) { + case 0: + workP->unk0 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 10)); + break; + + case 1: + workP->unk0 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 10)); + break; + + default: + if(i & 0x1) { + workP->unk0 = Hu3DModelLink(workBase[0].unk0); + } else { + workP->unk0 = Hu3DModelLink(workBase[1].unk0); + } + break; + } + Hu3DModelScaleSet(workP->unk0, 0.5f, 0.5f, 0.5f); + Hu3DModelCameraSet(workP->unk0, HU3D_CAM0); + Hu3DModelLayerSet(workP->unk0, 1); + workP->unk4 = 0; + workP->unk8 = 0; + workP->unkC = 2; + workP->unk10 = (s32)frand() % 360; + workP->unk14.x = 1500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk14.z = 500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk14.y = -250+(100*(0.3f*i)); + workP->unk20.x = 1500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk20.z = 500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk20.y = workP->unk14.y; + Hu3DModelPosSet(workP->unk0, workP->unk14.x, workP->unk14.y, workP->unk14.z); + Hu3DModelRotSet(workP->unk0, 0, workP->unk10, 0); + } + object->func = fn_1_8050; +} + +float fn_1_9F18(float start, float end, float weight); + +void fn_1_8050(omObjData *object) +{ + Work7C48 *workP = object->data; + s32 i; + for(i=0; i<8; i++, workP++) { + float dx; + float dz; + float vel; + float angle; + if(workP->unk4 == 0) { + vel = 1+(0.5*sind((workP->unk8*5)%180)); + } else { + vel = 3; + } + workP->unk14.x += vel*(workP->unkC*sind(workP->unk10)); + workP->unk14.z += vel*(workP->unkC*cosd(workP->unk10)); + dx = workP->unk20.x-workP->unk14.x; + dz = workP->unk20.z-workP->unk14.z; + angle = atan2d(dx, dz); + workP->unk10 = fn_1_9F18(angle, workP->unk10, 3.5f); + if((dx*dx)+(dz*dz) < 10000.0f) { + if(workP->unk4 == 0) { + workP->unk20.x = 2000*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk20.z = 700*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk20.y = workP->unk14.y; + } else { + if(workP->unk14.x < 0.0f) { + workP->unk20.x = -2500; + } else { + workP->unk20.x = 2500; + } + workP->unk20.z = 500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk20.y = workP->unk14.y; + } + } + Hu3DModelPosSet(workP->unk0, workP->unk14.x, workP->unk14.y, workP->unk14.z); + Hu3DModelRotSet(workP->unk0, 0, workP->unk10, 0); + workP->unk8 += frand()&0x3; + } +} + +void fn_1_8474(omObjData *object) +{ + +} + +void fn_1_8478(void) +{ + Work7C48 *workP = lbl_1_bss_5C->data; + s32 i; + for(i=0; i<8; i++, workP++) { + workP->unk4 = 1; + if(workP->unk14.x < 0.0f) { + workP->unk20.x = -2500; + } else { + workP->unk20.x = 2500; + } + workP->unk20.z = 500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk20.y = workP->unk14.y; + } +} + +typedef struct work891C { + s16 unk0; + s16 unk2[2]; + s16 unk6; + Vec unk8; + Vec unk14; + float unk20; + float unk24; + float unk28; + float unk2C; + float unk30; + float unk34; + float unk38; + float unk3C; +} Work891C; + +void fn_1_8578(omObjData *object, Work891C *workP) +{ + s32 num = workP[0].unk6; + float ofsZ = -2000; + s32 i; + for(i=0; iunk0, workP->unk8.x, workP->unk8.y, workP->unk8.z+ofsZ); + modelMtx = &Hu3DData[workP->unk0].unk_F0; + MTXRotDeg(*modelMtx, 'Y', workP->unk28); + MTXRotDeg(rotZ, 'Z', workP->unk38); + MTXConcat(*modelMtx, rotZ, *modelMtx); + Hu3DModelAttrReset(workP->unk0, HU3D_ATTR_DISPOFF); + } +} + +float fn_1_8D90(float start, float end, float weight); + +void fn_1_867C(omObjData *object) +{ + Work891C *workP = object->data; + s32 num = workP[0].unk6; + s32 i; + for(i=0; iunk14, &workP->unk8, &diff); + workP->unk2C = atan2d(diff.x, diff.z); + workP->unk28 = fn_1_8D90(workP->unk28, workP->unk2C+workP->unk3C, 0.08f); + workP->unk24 += 0.05f*(600.0f-workP->unk24); + workP->unk20 += 0.2f*(workP->unk24-workP->unk20); + workP->unk8.x += (workP->unk20*0.016666668f)*sind(workP->unk28); + workP->unk8.z += (workP->unk20*0.016666668f)*cosd(workP->unk28); + workP->unk30 += workP->unk20*0.016666668f; + } + fn_1_8578(object, object->data); + +} + +void fn_1_891C(omObjData *object) +{ + s16 num = 12; + Work891C *workBase; + s32 modelId; + Work891C *work; + float radius; + float angle; + float ofsZ; + s32 i; + object->data = workBase = HuMemDirectMallocNum(HEAP_SYSTEM, num*sizeof(Work891C), MEMORY_DEFAULT_NUM); + memset(workBase, 0, num*sizeof(Work891C)); + modelId = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M455, 8)); + ofsZ = 1500; + work = workBase; + for(i=0; iunk0 = Hu3DModelLink(modelId); + Hu3DModelLayerSet(work->unk0, 6); + Hu3DModelCameraSet(work->unk0, 1); + Hu3DModelScaleSet(work->unk0, 7, 7, 7); + work->unk14.x = ((s32)frandmod(1000)*4.0f)-2000; + work->unk14.z = ((s32)frandmod(1000))-500.0f; + work->unk14.y = ((s32)frandmod(1000)*0.8f)+300; + angle = (s32)frandmod(360); + radius = ((s32)frandmod(250))+200.0f; + work->unk8.x = radius*sind(angle); + work->unk8.y = 0; + work->unk8.z = radius*cosd(angle); + VECAdd(&work->unk14, &work->unk8, &work->unk8); + work->unk38 = 60-((6.0f/55.0f)*radius); + work->unk28 = (s32)frandmod(360); + + work->unk3C = ((s32)frandmod(1000) < 500) ? (-70.0f+((s32)frandmod(50)*0.1f)) : (70.0f-((s32)frandmod(50)*0.1f)); + if(work->unk3C < 0.0f) { + work->unk38 = -work->unk38; + } + work->unk30 = 1; + work->unk34 = 0; + ofsZ -= 50.0f; + work->unk6 = num; + } + Hu3DModelKill(modelId); + object->func = fn_1_867C; +} + +float fn_1_8D90(float start, float end, float weight) +{ + float angle = fmodf(end-start, 360); + if(angle < 0.0f) { + angle += 360.0f; + } + if(angle > 180.0f) { + angle -= 360.0f; + } + angle = fmodf(start+(weight*angle), 360); + if(angle < 0.0f) { + angle += 360.0f; + } + return angle; +} + +void fn_1_91B8(ModelData *model, ParticleData *particle, Mtx matrix); + +void fn_1_8EAC(void) +{ + StructBss48 *workP = lbl_1_bss_48 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(StructBss48), MEMORY_DEFAULT_NUM); + ParticleData *particle; + ModelData *modelP; + s16 *newWork; + s32 modelId; + memset(workP, 0, sizeof(StructBss48)); + workP->unk0[0] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 13), MEMORY_DEFAULT_NUM)); + workP->unk0[1] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 14), MEMORY_DEFAULT_NUM)); + workP->unk0[2] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 15), MEMORY_DEFAULT_NUM)); + workP->unk0[3] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M455, 16), MEMORY_DEFAULT_NUM)); + workP->unk20.y = 1; + workP->unk20.z = 0; + workP->unk10[0] = modelId = Hu3DParticleCreate(workP->unk0[0], 1); + Hu3DModelLayerSet(modelId, 6); + modelP = &Hu3DData[modelId]; + particle = modelP->unk_120; + particle->unk_2C = 1; + particle->unk_54 = fn_1_91B8; + newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16)*4, modelP->unk_48); + memset(newWork, 0, 4*sizeof(s16)); + newWork[1] = 0; + workP->unk10[1] = modelId = Hu3DParticleCreate(workP->unk0[3], 10); + Hu3DModelLayerSet(modelId, 6); + modelP = &Hu3DData[modelId]; + particle = modelP->unk_120; + particle->unk_2C = 1; + particle->unk_54 = fn_1_91B8; + newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16)*4, modelP->unk_48); + memset(newWork, 0, 4*sizeof(s16)); + newWork[1] = 1; + workP->unk10[2] = modelId = Hu3DParticleCreate(workP->unk0[2], 4); + Hu3DModelLayerSet(modelId, 6); + modelP = &Hu3DData[modelId]; + particle = modelP->unk_120; + particle->unk_2C = 1; + particle->unk_54 = fn_1_91B8; + newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16)*4, modelP->unk_48); + memset(newWork, 0, 4*sizeof(s16)); + newWork[1] = 2; + workP->unk10[3] = modelId = Hu3DParticleCreate(workP->unk0[1], 6); + Hu3DModelLayerSet(modelId, 6); + modelP = &Hu3DData[modelId]; + particle = modelP->unk_120; + particle->unk_2C = 1; + particle->unk_54 = fn_1_91B8; + newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16)*4, modelP->unk_48); + memset(newWork, 0, 4*sizeof(s16)); + newWork[1] = 3; +} + +void fn_1_9168(void) +{ + StructBss48 *workP = lbl_1_bss_48; + HuSprAnimKill(workP->unk0[0]); + HuSprAnimKill(workP->unk0[1]); + HuSprAnimKill(workP->unk0[2]); + HuSprAnimKill(workP->unk0[3]); +} + +float lbl_1_data_6A0[4] = { + 1000, + 200, + 600, + 1200 +}; + +float lbl_1_data_6B0[4] = { + 1, + 0.6, + 0.3, + 0.425 +}; + +void fn_1_91B8(ModelData *model, ParticleData *particle, Mtx matrix) +{ + s16 unk8 = 0; + StructBss48 *workP = lbl_1_bss_48; + s16 *newWorkP = particle->unk_1C; + s32 unk14 = 0; + Vec pos = Center; + Vec rot = CRot; + float temp_f26; + float temp_f25; + float zoom = CZoom; + HsfanimStruct01 *temp_r31; + Vec sp3C; + Vec sp30; + Vec sp24; + Vec sp18; + float temp_f29; + float temp_f23; + s32 i; + switch(newWorkP[2]) { + case 0: + temp_r31 = particle->unk_48; + if(newWorkP[1]) { + sp18.x = 2000; + sp18.y = -300; + sp18.z = 500; + temp_f29 = 1/VECMagPoint(sp18.x, sp18.y, sp18.z); + sp18.x *= temp_f29; + sp18.y *= temp_f29; + sp18.z *= temp_f29; + temp_f23 = 3200.0f/particle->unk_30; + for(i=0; iunk_30; i++, temp_r31++) { + temp_f26 = 500.0+((temp_f23*i)+((0.25f*temp_f23)*((float)((s32)frand() & 0xFFFF)*0.0000152587890625))); + temp_f25 = temp_f26/3200; + temp_r31->unk14.x = temp_f26; + temp_r31->unk34.x = 1000+(temp_f26*sp18.x); + temp_r31->unk34.y = 4800+(temp_f26*sp18.y); + temp_r31->unk34.z = -3500+(temp_f26*sp18.z); + temp_r31->unk2C = ((0.7f*(temp_f25*temp_f25))+0.3f)*(lbl_1_data_6A0[newWorkP[1]]*(0.7f+(0.3f*((float)((s32)frand() & 0xFFFF)*0.0000152587890625)))); + temp_r31->unk40.r = (s32)(((float)((s32)frand() & 0xFFFF)*0.0000152587890625)*160.0)+32; + temp_r31->unk40.g = (s32)(((float)((s32)frand() & 0xFFFF)*0.0000152587890625)*96.0)+32; + temp_r31->unk40.b = (s32)(((float)((s32)frand() & 0xFFFF)*0.0000152587890625)*128.0)+32; + temp_r31->unk40.a = (255*lbl_1_data_6B0[newWorkP[1]]*(1.0-(0.4*temp_f25)))-(s32)(((float)((s32)frand() & 0xFFFF)*0.0000152587890625)*16.0); + temp_r31->unk14.z = temp_r31->unk40.a; + } + newWorkP[2]++; + } else { + temp_r31->unk34.x = 1000; + temp_r31->unk34.y = 4800; + temp_r31->unk34.z = -3500; + temp_r31->unk2C = 1000; + } + break; + + case 1: + sp3C.x = sind(rot.y)*cosd(rot.x); + sp3C.y = -sind(rot.x); + sp3C.z = cosd(rot.y)*cosd(rot.x); + sp30.x = 1000-(pos.x+(1.25f*(sp3C.x*zoom))); + sp30.y = 4800-(pos.y+(sp3C.y*zoom)); + sp30.z = -3500-(pos.z+(1.25f*(sp3C.z*zoom))); + temp_f29 = 1/VECMagPoint(sp30.x, sp30.y, sp30.z); + sp30.x *= temp_f29; + sp30.y *= temp_f29; + sp30.z *= temp_f29; + temp_f29 = -((-sp30.x*-sp3C.x)+(-sp30.y*-sp3C.y)+(-sp30.z*-sp3C.z)); + sp24.x = -sp3C.x+((-2.0f*sp30.x)*temp_f29); + sp24.y = -sp3C.y+((-2.0f*sp30.y)*temp_f29); + sp24.z = -sp3C.z+((-2.0f*sp30.z)*temp_f29); + temp_r31 = particle->unk_48; + for(i=0; iunk_30; i++, temp_r31++) { + temp_r31->unk34.x = 1000+(sp24.x*temp_r31->unk14.x); + temp_r31->unk34.y = 4800+(sp24.y*temp_r31->unk14.x); + temp_r31->unk34.z = -3500+(sp24.z*temp_r31->unk14.x); + temp_r31->unk40.a = temp_r31->unk14.z*workP->unk20.y; + } + break; + } + DCFlushRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); + +} + +void fn_1_9CFC(float arg0) +{ + StructBss48 *workP = lbl_1_bss_48; + workP->unk20.y = arg0; + if(workP->unk20.y > 1.0f) { + workP->unk20.y = 1.0f; + } + if(workP->unk20.y <= 0.0f) { + Hu3DModelAttrSet(workP->unk10[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(workP->unk10[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(workP->unk10[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(workP->unk10[3], HU3D_ATTR_DISPOFF); + } else { + Hu3DModelAttrReset(workP->unk10[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(workP->unk10[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(workP->unk10[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(workP->unk10[3], HU3D_ATTR_DISPOFF); + } +} + +float fn_1_9E00(float start, float end) +{ + float angleDiff; + if(start >= 360.0f) { + start -= 360.0f; + } else if(start < 0.0f) { + start += 360.0f; + } + if(end >= 360.0f) { + end -= 360.0f; + } else if(end < 0.0f) { + end += 360.0f; + } + angleDiff = start-end; + if(angleDiff <= -180.0f) { + angleDiff += 360.0f; + } else if(angleDiff >= 180.0f) { + angleDiff -= 360.0f; + } + return angleDiff; +} + +float fn_1_9F18(float start, float end, float max) +{ + float angle; + float diff; + + if(start >= 360.0) { + start -= 360.0; + } else if(start < 0.0) { + start += 360.0; + } + if(end >= 360.0) { + end -= 360.0; + } else if(end < 0.0) { + end += 360.0; + } + diff = 360.0+(start-end); + if(fabs(diff) >= 360.0) { + diff = fmod(diff, 360.0); + } + if(diff < 180.0) { + if(diff <= max) { + angle = diff; + } else { + angle = max; + } + } else if(360.0-diff <= max) { + angle = -(360.0-diff); + } else { + angle = -max; + } + angle += end; + if(angle >= 360.0) { + angle -= 360.0; + } else if(angle < 0.0) { + angle += 360.0; + } + + return angle; +} \ No newline at end of file diff --git a/src/REL/m456Dll/stage.c b/src/REL/m456Dll/stage.c new file mode 100644 index 00000000..a90d1b95 --- /dev/null +++ b/src/REL/m456Dll/stage.c @@ -0,0 +1,1805 @@ +#include "game/object.h" +#include "game/objsub.h" +#include "game/hsfman.h" +#include "game/hsfdraw.h" +#include "game/hsfanim.h" + +#include "game/hsfmotion.h" +#include "game/pad.h" + +#include "game/wipe.h" +#include "game/frand.h" +#include "game/audio.h" +#include "game/minigame_seq.h" +#include "game/gamework_data.h" +#include "game/chrman.h" +#include "game/sprite.h" + +#include "REL/m456Dll.h" + +#include "ext_math.h" +#include "math.h" + +Process *lbl_1_bss_B8; +omObjData *lbl_1_bss_B4; +omObjData *lbl_1_bss_B0; +omObjData *lbl_1_bss_AC; +omObjData *lbl_1_bss_A8; +omObjData *lbl_1_bss_A4; +omObjData *lbl_1_bss_A0; +Vec lbl_1_bss_94; + +typedef struct struct_bss90 { + AnimData *unk0[4]; + s32 unk10[4]; + Vec unk20; +} StructBss90; + +StructBss90 *lbl_1_bss_90; + +Vec lbl_1_data_2E8[4] = { + { -460, 0, 150 }, + { 460, 0, 150 }, + { -460, 0, -150 }, + { 460, 0, -150 }, +}; + +GXColor lbl_1_data_318 = { 255, 255, 255, 255 }; + +typedef struct struct_data31C { + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; + BOOL unk10; +} StructData31C; + +StructData31C lbl_1_data_31C[4] = { + { 400, 400, 400, 400, FALSE }, + { 640, 480, 320, 240, TRUE }, + { 640, 480, 640, 480, FALSE }, + { 640, 480, 320, 240, TRUE }, +}; + +void fn_1_89AC(void); + +void fn_1_6444(omObjData *object); +void fn_1_6DB0(omObjData *object); +void fn_1_70F0(omObjData *object); +void fn_1_7778(omObjData *object); +void fn_1_841C(omObjData *object); + +omObjData *fn_1_2FAC(void); + +void fn_1_2DF4(Process *objman) +{ + lbl_1_bss_B8 = objman; + fn_1_89AC(); + lbl_1_bss_B0 = omAddObjEx(lbl_1_bss_B8, 50, 0, 0, -1, fn_1_6444); + lbl_1_bss_AC = omAddObjEx(lbl_1_bss_B8, 50, 8, 0, -1, fn_1_6DB0); + lbl_1_bss_A8 = omAddObjEx(lbl_1_bss_B8, 50, 1, 0, -1, fn_1_70F0); + lbl_1_bss_A4 = omAddObjEx(lbl_1_bss_B8, 50, 0, 0, -1, fn_1_7778); + lbl_1_bss_A0 = omAddObjEx(lbl_1_bss_B8, 50, 0, 0, -1, fn_1_841C); + lbl_1_bss_B4 = fn_1_2FAC(); +} + +void fn_1_3C34(omObjData *object); + +void fn_1_6790(omObjData *object); +void fn_1_6F60(omObjData *object); +void fn_1_74A4(omObjData *object); +void fn_1_7F74(omObjData *object); + +void fn_1_8C68(void); + +void fn_1_2F3C(void) +{ + fn_1_3C34(lbl_1_bss_B4); + fn_1_8C68(); + fn_1_6790(lbl_1_bss_B0); + fn_1_6F60(lbl_1_bss_AC); + fn_1_74A4(lbl_1_bss_A8); + fn_1_7F74(lbl_1_bss_A4); +} + +typedef struct work_2FAC_unk4 { + void *unk0; + u32 unk4; + BOOL unk8; + s32 unkC; + s32 unk10; + s32 unk14; + s32 unk18; +} Work2FACUnk4; + +typedef struct work_2FAC_unk74 { + Vec unk0; + Vec unkC; + float unk18; + u16 unk1C; + u16 unk1E; +} Work2FACUnk74; + +typedef struct work_2FAC { + s32 unk0; + Work2FACUnk4 unk4[4]; + Work2FACUnk74 unk74[64]; + float unk874[26][2]; + float unk944[26][2]; + void *unkA14; + u32 unkA18; + AnimData *unkA1C[9]; + float unkA40; + float unkA44; + u32 unkA48; + u32 unkA4C; + u32 unkA50; + float unkA54; + float unkA58; +} Work2FAC; + +void fn_1_390C(omObjData *object); + +void fn_1_3CB0(ModelData *model, Mtx matrix); +void fn_1_44DC(ModelData *model, Mtx matrix); +void fn_1_4994(ModelData *model, Mtx matrix); + +omObjData *fn_1_2FAC(void) +{ + omObjData *object = omAddObjEx(lbl_1_bss_B8, 127, 15, 0, -1, fn_1_390C); + Work2FAC *work = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work2FAC), MEMORY_DEFAULT_NUM); + Work2FAC *work2 = work; + Work2FACUnk74 *workUnk74 = &work->unk74[0]; + Work2FACUnk4 *workUnk4; + s32 id; + ModelData *modelP; + s32 i; + + work->unkA40 = 0; + work->unkA44 = 0; + work->unkA48 = 0; + work->unkA4C = 0; + work->unkA50 = 0; + work->unkA54 = 0; + work->unkA58 = 0; + + object->model[0] = id = Hu3DHookFuncCreate(fn_1_4994); + Hu3DModelCameraSet(id, HU3D_CAM0); + Hu3DModelLayerSet(id, 5); + modelP = &Hu3DData[id]; + modelP->unk_120 = work; + work->unkA1C[4] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 21), MEMORY_DEFAULT_NUM)); + work->unkA1C[5] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 22), MEMORY_DEFAULT_NUM)); + work->unkA1C[6] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 23), MEMORY_DEFAULT_NUM)); + work->unkA1C[7] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 24), MEMORY_DEFAULT_NUM)); + work->unkA1C[0] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 17), MEMORY_DEFAULT_NUM)); + work->unkA1C[1] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 18), MEMORY_DEFAULT_NUM)); + work->unkA1C[2] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 19), MEMORY_DEFAULT_NUM)); + work->unkA1C[3] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 20), MEMORY_DEFAULT_NUM)); + work->unkA1C[8] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 25), MEMORY_DEFAULT_NUM)); + object->model[1] = id = Hu3DHookFuncCreate(fn_1_3CB0); + Hu3DModelCameraSet(id, HU3D_CAM0); + Hu3DModelLayerSet(id, 0); + modelP = &Hu3DData[id]; + modelP->unk_120 = work; + work2->unkA18 = 16384; + work2->unkA14 = HuMemDirectMallocNum(HEAP_SYSTEM, work2->unkA18, MEMORY_DEFAULT_NUM); + DCFlushRange(work2->unkA14, 16384); + GXBeginDisplayList(work2->unkA14, work2->unkA18); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition2f32(-0.5f, -0.5f); + GXTexCoord2f32(0, 0); + GXPosition2f32(0.5f, -0.5f); + GXTexCoord2f32(1, 0); + GXPosition2f32(0.5f, 0.5f); + GXTexCoord2f32(1, 1); + GXPosition2f32(-0.5f, 0.5f); + GXTexCoord2f32(0, 1); + work2->unkA18 = GXEndDisplayList(); + for(i=0; i<26; i++) { + work2->unk874[i][0] = 0; + work2->unk874[i][1] = 0; + work2->unk944[i][0] = 0; + work2->unk944[i][1] = 0; + } + + object->model[3] = id = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M456, 5)); + Hu3DModelPosSet(id, 0, 0, -5000); + Hu3DModelScaleSet(id, 2, 2, 2); + Hu3DModelCameraSet(id, HU3D_CAM0); + Hu3DModelLayerSet(id, 1); + id = Hu3DTexScrollCreate(object->model[3], "S3TCsk"); + Hu3DTexScrollPosMoveSet(id, -0.00009166667f, 0, 0); + id = Hu3DTexScrollCreate(object->model[3], "pa_sk3"); + Hu3DTexScrollPosMoveSet(id, -0.00020833335f, 0, 0); + + object->model[4] = id = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M456, 6)); + Hu3DModelPosSet(id, 0, 0, -3000); + Hu3DModelScaleSet(id, 1.2f, 1.2f, 1.2f); + Hu3DModelCameraSet(id, HU3D_CAM0); + Hu3DModelLayerSet(id, 1); + + object->model[8] = id = Hu3DHookFuncCreate(fn_1_44DC); + Hu3DModelCameraSet(id, HU3D_CAM0); + Hu3DModelLayerSet(id, 2); + modelP = &Hu3DData[id]; + modelP->unk_120 = work; + + object->model[10] = id = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M456, 0)); + Hu3DModelPosSet(id, 0, 0, 0); + Hu3DModelCameraSet(id, HU3D_CAM0); + Hu3DModelLayerSet(id, 3); + Hu3DModelShadowMapSet(object->model[10]); + for(i=0; i<4; i++) { + + object->model[i+11] = id = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M456, 1)); + Hu3DModelCameraSet(object->model[i+11], HU3D_CAM0); + Hu3DModelLayerSet(object->model[i+11], 3); + Hu3DModelPosSet(object->model[i+11], lbl_1_data_2E8[i].x, lbl_1_data_2E8[i].y, lbl_1_data_2E8[i].z); + Hu3DModelAttrSet(object->model[i+11], HU3D_MOTATTR_SHAPE_LOOP); + Hu3DMotionShapeTimeSet(object->model[i+11], (0.25*i)*Hu3DMotionShapeMaxTimeGet(object->model[i+11])); + } + modelP = &Hu3DData[object->model[0]]; + workUnk4 = &work2->unk4[0]; + for(i=0; i<4; i++, workUnk4++) { + workUnk4->unkC = lbl_1_data_31C[i].unk0; + workUnk4->unk10 = lbl_1_data_31C[i].unk4; + workUnk4->unk14 = lbl_1_data_31C[i].unk8; + workUnk4->unk18 = lbl_1_data_31C[i].unkC; + workUnk4->unk8 = lbl_1_data_31C[i].unk10; + workUnk4->unk4 = GXGetTexBufferSize(workUnk4->unk14, workUnk4->unk18, GX_TF_RGB565, GX_FALSE, GX_FALSE); + workUnk4->unk0 = HuMemDirectMallocNum(HEAP_DATA, workUnk4->unk4, modelP->unk_48); + memset(workUnk4->unk0, 0, workUnk4->unk4); + DCFlushRange(workUnk4->unk0, workUnk4->unk4); + } + for(i=0; i<64; i++, workUnk74++) { + workUnk74->unk0.x = workUnk74->unk0.y = workUnk74->unk0.z = 0; + workUnk74->unkC.x = 0; + workUnk74->unkC.y = 0; + workUnk74->unkC.z = 1; + workUnk74->unk18 = 0.016666668f; + workUnk74->unk1C = 60; + workUnk74->unk1E = 0; + } + return object; +} + +void fn_1_97FC(float arg0); + +void fn_1_390C(omObjData *object) +{ + Work2FAC *work = object->data; + Work2FAC *work2 = work; + s32 i; + if((work->unkA50 = work->unkA50+(0.007874016f*((s32)frand() & 0x7F)*3.0f)) > 360) { + work->unkA50 -= 360; + } + work->unkA44 = (25+work->unkA40)+(5.0*sind(work->unkA50)); + Hu3DModelPosSet(object->model[10], 0, work->unkA44, 0); + for(i=0; i<4; i++) { + Hu3DModelPosSet(object->model[i+11], lbl_1_data_2E8[i].x, work->unkA44+lbl_1_data_2E8[i].y, lbl_1_data_2E8[i].z); + } + work->unkA54 += 0.001f; + work->unkA58 += 0.001f; + work->unkA48++; + work->unkA4C++; + if(work->unkA4C >= 60.0f && work->unkA4C <= 81.0f) { + float time = 1-((work->unkA4C-60.0f)/21.0f); + if(time < 0.0f) { + time = 0.0f; + } + fn_1_97FC(time); + } +} + +void fn_1_3C34(omObjData *object) +{ + Work2FAC *work = object->data; + HuSprAnimKill(work->unkA1C[0]); + HuSprAnimKill(work->unkA1C[1]); + HuSprAnimKill(work->unkA1C[2]); + HuSprAnimKill(work->unkA1C[3]); + HuSprAnimKill(work->unkA1C[6]); + HuSprAnimKill(work->unkA1C[7]); + HuSprAnimKill(work->unkA1C[4]); + HuSprAnimKill(work->unkA1C[5]); + HuSprAnimKill(work->unkA1C[8]); +} + +GXColor lbl_1_data_37A = { 255, 255, 255, 32 }; +GXColor lbl_1_data_37E = { 255, 255, 255, 10 }; +GXColor lbl_1_data_382 = { 0, 126, 126, 255 }; +Vec lbl_1_data_388[4] = { + -1000, 50, 1000, + -1000, 50, -1000, + 1000, 50, -1000, + 1000, 50, 1000 +}; + +Vec lbl_1_data_3B8[26] = { + -1500, 0, 1000, + -1400, 0, 1000, + 0, 0, 1000, + 1400, 0, 1000, + 1500, 0, 1000, + -1500, 0, -500, + -1400, 0, -500, + 0, 0, -500, + 1400, 0, -500, + 1500, 0, -500, + -1500, 0, -2000, + -1400, 0, -2000, + 0, 0, -2000, + 1400, 0, -2000, + 1500, 0, -2000, + -1500, 0, -5000, + -1400, 0, -5000, + 0, 0, -5000, + 1400, 0, -5000, + 1500, 0, -5000, + -2000, 0, -500, + -2500, 0, -2000, + -3000, 0, -5000, + 2000, 0, -500, + 2500, 0, -2000, + 3000, 0, -5000 +}; + +GXColor lbl_1_data_4F0[26] = { + { 96, 128, 255, 255 }, + { 128, 160, 255, 32 }, + { 128, 160, 255, 32 }, + { 128, 160, 255, 32 }, + { 96, 128, 255, 255 }, + { 24, 48, 255, 255 }, + { 96, 128, 255, 32 }, + { 128, 160, 255, 32 }, + { 96, 128, 255, 32 }, + { 24, 48, 255, 255 }, + { 24, 48, 255, 255 }, + { 24, 48, 255, 255 }, + { 96, 128, 255, 255 }, + { 24, 48, 255, 255 }, + { 24, 48, 255, 255 }, + { 8, 24, 143, 255 }, + { 8, 24, 143, 255 }, + { 8, 24, 143, 255 }, + { 8, 24, 143, 255 }, + { 8, 24, 143, 255 }, + { 24, 48, 255, 255 }, + { 24, 48, 255, 255 }, + { 24, 48, 255, 255 }, + { 24, 48, 255, 255 }, + { 24, 48, 255, 255 }, + { 24, 48, 255, 255 } +}; + +float lbl_1_data_558[26][2] = { + 0, 1, + 0.033333335, 1, + 0.5, 1, + 0.96666664, 1, + 1, 1, + 0, 0.5, + 0.033333335, 0.5, + 0.5, 0.5, + 0.96666664, 0.5, + 1, 0.5, + 0, 0, + 0.033333335, 0, + 0.5, 0, + 0.96666664, 0, + 1, 0, + 0, 0, + 0.033333335, 0, + 0.5, 0, + 0.96666664, 0, + 1, 0, + -0.15, 0.5, + -0.33, 0, + -0.49, 0, + 1.15, 0.5, + 1.33, 0, + 1.49, 0 +}; + +float lbl_1_data_628[26][2] = { + 0, 30, + 0.5, 30, + 7.5, 30, + 14.5, 30, + 15, 30, + 0, 15, + 0.5, 15, + 7.5, 15, + 14.5, 15, + 15, 15, + 0, 7.5, + 0.5, 7.5, + 7.5, 7.5, + 14.5, 7.5, + 15, 7.5, + 0, 0, + 0.5, 0, + 7.5, 0, + 14.5, 0, + 15, 0, + -2.25, 15, + -4.9500003, 7.5, + -7.3500004, 0, + 17.25, 15, + 19.95, 7.5, + 22.35, 0 +}; + +float lbl_1_data_6F8[2][3] = { + 0, 0, 0.5, + 0, 0.5, 0 +}; + +GXColor lbl_1_data_710 = { 80, 80, 80, 80 }; + +Vec lbl_1_data_714[9] = { + -1500, 0, -5000, + 0, 0, -5000, + 1500, 0, -5000, + -1500, 0, -3000, + 0, 0, -3000, + 1500, 0, -3000, + -1500, 0, 1000, + 0, 0, 1000, + 1500, 0, 1000 +}; + +GXColor lbl_1_data_780[9] = { + { 255, 255, 255, 0 }, + { 255, 255, 255, 0 }, + { 255, 255, 255, 0 }, + { 255, 255, 255, 0 }, + { 255, 255, 255, 255 }, + { 255, 255, 255, 0 }, + { 255, 255, 255, 0 }, + { 255, 255, 255, 255 }, + { 255, 255, 255, 0 }, +}; + +GXColor lbl_1_data_7A4 = { 255, 165, 89, 178 }; +GXColor lbl_1_data_7A8 = { 153, 114, 89, 178 }; +GXColor lbl_1_data_7AC = { 0, 0, 0, 255 }; + +void fn_1_5BB8(Work2FACUnk4 *arg0, s32 arg1); + +void fn_1_3CB0(ModelData *model, Mtx matrix) +{ + Work2FAC *work = model->unk_120; + Work2FAC *work2 = work; + Work2FACUnk74 *workUnk74 = &work2->unk74[0]; + Work2FACUnk4 *workUnk4 = &work2->unk4[0]; + s32 i; + Mtx proj; + Mtx modelview; + MTXOrtho(proj, 0, 480, 0, 640, 0, 100); + GXSetProjection(proj, GX_ORTHOGRAPHIC); + MTXIdentity(modelview); + GXLoadPosMtxImm(modelview, GX_PNMTX0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_382); + GXSetTevColor(GX_TEVREG0, lbl_1_data_37E); + GXSetNumTexGens(1); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0); + GXSetNumTevStages(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_RASC, GX_CC_TEXC, GX_CC_A0, 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_KONST); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetScissor(0, 0, 400, 400); + HuSprTexLoad(work->unkA1C[4], 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_U16, 0); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition2u16(0, 0); + GXTexCoord2f32(work->unkA54, work->unkA58); + GXPosition2u16(400, 0); + GXTexCoord2f32(work->unkA54+7, work->unkA58); + GXPosition2u16(400, 400); + GXTexCoord2f32(work->unkA54+7, work->unkA58+7); + GXPosition2u16(0, 400); + GXTexCoord2f32(work->unkA54, work->unkA58+7); + GXEnd(); + GXSetNumTexGens(1); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + GXSetNumTevStages(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC); + 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); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + HuSprTexLoad(work->unkA1C[8], 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXClearVtxDesc(); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_F32, 0); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + workUnk74 = &work2->unk74[0]; + for(i=0; i<64; i++, workUnk74++) { + float scale; + float accel; + if(workUnk74->unk1E == 0) { + continue; + } + scale = 128*(workUnk74->unkC.x*(0.2f+cosd(workUnk74->unk1E*workUnk74->unk18*90.0f))); + accel = workUnk74->unk1E*workUnk74->unk18; + lbl_1_data_37A.a = workUnk74->unkC.z*sind((accel*accel)*90.0f)*255.0; + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_37A); + MTXScale(modelview, 0.5f*scale, 0.5f*scale, 1.0f); + mtxRotCat(modelview, 0, 0, workUnk74->unkC.y); + mtxTransCat(modelview, 400*(workUnk74->unk0.x+1500)/3000, 400*(workUnk74->unk0.z - -2000)/3000, 0); + GXLoadPosMtxImm(modelview, GX_PNMTX0); + GXCallDisplayList(work2->unkA14, work2->unkA18); + if(!omPauseChk()) { + workUnk74->unk1E--; + } + } + workUnk4 = &work2->unk4[0]; + fn_1_5BB8(workUnk4, 1); +} + +void fn_1_54D0(ModelData *model, Mtx matrix); + +void fn_1_44DC(ModelData *model, Mtx matrix) +{ + Work2FAC *work; + Work2FAC *work2; + Work2FACUnk4 *workUnk4; + fn_1_54D0(model, matrix); + work = model->unk_120; + work2 = work; + workUnk4 = &work2->unk4[1]; + fn_1_5BB8(workUnk4, 0); +} + +void fn_1_5C74(Work2FACUnk4 *arg0, float arg1, float arg2, float arg3); + +void fn_1_4544(ModelData *model, Mtx matrix) +{ + Work2FAC *work = model->unk_120; + Work2FAC *work2 = work; + Work2FACUnk4 *workUnk4 = &work2->unk4[0]; + + fn_1_5C74(workUnk4, 200, 0, 0.5f); + workUnk4 = &work2->unk4[1]; + fn_1_5C74(workUnk4, 0, 0, 0.5f); + workUnk4 = &work2->unk4[2]; + fn_1_5C74(workUnk4, 0, 150, 0.25f); + workUnk4 = &work2->unk4[3]; + fn_1_5C74(workUnk4, 0, 300, 0.5f); +} + +void fn_1_60C4(s16 arg0, Work2FACUnk4 *arg1, GXTexWrapMode arg2, s32 arg3, BOOL arg4); + +void fn_1_464C(ModelData *model, Mtx matrix) +{ + CameraData *cameraP = &Hu3DCamera[Hu3DCameraNo]; + Work2FAC *work = model->unk_120; + Work2FAC *work2 = work; + Work2FACUnk4 *workUnk4 = &work2->unk4[2]; + float fov; + Mtx proj; + Mtx texMtx; + Mtx projCamera; + s16 lightMask; + s16 i; + + fn_1_5BB8(workUnk4, 0); + GXLoadPosMtxImm(matrix, GX_PNMTX0); + fov = cameraP->fov; + if(fov <= 0.0f) { + fov = 45; + } + MTXLightPerspective(proj, fov, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); + MTXInverse(Hu3DCameraMtx, texMtx); + MTXConcat(texMtx, Hu3DCameraMtx, texMtx); + MTXConcat(proj, Hu3DCameraMtx, projCamera); + MTXConcat(projCamera, texMtx, texMtx); + GXLoadTexMtxImm(texMtx, GX_TEXMTX0, GX_MTX3x4); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0); + lightMask = Hu3DLightSet(model, &Hu3DCameraMtx, &Hu3DCameraMtxXPose, 4); + GXSetNumTevStages(1); + GXSetNumTexGens(1); + GXSetNumChans(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_318); + GXSetZMode(GX_TRUE, GX_GREATER, GX_FALSE); + GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + workUnk4 = &work2->unk4[1]; + fn_1_60C4(0, workUnk4, 0, 0, 0); + GXClearVtxDesc(); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetArray(GX_VA_POS, lbl_1_data_388, sizeof(Vec)); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + for(i=0; i<4; i++) { + GXPosition1x16(i); + } + GXEnd(); + workUnk4 = &work2->unk4[3]; + fn_1_5BB8(workUnk4, 0); + workUnk4 = &work2->unk4[2]; + fn_1_60C4(0, workUnk4, 0, 0, 0); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + for(i=0; i<4; i++) { + GXPosition1x16(i); + } + GXEnd(); +} + +void fn_1_4994(ModelData *model, Mtx matrix) +{ + CameraData *cameraP = &Hu3DCamera[Hu3DCameraNo]; + Work2FAC *work = model->unk_120; + Work2FAC *work2 = work; + Work2FACUnk4 *workUnk4 = &work2->unk4[2]; + Mtx invXPose; + Mtx proj; + Mtx texMtx; + Mtx projCamera; + float sp14; + float sp10; + float fov; + s16 i; + fn_1_464C(model, matrix); + sp14 = 1.5f; + sp10 = 0; + GXLoadPosMtxImm(matrix, GX_PNMTX0); + MTXInvXpose(matrix, invXPose); + GXLoadNrmMtxImm(invXPose, GX_PNMTX0); + fov = cameraP->fov; + if(fov <= 0.0f) { + fov = 45; + } + MTXLightPerspective(proj, fov, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); + MTXInverse(Hu3DCameraMtx, texMtx); + MTXConcat(texMtx, Hu3DCameraMtx, texMtx); + MTXConcat(proj, Hu3DCameraMtx, projCamera); + MTXConcat(projCamera, texMtx, texMtx); + GXLoadTexMtxImm(texMtx, GX_TEXMTX0, GX_MTX3x4); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0); + GXSetTexCoordGen(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEX1, GX_IDENTITY); + GXSetNumTevStages(2); + GXSetNumTexGens(3); + GXSetNumChans(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_TEXC, GX_CC_RASC, GX_CC_RASA, 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); + GXSetTevColor(GX_TEVREG0, lbl_1_data_710); + GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_ZERO, GX_CC_C0, GX_CC_TEXA, GX_CC_CPREV); + GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_VTX, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_318); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0); + GXSetBlendMode(GX_BM_NONE, GX_BL_ONE, GX_BL_ZERO, GX_LO_NOOP); + workUnk4 = &work2->unk4[3]; + fn_1_60C4(0, workUnk4, 0, 0, 0); + HuSprTexLoad(work->unkA1C[3], 0, 1, GX_REPEAT, GX_REPEAT, GX_LINEAR); + workUnk4 = &work2->unk4[0]; + fn_1_60C4(2, workUnk4, 0, 0, 1); + GXSetTexCoordGen(GX_TEXCOORD2, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + GXSetNumIndStages(1); + GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD2, GX_TEXMAP2); + GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1); + GXSetTevIndWarp(GX_TEVSTAGE0, GX_INDTEXSTAGE0, GX_TRUE, GX_FALSE, GX_ITM_1); + GXSetIndTexMtx(GX_ITM_1, lbl_1_data_6F8, -1); + for(i=0; i<26; i++) { + work2->unk944[i][0] -= 0.007874016f*((s32)frand() & 0x7F)*0.005f; + work2->unk944[i][1] += 0.007874016f*((s32)frand() & 0x7F)*0.005f; + work2->unk874[i][0] = work2->unk944[i][0]+lbl_1_data_628[i][0]; + work2->unk874[i][1] = work2->unk944[i][1]+lbl_1_data_628[i][1]; + } + DCFlushRange(&work2->unk874[0][0], sizeof(work2->unk874)); + GXClearVtxDesc(); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + + GXSetArray(GX_VA_POS, lbl_1_data_3B8, sizeof(Vec)); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, lbl_1_data_4F0, sizeof(GXColor)); + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_TEX0, lbl_1_data_558, sizeof(float)*2); + GXSetVtxDesc(GX_VA_TEX1, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX1, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_TEX1, &work2->unk874[0][0], sizeof(float)*2); + GXBegin(GX_QUADS, GX_VTXFMT0, 48); + for(i=0; i<12; i++) { + s16 index; + if(i == 4) { + index = 12; + } else if(i == 9) { + index = 13; + } else { + index = i; + } + GXPosition1x16(index+0); + GXColor1x16(index+0); + GXTexCoord1x16(index+0); + GXTexCoord1x16(index+0); + GXPosition1x16(index+5); + GXColor1x16(index+5); + GXTexCoord1x16(index+5); + GXTexCoord1x16(index+5); + GXPosition1x16(index+6); + GXColor1x16(index+6); + GXTexCoord1x16(index+6); + GXTexCoord1x16(index+6); + GXPosition1x16(index+1); + GXColor1x16(index+1); + GXTexCoord1x16(index+1); + GXTexCoord1x16(index+1); + } + GXEnd(); + GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 8); + GXPosition1x16(22); + GXColor1x16(22); + GXTexCoord1x16(22); + GXTexCoord1x16(22); + GXPosition1x16(15); + GXColor1x16(15); + GXTexCoord1x16(15); + GXTexCoord1x16(15); + GXPosition1x16(21); + GXColor1x16(21); + GXTexCoord1x16(21); + GXTexCoord1x16(21); + GXPosition1x16(10); + GXColor1x16(10); + GXTexCoord1x16(10); + GXTexCoord1x16(10); + GXPosition1x16(20); + GXColor1x16(20); + GXTexCoord1x16(20); + GXTexCoord1x16(20); + GXPosition1x16(5); + GXColor1x16(5); + GXTexCoord1x16(5); + GXTexCoord1x16(5); + GXPosition1x16(0); + GXColor1x16(0); + GXTexCoord1x16(0); + GXTexCoord1x16(0); + GXPosition1x16(0); + GXColor1x16(0); + GXTexCoord1x16(0); + GXTexCoord1x16(0); + GXEnd(); + GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 8); + GXPosition1x16(19); + GXColor1x16(19); + GXTexCoord1x16(19); + GXTexCoord1x16(19); + GXPosition1x16(25); + GXColor1x16(25); + GXTexCoord1x16(25); + GXTexCoord1x16(25); + GXPosition1x16(14); + GXColor1x16(14); + GXTexCoord1x16(14); + GXTexCoord1x16(14); + GXPosition1x16(24); + GXColor1x16(24); + GXTexCoord1x16(24); + GXTexCoord1x16(24); + GXPosition1x16(9); + GXColor1x16(9); + GXTexCoord1x16(9); + GXTexCoord1x16(9); + GXPosition1x16(23); + GXColor1x16(23); + GXTexCoord1x16(23); + GXTexCoord1x16(23); + GXPosition1x16(4); + GXColor1x16(4); + GXTexCoord1x16(4); + GXTexCoord1x16(4); + GXPosition1x16(4); + GXColor1x16(4); + GXTexCoord1x16(4); + GXTexCoord1x16(4); + GXEnd(); + GXSetNumIndStages(0); + GXSetTevDirect(GX_TEVSTAGE0); + GXSetTevDirect(GX_TEVSTAGE1); +} + +void fn_1_54D0(ModelData *model, Mtx matrix) +{ + s32 sp10 = 0; + Work2FAC *work = model->unk_120; + float scale = 1.5f; + float x = 0; + Mtx temp; + Mtx final; + MTXTrans(final, x, -300, 0); + GXSetTevColor(GX_TEVREG0, lbl_1_data_7A4); + MTXScale(temp, scale, 1, 1); + MTXConcat(final, temp, final); + MTXConcat(Hu3DCameraMtx, final, final); + GXLoadPosMtxImm(final, GX_PNMTX0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_318); + HuSprTexLoad(work->unkA1C[0], 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + HuSprTexLoad(work->unkA1C[1], 0, 1, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXSetNumTexGens(2); + MTXRotDeg(final, 'X', 90.0f); + x = 0.004f*scale; + MTXScale(temp, x, -0.004f, 0.004f); + MTXConcat(final, temp, final); + MTXTrans(temp, (work->unkA48%1024)/(512.0f*x), 0, 1.2499999f*(work->unkA48%400)); + MTXConcat(final, temp, final); + GXLoadTexMtxImm(final, GX_TEXMTX0, GX_MTX2x4); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_POS, GX_TEXMTX0); + MTXRotDeg(final, 'X', 90.0f); + x = 0.004f*scale; + MTXScale(temp, x, -0.004f, 0.004f); + MTXConcat(final, temp, final); + MTXTrans(temp, (work->unkA48%300)/(150.0f*x), 0, 0); + MTXConcat(final, temp, final); + GXLoadTexMtxImm(final, GX_TEXMTX1, GX_MTX2x4); + GXSetTexCoordGen(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_POS, GX_TEXMTX1); + GXSetNumTevStages(2); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR_NULL); + GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_CPREV); + GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_TEXA, GX_CA_APREV, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_SET); + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_POS, lbl_1_data_714, sizeof(Vec)); + GXSetArray(GX_VA_CLR0, lbl_1_data_780, sizeof(GXColor)); + GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 6); + GXPosition1x8(0); + GXColor1x8(0); + GXPosition1x8(1); + GXColor1x8(1); + GXPosition1x8(3); + GXColor1x8(3); + GXPosition1x8(4); + GXColor1x8(4); + GXPosition1x8(6); + GXColor1x8(6); + GXPosition1x8(7); + GXColor1x8(7); + GXEnd(); + GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 6); + GXPosition1x8(1); + GXColor1x8(1); + GXPosition1x8(2); + GXColor1x8(2); + GXPosition1x8(4); + GXColor1x8(4); + GXPosition1x8(5); + GXColor1x8(5); + GXPosition1x8(7); + GXColor1x8(7); + GXPosition1x8(8); + GXColor1x8(8); + GXEnd(); +} + +void fn_1_5BB8(Work2FACUnk4 *arg0, s32 arg1) +{ + GXSetTexCopySrc(0, 0, arg0->unkC, arg0->unk10); + GXSetTexCopyDst(arg0->unk14, arg0->unk18, GX_TF_RGB565, arg0->unk8); + GXSetCopyClear(lbl_1_data_7AC, GX_MAX_Z24); + GXCopyTex(arg0->unk0, arg1); +} + +void fn_1_5C74(Work2FACUnk4 *fbWork, float x1, float y1, float scale) +{ + float x2 = x1+(fbWork->unk14*scale); + float y2 = y1+(fbWork->unk18*scale); + Mtx44 proj; + Mtx modelview; + GXTexObj texObj; + GXColor color; + GXInitTexObj(&texObj, fbWork->unk0, fbWork->unk14, fbWork->unk18, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXInitTexObjLOD(&texObj, GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); + GXLoadTexObj(&texObj, GX_TEXMAP0); + MTXOrtho(proj, 0, 480, 0, 640, 0, 10); + GXSetProjection(proj, GX_ORTHOGRAPHIC); + 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); + color.a = 255; + GXSetTevColor(GX_TEVREG0, color); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + 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_KONST); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumTexGens(1); + GXSetNumTevStages(1); + MTXIdentity(modelview); + GXLoadPosMtxImm(modelview, GX_PNMTX0); + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(x1, y1, 0); + GXTexCoord2f32(0, 0); + GXPosition3f32(x2, y1, 0); + GXTexCoord2f32(1, 0); + GXPosition3f32(x2, y2, 0); + GXTexCoord2f32(1, 1); + GXPosition3f32(x1, y2, 0); + GXTexCoord2f32(0, 1); + GXEnd(); +} + +void fn_1_60C4(s16 arg0, Work2FACUnk4 *arg1, GXTexWrapMode arg2, s32 arg3, BOOL arg4) +{ + GXTexObj texObj; + GXInitTexObj(&texObj, arg1->unk0, arg1->unk14, arg1->unk18, GX_TF_RGB565, arg2, arg2, FALSE); + if(arg4) { + GXInitTexObjLOD(&texObj, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); + } else { + GXInitTexObjLOD(&texObj, GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); + } + GXLoadTexObj(&texObj, arg0); +} + +s32 fn_1_61C8(Vec *arg0, float arg1, float arg2, s32 arg3) +{ + Work2FAC *work; + Work2FAC *work2; + Work2FACUnk74 *workUnk74; + s32 i; + if(!lbl_1_bss_B4) { + return -1; + } + work = lbl_1_bss_B4->data; + work2 = work; + workUnk74 = &work->unk74[0]; + for(i=0; i<64; i++, workUnk74++) { + if(workUnk74->unk1E == 0) { + break; + } + } + if(i >= 64) { + return -1; + } + workUnk74->unk0 = *arg0; + if(arg1 < 0.0f) { + workUnk74->unkC.x = 1; + } else { + workUnk74->unkC.x = arg1; + } + if(arg2 < 0.0f) { + workUnk74->unkC.z = 1; + } else { + workUnk74->unkC.z = arg2; + } + if(arg3 < 0) { + workUnk74->unk1C = 60; + } else { + workUnk74->unk1C = arg3; + } + workUnk74->unkC.y = (s32)frand()%360; + workUnk74->unk1E = workUnk74->unk1C; + workUnk74->unk18 = 1.0f/workUnk74->unk1C; + return i; +} + +float fn_1_63AC(void) +{ + if(!lbl_1_bss_B4) { + return 0; + } else { + Work2FAC *work = lbl_1_bss_B4->data; + return work->unkA44; + } +} + +float fn_1_63F8(void) +{ + if(!lbl_1_bss_B4) { + return 0; + } else { + Work2FAC *work = lbl_1_bss_B4->data; + return work->unkA40; + } +} + +typedef struct work6914 { + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; + AnimData *unk10; + Vec unk14; + Vec unk20; + Vec unk2C; +} Work6914; + +void fn_1_659C(omObjData *object); + +void fn_1_6444(omObjData *object) +{ + Work6914 *work; + s32 i; + AnimData *anim; + work = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work6914)*8, MEMORY_DEFAULT_NUM); + memset(work, 0, sizeof(Work6914)*8); + anim = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 26), MEMORY_DEFAULT_NUM)); + for(i=0; i<8; i++, work++) { + work->unk10 = anim; + work->unk0 = i; + work->unk4 = Hu3DParticleCreate(work->unk10, 32); + Hu3DModelCameraSet(work->unk4, HU3D_CAM0); + Hu3DModelLayerSet(work->unk4, 6); + Hu3DModelAttrSet(work->unk4, HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(work->unk4, HU3D_ATTR_PARTICLE_KILL); + work->unk8 = 0; + work->unkC = 0; + work->unk14.x = work->unk14.y = work->unk14.z = 0; + work->unk20.x = work->unk20.y = work->unk20.z = 0; + work->unk2C.x = work->unk2C.y = work->unk2C.z = 1; + } + object->func = fn_1_659C; +} + +void fn_1_659C(omObjData *object) +{ + Work6914 *work = object->data; + s32 i; + for(i=0; i<8; i++, work++) { + if(work->unk8 == 0) { + continue; + } + if(work->unkC > 1) { + ModelData *modelP = &Hu3DData[work->unk4]; + ParticleData *particleP = modelP->unk_120; + HsfanimStruct01 *data = particleP->unk_48; + s32 j; + for(j=0; junk_30; j++, data++) { + if(++data->unk00_s16 > data->unk02) { + s32 alpha = data->unk40.a-1; + if(alpha < 0) { + data->unk2C = 0; + } else { + data->unk40.a = alpha; + } + } + data->unk2C *= 0.975; + data->unk34.x += data->unk08.x; + data->unk34.y += data->unk08.y; + data->unk34.z += data->unk08.z; + data->unk08.y -= 0.3103333379576603; + } + } + if(++work->unkC > 90.0f) { + Hu3DModelAttrSet(work->unk4, HU3D_ATTR_DISPOFF); + work->unk8 = 0; + } else { + Hu3DModelPosSet(work->unk4, work->unk14.x, work->unk14.y, work->unk14.z); + Hu3DModelRotSet(work->unk4, work->unk20.x, work->unk20.y, work->unk20.z); + Hu3DModelScaleSet(work->unk4, work->unk2C.x, work->unk2C.y, work->unk2C.z); + } + } +} + +void fn_1_6790(omObjData *object) +{ + Work6914 *work = object->data; + AnimData *anim = work->unk10; + anim->useNum = 0; + HuSprAnimKill(anim); +} + +s32 fn_1_67E0(Vec *arg0, float arg1) +{ + Work6914 *work = lbl_1_bss_B0->data; + s32 i; + ModelData *temp_r27; + ParticleData *temp_r28; + HsfanimStruct01 *temp_r30; + + for(i=0; i<8; i++, work++) { + if(work->unk8 == 0) { + break; + } + } + if(i >= 8) { + return -1; + } + Hu3DModelAttrReset(work->unk4, HU3D_ATTR_DISPOFF); + work->unk8 = 1; + work->unkC = 0; + temp_r27 = &Hu3DData[work->unk4]; + temp_r28 = temp_r27->unk_120; + temp_r28->unk_2C = 1; + temp_r30 = temp_r28->unk_48; + for(i=0; iunk_30; i++, temp_r30++) { + float temp_f30 = ((s32)frand()%20)+90; + float temp_f29 = (s32)frand()%360; + float temp_f26 = sind(temp_f30); + float temp_f28 = cosd(temp_f30); + float temp_f25 = 0.75f+0.15f*(0.007874016f*((s32)frand() & 0x7F)); + float temp_f31 = 0.15f; + temp_r30->unk08.x = temp_f31*(0.65f*(50.0*(temp_f28*sind(temp_f29)))); + temp_r30->unk08.z = temp_f31*(0.65f*(50.0*(temp_f28*cosd(temp_f29)))); + temp_r30->unk08.y = temp_f31*(50*temp_f26*temp_f25); + temp_r30->unk00_s16 = 0; + temp_r30->unk02 = ((s32)frand()%16)+45; + temp_r30->unk30 = (s32)frand()%360; + temp_r30->unk2C = 145; + temp_r30->unk34.x = 0.05f*(((s32)frand() & 0x7F)-64); + temp_r30->unk34.y = 0.65f*(((s32)frand() & 0x7F)-64); + temp_r30->unk34.z = 0.05f*(((s32)frand() & 0x7F)-64); + temp_r30->unk40.r = ((s32)frand()%64)+192; + temp_r30->unk40.g = ((s32)frand()%64)+192; + temp_r30->unk40.b = ((s32)frand()%64)+192; + temp_r30->unk40.a = 64; + } + if(arg1 < 0.0f) { + arg1 = 1.0f; + } + work->unk14 = *arg0; + work->unk20.x = work->unk20.y = work->unk20.z = 0; + work->unk2C.x = work->unk2C.y = work->unk2C.z = arg1; + Hu3DModelPosSet(work->unk4, work->unk14.x, work->unk14.y, work->unk14.z); + Hu3DModelRotSet(work->unk4, work->unk20.x, work->unk20.y, work->unk20.z); + Hu3DModelScaleSet(work->unk4, work->unk2C.x, work->unk2C.y, work->unk2C.z); + return i; +} + +void fn_1_6E98(omObjData *object); + +void fn_1_6DB0(omObjData *object) +{ + s32 i; + for(i=0; imdlcnt; i++) { + if(i == 0) { + object->model[i] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M456, 9)); + } else { + object->model[i] = Hu3DModelLink(object->model[0]); + } + Hu3DModelCameraSet(object->model[i], HU3D_CAM0); + Hu3DModelLayerSet(object->model[i], 6); + Hu3DModelAttrSet(object->model[i], HU3D_ATTR_DISPOFF); + + } + object->stat |= 0x100; + object->func = fn_1_6E98; +} + +void fn_1_6E98(omObjData *object) +{ + s32 i; + for(i=0; imdlcnt; i++) { + ModelData *modelP = &Hu3DData[object->model[i]]; + if(!(modelP->attr & HU3D_ATTR_DISPOFF)) { + if(Hu3DMotionTimeGet(object->model[i]) >= Hu3DMotionMaxTimeGet(object->model[i])) { + Hu3DModelAttrSet(object->model[i], HU3D_ATTR_DISPOFF); + } + } + } +} + +void fn_1_6F60(omObjData *object) +{ + +} + +s32 fn_1_6F64(Vec *pos, float scale) +{ + s32 i; + for(i=0; imdlcnt; i++) { + ModelData *modelP = &Hu3DData[lbl_1_bss_AC->model[i]]; + if(modelP->attr & HU3D_ATTR_DISPOFF) { + break; + } + } + if(i >= lbl_1_bss_AC->mdlcnt) { + return -1; + } + Hu3DMotionTimeSet(lbl_1_bss_AC->model[i], 0); + Hu3DMotionSpeedSet(lbl_1_bss_AC->model[i], 1); + Hu3DModelPosSet(lbl_1_bss_AC->model[i], pos->x, pos->y, pos->z); + Hu3DModelScaleSet(lbl_1_bss_AC->model[i], scale, scale, scale); + Hu3DModelAttrReset(lbl_1_bss_AC->model[i], HU3D_ATTR_DISPOFF); + return i; +} + +void fn_1_71E0(omObjData *object); + +void fn_1_70F0(omObjData *object) +{ + ParticleData *temp_r30; + HsfanimStruct01 *temp_r29; + s32 i; + ModelData *modelP; + AnimData *anim = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 26), MEMORY_DEFAULT_NUM)); + + object->data = anim; + object->model[0] = Hu3DParticleCreate(anim, 64); + Hu3DModelCameraSet(object->model[0], HU3D_CAM0); + Hu3DModelLayerSet(object->model[0], 3); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_PARTICLE_KILL); + modelP = &Hu3DData[object->model[0]]; + temp_r30 = modelP->unk_120; + temp_r29 = temp_r30->unk_48; + temp_r30->unk_2C = 1; + for(i=0; iunk_30; i++, temp_r29++) { + temp_r29->unk2C = 0; + } + object->func = fn_1_71E0; +} + +void fn_1_71E0(omObjData *object) +{ + ModelData *modelP = &Hu3DData[object->model[0]]; + ParticleData *temp_r29 = modelP->unk_120; + HsfanimStruct01 *temp_r30 = temp_r29->unk_48; + s32 i; + for(i=0; iunk_30; i++, temp_r30++) { + if(temp_r30->unk2C <= 0.0f) { + continue; + } + if(++temp_r30->unk00_s16 > 360) { + temp_r30->unk00_s16 -= 360; + } + temp_r30->unk34.x += temp_r30->unk08.x*sind(2.0f*temp_r30->unk00_s16); + temp_r30->unk34.y += temp_r30->unk08.y; + if(temp_r30->unk34.y >= 0.0f) { + fn_1_61C8(&temp_r30->unk34, 0.00625f*temp_r30->unk2C, 1, 15); + temp_r30->unk2C = 0; + } + + } +} + +void fn_1_74A4(omObjData *object) +{ + AnimData *anim = object->data; + HuSprAnimKill(anim); + Hu3DModelKill(object->model[0]); + object->model[0] = -1; +} + +s32 fn_1_74F8(Vec *pos, float scale) +{ + s32 i; + ModelData *modelP = &Hu3DData[lbl_1_bss_A8->model[0]]; + ParticleData *temp_r30 = modelP->unk_120; + HsfanimStruct01 *temp_r31 = temp_r30->unk_48; + for(i=0; iunk_30; i++, temp_r31++) { + if(temp_r31->unk2C <= 0.0f) { + break; + } + } + if(i >= temp_r30->unk_30) { + return -1; + } + if(scale <= 0.0f) { + scale = 1.0f; + } + temp_r31->unk34 = *pos; + temp_r31->unk08.x = (1.5f+(0.2f*(0.007874016f*((s32)frand() & 0x7F))))*0.5f; + temp_r31->unk08.z = (1.5f+(0.2f*(0.007874016f*((s32)frand() & 0x7F)))); + temp_r31->unk08.y = (1.5f+(0.2f*(0.007874016f*((s32)frand() & 0x7F))))*2.0f; + temp_r31->unk00_s16 = (s32)frand()%360; + temp_r31->unk2C = 20*scale; + return i; +} + + +typedef struct work7C48 { + s32 unk0; + s32 unk4; + s32 unk8; + float unkC; + float unk10; + Vec unk14; + Vec unk20; +} Work7C48; + +void fn_1_7B50(omObjData *object); + +void fn_1_7778(omObjData *object) +{ + Work7C48 *workBase = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work7C48)*8, MEMORY_DEFAULT_NUM); + Work7C48 *workP = workBase; + s32 i; + memset(workP, 0, 8*sizeof(Work7C48)); + for(i=0; i<8; i++, workP++) { + switch(i) { + case 0: + workP->unk0 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M456, 3)); + break; + + case 1: + workP->unk0 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M456, 4)); + break; + + default: + if(i & 0x1) { + workP->unk0 = Hu3DModelLink(workBase[0].unk0); + } else { + workP->unk0 = Hu3DModelLink(workBase[1].unk0); + } + break; + } + Hu3DModelCameraSet(workP->unk0, HU3D_CAM0); + Hu3DModelLayerSet(workP->unk0, 1); + workP->unk4 = 0; + workP->unk8 = 0; + workP->unkC = 2; + workP->unk10 = (s32)frand() % 360; + workP->unk14.x = 1500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk14.z = 500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk14.y = -250+(100*(0.3f*i)); + workP->unk20.x = 1500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk20.z = 500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk20.y = workP->unk14.y; + Hu3DModelPosSet(workP->unk0, workP->unk14.x, workP->unk14.y, workP->unk14.z); + Hu3DModelRotSet(workP->unk0, 0, workP->unk10, 0); + } + object->func = fn_1_7B50; +} + +float fn_1_9A18(float start, float end, float weight); + +void fn_1_7B50(omObjData *object) +{ + Work7C48 *workP = object->data; + s32 i; + for(i=0; i<8; i++, workP++) { + float dx; + float dz; + float vel; + float angle; + if(workP->unk4 == 0) { + vel = 1+(0.5*sind((workP->unk8*5)%180)); + } else { + vel = 3; + } + workP->unk14.x += vel*(workP->unkC*sind(workP->unk10)); + workP->unk14.z += vel*(workP->unkC*cosd(workP->unk10)); + dx = workP->unk20.x-workP->unk14.x; + dz = workP->unk20.z-workP->unk14.z; + angle = atan2d(dx, dz); + workP->unk10 = fn_1_9A18(angle, workP->unk10, 3.5f); + if((dx*dx)+(dz*dz) < 10000.0f) { + if(workP->unk4 == 0) { + workP->unk20.x = 2000*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk20.z = 700*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk20.y = workP->unk14.y; + } else { + if(workP->unk14.x < 0.0f) { + workP->unk20.x = -2500; + } else { + workP->unk20.x = 2500; + } + workP->unk20.z = 500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk20.y = workP->unk14.y; + } + } + Hu3DModelPosSet(workP->unk0, workP->unk14.x, workP->unk14.y, workP->unk14.z); + Hu3DModelRotSet(workP->unk0, 0, workP->unk10, 0); + workP->unk8 += frand()&0x3; + } +} + +void fn_1_7F74(omObjData *object) +{ + +} + +void fn_1_7F78(void) +{ + Work7C48 *workP = lbl_1_bss_A4->data; + s32 i; + for(i=0; i<8; i++, workP++) { + workP->unk4 = 1; + if(workP->unk14.x < 0.0f) { + workP->unk20.x = -2500; + } else { + workP->unk20.x = 2500; + } + workP->unk20.z = 500*((0.007874016f*((s32)frand() & 0x7F))-0.5f); + workP->unk20.y = workP->unk14.y; + } +} + +typedef struct work891C { + s16 unk0; + s16 unk2[2]; + s16 unk6; + Vec unk8; + Vec unk14; + float unk20; + float unk24; + float unk28; + float unk2C; + float unk30; + float unk34; + float unk38; + float unk3C; +} Work891C; + +void fn_1_8078(omObjData *object, Work891C *workP) +{ + s32 num = workP[0].unk6; + float ofsZ = -2000; + s32 i; + for(i=0; iunk0, workP->unk8.x, workP->unk8.y, workP->unk8.z+ofsZ); + modelMtx = &Hu3DData[workP->unk0].unk_F0; + MTXRotDeg(*modelMtx, 'Y', workP->unk28); + MTXRotDeg(rotZ, 'Z', workP->unk38); + MTXConcat(*modelMtx, rotZ, *modelMtx); + Hu3DModelAttrReset(workP->unk0, HU3D_ATTR_DISPOFF); + } +} + +float fn_1_8890(float start, float end, float weight); + +void fn_1_817C(omObjData *object) +{ + Work891C *workP = object->data; + s32 num = workP[0].unk6; + s32 i; + for(i=0; iunk14, &workP->unk8, &diff); + workP->unk2C = atan2d(diff.x, diff.z); + workP->unk28 = fn_1_8890(workP->unk28, workP->unk2C+workP->unk3C, 0.08f); + workP->unk24 += 0.05f*(600.0f-workP->unk24); + workP->unk20 += 0.2f*(workP->unk24-workP->unk20); + workP->unk8.x += (workP->unk20*0.016666668f)*sind(workP->unk28); + workP->unk8.z += (workP->unk20*0.016666668f)*cosd(workP->unk28); + workP->unk30 += workP->unk20*0.016666668f; + } + fn_1_8078(object, object->data); + +} + +void fn_1_841C(omObjData *object) +{ + s16 num = 12; + Work891C *workBase; + s32 modelId; + Work891C *work; + float radius; + float angle; + float ofsZ; + s32 i; + object->data = workBase = HuMemDirectMallocNum(HEAP_SYSTEM, num*sizeof(Work891C), MEMORY_DEFAULT_NUM); + memset(workBase, 0, num*sizeof(Work891C)); + modelId = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M456, 8)); + ofsZ = 1500; + work = workBase; + for(i=0; iunk0 = Hu3DModelLink(modelId); + Hu3DModelLayerSet(work->unk0, 6); + Hu3DModelCameraSet(work->unk0, 1); + Hu3DModelScaleSet(work->unk0, 7, 7, 7); + work->unk14.x = ((s32)frandmod(1000)*4.0f)-2000; + work->unk14.z = ((s32)frandmod(1000))-500.0f; + work->unk14.y = ((s32)frandmod(1000)*0.8f)+300; + angle = (s32)frandmod(360); + radius = ((s32)frandmod(250))+200.0f; + work->unk8.x = radius*sind(angle); + work->unk8.y = 0; + work->unk8.z = radius*cosd(angle); + VECAdd(&work->unk14, &work->unk8, &work->unk8); + work->unk38 = 60-((6.0f/55.0f)*radius); + work->unk28 = (s32)frandmod(360); + + work->unk3C = ((s32)frandmod(1000) < 500) ? (-70.0f+((s32)frandmod(50)*0.1f)) : (70.0f-((s32)frandmod(50)*0.1f)); + if(work->unk3C < 0.0f) { + work->unk38 = -work->unk38; + } + work->unk30 = 1; + work->unk34 = 0; + ofsZ -= 50.0f; + work->unk6 = num; + } + Hu3DModelKill(modelId); + object->func = fn_1_817C; +} + +float fn_1_8890(float start, float end, float weight) +{ + float angle = fmodf(end-start, 360); + if(angle < 0.0f) { + angle += 360.0f; + } + if(angle > 180.0f) { + angle -= 360.0f; + } + angle = fmodf(start+(weight*angle), 360); + if(angle < 0.0f) { + angle += 360.0f; + } + return angle; +} + +void fn_1_8CB8(ModelData *model, ParticleData *particle, Mtx matrix); + +void fn_1_89AC(void) +{ + StructBss90 *workP = lbl_1_bss_90 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(StructBss90), MEMORY_DEFAULT_NUM); + ParticleData *particle; + ModelData *modelP; + s16 *newWork; + s32 modelId; + memset(workP, 0, sizeof(StructBss90)); + workP->unk0[0] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 13), MEMORY_DEFAULT_NUM)); + workP->unk0[1] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 14), MEMORY_DEFAULT_NUM)); + workP->unk0[2] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 15), MEMORY_DEFAULT_NUM)); + workP->unk0[3] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M456, 16), MEMORY_DEFAULT_NUM)); + workP->unk20.y = 1; + workP->unk20.z = 0; + workP->unk10[0] = modelId = Hu3DParticleCreate(workP->unk0[0], 1); + Hu3DModelLayerSet(modelId, 6); + modelP = &Hu3DData[modelId]; + particle = modelP->unk_120; + particle->unk_2C = 1; + particle->unk_54 = fn_1_8CB8; + newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16)*4, modelP->unk_48); + memset(newWork, 0, 4*sizeof(s16)); + newWork[1] = 0; + workP->unk10[1] = modelId = Hu3DParticleCreate(workP->unk0[3], 10); + Hu3DModelLayerSet(modelId, 6); + modelP = &Hu3DData[modelId]; + particle = modelP->unk_120; + particle->unk_2C = 1; + particle->unk_54 = fn_1_8CB8; + newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16)*4, modelP->unk_48); + memset(newWork, 0, 4*sizeof(s16)); + newWork[1] = 1; + workP->unk10[2] = modelId = Hu3DParticleCreate(workP->unk0[2], 4); + Hu3DModelLayerSet(modelId, 6); + modelP = &Hu3DData[modelId]; + particle = modelP->unk_120; + particle->unk_2C = 1; + particle->unk_54 = fn_1_8CB8; + newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16)*4, modelP->unk_48); + memset(newWork, 0, 4*sizeof(s16)); + newWork[1] = 2; + workP->unk10[3] = modelId = Hu3DParticleCreate(workP->unk0[1], 6); + Hu3DModelLayerSet(modelId, 6); + modelP = &Hu3DData[modelId]; + particle = modelP->unk_120; + particle->unk_2C = 1; + particle->unk_54 = fn_1_8CB8; + newWork = particle->unk_1C = HuMemDirectMallocNum(HEAP_DATA, sizeof(s16)*4, modelP->unk_48); + memset(newWork, 0, 4*sizeof(s16)); + newWork[1] = 3; +} + +void fn_1_8C68(void) +{ + StructBss90 *workP = lbl_1_bss_90; + HuSprAnimKill(workP->unk0[0]); + HuSprAnimKill(workP->unk0[1]); + HuSprAnimKill(workP->unk0[2]); + HuSprAnimKill(workP->unk0[3]); +} + +float lbl_1_data_7B0[4] = { + 1000, + 200, + 600, + 1200 +}; + +float lbl_1_data_7C0[4] = { + 1, + 0.6, + 0.3, + 0.425 +}; + +void fn_1_8CB8(ModelData *model, ParticleData *particle, Mtx matrix) +{ + s16 unk8 = 0; + StructBss90 *workP = lbl_1_bss_90; + s16 *newWorkP = particle->unk_1C; + s32 unk14 = 0; + Vec pos = Center; + Vec rot = CRot; + float temp_f26; + float temp_f25; + float zoom = CZoom; + HsfanimStruct01 *temp_r31; + Vec sp3C; + Vec sp30; + Vec sp24; + Vec sp18; + float temp_f29; + float temp_f23; + s32 i; + switch(newWorkP[2]) { + case 0: + temp_r31 = particle->unk_48; + if(newWorkP[1]) { + sp18.x = 2000; + sp18.y = -300; + sp18.z = 500; + temp_f29 = 1/VECMagPoint(sp18.x, sp18.y, sp18.z); + sp18.x *= temp_f29; + sp18.y *= temp_f29; + sp18.z *= temp_f29; + temp_f23 = 3200.0f/particle->unk_30; + for(i=0; iunk_30; i++, temp_r31++) { + temp_f26 = 500.0+((temp_f23*i)+((0.25f*temp_f23)*((float)((s32)frand() & 0xFFFF)*0.0000152587890625))); + temp_f25 = temp_f26/3200; + temp_r31->unk14.x = temp_f26; + temp_r31->unk34.x = 1000+(temp_f26*sp18.x); + temp_r31->unk34.y = 4800+(temp_f26*sp18.y); + temp_r31->unk34.z = -3500+(temp_f26*sp18.z); + temp_r31->unk2C = ((0.7f*(temp_f25*temp_f25))+0.3f)*(lbl_1_data_7B0[newWorkP[1]]*(0.7f+(0.3f*((float)((s32)frand() & 0xFFFF)*0.0000152587890625)))); + temp_r31->unk40.r = (s32)(((float)((s32)frand() & 0xFFFF)*0.0000152587890625)*160.0)+32; + temp_r31->unk40.g = (s32)(((float)((s32)frand() & 0xFFFF)*0.0000152587890625)*96.0)+32; + temp_r31->unk40.b = (s32)(((float)((s32)frand() & 0xFFFF)*0.0000152587890625)*128.0)+32; + temp_r31->unk40.a = (255*lbl_1_data_7C0[newWorkP[1]]*(1.0-(0.4*temp_f25)))-(s32)(((float)((s32)frand() & 0xFFFF)*0.0000152587890625)*16.0); + temp_r31->unk14.z = temp_r31->unk40.a; + } + newWorkP[2]++; + } else { + temp_r31->unk34.x = 1000; + temp_r31->unk34.y = 4800; + temp_r31->unk34.z = -3500; + temp_r31->unk2C = 1000; + } + break; + + case 1: + sp3C.x = sind(rot.y)*cosd(rot.x); + sp3C.y = -sind(rot.x); + sp3C.z = cosd(rot.y)*cosd(rot.x); + sp30.x = 1000-(pos.x+(1.25f*(sp3C.x*zoom))); + sp30.y = 4800-(pos.y+(sp3C.y*zoom)); + sp30.z = -3500-(pos.z+(1.25f*(sp3C.z*zoom))); + temp_f29 = 1/VECMagPoint(sp30.x, sp30.y, sp30.z); + sp30.x *= temp_f29; + sp30.y *= temp_f29; + sp30.z *= temp_f29; + temp_f29 = -((-sp30.x*-sp3C.x)+(-sp30.y*-sp3C.y)+(-sp30.z*-sp3C.z)); + sp24.x = -sp3C.x+((-2.0f*sp30.x)*temp_f29); + sp24.y = -sp3C.y+((-2.0f*sp30.y)*temp_f29); + sp24.z = -sp3C.z+((-2.0f*sp30.z)*temp_f29); + temp_r31 = particle->unk_48; + for(i=0; iunk_30; i++, temp_r31++) { + temp_r31->unk34.x = 1000+(sp24.x*temp_r31->unk14.x); + temp_r31->unk34.y = 4800+(sp24.y*temp_r31->unk14.x); + temp_r31->unk34.z = -3500+(sp24.z*temp_r31->unk14.x); + temp_r31->unk40.a = temp_r31->unk14.z*workP->unk20.y; + } + break; + } + DCFlushRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); + +} + +void fn_1_97FC(float arg0) +{ + StructBss90 *workP = lbl_1_bss_90; + workP->unk20.y = arg0; + if(workP->unk20.y > 1.0f) { + workP->unk20.y = 1.0f; + } + if(workP->unk20.y <= 0.0f) { + Hu3DModelAttrSet(workP->unk10[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(workP->unk10[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(workP->unk10[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(workP->unk10[3], HU3D_ATTR_DISPOFF); + } else { + Hu3DModelAttrReset(workP->unk10[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(workP->unk10[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(workP->unk10[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(workP->unk10[3], HU3D_ATTR_DISPOFF); + } +} + +float fn_1_9900(float start, float end) +{ + float angleDiff; + if(start >= 360.0f) { + start -= 360.0f; + } else if(start < 0.0f) { + start += 360.0f; + } + if(end >= 360.0f) { + end -= 360.0f; + } else if(end < 0.0f) { + end += 360.0f; + } + angleDiff = start-end; + if(angleDiff <= -180.0f) { + angleDiff += 360.0f; + } else if(angleDiff >= 180.0f) { + angleDiff -= 360.0f; + } + return angleDiff; +} + +float fn_1_9A18(float start, float end, float max) +{ + float angle; + float diff; + + if(start >= 360.0) { + start -= 360.0; + } else if(start < 0.0) { + start += 360.0; + } + if(end >= 360.0) { + end -= 360.0; + } else if(end < 0.0) { + end += 360.0; + } + diff = 360.0+(start-end); + if(fabs(diff) >= 360.0) { + diff = fmod(diff, 360.0); + } + if(diff < 180.0) { + if(diff <= max) { + angle = diff; + } else { + angle = max; + } + } else if(360.0-diff <= max) { + angle = -(360.0-diff); + } else { + angle = -max; + } + angle += end; + if(angle >= 360.0) { + angle -= 360.0; + } else if(angle < 0.0) { + angle += 360.0; + } + + return angle; +} \ No newline at end of file diff --git a/src/REL/mentDll/common.c b/src/REL/mentDll/common.c new file mode 100644 index 00000000..63a3a0ef --- /dev/null +++ b/src/REL/mentDll/common.c @@ -0,0 +1,948 @@ +#include "math.h" +#include "ext_math.h" +#include "game/object.h" +#include "game/window.h" +#include "game/hsfman.h" +#include "game/process.h" +#include "game/objsub.h" +#include "game/wipe.h" +#include "game/board/tutorial.h" +#include "game/pad.h" +#include "REL/mentDll.h" +#include "game/printfunc.h" +#include "game/hsfmotion.h" +#include "game/sprite.h" + +#include "rel_sqrt_consts.h" + + +Process* lbl_1_bss_0; +//TODO: unknown type +extern s32 lbl_1_bss_A8[]; + +s32 lbl_1_data_0[][4] = { + { 0x00000037, 0x00000038, 0x00000036, 0x00000039 }, + { 0x00000043, 0x00000045, 0x00000044, 0x00000043 }, + { 0x00000040, 0x00000042, 0x00000041, 0x00000040 }, + { 0x0000004B, 0x0000004D, 0x0000004C, 0x0000004B }, + { 0x00000046, 0x00000048, 0x00000047, 0x00000046 }, + { 0x0000003E, 0x0000003F, 0x0000003E, 0x0000003E }, + { 0x0000003A, 0x0000003B, 0x0000003C, 0xFFFFFFFF }, +}; + +s32 lbl_1_data_70 = -1; + +// char lbl_1_data_74[] = ">>>>>>>>>> CAMERA DATA <<<<<<<<<<"; +// char lbl_1_data_96[] = "CENTER : %.2f, %.2f, %.2f"; +// char lbl_1_data_B0[] = "ROT : %.2f, %.2f, %.2f"; +// char lbl_1_data_CA[] = "ZOOM : %.2f"; + +extern s32 _prolog(); +extern void _epilog(); +void fn_1_144(void); +void fn_1_2318(s32); +typedef void (*VoidFunc)(void); +extern const VoidFunc _ctors[]; +extern const VoidFunc _dtors[]; + +void fn_1_0(omObjData* arg0) { + if (WipeStatGet() == 0) { + arg0->func = NULL; + omOvlReturnEx(1, 1); + } +} + +void fn_1_4C(omObjData* object) { + if (omSysExitReq != 0) { + object->func = fn_1_0; + WipeCreate(2, 0, -1); + } +} + +s32 _prolog(void) { + const VoidFunc* ctors = _ctors; + while (*ctors != 0) { + (**ctors)(); + ctors++; + } + fn_1_144(); + return 0; +} + +void _epilog(void) { + const VoidFunc* dtors = _dtors; + while (*dtors != 0) { + (**dtors)(); + dtors++; + } +} + +void fn_1_144(void) { + _ClearFlag(0x1000BU); + boardTutorialF = 0; + lbl_1_bss_0 = omInitObjMan(0x3E, 0x2000); + omGameSysInit(lbl_1_bss_0); + lbl_1_bss_A8[0] = omovlevtno; + lbl_1_bss_A8[1] = omovlstat; + fn_1_658C(lbl_1_bss_0); + omAddObjEx(lbl_1_bss_0, 0x2000, 0U, 0U, -1, fn_1_4C); +} + +f32 fn_1_20C(f32 arg8, f32 arg9, f32 argA, f32 argB) { + if (argB <= argA) { + return arg9; + } + return arg8 + ((argA / argB) * (arg9 - arg8)); +} + +f32 fn_1_234(f32 arg8, f32 arg9, f32 argA) { + return (arg9 + (arg8 * (argA - 1.0f))) / argA; +} + +//fn_1_254 +f32 fn_1_254(f32 arg8, f32 arg9, f32 argA, f32 argB) { + if (argA >= argB) { + return arg9; + } + return (arg8 + ((arg9 - arg8) * (1.0 - cos((M_PI * ((90.0f / argB) * argA)) / 180.0)))); +} + +//fn_1_32C +f32 fn_1_32C(f32 arg8, f32 arg9, f32 argA, f32 argB) { + if (argA >= argB) { + return arg9; + } + return (arg8 + ((arg9 - arg8) * sin((M_PI * ((90.0f / argB) * argA)) / 180.0))); +} + +f32 fn_1_3F4(f32 arg8, f32 arg9, f32 argA, f32 argB) { + if (argA >= argB) { + return arg8; + } + return (arg8 + ((arg9 - arg8) * sin((M_PI * ((360.0f / argB) * argA)) / 180.0))); +} + +void fn_1_4B0(s32 arg0) { + HuPrcSleep(arg0); +} + +void fn_1_4D8(void) { + HuPrcVSleep(); +} + +void fn_1_4F8(void) { + while (1) { + HuPrcVSleep(); + } +} + +void fn_1_50C(void) { + s32 temp_r3 = 0; + + temp_r3 = Hu3DGLightCreate(0.0f, 700.0f, 1200.0f, 0.0f, -1.0f, 0.0f, 255, 255, 255); + Hu3DGLightPosAimSet(temp_r3, 0.0f, 700.0f, 1200.0f, 0.0f, 0.0f, 640.0f); + Hu3DGLightInfinitytSet(temp_r3); +} + +void fn_1_5E8(s32 arg0) { + Point3d sp24 = {0.0f, 3000.0f, 800.0f}; + Point3d sp18 = {0.0f, 0.0f, 640.0f}; + Point3d spC = {0.0f, 1.0f, 0.0f}; + + if (arg0 == 3) { + sp24.x = sp18.x = 1200.0f; + } + Hu3DShadowCreate(45.0f, 2000.0f, 25000.0f); + Hu3DShadowTPLvlSet(0.8f); + Hu3DShadowPosSet(&sp24, &spC, &sp18); +} + +void fn_1_6D0(void) { + HuWinInit(1); +} + +void fn_1_6F4(s32 window, f32 centerX, f32 centerY, s32 toSmallF) +{ + WindowData* winPtr; + f32 smallPosX; + f32 smallPosY; + f32 winPosX; + f32 winPosY; + f32 width; + f32 height; + f32 smallScaleX; + f32 smallScaleY; + f32 posX; + f32 posY; + f32 scaleX; + f32 scaleY; + s32 time; + + winPtr = (WindowData *)&winData[window]; + winPosX = winPtr->pos_x; + winPosY = winPtr->pos_y; + width = winPtr->w; + height = winPtr->h; + smallPosX = winPosX + (width * centerX); + smallScaleX = 4.0f / width; + + // adjust horizontal position + if (((4.0f + smallPosX) - (winPosX + width)) >= 0.0f) { + smallPosX = (winPosX + width) - 4.0f; + } else { + if ((winPosX - (smallPosX - 2.0f)) >= 0.0f) { + smallPosX = winPosX; + } else { + smallPosX = smallPosX - 2.0f; + } + } + + smallPosY = winPosY + (height * centerY); + smallScaleY = 4.0f / height; + + // adjust vertical position + if (((4.0f + smallPosY) - (winPosY + height)) >= 0.0f) { + smallPosY = (winPosY + height) - 4.0f; + } else { + if ((winPosY - (smallPosY - 2.0f)) >= 0.0f) { + smallPosY = winPosY; + } else { + smallPosY = smallPosY - 2.0f; + } + } + + if (toSmallF != 0) { + HuWinPosSet(window, smallPosX, smallPosY); + HuWinScaleSet(window, smallScaleX, smallScaleY); + posX = smallPosX; + scaleX = smallScaleX; + posY = smallPosY; + scaleY = smallScaleY; + } else { + HuWinPosSet(window, winPosX, winPosY); + HuWinScaleSet(window, 1.0f, 1.0f); + posX = winPosX; + scaleX = 1.0f; + posY = winPosY; + scaleY = 1.0f; + } + HuWinDispOn(window); + + // animation loop + for (time = 0; time <= 15; ++time) { + HuPrcVSleep(); + if (toSmallF != 0) { + if (time <= 0xA) { + posX = (time >= 10.0f) ? winPosX : (f32)(smallPosX + ((winPosX - smallPosX) * sind(9.0f * time))); + scaleX = (time >= 10.0f) ? 1.0f : (f32)(smallScaleX + ((1.0f - smallScaleX) * sind(9.0f * time))); + } else { + posY = ((time - 0xA) >= 5.0f) ? winPosY : (f32)(smallPosY + ((winPosY - smallPosY) * sind(18.0f * (time - 0xA)))); + scaleY = ((time - 0xA) >= 5.0f) ? 1.0f : (f32)(smallScaleY + ((1.0f - smallScaleY) * sind(18.0f * (time - 0xA)))); + } + } else if (time <= 0xA) { + posY = (time >= 10.0f) ? smallPosY : (f32)(winPosY + ((smallPosY - winPosY) * sind(9.0f * time))); + scaleY = (time >= 10.0f) ? smallScaleY : (f32)(1.0 + ((smallScaleY - 1.0f) * sind(9.0f * time))); + } else { + posX = ((time - 0xA) >= 5.0f) ? smallPosX : (f32)(winPosX + ((smallPosX - winPosX) * sind(18.0f * (time - 0xA)))); + scaleX = ((time - 0xA) >= 5.0f) ? smallScaleX : (f32)(1.0 + ((smallScaleX - 1.0f) * sind(18.0f * (time - 0xA)))); + } + HuWinPosSet(window, posX, posY); + HuWinScaleSet(window, scaleX, scaleY); + } + + if (toSmallF != 0) { + HuWinPosSet(window, winPosX, winPosY); + HuWinScaleSet(window, 1.0f, 1.0f); + } else { + HuWinPosSet(window, smallPosX, smallPosY); + HuWinScaleSet(window, smallScaleX, smallScaleY); + } + HuPrcVSleep(); +} + +s32 fn_1_113C(s32 arg0, s32 arg1, s32 arg2, s32 arg3, f32 arg8, f32 arg9, s32 arg6, s32 arg4, s32 arg5) { + f32 sp14[2]; + s32 temp_r30; + + if (arg6 % 2 == 0) { + arg2 = (arg2 * 0x15) + 0x10; + arg3 = (arg3 * 0x1A) + 0x10; + arg1 = (445.0f - arg3); + switch (arg0) { + case -1: + arg0 = 0x10; + break; + case 0: + arg0 = (1.0f + ((576.0f - arg2) / 2)); + break; + case 1: + arg0 = (556.0f - arg2); + break; + } + } else { + HuWinMesMaxSizeGet(1, sp14, arg5); + arg2 = sp14[0]; + arg3 = sp14[1]; + arg0 = (556.0f - arg2); + arg1 = (445.0f - arg3); + } + temp_r30 = HuWinExCreateStyled(arg0, arg1, arg2, arg3, -1, 1); + if (arg6 == 1) { + HuWinAttrSet(temp_r30, 0x10U); + } + HuWinMesPalSet(temp_r30, 7U, 0U, 0U, 0U); + winData[temp_r30].active_pad = 1; + fn_1_6F4(temp_r30, arg8, arg9, 1); + return temp_r30; +} + +s32 fn_1_1434(s32 arg0, s32 arg1, s32 arg2) { + return fn_1_113C(arg0, 0, 0x15, 2, 0.5f, 0.5f, 2, 0, 0); +} + +void fn_1_164C(s32 arg0, f32 arg8, f32 arg9) { + HuWinMesSet(arg0, 0x250004); + HuPrcVSleep(); + fn_1_6F4(arg0, arg8, arg9, 0); + HuWinExCleanup(arg0); +} + +void fn_1_16AC(s32 arg0) { + HuWinMesSet(arg0, 0x250004); + HuPrcVSleep(); + fn_1_6F4(arg0, 0.5f, 0.5f, 0); + HuWinExCleanup(arg0); +} + +void fn_1_1714(s32 arg0, s32 arg1) { + if ((arg1 == -999) || (arg1 == 0)) { + return; + } + if (arg1 == -1000) { + do { + HuPrcVSleep(); + } while (HuWinStatGet(arg0) == 1); + return; + } + if (arg1 > 0) { + HuPrcSleep(arg1); + return; + } + HuWinComKeyReset(); + HuWinMesWait(arg0); + HuWinComKeyReset(); +} + +void fn_1_17A4(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { + s32 i; + s32 temp_r28 = 0; + s32 var_r30 = 0; + + (void)arg0; + + temp_r28 = HuWinKeyWaitNumGet(arg1); + if ((arg2 == -1) || (arg2 >= (s32) (temp_r28 - 1))) { + arg2 = temp_r28 - 1; + } + HuWinComKeyReset(); + for (i = 0; i < temp_r28; i++) { + var_r30 = 0; + do { + HuPrcVSleep(); + } while (HuWinStatGet(arg0) != 1); + + if (i == arg2) { + HuWinAttrSet(arg0, 0x400); + var_r30 = 1; + } + + while (1) { + HuPrcVSleep(); + if (var_r30 != 0) { + if (var_r30 == 1 && HuWinStatGet(arg0) != 1) { + var_r30 = 2; + } else if (var_r30 == 2) { + HuPrcSleep(arg3); + HuWinAttrReset(arg0, 0x400); + HuWinKeyWaitEntry(arg0); + break; + } + } else if (HuWinStatGet(arg0) != 1) { + break; + } + } + } + HuWinComKeyReset(); + HuWinMesWait(arg0); + HuWinComKeyReset(); + HuWinComKeyReset(); +} + +s32 fn_1_18D8(s32 arg0, s32 arg1) { + s32 temp_r31; + + HuWinComKeyReset(); + temp_r31 = HuWinChoiceGet(arg0, arg1); + HuWinComKeyReset(); + return temp_r31; +} + +void fn_1_1928(s32 arg0, s32 arg1, s32 arg2) { + HuWinInsertMesSet(arg0, arg1, arg2); +} + +void fn_1_1968(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { + if (arg3 == -999) { + HuWinMesSpeedSet(arg0, 0); + } else { + HuWinMesSpeedSet(arg0, 1); + } + HuWinMesSet(arg0, arg1); + if (arg2 == -1) { + if ((arg3 != -999) && (arg3 != 0)) { + if (arg3 == -1000) { + do { + HuPrcVSleep(); + } while (HuWinStatGet(arg0) == 1); + return; + } + if (arg3 > 0) { + HuPrcSleep(arg3); + return; + } + HuWinComKeyReset(); + HuWinMesWait(arg0); + HuWinComKeyReset(); + } + } else { + fn_1_17A4(arg0, arg1, arg2, arg3); + } +} + +s32 fn_1_1A5C(s32 arg0, s32 arg1, s32 arg2) { + s32 var_r28; + s32 var_r25 = 0; + + var_r28 = fn_1_113C(0, 0, 0, 0, 0.5f, 0.5f, arg1, 0, arg0); + HuWinMesSet(var_r28, arg0); + var_r25 = fn_1_18D8(var_r28, 0); + fn_1_164C(var_r28, 0.5f, 0.5f); + return var_r25; +} + +s32 fn_1_1DD8(s32 arg0, s32 arg1, s32 arg2) { + s32 var_r28; + s32 var_r25 = 0; + + var_r28 = fn_1_113C(0, 0, 0, 0, 0.5f, 0.5f, arg1, 0, arg0); + HuWinMesSet(var_r28, arg0); + var_r25 = fn_1_18D8(var_r28, 1); + fn_1_164C(var_r28, 0.5f, 0.5f); + return var_r25; +} + +s32 fn_1_2154(s32 arg0) { + f32 sp8[2]; + f32 temp_f29; + f32 temp_f28; + s32 ret; + f32 sizeX; + f32 sizeY; + + HuWinMesMaxSizeGet(1, sp8, arg0); + sizeX = sp8[0]; + sizeY = sp8[1]; + temp_f29 = (576.0f - sizeX) / 2; + temp_f28 = 385.0f - sizeY; + if (lbl_1_data_70 == -1) { + lbl_1_data_70 = ret = HuWinExCreateStyled(temp_f29, temp_f28, sizeX, sizeY, -1, 1); + } else { + fn_1_2318(0); + lbl_1_data_70 = ret = HuWinExCreateStyled(temp_f29, temp_f28, sizeX, sizeY, -1, 1); + } + HuWinBGTPLvlSet(lbl_1_data_70, 0.0f); + HuWinMesSet(lbl_1_data_70, arg0); + HuWinMesSpeedSet(lbl_1_data_70, 0); + HuWinDispOn(lbl_1_data_70); + return lbl_1_data_70; +} + +void fn_1_2318(s32 arg0) { + if (lbl_1_data_70 != -1) { + HuWinExCleanup(lbl_1_data_70); + lbl_1_data_70 = -1; + } +} + +void fn_1_236C(f32 arg9) { + MentDllUnkBss64Struct* temp = &lbl_1_bss_64; + + if ((HuPadBtn[0] & 0x200)) { + if ((HuPadBtn[0] & 0x20)) { + temp->center.z = temp->center.z - (HuPadStkY[0] / 10.0f); + } else { + temp->center.x += HuPadStkX[0] / 10.0f; + temp->center.y = temp->center.y + (HuPadStkY[0] / 10.0f); + } + } + if ((HuPadBtn[0] & 0x800)) { + temp->rot.x -= HuPadStkY[0] / 100.0f; + temp->rot.y = temp->rot.y + (HuPadStkX[0] / 100.0f); + if (temp->rot.x < 0.0f) { + temp->rot.x += 360.0f; + } + + if (temp->rot.x >= 360.0f) { + temp->rot.x -= 360.0f; + } + if (temp->rot.y < 0.0f) { + temp->rot.y += 360.0f; + } + if (temp->rot.y >= 360.0f) { + temp->rot.y -= 360.0f; + } + } + if ((HuPadBtn[0] & 0x400)) { + temp->zoom = temp->zoom - (HuPadStkY[0] / 10.0f); + } + print8(0x18, 0x28, 1.0f, ">>>>>>>>>> CAMERA DATA <<<<<<<<<<"); + print8(0x18, 0x32, 1.0f, "CENTER : %.2f, %.2f, %.2f", temp->center.x, temp->center.y, temp->center.z); + print8(0x18, 0x3C, 1.0f, "ROT : %.2f, %.2f, %.2f", temp->rot.x, temp->rot.y, temp->rot.z); + print8(0x18, 0x46, 1.0f, "ZOOM : %.2f", temp->zoom); +} + +void fn_1_2750(omObjData* obj) { + MentDllUnkBss64Struct* temp = &lbl_1_bss_64; + if (temp->func != NULL) { + temp->func(); + } + Center.x = temp->center.x; + Center.y = temp->center.y; + Center.z = temp->center.z; + CRot.x = temp->rot.x; + CRot.y = temp->rot.y; + CRot.z = temp->rot.z; + CZoom = temp->zoom; +} + +void fn_1_2808(void (*arg0)(void)) { + fn_1_29A0(&lbl_1_bss_64); + lbl_1_bss_64.func = arg0; +} + +void fn_1_2844(Process* arg0, void (*arg1)(void)) { + Hu3DCameraCreate(1); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraPerspectiveSet(1, 42.0f, 20.0f, 5000.0f, 1.2f); + lbl_1_bss_64.func = arg1; + lbl_1_bss_64.func2 = &fn_1_236C; + omAddObjEx(arg0, 0x7FDA, 0U, 0U, -1, omOutView); + omAddObjEx(arg0, 0x7FD9, 0U, 0U, -1, fn_1_2750); +} + +void fn_1_2964(MentDllUnkBss64Struct* arg0) { + arg0->center.x = arg0->prevCenter.x; + arg0->center.y = arg0->prevCenter.y; + arg0->center.z = arg0->prevCenter.z; + arg0->rot.x = arg0->prevRot.x; + arg0->rot.y = arg0->prevRot.y; + arg0->rot.z = arg0->prevRot.z; + arg0->zoom = arg0->prevZoom; +} + +void fn_1_29A0(MentDllUnkBss64Struct* arg0) { + arg0->unk_40 = 0.0f; + arg0->prevCenter.x = arg0->center.x; + arg0->prevCenter.y = arg0->center.y; + arg0->prevCenter.z = arg0->center.z; + arg0->prevRot.x = arg0->rot.x; + arg0->prevRot.y = arg0->rot.y; + arg0->prevRot.z = arg0->rot.z; + arg0->prevZoom = arg0->zoom; +} + +static inline f32 SmoothInterpolate(f32 arg0, f32 arg1, f32 arg2) { + return (arg1 + arg0 * (arg2 - 1.0f)) / arg2; +} + +void fn_1_29E4(MentDllUnkBss64Struct* arg0, MentDllUnkBss64Struct* arg1, f32 arg8) { + arg0->center.x = SmoothInterpolate(arg0->center.x, arg1->prevCenter.x, arg8); + arg0->center.y = SmoothInterpolate(arg0->center.y, arg1->prevCenter.y, arg8); + arg0->center.z = SmoothInterpolate(arg0->center.z, arg1->prevCenter.z, arg8); + arg0->rot.x = SmoothInterpolate(arg0->rot.x, arg1->prevRot.x, arg8); + arg0->rot.y = SmoothInterpolate(arg0->rot.y, arg1->prevRot.y, arg8); + arg0->rot.z = SmoothInterpolate(arg0->rot.z, arg1->prevRot.z, arg8); + arg0->zoom = SmoothInterpolate(arg0->zoom, arg1->prevZoom, arg8); +} + +void fn_1_2C50(MentDllUnkBss64Struct* arg0, f32 arg8) { + arg0->center.x = SmoothInterpolate(arg0->center.x, arg0->prevCenter.x, arg8); + arg0->center.y = SmoothInterpolate(arg0->center.y, arg0->prevCenter.y, arg8); + arg0->center.z = SmoothInterpolate(arg0->center.z, arg0->prevCenter.z, arg8); + arg0->rot.x = SmoothInterpolate(arg0->rot.x, arg0->prevRot.x, arg8); + arg0->rot.y = SmoothInterpolate(arg0->rot.y, arg0->prevRot.y, arg8); + arg0->rot.z = SmoothInterpolate(arg0->rot.z, arg0->prevRot.z, arg8); + arg0->zoom = SmoothInterpolate(arg0->zoom, arg0->prevZoom, arg8); +} + +inline f32 LinearInterpolation(f32 arg0, f32 arg1, f32 arg8, f32 arg9) { + if (arg9 <= arg8) { + return arg1; + } else { + return arg0 + ((arg8 / arg9) * (arg1 - arg0)); + } +} + +void fn_1_2EBC(MentDllUnkBss64Struct* arg0, MentDllUnkBss64Struct* arg1, f32 arg8, f32 arg9) { + arg1->prevCenter.x = LinearInterpolation(arg0->prevCenter.x, arg1->center.x, arg8, arg9); + arg1->prevCenter.y = LinearInterpolation(arg0->prevCenter.y, arg1->center.y, arg8, arg9); + arg1->prevCenter.z = LinearInterpolation(arg0->prevCenter.z, arg1->center.z, arg8, arg9); + + arg1->prevRot.x = LinearInterpolation(arg0->prevRot.x, arg1->rot.x, arg8, arg9); + arg1->prevRot.y = LinearInterpolation(arg0->prevRot.y, arg1->rot.y, arg8, arg9); + arg1->prevRot.z = LinearInterpolation(arg0->prevRot.z, arg1->rot.z, arg8, arg9); + + arg1->prevZoom = LinearInterpolation(arg0->prevZoom, arg1->zoom, arg8, arg9); +} + +void fn_1_3138(MentDllUnkBss64Struct* arg0, MentDllUnkBss64Struct* arg1, f32 arg8, f32 arg9) { + arg1->prevCenter.x = LinearInterpolation(arg0->prevCenter.x, arg1->center.x, arg8, arg9); + arg1->prevCenter.y = LinearInterpolation(arg0->prevCenter.y, arg1->center.y, arg8, arg9); + arg1->prevCenter.z = LinearInterpolation(arg0->prevCenter.z, arg1->center.z, arg8, arg9); + + arg1->prevRot.x = LinearInterpolation(arg0->prevRot.x, arg1->rot.x, arg8, arg9); + arg1->prevRot.y = LinearInterpolation(arg0->prevRot.y, arg1->rot.y, arg8, arg9); + arg1->prevRot.z = LinearInterpolation(arg0->prevRot.z, arg1->rot.z, arg8, arg9); + + arg1->prevZoom = LinearInterpolation(arg0->prevZoom, arg1->zoom, arg8, arg9); + + arg0->center.x = arg1->prevCenter.x; + arg0->center.y = arg1->prevCenter.y; + arg0->center.z = arg1->prevCenter.z; + arg0->rot.x = arg1->prevRot.x; + arg0->rot.y = arg1->prevRot.y; + arg0->rot.z = arg1->prevRot.z; + arg0->zoom = arg1->prevZoom; +} + +void fn_1_33EC(MentDllUnkBss64Struct* arg0, MentDllUnkBss64Struct* arg1, f32 arg8, f32 arg9, f32 argA) { + arg1->prevCenter.x = LinearInterpolation(arg0->prevCenter.x, arg1->center.x, arg8, arg9); + arg1->prevCenter.y = LinearInterpolation(arg0->prevCenter.y, arg1->center.y, arg8, arg9); + arg1->prevCenter.z = LinearInterpolation(arg0->prevCenter.z, arg1->center.z, arg8, arg9); + + arg1->prevRot.x = LinearInterpolation(arg0->prevRot.x, arg1->rot.x, arg8, arg9); + arg1->prevRot.y = LinearInterpolation(arg0->prevRot.y, arg1->rot.y, arg8, arg9); + arg1->prevRot.z = LinearInterpolation(arg0->prevRot.z, arg1->rot.z, arg8, arg9); + + arg1->prevZoom = LinearInterpolation(arg0->prevZoom, arg1->zoom, arg8, arg9); + + arg0->center.x = SmoothInterpolate(arg0->center.x, arg1->prevCenter.x, argA); + arg0->center.y = SmoothInterpolate(arg0->center.y, arg1->prevCenter.y, argA); + arg0->center.z = SmoothInterpolate(arg0->center.z, arg1->prevCenter.z, argA); + + arg0->rot.x = SmoothInterpolate(arg0->rot.x, arg1->prevRot.x, argA); + arg0->rot.y = SmoothInterpolate(arg0->rot.y, arg1->prevRot.y, argA); + arg0->rot.z = SmoothInterpolate(arg0->rot.z, arg1->prevRot.z, argA); + + arg0->zoom = SmoothInterpolate(arg0->zoom, arg1->prevZoom, argA); +} + +void fn_1_3858(MentDllUnkBss64Struct* arg0, MentDllUnkBss64Struct* arg1, f32 arg8, f32 arg9) { + arg1->prevCenter.x = fn_1_32C(arg0->prevCenter.x, arg1->center.x, arg8, arg9); + arg1->prevCenter.y = fn_1_32C(arg0->prevCenter.y, arg1->center.y, arg8, arg9); + arg1->prevCenter.z = fn_1_32C(arg0->prevCenter.z, arg1->center.z, arg8, arg9); + + arg1->prevRot.x = fn_1_32C(arg0->prevRot.x, arg1->rot.x, arg8, arg9); + arg1->prevRot.y = fn_1_32C(arg0->prevRot.y, arg1->rot.y, arg8, arg9); + arg1->prevRot.z = fn_1_32C(arg0->prevRot.z, arg1->rot.z, arg8, arg9); + + arg1->prevZoom = fn_1_32C(arg0->prevZoom, arg1->zoom, arg8, arg9); +} + +void fn_1_3CAC(MentDllUnkBss64Struct* arg0, MentDllUnkBss64Struct* arg1, f32 arg8, f32 arg9) { + arg1->prevCenter.x = fn_1_32C(arg0->prevCenter.x, arg1->center.x, arg8, arg9); + arg1->prevCenter.y = fn_1_32C(arg0->prevCenter.y, arg1->center.y, arg8, arg9); + arg1->prevCenter.z = fn_1_32C(arg0->prevCenter.z, arg1->center.z, arg8, arg9); + + arg1->prevRot.x = fn_1_32C(arg0->prevRot.x, arg1->rot.x, arg8, arg9); + arg1->prevRot.y = fn_1_32C(arg0->prevRot.y, arg1->rot.y, arg8, arg9); + arg1->prevRot.z = fn_1_32C(arg0->prevRot.z, arg1->rot.z, arg8, arg9); + + arg1->prevZoom = fn_1_32C(arg0->prevZoom, arg1->zoom, arg8, arg9); + + arg0->center.x = arg1->prevCenter.x; + arg0->center.y = arg1->prevCenter.y; + arg0->center.z = arg1->prevCenter.z; + + arg0->rot.x = arg1->prevRot.x; + arg0->rot.y = arg1->prevRot.y; + arg0->rot.z = arg1->prevRot.z; + + arg0->zoom = arg1->prevZoom; +} + +void fn_1_4138(MentDllUnkBss64Struct* arg0, MentDllUnkBss64Struct* arg1, f32 arg8, f32 arg9, f32 argA) { + arg1->prevCenter.x = fn_1_32C(arg0->prevCenter.x, arg1->center.x, arg8, arg9); + arg1->prevCenter.y = fn_1_32C(arg0->prevCenter.y, arg1->center.y, arg8, arg9); + arg1->prevCenter.z = fn_1_32C(arg0->prevCenter.z, arg1->center.z, arg8, arg9); + + arg1->prevRot.x = fn_1_32C(arg0->prevRot.x, arg1->rot.x, arg8, arg9); + arg1->prevRot.y = fn_1_32C(arg0->prevRot.y, arg1->rot.y, arg8, arg9); + arg1->prevRot.z = fn_1_32C(arg0->prevRot.z, arg1->rot.z, arg8, arg9); + + arg1->prevZoom = fn_1_32C(arg0->prevZoom, arg1->zoom, arg8, arg9); + + arg0->center.x = SmoothInterpolate(arg0->center.x, arg1->prevCenter.x, argA); + arg0->center.y = SmoothInterpolate(arg0->center.y, arg1->prevCenter.y, argA); + arg0->center.z = SmoothInterpolate(arg0->center.z, arg1->prevCenter.z, argA); + + arg0->rot.x = SmoothInterpolate(arg0->rot.x, arg1->prevRot.x, argA); + arg0->rot.y = SmoothInterpolate(arg0->rot.y, arg1->prevRot.y, argA); + arg0->rot.z = SmoothInterpolate(arg0->rot.z, arg1->prevRot.z, argA); + + arg0->zoom = SmoothInterpolate(arg0->zoom, arg1->prevZoom, argA); +} + +void fn_1_4790(MentDllUnkBss64Struct* arg0, MentDllUnkBss64Struct* arg1, f32 arg8, f32 arg9) { + arg1->prevCenter.x = fn_1_254(arg0->prevCenter.x, arg1->center.x, arg8, arg9); + arg1->prevCenter.y = fn_1_254(arg0->prevCenter.y, arg1->center.y, arg8, arg9); + arg1->prevCenter.z = fn_1_254(arg0->prevCenter.z, arg1->center.z, arg8, arg9); + + arg1->prevRot.x = fn_1_254(arg0->prevRot.x, arg1->rot.x, arg8, arg9); + arg1->prevRot.y = fn_1_254(arg0->prevRot.y, arg1->rot.y, arg8, arg9); + arg1->prevRot.z = fn_1_254(arg0->prevRot.z, arg1->rot.z, arg8, arg9); + + arg1->prevZoom = fn_1_254(arg0->prevZoom, arg1->zoom, arg8, arg9); +} + +void fn_1_4C54(MentDllUnkBss64Struct* arg0, MentDllUnkBss64Struct* arg1, f32 arg8, f32 arg9) { + arg1->prevCenter.x = fn_1_254(arg0->prevCenter.x, arg1->center.x, arg8, arg9); + arg1->prevCenter.y = fn_1_254(arg0->prevCenter.y, arg1->center.y, arg8, arg9); + arg1->prevCenter.z = fn_1_254(arg0->prevCenter.z, arg1->center.z, arg8, arg9); + + arg1->prevRot.x = fn_1_254(arg0->prevRot.x, arg1->rot.x, arg8, arg9); + arg1->prevRot.y = fn_1_254(arg0->prevRot.y, arg1->rot.y, arg8, arg9); + arg1->prevRot.z = fn_1_254(arg0->prevRot.z, arg1->rot.z, arg8, arg9); + + arg1->prevZoom = fn_1_254(arg0->prevZoom, arg1->zoom, arg8, arg9); + + arg0->center.x = arg1->prevCenter.x; + arg0->center.y = arg1->prevCenter.y; + arg0->center.z = arg1->prevCenter.z; + + arg0->rot.x = arg1->prevRot.x; + arg0->rot.y = arg1->prevRot.y; + arg0->rot.z = arg1->prevRot.z; + + arg0->zoom = arg1->prevZoom; +} + +void fn_1_5150(MentDllUnkBss64Struct* arg0, MentDllUnkBss64Struct* arg1, f32 arg8, f32 arg9, f32 argA) { + arg1->prevCenter.x = fn_1_254(arg0->prevCenter.x, arg1->center.x, arg8, arg9); + arg1->prevCenter.y = fn_1_254(arg0->prevCenter.y, arg1->center.y, arg8, arg9); + arg1->prevCenter.z = fn_1_254(arg0->prevCenter.z, arg1->center.z, arg8, arg9); + + arg1->prevRot.x = fn_1_254(arg0->prevRot.x, arg1->rot.x, arg8, arg9); + arg1->prevRot.y = fn_1_254(arg0->prevRot.y, arg1->rot.y, arg8, arg9); + arg1->prevRot.z = fn_1_254(arg0->prevRot.z, arg1->rot.z, arg8, arg9); + + arg1->prevZoom = fn_1_254(arg0->prevZoom, arg1->zoom, arg8, arg9); + + arg0->center.x = SmoothInterpolate(arg0->center.x, arg1->prevCenter.x, argA); + arg0->center.y = SmoothInterpolate(arg0->center.y, arg1->prevCenter.y, argA); + arg0->center.z = SmoothInterpolate(arg0->center.z, arg1->prevCenter.z, argA); + + arg0->rot.x = SmoothInterpolate(arg0->rot.x, arg1->prevRot.x, argA); + arg0->rot.y = SmoothInterpolate(arg0->rot.y, arg1->prevRot.y, argA); + arg0->rot.z = SmoothInterpolate(arg0->rot.z, arg1->prevRot.z, argA); + + arg0->zoom = SmoothInterpolate(arg0->zoom, arg1->prevZoom, argA); +} + +void fn_1_5818(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + switch (arg4) { + case 0: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0); + break; + case 1: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000001); + break; + case 2: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000002); + break; + } + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; +} + +void fn_1_59A0(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + if (arg0->work[3] != arg0->motion[arg2]) { + arg0->work[3] = arg0->motion[arg2]; + switch (arg4) { + case 0: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0); + break; + case 1: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000001); + break; + case 2: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, 0x40000002); + break; + } + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; + } +} + +void fn_1_5B50(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3) { + (void)arg1; + Hu3DMotionShiftSet(arg0->model[1], arg0->motion[arg1], 0.0f, arg3, 0); + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; + arg0->work[0] = 1; + arg0->work[1] = arg2; + arg0->work[2] = arg3 + 1; +} + +void fn_1_5C08(omObjData* arg0) { + s32 temp; + + if (arg0->work[0] != 0) { + if (arg0->work[2] != 0) { + arg0->work[2] -= 1; + return; + } + if ((arg0->work[2] == 0) && (Hu3DMotionEndCheck(arg0->model[1]) != 0)) { + temp = arg0->work[1]; + Hu3DMotionShiftSet(arg0->model[1], arg0->motion[temp], 0.0f, 15.0f, 0x40000001); + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; + } + } +} + +void fn_1_5CDC(omObjData* arg0, s32 arg1, s32 arg2) { + HuPrcSleep(arg2 + 1); + do { + HuPrcVSleep(); + } while (Hu3DMotionEndCheck(arg0->model[arg1]) == 0); +} + +void fn_1_5D38(omObjData *arg0, s32 arg1, Vec arg2, float arg8, float arg9, float argA, s32 arg3, s32 arg4) +{ + s32 temp_r29 = 0; + s32 temp_r28 = 0; + + Vec sp4C; + Vec sp40; + Vec sp34; + Vec sp28; + Vec sp1C; + Vec sp10; + sp40.x = Hu3DData[arg0->model[arg1]].pos.x; + sp40.y = Hu3DData[arg0->model[arg1]].pos.y; + sp40.z = Hu3DData[arg0->model[arg1]].pos.z; + sp34.x = arg2.x; + sp34.y = arg2.y; + sp34.z = arg2.z; + sp1C.x = Hu3DData[arg0->model[arg1]].rot.x; + sp1C.y = Hu3DData[arg0->model[arg1]].rot.y; + sp1C.z = Hu3DData[arg0->model[arg1]].rot.z; + sp10.x = 0; + sp10.y = arg8; + sp10.z = 0; + if(sp34.x-sp40.x >= 0.0f) { + temp_r29 = 1; + } else { + temp_r29 = 0; + } + if(sp34.z-sp40.z >= 0.0f) { + temp_r28 = 1; + } else { + temp_r28 = 0; + } + while(arg3) { + fn_1_4D8(); + sp28.y = -(atan2d(sp34.z-sp40.z, sp34.x-sp40.x)-90); + if(sp28.y < 0.0f) { + sp28.y += 360.0f; + } else if(sp28.y >= 360.0f) { + sp28.y -= 360.0f; + } + if(arg4) { + if(sp28.y >= 180.0f) { + if(sp1C.y-sp28.y >= 180.0f) { + sp1C.y -= 360.0f; + } + if(sp1C.y-sp28.y < -180.0f) { + sp1C.y += 360.0f; + } + } else { + if(sp1C.y-sp28.y > 180.0f) { + sp1C.y -= 360.0f; + } + if(sp1C.y-sp28.y <= -180.0f) { + sp1C.y += 360.0f; + } + } + } + sp4C.x = sp40.x = sp40.x+(arg9*sind(sp28.y)); + sp4C.z = sp40.z = sp40.z+(arg9*cosd(sp28.y)); + if(temp_r29 == 1) { + if(sp40.x >= sp34.x) { + sp4C.x = sp40.x = sp34.x; + temp_r29 = 2; + } + } else if(temp_r29 == 0) { + if(sp40.x <= sp34.x) { + sp4C.x = sp40.x = sp34.x; + temp_r29 = 2; + } + } + if(temp_r28 == 1) { + if(sp40.z >= sp34.z) { + sp4C.z = sp40.z = sp34.z; + temp_r28 = 2; + } + } else if(temp_r28 == 0) { + if(sp40.z <= sp34.z) { + sp4C.z = sp40.z = sp34.z; + temp_r28 = 2; + } + } + if(arg4) { + sp1C.y = fn_1_234(sp1C.y, sp28.y, argA); + } + Hu3DModelPosSet(arg0->model[arg1], sp4C.x, sp40.y, sp4C.z); + Hu3DModelRotSet(arg0->model[arg1], sp1C.x, sp1C.y, sp1C.z); + if(temp_r29 == 2 && temp_r28 == 2) { + break; + } + } + sp1C.y = Hu3DData[arg0->model[arg1]].rot.y; + if(arg4) { + s32 temp_r27; + for(temp_r27=0; temp_r27<=argA; temp_r27++) { + fn_1_4D8(); + if(sp10.y >= 180.0f) { + if(sp1C.y-sp10.y >= 180.0f) { + sp1C.y -= 360.0f; + } + if(sp1C.y-sp10.y < -180.0f) { + sp1C.y += 360.0f; + } + } else { + if(sp1C.y-sp10.y > 180.0f) { + sp1C.y -= 360.0f; + } + if(sp1C.y-sp10.y <= -180.0f) { + sp1C.y += 360.0f; + } + } + sp10.z = fn_1_20C(sp1C.y, sp10.y, temp_r27, argA); + Hu3DModelRotSet(arg0->model[arg1], sp1C.x, sp10.z, sp1C.z); + } + } +} + +void fn_1_6534(s32 grpId, s32 memberNo, float posX, float posY) +{ + HuSprPosSet(grpId, memberNo, posX, posY+0.5f); +} \ No newline at end of file diff --git a/src/REL/mentDll/main.c b/src/REL/mentDll/main.c index b7016353..2fe946cc 100644 --- a/src/REL/mentDll/main.c +++ b/src/REL/mentDll/main.c @@ -13,7 +13,6 @@ #include "game/sprite.h" #include "game/window.h" #include "game/wipe.h" - #include "REL/mentDll.h" typedef struct MentDllUnkBssE4Struct { @@ -156,23 +155,6 @@ void fn_1_C174(s32 arg0); void fn_1_E654(s32 arg0); void fn_1_E71C(s32 arg0); -s32 lbl_1_data_0[][4] = { - { 0x00000037, 0x00000038, 0x00000036, 0x00000039 }, - { 0x00000043, 0x00000045, 0x00000044, 0x00000043 }, - { 0x00000040, 0x00000042, 0x00000041, 0x00000040 }, - { 0x0000004B, 0x0000004D, 0x0000004C, 0x0000004B }, - { 0x00000046, 0x00000048, 0x00000047, 0x00000046 }, - { 0x0000003E, 0x0000003F, 0x0000003E, 0x0000003E }, - { 0x0000003A, 0x0000003B, 0x0000003C, 0xFFFFFFFF }, -}; - -s32 lbl_1_data_70 = -1; - -char lbl_1_data_74[] = ">>>>>>>>>> CAMERA DATA <<<<<<<<<<"; -char lbl_1_data_96[] = "CENTER : %.2f, %.2f, %.2f"; -char lbl_1_data_B0[] = "ROT : %.2f, %.2f, %.2f"; -char lbl_1_data_CA[] = "ZOOM : %.2f"; - Vec lbl_1_data_D8[6] = { { 0.0f, 0.0f, 460.0f }, { -240.0f, 0.0f, 460.0f }, @@ -204,7 +186,7 @@ s32 lbl_1_bss_A8[8]; MentDllUnkBss64Struct lbl_1_bss_64; s32 lbl_1_bss_24[16]; s32 lbl_1_bss_14[4]; -s32 lbl_1_bss_0[5]; +s32 lbl_1_bss_8[3]; void fn_1_658C(Process *arg0) { @@ -315,7 +297,7 @@ void fn_1_6C4C(void) s32 var_r28 = 0; { GXColor sp10 = { 0x00, 0x00, 0x80, 0x80 }; - while (TRUE) { + while (1) { fn_1_4D8(); if (HuPadBtnDown[0] & PAD_TRIGGER_R) { var_r28++; @@ -452,7 +434,7 @@ void fn_1_7218(void) } lbl_1_bss_D8 = 1; HuPrcEnd(); - while (TRUE) { + while (1) { HuPrcVSleep(); } } @@ -520,7 +502,7 @@ void fn_1_7684(void) CharARAMOpen(GWPlayerCfg[2].character); CharARAMOpen(GWPlayerCfg[3].character); omOvlCallEx(spC[GWSystem.board], 1, 0, 0); - while (TRUE) { + while (1) { fn_1_4D8(); } } @@ -558,18 +540,18 @@ void fn_1_7858(void) void fn_1_7900(void) { - float sp8[18]; + MentDllUnkBss64Struct sp8; MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - sp8[2] = lbl_1_bss_DC; - sp8[3] = 60.0f; - sp8[4] = 0.0f; - sp8[8] = 0.0f; - sp8[9] = 0.0f; - sp8[10] = 0.0f; - sp8[14] = 850.0f; - fn_1_4138(var_r31, sp8, var_r31->unk_40++, 10.0f, 5.0f); + sp8.center.x = lbl_1_bss_DC; + sp8.center.y = 60.0f; + sp8.center.z = 0.0f; + sp8.rot.x = 0.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 850.0f; + fn_1_4138(var_r31, &sp8, var_r31->unk_40++, 10.0f, 5.0f); } s32 lbl_1_data_2F0 = -1; @@ -783,7 +765,7 @@ void fn_1_85C8(void) saveExecF = 0; if (GWGameStat.party_continue == 1) { var_r31 = fn_1_1434(0, 0, 0); - while (TRUE) { + while (1) { fn_1_4D8(); fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 4, 0xF, 1); fn_1_1968(var_r31, 0x1A0001, -1, 5); @@ -887,7 +869,7 @@ s32 fn_1_8B68(void) } var_r27 = fn_1_1434(0, 0, 0); HuAudFXPlay(lbl_1_data_0[var_r28][2]); - while (TRUE) { + while (1) { fn_1_4D8(); fn_1_4D8(); fn_1_5818(lbl_1_bss_33AC[var_r28].unk_00, 1, 4, 0xF, 1); @@ -898,7 +880,7 @@ s32 fn_1_8B68(void) lbl_1_bss_35BC[0].unk_04 = (MentDllUnkFunc)fn_1_1FF4C; var_r25 = 0x63; var_r23 = 0; - while (TRUE) { + while (1) { fn_1_4D8(); var_r30 = 0; for (var_r31 = 0; var_r31 < 4; var_r31++) { @@ -1021,7 +1003,7 @@ s32 fn_1_8FB8(void) lbl_1_bss_3114[var_r31].unk_04 = (MentDllUnkFunc)fn_1_15CB4; } } - while (TRUE) { + while (1) { fn_1_4D8(); for (var_r31 = 0; var_r31 < 4; var_r31++) { if ((lbl_1_bss_3114[var_r31].unk_60 == 0) && (HuPadBtnDown[lbl_1_bss_3114[var_r31].unk_6C] & PAD_BUTTON_A)) { @@ -1813,7 +1795,7 @@ void fn_1_B654(omObjData *arg0, MentDllUnkBss35BCStruct *arg1) case 0: var_r30 = 1; fn_1_14CE0(); - while (TRUE) { + while (1) { fn_1_4D8(); switch (var_r29) { case 1: @@ -1974,7 +1956,7 @@ void fn_1_C174(s32 arg0) omOvlCallEx(spC[GWSystem.board], 1, 0, 0); break; } - while (TRUE) { + while (1) { fn_1_4D8(); } } @@ -2027,7 +2009,7 @@ void fn_1_C4B8(void) return; } var_r31 = fn_1_1434(0, 0, 0); - while (TRUE) { + while (1) { fn_1_4D8(); fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 4, 0xF, 1); fn_1_1968(var_r31, 0x1E0001, -1, 5); @@ -2108,7 +2090,7 @@ void fn_1_C4B8(void) } } } - while (TRUE) { + while (1) { fn_1_4D8(); } } @@ -2176,14 +2158,14 @@ s32 fn_1_CD8C(void) sp8 = 0; fn_1_1CF68(); var_r31 = fn_1_1434(0, 0, 0); - while (TRUE) { + while (1) { fn_1_4D8(); fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 4, 0xF, 1); fn_1_1968(var_r31, 0x1E005E, -1, -1); fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 1, 0xF, 1); fn_1_2154(0x1A0020); lbl_1_bss_3114->unk_04 = (MentDllUnkFunc)fn_1_1E404; - while (TRUE) { + while (1) { if (lbl_1_bss_3114->unk_70[0] == 1) { var_r30 = 1; break; @@ -2230,7 +2212,7 @@ s32 fn_1_CF8C(void) var_r28 = -1; var_r27 = -1; var_r31 = fn_1_1434(0, 0, 0); - while (TRUE) { + while (1) { fn_1_4D8(); fn_1_59A0(lbl_1_bss_33AC[0].unk_00, 1, 4, 0xF, 1); fn_1_1968(var_r31, 0x1E0009, -1, -1); @@ -2239,7 +2221,7 @@ s32 fn_1_CF8C(void) lbl_1_bss_35BC[1].unk_08[1] = 0; fn_1_1DED8(); lbl_1_bss_35BC[0].unk_04 = (MentDllUnkFunc)fn_1_1E8A4; - while (TRUE) { + while (1) { fn_1_4D8(); if ((var_r28 != lbl_1_bss_35BC[0].unk_08[0]) || (var_r27 != lbl_1_bss_35BC[0].unk_1C[lbl_1_bss_35BC[0].unk_08[0] - 1])) { var_r28 = lbl_1_bss_35BC[0].unk_08[0]; @@ -2679,7 +2661,7 @@ void fn_1_E71C(s32 arg0) HuAudSeqAllFadeOut(0x3E8); HuAudSStreamAllFadeOut(0x3E8); omOvlCallEx(spC[GWSystem.board], 1, 0, 0); - while (TRUE) { + while (1) { fn_1_4D8(); } } @@ -2855,7 +2837,7 @@ void fn_1_1053C(void) HuAudFXAllStop(); HuAudSStreamAllStop(); omOvlGotoEx(OVL_OPTION, 1, 0, 0); - while (TRUE) { + while (1) { fn_1_4D8(); } } @@ -2913,7 +2895,7 @@ void fn_1_10C5C(void) HuAudFXAllStop(); HuAudSStreamAllStop(); omOvlGotoEx(OVL_PRESENT, 1, 0, 0); - while (TRUE) { + while (1) { fn_1_4D8(); } } @@ -2988,7 +2970,7 @@ void fn_1_114A0(void) MGSeqKillAll(); HuAudFadeOut(1); omOvlReturnEx(1, 1); - while (TRUE) { + while (1) { fn_1_4D8(); } } @@ -3033,7 +3015,7 @@ void fn_1_116F4(void) lbl_1_bss_366C.unk_04 = (MentDllUnkFunc)fn_1_FEAC; break; } - while (TRUE) { + while (1) { fn_1_4D8(); if (lbl_1_bss_366C.unk_04 == NULL) { continue; @@ -3208,7 +3190,7 @@ void fn_1_121D8(void) fn_1_18788(lbl_1_bss_35BC, 0, 0, 0); } } - while (TRUE) { + while (1) { fn_1_4D8(); if (lbl_1_bss_35BC[var_r30].unk_04 == NULL) { continue; @@ -3343,7 +3325,7 @@ void fn_1_12E40(void) lbl_1_bss_33AC[var_r30].unk_04 = NULL; lbl_1_bss_33AC[var_r30].unk_30 = var_r30; fn_1_12A0C(var_r31, var_r30); - while (TRUE) { + while (1) { fn_1_4D8(); if (lbl_1_bss_33AC[var_r30].unk_04 != NULL) { lbl_1_bss_33AC[var_r30].unk_04(var_r31, &lbl_1_bss_33AC[var_r30]); @@ -3376,7 +3358,7 @@ void fn_1_134A8(void) lbl_1_bss_3354.unk_00 = var_r31; lbl_1_bss_3354.unk_04 = NULL; fn_1_13348(var_r31); - while (TRUE) { + while (1) { fn_1_4D8(); if (lbl_1_bss_3354.unk_04 != NULL) { lbl_1_bss_3354.unk_04(var_r31, &lbl_1_bss_3354); @@ -3461,7 +3443,7 @@ void fn_1_13970(void) else { fn_1_1368C(var_r27, var_r26); } - while (TRUE) { + while (1) { fn_1_4D8(); if (lbl_1_bss_3114[var_r26].unk_04 == NULL) { continue; @@ -3475,29 +3457,29 @@ void fn_1_13D60(void) MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - var_r31->unk_08 = 0.0f; - var_r31->unk_0C = 0.0f; - var_r31->unk_10 = 0.0f; - var_r31->unk_20 = -10.0f; - var_r31->unk_24 = 0.0f; - var_r31->unk_28 = 0.0f; - var_r31->unk_38 = 2900.0f; + var_r31->center.x = 0.0f; + var_r31->center.y = 0.0f; + var_r31->center.z = 0.0f; + var_r31->rot.x = -10.0f; + var_r31->rot.y = 0.0f; + var_r31->rot.z = 0.0f; + var_r31->zoom = 2900.0f; } void fn_1_13DEC(void) { - float sp8[18]; + MentDllUnkBss64Struct sp8; MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - sp8[2] = 0.0f; - sp8[3] = 0.0f; - sp8[4] = 0.0f; - sp8[8] = -10.0f; - sp8[9] = 0.0f; - sp8[10] = 0.0f; - sp8[14] = 1150.0f; - fn_1_4138(var_r31, sp8, var_r31->unk_40++, 180.0f, 15.0f); + sp8.center.x = 0.0f; + sp8.center.y = 0.0f; + sp8.center.z = 0.0f; + sp8.rot.x = -10.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 1150.0f; + fn_1_4138(var_r31, &sp8, var_r31->unk_40++, 180.0f, 15.0f); } void fn_1_13EDC(void) @@ -3505,98 +3487,98 @@ void fn_1_13EDC(void) MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - var_r31->unk_08 = 0.0f; - var_r31->unk_0C = 0.0f; - var_r31->unk_10 = 0.0f; - var_r31->unk_20 = -10.0f; - var_r31->unk_24 = 0.0f; - var_r31->unk_28 = 0.0f; - var_r31->unk_38 = 2900.0f; + var_r31->center.x = 0.0f; + var_r31->center.y = 215.0f; + var_r31->center.z = 0.0f; + var_r31->rot.x = 0.0f; + var_r31->rot.y = 0.0f; + var_r31->rot.z = 0.0f; + var_r31->zoom = 1600.0f; } void fn_1_13F68(void) { - float sp8[18]; + MentDllUnkBss64Struct sp8; MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - sp8[2] = 0.0f; - sp8[3] = 215.0f; - sp8[4] = 0.0f; - sp8[8] = 0.0f; - sp8[9] = 0.0f; - sp8[10] = 0.0f; - sp8[14] = 1600.0f; - fn_1_4138(var_r31, sp8, var_r31->unk_40++, 60.0f, 10.0f); + sp8.center.x = 0.0f; + sp8.center.y = 215.0f; + sp8.center.z = 0.0f; + sp8.rot.x = 0.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 1600.0f; + fn_1_4138(var_r31, &sp8, var_r31->unk_40++, 60.0f, 10.0f); } void fn_1_14058(void) { - float sp8[18]; + MentDllUnkBss64Struct sp8; MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - sp8[2] = 0.0f; - sp8[3] = 215.0f; - sp8[4] = 0.0f; - sp8[8] = 0.0f; - sp8[9] = 0.0f; - sp8[10] = 0.0f; - sp8[14] = 1600.0f; - fn_1_4138(var_r31, sp8, var_r31->unk_40++, 10.0f, 5.0f); + sp8.center.x = 0.0f; + sp8.center.y = 215.0f; + sp8.center.z = 0.0f; + sp8.rot.x = 0.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 1600.0f; + fn_1_4138(var_r31, &sp8, var_r31->unk_40++, 10.0f, 5.0f); } void fn_1_14148(void) { - float sp8[18]; + MentDllUnkBss64Struct sp8; MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - sp8[2] = 1200.0f; - sp8[3] = 215.0f; - sp8[4] = 0.0f; - sp8[8] = 0.0f; - sp8[9] = 0.0f; - sp8[10] = 0.0f; - sp8[14] = 1600.0f; - fn_1_4138(var_r31, sp8, var_r31->unk_40++, 10.0f, 5.0f); + sp8.center.x = 1200.0f; + sp8.center.y = 215.0f; + sp8.center.z = 0.0f; + sp8.rot.x = 0.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 1600.0f; + fn_1_4138(var_r31, &sp8, var_r31->unk_40++, 10.0f, 5.0f); } void fn_1_14238(void) { - float sp8[18]; + MentDllUnkBss64Struct sp8; MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - sp8[2] = 0.0f; - sp8[3] = 125.0f; - sp8[4] = 0.0f; - sp8[8] = -5.0f; - sp8[9] = 0.0f; - sp8[10] = 0.0f; - sp8[14] = 1750.0f; - fn_1_4138(var_r31, sp8, var_r31->unk_40++, 30.0f, 10.0f); + sp8.center.x = 0.0f; + sp8.center.y = 125.0f; + sp8.center.z = 0.0f; + sp8.rot.x = -5.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 1750.0f; + fn_1_4138(var_r31, &sp8, var_r31->unk_40++, 30.0f, 10.0f); } void fn_1_14328(void) { - float sp8[18]; + MentDllUnkBss64Struct sp8; MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - sp8[2] = 1200.0f; - sp8[3] = 125.0f; - sp8[4] = 0.0f; - sp8[8] = -5.0f; - sp8[9] = 0.0f; - sp8[10] = 0.0f; - sp8[14] = 1750.0f; - fn_1_4138(var_r31, sp8, var_r31->unk_40++, 30.0f, 10.0f); + sp8.center.x = 1200.0f; + sp8.center.y = 125.0f; + sp8.center.z = 0.0f; + sp8.rot.x = -5.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 1750.0f; + fn_1_4138(var_r31, &sp8, var_r31->unk_40++, 30.0f, 10.0f); } void fn_1_14418(void) { - float sp8[18]; + MentDllUnkBss64Struct sp8; MentDllUnkBss64Struct *var_r31; s32 var_r30; @@ -3607,19 +3589,19 @@ void fn_1_14418(void) fn_1_5818(lbl_1_bss_35BC[var_r30].unk_00, 5, 5, 0, 0); HuAudFXPlay(0x7D); } - sp8[2] = 0.0f; + sp8.center.x = 0.0f; if (var_r30 == 1) { - sp8[2] = 1200.0f; - } - sp8[3] = 100.0f; - sp8[4] = 460.0f; - sp8[8] = 0.0f; - sp8[9] = 0.0f; - sp8[10] = 0.0f; - sp8[14] = 125.0f; - fn_1_4138(var_r31, sp8, var_r31->unk_40, 180.0f, 10.0f); - if (var_r31->unk_40++ >= 0x5A) { - if (var_r31->unk_40 == 0x5B) { + sp8.center.x = 1200.0f; + } + sp8.center.y = 100.0f; + sp8.center.z = 460.0f; + sp8.rot.x = 0.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 125.0f; + fn_1_4138(var_r31, &sp8, var_r31->unk_40, 180.0f, 10.0f); + if (var_r31->unk_40++ >= 90) { + if (var_r31->unk_40 == 91) { if (var_r30 == 0) { lbl_1_bss_24[10] = HuAudFXPlay(0x22); } @@ -3627,57 +3609,57 @@ void fn_1_14418(void) lbl_1_bss_24[10] = HuAudFXPlay(0x23); } } - var_r31->unk_20 = fn_1_20C(var_r31->unk_20, -45.0f, var_r31->unk_40 - 0x5A, 90.0f); + var_r31->rot.x = fn_1_20C(var_r31->rot.x, -45.0f, var_r31->unk_40 - 0x5A, 90.0f); Hu3DData[lbl_1_bss_35BC[var_r30].unk_00->model[4]].rot.x = fn_1_20C(0.0f, 45.0f, var_r31->unk_40 - 0x5A, 90.0f); } } void fn_1_146D0(void) { - float sp8[18]; + MentDllUnkBss64Struct sp8; MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - sp8[2] = 0.0f; - sp8[3] = 215.0f; - sp8[4] = 0.0f; - sp8[8] = 0.0f; - sp8[9] = 0.0f; - sp8[10] = 0.0f; - sp8[14] = 1600.0f; - fn_1_5150(var_r31, sp8, var_r31->unk_40++, 30.0f, 10.0f); + sp8.center.x = 0.0f; + sp8.center.y = 215.0f; + sp8.center.z = 0.0f; + sp8.rot.x = 0.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 1600.0f; + fn_1_5150(var_r31, &sp8, var_r31->unk_40++, 30.0f, 10.0f); } void fn_1_147C0(void) { - float sp8[18]; + MentDllUnkBss64Struct sp8; MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - sp8[2] = 1200.0f; - sp8[3] = 215.0f; - sp8[4] = 0.0f; - sp8[8] = 0.0f; - sp8[9] = 0.0f; - sp8[10] = 0.0f; - sp8[14] = 1600.0f; - fn_1_5150(var_r31, sp8, var_r31->unk_40++, 30.0f, 10.0f); + sp8.center.x = 1200.0f; + sp8.center.y = 215.0f; + sp8.center.z = 0.0f; + sp8.rot.x = 0.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 1600.0f; + fn_1_5150(var_r31, &sp8, var_r31->unk_40++, 30.0f, 10.0f); } void fn_1_148B0(void) { - float sp8[18]; + MentDllUnkBss64Struct sp8; MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - sp8[2] = 0.0f; - sp8[3] = 30.0f; - sp8[4] = 0.0f; - sp8[8] = -5.0f; - sp8[9] = 0.0f; - sp8[10] = 0.0f; - sp8[14] = 1100.0f; - fn_1_4138(var_r31, sp8, var_r31->unk_40++, 30.0f, 10.0f); + sp8.center.x = 0.0f; + sp8.center.y = 30.0f; + sp8.center.z = 0.0f; + sp8.rot.x = -5.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 1100.0f; + fn_1_4138(var_r31, &sp8, var_r31->unk_40++, 10.0f, 5.0f); } void fn_1_149A0(void) @@ -3685,13 +3667,13 @@ void fn_1_149A0(void) MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - var_r31->unk_08 = 0.0f; - var_r31->unk_0C = 125.0f; - var_r31->unk_10 = 0.0f; - var_r31->unk_20 = 5.0f; - var_r31->unk_24 = 0.0f; - var_r31->unk_28 = 0.0f; - var_r31->unk_38 = 1750.0f; + var_r31->center.x = 0.0f; + var_r31->center.y = 125.0f; + var_r31->center.z = 0.0f; + var_r31->rot.x = -5.0f; + var_r31->rot.y = 0.0f; + var_r31->rot.z = 0.0f; + var_r31->zoom = 1750.0f; } void fn_1_14A2C(void) @@ -3699,29 +3681,29 @@ void fn_1_14A2C(void) MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - var_r31->unk_08 = 1200.0f; - var_r31->unk_0C = 125.0f; - var_r31->unk_10 = 0.0f; - var_r31->unk_20 = -4.0f; - var_r31->unk_24 = 0.0f; - var_r31->unk_28 = 0.0f; - var_r31->unk_38 = 1750.0f; + var_r31->center.x = 1200.0f; + var_r31->center.y = 125.0f; + var_r31->center.z = 0.0f; + var_r31->rot.x = -5.0f; + var_r31->rot.y = 0.0f; + var_r31->rot.z = 0.0f; + var_r31->zoom = 1750.0f; } void fn_1_14AB8(void) { - float sp8[18]; + MentDllUnkBss64Struct sp8; MentDllUnkBss64Struct *var_r31; var_r31 = &lbl_1_bss_64; - sp8[2] = 0.0f; - sp8[3] = 125.0f; - sp8[4] = 0.0f; - sp8[8] = 0.0f; - sp8[9] = 0.0f; - sp8[10] = 0.0f; - sp8[14] = 125.0f; - fn_1_5150(var_r31, sp8, var_r31->unk_40++, 120.0f, 10.0f); + sp8.center.x = 0.0f; + sp8.center.y = 125.0f; + sp8.center.z = 460.0f; + sp8.rot.x = 0.0f; + sp8.rot.y = 0.0f; + sp8.rot.z = 0.0f; + sp8.zoom = 125.0f; + fn_1_5150(var_r31, &sp8, var_r31->unk_40++, 120.0f, 10.0f); } void fn_1_14BA8(void) @@ -4087,86 +4069,71 @@ s32 fn_1_1648C(MentDllUnkBss3114Struct *arg0) var_r28 = 0; var_r29 = lbl_1_bss_35BC[0].unk_30; -loop_1: - fn_1_4D8(); - var_r28 = 0; - var_r26 = arg0->unk_64; - if (HuPadStkX[lbl_1_bss_3114->unk_6C] >= 5) { - block_3: - if (lbl_1_bss_A8[5] == 1) { - arg0->unk_64++; - var_r28 = 1; - if (arg0->unk_64 > 3) { - arg0->unk_64 = 0; + while(1) { + fn_1_4D8(); + var_r28 = 0; + var_r26 = arg0->unk_64; + if(HuPadStkX[lbl_1_bss_3114->unk_6C] >= 5 || (HuPadBtn[lbl_1_bss_3114->unk_6C] & PAD_BUTTON_RIGHT)) { + if(lbl_1_bss_A8[5] == 1) { + arg0->unk_64++; + var_r28 = 1; + if(arg0->unk_64 > 3) { + arg0->unk_64 = 0; + } + } else { + arg0->unk_64++; + var_r28 = 1; + if(arg0->unk_64 > 2) { + arg0->unk_64 = 0; + } } - } - else { - arg0->unk_64++; - var_r28 = 1; - if (arg0->unk_64 > 2) { - arg0->unk_64 = 0; + } else if(HuPadStkX[lbl_1_bss_3114->unk_6C] <= -5 || (HuPadBtn[lbl_1_bss_3114->unk_6C] & PAD_BUTTON_LEFT)) { + if(lbl_1_bss_A8[5] == 1) { + arg0->unk_64--; + var_r28 = -1; + if(arg0->unk_64 < 0) { + arg0->unk_64 = 3; + } + } else { + arg0->unk_64--; + var_r28 = -1; + if(arg0->unk_64 < 0) { + arg0->unk_64 = 2; + } } + } else if(HuPadBtnDown[0] & PAD_BUTTON_A) { + var_r27 = 1; + HuAudFXPlay(2); + break; + } else if(HuPadBtnDown[0] & PAD_BUTTON_B) { + var_r27 = 0; + HuAudFXPlay(3); + break; } - block_19: - if (arg0->unk_64 != var_r26) { + if(arg0->unk_64 != var_r26) { HuAudFXPlay(0); - for (var_r30 = 0; var_r30 <= 5; var_r30++) { + for(var_r30=0; var_r30<=5; var_r30++) { fn_1_4D8(); - var_f31 = fn_1_32C(lbl_1_data_57C[arg0->unk_68 % 4][0], lbl_1_data_57C[arg0->unk_68 % 4][0] + (var_r28 * 0xA), var_r30, 5.0f); - HuSprPosSet(var_r29, arg0->unk_58 + 0x20, var_f31, lbl_1_data_57C[arg0->unk_68 / 4][1] + 0x23); - HuSprPosSet(var_r29, arg0->unk_58 + 0x24, 1.0f + var_f31, lbl_1_data_57C[arg0->unk_68 / 4][1] + 0x25); + var_f31 = fn_1_32C(lbl_1_data_57C[arg0->unk_68%4][0], lbl_1_data_57C[arg0->unk_68%4][0]+(var_r28*10), var_r30, 5); + HuSprPosSet(var_r29, arg0->unk_58+32, var_f31, lbl_1_data_57C[arg0->unk_68/4][1]+35); + HuSprPosSet(var_r29, arg0->unk_58+36, 1+var_f31, lbl_1_data_57C[arg0->unk_68/4][1]+37); } - HuSprBankSet(var_r29, arg0->unk_58 + 0x20, arg0->unk_64); - for (var_r30 = 0; var_r30 <= 5; var_r30++) { + HuSprBankSet(var_r29, arg0->unk_58+32, arg0->unk_64); + for(var_r30=0; var_r30<=5; var_r30++) { fn_1_4D8(); - var_f31 = fn_1_32C(lbl_1_data_57C[arg0->unk_68 % 4][0] + (var_r28 * 0xA), lbl_1_data_57C[arg0->unk_68 % 4][0], var_r30, 5.0f); - HuSprPosSet(var_r29, arg0->unk_58 + 0x20, var_f31, lbl_1_data_57C[arg0->unk_68 / 4][1] + 0x23); - HuSprPosSet(var_r29, arg0->unk_58 + 0x24, 1.0f + var_f31, lbl_1_data_57C[arg0->unk_68 / 4][1] + 0x25); + var_f31 = fn_1_32C(lbl_1_data_57C[arg0->unk_68%4][0]+(var_r28*10), lbl_1_data_57C[arg0->unk_68%4][0], var_r30, 5); + HuSprPosSet(var_r29, arg0->unk_58+32, var_f31, lbl_1_data_57C[arg0->unk_68/4][1]+35); + HuSprPosSet(var_r29, arg0->unk_58+36, 1+var_f31, lbl_1_data_57C[arg0->unk_68/4][1]+37); } } - goto loop_1; } - if ((HuPadBtn[lbl_1_bss_3114->unk_6C] & PAD_BUTTON_RIGHT) != 0) { - goto block_3; - } - if (HuPadStkX[lbl_1_bss_3114->unk_6C] <= -5) { - block_10: - if (lbl_1_bss_A8[5] == 1) { - arg0->unk_64--; - var_r28 = -1; - if (arg0->unk_64 < 0) { - arg0->unk_64 = 3; - } - } - else { - arg0->unk_64--; - var_r28 = -1; - if (arg0->unk_64 < 0) { - arg0->unk_64 = 2; - } - } - goto block_19; - } - if ((HuPadBtn[lbl_1_bss_3114->unk_6C] & PAD_BUTTON_LEFT) != 0) { - goto block_10; - } - if ((HuPadBtnDown[0] & PAD_BUTTON_A) != 0) { - var_r27 = 1; - HuAudFXPlay(2); - } - else if ((HuPadBtnDown[0] & PAD_BUTTON_B) != 0) { - var_r27 = 0; - HuAudFXPlay(3); - } - else { - goto block_19; - } - if (var_r27 == 1) { - HuSprPosSet(var_r29, arg0->unk_58 + 0x31, lbl_1_data_57C[arg0->unk_68 % 4][0], lbl_1_data_57C[arg0->unk_68 / 4][1] + 0x23); - HuSprBankSet(var_r29, arg0->unk_58 + 0x31, arg0->unk_64); - HuSprAttrReset(var_r29, arg0->unk_58 + 0x31, 4); - HuSprAttrSet(var_r29, arg0->unk_58 + 0x20, 4); + if(var_r27 == 1) { + HuSprPosSet(var_r29, arg0->unk_58+49, lbl_1_data_57C[arg0->unk_68%4][0], lbl_1_data_57C[arg0->unk_68/4][1]+35); + HuSprBankSet(var_r29, arg0->unk_58+49, arg0->unk_64); + HuSprAttrReset(var_r29, arg0->unk_58+49, 4); + HuSprAttrSet(var_r29, arg0->unk_58+32, 4); } + return var_r27; } @@ -5438,7 +5405,7 @@ void fn_1_1D4FC(MentDllUnkBss35BCStruct *arg0, s32 arg1, s32 arg2, s32 arg3) { 0x00000070, 0x0000011A }, { 0x000001D2, 0x0000011A }, }; - arg0->unk_30 = var_r30 = HuSprGrpCreate(0x22); + arg0->unk_30 = var_r30 = (s16)HuSprGrpCreate(0x22); var_r29 = HuSprCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_MENT, 0x58)), 0x7D0, 0); HuSprGrpMemberSet(var_r30, 0, var_r29); HuSprTPLvlSet(var_r30, 0, 0.8f); @@ -6264,7 +6231,7 @@ void fn_1_21134(omObjData *object) var_r29 = &lbl_1_bss_64; for (var_r31 = 1; var_r31 < 0xA; var_r31++) { - if ((var_r29->unk_38 <= 1200.0f) || (lbl_1_bss_16C4[var_r31].unk_1C == -200.0f)) { + if ((var_r29->zoom <= 1200.0f) || (lbl_1_bss_16C4[var_r31].unk_1C == -200.0f)) { if (lbl_1_bss_16C4[var_r31].unk_1C >= -100.0f) { lbl_1_bss_16C4[var_r31].unk_00 = 0; lbl_1_bss_16C4[var_r31].unk_1C = -200.0f; @@ -6285,9 +6252,9 @@ void fn_1_21134(omObjData *object) } } for (var_r31 = 0xA; var_r31 < 0x8C; var_r31++) { - if ((lbl_1_bss_16C4[var_r31].unk_24 == 0.0f) && (lbl_1_bss_16C4[var_r31].unk_14 > (var_r29->unk_38 - 400.0f)) - && (lbl_1_bss_16C4[var_r31].unk_0C < (200.0f + var_r29->unk_08)) && (lbl_1_bss_16C4[var_r31].unk_0C > (var_r29->unk_08 - 200.0f))) { - if (var_r29->unk_08 >= lbl_1_bss_16C4[var_r31].unk_0C) { + if ((lbl_1_bss_16C4[var_r31].unk_24 == 0.0f) && (lbl_1_bss_16C4[var_r31].unk_14 > (var_r29->zoom - 400.0f)) + && (lbl_1_bss_16C4[var_r31].unk_0C < (200.0f + var_r29->center.x)) && (lbl_1_bss_16C4[var_r31].unk_0C > (var_r29->center.x - 200.0f))) { + if (var_r29->center.x >= lbl_1_bss_16C4[var_r31].unk_0C) { lbl_1_bss_16C4[var_r31].unk_24 = -300.0f; } else { diff --git a/src/REL/mpexDll/charsel.c b/src/REL/mpexDll/charsel.c new file mode 100644 index 00000000..180626fa --- /dev/null +++ b/src/REL/mpexDll/charsel.c @@ -0,0 +1,3107 @@ +#include "ext_math.h" +#include "game/armem.h" +#include "game/audio.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + +#include "REL/mpexDll.h" + +typedef void (*MpexDllUnkFunc2)(omObjData *, ...); + +typedef struct MpexDllUnkStruct4 { + /* 0x00 */ omObjData *unk_00; + /* 0x04 */ MpexDllUnkFunc2 unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ s32 unk_0C; + /* 0x10 */ s32 unk_10; + /* 0x14 */ s32 unk_14; + /* 0x18 */ char pad_18[0x10]; /* maybe part of unk_14[5]? */ + /* 0x28 */ s32 unk_28; + /* 0x2C */ s32 unk_2C; + /* 0x30 */ s32 unk_30; + /* 0x34 */ s32 unk_34; + /* 0x38 */ char pad_38[0x10]; /* maybe part of unk_34[5]? */ + /* 0x48 */ s32 unk_48; + /* 0x4C */ s32 unk_4C; + /* 0x50 */ s32 unk_50; + /* 0x54 */ s32 unk_54; + /* 0x58 */ s32 unk_58; + /* 0x5C */ s32 unk_5C; +} MpexDllUnkStruct4; /* size = 0x60 */ + +void fn_1_1490C(void); +void fn_1_14B28(void); +void fn_1_14E54(void); +void fn_1_14EF0(void); +void fn_1_151C8(void); +void fn_1_154A4(void); +void fn_1_15774(void); +void fn_1_157C4(void); +void fn_1_15D48(void); +void fn_1_16320(void); +void fn_1_16600(s32 arg0); +void fn_1_16874(s32); +void fn_1_168F0(s32 arg0, s32 arg1); +void fn_1_16D3C(s32 arg0); +void fn_1_17170(s32); +void fn_1_17374(void); +void fn_1_17B04(omObjData *arg0, MpexDllUnkStruct4 *arg1); +void fn_1_18610(MpexDllUnkStruct4 *arg0); +void fn_1_18D30(MpexDllUnkStruct4 *arg0); +void fn_1_18DCC(omObjData *arg0, MpexDllUnkStruct4 *arg1); +s32 fn_1_19A98(MpexDllUnkStruct4 *arg0); +void fn_1_1A3BC(void); +void fn_1_1A5A4(s32 arg0); +void fn_1_1AEFC(s32); +void fn_1_1AF78(s32 arg0); +void fn_1_1B0DC(s32); +void fn_1_1B294(void); +void fn_1_1B338(void); +s32 fn_1_1B42C(s32 arg0); +s32 fn_1_1B4AC(s32 arg0); +float fn_1_1B52C(float, float, float, float); // seems implicit in main.c +float fn_1_1B554(float, float, float); // seems implicit in main.c +float fn_1_1B574(float, float, float, float); // seems implicit in main.c +float fn_1_1B64C(float, float, float, float); // seems implcit in main.c +void fn_1_1B834(void); +void fn_1_1B9F4(void); +void fn_1_1BA78(u32 arg0, s32 arg1, s32 arg2); +void fn_1_1BB4C(u32 arg0, s32 arg1); +void fn_1_1BF1C(u32 arg0); +void fn_1_1C120(void); +void fn_1_1C174(void); +void fn_1_1C478(void); +void fn_1_1C77C(void); +void fn_1_1CABC(s32 arg0); + +u8 lbl_1_bss_6AC; +s32 lbl_1_bss_63C[0x1C]; +MpexDllUnkStruct4 lbl_1_bss_5DC; +MpexDllUnkStruct4 lbl_1_bss_45C[4]; +s32 lbl_1_bss_448[5]; +s32 lbl_1_bss_444; +Process *lbl_1_bss_440; + +void fn_1_1264C(Process *arg0) +{ + s32 var_r31; + + lbl_1_bss_440 = arg0; + fn_1_1490C(); + fn_1_16320(); + fn_1_1A3BC(); + HuPrcChildCreate(fn_1_1B294, 0x3E8, 0x2000, 0, lbl_1_bss_440); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuPrcChildCreate(fn_1_1B338, 0x3E8, 0x2000, 0, lbl_1_bss_440); + } +} + +s32 fn_1_126EC(s32 arg0) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + + var_r29 = -1; + fn_1_14EF0(); + fn_1_1B834(); + fn_1_1BA78(0x1A0005, -1, -1); + fn_1_1B7D0(1); + fn_1_1BF1C(0x330091); + lbl_1_bss_5DC.unk_04 = (MpexDllUnkFunc2)fn_1_157C4; + var_r29 = -1; + while (TRUE) { + fn_1_1B7D0(1); + var_r30 = 0; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_14 == 0) { + var_r30++; + } + } + if (var_r29 != var_r30) { + var_r29 = var_r30; + fn_1_1BA78(var_r30 + 0x1A001B, -1, 1); + } + if (lbl_1_bss_5DC.unk_28 != 0) { + continue; + } + if (HuPadBtnDown[0] & PAD_BUTTON_A) { + HuAudFXPlay(2); + var_r28 = 1; + break; + } + else if (HuPadBtnDown[0] & PAD_BUTTON_B) { + HuAudFXPlay(3); + var_r28 = 0; + break; + } + } + fn_1_15774(); + lbl_1_bss_5DC.unk_04 = NULL; + fn_1_1C120(); + if (var_r28 == 1) { + var_r27 = 0; + var_r26 = 0; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_50 == 0) { + var_r27++; + } + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (var_r26 < var_r27) { + if (HuPadStatGet(var_r31) != -1) { + lbl_1_bss_45C[var_r31].unk_50 = 0; + var_r26++; + } + else { + lbl_1_bss_45C[var_r31].unk_50 = 1; + } + } + else { + lbl_1_bss_45C[var_r31].unk_50 = 1; + } + } + } + fn_1_1B9F4(); + fn_1_154A4(); + return var_r28; +} + +s32 fn_1_12910(s32 arg0, s32 arg1) +{ + s32 sp10; + s32 spC; + + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r27; + + sp10 = 0; + spC = 0; + var_r30 = 0; + if (arg1 == 1) { + var_r30 = 1; + for (var_r31 = 1; var_r31 < 4; var_r31++) { + lbl_1_bss_45C[var_r31].unk_50 = 1; + } + } + else { + var_r30 = 4; + } + fn_1_17374(); + if (arg0 == 0) { + fn_1_16D3C(0); + } + fn_1_1B834(); + fn_1_1B7D0(1); + if (arg1 == 1) { + fn_1_1BA78(0x1E005E, -1, -1); + } + else { + fn_1_1BA78(0x1A0009, -1, -1); + } + fn_1_1BF1C(0x330092); + for (var_r31 = 0; var_r31 < var_r30; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_50 == 0) { + lbl_1_bss_45C[var_r31].unk_04 = (MpexDllUnkFunc2)fn_1_17B04; + } + } + while (TRUE) { + fn_1_1B7D0(1); + if ((lbl_1_bss_45C->unk_08 == 0) && ((*HuPadBtnDown & 0x200) != 0)) { + HuAudFXPlay(3); + if (lbl_1_bss_5DC.unk_10 == 1) { + lbl_1_bss_5DC.unk_10 = 0; + continue; + } + var_r27 = 0; + break; + } + else { + for (var_r31 = 0; var_r31 < var_r30; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_50 == 0 && lbl_1_bss_45C[var_r31].unk_08 != 1) { + break; + } + } + if (var_r31 == var_r30) { + var_r27 = 2; + break; + } + } + } + for (var_r31 = 0; var_r31 < var_r30; var_r31++) { + lbl_1_bss_45C[var_r31].unk_04 = NULL; + } + fn_1_1C120(); + fn_1_1B9F4(); + if (var_r27 == 0) { + fn_1_17170(0); + return 0; + } + var_r29 = 0; + for (var_r31 = 0; var_r31 < var_r30; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_50 != 0) { + lbl_1_bss_45C[var_r31].unk_5C = 0; + var_r29++; + } + } + if ((var_r29 == 0) || ((arg1 == 2) && (var_r29 == 2))) { + fn_1_17170(0); + return 2; + } + if (arg1 == 2) { + lbl_1_bss_45C[1].unk_4C = 0; + } + return 1; +} + +void fn_1_12BEC(s32 arg0) +{ + fn_1_12910(arg0, 4); +} + +s32 fn_1_12C18(s32 arg0, s32 arg1) +{ + s32 spC; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + + var_r30 = -1; + var_r27 = -1; + var_r26 = -1; + var_r24 = -1; + spC = 0; + if (arg0 != 0) { + if (arg1 == 2) { + fn_1_168F0(0, 2); + } + else { + fn_1_168F0(0, 1); + } + } + fn_1_1B834(); + while (TRUE) { + fn_1_1B7D0(1); + var_r25 = 0; + for (var_r31 = 0; var_r31 < arg1; var_r31++) { + if ((lbl_1_bss_45C[var_r31].unk_50 != 0) && (lbl_1_bss_45C[var_r31].unk_08 == 0)) { + var_r25++; + } + } + if (var_r26 == -1) { + fn_1_1BB4C(var_r25 + 0x1A0023, 1); + fn_1_1BA78(0x1A0028, -1, var_r26); + } + else { + fn_1_1BB4C(var_r25 + 0x1A0023, 1); + fn_1_1BA78(0x1A0028, -1, var_r26); + } + var_r26 = 1; + fn_1_1BF1C(0x330092); + for (var_r31 = 0; var_r31 < arg1; var_r31++) { + if ((lbl_1_bss_45C[var_r31].unk_50 != 0) && (lbl_1_bss_45C[var_r31].unk_08 == 0)) { + var_r30 = var_r31; + lbl_1_bss_45C[var_r31].unk_0C = var_r27; + fn_1_18610(&lbl_1_bss_45C[var_r31]); + lbl_1_bss_45C[var_r31].unk_04 = (MpexDllUnkFunc2)fn_1_18DCC; + break; + } + } + while (TRUE) { + fn_1_1B7D0(1); + if (((HuPadBtnDown[lbl_1_bss_45C->unk_58] & 0x200) != 0) && (lbl_1_bss_45C[var_r30].unk_08 == 0) && (lbl_1_bss_5DC.unk_30 == 0)) { + HuAudFXPlay(3); + if (var_r27 == -1) { + var_r29 = 0; + } + else { + var_r29 = 1; + } + break; + } + else if (lbl_1_bss_45C[var_r30].unk_08 == 1) { + for (var_r31 = 0; var_r31 < arg1; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_08 == 0) { + lbl_1_bss_45C[var_r31].unk_5C = 0; + } + } + lbl_1_bss_45C[var_r30].unk_04 = NULL; + fn_1_1BA78(0x1A0022, -1, 1); + fn_1_1B7D0(1); + fn_1_1BF1C(0x330093); + var_r29 = fn_1_19A98(&lbl_1_bss_45C[var_r30]); + if (var_r29 == 1) { + HuAudFXPlay(2); + lbl_1_bss_45C[var_r30].unk_10 = 1; + var_r29 = 4; + var_r27 = var_r30; + } + else { + HuAudFXPlay(3); + lbl_1_bss_45C[var_r30].unk_10 = 0; + var_r29 = 4; + lbl_1_bss_45C[var_r30].unk_08 = 0; + fn_1_18D30(&lbl_1_bss_45C[var_r30]); + fn_1_18610(&lbl_1_bss_45C[var_r30]); + } + break; + } + } + for (var_r31 = 0; var_r31 < arg1; var_r31++) { + lbl_1_bss_45C[var_r31].unk_04 = NULL; + } + for (var_r31 = 0; var_r31 < arg1; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_08 == 0) { + break; + } + } + if (var_r31 == arg1) { + var_r29 = 3; + break; + } + else { + if (var_r29 == 1) { + fn_1_18610(&lbl_1_bss_45C[var_r30]); + fn_1_18D30(&lbl_1_bss_45C[var_r30]); + fn_1_18610(&lbl_1_bss_45C[lbl_1_bss_45C[var_r30].unk_0C]); + var_r27 = lbl_1_bss_45C[lbl_1_bss_45C[var_r30].unk_0C].unk_0C; + lbl_1_bss_45C[lbl_1_bss_45C[var_r30].unk_0C].unk_08 = 0; + } + else if (var_r29 != 4) { + if (var_r29 == 0) { + fn_1_18D30(&lbl_1_bss_45C[var_r30]); + } + break; + } + } + var_r24 = -1; + } + fn_1_1C120(); + fn_1_1B9F4(); + if (var_r29 != 0) { + fn_1_17170(0); + } + return var_r29; +} + +void fn_1_13130(s32 arg0) +{ + fn_1_12C18(arg0, 4); +} + +void fn_1_1315C(void) +{ + fn_1_12910(0, 1); +} + +s32 fn_1_13184(void) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + + var_r26 = -1; + fn_1_151C8(); + fn_1_1B834(); + fn_1_1BA78(0x1A0005, -1, -1); + fn_1_1B7D0(1); + fn_1_1BF1C(0x330091); + lbl_1_bss_5DC.unk_04 = (MpexDllUnkFunc2)fn_1_15D48; + + while (TRUE) { + fn_1_1B7D0(1); + var_r30 = 0; + for (var_r31 = 0; var_r31 < 2; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_14 == 0) { + var_r30++; + } + } + if (var_r26 != var_r30) { + var_r26 = var_r30; + fn_1_1BA78(var_r30 + 0x330093, -1, 1); + } + if (lbl_1_bss_5DC.unk_28 != 0) { + continue; + } + if (HuPadBtnDown[0] & PAD_BUTTON_A) { + HuAudFXPlay(2); + var_r28 = 1; + break; + } + else if (HuPadBtnDown[0] & PAD_BUTTON_B) { + HuAudFXPlay(3); + var_r28 = 0; + break; + } + } + fn_1_15774(); + lbl_1_bss_5DC.unk_04 = NULL; + fn_1_1C120(); + if (var_r28 == 1) { + var_r29 = 0; + var_r27 = 0; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_50 == 0) { + var_r29++; + } + } + if (var_r29 >= 2) { + var_r29 = 2; + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (var_r27 < var_r29) { + if (HuPadStatGet(var_r31) != -1) { + lbl_1_bss_45C[var_r31].unk_50 = 0; + lbl_1_bss_45C[var_r31].unk_4C = 0; + var_r27++; + } + else { + lbl_1_bss_45C[var_r31].unk_50 = 1; + lbl_1_bss_45C[var_r31].unk_4C = 1; + } + } + else { + lbl_1_bss_45C[var_r31].unk_50 = 1; + lbl_1_bss_45C[var_r31].unk_4C = 1; + } + } + } + fn_1_1B9F4(); + fn_1_154A4(); + return var_r28; +} + +void fn_1_133F8(s32 arg0) +{ + fn_1_12910(arg0, 2); +} + +void fn_1_13424(s32 arg0) +{ + fn_1_12C18(arg0, 2); +} + +void fn_1_13450(void) +{ + fn_1_126EC(0); +} + +s32 fn_1_13474(s32 arg0) +{ + s32 spC[2]; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + + spC[1] = 0; + spC[0] = 0; + var_r30 = 4; + var_r28 = 4; + if (var_r28 == 1) { + var_r30 = 1; + for (var_r31 = 1; var_r31 < 4; var_r31++) { + lbl_1_bss_45C[var_r31].unk_50 = 1; + } + } + else { + var_r30 = 4; + } + fn_1_17374(); + if (arg0 == 0) { + fn_1_16D3C(3); + } + fn_1_1B834(); + fn_1_1B7D0(1); + fn_1_1BA78(0x1A0009, -1, -1); + fn_1_1BF1C(0x330092); + for (var_r31 = 0; var_r31 < var_r30; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_50 == 0) { + lbl_1_bss_45C[var_r31].unk_04 = (MpexDllUnkFunc2)fn_1_17B04; + } + } + while (TRUE) { + fn_1_1B7D0(1); + if ((lbl_1_bss_45C->unk_08 == 0) && (HuPadBtnDown[0] & PAD_BUTTON_B)) { + HuAudFXPlay(3); + if (lbl_1_bss_5DC.unk_10 == 1) { + lbl_1_bss_5DC.unk_10 = 0; + continue; + } + var_r27 = 0; + break; + } + else { + for (var_r31 = 0; var_r31 < var_r30; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_50 == 0 && lbl_1_bss_45C[var_r31].unk_08 != 1) { + break; + } + } + if (var_r31 == var_r30) { + var_r27 = 2; + break; + } + } + } + for (var_r31 = 0; var_r31 < var_r30; var_r31++) { + lbl_1_bss_45C[var_r31].unk_04 = NULL; + } + fn_1_1C120(); + fn_1_1B9F4(); + if (var_r27 == 0) { + fn_1_17170(0); + return 0; + } + var_r29 = 0; + for (var_r31 = 0; var_r31 < var_r30; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_50 != 0) { + lbl_1_bss_45C[var_r31].unk_5C = 1; + var_r29++; + } + } + if ((var_r29 == 0) || ((var_r28 == 2) && (var_r29 == 2))) { + fn_1_17170(3); + return 2; + } + if (var_r28 == 2) { + lbl_1_bss_45C[1].unk_4C = 0; + } + return 1; +} + +s32 fn_1_13730(s32 arg0) +{ + s32 spC; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + + var_r30 = -1; + var_r27 = -1; + var_r26 = -1; + var_r28 = 4; + var_r24 = -1; + spC = 0; + if (arg0 != 0) { + fn_1_168F0(3, 3); + } + fn_1_1B834(); + while (TRUE) { + fn_1_1B7D0(1); + var_r25 = 0; + for (var_r31 = 0; var_r31 < var_r28; var_r31++) { + if ((lbl_1_bss_45C[var_r31].unk_50 != 0) && (lbl_1_bss_45C[var_r31].unk_08 == 0)) { + var_r25++; + } + } + if (var_r26 == -1) { + fn_1_1BB4C(var_r25 + 0x1A0023, 1); + fn_1_1BA78(0x1A0028, -1, var_r26); + } + else { + fn_1_1BB4C(var_r25 + 0x1A0023, 1); + fn_1_1BA78(0x1A0028, -1, var_r26); + } + var_r26 = 1; + fn_1_1BF1C(0x330092); + for (var_r31 = 0; var_r31 < var_r28; var_r31++) { + if ((lbl_1_bss_45C[var_r31].unk_50 != 0) && (lbl_1_bss_45C[var_r31].unk_08 == 0)) { + var_r30 = var_r31; + lbl_1_bss_45C[var_r31].unk_0C = var_r27; + fn_1_18610(&lbl_1_bss_45C[var_r31]); + lbl_1_bss_45C[var_r31].unk_04 = (MpexDllUnkFunc2)fn_1_18DCC; + break; + } + } + while (TRUE) { + fn_1_1B7D0(1); + if (((HuPadBtnDown[lbl_1_bss_45C->unk_58] & PAD_BUTTON_B) != 0) && (lbl_1_bss_45C[var_r30].unk_08 == 0) && (lbl_1_bss_5DC.unk_30 == 0)) { + HuAudFXPlay(3); + if (var_r27 == -1) { + var_r29 = 0; + } + else { + var_r29 = 1; + } + break; + } + else if (lbl_1_bss_45C[var_r30].unk_08 == 1) { + for (var_r31 = 0; var_r31 < var_r28; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_08 == 0) { + lbl_1_bss_45C[var_r31].unk_5C = 1; + } + } + lbl_1_bss_45C[var_r30].unk_04 = NULL; + fn_1_1BA78(0x1A0022, -1, 1); + fn_1_1B7D0(1); + fn_1_1BF1C(0x330093); + var_r29 = fn_1_19A98(&lbl_1_bss_45C[var_r30]); + if (var_r29 == 1) { + HuAudFXPlay(2); + lbl_1_bss_45C[var_r30].unk_10 = 1; + var_r29 = 4; + var_r27 = var_r30; + } + else { + HuAudFXPlay(3); + lbl_1_bss_45C[var_r30].unk_10 = 0; + var_r29 = 4; + lbl_1_bss_45C[var_r30].unk_08 = 0; + fn_1_18D30(&lbl_1_bss_45C[var_r30]); + fn_1_18610(&lbl_1_bss_45C[var_r30]); + } + break; + } + } + for (var_r31 = 0; var_r31 < var_r28; var_r31++) { + lbl_1_bss_45C[var_r31].unk_04 = NULL; + } + for (var_r31 = 0; var_r31 < var_r28; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_08 == 0) { + break; + } + } + if (var_r31 == var_r28) { + var_r29 = 3; + break; + } + else { + if (var_r29 == 1) { + fn_1_18610(&lbl_1_bss_45C[var_r30]); + fn_1_18D30(&lbl_1_bss_45C[var_r30]); + fn_1_18610(&lbl_1_bss_45C[lbl_1_bss_45C[var_r30].unk_0C]); + var_r27 = lbl_1_bss_45C[lbl_1_bss_45C[var_r30].unk_0C].unk_0C; + lbl_1_bss_45C[lbl_1_bss_45C[var_r30].unk_0C].unk_08 = 0; + } + else if (var_r29 != 4) { + if (var_r29 == 0) { + fn_1_18D30(&lbl_1_bss_45C[var_r30]); + } + break; + } + var_r24 = -1; + } + } + fn_1_1C120(); + fn_1_1B9F4(); + if (var_r29 != 0) { + fn_1_17170(3); + } + return var_r29; +} + +void fn_1_13C30(s32 arg0) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + GWPlayer[var_r31].team = GWPlayerCfg[var_r31].group = lbl_1_bss_45C[var_r31].unk_4C; + GWPlayer[var_r31].com = GWPlayerCfg[var_r31].iscom = lbl_1_bss_45C[var_r31].unk_50; + GWPlayer[var_r31].diff = GWPlayerCfg[var_r31].diff = lbl_1_bss_45C[var_r31].unk_54; + if (lbl_1_bss_444 != 0) { + if (lbl_1_bss_45C[var_r31].unk_5C <= 5) { + GWPlayer[var_r31].character = GWPlayerCfg[var_r31].character = lbl_1_bss_45C[var_r31].unk_5C - 1; + } + else if (lbl_1_bss_45C[var_r31].unk_5C <= 0xB) { + GWPlayer[var_r31].character = GWPlayerCfg[var_r31].character = lbl_1_bss_45C[var_r31].unk_5C - 3; + } + else { + GWPlayer[var_r31].character = GWPlayerCfg[var_r31].character = fn_1_1B4AC(lbl_1_bss_45C[var_r31].unk_5C - 4); + } + } + else if (arg0 == 1) { + if (var_r31 != 0) { + lbl_1_bss_45C[var_r31].unk_5C = lbl_1_bss_45C[var_r31 - 1].unk_5C + 1; + if (lbl_1_bss_45C[var_r31].unk_5C >= 8) { + lbl_1_bss_45C[var_r31].unk_5C = 0; + } + } + GWPlayer[var_r31].character = GWPlayerCfg[var_r31].character = lbl_1_bss_45C[var_r31].unk_5C; + } + else { + GWPlayer[var_r31].character = GWPlayerCfg[var_r31].character = lbl_1_bss_45C[var_r31].unk_5C; + } + GWPlayer[var_r31].port = GWPlayerCfg[var_r31].pad_idx = lbl_1_bss_45C[var_r31].unk_58; + } + OSReport("\n\n#################### SET PLAYERDATA ####################\n"); + OSReport("ID) GRP:COM:DIF:CHR:PAD\n"); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + OSReport("%2d) %3d:%3d:%3d:%3d:%3d\n", var_r31, GWPlayerCfg[var_r31].group, GWPlayerCfg[var_r31].iscom, GWPlayerCfg[var_r31].diff, + GWPlayerCfg[var_r31].character, GWPlayerCfg[var_r31].pad_idx); + } + OSReport("########################################################\n"); +} + +s32 fn_1_140B0(s32 arg0, s32 arg1) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r24; + s32 var_r23; + s32 var_r22; + s32 var_r21; + s32 var_r20; + s32 var_r19; + s32 var_r18; + + var_r30 = 0; + var_r27 = 0; + var_r26 = 0; + var_r29 = arg0; + if (arg0 == 3) { + lbl_1_bss_444 = 1; + } + else { + lbl_1_bss_444 = 0; + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_45C[var_r31].unk_48 = var_r31; + lbl_1_bss_45C[var_r31].unk_4C = 0; + lbl_1_bss_45C[var_r31].unk_50 = 0; + lbl_1_bss_45C[var_r31].unk_54 = 0; + if (lbl_1_bss_444 != 0) { + lbl_1_bss_45C[var_r31].unk_5C = var_r31 + 1; + } + else { + lbl_1_bss_45C[var_r31].unk_5C = var_r31; + } + lbl_1_bss_45C[var_r31].unk_58 = var_r31; + } + if (arg1 == 1) { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_45C[var_r31].unk_48 = var_r31; + lbl_1_bss_45C[var_r31].unk_4C = GWPlayerCfg[var_r31].group; + lbl_1_bss_45C[var_r31].unk_50 = GWPlayerCfg[var_r31].iscom; + lbl_1_bss_45C[var_r31].unk_54 = GWPlayerCfg[var_r31].diff; + lbl_1_bss_45C[var_r31].unk_5C = GWPlayerCfg[var_r31].character; + lbl_1_bss_45C[var_r31].unk_58 = GWPlayerCfg[var_r31].pad_idx; + lbl_1_bss_45C[var_r31].unk_08 = lbl_1_bss_45C[var_r31].unk_0C = lbl_1_bss_45C[var_r31].unk_10 = lbl_1_bss_45C[var_r31].unk_14 = 0; + lbl_1_bss_45C[var_r31].unk_28 = lbl_1_bss_45C[var_r31].unk_2C = lbl_1_bss_45C[var_r31].unk_30 = lbl_1_bss_45C[var_r31].unk_34 = 0; + + switch (arg0) { + case 0: + if (lbl_1_bss_45C[var_r31].unk_50 == 0) { + lbl_1_bss_45C[var_r31].unk_08 = 1; + } + else { + var_r27 = 1; + } + break; + case 2: + if (lbl_1_bss_45C[var_r31].unk_50 == 0) { + lbl_1_bss_45C[var_r31].unk_08 = 1; + var_r26++; + } + else { + var_r27 = 1; + } + break; + case 3: + if (lbl_1_bss_45C[var_r31].unk_50 == 0) { + lbl_1_bss_45C[var_r31].unk_08 = 1; + var_r26++; + } + else { + var_r27 = 1; + } + if (lbl_1_bss_45C[var_r31].unk_5C <= 3) { + lbl_1_bss_45C[var_r31].unk_5C += 1; + } + else if (lbl_1_bss_45C[var_r31].unk_5C <= 7) { + lbl_1_bss_45C[var_r31].unk_5C += 3; + } + else { + lbl_1_bss_45C[var_r31].unk_5C = fn_1_1B42C(lbl_1_bss_45C[var_r31].unk_5C) + 4; + } + break; + } + } + switch (arg0) { + case 0: + if (var_r27 == 1) { + var_r29 = 0x66; + var_r30 = 1; + } + else { + var_r29 = 0x65; + var_r30 = 0; + } + break; + case 1: + var_r29 = 0xC8; + break; + case 2: + if ((var_r27 == 1) && (var_r26 == 1)) { + var_r29 = 0x12E; + var_r30 = 1; + } + else { + var_r29 = 0x12D; + var_r30 = 0; + } + break; + case 3: + if (var_r27 == 1) { + var_r29 = 0x192; + var_r30 = 1; + } + else { + var_r29 = 0x191; + var_r30 = 0; + } + break; + } + } + while (TRUE) { + fn_1_1B7D0(1); + if (var_r28 == 0x3E7) { + break; + } + switch (var_r29) { + case 0x0: + var_r29 = 0x64; + break; + case 0x1: + var_r29 = 0xC8; + break; + case 0x2: + var_r29 = 0x12C; + break; + case 0x3: + var_r29 = 0x190; + break; + case 0x64: + var_r28 = fn_1_126EC(var_r30); + if (var_r28 != 0) { + var_r29 = 0x65; + var_r30 = 0; + } + else { + var_r29 = 0x385; + var_r30 = 1; + } + break; + case 0x65: + var_r23 = fn_1_12910(var_r30, 4); + var_r28 = var_r23; + if (var_r28 == 1) { + var_r29 = 0x66; + var_r30 = 0; + } + else if (var_r28 == 2) { + var_r29 = 0x384; + var_r30 = 0; + } + else { + var_r29 = 0x64; + var_r30 = 1; + } + break; + case 0x66: + var_r22 = fn_1_12C18(var_r30, 4); + var_r28 = var_r22; + if (var_r28 != 0) { + var_r29 = 0x384; + var_r30 = 0; + } + else { + var_r29 = 0x65; + var_r30 = 1; + } + break; + case 0xC8: + var_r21 = fn_1_12910(0, 1); + var_r28 = var_r21; + if (var_r28 != 0) { + var_r29 = 0x384; + var_r30 = 0; + } + else { + var_r29 = 0x385; + var_r30 = 1; + } + break; + case 0x12C: + var_r28 = fn_1_13184(); + if (var_r28 != 0) { + var_r29 = 0x12D; + var_r30 = 0; + } + else { + var_r29 = 0x385; + var_r30 = 1; + } + break; + case 0x12D: + var_r20 = fn_1_12910(var_r30, 2); + var_r28 = var_r20; + if (var_r28 == 1) { + var_r29 = 0x12E; + var_r30 = 0; + } + else if (var_r28 == 2) { + var_r29 = 0x384; + var_r30 = 0; + } + else { + var_r29 = 0x12C; + var_r30 = 1; + } + break; + case 0x12E: + var_r19 = fn_1_12C18(var_r30, 2); + var_r28 = var_r19; + if (var_r28 != 0) { + var_r29 = 0x384; + var_r30 = 0; + } + else { + var_r29 = 0x12D; + var_r30 = 1; + } + break; + case 0x190: + var_r18 = fn_1_126EC(0); + var_r28 = var_r18; + if (var_r28 != 0) { + var_r29 = 0x191; + var_r30 = 0; + } + else { + var_r29 = 0x385; + var_r30 = 1; + } + break; + case 0x191: + var_r28 = fn_1_13474(var_r30); + if (var_r28 == 1) { + var_r29 = 0x192; + var_r30 = 0; + } + else if (var_r28 == 2) { + var_r29 = 0x384; + var_r30 = 0; + } + else { + var_r29 = 0x190; + var_r30 = 1; + } + break; + case 0x192: + var_r28 = fn_1_13730(var_r30); + if (var_r28 != 0) { + var_r29 = 0x384; + var_r30 = 0; + } + else { + var_r29 = 0x191; + var_r30 = 1; + } + break; + case 0x384: + fn_1_13C30(arg0); + var_r24 = 1; + var_r28 = 0x3E7; + break; + case 0x385: + var_r24 = 0; + var_r28 = 0x3E7; + break; + } + } + return var_r24; +} + +void fn_1_148BC(s32 arg0) +{ + fn_1_1AF78(arg0); +} + +void fn_1_148E4(s32 arg0) +{ + fn_1_1B0DC(arg0); +} + +s32 lbl_1_data_5C4[4][2] = { { -0x69, 0 }, { -0x23, 0 }, { 0x23, 0 }, { 0x69, 0 } }; +s32 lbl_1_data_5E4[8][2] = { + { -0x7B, -0x34 }, + { -0x29, -0x34 }, + { 0x29, -0x34 }, + { 0x7B, -0x34 }, + { -0x7B, 0x34 }, + { -0x29, 0x34 }, + { 0x29, 0x34 }, + { 0x7B, 0x34 }, +}; +s32 lbl_1_data_624[0xE][2] = { + { -0x7B, -0x66 }, + { -0x29, -0x66 }, + { 0x29, -0x66 }, + { 0x7B, -0x66 }, + { -0x7B, 0 }, + { -0x29, 0 }, + { 0x29, 0 }, + { 0x7B, 0 }, + { -0xCD, 0x66 }, + { -0x7B, 0x66 }, + { -0x29, 0x66 }, + { 0x29, 0x66 }, + { 0x7B, 0x66 }, + { 0xCD, 0x66 }, +}; +s32 lbl_1_data_694[0x12][2] = { + { 0, 0 }, + { -0x7B, -0x66 }, + { -0x29, -0x66 }, + { 0x29, -0x66 }, + { 0x7B, -0x66 }, + { 0, 0 }, + { 0, 0 }, + { -0x7B, 0 }, + { -0x29, 0 }, + { 0x29, 0 }, + { 0x7B, 0 }, + { 0, 0 }, + { -0xCD, 0x66 }, + { -0x7B, 0x66 }, + { -0x29, 0x66 }, + { 0x29, 0x66 }, + { 0x7B, 0x66 }, + { 0xCD, 0x66 }, +}; +s32 lbl_1_data_724[4][2] = { { -0x45, -8 }, { -0x17, -8 }, { 0x17, -8 }, { 0x45, -8 } }; +s32 lbl_1_data_744[2] = { 0x00, 0xFFFFFFF8 }; +s32 lbl_1_data_74C[2][2] = { { -0x17, -8 }, { 0x17, -8 } }; +s32 lbl_1_data_75C[4][2] = { { -0x59, -8 }, { -0x2B, -8 }, { 0x2B, -8 }, { 0x59, -8 } }; +s32 lbl_1_data_77C = -1; +s32 lbl_1_data_780[2] = {-1, 0}; + +void fn_1_1490C(void) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + AnimData *var_r28; + + var_r30 = HuSprGrpCreate(0xB); + *lbl_1_bss_63C = var_r30; + var_r29 = HuSprCreate(HuSprAnimReadFile(0x640046), 0xBB8, 0); + HuSprGrpMemberSet(var_r30, 0, var_r29); + HuSprPosSet(var_r30, 0, 0.0f, 0.0f); + var_r28 = HuSprAnimReadFile(0x640047); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r29 = HuSprCreate(var_r28, 0x3E8, 0); + HuSprGrpMemberSet(var_r30, var_r31 + 1, var_r29); + HuSprBankSet(var_r30, var_r31 + 1, var_r31); + } + var_r28 = HuSprAnimReadFile(0x640048); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r29 = HuSprCreate(var_r28, 0x76C, 0); + HuSprGrpMemberSet(var_r30, var_r31 + 3, var_r29); + HuSprPosSet(var_r30, var_r31 + 3, lbl_1_data_5C4[var_r31 % 4][0], lbl_1_data_5C4[0][1]); + HuSprBankSet(var_r30, var_r31 + 3, 0); + } + fn_1_14B28(); + fn_1_14E54(); +} + +void fn_1_14B28(void) +{ + s32 var_r31; + s32 var_r30; + + var_r30 = *lbl_1_bss_63C; + for (var_r31 = 0; var_r31 < 0xB; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + HuSprAttrReset(var_r30, 0, 4); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuSprAttrReset(var_r30, var_r31 + 3, 4); + HuSprPosSet(var_r30, var_r31 + 3, lbl_1_data_5C4[var_r31 % 4][0], lbl_1_data_5C4[0][1]); + HuSprBankSet(var_r30, var_r31 + 3, 0); + } + HuSprGrpPosSet(var_r30, 288.0f, -390.0f); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_45C[var_r31].unk_14 = lbl_1_bss_45C[var_r31].unk_50 = 0; + } +} + +void fn_1_14CBC(void) +{ + s32 var_r31; + s32 var_r30; + + var_r30 = *lbl_1_bss_63C; + for (var_r31 = 0; var_r31 < 0xB; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + HuSprAttrReset(var_r30, 0, 4); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + HuSprAttrReset(var_r30, var_r31 + 3, 4); + HuSprPosSet(var_r30, var_r31 + 3, lbl_1_data_5C4[var_r31 % 4 + 1][0], lbl_1_data_5C4[0][1]); + HuSprBankSet(var_r30, var_r31 + 3, 0); + } + HuSprGrpPosSet(var_r30, 288.0f, -390.0f); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_45C[var_r31].unk_14 = lbl_1_bss_45C[var_r31].unk_50 = 0; + } +} + +void fn_1_14E54(void) +{ + s32 var_r31; + s32 var_r30; + + var_r30 = *lbl_1_bss_63C; + for (var_r31 = 0; var_r31 < 0xB; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + HuSprGrpPosSet(var_r30, 288.0f, 110.0f); + HuSprGrpScaleSet(var_r30, 1.0f, 1.0f); +} + +void fn_1_14EF0(void) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r28 = *lbl_1_bss_63C; + var_r29 = *lbl_1_bss_63C; + for (var_r31 = 0; var_r31 < 0xB; var_r31++) { + HuSprAttrSet(var_r29, var_r31, 4); + } + HuSprAttrReset(var_r29, 0, 4); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuSprAttrReset(var_r29, var_r31 + 3, 4); + HuSprPosSet(var_r29, var_r31 + 3, lbl_1_data_5C4[var_r31 % 4][0], lbl_1_data_5C4[0][1]); + HuSprBankSet(var_r29, var_r31 + 3, 0); + } + HuSprGrpPosSet(var_r29, 288.0f, -390.0f); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_45C[var_r31].unk_14 = lbl_1_bss_45C[var_r31].unk_50 = 0; + } + for (var_r30 = 0; var_r30 <= 0x3C; var_r30++) { + fn_1_1B7D0(1); + if (var_r30 <= 0x32) { + var_f31 = fn_1_1B64C(-500.0f, 10.0f, var_r30, 50.0f); + } + else { + var_f31 = fn_1_1B574(10.0f, 0.0f, var_r30 - 0x32, 10.0f); + } + HuSprGrpPosSet(var_r28, 288.0f, 110.0f + var_f31); + } + HuSprGrpPosSet(var_r28, 288.0f, 110.0f); + fn_1_1B7D0(0xA); +} + +void fn_1_151C8(void) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r28 = *lbl_1_bss_63C; + var_r29 = *lbl_1_bss_63C; + for (var_r31 = 0; var_r31 < 0xB; var_r31++) { + HuSprAttrSet(var_r29, var_r31, 4); + } + HuSprAttrReset(var_r29, 0, 4); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + HuSprAttrReset(var_r29, var_r31 + 3, 4); + HuSprPosSet(var_r29, var_r31 + 3, lbl_1_data_5C4[var_r31 % 4 + 1][0], lbl_1_data_5C4[0][1]); + HuSprBankSet(var_r29, var_r31 + 3, 0); + } + HuSprGrpPosSet(var_r29, 288.0f, -390.0f); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_45C[var_r31].unk_14 = lbl_1_bss_45C[var_r31].unk_50 = 0; + } + for (var_r30 = 0; var_r30 <= 0x3C; var_r30++) { + fn_1_1B7D0(1); + if (var_r30 <= 0x32) { + var_f31 = fn_1_1B64C(-500.0f, 10.0f, var_r30, 50.0f); + } + else { + var_f31 = fn_1_1B574(10.0f, 0.0f, var_r30 - 0x32, 10.0f); + } + HuSprGrpPosSet(var_r28, 288.0f, 110.0f + var_f31); + } + HuSprGrpPosSet(var_r28, 288.0f, 110.0f); + fn_1_1B7D0(0xA); +} + +void fn_1_154A4(void) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28 = *lbl_1_bss_63C; + + fn_1_1B7D0(0xA); + for (var_r31 = 0; var_r31 <= 0x3C; var_r31++) { + fn_1_1B7D0(1); + if (var_r31 <= 0xA) { + var_f31 = fn_1_1B64C(0.0f, 10.0f, var_r31, 10.0f); + } + else { + var_f31 = fn_1_1B574(10.0f, -500.0f, var_r31 - 0xA, 50.0f); + } + HuSprGrpPosSet(var_r28, 288.0f, 110.0f + var_f31); + } + HuSprGrpPosSet(var_r28, 288.0f, -390.0f); + var_r29 = *lbl_1_bss_63C; + for (var_r30 = 0; var_r30 < 0xB; var_r30++) { + HuSprAttrSet(var_r29, var_r30, 4); + } + HuSprGrpPosSet(var_r29, 288.0f, 110.0f); + HuSprGrpScaleSet(var_r29, 1.0f, 1.0f); +} + +void fn_1_15684(s32 arg0) +{ + s32 var_r31; + + var_r31 = *lbl_1_bss_63C; + HuSprAttrReset(var_r31, 1, 4); + HuSprAttrReset(var_r31, 2, 4); + HuSprPosSet(var_r31, 1, -155.0f, 0.0f); + HuSprPosSet(var_r31, 2, 155.0f, 0.0f); + if (arg0 == 2) { + HuSprPosSet(var_r31, 1, -80.0f, 0.0f); + HuSprPosSet(var_r31, 2, 80.0f, 0.0f); + } +} + +void fn_1_15774(void) +{ + s32 var_r31; + + var_r31 = *lbl_1_bss_63C; + HuSprAttrSet(var_r31, 1, 4); + HuSprAttrSet(var_r31, 2, 4); +} + +void fn_1_157C4(void) +{ + float var_f31; + float var_f30; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + + var_r27 = lbl_1_bss_63C[0]; + var_r29 = var_r28 = var_r26 = var_r24 = 0; + lbl_1_bss_5DC.unk_28 = 0; + var_r29 = 1; + for (var_r31 = 1; var_r31 < 4; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_50 == 0) { + var_r29++; + } + } + var_r28 = 1; + for (var_r31 = 1; var_r31 < 4; var_r31++) { + if (HuPadStatGet(var_r31) != -1) { + var_r28++; + } + } + if (var_r28 >= 2) { + var_r25 = lbl_1_bss_63C[0]; + HuSprAttrReset(var_r25, 1, 4); + HuSprAttrReset(var_r25, 2, 4); + HuSprPosSet(var_r25, 1, -155.0f, 0.0f); + HuSprPosSet(var_r25, 2, 155.0f, 0.0f); + if (*HuPadStkX >= 5) { + var_r29++; + var_r26 = 1; + } + else if (*HuPadStkX <= -5) { + var_r29--; + var_r26 = -1; + } + } + else { + var_r23 = lbl_1_bss_63C[0]; + HuSprAttrSet(var_r23, 1, 4); + HuSprAttrSet(var_r23, 2, 4); + } + if (var_r29 < 1) { + var_r29 = var_r28; + } + else if (var_r29 > var_r28) { + if (var_r26 == 0) { + var_r29 = var_r28; + var_r24 = 1; + } + else { + var_r29 = 1; + } + } + if ((var_r26 != 0) || (var_r24 != 0)) { + lbl_1_bss_5DC.unk_28 = 1; + HuAudFXPlay(0); + for (var_r31 = 0; var_r31 <= 0xA; var_r31++) { + if (var_r31 <= 5) { + var_f31 = fn_1_1B64C(0.0f, 10.0f, var_r31, 5.0f); + var_f30 = fn_1_1B64C(1.0f, 0.0f, var_r31, 5.0f); + } + else { + var_f31 = fn_1_1B64C(10.0f, 0.0f, var_r31 - 5, 5.0f); + var_f30 = fn_1_1B64C(0.0f, 1.0f, var_r31 - 5, 5.0f); + } + if (var_r26 == 1) { + HuSprPosSet(var_r27, 2, 3.0f + (155.0f + var_f31), 0.0f); + } + else if (var_r26 == -1) { + HuSprPosSet(var_r27, 1, (-155.0f - var_f31) - 3.0f, 0.0f); + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + if ((var_r30 < var_r29) && (lbl_1_bss_45C[var_r30].unk_50 == 1)) { + lbl_1_bss_45C[var_r30].unk_14 = 0; + HuSprScaleSet(var_r27, var_r30 + 3, var_f30, 1.0f); + if (var_r31 == 5) { + HuSprBankSet(var_r27, var_r30 + 3, 0); + } + } + else if ((var_r30 >= var_r29) && (lbl_1_bss_45C[var_r30].unk_50 == 0)) { + lbl_1_bss_45C[var_r30].unk_14 = 1; + HuSprScaleSet(var_r27, var_r30 + 3, var_f30, 1.0f); + if (var_r31 == 5) { + HuSprBankSet(var_r27, var_r30 + 3, 1); + } + } + } + fn_1_1B7D0(1); + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + if (var_r30 < var_r29) { + lbl_1_bss_45C[var_r30].unk_50 = 0; + } + else { + lbl_1_bss_45C[var_r30].unk_50 = 1; + } + } + } + lbl_1_bss_5DC.unk_28 = 0; +} + +void fn_1_15D48(void) +{ + float var_f31; + float var_f30; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + + var_r27 = lbl_1_bss_63C[0]; + var_r29 = var_r28 = var_r26 = var_r24 = 0; + lbl_1_bss_5DC.unk_28 = 0; + var_r29 = 1; + for (var_r31 = 1; var_r31 < 2; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_50 == 0) { + var_r29++; + } + } + var_r28 = 1; + for (var_r31 = 1; var_r31 < 4; var_r31++) { + if (HuPadStatGet(var_r31) != -1) { + var_r28++; + } + } + if (var_r28 > 2) { + var_r28 = 2; + } + if (var_r28 >= 2) { + var_r25 = lbl_1_bss_63C[0]; + HuSprAttrReset(var_r25, 1, 4); + HuSprAttrReset(var_r25, 2, 4); + HuSprPosSet(var_r25, 1, -155.0f, 0.0f); + HuSprPosSet(var_r25, 2, 155.0f, 0.0f); + HuSprPosSet(var_r25, 1, -80.0f, 0.0f); + HuSprPosSet(var_r25, 2, 80.0f, 0.0f); + if (*HuPadStkX >= 5) { + var_r29++; + var_r26 = 1; + } + else if (*HuPadStkX <= -5) { + var_r29--; + var_r26 = -1; + } + } + else { + var_r23 = lbl_1_bss_63C[0]; + HuSprAttrSet(var_r23, 1, 4); + HuSprAttrSet(var_r23, 2, 4); + } + if (var_r29 < 1) { + var_r29 = var_r28; + } + else if (var_r29 > var_r28) { + if (var_r26 == 0) { + var_r29 = var_r28; + var_r24 = 1; + } + else { + var_r29 = 1; + } + } + if ((var_r26 != 0) || (var_r24 != 0)) { + lbl_1_bss_5DC.unk_28 = 1; + HuAudFXPlay(0); + for (var_r31 = 0; var_r31 <= 0xA; var_r31++) { + if (var_r31 <= 5) { + var_f31 = fn_1_1B64C(0.0f, 10.0f, var_r31, 5.0f); + var_f30 = fn_1_1B64C(1.0f, 0.0f, var_r31, 5.0f); + } + else { + var_f31 = fn_1_1B64C(10.0f, 0.0f, var_r31 - 5, 5.0f); + var_f30 = fn_1_1B64C(0.0f, 1.0f, var_r31 - 5, 5.0f); + } + if (var_r26 == 1) { + HuSprPosSet(var_r27, 2, 3.0f + (77.0f + var_f31), 0.0f); + } + else if (var_r26 == -1) { + HuSprPosSet(var_r27, 1, (-77.0f - var_f31) - 3.0f, 0.0f); + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + if ((var_r30 < var_r29) && (lbl_1_bss_45C[var_r30].unk_50 == 1)) { + lbl_1_bss_45C[var_r30].unk_14 = 0; + HuSprScaleSet(var_r27, var_r30 + 3, var_f30, 1.0f); + if (var_r31 == 5) { + HuSprBankSet(var_r27, var_r30 + 3, 0); + } + } + else if ((var_r30 >= var_r29) && (lbl_1_bss_45C[var_r30].unk_50 == 0)) { + lbl_1_bss_45C[var_r30].unk_14 = 1; + HuSprScaleSet(var_r27, var_r30 + 3, var_f30, 1.0f); + if (var_r31 == 5) { + HuSprBankSet(var_r27, var_r30 + 3, 1); + } + } + } + fn_1_1B7D0(1); + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + if (var_r30 < var_r29) { + lbl_1_bss_45C[var_r30].unk_50 = 0; + } + else { + lbl_1_bss_45C[var_r30].unk_50 = 1; + } + } + } + lbl_1_bss_5DC.unk_28 = 0; +} + +void fn_1_16320(void) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + AnimData *var_r28; + AnimData *var_r27; + + var_r29 = HuSprGrpCreate(0x36); + lbl_1_bss_63C[1] = var_r29; + var_r30 = HuSprCreate(HuSprAnimReadFile(0x64004A), 0xBB8, 0); + HuSprGrpMemberSet(var_r29, 0, var_r30); + HuSprPosSet(var_r29, 0, 0.0f, 0.0f); + var_r28 = HuSprAnimReadFile(0x64005A); + for (var_r31 = 0; var_r31 < 8; var_r31++) { + var_r30 = HuSprCreate(HuSprAnimReadFile(var_r31 + 0x64004C), 0x76C, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 2, var_r30); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = HuSprCreate(HuSprAnimReadFile(var_r31 + 0x64005B), 0x384, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x1E, var_r30); + var_r30 = HuSprCreate(HuSprAnimReadFile(var_r31 + 0x640060), 0x3E8, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x22, var_r30); + } + var_r28 = HuSprAnimReadFile(0x64005F); + var_r27 = HuSprAnimReadFile(0x640064); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = HuSprCreate(var_r28, 0x384, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x26, var_r30); + var_r30 = HuSprCreate(var_r27, 0x3E8, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x2A, var_r30); + } + var_r28 = HuSprAnimReadFile(0x640065); + var_r27 = HuSprAnimReadFile(0x640066); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = HuSprCreate(var_r28, 0x384, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x2E, var_r30); + var_r30 = HuSprCreate(var_r27, 0x320, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x32, var_r30); + } + fn_1_16600(0); + fn_1_16874(0); +} + +void fn_1_16600(s32 arg0) +{ + s32 var_r31; + s32 var_r30; + + var_r30 = lbl_1_bss_63C[1]; + for (var_r31 = 0; var_r31 < 0x36; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + if (arg0 != 3) { + HuSprAttrReset(var_r30, 0, 4); + for (var_r31 = 0; var_r31 < 8; var_r31++) { + HuSprBankSet(var_r30, var_r31 + 2, 0); + HuSprAttrReset(var_r30, var_r31 + 2, 4); + HuSprPosSet(var_r30, var_r31 + 2, lbl_1_data_5E4[var_r31][0], lbl_1_data_5E4[var_r31][1]); + HuSprBankSet(var_r30, var_r31 + 2, 0); + } + } + else { + HuSprAttrReset(var_r30, 1, 4); + HuSprPosSet(var_r30, 1, 2.0f, 0.0f); + for (var_r31 = 0; var_r31 < 0xE; var_r31++) { + HuSprBankSet(var_r30, var_r31 + 2, 0); + HuSprAttrReset(var_r30, var_r31 + 2, 4); + HuSprPosSet(var_r30, var_r31 + 2, lbl_1_data_624[var_r31][0], lbl_1_data_624[var_r31][1]); + HuSprBankSet(var_r30, var_r31 + 2, 0); + } + } + HuSprGrpPosSet(var_r30, 288.0f, -331.0f); +} + +void fn_1_16874(s32 arg0) +{ + s32 var_r31; + s32 var_r30; + + var_r30 = lbl_1_bss_63C[1]; + for (var_r31 = 0; var_r31 < 0x36; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + HuSprGrpPosSet(var_r30, 288.0f, -331.0f); +} + +void fn_1_168F0(s32 arg0, s32 arg1) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r28 = lbl_1_bss_63C[1]; + var_r30 = lbl_1_bss_63C[1]; + for (var_r31 = 0; var_r31 < 0x36; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + if (arg0 != 3) { + HuSprAttrReset(var_r30, 0, 4); + for (var_r31 = 0; var_r31 < 8; var_r31++) { + HuSprBankSet(var_r30, var_r31 + 2, 0); + HuSprAttrReset(var_r30, var_r31 + 2, 4); + HuSprPosSet(var_r30, var_r31 + 2, lbl_1_data_5E4[var_r31][0], lbl_1_data_5E4[var_r31][1]); + HuSprBankSet(var_r30, var_r31 + 2, 0); + } + } + else { + HuSprAttrReset(var_r30, 1, 4); + HuSprPosSet(var_r30, 1, 2.0f, 0.0f); + for (var_r31 = 0; var_r31 < 0xE; var_r31++) { + HuSprBankSet(var_r30, var_r31 + 2, 0); + HuSprAttrReset(var_r30, var_r31 + 2, 4); + HuSprPosSet(var_r30, var_r31 + 2, lbl_1_data_624[var_r31][0], lbl_1_data_624[var_r31][1]); + HuSprBankSet(var_r30, var_r31 + 2, 0); + } + } + HuSprGrpPosSet(var_r30, 288.0f, -331.0f); + if (arg1 == 1) { + fn_1_1C174(); + } + if (arg1 == 2) { + fn_1_1C478(); + } + if (arg1 == 3) { + fn_1_1C77C(); + } + for (var_r29 = 0; var_r29 <= 0x3C; var_r29++) { + fn_1_1B7D0(1); + if (var_r29 <= 0x32) { + var_f31 = fn_1_1B64C(-500.0f, 10.0f, var_r29, 50.0f); + } + else { + var_f31 = fn_1_1B574(10.0f, 0.0f, var_r29 - 0x32, 10.0f); + } + if (lbl_1_bss_444 != 0) { + HuSprGrpPosSet(var_r28, 288.0f, 20.0f + (169.0f + var_f31)); + } + else { + HuSprGrpPosSet(var_r28, 288.0f, 169.0f + var_f31); + } + } + if (lbl_1_bss_444 != 0) { + HuSprGrpPosSet(var_r28, 288.0f, 189.0f); + return; + } + HuSprGrpPosSet(var_r28, 288.0f, 169.0f); +} + +void fn_1_16D3C(s32 arg0) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r28 = lbl_1_bss_63C[1]; + var_r30 = lbl_1_bss_63C[1]; + for (var_r31 = 0; var_r31 < 0x36; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + if (arg0 != 3) { + HuSprAttrReset(var_r30, 0, 4); + for (var_r31 = 0; var_r31 < 8; var_r31++) { + HuSprBankSet(var_r30, var_r31 + 2, 0); + HuSprAttrReset(var_r30, var_r31 + 2, 4); + HuSprPosSet(var_r30, var_r31 + 2, lbl_1_data_5E4[var_r31][0], lbl_1_data_5E4[var_r31][1]); + HuSprBankSet(var_r30, var_r31 + 2, 0); + } + } + else { + HuSprAttrReset(var_r30, 1, 4); + HuSprPosSet(var_r30, 1, 2.0f, 0.0f); + for (var_r31 = 0; var_r31 < 0xE; var_r31++) { + HuSprBankSet(var_r30, var_r31 + 2, 0); + HuSprAttrReset(var_r30, var_r31 + 2, 4); + HuSprPosSet(var_r30, var_r31 + 2, lbl_1_data_624[var_r31][0], lbl_1_data_624[var_r31][1]); + HuSprBankSet(var_r30, var_r31 + 2, 0); + } + } + HuSprGrpPosSet(var_r30, 288.0f, -331.0f); + for (var_r29 = 0; var_r29 <= 0x3C; var_r29++) { + fn_1_1B7D0(1); + if (var_r29 <= 0x32) { + var_f31 = fn_1_1B64C(-500.0f, 10.0f, var_r29, 50.0f); + } + else { + var_f31 = fn_1_1B574(10.0f, 0.0f, var_r29 - 0x32, 10.0f); + } + if (lbl_1_bss_444 != 0) { + HuSprGrpPosSet(var_r28, 288.0f, 20.0f + (169.0f + var_f31)); + } + else { + HuSprGrpPosSet(var_r28, 288.0f, 169.0f + var_f31); + } + } + if (lbl_1_bss_444 != 0) { + HuSprGrpPosSet(var_r28, 288.0f, 189.0f); + return; + } + HuSprGrpPosSet(var_r28, 288.0f, 169.0f); +} + +void fn_1_17170(s32 arg0) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r29 = lbl_1_bss_63C[1]; + for (var_r31 = 0; var_r31 <= 0x3C; var_r31++) { + fn_1_1B7D0(1); + if (var_r31 <= 0xA) { + var_f31 = fn_1_1B64C(0.0f, 10.0f, var_r31, 10.0f); + } + else { + var_f31 = fn_1_1B574(10.0f, -500.0f, var_r31 - 0xA, 50.0f); + } + if (lbl_1_bss_444 != 0) { + HuSprGrpPosSet(var_r29, 288.0f, 20.0f + (169.0f + var_f31)); + } + else { + HuSprGrpPosSet(var_r29, 288.0f, 169.0f + var_f31); + } + } + HuSprGrpPosSet(var_r29, 288.0f, -331.0f); + var_r28 = lbl_1_bss_63C[1]; + for (var_r30 = 0; var_r30 < 0x36; var_r30++) { + HuSprAttrSet(var_r28, var_r30, 4); + } + HuSprGrpPosSet(var_r28, 288.0f, -331.0f); +} + +void fn_1_17374(void) +{ + float var_f31; + float var_f30; + s32 var_r31; + s32 var_r30; + s32 var_r29; + + var_r30 = lbl_1_bss_63C[1]; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuSprBankSet(var_r30, var_r31 + 0x1E, 0); + HuSprBankSet(var_r30, var_r31 + 0x22, 0); + HuSprBankSet(var_r30, var_r31 + 0x26, 0); + HuSprBankSet(var_r30, var_r31 + 0x2A, 0); + HuSprBankSet(var_r30, var_r31 + 0x2E, 0); + HuSprBankSet(var_r30, var_r31 + 0x32, 0); + } + if (lbl_1_bss_444 != 0) { + for (var_r31 = 0; var_r31 < 0xE; var_r31++) { + HuSprBankSet(var_r30, var_r31 + 2, 0); + } + } + else { + for (var_r31 = 0; var_r31 < 8; var_r31++) { + HuSprBankSet(var_r30, var_r31 + 2, 0); + } + } + for (var_r31 = 0; var_r31 <= 0xA; var_r31++) { + fn_1_1B7D0(1); + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (lbl_1_bss_444 != 0) { + var_f31 = fn_1_1B64C(lbl_1_data_694[lbl_1_bss_45C[var_r29].unk_5C][0], lbl_1_data_694[var_r29 + 1][0], var_r31, 10.0f); + var_f30 = fn_1_1B64C(lbl_1_data_694[lbl_1_bss_45C[var_r29].unk_5C][1], lbl_1_data_694[1][1], var_r31, 10.0f); + } + else { + var_f31 = fn_1_1B64C(lbl_1_data_5E4[lbl_1_bss_45C[var_r29].unk_5C % 4][0], lbl_1_data_5E4[var_r29][0], var_r31, 10.0f); + var_f30 = fn_1_1B64C(lbl_1_data_5E4[(lbl_1_bss_45C[var_r29].unk_5C / 4) * 4][1], lbl_1_data_5E4[0][1], var_r31, 10.0f); + } + HuSprPosSet(var_r30, var_r29 + 0x1E, var_f31, var_f30); + HuSprPosSet(var_r30, var_r29 + 0x22, var_f31, var_f30); + } + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_444 != 0) { + HuSprPosSet(var_r30, var_r31 + 0x1E, lbl_1_data_694[var_r31 + 1][0], lbl_1_data_694[var_r31 + 1][1]); + HuSprPosSet(var_r30, var_r31 + 0x22, lbl_1_data_694[var_r31 + 1][0], lbl_1_data_694[var_r31 + 1][1]); + lbl_1_bss_45C[var_r31].unk_5C = var_r31 + 1; + lbl_1_bss_45C[var_r31].unk_48 = var_r31; + lbl_1_bss_45C[var_r31].unk_08 = 0; + } + else { + HuSprPosSet(var_r30, var_r31 + 0x1E, lbl_1_data_5E4[var_r31][0], lbl_1_data_5E4[var_r31][1]); + HuSprPosSet(var_r30, var_r31 + 0x22, lbl_1_data_5E4[var_r31][0], lbl_1_data_5E4[var_r31][1]); + lbl_1_bss_45C[var_r31].unk_48 = var_r31; + lbl_1_bss_45C[var_r31].unk_5C = var_r31; + lbl_1_bss_45C[var_r31].unk_08 = 0; + } + } +} + +void fn_1_17B04(omObjData *arg0, MpexDllUnkStruct4 *arg1) +{ + float var_f31; + float var_f30; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + s32 var_r22; + s32 var_r21; + s32 var_r20; + s32 var_r19; + + var_r24 = lbl_1_bss_63C[1]; + var_r27 = 0; + var_r26 = 0; + HuSprAttrReset(var_r24, arg1->unk_48 + 0x1E, 4); + HuSprAttrReset(var_r24, arg1->unk_48 + 0x22, 4); + if (lbl_1_bss_444 != 0) { + var_r30 = arg1->unk_5C % 6; + var_r23 = var_r30; + var_r29 = arg1->unk_5C / 6; + var_r22 = var_r29; + } + else { + var_r30 = arg1->unk_5C % 4; + var_r23 = var_r30; + var_r29 = arg1->unk_5C / 4; + var_r22 = var_r29; + } + if (arg1->unk_08 == 0) { + if (HuPadBtnDown[arg1->unk_48] & PAD_BUTTON_A) { + arg1->unk_08 = 1; + if (lbl_1_bss_444 != 0) { + var_r21 = 0; + if (arg1->unk_5C <= 5) { + var_r21 = arg1->unk_5C - 1; + } + else if (arg1->unk_5C <= 0xB) { + var_r21 = arg1->unk_5C - 3; + } + else { + var_r21 = arg1->unk_5C - 4; + } + fn_1_1CABC(var_r21); + HuSprBankSet(var_r24, var_r21 + 2, 1); + } + else { + fn_1_1CABC(arg1->unk_5C); + HuSprBankSet(var_r24, arg1->unk_5C + 2, 1); + } + HuSprBankSet(var_r24, arg1->unk_48 + 0x1E, 1); + HuSprBankSet(var_r24, arg1->unk_48 + 0x22, 1); + } + else if (lbl_1_bss_444 != 0) { + if (HuPadStkX[arg1->unk_48] >= 5) { + var_r30++; + var_r27 = 1; + if (var_r30 > 5) { + var_r30 = 5; + } + } + else if (HuPadStkX[arg1->unk_48] <= -5) { + var_r30--; + var_r27 = -1; + if (var_r30 < 0) { + var_r30 = 0; + } + } + if (HuPadStkY[arg1->unk_48] <= -5) { + var_r29++; + var_r26 = 1; + if (var_r29 > 2) { + var_r29 = 2; + } + } + else if (HuPadStkY[arg1->unk_48] >= 5) { + var_r29--; + var_r26 = -1; + if (var_r29 < 0) { + var_r29 = 0; + } + } + } + else { + if (HuPadStkX[arg1->unk_48] >= 5) { + var_r30++; + var_r27 = 1; + if (var_r30 > 3) { + var_r30 = 3; + } + } + else if (HuPadStkX[arg1->unk_48] <= -5) { + var_r30--; + var_r27 = -1; + if (var_r30 < 0) { + var_r30 = 0; + } + } + if (HuPadStkY[arg1->unk_48] <= -5) { + var_r29++; + var_r26 = 1; + if (var_r29 > 1) { + var_r29 = 1; + } + } + else if (HuPadStkY[arg1->unk_48] >= 5) { + var_r29--; + var_r26 = -1; + if (var_r29 < 0) { + var_r29 = 0; + } + } + } + } + else if (HuPadBtnDown[arg1->unk_48] & PAD_BUTTON_B) { + arg1->unk_08 = 0; + lbl_1_bss_5DC.unk_10 = 1; + HuAudFXPlay(3); + if (lbl_1_bss_444 != 0) { + var_r20 = 0; + if (arg1->unk_5C <= 5) { + var_r20 = arg1->unk_5C - 1; + } + else if (arg1->unk_5C <= 0xB) { + var_r20 = arg1->unk_5C - 3; + } + else { + var_r20 = arg1->unk_5C - 4; + } + HuSprBankSet(var_r24, var_r20 + 2, 0); + } + else { + HuSprBankSet(var_r24, arg1->unk_5C + 2, 0); + } + HuSprBankSet(var_r24, arg1->unk_48 + 0x1E, 0); + HuSprBankSet(var_r24, arg1->unk_48 + 0x22, 0); + } + if (lbl_1_bss_444 != 0) { + var_r25 = var_r30 + (var_r29 * 6); + } + else { + var_r25 = var_r30 + (var_r29 * 4); + } + if (arg1->unk_5C != var_r25) { + if (lbl_1_bss_444 != 0) { + while (TRUE) { + var_r25 = var_r30 + (var_r29 * 6); + for (var_r28 = 0; var_r28 < 4; var_r28++) { + if (((var_r28 != arg1->unk_48) && (lbl_1_bss_45C[var_r28].unk_50 == 0) && (var_r25 == lbl_1_bss_45C[var_r28].unk_5C)) + || (var_r25 == 0) || (var_r25 == 5) || (var_r25 == 6) || (var_r25 == 0xB)) { + if ((var_r27 == 0) || (var_r26 == 0)) { + if (((var_r30 + var_r27) > 5) || ((var_r30 + var_r27) < 0)) { + var_r30 = var_r23; + } + else { + var_r30 += var_r27; + } + if (((var_r29 + var_r26) > 2) || ((var_r29 + var_r26) < 0)) { + var_r29 = var_r22; + } + else { + var_r29 += var_r26; + } + } + else if (((var_r30 + var_r27) <= 5) && ((var_r30 + var_r27) >= 0)) { + var_r30 += var_r27; + } + else if (((var_r29 + var_r26) <= 2) && ((var_r29 + var_r26) >= 0)) { + var_r29 += var_r26; + } + else { + var_r30 = var_r23; + var_r29 = var_r22; + } + break; + } + } + if (var_r28 == 4) { + break; + } + } + } + else { + do { + var_r25 = var_r30 + (var_r29 * 4); + for (var_r28 = 0; var_r28 < 4; var_r28++) { + if ((var_r28 != arg1->unk_48) && (lbl_1_bss_45C[var_r28].unk_50 == 0) && (var_r25 == lbl_1_bss_45C[var_r28].unk_5C)) { + if ((var_r27 == 0) || (var_r26 == 0)) { + if (((var_r30 + var_r27) > 3) || ((var_r30 + var_r27) < 0)) { + var_r30 = var_r23; + } + else { + var_r30 += var_r27; + } + if (((var_r29 + var_r26) > 1) || ((var_r29 + var_r26) < 0)) { + var_r29 = var_r22; + } + else { + var_r29 += var_r26; + } + } + else if (((var_r30 + var_r27) <= 3) && ((var_r30 + var_r27) >= 0)) { + var_r30 += var_r27; + } + else if (((var_r29 + var_r26) <= 1) && ((var_r29 + var_r26) >= 0)) { + var_r29 += var_r26; + } + else { + var_r30 = var_r23; + var_r29 = var_r22; + } + break; + } + } + } while (var_r28 != 4); + } + if (lbl_1_bss_444 != 0) { + var_r25 = var_r30 + (var_r29 * 6); + } + else { + var_r25 = var_r30 + (var_r29 * 4); + } + if (arg1->unk_5C != var_r25) { + HuAudFXPlay(0); + var_r19 = arg1->unk_5C; + arg1->unk_5C = var_r25; + if (lbl_1_bss_444 != 0) { + for (var_r28 = 0; var_r28 <= 0xA; var_r28++) { + fn_1_1B7D0(1); + var_f31 = fn_1_1B64C(lbl_1_data_694[var_r19][0], lbl_1_data_694[var_r25][0], var_r28, 10.0f); + var_f30 = fn_1_1B64C(lbl_1_data_694[var_r19][1], lbl_1_data_694[var_r25][1], var_r28, 10.0f); + HuSprPosSet(var_r24, arg1->unk_48 + 0x1E, var_f31, var_f30); + HuSprPosSet(var_r24, arg1->unk_48 + 0x22, var_f31, var_f30); + } + return; + } + for (var_r28 = 0; var_r28 <= 0xA; var_r28++) { + fn_1_1B7D0(1); + var_f31 = fn_1_1B64C(*lbl_1_data_5E4[var_r23], *lbl_1_data_5E4[var_r30], var_r28, 10.0f); + var_f30 = fn_1_1B64C(lbl_1_data_5E4[var_r22 * 4][1], lbl_1_data_5E4[var_r29 * 4][1], var_r28, 10.0f); + HuSprPosSet(var_r24, arg1->unk_48 + 0x1E, var_f31, var_f30); + HuSprPosSet(var_r24, arg1->unk_48 + 0x22, var_f31, var_f30); + } + } + } +} + +void fn_1_18610(MpexDllUnkStruct4 *arg0) +{ + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r30 = lbl_1_bss_63C[1]; + do { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if ((var_r29 != arg0->unk_48) && (lbl_1_bss_45C[var_r29].unk_08 == 1) && (arg0->unk_5C == lbl_1_bss_45C[var_r29].unk_5C)) { + arg0->unk_5C += 1; + break; + } + } + } while (var_r29 != 4); + arg0->unk_54 = 0; + if (lbl_1_bss_444 != 0) { + var_r28 = 0; + if (arg0->unk_5C <= 5) { + var_r28 = arg0->unk_5C - 1; + } + else if (arg0->unk_5C <= 0xB) { + var_r28 = arg0->unk_5C - 3; + } + else { + var_r28 = arg0->unk_5C - 4; + } + HuSprBankSet(var_r30, var_r28 + 2, 0); + } + else { + HuSprBankSet(var_r30, arg0->unk_5C + 2, 0); + } + HuSprBankSet(var_r30, arg0->unk_48 + 0x26, 0); + HuSprBankSet(var_r30, arg0->unk_48 + 0x2A, 0); + HuSprBankSet(var_r30, arg0->unk_48 + 0x2E, arg0->unk_54); + HuSprBankSet(var_r30, arg0->unk_48 + 0x32, arg0->unk_54); + if (lbl_1_bss_444 != 0) { + HuSprPosSet(var_r30, arg0->unk_48 + 0x26, *lbl_1_data_694[arg0->unk_5C], lbl_1_data_694[arg0->unk_5C][1]); + HuSprPosSet(var_r30, arg0->unk_48 + 0x2A, *lbl_1_data_694[arg0->unk_5C], lbl_1_data_694[arg0->unk_5C][1]); + HuSprPosSet(var_r30, arg0->unk_48 + 0x2E, *lbl_1_data_694[arg0->unk_5C], lbl_1_data_694[arg0->unk_5C][1] + 0x23); + HuSprPosSet(var_r30, arg0->unk_48 + 0x32, *lbl_1_data_694[arg0->unk_5C], lbl_1_data_694[arg0->unk_5C][1] + 0x23); + } + else { + HuSprPosSet(var_r30, arg0->unk_48 + 0x26, *lbl_1_data_5E4[arg0->unk_5C % 4], lbl_1_data_5E4[(arg0->unk_5C / 4) * 4][1]); + HuSprPosSet(var_r30, arg0->unk_48 + 0x2A, *lbl_1_data_5E4[arg0->unk_5C % 4], lbl_1_data_5E4[(arg0->unk_5C / 4) * 4][1]); + HuSprPosSet(var_r30, arg0->unk_48 + 0x2E, *lbl_1_data_5E4[arg0->unk_5C % 4], lbl_1_data_5E4[(arg0->unk_5C / 4) * 4][1] + 0x23); + HuSprPosSet(var_r30, arg0->unk_48 + 0x32, *lbl_1_data_5E4[arg0->unk_5C % 4], lbl_1_data_5E4[(arg0->unk_5C / 4) * 4][1] + 0x23); + } + arg0->unk_10 = 0; + HuSprAttrReset(var_r30, arg0->unk_48 + 0x26, 4); + HuSprAttrReset(var_r30, arg0->unk_48 + 0x2A, 4); + HuSprAttrSet(var_r30, arg0->unk_48 + 0x2E, 4); + HuSprAttrSet(var_r30, arg0->unk_48 + 0x32, 4); +} + +void fn_1_18D30(struct MpexDllUnkStruct4 *arg0) +{ + s32 var_r30; + + var_r30 = lbl_1_bss_63C[1]; + HuSprAttrSet(var_r30, arg0->unk_48 + 0x26, 4); + HuSprAttrSet(var_r30, arg0->unk_48 + 0x2A, 4); + HuSprAttrSet(var_r30, arg0->unk_48 + 0x2E, 4); + HuSprAttrSet(var_r30, arg0->unk_48 + 0x32, 4); +} + +void fn_1_18DCC(omObjData *arg0, MpexDllUnkStruct4 *arg1) +{ + s32 sp8; + float var_f31; + float var_f30; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + s32 var_r22; + s32 var_r21; + s32 var_r20; + s32 var_r19; + + var_r27 = lbl_1_bss_63C[1]; + var_r26 = 0; + var_r25 = 0; + sp8 = arg1->unk_54; + lbl_1_bss_5DC.unk_30 = 0; + if (lbl_1_bss_444 != 0) { + var_r30 = arg1->unk_5C % 6; + var_r23 = var_r30; + var_r29 = arg1->unk_5C / 6; + var_r22 = var_r29; + } + else { + var_r30 = arg1->unk_5C % 4; + var_r23 = var_r30; + var_r29 = arg1->unk_5C / 4; + var_r22 = var_r29; + } + if (arg1->unk_08 == 0) { + if (HuPadBtnDown[lbl_1_bss_45C->unk_58] & PAD_BUTTON_A) { + arg1->unk_08 = 1; + HuSprBankSet(var_r27, arg1->unk_48 + 0x26, 1); + HuSprBankSet(var_r27, arg1->unk_48 + 0x2A, 1); + if (lbl_1_bss_444 != 0) { + var_r21 = 0; + if (arg1->unk_5C <= 5) { + var_r21 = arg1->unk_5C - 1; + } + else if (arg1->unk_5C <= 0xB) { + var_r21 = arg1->unk_5C - 3; + } + else { + var_r21 = arg1->unk_5C - 4; + } + HuSprBankSet(var_r27, var_r21 + 2, 1); + fn_1_1CABC(var_r21); + } + else { + HuSprBankSet(var_r27, arg1->unk_5C + 2, 1); + fn_1_1CABC(arg1->unk_5C); + } + arg1->unk_54 = 0; + HuSprBankSet(var_r27, arg1->unk_48 + 0x2E, arg1->unk_54); + if (lbl_1_bss_444 != 0) { + HuSprPosSet(var_r27, arg1->unk_48 + 0x2E, lbl_1_data_694[arg1->unk_5C][0], lbl_1_data_694[arg1->unk_5C][1] + 0x23); + } + else { + HuSprPosSet(var_r27, arg1->unk_48 + 0x2E, lbl_1_data_5E4[arg1->unk_5C % 4][0], lbl_1_data_5E4[(arg1->unk_5C / 4) * 4][1] + 0x23); + } + HuSprAttrReset(var_r27, arg1->unk_48 + 0x2E, 4); + } + else if (lbl_1_bss_444 != 0) { + if (HuPadStkX[0] >= 5) { + var_r30++; + var_r26 = 1; + if (var_r30 > 5) { + var_r30 = 5; + } + } + else if (HuPadStkX[0] <= -5) { + var_r30--; + var_r26 = -1; + if (var_r30 < 0) { + var_r30 = 0; + } + } + if (HuPadStkY[0] <= -5) { + var_r29++; + var_r25 = 1; + if (var_r29 > 2) { + var_r29 = 2; + } + } + else if (HuPadStkY[0] >= 5) { + var_r29--; + var_r25 = -1; + if (var_r29 < 0) { + var_r29 = 0; + } + } + } + else { + if (HuPadStkX[0] >= 5) { + var_r30++; + var_r26 = 1; + if (var_r30 > 3) { + var_r30 = 3; + } + } + else if (HuPadStkX[0] <= -5) { + var_r30--; + var_r26 = -1; + if (var_r30 < 0) { + var_r30 = 0; + } + } + if (HuPadStkY[0] <= -5) { + var_r29++; + var_r25 = 1; + if (var_r29 > 1) { + var_r29 = 1; + } + } + else if (HuPadStkY[0] >= 5) { + var_r29--; + var_r25 = -1; + if (var_r29 < 0) { + var_r29 = 0; + } + } + } + } + else if (HuPadBtnDown[lbl_1_bss_45C->unk_58] & PAD_BUTTON_B) { + arg1->unk_08 = arg1->unk_10 = 0; + if (lbl_1_bss_444 != 0) { + var_r20 = 0; + if (arg1->unk_5C <= 5) { + var_r20 = arg1->unk_5C - 1; + } + else if (arg1->unk_5C <= 0xB) { + var_r20 = arg1->unk_5C - 3; + } + else { + var_r20 = arg1->unk_5C - 4; + } + HuSprBankSet(var_r27, var_r20 + 2, 0); + } + else { + HuSprBankSet(var_r27, arg1->unk_5C + 2, 0); + } + HuSprBankSet(var_r27, arg1->unk_48 + 0x26, 0); + HuSprBankSet(var_r27, arg1->unk_48 + 0x2A, 0); + HuSprAttrSet(var_r27, arg1->unk_48 + 0x2E, 4); + HuAudFXPlay(3); + } + if (lbl_1_bss_444 != 0) { + var_r24 = var_r30 + (var_r29 * 6); + } + else { + var_r24 = var_r30 + (var_r29 * 4); + } + if (arg1->unk_5C != var_r24) { + if (lbl_1_bss_444 != 0) { + while (TRUE) { + fn_1_1B7D0(1); + var_r24 = var_r30 + (var_r29 * 6); + for (var_r28 = 0; var_r28 < 4; var_r28++) { + if (((var_r28 != arg1->unk_48) && (lbl_1_bss_45C[var_r28].unk_08 == 1) && (var_r24 == lbl_1_bss_45C[var_r28].unk_5C)) + || (var_r24 == 0) || (var_r24 == 5) || (var_r24 == 6) || (var_r24 == 0xB)) { + if ((var_r26 == 0) || (var_r25 == 0)) { + if (((var_r30 + var_r26) > 5) || ((var_r30 + var_r26) < 0)) { + var_r30 = var_r23; + } + else { + var_r30 += var_r26; + } + if (((var_r29 + var_r25) > 2) || ((var_r29 + var_r25) < 0)) { + var_r29 = var_r22; + } + else { + var_r29 += var_r25; + } + } + else if (((var_r30 + var_r26) <= 5) && ((var_r30 + var_r26) >= 0)) { + var_r30 += var_r26; + } + else if (((var_r29 + var_r25) <= 2) && ((var_r29 + var_r25) >= 0)) { + var_r29 += var_r25; + } + else { + var_r30 = var_r23; + var_r29 = var_r22; + } + break; + } + } + if (var_r28 == 4) { + break; + } + } + } + else { + do { + var_r24 = var_r30 + (var_r29 * 4); + for (var_r28 = 0; var_r28 < 4; var_r28++) { + if ((var_r28 != arg1->unk_48) && (lbl_1_bss_45C[var_r28].unk_08 == 1) && (var_r24 == lbl_1_bss_45C[var_r28].unk_5C)) { + if ((var_r26 == 0) || (var_r25 == 0)) { + if (((var_r30 + var_r26) > 3) || ((var_r30 + var_r26) < 0)) { + var_r30 = var_r23; + } + else { + var_r30 += var_r26; + } + if (((var_r29 + var_r25) > 1) || ((var_r29 + var_r25) < 0)) { + var_r29 = var_r22; + } + else { + var_r29 += var_r25; + } + } + else if (((var_r30 + var_r26) <= 3) && ((var_r30 + var_r26) >= 0)) { + var_r30 += var_r26; + } + else if (((var_r29 + var_r25) <= 1) && ((var_r29 + var_r25) >= 0)) { + var_r29 += var_r25; + } + else { + var_r30 = var_r23; + var_r29 = var_r22; + } + break; + } + } + } while (var_r28 != 4); + } + if (lbl_1_bss_444 != 0) { + var_r24 = var_r30 + (var_r29 * 6); + } + else { + var_r24 = var_r30 + (var_r29 * 4); + } + if (arg1->unk_5C != var_r24) { + var_r19 = arg1->unk_5C; + arg1->unk_5C = var_r24; + HuAudFXPlay(0); + if (lbl_1_bss_444 != 0) { + for (var_r28 = 0; var_r28 <= 0xA; var_r28++) { + fn_1_1B7D0(1); + var_f31 = fn_1_1B64C(lbl_1_data_694[var_r19][0], lbl_1_data_694[var_r24][0], var_r28, 10.0f); + var_f30 = fn_1_1B64C(lbl_1_data_694[var_r19][1], lbl_1_data_694[var_r24][1], var_r28, 10.0f); + HuSprPosSet(var_r27, arg1->unk_48 + 0x26, var_f31, var_f30); + HuSprPosSet(var_r27, arg1->unk_48 + 0x2A, var_f31, var_f30); + HuSprPosSet(var_r27, arg1->unk_48 + 0x2E, var_f31, 35.0f + var_f30); + } + } + else { + for (var_r28 = 0; var_r28 <= 0xA; var_r28++) { + fn_1_1B7D0(1); + var_f31 = fn_1_1B64C(lbl_1_data_5E4[var_r23][0], lbl_1_data_5E4[var_r30][0], var_r28, 10.0f); + var_f30 = fn_1_1B64C(lbl_1_data_5E4[var_r22 * 4][1], lbl_1_data_5E4[var_r29 * 4][1], var_r28, 10.0f); + HuSprPosSet(var_r27, arg1->unk_48 + 0x26, var_f31, var_f30); + HuSprPosSet(var_r27, arg1->unk_48 + 0x2A, var_f31, var_f30); + HuSprPosSet(var_r27, arg1->unk_48 + 0x2E, var_f31, 35.0f + var_f30); + } + } + } + } + lbl_1_bss_5DC.unk_30 = 0; +} + +s32 fn_1_19A98(MpexDllUnkStruct4 *arg0) +{ + float var_f31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + + var_r28 = 0; + var_r29 = lbl_1_bss_63C[1]; + while (TRUE) { + fn_1_1B7D0(1); + var_r28 = 0; + var_r26 = arg0->unk_54; + if (HuPadStkX[lbl_1_bss_45C->unk_58] < 5) { + if ((HuPadBtn[lbl_1_bss_45C->unk_58] & PAD_BUTTON_RIGHT) == 0) { + // TODO remove gotos + goto block_2; + } + } + if (GWGameStat.field10E_bit4 == 1) { + arg0->unk_54++; + var_r28 = 1; + if (arg0->unk_54 > 3) { + arg0->unk_54 = 0; + } + } + else { + arg0->unk_54++; + var_r28 = 1; + if (arg0->unk_54 > 2) { + arg0->unk_54 = 0; + } + goto block_1; + block_2: + if (HuPadStkX[lbl_1_bss_45C->unk_58] <= -5 || HuPadBtn[lbl_1_bss_45C->unk_58] & PAD_BUTTON_LEFT) { + if (GWGameStat.field10E_bit4 == 1) { + arg0->unk_54--; + var_r28 = -1; + if (arg0->unk_54 < 0) { + arg0->unk_54 = 3; + } + } + else { + arg0->unk_54--; + var_r28 = -1; + if (arg0->unk_54 < 0) { + arg0->unk_54 = 2; + } + } + } + else if (HuPadBtnDown[0] & PAD_BUTTON_A) { + var_r27 = 1; + break; + } + else if (HuPadBtnDown[0] & PAD_BUTTON_B) { + var_r27 = 0; + HuAudFXPlay(3); + break; + } + } + block_1: + if (arg0->unk_54 != var_r26) { + HuAudFXPlay(0); + for (var_r30 = 0; var_r30 <= 5; var_r30++) { + fn_1_1B7D0(1); + if (lbl_1_bss_444 != 0) { + var_f31 = fn_1_1B64C(lbl_1_data_694[arg0->unk_5C][0], lbl_1_data_694[arg0->unk_5C][0] + (var_r28 * 0xA), var_r30, 5.0f); + HuSprPosSet(var_r29, arg0->unk_48 + 0x2E, var_f31, lbl_1_data_694[arg0->unk_5C][1] + 0x23); + } + else { + var_f31 = fn_1_1B64C(lbl_1_data_5E4[arg0->unk_5C % 4][0], lbl_1_data_5E4[arg0->unk_5C % 4][0] + (var_r28 * 0xA), var_r30, 5.0f); + HuSprPosSet(var_r29, arg0->unk_48 + 0x2E, var_f31, lbl_1_data_5E4[(arg0->unk_5C / 4) * 4][1] + 0x23); + } + } + HuSprBankSet(var_r29, arg0->unk_48 + 0x2E, arg0->unk_54); + for (var_r30 = 0; var_r30 <= 5; var_r30++) { + fn_1_1B7D0(1); + if (lbl_1_bss_444 != 0) { + var_f31 = fn_1_1B64C(lbl_1_data_694[arg0->unk_5C][0] + (var_r28 * 0xA), lbl_1_data_694[arg0->unk_5C][0], var_r30, 5.0f); + HuSprPosSet(var_r29, arg0->unk_48 + 0x2E, var_f31, lbl_1_data_694[arg0->unk_5C][1] + 0x23); + } + else { + var_f31 = fn_1_1B64C(lbl_1_data_5E4[arg0->unk_5C % 4][0] + (var_r28 * 0xA), lbl_1_data_5E4[arg0->unk_5C % 4][0], var_r30, 5.0f); + HuSprPosSet(var_r29, arg0->unk_48 + 0x2E, var_f31, lbl_1_data_5E4[(arg0->unk_5C / 4) * 4][1] + 0x23); + } + } + } + } + if (var_r27 == 1) { + if (lbl_1_bss_444 != 0) { + HuSprPosSet(var_r29, arg0->unk_48 + 0x32, lbl_1_data_694[arg0->unk_5C][0], lbl_1_data_694[arg0->unk_5C][1] + 0x23); + } + else { + HuSprPosSet(var_r29, arg0->unk_48 + 0x32, lbl_1_data_5E4[arg0->unk_5C % 4][0], lbl_1_data_5E4[(arg0->unk_5C / 4) * 4][1] + 0x23); + } + HuSprBankSet(var_r29, arg0->unk_48 + 0x32, arg0->unk_54); + HuSprAttrReset(var_r29, arg0->unk_48 + 0x32, 4); + HuSprAttrSet(var_r29, arg0->unk_48 + 0x2E, 4); + } + return var_r27; +} + +void fn_1_1A3BC(void) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + AnimData *var_r28; + AnimData *var_r27; + + var_r29 = HuSprGrpCreate(0x1B); + lbl_1_bss_63C[2] = var_r29; + var_r30 = HuSprCreate(HuSprAnimReadFile(0x640067), 0x64, 0); + HuSprGrpMemberSet(var_r29, 0, var_r30); + var_r30 = HuSprCreate(HuSprAnimReadFile(0x640069), 0x64, 0); + HuSprGrpMemberSet(var_r29, 2, var_r30); + for (var_r31 = 0; var_r31 < 8; var_r31++) { + var_r30 = HuSprCreate(HuSprAnimReadFile(var_r31 + 0x64006B), 0x5A, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 4, var_r30); + } + var_r28 = HuSprAnimReadFile(0x640079); + var_r27 = HuSprAnimReadFile(0x64007A); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = HuSprCreate(var_r28, 0x50, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x12, var_r30); + var_r30 = HuSprCreate(var_r27, 0x50, 0); + HuSprGrpMemberSet(var_r29, var_r31 + 0x16, var_r30); + } + var_r30 = HuSprCreate(HuSprAnimReadFile(0x64007B), 0x46, 0); + HuSprGrpMemberSet(var_r29, 0x1A, var_r30); + fn_1_1A5A4(0); + fn_1_1AEFC(0); +} + +void fn_1_1A5A4(s32 arg0) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + s32 var_r22; + + var_r30 = lbl_1_bss_63C[2]; + for (var_r31 = 0; var_r31 < 0x1B; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + switch (arg0) { + case 0: + HuSprAttrReset(var_r30, 2, 4); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r28 = GWPlayerCfg[var_r31].character; + var_r25 = GWPlayerCfg[var_r31].diff; + HuSprAttrReset(var_r30, var_r28 + 4, 4); + HuSprPosSet(var_r30, var_r28 + 4, lbl_1_data_724[var_r31][0], lbl_1_data_724[var_r31][1]); + if (GWPlayerCfg[var_r31].iscom != 0) { + HuSprAttrReset(var_r30, var_r31 + 0x16, 4); + HuSprBankSet(var_r30, var_r31 + 0x16, var_r25); + HuSprPosSet(var_r30, var_r31 + 0x16, lbl_1_data_724[var_r31][0], lbl_1_data_724[var_r31][1] + 0x14); + } + else { + HuSprAttrReset(var_r30, var_r31 + 0x12, 4); + HuSprBankSet(var_r30, var_r31 + 0x12, var_r31); + HuSprPosSet(var_r30, var_r31 + 0x12, lbl_1_data_724[var_r31][0], lbl_1_data_724[var_r31][1] + 0x14); + } + } + break; + case 1: + HuSprAttrReset(var_r30, 0, 4); + var_r27 = GWPlayerCfg->character; + var_r24 = GWPlayerCfg->diff; + HuSprAttrReset(var_r30, var_r27 + 4, 4); + HuSprPosSet(var_r30, var_r27 + 4, 0.0f, lbl_1_data_744[1]); + if (GWPlayerCfg->iscom != 0) { + HuSprAttrReset(var_r30, 0x16, 4); + HuSprBankSet(var_r30, 0x16, var_r24); + HuSprPosSet(var_r30, var_r31 + 0x16, 0.0f, lbl_1_data_744[1] + 0x14); + } + else { + HuSprAttrReset(var_r30, 0x12, 4); + HuSprBankSet(var_r30, 0x12, 0); + HuSprPosSet(var_r30, 0x12, 0.0f, lbl_1_data_744[1] + 0x14); + } + break; + case 2: + HuSprAttrReset(var_r30, 1, 4); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r26 = GWPlayerCfg[var_r31].character; + var_r23 = GWPlayerCfg[var_r31].diff; + HuSprAttrReset(var_r30, var_r26 + 4, 4); + HuSprPosSet(var_r30, var_r26 + 4, lbl_1_data_74C[var_r31][0], lbl_1_data_74C[var_r31][1]); + if (GWPlayerCfg[var_r31].iscom != 0) { + HuSprAttrReset(var_r30, var_r31 + 0x16, 4); + HuSprBankSet(var_r30, var_r31 + 0x16, var_r23); + HuSprPosSet(var_r30, var_r31 + 0x16, lbl_1_data_74C[var_r31][0], lbl_1_data_74C[var_r31][1] + 0x19); + } + else { + HuSprAttrReset(var_r30, var_r31 + 0x12, 4); + HuSprBankSet(var_r30, var_r31 + 0x12, var_r31); + HuSprPosSet(var_r30, var_r31 + 0x12, lbl_1_data_74C[var_r31][0], lbl_1_data_74C[var_r31][1] + 0x19); + } + } + break; + case 3: + HuSprAttrReset(var_r30, 1, 4); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r29 = GWPlayerCfg[var_r31].character; + var_r22 = GWPlayerCfg[var_r31].diff; + var_r29 = fn_1_1B42C(var_r29); + HuSprAttrReset(var_r30, var_r29 + 4, 4); + HuSprPosSet(var_r30, var_r29 + 4, lbl_1_data_75C[var_r31][0], lbl_1_data_75C[var_r31][1]); + if (GWPlayerCfg[var_r31].iscom != 0) { + HuSprAttrReset(var_r30, var_r31 + 0x16, 4); + HuSprBankSet(var_r30, var_r31 + 0x16, var_r22); + HuSprPosSet(var_r30, var_r31 + 0x16, lbl_1_data_75C[var_r31][0], lbl_1_data_75C[var_r31][1] + 0x19); + } + else { + HuSprAttrReset(var_r30, var_r31 + 0x12, 4); + HuSprBankSet(var_r30, var_r31 + 0x12, var_r31); + HuSprPosSet(var_r30, var_r31 + 0x12, lbl_1_data_75C[var_r31][0], lbl_1_data_75C[var_r31][1] + 0x19); + } + } + HuSprAttrReset(var_r30, 0x1A, 4); + break; + } + HuSprGrpPosSet(var_r30, 112.0f, -428.0f); +} + +void fn_1_1AEFC(s32 arg0) +{ + s32 var_r31; + s32 var_r30; + + var_r30 = lbl_1_bss_63C[2]; + for (var_r31 = 0; var_r31 < 0x1B; var_r31++) { + HuSprAttrSet(var_r30, var_r31, 4); + } + HuSprGrpPosSet(var_r30, 112.0f, -428.0f); +} + +void fn_1_1AF78(s32 arg0) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + + var_r30 = lbl_1_bss_63C[2]; + fn_1_1A5A4(arg0); + for (var_r31 = 0; var_r31 <= 0x3C; var_r31++) { + fn_1_1B7D0(1); + if (var_r31 <= 0x32) { + var_f31 = fn_1_1B64C(-500.0f, 10.0f, var_r31, 50.0f); + } + else { + var_f31 = fn_1_1B574(10.0f, 0.0f, var_r31 - 0x32, 10.0f); + } + HuSprGrpPosSet(var_r30, 112.0f, 72.0f + var_f31); + } + HuSprGrpPosSet(var_r30, 112.0f, 72.0f); +} + +void fn_1_1B0DC(s32 arg0) +{ + float var_f31; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r29 = lbl_1_bss_63C[2]; + for (var_r31 = 0; var_r31 <= 0x3C; var_r31++) { + fn_1_1B7D0(1); + if (var_r31 <= 0xA) { + var_f31 = fn_1_1B64C(0.0f, 10.0f, var_r31, 10.0f); + } + else { + var_f31 = fn_1_1B574(10.0f, -500.0f, var_r31 - 0xA, 50.0f); + } + HuSprGrpPosSet(var_r29, 112.0f, 72.0f + var_f31); + } + HuSprGrpPosSet(var_r29, 112.0f, -428.0f); + var_r28 = lbl_1_bss_63C[2]; + for (var_r30 = 0; var_r30 < 0x1B; var_r30++) { + HuSprAttrSet(var_r28, var_r30, 4); + } + HuSprGrpPosSet(var_r28, 112.0f, -428.0f); +} + +void fn_1_1B294(void) +{ + omObjData *var_r31; + + var_r31 = NULL; + var_r31 = omAddObjEx(lbl_1_bss_440, 0x1000, 8, 8, -1, NULL); + lbl_1_bss_5DC.unk_00 = var_r31; + lbl_1_bss_5DC.unk_04 = NULL; + while (TRUE) { + HuPrcVSleep(); + if (lbl_1_bss_5DC.unk_04 == NULL) { + continue; + } + lbl_1_bss_5DC.unk_04(lbl_1_bss_5DC.unk_00, &lbl_1_bss_5DC); + } +} + +void fn_1_1B338(void) +{ + s32 var_r31; + omObjData *var_r30; + + var_r31 = lbl_1_bss_448[0]; + lbl_1_bss_448[0] = var_r31 + 1; + var_r30 = NULL; + var_r30 = omAddObjEx(lbl_1_bss_440, 0x1000, 8, 8, -1, NULL); + lbl_1_bss_45C[var_r31].unk_00 = var_r30; + lbl_1_bss_45C[var_r31].unk_04 = NULL; + + while (TRUE) { + HuPrcVSleep(); + if (lbl_1_bss_45C[var_r31].unk_04 == NULL) { + continue; + } + lbl_1_bss_45C[var_r31].unk_04(lbl_1_bss_45C[var_r31].unk_00, &lbl_1_bss_45C[var_r31]); + } +} + +s32 fn_1_1B42C(s32 arg0) +{ + s32 var_r31; + + switch (arg0) { + case 9: + var_r31 = 8; + break; + case 10: + var_r31 = 9; + break; + case 11: + var_r31 = 0xA; + break; + case 12: + var_r31 = 0xB; + break; + case 13: + var_r31 = 0xC; + break; + case 8: + var_r31 = 0xD; + break; + default: + var_r31 = -1; + break; + } + return var_r31; +} + +s32 fn_1_1B4AC(s32 arg0) +{ + s32 var_r31; + + switch (arg0) { + case 8: + var_r31 = 9; + break; + case 9: + var_r31 = 0xA; + break; + case 10: + var_r31 = 0xB; + break; + case 11: + var_r31 = 0xC; + break; + case 12: + var_r31 = 0xD; + break; + case 13: + var_r31 = 8; + break; + default: + var_r31 = -1; + break; + } + return var_r31; +} + +float fn_1_1B52C(float arg8, float arg9, float argA, float argB) +{ + if (argB <= argA) { + return arg9; + } + return arg8 + ((argA / argB) * (arg9 - arg8)); +} + +float fn_1_1B554(float arg0, float arg1, float arg2) +{ + return (arg1 + (arg0 * (arg2 - 1.0f))) / arg2; +} + +float fn_1_1B574(float arg0, float arg1, float arg2, float arg3) +{ + if (arg2 >= arg3) { + return arg1; + } + return arg0 + ((arg1 - arg0) * (1.0 - cosd(((90.0f / arg3) * arg2)))); +} + +float fn_1_1B64C(float arg0, float arg1, float arg2, float arg3) +{ + if (arg2 >= arg3) { + return arg1; + } + return arg0 + ((arg1 - arg0) * sind(((90.0f / arg3) * arg2))); +} + +float fn_1_1B714(float arg8, float arg9, float argA, float argB) +{ + if (argA >= argB) { + return arg8; + } + return arg8 + ((arg9 - arg8) * sind(((360.0f / argB) * argA))); +} + +void fn_1_1B7D0(s32 arg0) +{ + if (arg0 <= 1) { + HuPrcVSleep(); + return; + } + HuPrcSleep(arg0); +} + +void fn_1_1B810(void) +{ + HuWinInit(1); +} + +void fn_1_1B834(void) +{ + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + if (lbl_1_data_77C == -1) { + var_r31 = 0x1C9; + var_r30 = 0x44; + var_r29 = 1.0f + ((576.0f - var_r31) / 2); + var_r28 = 445.0f - var_r30; + lbl_1_data_77C = HuWinExCreateStyled(var_r29, var_r28, var_r31, var_r30, -1, 1); + winData[lbl_1_data_77C].active_pad = 1; + HuWinMesPalSet(lbl_1_data_77C, 7, 0, 0, 0); + HuWinExAnimIn(lbl_1_data_77C); + } +} + +void fn_1_1B9F4(void) +{ + if (lbl_1_data_77C != -1) { + HuWinMesSet(lbl_1_data_77C, 0x250004); + HuWinExAnimOut(lbl_1_data_77C); + HuWinExCleanup(lbl_1_data_77C); + lbl_1_data_77C = -1; + } +} + +void fn_1_1BA78(u32 arg0, s32 arg1, s32 arg2) +{ + if (lbl_1_data_77C != -1) { + if (arg2 == 1) { + HuWinMesSpeedSet(lbl_1_data_77C, 0); + } + else { + HuWinMesSpeedSet(lbl_1_data_77C, 1); + } + HuWinMesSet(lbl_1_data_77C, arg0); + if (arg1 <= 0) { + HuWinMesWait(lbl_1_data_77C); + return; + } + if (arg1 <= 1) { + HuPrcVSleep(); + return; + } + HuPrcSleep(arg1); + } +} + +void fn_1_1BB4C(u32 arg0, s32 arg1) +{ + if (lbl_1_data_77C != -1) { + HuWinInsertMesSet(lbl_1_data_77C, arg0, arg1); + } +} + +s32 fn_1_1BBA4(s32 arg0) +{ + float spC[2]; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + + HuWinMesMaxSizeGet(1, spC, 0x1E0035); + var_r30 = spC[0]; + var_r29 = spC[1]; + var_r27 = 0x22C - var_r30; + var_r26 = 0x1BD - var_r29; + var_r31 = HuWinExCreateStyled(var_r27, var_r26, var_r30, var_r29, -1, 1); + winData[var_r31].active_pad = 1; + HuWinMesPalSet(var_r31, 7, 0, 0, 0); + HuWinExAnimIn(var_r31); + HuWinMesSpeedSet(var_r31, 0); + HuWinMesSet(var_r31, 0x1E0035); + var_r28 = HuWinChoiceGet(var_r31, arg0); + HuWinMesSet(var_r31, 0x250004); + HuWinExAnimOut(var_r31); + HuWinExCleanup(var_r31); + return var_r28; +} + +void fn_1_1BD00(u32 arg0, s32 arg1) +{ + float spC[2]; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + HuWinMesMaxSizeGet(1, spC, arg0); + var_r29 = spC[0]; + var_r31 = spC[1]; + var_r28 = (0x240 - var_r29) / 2.0f; + if (arg1 == 1) { + var_r30 = 0x1BD - var_r31; + } + else { + var_r30 = 0x181 - var_r31; + } + if (lbl_1_data_780[0] != -1) { + fn_1_1C120(); + lbl_1_data_780[0] = HuWinExCreateStyled(var_r28, var_r30, var_r29, var_r31, -1, 1); + } + else { + lbl_1_data_780[0] = HuWinExCreateStyled(var_r28, var_r30, var_r29, var_r31, -1, 1); + } + HuWinBGTPLvlSet(lbl_1_data_780[0], 0.0f); + HuWinDispOn(lbl_1_data_780[0]); + HuWinMesSet(lbl_1_data_780[0], arg0); + HuWinMesSpeedSet(lbl_1_data_780[0], 0); +} + +void fn_1_1BF1C(u32 arg0) +{ + float sp8[2]; + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + HuWinMesMaxSizeGet(1, sp8, arg0); + var_r30 = sp8[0]; + var_r31 = sp8[1]; + var_r28 = (0x240 - var_r30) / 2.0f; + var_r29 = 0x181 - var_r31; + if (lbl_1_data_780[0] != -1) { + fn_1_1C120(); + lbl_1_data_780[0] = HuWinExCreateStyled(var_r28, var_r29, var_r30, var_r31, -1, 1); + } + else { + lbl_1_data_780[0] = HuWinExCreateStyled(var_r28, var_r29, var_r30, var_r31, -1, 1); + } + HuWinBGTPLvlSet(lbl_1_data_780[0], 0.0f); + HuWinDispOn(lbl_1_data_780[0]); + HuWinMesSet(lbl_1_data_780[0], arg0); + HuWinMesSpeedSet(lbl_1_data_780[0], 0); +} + +void fn_1_1C120(void) +{ + if (lbl_1_data_780[0] != -1) { + HuWinExCleanup(lbl_1_data_780[0]); + lbl_1_data_780[0] = -1; + } +} + +void fn_1_1C174(void) +{ + s32 var_r30; + s32 var_r31; + + var_r30 = lbl_1_bss_63C[1]; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_08 == 1) { + HuSprBankSet(var_r30, lbl_1_bss_45C[var_r31].unk_5C + 2, 1); + HuSprBankSet(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x1E, 1); + HuSprBankSet(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x22, 1); + HuSprAttrReset(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x1E, 4); + HuSprAttrReset(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x22, 4); + HuSprPosSet(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x1E, lbl_1_data_5E4[lbl_1_bss_45C[var_r31].unk_5C % 4][0], + lbl_1_data_5E4[(lbl_1_bss_45C[var_r31].unk_5C / 4) * 4][1]); + HuSprPosSet(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x22, lbl_1_data_5E4[lbl_1_bss_45C[var_r31].unk_5C % 4][0], + lbl_1_data_5E4[(lbl_1_bss_45C[var_r31].unk_5C / 4) * 4][1]); + } + else { + lbl_1_bss_45C[var_r31].unk_5C = 0; + } + } +} + +void fn_1_1C478(void) +{ + s32 var_r30; + s32 var_r31; + + var_r30 = lbl_1_bss_63C[1]; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_08 == 1) { + HuSprBankSet(var_r30, lbl_1_bss_45C[var_r31].unk_5C + 2, 1); + HuSprBankSet(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x1E, 1); + HuSprBankSet(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x22, 1); + HuSprAttrReset(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x1E, 4); + HuSprAttrReset(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x22, 4); + HuSprPosSet(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x1E, lbl_1_data_5E4[lbl_1_bss_45C[var_r31].unk_5C % 4][0], + lbl_1_data_5E4[(lbl_1_bss_45C[var_r31].unk_5C / 4) * 4][1]); + HuSprPosSet(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x22, lbl_1_data_5E4[lbl_1_bss_45C[var_r31].unk_5C % 4][0], + lbl_1_data_5E4[(lbl_1_bss_45C[var_r31].unk_5C / 4) * 4][1]); + } + else { + lbl_1_bss_45C[var_r31].unk_5C = 0; + } + } +} + +void fn_1_1C77C(void) +{ + s32 var_r29; + s32 var_r30; + s32 var_r31; + + var_r30 = lbl_1_bss_63C[1]; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_45C[var_r31].unk_08 == 1) { + if (lbl_1_bss_45C[var_r31].unk_5C <= 5) { + var_r29 = lbl_1_bss_45C[var_r31].unk_5C - 1; + } + else if (lbl_1_bss_45C[var_r31].unk_5C <= 0xB) { + var_r29 = lbl_1_bss_45C[var_r31].unk_5C - 3; + } + else { + var_r29 = lbl_1_bss_45C[var_r31].unk_5C - 4; + } + HuSprBankSet(var_r30, var_r29 + 2, 1); + HuSprBankSet(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x1E, 1); + HuSprBankSet(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x22, 1); + HuSprAttrReset(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x1E, 4); + HuSprAttrReset(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x22, 4); + HuSprPosSet(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x1E, lbl_1_data_694[lbl_1_bss_45C[var_r31].unk_5C][0], + lbl_1_data_694[lbl_1_bss_45C[var_r31].unk_5C][1]); + HuSprPosSet(var_r30, lbl_1_bss_45C[var_r31].unk_48 + 0x22, lbl_1_data_694[lbl_1_bss_45C[var_r31].unk_5C][0], + lbl_1_data_694[lbl_1_bss_45C[var_r31].unk_5C][1]); + } + else { + lbl_1_bss_45C[var_r31].unk_5C = 1; + } + } +} + +void fn_1_1CABC(s32 arg0) +{ + s32 sp8[] = { 0x6D, 0x6E, 0x6F, 0x70, 0x71, 0x72, 0x73, 0x74, 0x39, 0x40, 0x4B, 0x46, 0x3E, 0x3A }; + + if ((arg0 < 0) || (arg0 > 0xD)) { + return; + } + HuAudFXPlay(sp8[arg0]); +} diff --git a/src/REL/mpexDll/main.c b/src/REL/mpexDll/main.c new file mode 100644 index 00000000..ed43b5c1 --- /dev/null +++ b/src/REL/mpexDll/main.c @@ -0,0 +1,501 @@ +#include "ext_math.h" +#include "game/armem.h" +#include "game/audio.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/wipe.h" +#include "rel_sqrt_consts.h" + +#include "REL/mpexDll.h" + +void fn_1_230(); +void fn_1_A70(MpexDllUnkStruct *arg0); + +MpexDllUnkStruct lbl_1_bss_64; +s32 lbl_1_bss_4[0x18]; +Process *lbl_1_bss_0; + +void fn_1_A0(void) +{ + if (HuPadBtnDown[0] & PAD_BUTTON_Y) { + OSReport("\n###################################################################### HEAP\n\n"); + HuMemHeapDump(HuMemHeapPtrGet(HEAP_SYSTEM), -1); + OSReport("\n###################################################################### SOUND\n\n"); + HuMemHeapDump(HuMemHeapPtrGet(HEAP_MUSIC), -1); + OSReport("\n###################################################################### MODEL\n\n"); + HuMemHeapDump(HuMemHeapPtrGet(HEAP_DATA), -1); + OSReport("\n###################################################################### DVD\n\n"); + HuMemHeapDump(HuMemHeapPtrGet(HEAP_DVD), -1); + OSReport("\n###################################################################### SPACE\n\n"); + HuMemHeapDump(HuMemHeapPtrGet(HEAP_MISC), -1); + OSReport("\n###################################################################### ARAM\n\n"); + HuAMemDump(); + } +} + +void fn_1_188(omObjData *object) +{ + if (WipeStatGet() == 0) { + omOvlReturnEx(1, 1); + } +} + +void fn_1_1C0(omObjData *object) +{ + if (omSysExitReq != 0) { + HuAudFadeOut(0x3E8); + WipeColorSet(0, 0, 0); + WipeCreate(2, 0, -1); + object->func = fn_1_188; + } +} + +void ObjectSetup(void) +{ + mgPracticeEnableF = 0; + lbl_1_bss_0 = omInitObjMan(0x3E, 0x2000); + GWSystem.mg_next = 0xFFFF; + fn_1_3044(lbl_1_bss_0); +} + +void fn_1_298(void) +{ + s32 var_r31; + + var_r31 = -1; + var_r31 = Hu3DGLightCreate(0.0f, 0.0f, 0.0f, 0.0f, -1.0f, 0.0f, 0xFF, 0xFF, 0xFF); + Hu3DGLightPosAimSet(var_r31, 0.0f, 1000.0f, 1000.0f, 0.0f, 0.0f, 0.0f); + Hu3DGLightInfinitytSet(var_r31); +} + +void fn_1_374(void) +{ + Vec sp20 = { 0.0f, 3000.0f, 3000.0f }; + Vec sp14 = { 0.0f, 0.0f, 0.0f }; + Vec sp8 = { 0.0f, 1.0f, 0.0f }; + + Hu3DShadowCreate(45.0f, 2000.0f, 25000.0f); + Hu3DShadowPosSet(&sp20, &sp8, &sp14); + Hu3DShadowTPLvlSet(0.8f); +} + +void fn_1_438(void) +{ + MpexDllUnkStruct *var_r31 = &lbl_1_bss_64; + + if (HuPadBtn[0] & PAD_BUTTON_B) { + if (HuPadBtn[0] & 0x20) { + var_r31->unk_08.z -= (HuPadStkY[0] / 10.0f); + } + else { + var_r31->unk_08.x += HuPadStkX[0] / 10.0f; + var_r31->unk_08.y += (HuPadStkY[0] / 10.0f); + } + } + if (HuPadBtn[0] & PAD_BUTTON_Y) { + var_r31->unk_20.x -= HuPadStkY[0] / 100.0f; + var_r31->unk_20.y += (HuPadStkX[0] / 100.0f); + if (var_r31->unk_20.x < 0.0f) { + var_r31->unk_20.x += 360.0f; + } + if (var_r31->unk_20.x >= 360.0f) { + var_r31->unk_20.x -= 360.0f; + } + if (var_r31->unk_20.y < 0.0f) { + var_r31->unk_20.y += 360.0f; + } + if (var_r31->unk_20.y >= 360.0f) { + var_r31->unk_20.y -= 360.0f; + } + } + if (HuPadBtn[0] & PAD_BUTTON_X) { + var_r31->unk_38 -= (HuPadStkY[0] / 10.0f); + } + print8(0x18, 0x28, 1.0f, ">>>>>>>>>> CAMERA DATA <<<<<<<<<<"); + print8(0x18, 0x32, 1.0f, "CENTER : %.2f, %.2f, %.2f", var_r31->unk_08.x, var_r31->unk_08.y, var_r31->unk_08.z); + print8(0x18, 0x3C, 1.0f, "ROT : %.2f, %.2f, %.2f", var_r31->unk_20.x, var_r31->unk_20.y, var_r31->unk_20.z); + print8(0x18, 0x46, 1.0f, "ZOOM : %.2f", var_r31->unk_38); +} + +void fn_1_81C(omObjData *object) +{ + MpexDllUnkStruct *var_r31 = &lbl_1_bss_64; + if (var_r31->unk_00 != NULL) { + var_r31->unk_00(); + } + Center.x = var_r31->unk_08.x; + Center.y = var_r31->unk_08.y; + Center.z = var_r31->unk_08.z; + CRot.x = var_r31->unk_20.x; + CRot.y = var_r31->unk_20.y; + CRot.z = var_r31->unk_20.z; + CZoom = var_r31->unk_38; +} + +void fn_1_8D4(MpexDllUnkFunc arg0) +{ + lbl_1_bss_64.unk_00 = arg0; + fn_1_A70(&lbl_1_bss_64); +} + +void fn_1_910(MpexDllUnkFunc arg0) +{ + Hu3DCameraCreate(1); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraPerspectiveSet(1, 45.0f, 20.0f, 5000.0f, 1.2f); + lbl_1_bss_64.unk_00 = arg0; + lbl_1_bss_64.unk_04 = fn_1_438; + omAddObjEx(lbl_1_bss_0, 0x7FDA, 0, 0, -1, omOutView); + omAddObjEx(lbl_1_bss_0, 0x7FD9, 0, 0, -1, fn_1_81C); +} + +void fn_1_A34(MpexDllUnkStruct *arg0) +{ + arg0->unk_08.x = arg0->unk_14.x; + arg0->unk_08.y = arg0->unk_14.y; + arg0->unk_08.z = arg0->unk_14.z; + arg0->unk_20.x = arg0->unk_2C.x; + arg0->unk_20.y = arg0->unk_2C.y; + arg0->unk_20.z = arg0->unk_2C.z; + arg0->unk_38 = arg0->unk_3C; +} + +void fn_1_A70(MpexDllUnkStruct *arg0) +{ + arg0->unk_40 = 0; + arg0->unk_14.x = arg0->unk_08.x; + arg0->unk_14.y = arg0->unk_08.y; + arg0->unk_14.z = arg0->unk_08.z; + arg0->unk_2C.x = arg0->unk_20.x; + arg0->unk_2C.y = arg0->unk_20.y; + arg0->unk_2C.z = arg0->unk_20.z; + arg0->unk_3C = arg0->unk_38; +} + +void fn_1_AB4(MpexDllUnkStruct *arg0, MpexDllUnkStruct *arg1, float arg8) +{ + arg0->unk_08.x = fn_1_1B554(arg0->unk_08.x, arg1->unk_14.x, arg8); + arg0->unk_08.y = fn_1_1B554(arg0->unk_08.y, arg1->unk_14.y, arg8); + arg0->unk_08.z = fn_1_1B554(arg0->unk_08.z, arg1->unk_14.z, arg8); + arg0->unk_20.x = fn_1_1B554(arg0->unk_20.x, arg1->unk_2C.x, arg8); + arg0->unk_20.y = fn_1_1B554(arg0->unk_20.y, arg1->unk_2C.y, arg8); + arg0->unk_20.z = fn_1_1B554(arg0->unk_20.z, arg1->unk_2C.z, arg8); + arg0->unk_38 = fn_1_1B554(arg0->unk_38, arg1->unk_3C, arg8); +} + +void fn_1_C84(MpexDllUnkStruct *arg0, float arg8, float argB) +{ + arg0->unk_08.x = fn_1_1B554(arg0->unk_08.x, arg0->unk_14.x, arg8); + arg0->unk_08.y = fn_1_1B554(arg0->unk_08.y, arg0->unk_14.y, arg8); + arg0->unk_08.z = fn_1_1B554(arg0->unk_08.z, arg0->unk_14.z, arg8); + arg0->unk_20.x = fn_1_1B554(arg0->unk_20.x, arg0->unk_2C.x, arg8); + arg0->unk_20.y = fn_1_1B554(arg0->unk_20.y, arg0->unk_2C.y, arg8); + arg0->unk_20.z = fn_1_1B554(arg0->unk_20.z, arg0->unk_2C.z, arg8); + arg0->unk_38 = fn_1_1B554(arg0->unk_38, arg0->unk_3C, arg8); +} + +void fn_1_E48(MpexDllUnkStruct *arg0, MpexDllUnkStruct *arg1, float arg8, float arg9, float argC) +{ + arg1->unk_14.x = fn_1_1B52C(arg0->unk_14.x, arg1->unk_08.x, arg8, arg9); + arg1->unk_14.y = fn_1_1B52C(arg0->unk_14.y, arg1->unk_08.y, arg8, arg9); + arg1->unk_14.z = fn_1_1B52C(arg0->unk_14.z, arg1->unk_08.z, arg8, arg9); + arg1->unk_2C.x = fn_1_1B52C(arg0->unk_2C.x, arg1->unk_20.x, arg8, arg9); + arg1->unk_2C.y = fn_1_1B52C(arg0->unk_2C.y, arg1->unk_20.y, arg8, arg9); + arg1->unk_2C.z = fn_1_1B52C(arg0->unk_2C.z, arg1->unk_20.z, arg8, arg9); + arg1->unk_3C = fn_1_1B52C(arg0->unk_3C, arg1->unk_38, arg8, arg9); +} + +void fn_1_1048(MpexDllUnkStruct *arg0, MpexDllUnkStruct *arg1, float arg8, float arg9, float argC) +{ + arg1->unk_14.x = fn_1_1B52C(arg0->unk_14.x, arg1->unk_08.x, arg8, arg9); + arg1->unk_14.y = fn_1_1B52C(arg0->unk_14.y, arg1->unk_08.y, arg8, arg9); + arg1->unk_14.z = fn_1_1B52C(arg0->unk_14.z, arg1->unk_08.z, arg8, arg9); + arg1->unk_2C.x = fn_1_1B52C(arg0->unk_2C.x, arg1->unk_20.x, arg8, arg9); + arg1->unk_2C.y = fn_1_1B52C(arg0->unk_2C.y, arg1->unk_20.y, arg8, arg9); + arg1->unk_2C.z = fn_1_1B52C(arg0->unk_2C.z, arg1->unk_20.z, arg8, arg9); + arg1->unk_3C = fn_1_1B52C(arg0->unk_3C, arg1->unk_38, arg8, arg9); + arg0->unk_08.x = arg1->unk_14.x; + arg0->unk_08.y = arg1->unk_14.y; + arg0->unk_08.z = arg1->unk_14.z; + arg0->unk_20.x = arg1->unk_2C.x; + arg0->unk_20.y = arg1->unk_2C.y; + arg0->unk_20.z = arg1->unk_2C.z; + arg0->unk_38 = arg1->unk_3C; +} + +void fn_1_1280(MpexDllUnkStruct *arg0, MpexDllUnkStruct *arg1, float arg8, float arg9, float argA, float argC) +{ + arg1->unk_14.x = fn_1_1B52C(arg0->unk_14.x, arg1->unk_08.x, arg8, arg9); + arg1->unk_14.y = fn_1_1B52C(arg0->unk_14.y, arg1->unk_08.y, arg8, arg9); + arg1->unk_14.z = fn_1_1B52C(arg0->unk_14.z, arg1->unk_08.z, arg8, arg9); + arg1->unk_2C.x = fn_1_1B52C(arg0->unk_2C.x, arg1->unk_20.x, arg8, arg9); + arg1->unk_2C.y = fn_1_1B52C(arg0->unk_2C.y, arg1->unk_20.y, arg8, arg9); + arg1->unk_2C.z = fn_1_1B52C(arg0->unk_2C.z, arg1->unk_20.z, arg8, arg9); + arg1->unk_3C = fn_1_1B52C(arg0->unk_3C, arg1->unk_38, arg8, arg9); + arg0->unk_08.x = fn_1_1B554(arg0->unk_08.x, arg1->unk_14.x, argA); + arg0->unk_08.y = fn_1_1B554(arg0->unk_08.y, arg1->unk_14.y, argA); + arg0->unk_08.z = fn_1_1B554(arg0->unk_08.z, arg1->unk_14.z, argA); + arg0->unk_20.x = fn_1_1B554(arg0->unk_20.x, arg1->unk_2C.x, argA); + arg0->unk_20.y = fn_1_1B554(arg0->unk_20.y, arg1->unk_2C.y, argA); + arg0->unk_20.z = fn_1_1B554(arg0->unk_20.z, arg1->unk_2C.z, argA); + arg0->unk_38 = fn_1_1B554(arg0->unk_38, arg1->unk_3C, argA); +} + +void fn_1_161C(MpexDllUnkStruct *arg0, MpexDllUnkStruct *arg1, float arg8, float arg9, float argC) +{ + arg1->unk_14.x = fn_1_1B64C(arg0->unk_14.x, arg1->unk_08.x, arg8, arg9); + arg1->unk_14.y = fn_1_1B64C(arg0->unk_14.y, arg1->unk_08.y, arg8, arg9); + arg1->unk_14.z = fn_1_1B64C(arg0->unk_14.z, arg1->unk_08.z, arg8, arg9); + arg1->unk_2C.x = fn_1_1B64C(arg0->unk_2C.x, arg1->unk_20.x, arg8, arg9); + arg1->unk_2C.y = fn_1_1B64C(arg0->unk_2C.y, arg1->unk_20.y, arg8, arg9); + arg1->unk_2C.z = fn_1_1B64C(arg0->unk_2C.z, arg1->unk_20.z, arg8, arg9); + arg1->unk_3C = fn_1_1B64C(arg0->unk_3C, arg1->unk_38, arg8, arg9); +} + +void fn_1_181C(MpexDllUnkStruct *arg0, MpexDllUnkStruct *arg1, float arg8, float arg9, float argC) +{ + arg1->unk_14.x = fn_1_1B64C(arg0->unk_14.x, arg1->unk_08.x, arg8, arg9); + arg1->unk_14.y = fn_1_1B64C(arg0->unk_14.y, arg1->unk_08.y, arg8, arg9); + arg1->unk_14.z = fn_1_1B64C(arg0->unk_14.z, arg1->unk_08.z, arg8, arg9); + arg1->unk_2C.x = fn_1_1B64C(arg0->unk_2C.x, arg1->unk_20.x, arg8, arg9); + arg1->unk_2C.y = fn_1_1B64C(arg0->unk_2C.y, arg1->unk_20.y, arg8, arg9); + arg1->unk_2C.z = fn_1_1B64C(arg0->unk_2C.z, arg1->unk_20.z, arg8, arg9); + arg1->unk_3C = fn_1_1B64C(arg0->unk_3C, arg1->unk_38, arg8, arg9); + arg0->unk_08.x = arg1->unk_14.x; + arg0->unk_08.y = arg1->unk_14.y; + arg0->unk_08.z = arg1->unk_14.z; + arg0->unk_20.x = arg1->unk_2C.x; + arg0->unk_20.y = arg1->unk_2C.y; + arg0->unk_20.z = arg1->unk_2C.z; + arg0->unk_38 = arg1->unk_3C; +} + +void fn_1_1A54(MpexDllUnkStruct *arg0, MpexDllUnkStruct *arg1, float arg8, float arg9, float argA, float argC) +{ + arg1->unk_14.x = fn_1_1B64C(arg0->unk_14.x, arg1->unk_08.x, arg8, arg9); + arg1->unk_14.y = fn_1_1B64C(arg0->unk_14.y, arg1->unk_08.y, arg8, arg9); + arg1->unk_14.z = fn_1_1B64C(arg0->unk_14.z, arg1->unk_08.z, arg8, arg9); + arg1->unk_2C.x = fn_1_1B64C(arg0->unk_2C.x, arg1->unk_20.x, arg8, arg9); + arg1->unk_2C.y = fn_1_1B64C(arg0->unk_2C.y, arg1->unk_20.y, arg8, arg9); + arg1->unk_2C.z = fn_1_1B64C(arg0->unk_2C.z, arg1->unk_20.z, arg8, arg9); + arg1->unk_3C = fn_1_1B64C(arg0->unk_3C, arg1->unk_38, arg8, arg9); + arg0->unk_08.x = fn_1_1B554(arg0->unk_08.x, arg1->unk_14.x, argA); + arg0->unk_08.y = fn_1_1B554(arg0->unk_08.y, arg1->unk_14.y, argA); + arg0->unk_08.z = fn_1_1B554(arg0->unk_08.z, arg1->unk_14.z, argA); + arg0->unk_20.x = fn_1_1B554(arg0->unk_20.x, arg1->unk_2C.x, argA); + arg0->unk_20.y = fn_1_1B554(arg0->unk_20.y, arg1->unk_2C.y, argA); + arg0->unk_20.z = fn_1_1B554(arg0->unk_20.z, arg1->unk_2C.z, argA); + arg0->unk_38 = fn_1_1B554(arg0->unk_38, arg1->unk_3C, argA); +} + +void fn_1_1DF0(MpexDllUnkStruct *arg0, MpexDllUnkStruct *arg1, float arg8, float arg9, float argC) +{ + arg1->unk_14.x = fn_1_1B574(arg0->unk_14.x, arg1->unk_08.x, arg8, arg9); + arg1->unk_14.y = fn_1_1B574(arg0->unk_14.y, arg1->unk_08.y, arg8, arg9); + arg1->unk_14.z = fn_1_1B574(arg0->unk_14.z, arg1->unk_08.z, arg8, arg9); + arg1->unk_2C.x = fn_1_1B574(arg0->unk_2C.x, arg1->unk_20.x, arg8, arg9); + arg1->unk_2C.y = fn_1_1B574(arg0->unk_2C.y, arg1->unk_20.y, arg8, arg9); + arg1->unk_2C.z = fn_1_1B574(arg0->unk_2C.z, arg1->unk_20.z, arg8, arg9); + arg1->unk_3C = fn_1_1B574(arg0->unk_3C, arg1->unk_38, arg8, arg9); +} + +void fn_1_1FF0(MpexDllUnkStruct *arg0, MpexDllUnkStruct *arg1, float arg8, float arg9, float argC) +{ + arg1->unk_14.x = fn_1_1B574(arg0->unk_14.x, arg1->unk_08.x, arg8, arg9); + arg1->unk_14.y = fn_1_1B574(arg0->unk_14.y, arg1->unk_08.y, arg8, arg9); + arg1->unk_14.z = fn_1_1B574(arg0->unk_14.z, arg1->unk_08.z, arg8, arg9); + arg1->unk_2C.x = fn_1_1B574(arg0->unk_2C.x, arg1->unk_20.x, arg8, arg9); + arg1->unk_2C.y = fn_1_1B574(arg0->unk_2C.y, arg1->unk_20.y, arg8, arg9); + arg1->unk_2C.z = fn_1_1B574(arg0->unk_2C.z, arg1->unk_20.z, arg8, arg9); + arg1->unk_3C = fn_1_1B574(arg0->unk_3C, arg1->unk_38, arg8, arg9); + arg0->unk_08.x = arg1->unk_14.x; + arg0->unk_08.y = arg1->unk_14.y; + arg0->unk_08.z = arg1->unk_14.z; + arg0->unk_20.x = arg1->unk_2C.x; + arg0->unk_20.y = arg1->unk_2C.y; + arg0->unk_20.z = arg1->unk_2C.z; + arg0->unk_38 = arg1->unk_3C; +} + +void fn_1_2228(MpexDllUnkStruct *arg0, MpexDllUnkStruct *arg1, float arg8, float arg9, float argA, float argC) +{ + arg1->unk_14.x = fn_1_1B574(arg0->unk_14.x, arg1->unk_08.x, arg8, arg9); + arg1->unk_14.y = fn_1_1B574(arg0->unk_14.y, arg1->unk_08.y, arg8, arg9); + arg1->unk_14.z = fn_1_1B574(arg0->unk_14.z, arg1->unk_08.z, arg8, arg9); + arg1->unk_2C.x = fn_1_1B574(arg0->unk_2C.x, arg1->unk_20.x, arg8, arg9); + arg1->unk_2C.y = fn_1_1B574(arg0->unk_2C.y, arg1->unk_20.y, arg8, arg9); + arg1->unk_2C.z = fn_1_1B574(arg0->unk_2C.z, arg1->unk_20.z, arg8, arg9); + arg1->unk_3C = fn_1_1B574(arg0->unk_3C, arg1->unk_38, arg8, arg9); + arg0->unk_08.x = fn_1_1B554(arg0->unk_08.x, arg1->unk_14.x, argA); + arg0->unk_08.y = fn_1_1B554(arg0->unk_08.y, arg1->unk_14.y, argA); + arg0->unk_08.z = fn_1_1B554(arg0->unk_08.z, arg1->unk_14.z, argA); + arg0->unk_20.x = fn_1_1B554(arg0->unk_20.x, arg1->unk_2C.x, argA); + arg0->unk_20.y = fn_1_1B554(arg0->unk_20.y, arg1->unk_2C.y, argA); + arg0->unk_20.z = fn_1_1B554(arg0->unk_20.z, arg1->unk_2C.z, argA); + arg0->unk_38 = fn_1_1B554(arg0->unk_38, arg1->unk_3C, argA); +} + +void fn_1_25C4(MpexDllUnkStruct2 *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) +{ + switch (arg4) { + case 0: + Hu3DMotionShiftSet(arg0->unk_40[arg1], arg0->unk_48[arg2], 0.0f, arg3, 0); + break; + case 1: + Hu3DMotionShiftSet(arg0->unk_40[arg1], arg0->unk_48[arg2], 0.0f, arg3, 0x40000001); + break; + case 2: + Hu3DMotionShiftSet(arg0->unk_40[arg1], arg0->unk_48[arg2], 0.0f, arg3, 0x40000002); + break; + } +} + +void fn_1_273C(MpexDllUnkStruct2 *arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) +{ + if (arg0->unk_58 != arg0->unk_48[arg2]) { + arg0->unk_58 = arg0->unk_48[arg2]; + switch (arg4) { + case 0: + Hu3DMotionShiftSet(arg0->unk_40[arg1], arg0->unk_48[arg2], 0.0f, arg3, 0); + break; + case 1: + Hu3DMotionShiftSet(arg0->unk_40[arg1], arg0->unk_48[arg2], 0.0f, arg3, 0x40000001); + break; + case 2: + Hu3DMotionShiftSet(arg0->unk_40[arg1], arg0->unk_48[arg2], 0.0f, arg3, 0x40000002); + break; + } + } +} + +void fn_1_28DC(void) { } + +void fn_1_28E0(MpexDllUnkStruct2 *arg0, s32 arg1, Vec *arg2, float arg8, float arg9, float argA, s32 arg3, s32 arg4) +{ + Vec sp4C; + Vec sp40; + Vec sp34; + Vec sp28; + Vec sp1C; + Vec sp10; + + s32 var_r29 = 0; + s32 var_r28 = 0; + s32 var_r26; + + sp40.x = Hu3DData[arg0->unk_40[arg1]].pos.x; + sp40.y = Hu3DData[arg0->unk_40[arg1]].pos.y; + sp40.z = Hu3DData[arg0->unk_40[arg1]].pos.z; + + sp34.x = arg2->x; + sp34.y = arg2->y; + sp34.z = arg2->z; + + sp1C.x = Hu3DData[arg0->unk_40[arg1]].rot.x; + sp1C.y = Hu3DData[arg0->unk_40[arg1]].rot.y; + sp1C.z = Hu3DData[arg0->unk_40[arg1]].rot.z; + + sp10.x = 0.0f; + sp10.y = arg8; + sp10.z = 0.0f; + + if ((sp34.x - sp40.x) >= 0.0f) { + var_r29 = 1; + } + else { + var_r29 = 0; + } + if ((sp34.z - sp40.z) >= 0.0f) { + var_r28 = 1; + } + else { + var_r28 = 0; + } + while (arg3 != 0) { + fn_1_1B7D0(1); + sp28.y = -((atan2d(sp34.z - sp40.z, sp34.x - sp40.x)) - 90.0); + if (sp28.y < 0.0f) { + sp28.y += 360.0f; + } + else if (sp28.y >= 360.0f) { + sp28.y -= 360.0f; + } + if (arg4 != 0) { + if (sp28.y >= 180.0f) { + if ((sp1C.y - sp28.y) >= 180.0f) { + sp1C.y -= 360.0f; + } + if ((sp1C.y - sp28.y) < -180.0f) { + sp1C.y += 360.0f; + } + } + else { + if ((sp1C.y - sp28.y) > 180.0f) { + sp1C.y -= 360.0f; + } + if ((sp1C.y - sp28.y) <= -180.0f) { + sp1C.y += 360.0f; + } + } + } + sp4C.x = (sp40.x += (arg9 * sind(sp28.y))); + sp4C.z = (sp40.z += (arg9 * cosd(sp28.y))); + if (var_r29 == 1) { + if (sp40.x >= sp34.x) { + sp4C.x = sp40.x = sp34.x; + var_r29 = 2; + } + } + else if ((var_r29 == 0) && (sp40.x <= sp34.x)) { + sp4C.x = sp40.x = sp34.x; + var_r29 = 2; + } + if (var_r28 == 1) { + if (sp40.z >= sp34.z) { + sp4C.z = sp40.z = sp34.z; + var_r28 = 2; + } + } + else if ((var_r28 == 0) && (sp40.z <= sp34.z)) { + sp4C.z = sp40.z = sp34.z; + var_r28 = 2; + } + if (arg4 != 0) { + sp1C.y = fn_1_1B554(sp1C.y, sp28.y, argA); + } + Hu3DModelPosSet(arg0->unk_40[arg1], sp4C.x, sp40.y, sp4C.z); + Hu3DModelRotSet(arg0->unk_40[arg1], sp1C.x, sp1C.y, sp1C.z); + + if (var_r29 == 2 && var_r28 == 2) { + break; + } + }; + + sp1C.y = Hu3DData[arg0->unk_40[arg1]].rot.y; + if (arg4 != 0) { + for (var_r26 = 0; var_r26 <= argA; var_r26++) { + fn_1_1B7D0(1); + if (sp10.y >= 180.0f) { + if ((sp1C.y - sp10.y) >= 180.0f) { + sp1C.y -= 360.0f; + } + if ((sp1C.y - sp10.y) < -180.0f) { + sp1C.y += 360.0f; + } + } + else { + if ((sp1C.y - sp10.y) > 180.0f) { + sp1C.y -= 360.0f; + } + if ((sp1C.y - sp10.y) <= -180.0f) { + sp1C.y += 360.0f; + } + } + sp10.z = fn_1_1B52C(sp1C.y, sp10.y, var_r26, argA); + Hu3DModelRotSet(arg0->unk_40[arg1], sp1C.x, sp10.z, sp1C.z); + } + } +} diff --git a/src/REL/mpexDll/mgname.c b/src/REL/mpexDll/mgname.c new file mode 100644 index 00000000..91f3d5b9 --- /dev/null +++ b/src/REL/mpexDll/mgname.c @@ -0,0 +1,378 @@ +#include "ext_math.h" +#include "game/armem.h" +#include "game/audio.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + +#include "REL/mpexDll.h" + +s32 lbl_1_data_788[0xC6] = { + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0x140025, + 0x140026, + 0x140027, + 0x140028, + 0x140029, + 0x14002A, + 0x14002B, + 0x14002C, + 0x14002D, + 0x14002E, + 0x140025, + 0x140025, + 0x140025, + 0x14002F, + 0x140025, + 0x140025, + 0x140025, + 0x140034, + 0x140035, + 0x140036, + 0x140037, + 0x140038, + 0x140039, + 0x14003A, + 0x14003B, + 0x14003C, + 0x14003D, + 0x14003E, + 0x14003F, + 0x140040, + 0x140041, + 0x140042, + 0x140043, + 0x140044, + 0x140045, + 0x140046, + 0x140047, + 0x140048, + 0x140049, + 0x14004A, + 0x14004B, + 0x14004C, + 0x14004D, + 0x140042, + 0x140032, + 0x140042, + 0x140042, + 0x140042, + 0x140042, + 0x14004E, + 0x14004F, + 0x140050, + 0x140051, + 0x140052, + 0x140053, + 0x140054, + 0x140055, + 0x140056, + 0x140057, + 0x140058, + 0x140059, + 0x14005A, + 0x14005B, + 0x14005C, + 0x14005D, + 0x14005E, + 0x14005F, + 0x140060, + 0x140061, + 0x140062, + 0x140063, + 0x140064, + 0x140065, + 0x140066, + 0x140067, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x14002F, + 0x140033, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140025, + 0x140030, + 0x140031, + 0x140025, + 0x140025, +}; + +s32 fn_1_1CB80(SeqWork *arg0, u8 *arg1, s16 arg2) +{ + u8 *var_r31; + s16 var_r30; + s16 *var_r29; + s16 var_r28; + s32 *var_r27; + s16 var_r26; + s32 var_r25; + s16 var_r23; + s16 *var_r22; + AnimData **var_r21; + s16 var_r20; + s16 var_r19; + + var_r27 = lbl_1_data_788; + + for (var_r23 = 0; var_r23 < 0x10; var_r23++) { + if (arg0->spr_grp[var_r23] == -1) { + break; + } + } + if (var_r23 == 0x10) { + return -1; + } + var_r21 = HuMemDirectMalloc(HEAP_SYSTEM, 0x190); + var_r22 = HuMemDirectMalloc(HEAP_SYSTEM, 0xC8); + var_r29 = HuMemDirectMalloc(HEAP_SYSTEM, 0xC8); + + for (var_r31 = arg1, var_r30 = 0, var_r28 = 0; var_r31[0] != 0; var_r31++) { + if (var_r31[0] == 0x20 || var_r31[0] == 0x10) { + var_r30 += 0xE; + } + else if (var_r31[0] < 0x30 || var_r31[0] == 0x80 || var_r31[0] == 0x81) { + continue; + } + else { + if (var_r31[1] == 0x80) { + if ((var_r31[0] >= 0x96) && (var_r31[0] <= 0xA4)) { + var_r25 = var_r27[var_r31[0] + 0x6A]; + } + else if ((var_r31[0] >= 0xAA) && (var_r31[0] <= 0xAE)) { + var_r25 = var_r27[var_r31[0] + 0x65]; + } + else if ((var_r31[0] >= 0xD6) && (var_r31[0] <= 0xE4)) { + var_r25 = var_r27[var_r31[0] + 0x43]; + } + else if ((var_r31[0] >= 0xEA) && (var_r31[0] <= 0xEE)) { + var_r25 = var_r27[var_r31[0] + 0x3E]; + } + } + else if (var_r31[1] == 0x81) { + if ((var_r31[0] >= 0xAA) && (var_r31[0] <= 0xAE)) { + var_r25 = var_r27[var_r31[0] + 0x6A]; + } + else if ((var_r31[0] >= 0xEA) && (var_r31[0] <= 0xEE)) { + var_r25 = var_r27[var_r31[0] + 0x43]; + } + } + else { + var_r25 = var_r27[var_r31[0]]; + } + var_r21[var_r28] = HuSprAnimReadFile(var_r25); + var_r22[var_r28] = var_r30; + if ((var_r31[0] >= 0x61) && (var_r31[0] <= 0x7A)) { + var_r29[var_r28] = 2; + var_r30 += 0x12; + } + else if ((var_r31[0] == 0xC2) || (var_r31[0] == 0xC3)) { + var_r29[var_r28] = 0; + var_r30 += 0x12; + } + else if (var_r31[0] == 0x5C) { + var_r29[var_r28] = 0; + var_r30 += 8; + } + else if ((var_r31[0] >= 0x87) && (var_r31[0] <= 0x8F)) { + var_r29[var_r28] = 4; + var_r30 += 0x18; + } + else if ((var_r31[0] >= 0xC7) && (var_r31[0] <= 0xCF)) { + var_r29[var_r28] = 4; + var_r30 += 0x18; + } + else if ((var_r31[0] == 0x3D) || (var_r31[0] == 0x84)) { + var_r29[var_r28] = 0; + var_r30 += 0x14; + } + else { + var_r29[var_r28] = 0; + var_r30 += 0x1C; + } + var_r28++; + } + } + var_r20 = HuSprGrpCreate(var_r28); + arg0->spr_grp[var_r23] = var_r20; + arg0->alt_word_len = var_r30; + var_r30 = (var_r30 / 2) - 0xE; + for (var_r26 = 0; var_r26 < var_r28; var_r26++) { + var_r19 = HuSprCreate(var_r21[var_r26], 0, 0); + HuSprGrpMemberSet(var_r20, var_r26, var_r19); + HuSprPosSet(var_r20, var_r26, var_r22[var_r26] - var_r30, var_r29[var_r26]); + } + + arg0->word_len = var_r28; + HuMemDirectFree(var_r21); + HuMemDirectFree(var_r22); + HuMemDirectFree(var_r29); + return var_r20; +} + +s32 fn_1_1D02C(s32 arg0) +{ + SeqWork sp10; + s16 spC[2]; + + u8 *var_r31; + s32 var_r30; + s16 var_r29; + u8 *var_r28; + s32 var_r27; + s32 var_r26; + s16 var_r25; + + var_r25 = GWGameStat.language; + lbl_1_bss_6AC = var_r25; + for (var_r30 = 0; var_r30 < 0x10; var_r30++) { + sp10.sprite[var_r30] = sp10.spr_grp[var_r30] = -1; + } + var_r28 = MessData_MesPtrGet(messDataPtr, arg0); + var_r31 = var_r28; + var_r30 = 0; + var_r29 = 0; + + while (TRUE) { + if (var_r31[0] == 0 || var_r31[0] == 0xA) { + if (var_r31[0] == 0) { + var_r30 = 1; + } + var_r31[0] = 0; + if (lbl_1_bss_6AC == 0) { + var_r27 = 1; + } + else { + var_r27 = 0; + } + var_r26 = fn_1_1CB80(&sp10, var_r28, var_r27); + HuSprGrpPosSet(sp10.spr_grp[var_r29], 288.0f, 240.0f); + spC[var_r29] = sp10.alt_word_len; + var_r29++; + if (var_r30 == 0) { + var_r28 = var_r31 + 1; + } + else { + break; + } + } + var_r31++; + } + return var_r26; +} diff --git a/src/game/minigame_seq.c b/src/game/minigame_seq.c index c2f02421..ca883739 100644 --- a/src/game/minigame_seq.c +++ b/src/game/minigame_seq.c @@ -2797,9 +2797,9 @@ static s32 SeqInitWin(SeqWork *work, va_list params) word_x = (((HU_DISP_WIDTH-word_x)/2.0f)+(winnerNameW[1]/2))-HU_DISP_CENTERX; } } else { - if(abs(winPosOfs[num_winners-1][j][0]) == (HU_DISP_WIDTHF/4)) { + if(abs(winPosOfs[num_winners-1][j][0]) == 144.0f) { if(winnerNameW[j]+32 < HU_DISP_CENTERX) { - word_x = (HU_DISP_WIDTHF/4)+32.0f; + word_x = 176.0f; } else { word_x = 32.0f+((winnerNameW[j]*work->win_scale)/2.0f); } @@ -2900,9 +2900,9 @@ static s32 SeqUpdateWin(SeqWork *work) pos_x = winnerNameW[1]+winnerNameW[0]+32; pos_x = (((HU_DISP_WIDTH-pos_x)/2.0f)+(winnerNameW[1]/2))-HU_DISP_CENTERX; } else { - if(abs(winPosOfs[work->word_len-2][idx][0]) == (HU_DISP_WIDTHF/4)) { + if(abs(winPosOfs[work->word_len-2][idx][0]) == 144.0f) { if(winnerNameW[idx]+32 < HU_DISP_CENTERX) { - pos_x = (HU_DISP_WIDTHF/4)+32; + pos_x = 176.0f; } else { pos_x = 32.0f+((winnerNameW[idx]*work->win_scale)/2.0f); } diff --git a/tools/project.py b/tools/project.py index 639f5a13..502b2f4b 100644 --- a/tools/project.py +++ b/tools/project.py @@ -1406,9 +1406,13 @@ def add(self, build_obj: Dict[str, Any]) -> None: self.objects_progress += 1 def code_frac(self) -> float: + if self.code_total == 0: + return 1.0 return self.code_progress / self.code_total def data_frac(self) -> float: + if self.data_total == 0: + return 1.0 return self.data_progress / self.data_total progress_units: Dict[str, ProgressUnit] = {}