diff --git a/config/GMPE01_00/rels/m453Dll/splits.txt b/config/GMPE01_00/rels/m453Dll/splits.txt index 918d68a7..fcf25f98 100644 --- a/config/GMPE01_00/rels/m453Dll/splits.txt +++ b/config/GMPE01_00/rels/m453Dll/splits.txt @@ -17,12 +17,12 @@ REL/m453Dll/main.c: REL/m453Dll/map.c: .text start:0x000064E8 end:0x00008F48 - .rodata start:0x00000198 end:0x00000248 + .rodata start:0x00000198 end:0x00000240 .data start:0x00000158 end:0x00000BC0 .bss start:0x00000060 end:0x000000C0 REL/m453Dll/score.c: .text start:0x00008F48 end:0x00009674 - .rodata start:0x00000248 end:0x00000278 + .rodata start:0x00000240 end:0x00000278 .data start:0x00000BC0 end:0x00000BCC .bss start:0x000000C0 end:0x000000C8 diff --git a/config/GMPE01_00/rels/m453Dll/symbols.txt b/config/GMPE01_00/rels/m453Dll/symbols.txt index 19f422d2..518e286d 100644 --- a/config/GMPE01_00/rels/m453Dll/symbols.txt +++ b/config/GMPE01_00/rels/m453Dll/symbols.txt @@ -83,135 +83,137 @@ fn_1_9484 = .text:0x00009484; // type:function size:0x8C fn_1_9510 = .text:0x00009510; // type:function size:0x164 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_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:0x9 data:byte -lbl_1_rodata_8D = .rodata:0x0000008D; // type:object size:0xB data:byte -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:0x8 data:double -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:double -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float -lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float -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:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double -lbl_1_rodata_178 = .rodata:0x00000178; // 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:0x8 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: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_1D0 = .rodata:0x000001D0; // type:object size:0x8 data:double -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double -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: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_230 = .rodata:0x00000230; // type:object size:0x8 data:double -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_260 = .rodata:0x00000260; // type:object size:0x8 data:double -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 +__fakeHalf = .rodata:0x00000000; // type:object size:0x8 data:double +__fakeThree = .rodata:0x00000008; // type:object size:0x8 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:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_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:0x9 scope:local data:byte +lbl_1_rodata_8D = .rodata:0x0000008D; // type:object size:0xB scope:local data:byte +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:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 scope:local data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 scope:local data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 scope:local data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +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:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_1_rodata_178 = .rodata:0x00000178; // 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:0x8 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: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_1D0 = .rodata:0x000001D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +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: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_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +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_260 = .rodata:0x00000260; // type:object size:0x8 scope:local data:double +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_data_0 = .data:0x00000000; // type:object size:0x2 data:2byte lbl_1_data_4 = .data:0x00000004; // type:object size:0xC lbl_1_data_10 = .data:0x00000010; // type:object size:0xC lbl_1_data_1C = .data:0x0000001C; // type:object size:0x28 -lbl_1_data_44 = .data:0x00000044; // type:object size:0x24 +lbl_1_data_44 = .data:0x00000044; // type:object size:0x24 scope:local data:string lbl_1_data_68 = .data:0x00000068; // type:object size:0x24 data:4byte jumptable_1_data_8C = .data:0x0000008C; // type:object size:0x1C scope:local jumptable_1_data_A8 = .data:0x000000A8; // type:object size:0x1C scope:local @@ -220,18 +222,18 @@ lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x30 lbl_1_data_114 = .data:0x00000114; // type:object size:0x20 lbl_1_data_134 = .data:0x00000134; // type:object size:0x20 lbl_1_data_154 = .data:0x00000154; // type:object size:0x4 data:4byte -lbl_1_data_158 = .data:0x00000158; // type:object size:0xC0 -lbl_1_data_218 = .data:0x00000218; // type:object size:0xC0 -lbl_1_data_2D8 = .data:0x000002D8; // type:object size:0x78 -lbl_1_data_350 = .data:0x00000350; // type:object size:0x78 -lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0xC0 -lbl_1_data_488 = .data:0x00000488; // type:object size:0xC0 -lbl_1_data_548 = .data:0x00000548; // type:object size:0x78 -lbl_1_data_5C0 = .data:0x000005C0; // type:object size:0x78 -lbl_1_data_638 = .data:0x00000638; // type:object size:0x108 -lbl_1_data_740 = .data:0x00000740; // type:object size:0x108 -lbl_1_data_848 = .data:0x00000848; // type:object size:0x108 -lbl_1_data_950 = .data:0x00000950; // type:object size:0x108 +lbl_1_data_158 = .data:0x00000158; // type:object size:0xC0 data:float +lbl_1_data_218 = .data:0x00000218; // type:object size:0xC0 data:float +lbl_1_data_2D8 = .data:0x000002D8; // type:object size:0x78 data:float +lbl_1_data_350 = .data:0x00000350; // type:object size:0x78 data:float +lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0xC0 data:float +lbl_1_data_488 = .data:0x00000488; // type:object size:0xC0 data:float +lbl_1_data_548 = .data:0x00000548; // type:object size:0x78 data:float +lbl_1_data_5C0 = .data:0x000005C0; // type:object size:0x78 data:float +lbl_1_data_638 = .data:0x00000638; // type:object size:0x108 data:float +lbl_1_data_740 = .data:0x00000740; // type:object size:0x108 data:float +lbl_1_data_848 = .data:0x00000848; // type:object size:0x108 data:float +lbl_1_data_950 = .data:0x00000950; // type:object size:0x108 data:float lbl_1_data_A58 = .data:0x00000A58; // type:object size:0x30 lbl_1_data_A88 = .data:0x00000A88; // type:object size:0x48 lbl_1_data_AD0 = .data:0x00000AD0; // type:object size:0xC data:4byte @@ -247,7 +249,7 @@ lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x2 data:2byte lbl_1_bss_2 = .bss:0x00000002; // type:object size:0x6 data:2byte lbl_1_bss_8 = .bss:0x00000008; // type:object size:0xC data:4byte lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte -lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x2 data:2byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:2byte lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x2 data:2byte lbl_1_bss_1E = .bss:0x0000001E; // type:object size:0x14 data:2byte lbl_1_bss_32 = .bss:0x00000032; // type:object size:0x2 data:2byte diff --git a/configure.py b/configure.py index dd0f6cb2..0e09d5e4 100644 --- a/configure.py +++ b/configure.py @@ -1214,9 +1214,9 @@ config.libs = [ Rel( "m453Dll", # Challenge Booksquirm objects={ - Object(NonMatching, "REL/m453Dll/main.c"), - Object(NonMatching, "REL/m453Dll/map.c"), - Object(NonMatching, "REL/m453Dll/score.c"), + Object(Matching, "REL/m453Dll/main.c"), + Object(Matching, "REL/m453Dll/map.c"), + Object(Matching, "REL/m453Dll/score.c"), }, ), Rel( diff --git a/include/REL/m453Dll.h b/include/REL/m453Dll.h new file mode 100644 index 00000000..661b2e99 --- /dev/null +++ b/include/REL/m453Dll.h @@ -0,0 +1,22 @@ +#ifndef M453DLL_H +#define M453DLL_H + +#include "game/object.h" + +s32 fn_1_639C(void); +void fn_1_64E8(Process *arg0); +void fn_1_6748(void); +void fn_1_7C0C(float arg8); +void fn_1_7C2C(s32 arg0); +void fn_1_7C3C(void); +float fn_1_7F54(float arg8, float arg9); +float fn_1_80B0(Vec *arg0, float arg8); +s32 fn_1_8240(void); +s32 fn_1_82AC(Vec *arg0); +s32 fn_1_844C(Vec *arg0); +void fn_1_864C(s32 arg0); +s32 fn_1_867C(Vec *arg0, Vec *arg1); +void fn_1_8F48(Process *arg0, s16 arg1); +void fn_1_924C(s32 arg0); + +#endif diff --git a/src/REL/m453Dll/main.c b/src/REL/m453Dll/main.c new file mode 100644 index 00000000..586fc75a --- /dev/null +++ b/src/REL/m453Dll/main.c @@ -0,0 +1,1771 @@ +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/flag.h" +#include "game/frand.h" +#include "game/gamework.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "game/wipe.h" +#include "rel_sqrt_consts.h" +#include "string.h" + +#include "REL/m453Dll.h" + +typedef struct M453DllWork { + /* 0x00 */ u8 unk_00; + /* 0x04 */ Vec unk_04; + /* 0x10 */ Vec unk_10; + /* 0x1C */ Vec unk_1C; + /* 0x28 */ Vec unk_28; + /* 0x34 */ Vec unk_34; + /* 0x40 */ Vec unk_40; + /* 0x4C */ Vec unk_4C; + /* 0x58 */ Vec unk_58; + /* 0x64 */ Vec unk_64[3]; + /* 0x88 */ Vec unk_88[3]; + /* 0xAC */ Vec unk_AC[3]; + /* 0xD0 */ Vec unk_D0[3]; + /* 0xF4 */ float unk_F4[3]; + /* 0x100 */ float unk_100[3]; + /* 0x10C */ float unk_10C[3]; + /* 0x118 */ float unk_118[3]; + /* 0x124 */ float unk_124[3]; + /* 0x130 */ float unk_130; + /* 0x134 */ float unk_134; + /* 0x138 */ float unk_138; + /* 0x13C */ float unk_13C; + /* 0x140 */ float unk_140; + /* 0x144 */ float unk_144; + /* 0x148 */ float unk_148; +} M453DllWork; /* size 0x14C */ + +typedef struct M453DllUnkStruct { + s16 unk_00; + s16 unk_02; + float unk_04; + float unk_08; + char unk0C[0x34]; +} M453DllUnkStruct; /* 0x40 */ + +typedef struct M453DllWork2 { + u8 unk_00; + u8 unk_01; + u8 unk_02; + u8 unk_03; + u8 unk_04; + u8 unk_05; + u8 unk_06; + u8 unk_07; + char unk08[2]; + u8 unk_0A; + char unk0B; + u8 unk_0C; + u8 unk_0D; + u8 unk_0E; + s16 unk_10; + s16 unk_12; + s16 unk_14; + s16 unk_16; + s16 unk_18; + s16 unk_1A; + float unk_1C; + float unk_20; + float unk_24; + float unk_28; + Vec unk_2C; + Vec unk_38; + float unk_44; + float unk_48; + float unk_4C; + Vec unk_50; + M453DllUnkStruct unk_5C; + u8 unk_9C; + s32 unk_A0; +} M453DllWork2; /* size 0xA4 */ + +void fn_1_440(omObjData *object); +void fn_1_460(omObjData *object); +void fn_1_848(omObjData *object); +void fn_1_FFC(omObjData *object); +void fn_1_105C(omObjData *object); +void fn_1_1248(omObjData *object); +void fn_1_14F8(omObjData *object); +void fn_1_15FC(omObjData *object); +void fn_1_1870(float arg8, Vec *arg0, Vec *arg1, float arg9); +void fn_1_1910(float arg8, Vec *arg0, Vec *arg1, float arg9, Vec *arg2, Vec *arg3, float argA); +void fn_1_1BF0(omObjData *object); +void fn_1_1FA0(omObjData *object); +void fn_1_20EC(omObjData *object); +void fn_1_23E0(omObjData *object); +void fn_1_2E24(omObjData *object); +s32 fn_1_36DC(void); +void fn_1_39C8(omObjData *object); +void fn_1_3C94(omObjData *object); +s16 fn_1_3E9C(s32 arg0, s16 arg1, ParticleHook); +void fn_1_3F38(ModelData *model, ParticleData *particle, Mtx matrix); +s32 fn_1_43B8(void); +float fn_1_440C(float arg8, float arg9, float argA); +void fn_1_4E84(float *arg0, float *arg1, float *arg2, s32 arg3); +float fn_1_513C(float arg8, float *arg0, float *arg1, float *arg2, s32 arg3); +void fn_1_5290(float *arg0, float (*arg1)[3], float (*arg2)[3], s32 arg3); +void fn_1_5670(float arg8, float *arg0, float *arg1, float (*arg2)[3], float (*arg3)[3], s32 arg4); +float fn_1_5884(Vec *arg0); +s32 fn_1_63AC(void); +void fn_1_6448(void); + +s16 lbl_1_data_0 = -1; + +Vec lbl_1_data_4 = { 0.0f, 4000.0f, 4000.0f }; + +Vec lbl_1_data_10 = { 0.0f, -0.7f, -0.6f }; + +GXColor lbl_1_data_1C[0xA] = { + { 0xFF, 0xFF, 0xFF, 0xFF }, + { 0, 0, 0, 0 }, + { 0x45, 0x7A, 0, 0 }, + { 0xC4, 0xFA, 0, 0 }, + { 0, 0, 0, 0 }, + { 0x3F, 0x80, 0, 0 }, + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, + { 0, 0, 0, 0 }, +}; + +omObjData *lbl_1_bss_58; +omObjData *lbl_1_bss_54; +omObjData *lbl_1_bss_50; +omObjData *lbl_1_bss_4C; +omObjData *lbl_1_bss_3C[4]; +u16 lbl_1_bss_3A; +s16 lbl_1_bss_38; +s16 lbl_1_bss_36; +s16 lbl_1_bss_34; +s16 lbl_1_bss_32; +s16 lbl_1_bss_1E[0xA]; +s16 lbl_1_bss_1C; +s16 lbl_1_bss_18[2]; +s32 lbl_1_bss_14; +s32 lbl_1_bss_8[3]; +s16 lbl_1_bss_2[3]; +s16 lbl_1_bss_0; + +void ObjectSetup(void) +{ + Process *var_r31; + s32 var_r30; + omObjData *var_r29; + LightData *var_r28; + s32 var_r27; + s32 var_r26; + + OSReport("******* M453ObjectSetup *********\n"); + Hu3DLighInit(); + var_r26 = Hu3DGLightCreateV(&lbl_1_data_4, &lbl_1_data_10, lbl_1_data_1C); + Hu3DGLightInfinitytSet(var_r26); + var_r28 = Hu3DGlobalLight; + var_r28->unk_00 |= 0x8000; + var_r31 = omInitObjMan(0x32, 0x2000); + var_r27 = frand() & 0x1F; + for (var_r30 = 0; var_r30 < var_r27; var_r30++) { + fn_1_43B8(); + } + CRot.x = -23.5f; + CRot.y = 0.0f; + CRot.z = 0.0f; + Center.x = 0.0f; + Center.y = 320.0f; + Center.z = 147.0f; + CZoom = 1720.0f; + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 45.0f, 400.0f, 10000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + lbl_1_bss_54 = omAddObjEx(var_r31, 0x7FDA, 0, 0, -1, omOutView); + lbl_1_bss_58 = omAddObjEx(var_r31, 0x10, 8, 0, -1, fn_1_440); + lbl_1_bss_4C = omAddObjEx(var_r31, 0x20, 0x10, 0, -1, fn_1_105C); + lbl_1_bss_50 = omAddObjEx(var_r31, 0x50, 0x10, 0, -1, fn_1_14F8); + omAddObjEx(var_r31, 0x60, 0, 0, -1, fn_1_39C8); + fn_1_64E8(var_r31); + fn_1_7C2C(3); + omMakeGroupEx(var_r31, 0, 4); + omGetGroupMemberListEx(var_r31, 0); + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r29 = omAddObjEx(var_r31, 0x30, 2, 8, 0, fn_1_1BF0); + lbl_1_bss_3C[var_r30] = var_r29; + var_r29->work[0] = var_r30; + var_r29->work[1] = var_r30; + } + omGameSysInit(var_r31); + WipeCreate(1, 0, 0x3C); + HuAudSndGrpSet(0x1C); + lbl_1_bss_2[0] = 1; + if (GWMGRecordGet(9) == 0) { + GWMGRecordSet(9, 0); + } + fn_1_8F48(var_r31, GWMGRecordGet(9)); + fn_1_924C(0); +} + +void fn_1_440(omObjData *object) +{ + lbl_1_bss_3A = 0; + object->func = fn_1_460; +} + +void fn_1_460(omObjData *object) +{ + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + + float var_f31; + float var_f30; + + switch (lbl_1_bss_3A) { + case 0: + sp2C.x = 0.0f; + sp2C.y = 0.0f; + sp2C.z = -50.0f; + sp20.x = -90.0f; + sp20.y = 90.0f; + sp20.z = 0.0f; + var_f31 = 2200.0f; + fn_1_1870(1.0f, &sp2C, &sp20, var_f31); + lbl_1_bss_32 = 0x3C; + lbl_1_bss_3A += 1; + break; + case 1: + if (--lbl_1_bss_32 == 0) { + lbl_1_bss_3A += 1; + } + break; + case 2: + if (lbl_1_bss_32 == 0) { + fn_1_7C3C(); + lbl_1_bss_32 = 0x5A; + sp2C.x = 200.0f; + sp2C.y = 100.0f; + sp2C.z = -50.0f; + sp20.x = -50.0f; + sp20.y = 90.0f; + sp20.z = 0.0f; + var_f31 = 2000.0f; + sp14.x = 0.0f; + sp14.y = 320.0f; + sp14.z = 147.0f; + sp8.x = -23.5f; + sp8.y = 0.0f; + sp8.z = 0.0f; + var_f30 = 1720.0f; + fn_1_1910(180.0f, &sp14, &sp8, var_f30, &sp2C, &sp20, var_f31); + } + if (--lbl_1_bss_32 == 0) { + lbl_1_bss_3A += 1; + } + break; + case 3: + if (lbl_1_bss_32 == 0) { + lbl_1_bss_32 = 0x5A; + } + if (--lbl_1_bss_32 == 0) { + lbl_1_bss_3A += 1; + } + break; + case 4: + lbl_1_bss_3A = 5; + lbl_1_bss_38 = lbl_1_bss_36 = -1; + object->func = fn_1_848; + HuSprAnimRead(HuDataReadNum(0x220013, 0x10000000)); + break; + } + if ((omSysExitReq != 0) && (WipeStatGet() == 0)) { + WipeCreate(2, 0, 0x3C); + object->func = fn_1_FFC; + } +} + +s32 lbl_1_data_68[9] = { + -1, + 0x610000, + 0x610001, + 0x610002, + 0x610003, + 0x610004, + 0x610005, + 0x610006, + 0x610007, +}; + +void fn_1_848(omObjData *object) +{ + Vec sp1C; + Vec sp10; + s16 sp8[4]; + float var_f31; + + s32 var_r31; + s32 var_r30; + s32 var_r28; + + switch (lbl_1_bss_3A) { + case 5: + if (lbl_1_bss_36 == -1) { + lbl_1_bss_34 = 0x708; + lbl_1_bss_36 = MGSeqCreate(3, 0); + MGSeqPosSet(lbl_1_bss_36, 320.0f, 240.0f); + } + else if (MGSeqStatGet(lbl_1_bss_36) == 0) { + lbl_1_bss_36 = -1; + lbl_1_bss_3A += 1; + lbl_1_bss_32 = 0; + lbl_1_data_0 = 4; + } + if ((lbl_1_data_68[0] == -1) && ((MGSeqStatGet(lbl_1_bss_36) & 0x10) != 0)) { + lbl_1_data_68[0] = HuAudSeqPlay(0x48); + } + break; + case 6: + var_r30 = 0; + if ((lbl_1_data_0 == 0) && (fn_1_8240() == 0)) { + var_r30++; + } + if (var_r30 != 0) { + lbl_1_bss_3A += 1; + } + break; + case 7: + if (lbl_1_bss_36 == -1) { + lbl_1_bss_36 = MGSeqCreate(3, 1); + MGSeqPosSet(lbl_1_bss_36, 320.0f, 240.0f); + MGSeqKill(lbl_1_bss_38); + HuAudSeqFadeOut(lbl_1_data_68[0], 0x64); + } + else if (MGSeqStatGet(lbl_1_bss_36) == 0) { + lbl_1_bss_36 = -1; + if (lbl_1_bss_2[0] == 0) { + if (lbl_1_data_0 != 0) { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (((M453DllWork2 *)lbl_1_bss_3C[var_r31]->data)->unk_07 != 0) { + break; + } + } + sp1C.x = lbl_1_bss_3C[var_r31]->trans.x; + sp1C.y = 100.0f; + sp1C.z = lbl_1_bss_3C[var_r31]->trans.z; + sp10.x = -18.0f; + sp10.y = 0.0f; + sp10.z = 0.0f; + var_f31 = 600.0f; + fn_1_1870(45.0f, &sp1C, &sp10, var_f31); + } + lbl_1_bss_3A = 9; + lbl_1_bss_32 = 0x5A; + } + else { + if ((lbl_1_bss_14 != 0) && (lbl_1_bss_0 >= 0xF)) { + GWGameStat.present[0x31] = 1; + } + if ((lbl_1_bss_14 != 0) && ((s32)GWMGRecordGet(9) < lbl_1_bss_0)) { + GWMGRecordSet(9, lbl_1_bss_0); + lbl_1_bss_3A = 8; + fn_1_924C(1); + } + else { + lbl_1_bss_36 = -1; + lbl_1_bss_3A = 9; + lbl_1_bss_32 = 0x5A; + } + fn_1_6448(); + } + } + break; + case 8: + if (lbl_1_bss_36 == -1) { + lbl_1_bss_36 = MGSeqCreate(0xE, lbl_1_bss_0); + } + else if (MGSeqStatGet(lbl_1_bss_36) == 0) { + lbl_1_bss_36 = -1; + lbl_1_bss_32 = 0x5A; + lbl_1_bss_3A = 9; + } + break; + case 9: + if (--lbl_1_bss_32 == 0) { + lbl_1_bss_3A += 1; + } + break; + case 10: + if (lbl_1_bss_2[0] == 0) { + if (lbl_1_bss_36 == -1) { + if (lbl_1_data_0 == 0) { + lbl_1_bss_36 = MGSeqCreate(3, 2); + HuAudSStreamPlay(4); + } + else { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + sp8[var_r31] = -1; + } + for (var_r31 = 0, var_r28 = 0; var_r31 < 4; var_r31++) { + if (((M453DllWork2 *)lbl_1_bss_3C[var_r31]->data)->unk_07 != 0) { + sp8[var_r28++] = GWPlayerCfg[var_r31].character; + } + } + lbl_1_bss_36 = MGSeqCreate(5, 3, sp8[0], sp8[1], sp8[2], sp8[3]); + HuAudSStreamPlay(1); + } + } + lbl_1_bss_36 = -1; + lbl_1_bss_32 = 0xD2; + lbl_1_bss_3A += 1; + } + else { + if (lbl_1_data_0 != 0) { + HuAudSStreamPlay(1); + } + else { + HuAudSStreamPlay(4); + } + lbl_1_bss_36 = -1; + lbl_1_bss_32 = 0xD2; + lbl_1_bss_3A += 1; + } + break; + case 11: + if (--lbl_1_bss_32 == 0) { + WipeCreate(2, 0, 0x3C); + object->func = fn_1_FFC; + } + break; + } + if ((omSysExitReq != 0) && (WipeStatGet() == 0)) { + WipeCreate(2, 0, 0x3C); + object->func = fn_1_FFC; + } +} + +void fn_1_FFC(omObjData *object) +{ + if (WipeStatGet() == 0) { + fn_1_6748(); + CharModelKill(-1); + MGSeqKill(lbl_1_bss_38); + MGSeqKillAll(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + } +} + +void fn_1_105C(omObjData *object) +{ + Hu3DLightAllKill(); + lbl_1_bss_18[0] = Hu3DGLightCreateV(&lbl_1_data_4, &lbl_1_data_10, lbl_1_data_1C); + Hu3DGLightStaticSet(lbl_1_bss_18[0], 1); + Hu3DGLightInfinitytSet(lbl_1_bss_18[0]); + lbl_1_bss_18[1] = Hu3DGLightCreate(0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0, 0, 0); + Hu3DGLightStaticSet(lbl_1_bss_18[1], 1); + Hu3DGLightPointSet(lbl_1_bss_18[1], 0.0f, 0.0f, 3); + Hu3DGLightColorSet(lbl_1_bss_18[0], 0, 0, 0, 0xFF); + Hu3DGLightPosSet(lbl_1_bss_18[1], -1470.0f, 800.0f, -2000.0f, 0.0f, -1.0f, 0.0f); + Hu3DGLightColorSet(lbl_1_bss_18[1], 0, 0, 0, 0xFF); + Hu3DGLightPointSet(lbl_1_bss_18[1], 1200.0f, 0.6f, 3); + object->func = fn_1_1248; +} + +void fn_1_1248(omObjData *object) +{ + s32 var_r30; + + s8 sp11[9] = { 0x01, 0x00, 0x02, 0x01, 0x00, 0x03, 0x02, 0x01, 0x00 }; + s8 sp8[9] = { 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03 }; + + switch (lbl_1_bss_3A) { + case 0: + break; + case 1: + Hu3DGLightColorSet(lbl_1_bss_18[0], 0xF0, 0xF0, 0xF0, 0xFF); + break; + case 3: + Hu3DGLightColorSet(lbl_1_bss_18[1], 0xFF, 0xE0, 0xD0, 0xFF); + break; + case 5: + object->work[0] = 0x1E; + object->work[1] = 0x11; + lbl_1_bss_8[0] = 1; + break; + case 6: + if (fn_1_8240() == 0) { + if (lbl_1_bss_8[0] == 0) { + lbl_1_bss_8[0] = 0x1E; + lbl_1_bss_0++; + lbl_1_bss_14 = fn_1_63AC(); + if (lbl_1_bss_0 == 0x63) { + lbl_1_bss_3A = 7; + return; + } + } + lbl_1_bss_8[0]--; + if (lbl_1_bss_8[0] == 0) { + var_r30 = (object->work[1] - 2) >> 1; + if (var_r30 < 0) { + var_r30 = 0; + } + fn_1_864C(sp11[var_r30]); + fn_1_7C2C(sp8[var_r30]); + fn_1_7C0C(0.01f * object->work[0]); + object->work[0] += 5; + if (object->work[1] > 2) { + object->work[1] -= 1; + } + } + } + break; + } +} + +void fn_1_14F8(omObjData *object) +{ + M453DllWork *var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M453DllWork), MEMORY_DEFAULT_NUM); + object->data = var_r31; + var_r31->unk_148 = var_r31->unk_144 = 0.0f; + var_r31->unk_140 = 1.0f; + var_r31->unk_10.x = var_r31->unk_28.x = -23.5f; + var_r31->unk_10.y = var_r31->unk_28.y = 0.0f; + var_r31->unk_10.z = var_r31->unk_28.z = 0.0f; + var_r31->unk_04.x = var_r31->unk_1C.x = 0.0f; + var_r31->unk_04.y = var_r31->unk_1C.y = 320.0f; + var_r31->unk_04.z = var_r31->unk_1C.z = 147.0f; + var_r31->unk_130 = var_r31->unk_134 = 1720.0f; + object->func = fn_1_15FC; +} + +void fn_1_15FC(omObjData *object) +{ + float var_f31; + M453DllWork *var_r31 = object->data; + + if (var_r31->unk_148 > 0.0f) { + var_r31->unk_148 = var_r31->unk_148 - var_r31->unk_140; + var_f31 = (var_r31->unk_144 - var_r31->unk_148) / var_r31->unk_144; + var_f31 = sind((90.0f * var_f31)); + if (var_r31->unk_00 == 0) { + var_r31->unk_04.x = var_r31->unk_1C.x + (var_f31 * (var_r31->unk_34.x - var_r31->unk_1C.x)); + var_r31->unk_04.y = var_r31->unk_1C.y + (var_f31 * (var_r31->unk_34.y - var_r31->unk_1C.y)); + var_r31->unk_04.z = var_r31->unk_1C.z + (var_f31 * (var_r31->unk_34.z - var_r31->unk_1C.z)); + var_r31->unk_10.x = var_r31->unk_28.x + (var_f31 * (var_r31->unk_40.x - var_r31->unk_28.x)); + var_r31->unk_10.y = var_r31->unk_28.y + (var_f31 * (var_r31->unk_40.y - var_r31->unk_28.y)); + var_r31->unk_10.z = var_r31->unk_28.z + (var_f31 * (var_r31->unk_40.z - var_r31->unk_28.z)); + var_r31->unk_130 = var_r31->unk_134 + (var_f31 * (var_r31->unk_138 - var_r31->unk_134)); + } + else { + fn_1_5670(2.0f * var_f31, (float *)&var_r31->unk_04, var_r31->unk_F4, (float(*)[3])var_r31->unk_64, (float(*)[3])var_r31->unk_88, 3); + fn_1_5670(2.0f * var_f31, (float *)&var_r31->unk_10, var_r31->unk_100, (float(*)[3])var_r31->unk_AC, (float(*)[3])var_r31->unk_D0, 3); + var_r31->unk_130 = fn_1_513C(2.0f * var_f31, var_r31->unk_124, var_r31->unk_10C, var_r31->unk_118, 3); + } + } + CRot.x = var_r31->unk_10.x; + CRot.y = var_r31->unk_10.y; + CRot.z = var_r31->unk_10.z; + Center.x = var_r31->unk_04.x; + Center.y = var_r31->unk_04.y; + Center.z = var_r31->unk_04.z; + CZoom = var_r31->unk_130; +} + +void fn_1_1870(float arg8, Vec *arg0, Vec *arg1, float arg9) +{ + M453DllWork *var_r31; + + var_r31 = lbl_1_bss_50->data; + var_r31->unk_00 = 0; + var_r31->unk_144 = arg8; + var_r31->unk_148 = arg8; + var_r31->unk_1C = var_r31->unk_04; + var_r31->unk_34.x = arg0->x; + var_r31->unk_34.y = arg0->y; + var_r31->unk_34.z = arg0->z; + var_r31->unk_28 = var_r31->unk_10; + var_r31->unk_40.x = arg1->x; + var_r31->unk_40.y = arg1->y; + var_r31->unk_40.z = arg1->z; + var_r31->unk_134 = var_r31->unk_130; + var_r31->unk_138 = arg9; +} + +void fn_1_1910(float arg8, Vec *arg0, Vec *arg1, float arg9, Vec *arg2, Vec *arg3, float argA) +{ + float var_f31; + float var_f30; + M453DllWork *var_r31 = lbl_1_bss_50->data; + + var_r31->unk_00 = 1; + var_r31->unk_148 = var_r31->unk_144 = arg8; + var_r31->unk_1C = var_r31->unk_04; + var_r31->unk_34.x = arg0->x; + var_r31->unk_34.y = arg0->y; + var_r31->unk_34.z = arg0->z; + var_r31->unk_4C.x = arg2->x; + var_r31->unk_4C.y = arg2->y; + var_r31->unk_4C.z = arg2->z; + var_r31->unk_28 = var_r31->unk_10; + var_r31->unk_40.x = arg1->x; + var_r31->unk_40.y = arg1->y; + var_r31->unk_40.z = arg1->z; + var_r31->unk_58.x = arg3->x; + var_r31->unk_58.y = arg3->y; + var_r31->unk_58.z = arg3->z; + var_r31->unk_134 = var_r31->unk_130; + var_r31->unk_138 = arg9; + var_r31->unk_13C = argA; + var_r31->unk_64[0] = var_r31->unk_1C; + var_r31->unk_64[1] = var_r31->unk_4C; + var_r31->unk_64[2] = var_r31->unk_34; + var_r31->unk_AC[0] = var_r31->unk_28; + var_r31->unk_AC[1] = var_r31->unk_58; + var_r31->unk_AC[2] = var_r31->unk_40; + var_r31->unk_10C[0] = var_r31->unk_134; + var_r31->unk_10C[1] = var_r31->unk_13C; + var_r31->unk_10C[2] = var_r31->unk_138; + var_r31->unk_124[0] = 0.0f; + if ((var_r31->unk_10C[1] - var_r31->unk_10C[0]) < 0.0f) { + var_f31 = -(var_r31->unk_10C[1] - var_r31->unk_10C[0]); + } + else { + var_f31 = var_r31->unk_10C[1] - var_r31->unk_10C[0]; + } + var_r31->unk_124[1] = var_f31; + if ((var_r31->unk_10C[2] - var_r31->unk_10C[1]) < 0.0f) { + var_f30 = -(var_r31->unk_10C[2] - var_r31->unk_10C[1]); + } + else { + var_f30 = var_r31->unk_10C[2] - var_r31->unk_10C[1]; + } + var_r31->unk_124[2] = var_r31->unk_124[1] + var_f30; + fn_1_5290(var_r31->unk_F4, (float(*)[3])var_r31->unk_64, (float(*)[3])var_r31->unk_88, 3); + fn_1_5290(var_r31->unk_100, (float(*)[3])var_r31->unk_AC, (float(*)[3])var_r31->unk_D0, 3); + fn_1_4E84(var_r31->unk_124, var_r31->unk_10C, var_r31->unk_118, 3); +} + +void fn_1_1BC8(float arg8) +{ + M453DllWork *var_r31 = lbl_1_bss_50->data; + var_r31->unk_140 = arg8; +} + +s32 lbl_1_data_C4[8] = { 0, 2, 3, 8, 0xA, 9, 0x17, 0x18 }; + +Vec lbl_1_data_E4[4] = { + { -300.0f, 2200.0f, 0.0f }, + { -100.0f, 2200.0f, 0.0f }, + { 100.0f, 2200.0f, 0.0f }, + { 300.0f, 2200.0f, 0.0f }, +}; + +void fn_1_1BF0(omObjData *object) +{ + M453DllWork2 *var_r31; + s32 var_r29; + s32 var_r28; + u32 var_r27; + + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M453DllWork2), MEMORY_DEFAULT_NUM); + object->data = var_r31; + var_r31->unk_00 = object->work[0]; + var_r31->unk_01 = GWPlayerCfg[var_r31->unk_00].character; + var_r31->unk_02 = var_r31->unk_00 >> 1; + var_r31->unk_03 = var_r31->unk_00 & 1; + var_r31->unk_04 = GWPlayerCfg[var_r31->unk_00].pad_idx; + var_r31->unk_05 = GWPlayerCfg[var_r31->unk_00].iscom; + var_r31->unk_06 = GWPlayerCfg[var_r31->unk_00].diff; + var_r31->unk_18 = var_r31->unk_1A = 0; + var_r31->unk_07 = 1; + var_r31->unk_0C = 1; + var_r31->unk_0D = 0; + var_r31->unk_0E = 0; + var_r31->unk_0A = 0; + var_r31->unk_9C = 0; + var_r27 = object->work[1]; + var_r31->unk_2C.x = lbl_1_data_E4[var_r27].x; + var_r31->unk_2C.y = lbl_1_data_E4[var_r27].y + (100.0f * ((fn_1_43B8() - 0x8000) / 32768.0f)); + var_r31->unk_2C.z = lbl_1_data_E4[var_r27].z; + var_r31->unk_44 = var_r31->unk_48 = var_r31->unk_4C = 0.0f; + var_r31->unk_38.x = var_r31->unk_38.y = var_r31->unk_38.z = 0.0f; + var_r31->unk_20 = var_r31->unk_38.y; + var_r31->unk_24 = 0.0f; + var_r31->unk_1C = 0.0f; + var_r31->unk_28 = 1.0f; + memset(&var_r31->unk_5C, 0, sizeof(M453DllUnkStruct)); + var_r31->unk_A0 = 1; + if ((lbl_1_bss_2[0] != 0) && (var_r31->unk_05 == 0)) { + lbl_1_bss_1E[lbl_1_bss_1C++] = var_r31->unk_00; + } + var_r28 = CharModelCreate(var_r31->unk_01, 4); + object->model[0] = var_r28; + Hu3DModelAttrSet(var_r28, 0x40000001); + Hu3DModelShadowSet(var_r28); + for (var_r29 = 0; var_r29 < 8; var_r29++) { + object->motion[var_r29] = CharModelMotionCreate(var_r31->unk_01, lbl_1_data_C4[var_r29]); + } + CharModelMotionDataClose(var_r31->unk_01); + CharModelMotionSet(var_r31->unk_01, object->motion[var_r31->unk_18]); + omSetTra(object, var_r31->unk_2C.x, var_r31->unk_2C.y, var_r31->unk_2C.z); + Hu3DModelPosSet(var_r28, var_r31->unk_2C.x, var_r31->unk_2C.y, var_r31->unk_2C.z); + Hu3DModelRotSet(var_r28, 0.0f, 30.0f, 0.0f); + CharModelStepTypeSet(var_r31->unk_01, 1); + CharModelVoiceEnableSet(var_r31->unk_01, object->motion[3], 0); + object->func = fn_1_1FA0; +} + +void fn_1_1FA0(omObjData *object) +{ + s32 sp8 = *object->model; + M453DllWork2 *var_r31 = object->data; + var_r31->unk_10 = var_r31->unk_12 = 0; + var_r31->unk_14 = var_r31->unk_16 = 0; + switch (lbl_1_bss_3A) { + case 3: + break; + case 2: + if (!(lbl_1_bss_32 < 60.0f)) { + case 1: + var_r31->unk_18 = 3; + var_r31->unk_48 = 0.0f; + var_r31->unk_0C = 0; + } + break; + case 5: + object->func = fn_1_20EC; + break; + } + if (var_r31->unk_2C.y < 10.0f) { + omVibrate(var_r31->unk_00, 0xC, 6, 6); + var_r31->unk_2C.y = 10.0f; + var_r31->unk_0C = 1; + } + fn_1_2E24(object); +} + +void fn_1_20EC(omObjData *object) +{ + M453DllWork2 *var_r31; + s32 var_r29; + s32 var_r28; + + var_r29 = object->model[0]; + var_r31 = object->data; + if (var_r31->unk_07 != 0) { + if ((lbl_1_bss_3A == 6) && ((var_r31->unk_07 & 2) == 0)) { + if (var_r31->unk_05 != 0) { + fn_1_23E0(object); + } + else { + var_r31->unk_10 = HuPadStkX[var_r31->unk_04]; + var_r31->unk_12 = HuPadStkY[var_r31->unk_04]; + var_r31->unk_14 = HuPadBtnDown[var_r31->unk_04]; + var_r31->unk_16 = HuPadBtn[var_r31->unk_04]; + } + } + else { + var_r31->unk_10 = var_r31->unk_12 = 0; + var_r31->unk_14 = var_r31->unk_16 = 0; + } + switch (lbl_1_bss_3A) { + case 5: + case 6: + case 8: + break; + case 7: + case 9: + object->scale.y += 0.2f * (1.0f - object->scale.y); + var_r31->unk_38.y = fn_1_440C(var_r31->unk_38.y, 0.0f, 0.9f); + break; + case 10: + if (var_r31->unk_18 != 6) { + var_r31->unk_18 = 6; + } + break; + } + if ((var_r31->unk_07 & 2) != 0) { + var_r31->unk_10 = var_r31->unk_12 = 0; + var_r31->unk_14 = var_r31->unk_16 = 0; + if (object->scale.y < 0.2f) { + omVibrate(var_r31->unk_00, 0xC, 4, 2); + HuAudFXPlay(0x523); + var_r31->unk_07 = 0; + Hu3DModelShadowReset(var_r29); + Hu3DModelAttrSet(var_r29, 1); + lbl_1_data_0--; + var_r28 = fn_1_3E9C(0x220013, 0x64, fn_1_3F38); + Hu3DModelPosSet(var_r28, var_r31->unk_2C.x, var_r31->unk_2C.y, var_r31->unk_2C.z); + Hu3DModelLayerSet(var_r28, 2); + } + } + if (fn_1_8240() != 0) { + var_r31->unk_A0 = 0; + } + else if (((var_r31->unk_07 & 2) == 0) && (var_r31->unk_A0 == 0)) { + omVibrate(var_r31->unk_00, 0xC, 6, 6); + var_r31->unk_A0 = 1; + } + fn_1_2E24(object); + } +} + +void fn_1_23E0(omObjData *object) +{ + Vec sp38[6]; + float sp20[6]; + Vec sp14; + Vec sp8; + + float var_f31; + float var_f30; + float var_f29; + float var_f28; + + M453DllWork2 *var_r31; + s32 var_r30; + s32 var_r29; + s16 var_r28; + s16 var_r27; + s16 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + s32 var_r22; + s16 var_r21; + s16 var_r20; + + var_r22 = 0; + var_r30 = 0; + var_r29 = 0; + for (; var_r30 < 4; var_r30++) { + var_r31 = lbl_1_bss_3C[var_r30]->data; + if ((var_r31->unk_05 == 0) && (var_r31->unk_07 != 0)) { + break; + } + } + var_r31 = object->data; + if ((var_r30 >= 4) && (var_r31->unk_9C == 0)) { + var_r22 = 1; + } + var_r28 = var_r31->unk_06; + var_r27 = var_r26 = var_r21 = var_r20 = 0; + switch (var_r31->unk_5C.unk_00) { + case 0: + if (fn_1_8240() != 0) { + var_r31->unk_5C.unk_00 = 1; + } + break; + case 1: + var_r31->unk_5C.unk_00 = 2; + var_r31->unk_5C.unk_02 = (s32)(60.0f * (1.2f - (0.2f * var_r28)) * (fn_1_43B8() / 65536.0f)); + var_r31->unk_5C.unk_04 = 500.0f * ((fn_1_43B8() - 0x8000) / 32768.0f); + var_r31->unk_5C.unk_08 = 200.0f * ((fn_1_43B8() - 0x8000) / 32768.0f); + var_r27 = var_r31->unk_10; + var_r26 = var_r31->unk_12; + break; + case 2: + sp8.x = var_r31->unk_5C.unk_04 - var_r31->unk_2C.x; + sp8.y = 0.0f; + sp8.z = var_r31->unk_5C.unk_08 - var_r31->unk_2C.z; + var_f31 = fn_1_5884(&sp8); + if (var_f31 < 20.0f) { + var_r31->unk_5C.unk_00 = 3; + } + else { + if (var_f31 >= 100.0f) { + var_f28 = 0.8f; + } + else { + var_f28 = 0.4f; + } + var_f30 = fn_1_440C(var_r31->unk_38.y, atan2d(sp8.x, sp8.z), var_f28); + var_f29 = 48.0f + (4.0f * var_r28); + var_r27 = var_f29 * sind(var_f30); + var_r26 = var_f29 * -cosd(var_f30); + if (fn_1_8240() == 0) { + var_r31->unk_5C.unk_00 = 0; + if (var_r31->unk_5C.unk_02 == 0) { + var_r31->unk_5C.unk_02 = -1; + } + } + else if (var_r31->unk_5C.unk_02 >= 0) { + if (var_r31->unk_5C.unk_02 == 0) { + if ((var_f31 < 150.0f) && (var_r31->unk_0E != 0)) { + var_r31->unk_5C.unk_00 = 3; + } + else if (((s32)((var_r28 + 2) * (fn_1_43B8() / 65536.0f)) != 0) && (var_r22 == 0)) { + var_r31->unk_5C.unk_00 = 4; + } + else { + var_r31->unk_5C.unk_00 = 1; + } + } + else { + var_r31->unk_5C.unk_02--; + } + } + } + break; + case 3: + sp8.x = var_r31->unk_5C.unk_04 - var_r31->unk_2C.x; + sp8.y = 0.0f; + sp8.z = var_r31->unk_5C.unk_08 - var_r31->unk_2C.z; + if ((fn_1_5884(&sp8) >= 30.000002f) && (var_r31->unk_0E == 0)) { + var_r31->unk_5C.unk_00 = 2; + } + else if (fn_1_8240() == 0) { + var_r31->unk_5C.unk_00 = 0; + } + else { + if (var_r31->unk_5C.unk_02 > 0) { + var_r31->unk_5C.unk_02--; + } + if (var_r31->unk_5C.unk_02 == 0) { + if (((s32)((var_r28 + 2) * (fn_1_43B8() / 65536.0f)) != 0) && (var_r22 == 0)) { + var_r31->unk_5C.unk_00 = 4; + } + else { + var_r31->unk_5C.unk_00 = 1; + } + } + } + break; + case 4: + var_r24 = fn_1_82AC(sp38); + for (var_r30 = 0; var_r30 < var_r24; var_r30++) { + PSVECSubtract(&sp38[var_r30], &var_r31->unk_2C, &sp8); + sp20[var_r30] = PSVECMag(&sp8); + } + for (var_r30 = 0; var_r30 < (var_r24 - 1); var_r30++) { + for (var_r29 = var_r30 + 1; var_r29 < var_r24; var_r29++) { + if (sp20[var_r30] > sp20[var_r29]) { + sp14 = sp38[var_r30]; + sp38[var_r30] = sp38[var_r29]; + sp38[var_r29] = sp14; + var_f31 = sp20[var_r30]; + sp20[var_r30] = sp20[var_r29]; + sp20[var_r29] = var_f31; + } + } + } + var_r25 = 0x3E8; + var_r23 = var_r25 * (fn_1_43B8() / 65536.0f); + for (var_r30 = 0; var_r30 < (var_r24 - 1); var_r30++) { + var_r25 = 0.1f * (var_r25 * (5.0f + var_r28)); + var_r23 -= var_r25; + if (var_r23 < 0) { + break; + } + } + var_r31->unk_5C.unk_04 = sp38[var_r30].x + (100.0f * (0.5f - (0.15f * var_r28)) * ((fn_1_43B8() - 0x8000) / 32768.0f)); + var_r31->unk_5C.unk_08 = sp38[var_r30].z + (100.0f * (0.5f - (0.15f * var_r28)) * ((fn_1_43B8() - 0x8000) / 32768.0f)); + var_r31->unk_5C.unk_00 = 2; + var_r31->unk_5C.unk_02 = -1; + var_r27 = var_r31->unk_10; + var_r26 = var_r31->unk_12; + break; + } + var_r31->unk_10 = var_r27; + var_r31->unk_12 = var_r26; + var_r31->unk_14 = var_r21; + var_r31->unk_16 = var_r20; +} + +void fn_1_2E24(omObjData *object) +{ + s16 spA; + s16 sp8; + float var_f29; + + M453DllWork2 *var_r31; + s16 var_r30; + s16 var_r29; + s16 var_r28; + s16 var_r27; + s32 var_r25; + + var_r31 = object->data; + var_r25 = object->model[0]; + var_r28 = var_r31->unk_18; + var_r31->unk_50 = var_r31->unk_2C; + var_r30 = var_r31->unk_10; + var_r29 = var_r31->unk_12; + spA = var_r31->unk_14; + sp8 = var_r31->unk_16; + switch (var_r31->unk_18) { + case 0: + case 1: + case 2: + var_r31->unk_1C = 0.14f * sqrtf((var_r30 * var_r30) + (var_r29 * var_r29)); + if (var_r31->unk_1C > 0.1f) { + if (var_r31->unk_1C >= 6.0f) { + var_r28 = 2; + var_r27 = 1; + } + else { + var_r28 = 1; + var_r27 = 1; + } + var_f29 = atan2d(var_r30, -var_r29); + var_r31->unk_38.y = fn_1_440C(var_r31->unk_38.y, var_f29, 0.5f); + var_r31->unk_20 = var_r31->unk_38.y; + var_r31->unk_24 += 1.0f; + if (var_r31->unk_24 >= (0.5f * var_r31->unk_28)) { + var_r31->unk_24 = var_r31->unk_24 - (0.5f * var_r31->unk_28); + } + var_r31->unk_1C = var_r31->unk_1C * (1.0 + (0.25 * cosd((90.0f * (var_r31->unk_24 / (0.5f * var_r31->unk_28)))))); + } + else { + var_r31->unk_24 = 0.0f; + var_r31->unk_1C = 0.0f; + var_r28 = 0; + var_r27 = 1; + } + var_r31->unk_48 = -2.4333334f; + break; + case 3: + var_r27 = 0; + if ((Hu3DData[var_r25].unk_0C == -1) && (CharModelMotionEndCheck(var_r31->unk_01) != 0)) { + var_r31->unk_48 += -2.4333334f; + } + else { + var_r31->unk_48 = 0.0f; + } + if (var_r31->unk_0C != 0) { + if (var_r31->unk_0D != 0) { + var_r31->unk_48 = 0.0f; + var_r31->unk_0D = 0; + var_r28 = 5; + var_r27 = 0; + } + else { + var_r31->unk_48 *= -0.1f; + var_r31->unk_0C = 0; + var_r28 = 4; + var_r27 = 0; + } + } + break; + case 4: + var_r31->unk_48 += -2.4333334f; + if ((var_r31->unk_0C != 0) && (CharModelMotionEndCheck(var_r31->unk_01) != 0)) { + var_r28 = 5; + var_r27 = 0; + } + break; + case 5: + if (CharModelMotionEndCheck(var_r31->unk_01) != 0) { + var_r28 = 0; + var_r27 = 1; + } + break; + case 6: + case 7: + var_r27 = 0; + var_r31->unk_48 = -2.4333334f; + break; + } + if (var_r31->unk_07 & 4) { + if (var_r31->unk_0A & 2) { + Hu3DModelAttrSet(var_r25, 1); + } + else { + Hu3DModelAttrReset(var_r25, 1); + } + if (--var_r31->unk_0A == 0) { + var_r31->unk_07 = var_r31->unk_07 & 0xFFFFFFFB; + } + } + var_r31->unk_44 = var_r31->unk_1C * sind(var_r31->unk_20); + var_r31->unk_4C = var_r31->unk_1C * cosd(var_r31->unk_20); + var_r31->unk_2C.x += var_r31->unk_44; + if (var_r31->unk_0C == 0) { + var_r31->unk_2C.y = var_r31->unk_2C.y + var_r31->unk_48; + } + var_r31->unk_2C.z += var_r31->unk_4C; + if (var_r28 != var_r31->unk_1A) { + var_r31->unk_1A = var_r28; + var_r31->unk_18 = var_r28; + CharModelMotionShiftSet(var_r31->unk_01, object->motion[var_r31->unk_18], 0.0f, 8.0f, var_r27); + var_r31->unk_28 = CharModelMotionMaxTimeGet(var_r31->unk_01); + } + omSetTra(object, var_r31->unk_2C.x, var_r31->unk_2C.y, var_r31->unk_2C.z); + omSetRot(object, var_r31->unk_38.x, var_r31->unk_38.y, var_r31->unk_38.z); +} + +void fn_1_3648(void) +{ + s32 var_r31; + M453DllWork2 *var_r30; + s32 var_r29; + + var_r29 = 0; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = lbl_1_bss_3C[var_r31]->data; + if (var_r30->unk_07 != 0) { + var_r30->unk_0E = 0; + } + } + while ((fn_1_36DC() != 0) && (var_r29 < 0x32)) { + var_r29++; + } +} + +s32 fn_1_36DC(void) +{ + Vec sp14[4]; + Vec sp8; + float var_f30; + float var_f31; + + M453DllWork2 *var_r31; + s32 var_r30; + s32 var_r29; + M453DllWork2 *var_r28; + M453DllWork2 *var_r27; + s32 var_r26; + omObjData *var_r25; + + var_r26 = 0; + for (var_r30 = 0; var_r30 < 4; var_r30++) { + sp14[var_r30].x = sp14[var_r30].y = sp14[var_r30].z = 0.0f; + } + for (var_r30 = 0; var_r30 < 3; var_r30++) { + var_r28 = lbl_1_bss_3C[var_r30]->data; + if (var_r28->unk_07 != 0) { + for (var_r29 = var_r30 + 1; var_r29 < 4; var_r29++) { + var_r27 = lbl_1_bss_3C[var_r29]->data; + if (var_r27->unk_07 != 0) { + PSVECSubtract(&var_r28->unk_2C, &var_r27->unk_2C, &sp8); + var_f31 = PSVECMag(&sp8); + if (var_f31 < 80.0f) { + PSVECNormalize(&sp8, &sp8); + var_f30 = 0.0001f + (0.5f * (80.0f - var_f31)); + PSVECScale(&sp8, &sp8, var_f30); + PSVECAdd(&sp14[var_r30], &sp8, &sp14[var_r30]); + PSVECSubtract(&sp14[var_r29], &sp8, &sp14[var_r29]); + var_r28->unk_0E++; + var_r27->unk_0E++; + var_r26++; + } + } + } + } + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r25 = lbl_1_bss_3C[var_r30]; + var_r31 = var_r25->data; + if (var_r31->unk_07 != 0) { + PSVECAdd(&var_r31->unk_2C, &sp14[var_r30], &var_r31->unk_2C); + if (var_r31->unk_2C.x > 660.0f) { + var_r31->unk_2C.x = 660.0f; + } + if (var_r31->unk_2C.x < -660.0f) { + var_r31->unk_2C.x = -660.0f; + } + if (var_r31->unk_2C.z > 360.0f) { + var_r31->unk_2C.z = 360.0f; + } + if (var_r31->unk_2C.z < -360.0f) { + var_r31->unk_2C.z = -360.0f; + } + omSetTra(var_r25, var_r31->unk_2C.x, var_r31->unk_2C.y, var_r31->unk_2C.z); + } + } + return var_r26; +} + +void fn_1_39C8(omObjData *object) +{ + s32 sp8[4]; + + s32 var_r31; + s32 var_r30; + M453DllWork2 *var_r29; + s32 var_r28; + s32 var_r27; + + if (lbl_1_bss_3A >= 6) { + if (fn_1_8240() != 0) { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + fn_1_3C94(lbl_1_bss_3C[var_r31]); + } + } + else { + for (var_r31 = 0, var_r30 = 0; var_r31 < 4; var_r31++) { + ((M453DllWork2 *)lbl_1_bss_3C[var_r31]->data)->unk_9C = 0; + if (((M453DllWork2 *)lbl_1_bss_3C[var_r31]->data)->unk_07 != 0) { + sp8[var_r30++] = var_r31; + } + } + if (var_r30 != 0) { + var_r31 = sp8[(s32)(var_r30 * (fn_1_43B8() / 65536.0f))]; + ((M453DllWork2 *)lbl_1_bss_3C[var_r31]->data)->unk_9C = 1; + } + } + var_r27 = 0; + for (var_r28 = 0; var_r28 < 4; var_r28++) { + var_r29 = lbl_1_bss_3C[var_r28]->data; + if (var_r29->unk_07 != 0) { + var_r29->unk_0E = 0; + } + } + while ((fn_1_36DC() != 0) && (var_r27 < 0x32)) { + var_r27++; + } + } +} + +void fn_1_3BB4(Vec *arg0, Vec *arg1) +{ + Vec sp18[6]; + Vec spC; + float var_f31; + float var_f30; + + s32 var_r31; + s32 var_r30; + + var_r30 = fn_1_844C(sp18); + var_f31 = 2000.0f; + for (var_r31 = 0; var_r31 < var_r30; var_r31++) { + PSVECSubtract(&sp18[var_r31], arg0, &spC); + var_f30 = PSVECMag(&spC); + if (!(var_f30 >= var_f31)) { + var_f31 = var_f30; + *arg1 = sp18[var_r31]; + } + } +} + +float lbl_1_data_114[8] = { 40.0f, 40.0f, 40.0f, 40.0f, 40.0f, 100.0f, 40.0f, 80.0f }; + +float lbl_1_data_134[8] = { 160.0f, 160.0f, 180.0f, 160.0f, 160.0f, 180.0f, 180.0f, 200.0f }; + +void fn_1_3C94(omObjData *object) +{ + Vec sp8; + float var_f31; + float var_f30; + + M453DllWork2 *var_r31; + s32 var_r29; + s16 var_r28; + + var_r31 = object->data; + if (var_r31->unk_07 != 0) { + var_f30 = fn_1_80B0(&var_r31->unk_2C, lbl_1_data_114[var_r31->unk_01]) - 10.0f; + if (var_f30 < 0.0f) { + var_f30 = 0.0f; + } + if ((var_r31->unk_07 & 2) == 0) { + var_f31 = 1.0f; + if (var_f30 < lbl_1_data_134[var_r31->unk_01]) { + if (fn_1_867C(&var_r31->unk_2C, &sp8) != 0) { + var_r31->unk_2C.x = sp8.x; + var_r31->unk_2C.z = sp8.z; + } + else { + if ((fn_1_7F54(var_r31->unk_2C.x, var_r31->unk_2C.z) - 10.0f) < 100.0f) { + var_r31->unk_07 = var_r31->unk_07 | 2; + var_r28 = lbl_1_bss_0; + var_r29 = var_r31->unk_00; + GWPlayerCoinWinSet(var_r29, var_r28); + } + var_f31 = var_f30 / lbl_1_data_134[var_r31->unk_01]; + } + } + } + else { + var_f31 = var_f30 / lbl_1_data_134[var_r31->unk_01]; + } + if (object->scale.y < var_f31) { + var_f31 = object->scale.y + (0.2f * (var_f31 - object->scale.y)); + } + object->scale.y = var_f31; + } +} + +s16 fn_1_3E9C(s32 arg0, s16 arg1, ParticleHook arg2) +{ + ParticleData *var_r31; + s32 var_r30; + AnimData *var_r29; + + var_r29 = HuSprAnimRead(HuDataReadNum(arg0, 0x10000000)); + var_r30 = Hu3DParticleCreate(var_r29, arg1); + Hu3DParticleHookSet(var_r30, arg2); + var_r31 = Hu3DData[var_r30].unk_120; + var_r31->unk_2E = var_r30; + var_r31->unk_00 = var_r31->unk_02 = 0; + return var_r30; +} + +void fn_1_3F38(ModelData *model, ParticleData *particle, Mtx matrix) +{ + s16 sp8 = 0; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + + HsfanimStruct01 *var_r31; + s32 var_r29; + + switch (particle->unk_00) { + case 0: + var_f29 = 360.0f / particle->unk_30; + for (var_r31 = particle->unk_48, var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + var_r31->unk08.x = sind((var_f29 * var_r29)) * (1.0f + (0.1f * (6.0f * ((fn_1_43B8() - 0x8000) / 32768.0f)))); + var_r31->unk08.y = 0.0f; + var_r31->unk08.z = cosd((var_f29 * var_r29)) * (1.0f + (0.1f * (6.0f * ((fn_1_43B8() - 0x8000) / 32768.0f)))); + var_r31->unk34.x = 0.0f; + var_r31->unk34.y = 0.0f; + var_r31->unk34.z = 0.0f; + } + particle->unk_02 = 0x1E; + particle->unk_00++; + case 1: + particle->unk_02--; + var_f31 = (30.0f - particle->unk_02) / 30.0f; + var_f30 = particle->unk_02 / 30.0f; + for (var_r31 = particle->unk_48, var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + var_r31->unk34.x += 5.0f * var_f30 * var_r31->unk08.x; + var_r31->unk34.y = 20.0f; + var_r31->unk34.z += 5.0f * var_f30 * var_r31->unk08.z; + var_r31->unk2C = 20.0f + (60.0f * var_f31); + var_r31->unk40.r = var_r31->unk40.g = var_r31->unk40.b = 0xFF; + var_r31->unk40.a = 64.0f * (1.0f - (var_f31 * var_f31)); + } + if (particle->unk_02 == 0) { + particle->unk_00++; + } + break; + case 2: + Hu3DModelKill(particle->unk_2E); + return; + } + DCFlushRange(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); +} + +u32 lbl_1_data_154 = 0x41C64E6D; + +s32 fn_1_43B8(void) +{ + lbl_1_data_154 *= 0x41C64E6D; + lbl_1_data_154 += 0x3039; + return lbl_1_data_154 >> 0x10; +} + +float fn_1_440C(float arg8, float arg9, float argA) +{ + float var_f31; + + if (arg8 > 180.0f) { + arg8 -= 360.0f; + } + else if (arg8 <= -180.0f) { + arg8 += 360.0f; + } + if (arg9 > 180.0f) { + arg9 -= 360.0f; + } + else if (arg9 <= -180.0f) { + arg9 += 360.0f; + } + var_f31 = arg8 - arg9; + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + else if (var_f31 <= -180.0f) { + var_f31 += 360.0f; + } + arg8 = arg9 + (var_f31 * argA); + if (arg8 > 180.0f) { + return arg8 - 360.0f; + } + if (arg8 <= -180.0f) { + arg8 += 360.0f; + } + return arg8; +} + +void fn_1_4574(Mtx arg0, float arg8, float arg9, float argA) +{ + Mtx sp38; + Mtx sp8; + if (argA != 0.0f) { + PSMTXRotRad(arg0, 0x5A, 0.017453292f * argA); + } + else { + PSMTXIdentity(arg0); + } + if (arg8 != 0.0f) { + PSMTXRotRad(sp38, 0x58, 0.017453292f * arg8); + PSMTXConcat(sp38, arg0, arg0); + } + if (arg9 != 0.0f) { + PSMTXRotRad(sp8, 0x59, 0.017453292f * arg9); + PSMTXConcat(sp8, arg0, arg0); + } +} +// TODO figue out type of arg0 +void fn_1_4694(float *arg0, Vec *arg1) +{ + float var_f29; + float var_f28; + + arg1->x = atan2d(arg0[10], arg0[6]); + arg1->z = atan2d(arg0[0], arg0[1]); + var_f29 = -arg0[2]; + var_f28 = sqrtf((1.0 - (var_f29 * var_f29)) < 0.0 ? -(1.0 - (var_f29 * var_f29)) : 1.0 - (var_f29 * var_f29)); + if ((arg1->x > 90.0f) && (arg1->x < 270.0f) && (arg1->z > 90.0f) && (arg1->z < 270.0f)) { + arg1->x = fmod(180.0f + arg1->x, 360.0); + arg1->z = fmod(180.0f + arg1->z, 360.0); + var_f28 = -var_f28; + } + arg1->y = atan2d(var_f28, var_f29); +} + +float fn_1_49A0(float arg8, float arg9, float argA, float argB) +{ + float var_f31; + float var_f30; + + var_f31 = 1.0 - arg8; + var_f30 = (argB * (arg8 * arg8)) + ((arg9 * (var_f31 * var_f31)) + (2.0 * (argA * (var_f31 * arg8)))); + return var_f30; +} + +void fn_1_4A18(float *arg0, float *arg1, float *arg2, float *arg3, float arg8) +{ + s32 i; + + for (i = 0; i < 3; i++) { + *arg3 = fn_1_49A0(arg8, *arg0++, *arg1++, *arg2++); + arg3++; + } +} + +float fn_1_4B34(float arg8, float arg9, float argA, float argB) +{ + float var_f31 = 2.0 * ((arg8 * argB) + (((arg8 - 1.0) * arg9) + ((1.0 - (2.0 * arg8)) * argA))); + return var_f31; +} + +void fn_1_4BAC(float *arg0, float *arg1, float *arg2, float *arg3, float arg8) +{ + float spC[3]; + float sp8; + float var_f31; + float var_f30; + float var_f28; + float var_f29; + float var_f27; + float var_f26; + float var_f25; + float var_f24; + float var_f23; + float var_f22; + float var_f21; + + s32 var_r31; + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + spC[var_r31] = fn_1_4B34(arg8, *arg0++, *arg1++, *arg2++); + } + + var_f30 = (spC[2] * spC[2]) + ((spC[0] * spC[0]) + (spC[1] * spC[1])); + var_f29 = sqrtf(var_f30); + if (var_f29) { + var_f29 = 1.0 / var_f29; + for (var_r31 = 0; var_r31 < 3; var_r31++) { + *arg3 = var_f29 * spC[var_r31]; + arg3++; + } + return; + } + *arg3++ = 0.0f; + *arg3++ = 0.0f; + *arg3++ = 1.0f; +} + +void fn_1_4E84(float *arg0, float *arg1, float *arg2, s32 arg3) +{ + float sp48[16]; + float sp8[16]; + double var_f31; + + s32 var_r31; + + arg2[0] = 0.0f; + arg2[arg3 - 1] = 0.0f; + for (var_r31 = 0; var_r31 < (arg3 - 1); var_r31++) { + sp48[var_r31] = arg0[var_r31 + 1] - arg0[var_r31]; + if (sp48[var_r31] == 0.0f) { + sp8[var_r31 + 1] = 0.0f; + } + else { + sp8[var_r31 + 1] = (arg1[var_r31 + 1] - arg1[var_r31]) / sp48[var_r31]; + } + } + arg2[1] = sp8[2] - sp8[1]; + sp8[1] = 2.0f * (arg0[2] - arg0[0]); + for (var_r31 = 1; var_r31 < (arg3 - 2); var_r31++) { + var_f31 = sp48[var_r31] / sp8[var_r31]; + arg2[var_r31 + 1] = (sp8[var_r31 + 2] - sp8[var_r31 + 1]) - (var_f31 * arg2[var_r31]); + sp8[var_r31 + 1] = (2.0f * (arg0[var_r31 + 2] - arg0[var_r31])) - (var_f31 * sp48[var_r31]); + } + arg2[arg3 - 2] -= sp48[arg3 - 2] * arg2[arg3 - 1]; + for (var_r31 = arg3 - 2; var_r31 > 0; var_r31--) { + if (sp8[var_r31] == 0.0f) { + arg2[var_r31] = 0.0f; + } + else { + arg2[var_r31] = (arg2[var_r31] - (sp48[var_r31] * arg2[var_r31 + 1])) / sp8[var_r31]; + } + } +} + +float fn_1_513C(float arg8, float *arg0, float *arg1, float *arg2, s32 arg3) +{ + float var_f31; + float var_f30; + float var_f29; + + s32 var_r31 = arg8; + arg8 = arg8 - var_r31; + var_f31 = arg0[var_r31 + 1] - arg0[var_r31]; + var_f30 = var_f31 * arg8; + var_f29 = arg1[var_r31] + + (var_f30 + * ((var_f30 * ((3.0f * arg2[var_r31]) + ((var_f30 * (arg2[var_r31 + 1] - arg2[var_r31])) / var_f31))) + + (((arg1[var_r31 + 1] - arg1[var_r31]) / var_f31) - (var_f31 * ((2.0f * arg2[var_r31]) + arg2[var_r31 + 1]))))); + if (var_f31 == 0.0f) { + var_f29 = arg1[var_r31]; + } + return var_f29; +} + +void fn_1_5290(float *arg0, float (*arg1)[3], float (*arg2)[3], s32 arg3) +{ + float spD4[16]; + float sp94[16]; + float sp54[16]; + float sp14[16]; + Vec sp8; + double var_f31; + + s32 var_r31; + s32 var_r30; + s32 var_r27; + + arg0[0] = 0.0f; + for (var_r30 = 1; var_r30 < arg3; var_r30++) { + PSVECSubtract((Vec *)&arg1[var_r30], (Vec *)&arg1[var_r30 - 1], &sp8); + arg0[var_r30] = arg0[var_r30 - 1] + PSVECMag(&sp8); + } + for (var_r27 = 0; var_r27 < 3; var_r27++) { + for (var_r30 = 0; var_r30 < arg3; var_r30++) { + spD4[var_r30] = arg1[var_r30][var_r27]; + } + sp94[0] = 0.0f; + sp94[arg3 - 1] = 0.0f; + for (var_r31 = 0; var_r31 < (arg3 - 1); var_r31++) { + sp14[var_r31] = arg0[var_r31 + 1] - arg0[var_r31]; + if (sp14[var_r31] == 0.0f) { + sp54[var_r31 + 1] = 0.0f; + } + else { + sp54[var_r31 + 1] = (spD4[var_r31 + 1] - spD4[var_r31]) / sp14[var_r31]; + } + } + sp94[1] = sp54[2] - sp54[1]; + sp54[1] = 2.0f * (arg0[2] - arg0[0]); + for (var_r31 = 1; var_r31 < (arg3 - 2); var_r31++) { + var_f31 = sp14[var_r31] / sp54[var_r31]; + sp94[var_r31 + 1] = (sp54[var_r31 + 2] - sp54[var_r31 + 1]) - (var_f31 * sp94[var_r31]); + sp54[var_r31 + 1] = (2.0f * (arg0[var_r31 + 2] - arg0[var_r31])) - (var_f31 * sp14[var_r31]); + } + sp94[arg3 - 2] -= sp14[arg3 - 2] * sp94[arg3 - 1]; + for (var_r31 = arg3 - 2; var_r31 > 0; var_r31--) { + if (sp54[var_r31] == 0.0f) { + sp94[var_r31] = 0.0f; + } + else { + sp94[var_r31] = (sp94[var_r31] - (sp14[var_r31] * sp94[var_r31 + 1])) / sp54[var_r31]; + } + } + for (var_r30 = 0; var_r30 < arg3; var_r30++) { + arg2[var_r30][var_r27] = sp94[var_r30]; + } + } +} + +void fn_1_5670(float arg8, float *arg0, float *arg1, float (*arg2)[3], float (*arg3)[3], s32 arg4) +{ + float sp48[16]; + float sp8[16]; + + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + + s32 var_r31; + s32 var_r30; + s32 var_r29; + + for (var_r29 = 0; var_r29 < 3; var_r29++) { + for (var_r30 = 0; var_r30 < arg4; var_r30++) { + sp48[var_r30] = arg2[var_r30][var_r29]; + sp8[var_r30] = arg3[var_r30][var_r29]; + } + var_f30 = arg8; + var_r31 = var_f30; + var_f30 -= var_r31; + var_f31 = arg1[var_r31 + 1] - arg1[var_r31]; + var_f29 = var_f31 * var_f30; + var_f28 = sp48[var_r31] + + (var_f29 + * ((var_f29 * ((3.0f * sp8[var_r31]) + ((var_f29 * (sp8[var_r31 + 1] - sp8[var_r31])) / var_f31))) + + (((sp48[var_r31 + 1] - sp48[var_r31]) / var_f31) - (var_f31 * ((2.0f * sp8[var_r31]) + sp8[var_r31 + 1]))))); + if (var_f31 == 0.0f) { + var_f28 = sp48[var_r31]; + } + var_f27 = var_f28; + arg0[var_r29] = var_f27; + } +} + +float fn_1_5884(Vec *arg0) +{ + float sp8; + float var_f30; + float var_f29; + + var_f30 = (arg0->z * arg0->z) + ((arg0->x * arg0->x) + (arg0->y * arg0->y)); + var_f30 = sqrtf(var_f30); + if (var_f30 != 0.0f) { + var_f29 = 1.0f / var_f30; + arg0->x *= var_f29; + arg0->y *= var_f29; + arg0->z *= var_f29; + } + else { + arg0->x = arg0->y = arg0->z = 0.0f; + } + return var_f30; +} + +float fn_1_5A1C(Vec arg0, Vec arg1, Vec *arg2, float arg8) +{ + if (arg8 <= 0.0f) { + arg2->x = arg0.x; + arg2->y = arg0.y; + arg2->z = arg0.z; + arg8 = 0.0f; + return arg8; + } + if (arg8 >= 1.0f) { + arg2->x = arg0.x + arg1.x; + arg2->y = arg0.y + arg1.y; + arg2->z = arg0.z + arg1.z; + arg8 = 1.0f; + return arg8; + } + arg2->x = arg0.x + (arg8 * arg1.x); + arg2->y = arg0.y + (arg8 * arg1.y); + arg2->z = arg0.z + (arg8 * arg1.z); + return arg8; +} + +float fn_1_5AF4(Vec arg0, Vec arg1, Vec arg2) +{ + float var_f31 = (arg2.z * (arg1.z - arg0.z)) + ((arg2.x * (arg1.x - arg0.x)) + (arg2.y * (arg1.y - arg0.y))); + float var_f30 = -((arg2.z * arg2.z) + ((arg2.x * arg2.x) + (arg2.y * arg2.y))); + if (var_f30 != 0.0f) { + var_f31 /= var_f30; + } + return var_f31; +} + +float fn_1_5BB0(Vec *arg0, Vec *arg1, Vec *arg2) +{ + Vec sp44; + float var_f28; + + if (((arg2->z * arg2->z) + ((arg2->x * arg2->x) + (arg2->y * arg2->y))) == 0.0f) { + return ((arg0->z - arg1->z) * (arg0->z - arg1->z)) + + (((arg0->x - arg1->x) * (arg0->x - arg1->x)) + ((arg0->y - arg1->y) * (arg0->y - arg1->y))); + } + var_f28 = fn_1_5AF4(*arg0, *arg1, *arg2); + fn_1_5A1C(*arg1, *arg2, &sp44, var_f28); + return ((arg0->z - sp44.z) * (arg0->z - sp44.z)) + (((arg0->x - sp44.x) * (arg0->x - sp44.x)) + ((arg0->y - sp44.y) * (arg0->y - sp44.y))); +} + +float fn_1_5EEC(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3, Vec *arg4) +{ + float var_f30; + if (((arg2->z * arg2->z) + ((arg2->x * arg2->x) + (arg2->y * arg2->y))) == 0.0f) { + return ((arg0->z - arg1->z) * (arg0->z - arg1->z)) + + (((arg0->x - arg1->x) * (arg0->x - arg1->x)) + ((arg0->y - arg1->y) * (arg0->y - arg1->y))); + } + var_f30 = fn_1_5AF4(*arg0, *arg1, *arg2); + fn_1_5A1C(*arg1, *arg2, arg3, var_f30); + + arg4->x = arg3->x - arg0->x; + arg4->y = arg3->y - arg0->y; + arg4->z = arg3->z - arg0->z; + + return fn_1_5884(arg4); +} + +s32 fn_1_639C(void) +{ + return lbl_1_bss_0; +} + +s32 fn_1_63AC(void) +{ + s32 var_r31; + omObjData **var_r30; + M453DllWork2 *var_r29; + + var_r30 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + for (var_r31 = 0; var_r31 < lbl_1_bss_1C; var_r31++) { + var_r29 = var_r30[lbl_1_bss_1E[var_r31]]->data; + if (var_r29->unk_07 != 0) { + return 1; + } + } + return 0; +} + +void fn_1_6448(void) +{ + s32 var_r31; + M453DllWork2 *var_r30; + omObjData **var_r29; + s32 var_r28; + s16 var_r27; + + var_r29 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = var_r29[var_r31]->data; + if (var_r30->unk_07 != 0) { + var_r27 = lbl_1_bss_0; + var_r28 = var_r30->unk_00; + GWPlayerCoinWinSet(var_r28, var_r27); + } + } +} diff --git a/src/REL/m453Dll/map.c b/src/REL/m453Dll/map.c new file mode 100644 index 00000000..60b92749 --- /dev/null +++ b/src/REL/m453Dll/map.c @@ -0,0 +1,1091 @@ +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/flag.h" +#include "game/frand.h" +#include "game/gamework.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "game/wipe.h" +#include "math.h" +#include "string.h" + +#include "REL/m453Dll.h" + +typedef struct M453MapUnkStruct { + struct { + u8 unk_00_field0 : 1; + }; + s32 unk_04; + float unk_08; + s32 unk_0C[6]; + s32 unk_24[0xC]; +} M453MapUnkStruct; /* size = 0x54 */ + +void fn_1_6768(omObjData *object); +void fn_1_67EC(omObjData *object); +void fn_1_67F0(omObjData *object); +void fn_1_695C(omObjData *object); +void fn_1_6C74(omObjData *object); +void fn_1_6EB4(omObjData *object); +void fn_1_6FC4(omObjData *object); +void fn_1_73C4(omObjData *object); +void fn_1_7978(void); +void fn_1_7A74(s16 arg0); + +Vec lbl_1_data_158[0x10] = { + { 92.39f, 0.0f, 38.27f }, + { 100.0f, 0.0f, 0.0f }, + { 92.39f, 0.0f, -38.27f }, + { 70.71f, 0.0f, -70.71f }, + { 38.27f, 0.0f, -92.39f }, + { 0.0f, 0.0f, -100.0f }, + { -38.27f, 0.0f, -92.39f }, + { -70.71f, 0.0f, -70.71f }, + { -92.39f, 0.0f, -38.27f }, + { -100.0f, 0.0f, 0.0f }, + { -92.39f, 0.0f, 38.27f }, + { -70.71f, 0.0f, 70.71f }, + { -38.27f, 0.0f, 92.39f }, + { 0.0f, 0.0f, 100.0f }, + { 38.27f, 0.0f, 92.39f }, + { 70.71f, 0.0f, 70.71f }, +}; + +Vec lbl_1_data_218[0x10] = { + { 55.43f, 0.0f, 22.96f }, + { 60.0f, 0.0f, 0.0f }, + { 55.43f, 0.0f, -22.96f }, + { 42.43f, 0.0f, -42.43f }, + { 22.96f, 0.0f, -55.43f }, + { 0.0f, 0.0f, -60.0f }, + { -22.96f, 0.0f, -55.43f }, + { -42.43f, 0.0f, -42.43f }, + { -55.43f, 0.0f, -22.96f }, + { -60.0f, 0.0f, 0.0f }, + { -55.43f, 0.0f, 22.96f }, + { -42.43f, 0.0f, 42.43f }, + { -22.96f, 0.0f, 55.43f }, + { 0.0f, 0.0f, 60.0f }, + { 22.96f, 0.0f, 55.43f }, + { 42.43f, 0.0f, 42.43f }, +}; + +Vec lbl_1_data_2D8[0xA] = { + { 38.79f, 0.0f, -53.4f }, + { 0.0f, 0.0f, -120.0f }, + { -38.79f, 0.0f, -53.4f }, + { -114.13f, 0.0f, -37.08f }, + { -62.77f, 0.0f, 20.4f }, + { -70.53f, 0.0f, 97.08f }, + { 0.0f, 0.0f, 66.0f }, + { 70.53f, 0.0f, 97.08f }, + { 62.77f, 0.0f, 20.4f }, + { 114.13f, 0.0f, -37.08f }, +}; + +Vec lbl_1_data_350[0xA] = { + { 21.34f, 0.0f, -29.37f }, + { 0.0f, 0.0f, -66.0f }, + { -21.34f, 0.0f, -29.37f }, + { -62.77f, 0.0f, -20.4f }, + { -34.52f, 0.0f, 11.22f }, + { -38.79f, 0.0f, 53.4f }, + { 0.0f, 0.0f, 36.3f }, + { 38.79f, 0.0f, 53.4f }, + { 34.52f, 0.0f, 11.22f }, + { 62.77f, 0.0f, -20.4f }, +}; + +Vec lbl_1_data_3C8[0x10] = { + { 110.87f, 0.0f, 45.92f }, + { 120.0f, 0.0f, 0.0f }, + { 110.87f, 0.0f, -45.92f }, + { 84.85f, 0.0f, -84.85f }, + { 45.92f, 0.0f, -110.87f }, + { 0.0f, 0.0f, -120.0f }, + { -45.92f, 0.0f, -110.87f }, + { -84.85f, 0.0f, -84.85f }, + { -110.87f, 0.0f, -45.92f }, + { -120.0f, 0.0f, 0.0f }, + { -110.87f, 0.0f, 45.92f }, + { -84.85f, 0.0f, 84.85f }, + { -45.92f, 0.0f, 110.87f }, + { 0.0f, 0.0f, 120.0f }, + { 45.92f, 0.0f, 110.87f }, + { 84.85f, 0.0f, 84.85f }, +}; + +Vec lbl_1_data_488[0x10] = { + { 73.17f, 0.0f, 30.31f }, + { 79.2f, 0.0f, 0.0f }, + { 73.17f, 0.0f, -30.31f }, + { 56.0f, 0.0f, -56.0f }, + { 30.31f, 0.0f, -73.17f }, + { 0.0f, 0.0f, -79.2f }, + { -30.31f, 0.0f, -73.17f }, + { -56.0f, 0.0f, -56.0f }, + { -73.17f, 0.0f, -30.31f }, + { -79.2f, 0.0f, 0.0f }, + { -73.17f, 0.0f, 30.31f }, + { -56.0f, 0.0f, 56.0f }, + { -30.31f, 0.0f, 73.17f }, + { 0.0f, 0.0f, 79.2f }, + { 30.31f, 0.0f, 73.17f }, + { 56.0f, 0.0f, 56.0f }, +}; + +Vec lbl_1_data_548[0xA] = { + { 48.49f, 0.0f, -66.74f }, + { 0.0f, 0.0f, -150.0f }, + { -48.49f, 0.0f, -66.74f }, + { -142.66f, 0.0f, -46.35f }, + { -78.46f, 0.0f, 25.49f }, + { -88.17f, 0.0f, 121.35f }, + { 0.0f, 0.0f, 82.5f }, + { 88.17f, 0.0f, 121.35f }, + { 78.46f, 0.0f, 25.49f }, + { 142.66f, 0.0f, -46.35f }, +}; + +Vec lbl_1_data_5C0[0xA] = { + { 29.09f, 0.0f, -40.05f }, + { 0.0f, 0.0f, -90.0f }, + { -29.09f, 0.0f, -40.05f }, + { -85.59f, 0.0f, -27.81f }, + { -47.08f, 0.0f, 15.3f }, + { -52.9f, 0.0f, 72.81f }, + { 0.0f, 0.0f, 49.5f }, + { 52.9f, 0.0f, 72.81f }, + { 47.08f, 0.0f, 15.3f }, + { 85.59f, 0.0f, -27.81f }, +}; + +Vec lbl_1_data_638[0x16] = { + { 129.1f, 0.0f, 54.6f }, + { 140.0f, 0.0f, 0.0f }, + { 129.3f, 0.0f, -53.6f }, + { 99.0f, 0.0f, -99.0f }, + { 53.6f, 0.0f, -129.3f }, + { 0.0f, 0.0f, -140.0f }, + { -53.6f, 0.0f, -129.3f }, + { -99.0f, 0.0f, -99.0f }, + { -129.4f, 0.0f, -53.5f }, + { -140.0f, 0.0f, 0.0f }, + { -136.0f, 0.0f, 20.4f }, + { -102.1f, 0.0f, -7.6f }, + { -70.0f, 0.0f, -14.0f }, + { -37.8f, 0.0f, -7.6f }, + { -10.6f, 0.0f, 10.6f }, + { 7.6f, 0.0f, 37.8f }, + { 14.0f, 0.0f, 70.0f }, + { 7.6f, 0.0f, 102.2f }, + { -20.4f, 0.0f, 136.0f }, + { 0.1f, 0.0f, 140.1f }, + { 53.9f, 0.0f, 129.5f }, + { 99.5f, 0.0f, 99.0f }, +}; + +Vec lbl_1_data_740[0x16] = { + { 95.9f, 0.0f, 42.9f }, + { 106.6f, 0.0f, 0.4f }, + { 98.4f, 0.0f, -37.2f }, + { 81.7f, 0.0f, -65.9f }, + { 55.4f, 0.0f, -89.6f }, + { 11.5f, 0.0f, -101.7f }, + { -24.5f, 0.0f, -99.9f }, + { -60.9f, 0.0f, -88.6f }, + { -98.7f, 0.0f, -64.4f }, + { -110.4f, 0.0f, -41.5f }, + { -110.4f, 0.0f, -30.8f }, + { -90.4f, 0.0f, -42.3f }, + { -53.8f, 0.0f, -48.5f }, + { -14.6f, 0.0f, -40.5f }, + { 17.1f, 0.0f, -16.3f }, + { 35.8f, 0.0f, 28.2f }, + { 35.8f, 0.0f, 65.6f }, + { 24.7f, 0.0f, 101.6f }, + { 19.6f, 0.0f, 114.6f }, + { 34.9f, 0.0f, 114.5f }, + { 62.9f, 0.0f, 99.0f }, + { 83.0f, 0.0f, 73.2f }, +}; + +Vec lbl_1_data_848[0x16] = { + { 110.9f, 0.0f, 45.9f }, + { 120.0f, 0.0f, 0.0f }, + { 110.9f, 0.0f, -45.8f }, + { 84.8f, 0.0f, -84.9f }, + { 45.9f, 0.0f, -110.9f }, + { 0.0f, 0.0f, -120.0f }, + { -45.9f, 0.0f, -110.9f }, + { -84.9f, 0.0f, -84.8f }, + { -110.9f, 0.0f, -45.9f }, + { -120.0f, 0.0f, 0.0f }, + { -116.5f, 0.0f, 17.5f }, + { -87.6f, 0.0f, -6.6f }, + { -60.0f, 0.0f, -12.0f }, + { -32.4f, 0.0f, -6.5f }, + { -9.1f, 0.0f, 9.1f }, + { 6.5f, 0.0f, 32.5f }, + { 12.0f, 0.0f, 60.0f }, + { 6.5f, 0.0f, 87.6f }, + { -17.5f, 0.0f, 116.5f }, + { 0.0f, 0.0f, 120.0f }, + { 45.9f, 0.0f, 110.9f }, + { 84.8f, 0.0f, 84.9f }, +}; + +Vec lbl_1_data_950[0x16] = { + { 80.0f, 0.0f, 31.0f }, + { 83.9f, 0.0f, -0.1f }, + { 77.2f, 0.0f, -31.7f }, + { 60.4f, 0.0f, -56.8f }, + { 35.6f, 0.0f, -77.4f }, + { -0.5f, 0.0f, -84.1f }, + { -31.5f, 0.0f, -82.9f }, + { -58.9f, 0.0f, -71.4f }, + { -86.3f, 0.0f, -49.4f }, + { -91.5f, 0.0f, -36.4f }, + { -91.5f, 0.0f, -27.3f }, + { -82.1f, 0.0f, -29.8f }, + { -54.7f, 0.0f, -36.2f }, + { -21.9f, 0.0f, -30.9f }, + { 13.3f, 0.0f, -10.2f }, + { 28.3f, 0.0f, 18.3f }, + { 33.4f, 0.0f, 58.4f }, + { 28.0f, 0.0f, 81.6f }, + { 20.7f, 0.0f, 93.3f }, + { 30.4f, 0.0f, 93.3f }, + { 55.4f, 0.0f, 82.2f }, + { 70.4f, 0.0f, 59.3f }, +}; + +s32 lbl_1_data_A58[0xC] = { + 0x220004, + 0x220005, + 0x220006, + 0x220009, + 0x22000C, + 0x22000F, + 0x220007, + 0x220008, + 0x22000A, + 0x22000B, + 0x22000D, + 0x22000E, +}; + +Vec lbl_1_data_A88[6] = { + { -400.0f, 0.0f, 300.0f }, + { 0.0f, 0.0f, 300.0f }, + { 400.0f, 0.0f, 300.0f }, + { -400.0f, 0.0f, 700.0f }, + { 0.0f, 0.0f, 700.0f }, + { 400.0f, 0.0f, 700.0f }, +}; + +s32 lbl_1_data_AD0[3] = { 6, 8, 0xA }; + +s32 lbl_1_data_ADC[3] = { 7, 9, 0xB }; + +s32 lbl_1_data_AE8[5] = { 1, 2, 3, 4, 5 }; + +Vec *lbl_1_data_AFC[6] = { + lbl_1_data_3C8, + lbl_1_data_158, + lbl_1_data_548, + lbl_1_data_2D8, + lbl_1_data_638, + lbl_1_data_848, +}; + +s32 lbl_1_data_B14[6] = { 0x10, 0x10, 0xA, 0xA, 0x16, 0x16 }; + +Vec lbl_1_data_B2C[6] = { + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, -20.0f }, + { 0.0f, 0.0f, -20.0f }, + { 40.0f, 0.0f, -20.0f }, + { 40.0f, 0.0f, -20.0f }, +}; + +Vec *lbl_1_data_B74[6][2] = { + { lbl_1_data_3C8, lbl_1_data_488 }, + { lbl_1_data_158, lbl_1_data_218 }, + { lbl_1_data_548, lbl_1_data_5C0 }, + { lbl_1_data_2D8, lbl_1_data_350 }, + { lbl_1_data_638, lbl_1_data_740 }, + { lbl_1_data_848, lbl_1_data_950 }, +}; + +s32 lbl_1_data_BA4[6] = { 0x10, 0x10, 0xA, 0xA, 0x16, 0x16 }; + +omObjData *lbl_1_bss_BC; +omObjData *lbl_1_bss_B8; +omObjData *lbl_1_bss_A4[5]; +s32 lbl_1_bss_A0; +s32 lbl_1_bss_9C; +s32 lbl_1_bss_98; +s32 lbl_1_bss_94; +s32 lbl_1_bss_90; +s32 lbl_1_bss_8C; +float lbl_1_bss_88; +s32 lbl_1_bss_84; +s32 lbl_1_bss_80; +s32 lbl_1_bss_7C; +s32 lbl_1_bss_78; +s32 lbl_1_bss_60[6]; + +void fn_1_64E8(Process *process) +{ + Vec sp20; + Vec sp14; + Vec sp8; + s32 var_r31; + + sp20.x = 0.0f; + sp20.y = 3000.0f; + sp20.z = 50.0f; + sp14.x = 0.0f; + sp14.y = 1.0f; + sp14.z = 0.0f; + sp8.x = 0.0f; + sp8.y = 0.0f; + sp8.z = 0.0f; + lbl_1_bss_BC = omAddObjEx(process, 0xA, 2, 0, -1, fn_1_6768); + lbl_1_bss_B8 = omAddObjEx(process, 0xC, 4, 0, -1, fn_1_67F0); + for (var_r31 = 0; var_r31 < 5; var_r31++) { + lbl_1_bss_A4[var_r31] = omAddObjEx(process, 0xE, 7, 0, -1, fn_1_6C74); + } + Hu3DShadowCreate(30.0f, 20.0f, 25000.0f); + Hu3DShadowTPLvlSet(0.65f); + Hu3DShadowPosSet(&sp20, &sp14, &sp8); + lbl_1_bss_A0 = 0; + lbl_1_bss_9C = lbl_1_bss_98 = 2; + lbl_1_bss_8C = 0; + lbl_1_bss_90 = 0; + lbl_1_bss_88 = 0.75f; + lbl_1_bss_7C = 3; + lbl_1_bss_78 = 0; + lbl_1_bss_84 = 0; + lbl_1_bss_80 = 0; + memset(lbl_1_bss_60, 0, 0x18); +} + +void fn_1_6748(void) +{ + fn_1_7978(); +} + +void fn_1_6768(omObjData *object) +{ + object->stat |= 0x100; + object->model[0] = Hu3DModelCreateFile(0x220010); + object->model[1] = Hu3DModelCreateFile(0x220011); + object->func = fn_1_67EC; +} + +void fn_1_67EC(omObjData *object) { } + +void fn_1_67F0(omObjData *object) +{ + object->stat |= 0x100; + object->model[0] = Hu3DModelCreateFile(0x220000); + object->model[1] = Hu3DModelCreateFile(0x220003); + object->model[2] = Hu3DModelCreateFile(0x220001); + object->model[3] = Hu3DModelCreateFile(0x220002); + Hu3DMotionSpeedSet(object->model[2], 0.0f); + Hu3DModelShadowSet(object->model[1]); + Hu3DModelPosSet(object->model[1], 0.0f, 0.0f, -500.0f); + Hu3DData[object->model[3]].unk_94 = 0.0f; + Hu3DData[object->model[3]].unk_98 = 2.0f; + object->work[3] = 0x1E; + object->func = fn_1_695C; +} + +void fn_1_695C(omObjData *object) +{ + ModelData *var_r30; + M453MapUnkStruct *var_r29; + + if (lbl_1_bss_84 != 0) { + if (lbl_1_bss_80 == 0) { + if (object->work[0] < 60.0f) { + object->work[0] += 1; + var_r30 = &Hu3DData[object->model[1]]; + var_r30->rot.x = (-120.0f * object->work[0]) / 60.0f; + } + else { + lbl_1_bss_80 ^= 1; + lbl_1_bss_84 = 0; + } + } + else if (object->work[0] != 0) { + object->work[0] -= 1; + var_r30 = &Hu3DData[object->model[1]]; + var_r30->rot.x = (-120.0f * object->work[0]) / 60.0f; + } + else { + lbl_1_bss_80 ^= 1; + lbl_1_bss_84 = 0; + } + } + var_r29 = lbl_1_bss_A4[lbl_1_bss_9C]->data; + if (lbl_1_bss_94 != 0) { + lbl_1_bss_94 = 0; + lbl_1_bss_90 = 1; + } + if (lbl_1_bss_9C != lbl_1_bss_98) { + lbl_1_bss_90 = 0; + lbl_1_bss_8C = 0; + } + lbl_1_bss_98 = lbl_1_bss_9C; + if (var_r29->unk_00_field0) { + lbl_1_bss_9C = (lbl_1_bss_9C + 1) % 5; + lbl_1_bss_8C = 1; + } + if (object->work[3] != 0) { + if (--object->work[3] == 0) { + HuAudFXPlay(0x521); + } + } +} + +void fn_1_6C74(omObjData *object) +{ + s32 var_r31; + M453MapUnkStruct *var_r29; + + var_r29 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x54, 0x10000000); + object->data = var_r29; + memset(object->data, 0, 0x54); + for (var_r31 = 0; var_r31 < 0xC; var_r31++) { + var_r29->unk_24[var_r31] = -1; + } + for (var_r31 = 0; (u32)var_r31 < 0xC; var_r31++) { + var_r29->unk_24[var_r31] = Hu3DModelCreateFile(lbl_1_data_A58[var_r31]); + Hu3DModelAttrSet(var_r29->unk_24[var_r31], 1); + } + object->model[0] = var_r29->unk_24[0]; + Hu3DModelAttrReset(object->model[0], 1); + var_r29->unk_00_field0 = 0; + var_r29->unk_04 = 4 - lbl_1_bss_A0; + fn_1_6FC4(object); + object->trans.y = 5.0f; + object->trans.z = -500.0f; + switch (var_r29->unk_04) { + case 0: + case 1: + break; + case 2: + for (var_r31 = 0; var_r31 < 7; var_r31++) { + Hu3DModelShadowSet(object->model[var_r31]); + } + break; + case 3: + for (var_r31 = 0; var_r31 < 7; var_r31++) { + Hu3DModelShadowMapSet(object->model[var_r31]); + } + object->trans.y = 2.5f; + break; + case 4: + for (var_r31 = 0; var_r31 < 7; var_r31++) { + Hu3DModelShadowMapSet(object->model[var_r31]); + } + object->trans.y = 0.0f; + break; + } + fn_1_6EB4(object); + lbl_1_bss_A0++; + object->func = fn_1_73C4; +} + +void fn_1_6EB4(omObjData *object) +{ + Mtx sp38; + Mtx sp8; + s32 var_r30; + + PSMTXTrans(sp38, object->trans.x, object->trans.y, object->trans.z); + mtxRot(sp8, object->rot.x, object->rot.y, object->rot.z); + PSMTXConcat(sp38, sp8, sp38); + for (var_r30 = 0; var_r30 < 6; var_r30++) { + PSMTXTrans(sp8, lbl_1_data_A88[var_r30].x, lbl_1_data_A88[var_r30].y, lbl_1_data_A88[var_r30].z); + PSMTXConcat(sp38, sp8, sp8); + Hu3DModelPosSet(object->model[var_r30 + 1], sp8[0][3], sp8[1][3], sp8[2][3]); + Hu3DModelRotSet(object->model[var_r30 + 1], object->rot.x, object->rot.y, object->rot.z); + } +} + +void fn_1_6FC4(omObjData *object) +{ + s32 sp8[6]; + + s32 var_r31; + M453MapUnkStruct *var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r26; + s32 var_r25; + s32 var_r24; + + var_r30 = object->data; + for (var_r31 = 0; var_r31 < 0x64; var_r31++) { + var_r29 = ((u8)frand() * 3) >> 8; + var_r28 = ((u8)frand() * 3) >> 8; + var_r26 = lbl_1_data_AD0[var_r29]; + lbl_1_data_AD0[var_r29] = lbl_1_data_AD0[var_r28]; + lbl_1_data_AD0[var_r28] = var_r26; + var_r29 = ((u8)frand() * 3) >> 8; + var_r28 = ((u8)frand() * 3) >> 8; + var_r26 = lbl_1_data_ADC[var_r29]; + lbl_1_data_ADC[var_r29] = lbl_1_data_ADC[var_r28]; + lbl_1_data_ADC[var_r28] = var_r26; + var_r29 = ((u8)frand() * 5) >> 8; + var_r28 = ((u8)frand() * 5) >> 8; + var_r26 = lbl_1_data_AE8[var_r29]; + lbl_1_data_AE8[var_r29] = lbl_1_data_AE8[var_r28]; + lbl_1_data_AE8[var_r28] = var_r26; + } + var_r25 = 0; + for (var_r31 = 0; var_r31 < 6; var_r31++) { + if (lbl_1_bss_60[var_r31] < 6) { + sp8[var_r25++] = var_r31; + } + } + for (var_r31 = 0; var_r31 < 0x64; var_r31++) { + var_r29 = (var_r25 * (u8)frand()) >> 8; + var_r28 = (var_r25 * (u8)frand()) >> 8; + var_r26 = sp8[var_r29]; + sp8[var_r29] = sp8[var_r28]; + sp8[var_r28] = var_r26; + } + for (var_r31 = 0; var_r31 < 6; var_r31++) { + var_r30->unk_0C[var_r31] = 0; + } + for (var_r31 = 0; var_r31 < lbl_1_bss_78; var_r31++) { + var_r30->unk_0C[sp8[var_r31]] = lbl_1_data_ADC[var_r31]; + } + while (var_r31 < lbl_1_bss_7C) { + var_r30->unk_0C[sp8[var_r31]] = lbl_1_data_AD0[var_r31]; + var_r31++; + } + var_r24 = 0; + for (var_r31 = 0; var_r31 < 6; var_r31++) { + if (var_r30->unk_0C[var_r31] == 0) { + var_r30->unk_0C[var_r31] = lbl_1_data_AE8[var_r24++]; + } + } + memcpy(lbl_1_bss_60, &var_r30->unk_0C, 0x18); + for (var_r31 = 0; var_r31 < 6; var_r31++) { + if (object->model[var_r31 + 1] >= 0) { + Hu3DModelAttrSet(object->model[var_r31 + 1], 1); + } + } + for (var_r31 = 0; var_r31 < 6; var_r31++) { + object->model[var_r31 + 1] = var_r30->unk_24[var_r30->unk_0C[var_r31]]; + Hu3DModelAttrReset(object->model[var_r31 + 1], 1); + } +} + +void fn_1_73C4(omObjData *object) +{ + Mtx sp38; + Mtx sp8; + M453MapUnkStruct *var_r30; + s32 var_r29; + s32 var_r28; + ModelData *var_r27; + + var_r30 = object->data; + if (lbl_1_bss_90 == 0) { + if ((lbl_1_bss_84 != 0) && (var_r30->unk_04 < 3)) { + var_r27 = &Hu3DData[lbl_1_bss_B8->model[1]]; + object->rot.x = var_r27->rot.x; + switch (var_r30->unk_04) { + case 0: + object->trans.z = -500.0f + ((2.5f * lbl_1_bss_B8->work[0]) / 60.0f); + break; + case 1: + object->trans.z = -500.0f + ((5.0f * lbl_1_bss_B8->work[0]) / 60.0f); + break; + case 2: + object->trans.z = -500.0f + ((7.5f * lbl_1_bss_B8->work[0]) / 60.0f); + break; + } + } + else { + return; + } + } + else { + switch (var_r30->unk_04) { + case 0: + if (lbl_1_bss_8C != 0) { + object->trans.z = -495.0f; + var_r30->unk_04++; + } + break; + case 1: + if (lbl_1_bss_8C != 0) { + object->trans.z = -492.5f; + var_r30->unk_00_field0 = 0; + var_r30->unk_04++; + var_r30->unk_08 = 0.0f; + for (var_r29 = 0; var_r29 < 7; var_r29++) { + Hu3DModelShadowSet(object->model[var_r29]); + } + } + break; + case 2: + if (lbl_1_bss_8C != 0) { + var_r30->unk_04 = var_r30->unk_04 + 1; + object->trans.y = 2.5f; + for (var_r29 = 0; var_r29 < 7; var_r29++) { + Hu3DModelShadowReset(object->model[var_r29]); + Hu3DModelShadowMapSet(object->model[var_r29]); + } + } + else { + var_r30->unk_08 = var_r30->unk_08 + lbl_1_bss_88; + if (var_r30->unk_08 > 90.0f) { + var_r30->unk_00_field0 = 1; + var_r30->unk_08 = 90.0f; + HuAudFXPlay(0x522); + } + object->rot.x = -120.0 * cosd(var_r30->unk_08); + object->trans.z = -500.0 + (7.5 * cosd(var_r30->unk_08)); + } + break; + case 3: + if (lbl_1_bss_8C != 0) { + var_r30->unk_04++; + object->trans.y = 0.0f; + } + break; + case 4: + if (lbl_1_bss_8C != 0) { + var_r30->unk_04 = 0; + object->trans.y = 5.0f; + object->trans.z = -497.5f; + object->rot.x = -120.0f; + for (var_r29 = 0; var_r29 < 7; var_r29++) { + fn_1_7A74(object->model[var_r29]); + } + fn_1_6FC4(object); + } + break; + } + } + PSMTXTrans(sp8, object->trans.x, object->trans.y, object->trans.z); + mtxRot(sp38, object->rot.x, object->rot.y, object->rot.z); + PSMTXConcat(sp8, sp38, sp8); + for (var_r28 = 0; var_r28 < 6; var_r28++) { + PSMTXTrans(sp38, lbl_1_data_A88[var_r28].x, lbl_1_data_A88[var_r28].y, lbl_1_data_A88[var_r28].z); + PSMTXConcat(sp8, sp38, sp38); + Hu3DModelPosSet(object->model[var_r28 + 1], sp38[0][3], sp38[1][3], sp38[2][3]); + Hu3DModelRotSet(object->model[var_r28 + 1], object->rot.x, object->rot.y, object->rot.z); + } +} + +void fn_1_7978(void) +{ + s32 var_r31; + omObjData *var_r30; + M453MapUnkStruct *var_r29; + s32 var_r28; + + for (var_r31 = 0; var_r31 < 5; var_r31++) { + var_r30 = lbl_1_bss_A4[var_r31]; + var_r29 = var_r30->data; + if (var_r29 != NULL) { + for (var_r28 = 0; var_r28 < 0xC; var_r28++) { + if (var_r29->unk_24[var_r28] >= 0) { + Hu3DModelKill(var_r29->unk_24[var_r28]); + } + } + HuMemDirectFree(var_r29); + lbl_1_bss_A4[var_r31]->data = NULL; + } + for (var_r31 = 0; var_r31 < var_r30->mdlcnt; var_r31++) { + var_r30->model[var_r31] = -1; + } + } +} + +void fn_1_7A74(s16 arg0) +{ + HsfData *var_r31; + HsfObject *var_r30; + s16 var_r29; + HsfObject *var_r28; + HsfConstData *var_r27; + + var_r31 = Hu3DData[arg0].hsfData; + for (var_r28 = var_r31->object, var_r29 = 0; var_r29 < var_r31->objectCnt; var_r29++, var_r28++) { + var_r30 = var_r28; + if (var_r30->constData) { + var_r27 = var_r30->constData; + var_r27->flags &= 0xFFFFFFF7; + } + } +} + +s32 fn_1_7AFC(float arg8, float arg9) +{ + s32 var_r31; + s32 var_r30; + + var_r31 = (600.0f + arg8) / 400.0f; + var_r30 = (400.0f + arg9) / 400.0f; + if (var_r31 < 0) { + var_r31 = 0; + } + else if (var_r31 > 2) { + var_r31 = 2; + } + if (var_r30 < 0) { + var_r30 = 0; + } + else if (var_r30 > 1) { + var_r30 = 1; + } + return var_r31 + (var_r30 * 3); +} + +void fn_1_7BB0(s32 arg0, Vec *arg1) +{ + arg1->x = lbl_1_data_A88[arg0].x; + arg1->y = lbl_1_data_A88[arg0].y; + arg1->z = lbl_1_data_A88[arg0].z; +} + +s32 fn_1_7BFC(M453MapUnkStruct *arg0, s32 arg1) +{ + return arg0->unk_0C[arg1]; +} + +void fn_1_7C0C(float arg8) +{ + lbl_1_bss_94 = 1; + lbl_1_bss_88 = arg8; +} + +void fn_1_7C2C(s32 arg0) +{ + lbl_1_bss_7C = arg0; +} + +void fn_1_7C3C(void) +{ + float var_f31; + float var_f30; + + lbl_1_bss_84 = 1; + if (lbl_1_bss_80 == 0) { + var_f31 = 1.6666666f; + } + else { + var_f31 = -1.6666666f; + } + var_f30 = var_f31; + Hu3DMotionSpeedSet(lbl_1_bss_B8->model[2], var_f30); + HuAudFXPlay(0x524); +} + +s32 fn_1_7CE0(float arg8, float arg9, Vec *arg0) +{ + Mtx sp4C; + Mtx sp1C; + Vec sp10; + + omObjData *var_r31; + Vec *var_r30; + s32 var_r28; + s32 var_r27; + s32 var_r24; + s32 var_r23; + M453MapUnkStruct *var_r22; + + var_r31 = lbl_1_bss_A4[lbl_1_bss_9C]; + var_r22 = var_r31->data; + var_r27 = fn_1_7AFC(arg8, arg9); + var_r28 = fn_1_7BFC(var_r22, var_r27); + if (var_r28 < 6) { + return 0; + } + var_r28 -= 6; + fn_1_7BB0(var_r27, &sp10); + sp10 = lbl_1_data_A88[var_r27]; + PSMTXTrans(sp4C, var_r31->trans.x, var_r31->trans.y, var_r31->trans.z); + mtxRot(sp1C, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z); + PSMTXConcat(sp4C, sp1C, sp4C); + PSMTXTrans(sp1C, sp10.x, sp10.y, sp10.z); + PSMTXConcat(sp4C, sp1C, sp4C); + var_r30 = lbl_1_data_AFC[var_r28]; + var_r23 = lbl_1_data_B14[var_r28]; + for (var_r24 = 0; var_r24 < var_r23; var_r24++) { + PSMTXTrans(sp1C, var_r30->x, var_r30->y, var_r30->z); + PSMTXConcat(sp4C, sp1C, sp1C); + arg0->x = sp1C[0][3]; + arg0->y = sp1C[1][3]; + arg0->z = sp1C[2][3]; + arg0++; + var_r30++; + } + return var_r23; +} + +float fn_1_7F54(float arg8, float arg9) +{ + float var_f31; + + omObjData *var_r31 = lbl_1_bss_A4[lbl_1_bss_9C]; + float var_f30 = -(arg9 - var_r31->trans.z); + if (cosd(var_r31->rot.x) <= 0.0) { + var_f31 = 9999.0f; + } + else { + var_f31 = (var_f30 * sind(var_r31->rot.x)) / cosd(var_r31->rot.x); + if (var_f31 > 9999.0f) { + var_f31 = 9999.0f; + } + } + return var_f31; +} + +float fn_1_80B0(Vec *arg0, float arg8) +{ + return fn_1_7F54(0.0f, arg0->z - arg8); +} + +s32 fn_1_8230(void) +{ + return lbl_1_bss_84; +} + +s32 fn_1_8240(void) +{ + return lbl_1_bss_90; +} + +s32 fn_1_8250(M453MapUnkStruct *arg0, s32 *arg1) +{ + s32 var_r31; + s32 var_r30; + + var_r30 = 0; + for (var_r31 = 0; var_r31 < 6; var_r31++) { + if (arg0->unk_0C[var_r31] >= 6) { + arg1[var_r30++] = var_r31; + } + } + return var_r30; +} + +s32 fn_1_82AC(Vec *arg0) +{ + s32 sp8[6]; + + omObjData *var_r31; + s32 var_r30; + M453MapUnkStruct *var_r28; + s32 var_r27; + s32 var_r24; + + var_r31 = lbl_1_bss_A4[lbl_1_bss_9C]; + var_r28 = var_r31->data; + var_r24 = fn_1_8250(var_r28, sp8); + for (var_r30 = 0; var_r30 < var_r24; var_r30++) { + fn_1_7BB0(sp8[var_r30], arg0); + var_r27 = fn_1_7BFC(var_r28, sp8[var_r30]) - 6; + arg0->x += var_r31->trans.x + lbl_1_data_B2C[var_r27].x; + arg0->y += var_r31->trans.y + lbl_1_data_B2C[var_r27].y; + arg0->z += var_r31->trans.z + lbl_1_data_B2C[var_r27].z; + arg0++; + } + return var_r24; +} + +s32 fn_1_844C(Vec *arg0) +{ + Mtx sp50; + Mtx sp20; + s32 sp8[6]; + + omObjData *var_r30; + s32 var_r29; + M453MapUnkStruct *var_r27; + s32 var_r26; + s32 var_r23; + + var_r30 = lbl_1_bss_A4[lbl_1_bss_9C]; + var_r27 = var_r30->data; + var_r23 = fn_1_8250(var_r27, sp8); + PSMTXTrans(sp50, var_r30->trans.x, var_r30->trans.y, var_r30->trans.z); + mtxRot(sp20, var_r30->rot.x, var_r30->rot.y, var_r30->rot.z); + PSMTXConcat(sp50, sp20, sp50); + for (var_r29 = 0; var_r29 < var_r23; var_r29++) { + fn_1_7BB0(sp8[var_r29], arg0); + var_r26 = fn_1_7BFC(var_r27, sp8[var_r29]) - 6; + arg0->x += lbl_1_data_B2C[var_r26].x; + arg0->y += lbl_1_data_B2C[var_r26].y; + arg0->z += lbl_1_data_B2C[var_r26].z; + PSMTXTrans(sp20, arg0->x, arg0->y, arg0->z); + PSMTXConcat(sp50, sp20, sp20); + arg0->x = sp20[0][3]; + arg0->y = sp20[1][3]; + arg0->z = sp20[2][3]; + arg0++; + } + return var_r23; +} + +void fn_1_864C(s32 arg0) +{ + if (arg0 > lbl_1_bss_7C) { + arg0 = lbl_1_bss_7C; + } + lbl_1_bss_78 = arg0; +} + +s32 fn_1_867C(Vec *arg0, Vec *arg1) +{ + Vec sp48; + Vec sp3C; + Vec sp30; + Vec sp24; + Vec sp18; + Vec spC; + + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + float var_f24; + + s32 var_r31; + Vec *var_r30; + Vec *var_r29; + omObjData *var_r28; + s32 var_r27; + s32 var_r24; + s32 var_r21; + s32 var_r20; + s32 var_r19; + M453MapUnkStruct *var_r18; + + var_r28 = lbl_1_bss_A4[lbl_1_bss_9C]; + var_r18 = var_r28->data; + if ((var_r28->rot.x > 0.0f) || (var_r28->rot.x <= -90.0f)) { + return 0; + } + PSVECSubtract(arg0, &var_r28->trans, &sp3C); + sp3C.z = sp3C.z / cosd(var_r28->rot.x); + var_f24 = arg0->z; + var_f25 = arg0->x; + var_r19 = fn_1_7AFC(var_f25, var_f24); + var_r24 = fn_1_7BFC(var_r18, var_r19); + if (var_r24 < 6) { + return 0; + } + var_r24 -= 6; + sp48 = lbl_1_data_A88[var_r19]; + PSVECSubtract(&sp3C, &sp48, &sp3C); + var_r30 = lbl_1_data_B74[var_r24][0]; + var_r29 = lbl_1_data_B74[var_r24][1]; + var_r21 = lbl_1_data_BA4[var_r24]; + for (var_r31 = 0; var_r31 < var_r21; var_r31++) { + var_r27 = (var_r31 + 1) % var_r21; + PSVECSubtract(var_r30 + var_r27, var_r30 + var_r31, &sp24); + PSVECSubtract(&sp3C, var_r30 + var_r27, &sp18); + PSVECCrossProduct(&sp24, &sp18, &spC); + if (!(spC.y < 0.0f)) { + PSVECSubtract(var_r29 + var_r27, var_r30 + var_r27, &sp24); + PSVECSubtract(&sp3C, var_r29 + var_r27, &sp18); + PSVECCrossProduct(&sp24, &sp18, &spC); + if (!(spC.y < 0.0f)) { + PSVECSubtract(var_r29 + var_r31, var_r29 + var_r27, &sp24); + PSVECSubtract(&sp3C, var_r29 + var_r31, &sp18); + PSVECCrossProduct(&sp24, &sp18, &spC); + if (!(spC.y < 0.0f)) { + PSVECSubtract(var_r30 + var_r31, var_r29 + var_r31, &sp24); + PSVECSubtract(&sp3C, var_r30 + var_r31, &sp18); + PSVECCrossProduct(&sp24, &sp18, &spC); + if (!(spC.y < 0.0f)) { + PSVECSubtract(var_r30 + var_r27, var_r30 + var_r31, &sp24); + var_f30 = (((sp3C.z * sp24.z) + + (((sp3C.y * sp24.y) + ((sp3C.x * sp24.x) - (sp24.x * var_r30[var_r31].x))) - (sp24.y * var_r30[var_r31].y))) + - (sp24.z * var_r30[var_r31].z)) + / ((sp24.z * sp24.z) + ((sp24.x * sp24.x) + (sp24.y * sp24.y))); + sp30.x = var_r30[var_r31].x + (var_f30 * sp24.x); + sp30.y = var_r30[var_r31].y + (var_f30 * sp24.y); + sp30.z = var_r30[var_r31].z + (var_f30 * sp24.z); + PSVECSubtract(&sp30, &sp3C, &spC); + var_f28 = PSVECMag(&spC); + PSVECSubtract(var_r29 + var_r27, var_r29 + var_r31, &sp18); + var_f29 = (((sp3C.z * sp18.z) + + (((sp3C.y * sp18.y) + ((sp3C.x * sp18.x) - (sp18.x * var_r29[var_r31].x))) - (sp18.y * var_r29[var_r31].y))) + - (sp18.z * var_r29[var_r31].z)) + / ((sp18.z * sp18.z) + ((sp18.x * sp18.x) + (sp18.y * sp18.y))); + sp30.x = var_r29[var_r31].x + (var_f29 * sp18.x); + sp30.y = var_r29[var_r31].y + (var_f29 * sp18.y); + sp30.z = var_r29[var_r31].z + (var_f29 * sp18.z); + PSVECSubtract(&sp30, &sp3C, &spC); + var_f27 = PSVECMag(&spC); + if (var_f28 == 0.0f) { + var_f31 = var_f30; + } + else if (var_f27 == 0.0f) { + var_f31 = var_f29; + } + else { + var_f26 = 1.0f - (var_f28 / (var_f28 + var_f27)); + var_f31 = (var_f30 * var_f26) + (var_f29 * (1.0f - var_f26)); + } + if (var_f31 < 0.0f) { + var_f31 = 0.0f; + } + else if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + sp3C.x = var_r29[var_r31].x + (var_f31 * sp18.x); + sp3C.y = var_r29[var_r31].y + (var_f31 * sp18.y); + sp3C.z = var_r29[var_r31].z + (var_f31 * sp18.z); + arg1->x = sp3C.x + (var_r28->trans.x + sp48.x); + arg1->y = sp3C.y + (var_r28->trans.y + sp48.y); + arg1->z = var_r28->trans.z + ((sp48.z + sp3C.z) * cosd(var_r28->rot.x)); + return 1; + } + } + } + } + } + var_r20 = 0; + for (var_r31 = 0; var_r31 < var_r21; var_r31++) { + var_r27 = (var_r31 + 1) % var_r21; + var_f31 = (sp3C.z - var_r30[var_r31].z) / (var_r30[var_r27].z - var_r30[var_r31].z); + spC.x = var_r30[var_r31].x + (var_f31 * (var_r30[var_r27].x - var_r30[var_r31].x)); + if ((var_f31 >= 0.0f) && (var_f31 < 1.0f) && (spC.x > sp3C.x)) { + var_r20++; + } + } + if ((var_r20 & 1) != 0) { + arg1->x = arg0->x; + arg1->y = arg0->y; + arg1->z = arg0->z; + return 1; + } + return 0; +} diff --git a/src/REL/m453Dll/score.c b/src/REL/m453Dll/score.c new file mode 100644 index 00000000..a588ca07 --- /dev/null +++ b/src/REL/m453Dll/score.c @@ -0,0 +1,188 @@ +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/esprite.h" +#include "game/flag.h" +#include "game/frand.h" +#include "game/gamework.h" +#include "game/hsfanim.h" +#include "game/hsfman.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "game/wipe.h" + +#include "REL/m453Dll.h" + +typedef struct M453ScoreUnkStruct { + s32 unk_00; + s32 unk_04; + s16 unk_08; + s16 unk_0A; + s16 unk_0C[4]; + s16 unk_14; + s16 unk_16; + s32 unk_18; + float unk_1C; +} M453ScoreUnkStruct; /* size = 0x20 */ + +typedef void (*M453ScoreUnkFunc)(void); + +void fn_1_92C0(s32 arg0); +void fn_1_92F0(omObjData *object); +void fn_1_940C(void); +void fn_1_9484(void); +void fn_1_9510(void); + +M453ScoreUnkFunc lbl_1_data_BC0[3] = { fn_1_940C, fn_1_9484, fn_1_9510 }; + +Process *lbl_1_bss_C4; +omObjData *lbl_1_bss_C0; + +void fn_1_8F48(Process *arg0, s16 arg1) +{ + M453ScoreUnkStruct *var_r31; + u32 var_r30; + + lbl_1_bss_C4 = arg0; + lbl_1_bss_C0 = omAddObjEx(lbl_1_bss_C4, 0x800, 0, 0, 7, fn_1_92F0); + lbl_1_bss_C0->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M453ScoreUnkStruct), MEMORY_DEFAULT_NUM); + var_r31 = lbl_1_bss_C0->data; + var_r31->unk_08 = arg1; + var_r31->unk_0A = 0; + var_r31->unk_14 = espEntry(0x530000, 2, 0); + espTPLvlSet(var_r31->unk_14, 0.5f); + espPosSet(var_r31->unk_14, 520.0f, 64.0f); + espColorSet(var_r31->unk_14, 0, 0, 0); + var_r31->unk_16 = espEntry(0x610037, 1, 0); + espPosSet(var_r31->unk_16, 501.0f, 55.0f); + for (var_r30 = 0; var_r30 < 2; var_r30++) { + var_r31->unk_0C[var_r30] = espEntry(0x610030, 0, 0); + espPosSet(var_r31->unk_0C[var_r30], (var_r30 * 0x12) + 0x20A, 56.0f); + espDispOff(var_r31->unk_0C[var_r30]); + } + for (var_r30 = 0; var_r30 < 2; var_r30++) { + var_r31->unk_0C[var_r30 + 2] = espEntry(0x610031, 1, 0); + espPosSet(var_r31->unk_0C[var_r30 + 2], (var_r30 * 0x12) + 0x20A, 72.0f); + } + for (var_r30 = 0; var_r30 < 6; var_r30++) { + espDispOff(var_r31->unk_0C[var_r30]); + } + HuDataDirClose(0x530000); + HuDataDirClose(0x610000); + fn_1_92C0(0); +} + +void fn_1_91D8(void) +{ + s32 var_r31; + M453ScoreUnkStruct *var_r30 = lbl_1_bss_C0->data; + + for (var_r31 = 0; var_r31 < 7; var_r31++) { + espKill(var_r30->unk_0C[var_r31]); + } + HuMemDirectFree(lbl_1_bss_C0->data); +} + +void fn_1_924C(s32 arg0) +{ + switch (arg0) { + case 0: + fn_1_92C0(1); + break; + case 1: + fn_1_92C0(2); + break; + } +} + +void fn_1_929C(void) +{ + fn_1_92C0(0); +} + +void fn_1_92C0(s32 arg0) +{ + M453ScoreUnkStruct *var_r31 = lbl_1_bss_C0->data; + + var_r31->unk_00 = arg0; + var_r31->unk_04 = 0; +} + +void fn_1_92F0(omObjData *arg0) +{ + s16 var_r30; + + M453ScoreUnkStruct *var_r31 = lbl_1_bss_C0->data; + + lbl_1_data_BC0[var_r31->unk_00](); + var_r30 = var_r31->unk_08; + espBankSet(var_r31->unk_0C[0], var_r30 / 10); + var_r30 -= (var_r30 / 10) * 10; + espBankSet(var_r31->unk_0C[1], var_r30); + var_r30 = var_r31->unk_0A; + espBankSet(var_r31->unk_0C[2], var_r30 / 10); + var_r30 -= (var_r30 / 10) * 10; + espBankSet(var_r31->unk_0C[3], var_r30); +} + +void fn_1_940C(void) +{ + s32 var_r30; + + M453ScoreUnkStruct *var_r31 = lbl_1_bss_C0->data; + if (var_r31->unk_04 == 0) { + for (var_r30 = 0; var_r30 < 6; var_r30++) { + espDispOff(var_r31->unk_0C[var_r30]); + } + var_r31->unk_04 = var_r31->unk_04 + 1; + } +} + +void fn_1_9484(void) +{ + s16 var_r30; + M453ScoreUnkStruct *var_r31 = lbl_1_bss_C0->data; + + if (var_r31->unk_04 == 0) { + for (var_r30 = 0; var_r30 < 6; var_r30++) { + espDispOn(var_r31->unk_0C[var_r30]); + } + var_r31->unk_04 = var_r31->unk_04 + 1; + } + var_r31->unk_0A = fn_1_639C(); +} + +void fn_1_9510(void) +{ + s32 var_r30; + M453ScoreUnkStruct *var_r31 = lbl_1_bss_C0->data; + + if (var_r31->unk_04 == 0) { + var_r31->unk_18 = 0; + var_r31->unk_1C = 1.0f; + if (var_r31->unk_0A > var_r31->unk_08) { + var_r31->unk_08 = var_r31->unk_0A; + } + var_r31->unk_04 = var_r31->unk_04 + 1; + } + if (var_r31->unk_18 == 0) { + if ((var_r31->unk_1C += 0.02f) >= 1.2f) { + var_r31->unk_1C = 1.2f; + var_r31->unk_18 = 1; + } + } + else { + if ((var_r31->unk_1C -= 0.04f) <= 1.0f) { + var_r31->unk_1C = 1.0f; + var_r31->unk_18 = 0; + } + } + for (var_r30 = 0; var_r30 <= 1; var_r30++) { + espScaleSet(var_r31->unk_0C[var_r30], var_r31->unk_1C, var_r31->unk_1C); + } + espScaleSet(var_r31->unk_16, var_r31->unk_1C, var_r31->unk_1C); +}