diff --git a/config/GMPE01_00/rels/E3setupDLL/symbols.txt b/config/GMPE01_00/rels/E3setupDLL/symbols.txt index 2fe290d7..aabb4f0e 100644 --- a/config/GMPE01_00/rels/E3setupDLL/symbols.txt +++ b/config/GMPE01_00/rels/E3setupDLL/symbols.txt @@ -42,35 +42,36 @@ InitCamera = .text:0x000056A8; // type:function size:0x7C scope:local UpdateCamera = .text:0x00005724; // type:function size:0x12C scope:local _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_2_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_2_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_2_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_2_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_2_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_2_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_2_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_2_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_2_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_2_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_2_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_2_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_2_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_2_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_2_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_2_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_2_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_2_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_2_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_2_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_2_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_2_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_2_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_2_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_2_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_2_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_2_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_2_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_2_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:float +lbl_2_rodata_0 = .rodata:0x00000000; // type:object size:0x10 +lbl_2_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_2_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_2_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_2_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_2_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_2_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_2_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_2_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_2_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_2_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_2_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_2_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_2_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_2_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_2_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_2_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_2_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_2_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_2_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:float lbl_2_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float lbl_2_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float lbl_2_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float @@ -112,29 +113,29 @@ lbl_2_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data: lbl_2_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float lbl_2_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float lbl_2_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float -lbl_2_data_0 = .data:0x00000000; // type:object size:0x24 -lbl_2_data_24 = .data:0x00000024; // type:object size:0x11 data:string +lbl_2_data_0 = .data:0x00000000; // type:object size:0x24 data:float +lbl_2_data_24 = .data:0x00000024; // type:object size:0x11 scope:local data:string lbl_2_data_36 = .data:0x00000036; // type:object size:0x8 mgOvlTbl = .data:0x0000003E; // type:object size:0x1A scope:local mgIdTbl = .data:0x00000058; // type:object size:0x1C scope:local mgNameTbl = .data:0x00000074; // type:object size:0x34 scope:local -lbl_2_data_A8 = .data:0x000000A8; // type:object size:0x21 -lbl_2_data_C9 = .data:0x000000C9; // type:object size:0x16 -lbl_2_data_DF = .data:0x000000DF; // type:object size:0x16 -lbl_2_data_F5 = .data:0x000000F5; // type:object size:0x16 -lbl_2_data_10B = .data:0x0000010B; // type:object size:0xD -lbl_2_data_118 = .data:0x00000118; // type:object size:0x16 -lbl_2_data_12E = .data:0x0000012E; // type:object size:0xD -lbl_2_data_13B = .data:0x0000013B; // type:object size:0x16 -lbl_2_data_151 = .data:0x00000151; // type:object size:0x16 -lbl_2_data_167 = .data:0x00000167; // type:object size:0x16 -lbl_2_data_17D = .data:0x0000017D; // type:object size:0x16 -lbl_2_data_193 = .data:0x00000193; // type:object size:0x16 -lbl_2_data_1A9 = .data:0x000001A9; // type:object size:0x17 +lbl_2_data_A8 = .data:0x000000A8; // type:object size:0x21 data:string +lbl_2_data_C9 = .data:0x000000C9; // type:object size:0x16 data:string +lbl_2_data_DF = .data:0x000000DF; // type:object size:0x16 data:string +lbl_2_data_F5 = .data:0x000000F5; // type:object size:0x16 data:string +lbl_2_data_10B = .data:0x0000010B; // type:object size:0xD data:string +lbl_2_data_118 = .data:0x00000118; // type:object size:0x16 data:string +lbl_2_data_12E = .data:0x0000012E; // type:object size:0xD data:string +lbl_2_data_13B = .data:0x0000013B; // type:object size:0x16 data:string +lbl_2_data_151 = .data:0x00000151; // type:object size:0x16 data:string +lbl_2_data_167 = .data:0x00000167; // type:object size:0x16 data:string +lbl_2_data_17D = .data:0x0000017D; // type:object size:0x16 data:string +lbl_2_data_193 = .data:0x00000193; // type:object size:0x16 data:string +lbl_2_data_1A9 = .data:0x000001A9; // type:object size:0x17 data:string mgNameTestTbl = .data:0x000001C0; // type:object size:0x34 scope:local -cursorYOfsTbl = .data:0x000001F4; // type:object size:0x14 scope:local +cursorYOfsTbl = .data:0x000001F4; // type:object size:0x14 scope:local data:float mgPicTbl = .data:0x00000208; // type:object size:0x34 scope:local -startText = .data:0x0000023C; // type:object size:0x14 scope:local +startText = .data:0x0000023C; // type:object size:0x14 scope:local data:string shadowPos = .data:0x00000250; // type:object size:0xC scope:local shadowTarget = .data:0x0000025C; // type:object size:0xC scope:local shadowUp = .data:0x00000268; // type:object size:0xC scope:local @@ -158,13 +159,15 @@ camViewTbl = .data:0x00000418; // type:object size:0x60 scope:local data:float lbl_2_data_478 = .data:0x00000478; // type:object size:0x24 data:float lbl_2_data_49C = .data:0x0000049C; // type:object size:0x24 data:float lbl_2_data_4C0 = .data:0x000004C0; // type:object size:0x10 +lbl_2_bss_0 = .bss:0x00000000; // type:object size:0xA data:2byte lbl_2_bss_A = .bss:0x0000000A; // type:object size:0x2 data:2byte lbl_2_bss_C = .bss:0x0000000C; // type:object size:0x2 data:2byte +lbl_2_bss_E = .bss:0x0000000E; // type:object size:0x2 data:2byte lbl_2_bss_10 = .bss:0x00000010; // type:object size:0x2 data:2byte lbl_2_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte mgPicObj = .bss:0x00000018; // type:object size:0x4 scope:local data:4byte mgSelectObj = .bss:0x0000001C; // type:object size:0x4 scope:local data:4byte -mgInterface = .bss:0x00000020; // type:object size:0x4 scope:local data:4byte +mgInterfaceObj = .bss:0x00000020; // type:object size:0x4 scope:local data:4byte mgDefault = .bss:0x00000024; // type:object size:0x2 scope:local data:2byte repBtn = .bss:0x00000028; // type:object size:0x2 scope:local data:2byte lbl_2_bss_2A = .bss:0x0000002A; // type:object size:0xA data:2byte diff --git a/config/GMPE01_00/rels/m401Dll/symbols.txt b/config/GMPE01_00/rels/m401Dll/symbols.txt index d997bf79..0b63df81 100644 --- a/config/GMPE01_00/rels/m401Dll/symbols.txt +++ b/config/GMPE01_00/rels/m401Dll/symbols.txt @@ -120,224 +120,224 @@ fn_2_14738 = .text:0x00014738; // type:function size:0x7C fn_2_147B4 = .text:0x000147B4; // type:function size:0x660 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_2_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_2_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_2_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_2_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_2_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_2_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_2_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_2_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_2_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_2_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_2_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_2_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_2_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_2_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_2_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_2_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_2_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_2_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double -lbl_2_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_2_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_2_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_2_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_2_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_2_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_2_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_2_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_2_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_2_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_2_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_2_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_2_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_2_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_2_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_2_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_2_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_2_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_2_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_2_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float -lbl_2_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_2_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float -lbl_2_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_2_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_2_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_2_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_2_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_2_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_2_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_2_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_2_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_2_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float -lbl_2_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float -lbl_2_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float -lbl_2_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float -lbl_2_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_2_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 data:double -lbl_2_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_2_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_2_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_2_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_2_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_2_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_2_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_2_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_2_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_2_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_2_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_2_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float -lbl_2_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_2_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_2_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_2_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_2_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_2_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_2_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_2_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float -lbl_2_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float -lbl_2_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float -lbl_2_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float -lbl_2_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float -lbl_2_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_2_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_2_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_2_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_2_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double -lbl_2_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double -lbl_2_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double -lbl_2_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_2_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_2_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_2_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float -lbl_2_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_2_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_2_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_2_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_2_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_2_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_2_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_2_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_2_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_2_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float -lbl_2_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 data:double -lbl_2_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 data:double -lbl_2_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float -lbl_2_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float -lbl_2_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 data:double -lbl_2_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_2_rodata_1DC = .rodata:0x000001DC; // type:object size:0x10 data:4byte -lbl_2_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float -lbl_2_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float -lbl_2_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float -lbl_2_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float -lbl_2_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float -lbl_2_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_2_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_2_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double -lbl_2_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float -lbl_2_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float -lbl_2_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float -lbl_2_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float -lbl_2_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_2_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float -lbl_2_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_2_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_2_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double -lbl_2_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double -lbl_2_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double -lbl_2_rodata_248 = .rodata:0x00000248; // type:object size:0x8 data:double -lbl_2_rodata_250 = .rodata:0x00000250; // type:object size:0x8 data:double -lbl_2_rodata_258 = .rodata:0x00000258; // type:object size:0x8 data:double -lbl_2_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float -lbl_2_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float -lbl_2_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float -lbl_2_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float -lbl_2_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_2_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float -lbl_2_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float -lbl_2_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float -lbl_2_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float -lbl_2_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float -lbl_2_rodata_288 = .rodata:0x00000288; // type:object size:0x8 data:double -lbl_2_rodata_290 = .rodata:0x00000290; // type:object size:0x40 data:2byte -lbl_2_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 data:2byte -lbl_2_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x8 data:2byte -lbl_2_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 data:2byte -lbl_2_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float -lbl_2_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float -lbl_2_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float -lbl_2_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float -lbl_2_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float -lbl_2_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float -lbl_2_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float -lbl_2_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float -lbl_2_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float -lbl_2_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 data:float -lbl_2_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float -lbl_2_rodata_314 = .rodata:0x00000314; // type:object size:0x4 data:float -lbl_2_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float -lbl_2_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 data:float -lbl_2_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float -lbl_2_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float -lbl_2_rodata_328 = .rodata:0x00000328; // type:object size:0x8 data:double -lbl_2_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float -lbl_2_rodata_338 = .rodata:0x00000338; // type:object size:0x8 data:double -lbl_2_rodata_340 = .rodata:0x00000340; // type:object size:0x8 data:double -lbl_2_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float -lbl_2_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float -lbl_2_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float -lbl_2_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float -lbl_2_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_2_rodata_360 = .rodata:0x00000360; // type:object size:0x8 data:double -lbl_2_rodata_368 = .rodata:0x00000368; // type:object size:0x8 data:double -lbl_2_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float -lbl_2_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float -lbl_2_rodata_378 = .rodata:0x00000378; // type:object size:0x8 data:double -lbl_2_rodata_380 = .rodata:0x00000380; // type:object size:0x4 data:float -lbl_2_rodata_384 = .rodata:0x00000384; // type:object size:0x4 data:float -lbl_2_rodata_388 = .rodata:0x00000388; // type:object size:0x4 data:float -lbl_2_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float -lbl_2_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float -lbl_2_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_2_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float -lbl_2_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 data:double -lbl_2_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float -lbl_2_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float -lbl_2_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_2_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float -lbl_2_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float -lbl_2_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_2_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float -lbl_2_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float -lbl_2_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float -lbl_2_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 data:float -lbl_2_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:float -lbl_2_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float -lbl_2_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float -lbl_2_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 data:float -lbl_2_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float -lbl_2_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 data:float -lbl_2_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float -lbl_2_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 data:float -lbl_2_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float -lbl_2_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float -lbl_2_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float -lbl_2_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 data:float -lbl_2_rodata_400 = .rodata:0x00000400; // type:object size:0x4 data:float -lbl_2_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float -lbl_2_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float -lbl_2_rodata_410 = .rodata:0x00000410; // type:object size:0x8 data:double -lbl_2_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float -lbl_2_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float -lbl_2_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float -lbl_2_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float -lbl_2_rodata_428 = .rodata:0x00000428; // type:object size:0x8 data:double -lbl_2_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float -lbl_2_rodata_438 = .rodata:0x00000438; // type:object size:0x8 data:double -lbl_2_rodata_440 = .rodata:0x00000440; // type:object size:0x8 data:double -lbl_2_rodata_448 = .rodata:0x00000448; // type:object size:0x4 data:float -lbl_2_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 data:float +lbl_2_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_2_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_2_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_2_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_2_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_2_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_2_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_2_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_2_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_2_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_2_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_2_rodata_58 = .rodata:0x00000058; // type:object size:0x8 scope:local data:double +lbl_2_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_2_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_2_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_2_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_2_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_2_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_2_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_2_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_2_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_2_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_2_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_2_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_2_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 scope:local data:double +lbl_2_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_2_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_2_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_2_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_2_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_2_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_2_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_2_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_2_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_2_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_2_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_2_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_2_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_2_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_2_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_2_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_2_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_2_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_2_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_2_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_2_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_2_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_2_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_2_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_2_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_2_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_2_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_2_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_2_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_2_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 scope:local data:double +lbl_2_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 scope:local data:double +lbl_2_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 scope:local data:double +lbl_2_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1DC = .rodata:0x000001DC; // type:object size:0x10 scope:local data:4byte +lbl_2_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_2_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_2_rodata_208 = .rodata:0x00000208; // type:object size:0x8 scope:local data:double +lbl_2_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_2_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_2_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_2_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_2_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_2_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_2_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_2_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_2_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_2_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_2_rodata_250 = .rodata:0x00000250; // type:object size:0x8 scope:local data:double +lbl_2_rodata_258 = .rodata:0x00000258; // type:object size:0x8 scope:local data:double +lbl_2_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_2_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_2_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_2_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_2_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_2_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_2_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_2_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_2_rodata_288 = .rodata:0x00000288; // type:object size:0x8 scope:local data:double +lbl_2_rodata_290 = .rodata:0x00000290; // type:object size:0x40 scope:local data:2byte +lbl_2_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 scope:local data:2byte +lbl_2_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x8 scope:local data:2byte +lbl_2_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x8 scope:local data:2byte +lbl_2_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_2_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_2_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_2_rodata_30C = .rodata:0x0000030C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_2_rodata_314 = .rodata:0x00000314; // type:object size:0x4 scope:local data:float +lbl_2_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_2_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_2_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_2_rodata_328 = .rodata:0x00000328; // type:object size:0x8 scope:local data:double +lbl_2_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_2_rodata_338 = .rodata:0x00000338; // type:object size:0x8 scope:local data:double +lbl_2_rodata_340 = .rodata:0x00000340; // type:object size:0x8 scope:local data:double +lbl_2_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_2_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_2_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_2_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_2_rodata_360 = .rodata:0x00000360; // type:object size:0x8 scope:local data:double +lbl_2_rodata_368 = .rodata:0x00000368; // type:object size:0x8 scope:local data:double +lbl_2_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_2_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_2_rodata_378 = .rodata:0x00000378; // type:object size:0x8 scope:local data:double +lbl_2_rodata_380 = .rodata:0x00000380; // type:object size:0x4 scope:local data:float +lbl_2_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_2_rodata_388 = .rodata:0x00000388; // type:object size:0x4 scope:local data:float +lbl_2_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_2_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_2_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 scope:local data:double +lbl_2_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_2_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_2_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_2_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_2_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_2_rodata_410 = .rodata:0x00000410; // type:object size:0x8 scope:local data:double +lbl_2_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_2_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_2_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_2_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_2_rodata_428 = .rodata:0x00000428; // type:object size:0x8 scope:local data:double +lbl_2_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_2_rodata_438 = .rodata:0x00000438; // type:object size:0x8 scope:local data:double +lbl_2_rodata_440 = .rodata:0x00000440; // type:object size:0x8 scope:local data:double +lbl_2_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_2_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float lbl_2_rodata_450 = .rodata:0x00000450; // type:object size:0x4 data:float lbl_2_rodata_454 = .rodata:0x00000454; // type:object size:0x4 data:float lbl_2_rodata_458 = .rodata:0x00000458; // type:object size:0x4 data:float @@ -433,17 +433,17 @@ lbl_2_data_2C = .data:0x0000002C; // type:object size:0x4 lbl_2_data_30 = .data:0x00000030; // type:object size:0xC data:float lbl_2_data_3C = .data:0x0000003C; // type:object size:0xC lbl_2_data_48 = .data:0x00000048; // type:object size:0xC data:float -lbl_2_data_54 = .data:0x00000054; // type:object size:0x1B data:string -lbl_2_data_6F = .data:0x0000006F; // type:object size:0x11 +lbl_2_data_54 = .data:0x00000054; // type:object size:0x1B scope:local data:string +lbl_2_data_6F = .data:0x0000006F; // type:object size:0x11 scope:local lbl_2_data_80 = .data:0x00000080; // type:object size:0x20 lbl_2_data_A0 = .data:0x000000A0; // type:object size:0x14 data:float lbl_2_data_B4 = .data:0x000000B4; // type:object size:0x18 data:float lbl_2_data_CC = .data:0x000000CC; // type:object size:0x28 -lbl_2_data_F4 = .data:0x000000F4; // type:object size:0x9 data:string -lbl_2_data_FD = .data:0x000000FD; // type:object size:0x9 data:string -lbl_2_data_106 = .data:0x00000106; // type:object size:0x9 data:string -lbl_2_data_10F = .data:0x0000010F; // type:object size:0x9 data:string -lbl_2_data_118 = .data:0x00000118; // type:object size:0xC +lbl_2_data_F4 = .data:0x000000F4; // type:object size:0x9 scope:local data:string +lbl_2_data_FD = .data:0x000000FD; // type:object size:0x9 scope:local data:string +lbl_2_data_106 = .data:0x00000106; // type:object size:0x9 scope:local data:string +lbl_2_data_10F = .data:0x0000010F; // type:object size:0x9 scope:local data:string +lbl_2_data_118 = .data:0x00000118; // type:object size:0xC scope:local lbl_2_data_124 = .data:0x00000124; // type:object size:0x14 data:4byte lbl_2_data_138 = .data:0x00000138; // type:object size:0x20 data:4byte lbl_2_data_158 = .data:0x00000158; // type:object size:0x140 @@ -451,13 +451,14 @@ lbl_2_data_298 = .data:0x00000298; // type:object size:0x30 data:float lbl_2_data_2C8 = .data:0x000002C8; // type:object size:0x30 data:float jumptable_2_data_2F8 = .data:0x000002F8; // type:object size:0x30 scope:local lbl_2_data_32C = .data:0x0000032C; // type:object size:0x8 -lbl_2_data_334 = .data:0x00000334; // type:object size:0xF0 +lbl_2_data_334 = .data:0x00000334; // type:object size:0xF0 data:float lbl_2_data_424 = .data:0x00000424; // type:object size:0x8 -lbl_2_data_42C = .data:0x0000042C; // type:object size:0x28 -lbl_2_data_454 = .data:0x00000454; // type:object size:0xC data:string +lbl_2_data_42C = .data:0x0000042C; // type:object size:0x8 +lbl_2_data_434 = .data:0x00000434; // type:object size:0x20 +lbl_2_data_454 = .data:0x00000454; // type:object size:0xC scope:local data:string lbl_2_data_460 = .data:0x00000460; // type:object size:0xC -lbl_2_data_46C = .data:0x0000046C; // type:object size:0x5 data:string -lbl_2_data_471 = .data:0x00000471; // type:object size:0x7 +lbl_2_data_46C = .data:0x0000046C; // type:object size:0x5 scope:local data:string +lbl_2_data_471 = .data:0x00000471; // type:object size:0x7 scope:local jumptable_2_data_478 = .data:0x00000478; // type:object size:0x20 scope:local lbl_2_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte lbl_2_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_00/rels/m402Dll/symbols.txt b/config/GMPE01_00/rels/m402Dll/symbols.txt index 5fa3679a..7976e2db 100644 --- a/config/GMPE01_00/rels/m402Dll/symbols.txt +++ b/config/GMPE01_00/rels/m402Dll/symbols.txt @@ -1,204 +1,204 @@ -fn_1_0 = .text:0x00000000; // type:function size:0x24 -fn_1_24 = .text:0x00000024; // type:function size:0x88 -fn_1_AC = .text:0x000000AC; // type:function size:0xA4 -fn_1_150 = .text:0x00000150; // type:function size:0x24 -fn_1_174 = .text:0x00000174; // type:function size:0x164 -fn_1_2D8 = .text:0x000002D8; // type:function size:0x13C -fn_1_414 = .text:0x00000414; // type:function size:0x58 -fn_1_46C = .text:0x0000046C; // type:function size:0x114 -fn_1_580 = .text:0x00000580; // type:function size:0x218 -fn_1_798 = .text:0x00000798; // type:function size:0x254 -fn_1_9EC = .text:0x000009EC; // type:function size:0x54 -fn_1_A40 = .text:0x00000A40; // type:function size:0x10C -fn_1_B4C = .text:0x00000B4C; // type:function size:0x6A8 -fn_1_11F4 = .text:0x000011F4; // type:function size:0x15C -fn_1_1350 = .text:0x00001350; // type:function size:0x8C -fn_1_13DC = .text:0x000013DC; // type:function size:0x334 -fn_1_1710 = .text:0x00001710; // type:function size:0x350 -fn_1_1A60 = .text:0x00001A60; // type:function size:0x2B8 -fn_1_1D18 = .text:0x00001D18; // type:function size:0x58 -fn_1_1D70 = .text:0x00001D70; // type:function size:0xB0 -fn_1_1E20 = .text:0x00001E20; // type:function size:0x104 -fn_1_1F24 = .text:0x00001F24; // type:function size:0x34 -fn_1_1F58 = .text:0x00001F58; // type:function size:0x6C -fn_1_1FC4 = .text:0x00001FC4; // type:function size:0x3F0 +fn_1_0 = .text:0x00000000; // type:function size:0x24 scope:local +fn_1_24 = .text:0x00000024; // type:function size:0x88 scope:local +fn_1_AC = .text:0x000000AC; // type:function size:0xA4 scope:local +fn_1_150 = .text:0x00000150; // type:function size:0x24 scope:local +fn_1_174 = .text:0x00000174; // type:function size:0x164 scope:local +fn_1_2D8 = .text:0x000002D8; // type:function size:0x13C scope:local +fn_1_414 = .text:0x00000414; // type:function size:0x58 scope:local +fn_1_46C = .text:0x0000046C; // type:function size:0x114 scope:local +fn_1_580 = .text:0x00000580; // type:function size:0x218 scope:local +fn_1_798 = .text:0x00000798; // type:function size:0x254 scope:local +fn_1_9EC = .text:0x000009EC; // type:function size:0x54 scope:local +fn_1_A40 = .text:0x00000A40; // type:function size:0x10C scope:local +fn_1_B4C = .text:0x00000B4C; // type:function size:0x6A8 scope:local +fn_1_11F4 = .text:0x000011F4; // type:function size:0x15C scope:local +fn_1_1350 = .text:0x00001350; // type:function size:0x8C scope:local +fn_1_13DC = .text:0x000013DC; // type:function size:0x334 scope:local +fn_1_1710 = .text:0x00001710; // type:function size:0x350 scope:local +fn_1_1A60 = .text:0x00001A60; // type:function size:0x2B8 scope:local +fn_1_1D18 = .text:0x00001D18; // type:function size:0x58 scope:local +fn_1_1D70 = .text:0x00001D70; // type:function size:0xB0 scope:local +fn_1_1E20 = .text:0x00001E20; // type:function size:0x104 scope:local +fn_1_1F24 = .text:0x00001F24; // type:function size:0x34 scope:local +fn_1_1F58 = .text:0x00001F58; // type:function size:0x6C scope:local +fn_1_1FC4 = .text:0x00001FC4; // type:function size:0x3F0 scope:local _prolog = .text:0x000023B4; // type:function size:0x54 scope:global _epilog = .text:0x00002408; // type:function size:0x4C scope:global -fn_1_2454 = .text:0x00002454; // type:function size:0x2F0 -fn_1_2744 = .text:0x00002744; // type:function size:0x64 -fn_1_27A8 = .text:0x000027A8; // type:function size:0xD8 -fn_1_2880 = .text:0x00002880; // type:function size:0xF0 -fn_1_2970 = .text:0x00002970; // type:function size:0x1C0 -fn_1_2B30 = .text:0x00002B30; // type:function size:0x28C -fn_1_2DBC = .text:0x00002DBC; // type:function size:0x380 -fn_1_313C = .text:0x0000313C; // type:function size:0xC8 -fn_1_3204 = .text:0x00003204; // type:function size:0xF8C -fn_1_4190 = .text:0x00004190; // type:function size:0xF4 -fn_1_4284 = .text:0x00004284; // type:function size:0x154 -fn_1_43D8 = .text:0x000043D8; // type:function size:0x1FF0 -fn_1_63C8 = .text:0x000063C8; // type:function size:0x490 -fn_1_6858 = .text:0x00006858; // type:function size:0x4 -fn_1_685C = .text:0x0000685C; // type:function size:0x258 -fn_1_6AB4 = .text:0x00006AB4; // type:function size:0x3B0 -fn_1_6E64 = .text:0x00006E64; // type:function size:0x1BC -fn_1_7020 = .text:0x00007020; // type:function size:0xC4 -fn_1_70E4 = .text:0x000070E4; // type:function size:0x86C -fn_1_7950 = .text:0x00007950; // type:function size:0x19C -fn_1_7AEC = .text:0x00007AEC; // type:function size:0x25C -fn_1_7D48 = .text:0x00007D48; // type:function size:0x4 -fn_1_7D4C = .text:0x00007D4C; // type:function size:0x134 -fn_1_7E80 = .text:0x00007E80; // type:function size:0x4 -fn_1_7E84 = .text:0x00007E84; // type:function size:0x1C4 -fn_1_8048 = .text:0x00008048; // type:function size:0x1D0 -fn_1_8218 = .text:0x00008218; // type:function size:0xE40 -fn_1_9058 = .text:0x00009058; // type:function size:0x1EC -fn_1_9244 = .text:0x00009244; // type:function size:0x8B0 -fn_1_9AF4 = .text:0x00009AF4; // type:function size:0xD0 +fn_1_2454 = .text:0x00002454; // type:function size:0x2F0 scope:local +fn_1_2744 = .text:0x00002744; // type:function size:0x64 scope:local +fn_1_27A8 = .text:0x000027A8; // type:function size:0xD8 scope:local +fn_1_2880 = .text:0x00002880; // type:function size:0xF0 scope:local +fn_1_2970 = .text:0x00002970; // type:function size:0x1C0 scope:local +fn_1_2B30 = .text:0x00002B30; // type:function size:0x28C scope:local +fn_1_2DBC = .text:0x00002DBC; // type:function size:0x380 scope:local +fn_1_313C = .text:0x0000313C; // type:function size:0xC8 scope:local +fn_1_3204 = .text:0x00003204; // type:function size:0xF8C scope:local +fn_1_4190 = .text:0x00004190; // type:function size:0xF4 scope:local +fn_1_4284 = .text:0x00004284; // type:function size:0x154 scope:local +fn_1_43D8 = .text:0x000043D8; // type:function size:0x1FF0 scope:local +fn_1_63C8 = .text:0x000063C8; // type:function size:0x490 scope:local +fn_1_6858 = .text:0x00006858; // type:function size:0x4 scope:local +fn_1_685C = .text:0x0000685C; // type:function size:0x258 scope:local +fn_1_6AB4 = .text:0x00006AB4; // type:function size:0x3B0 scope:local +fn_1_6E64 = .text:0x00006E64; // type:function size:0x1BC scope:local +fn_1_7020 = .text:0x00007020; // type:function size:0xC4 scope:local +fn_1_70E4 = .text:0x000070E4; // type:function size:0x86C scope:local +fn_1_7950 = .text:0x00007950; // type:function size:0x19C scope:local +fn_1_7AEC = .text:0x00007AEC; // type:function size:0x25C scope:local +fn_1_7D48 = .text:0x00007D48; // type:function size:0x4 scope:local +fn_1_7D4C = .text:0x00007D4C; // type:function size:0x134 scope:local +fn_1_7E80 = .text:0x00007E80; // type:function size:0x4 scope:local +fn_1_7E84 = .text:0x00007E84; // type:function size:0x1C4 scope:local +fn_1_8048 = .text:0x00008048; // type:function size:0x1D0 scope:local +fn_1_8218 = .text:0x00008218; // type:function size:0xE40 scope:local +fn_1_9058 = .text:0x00009058; // type:function size:0x1EC scope:local +ModuleProlog = .text:0x00009244; // type:function size:0x8B0 +fn_1_9AF4 = .text:0x00009AF4; // type:function size:0xD0 scope:local _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:double -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 data:double -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_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:0x8 data:double -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:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_data_0 = .data:0x00000000; // type:object size:0x10 -lbl_1_data_10 = .data:0x00000010; // type:object size:0xC data:4byte -lbl_1_data_1C = .data:0x0000001C; // type:object size:0xC -lbl_1_data_28 = .data:0x00000028; // type:object size:0xC data:4byte -lbl_1_data_34 = .data:0x00000034; // type:object size:0xC -lbl_1_data_40 = .data:0x00000040; // type:object size:0xC -lbl_1_data_4C = .data:0x0000004C; // type:object size:0x14 -lbl_1_data_60 = .data:0x00000060; // type:object size:0xC -lbl_1_data_6C = .data:0x0000006C; // type:object size:0xC -lbl_1_data_78 = .data:0x00000078; // type:object size:0x160 -lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x10 -lbl_1_data_1E8 = .data:0x000001E8; // type:object size:0xC -lbl_1_data_1F4 = .data:0x000001F4; // type:object size:0x4 data:4byte -lbl_1_data_1F8 = .data:0x000001F8; // type:object size:0x8 -lbl_1_data_200 = .data:0x00000200; // type:object size:0x18 -lbl_1_data_218 = .data:0x00000218; // type:object size:0x1C -lbl_1_data_234 = .data:0x00000234; // type:object size:0x190 -lbl_1_data_3C4 = .data:0x000003C4; // type:object size:0x14 -lbl_1_data_3D8 = .data:0x000003D8; // type:object size:0x1A data:string -lbl_1_data_3F2 = .data:0x000003F2; // type:object size:0x9 data:string -lbl_1_data_3FB = .data:0x000003FB; // type:object size:0x6 data:string -lbl_1_data_401 = .data:0x00000401; // type:object size:0x10 data:string -lbl_1_data_411 = .data:0x00000411; // type:object size:0x1F +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 scope:local data:double +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_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:0x8 scope:local data:double +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:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x10 scope:local data:2byte +lbl_1_data_10 = .data:0x00000010; // type:object size:0xC scope:local data:float +lbl_1_data_1C = .data:0x0000001C; // type:object size:0xC scope:local data:float +lbl_1_data_28 = .data:0x00000028; // type:object size:0xC scope:local data:float +lbl_1_data_34 = .data:0x00000034; // type:object size:0xC scope:local data:float +lbl_1_data_40 = .data:0x00000040; // type:object size:0xC scope:local data:float +lbl_1_data_4C = .data:0x0000004C; // type:object size:0x4 scope:local +lbl_1_data_60 = .data:0x00000060; // type:object size:0xC scope:local data:float +lbl_1_data_6C = .data:0x0000006C; // type:object size:0xC scope:local data:float +lbl_1_data_78 = .data:0x00000078; // type:object size:0x160 scope:local +lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x10 scope:local +lbl_1_data_1E8 = .data:0x000001E8; // type:object size:0xC scope:local +lbl_1_data_1F4 = .data:0x000001F4; // type:object size:0x4 scope:local data:4byte +lbl_1_data_1F8 = .data:0x000001F8; // type:object size:0x8 scope:local +lbl_1_data_200 = .data:0x00000200; // type:object size:0x18 scope:local data:float +lbl_1_data_218 = .data:0x00000218; // type:object size:0x1C scope:local +lbl_1_data_234 = .data:0x00000234; // type:object size:0x190 scope:local +lbl_1_data_3C4 = .data:0x000003C4; // type:object size:0x14 scope:local +lbl_1_data_3D8 = .data:0x000003D8; // type:object size:0x1A scope:local data:string +lbl_1_data_3F2 = .data:0x000003F2; // type:object size:0x9 scope:local data:string +lbl_1_data_3FB = .data:0x000003FB; // type:object size:0x6 scope:local data:string +lbl_1_data_401 = .data:0x00000401; // type:object size:0x10 scope:local data:string +lbl_1_data_411 = .data:0x00000411; // type:object size:0x1D scope:local data:string jumptable_1_data_430 = .data:0x00000430; // type:object size:0x40 scope:local -lbl_1_data_470 = .data:0x00000470; // type:object size:0x17 data:string -lbl_1_data_487 = .data:0x00000487; // type:object size:0x1B data:string -lbl_1_data_4A2 = .data:0x000004A2; // type:object size:0x24 data:string -lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:float -lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:float -lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:float -lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte -lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x2 data:2byte -lbl_1_bss_16 = .bss:0x00000016; // type:object size:0xE -lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x2 data:2byte -lbl_1_bss_26 = .bss:0x00000026; // type:object size:0x2 data:2byte -lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:float -lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:float -lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:float -lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:float -lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x8 data:float -lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte -lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte -lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte -lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte -lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte -lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte -lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 data:4byte -lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x100 -lbl_1_bss_15C = .bss:0x0000015C; // type:object size:0x40 data:4byte -lbl_1_bss_19C = .bss:0x0000019C; // type:object size:0x4 data:float -lbl_1_bss_1A0 = .bss:0x000001A0; // type:object size:0x4 data:4byte -lbl_1_bss_1A4 = .bss:0x000001A4; // type:object size:0x4 data:4byte -lbl_1_bss_1A8 = .bss:0x000001A8; // type:object size:0x2 data:2byte -lbl_1_bss_1AA = .bss:0x000001AA; // type:object size:0x2 data:2byte -lbl_1_bss_1AC = .bss:0x000001AC; // type:object size:0x4 data:4byte -lbl_1_bss_1B0 = .bss:0x000001B0; // type:object size:0x4 data:4byte -lbl_1_bss_1B4 = .bss:0x000001B4; // type:object size:0x4 data:4byte -lbl_1_bss_1B8 = .bss:0x000001B8; // type:object size:0xC data:4byte -lbl_1_bss_1C4 = .bss:0x000001C4; // type:object size:0xC data:4byte -lbl_1_bss_1D0 = .bss:0x000001D0; // type:object size:0xC data:4byte -lbl_1_bss_1DC = .bss:0x000001DC; // type:object size:0xC data:4byte -lbl_1_bss_1E8 = .bss:0x000001E8; // type:object size:0x4 data:4byte -lbl_1_bss_1EC = .bss:0x000001EC; // type:object size:0x18 data:4byte -lbl_1_bss_204 = .bss:0x00000204; // type:object size:0xC data:4byte +lbl_1_data_470 = .data:0x00000470; // type:object size:0x17 scope:local data:string +lbl_1_data_487 = .data:0x00000487; // type:object size:0x1B scope:local data:string +lbl_1_data_4A2 = .data:0x000004A2; // type:object size:0x24 scope:local data:string +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 scope:local data:float +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 scope:local data:float +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 scope:local data:float +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_16 = .bss:0x00000016; // type:object size:0xE scope:local +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_26 = .bss:0x00000026; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x100 scope:local +lbl_1_bss_15C = .bss:0x0000015C; // type:object size:0x40 scope:local data:4byte +lbl_1_bss_19C = .bss:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_bss_1A0 = .bss:0x000001A0; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_1A4 = .bss:0x000001A4; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_1A8 = .bss:0x000001A8; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_1AA = .bss:0x000001AA; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_1AC = .bss:0x000001AC; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_1B0 = .bss:0x000001B0; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_1B4 = .bss:0x000001B4; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_1B8 = .bss:0x000001B8; // type:object size:0xC scope:local data:4byte +lbl_1_bss_1C4 = .bss:0x000001C4; // type:object size:0xC scope:local data:4byte +lbl_1_bss_1D0 = .bss:0x000001D0; // type:object size:0xC scope:local data:4byte +lbl_1_bss_1DC = .bss:0x000001DC; // type:object size:0xC scope:local data:4byte +lbl_1_bss_1E8 = .bss:0x000001E8; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_1EC = .bss:0x000001EC; // type:object size:0x18 scope:local data:4byte +lbl_1_bss_204 = .bss:0x00000204; // type:object size:0xC scope:local data:4byte diff --git a/config/GMPE01_00/rels/m403Dll/symbols.txt b/config/GMPE01_00/rels/m403Dll/symbols.txt index 312ab162..d46cc4f0 100644 --- a/config/GMPE01_00/rels/m403Dll/symbols.txt +++ b/config/GMPE01_00/rels/m403Dll/symbols.txt @@ -1,256 +1,256 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global ModuleProlog = .text:0x000000A0; // type:function size:0x384 -fn_1_424 = .text:0x00000424; // type:function size:0x20 -fn_1_444 = .text:0x00000444; // type:function size:0x3E8 -fn_1_82C = .text:0x0000082C; // type:function size:0x9E8 -fn_1_1214 = .text:0x00001214; // type:function size:0x60 -fn_1_1274 = .text:0x00001274; // type:function size:0x1EC -fn_1_1460 = .text:0x00001460; // type:function size:0x278 -fn_1_16D8 = .text:0x000016D8; // type:function size:0x104 -fn_1_17DC = .text:0x000017DC; // type:function size:0x274 -fn_1_1A50 = .text:0x00001A50; // type:function size:0xA0 -fn_1_1AF0 = .text:0x00001AF0; // type:function size:0x2B8 -fn_1_1DA8 = .text:0x00001DA8; // type:function size:0x28 -fn_1_1DD0 = .text:0x00001DD0; // type:function size:0x388 -fn_1_2158 = .text:0x00002158; // type:function size:0x14C -fn_1_22A4 = .text:0x000022A4; // type:function size:0x2F4 -fn_1_2598 = .text:0x00002598; // type:function size:0xA44 -fn_1_2FDC = .text:0x00002FDC; // type:function size:0x824 -fn_1_3800 = .text:0x00003800; // type:function size:0x94 -fn_1_3894 = .text:0x00003894; // type:function size:0x2EC -fn_1_3B80 = .text:0x00003B80; // type:function size:0x1EC -fn_1_3D6C = .text:0x00003D6C; // type:function size:0xE0 -fn_1_3E4C = .text:0x00003E4C; // type:function size:0x1C0 -fn_1_400C = .text:0x0000400C; // type:function size:0x9C -fn_1_40A8 = .text:0x000040A8; // type:function size:0x480 -fn_1_4528 = .text:0x00004528; // type:function size:0x54 -fn_1_457C = .text:0x0000457C; // type:function size:0x168 -fn_1_46E4 = .text:0x000046E4; // type:function size:0x120 -fn_1_4804 = .text:0x00004804; // type:function size:0x30C -fn_1_4B10 = .text:0x00004B10; // type:function size:0x78 -fn_1_4B88 = .text:0x00004B88; // type:function size:0x11C -fn_1_4CA4 = .text:0x00004CA4; // type:function size:0x78 -fn_1_4D1C = .text:0x00004D1C; // type:function size:0x2D8 -fn_1_4FF4 = .text:0x00004FF4; // type:function size:0x2B8 -fn_1_52AC = .text:0x000052AC; // type:function size:0x154 -fn_1_5400 = .text:0x00005400; // type:function size:0x3E0 -fn_1_57E0 = .text:0x000057E0; // type:function size:0x214 -fn_1_59F4 = .text:0x000059F4; // type:function size:0x198 -fn_1_5B8C = .text:0x00005B8C; // type:function size:0xD8 -fn_1_5C64 = .text:0x00005C64; // type:function size:0xBC -fn_1_5D20 = .text:0x00005D20; // type:function size:0x33C -fn_1_605C = .text:0x0000605C; // type:function size:0x4B0 +fn_1_424 = .text:0x00000424; // type:function size:0x20 scope:local +fn_1_444 = .text:0x00000444; // type:function size:0x3E8 scope:local +fn_1_82C = .text:0x0000082C; // type:function size:0x9E8 scope:local +fn_1_1214 = .text:0x00001214; // type:function size:0x60 scope:local +fn_1_1274 = .text:0x00001274; // type:function size:0x1EC scope:local +fn_1_1460 = .text:0x00001460; // type:function size:0x278 scope:local +fn_1_16D8 = .text:0x000016D8; // type:function size:0x104 scope:local +fn_1_17DC = .text:0x000017DC; // type:function size:0x274 scope:local +fn_1_1A50 = .text:0x00001A50; // type:function size:0xA0 scope:local +fn_1_1AF0 = .text:0x00001AF0; // type:function size:0x2B8 scope:local +fn_1_1DA8 = .text:0x00001DA8; // type:function size:0x28 scope:local +fn_1_1DD0 = .text:0x00001DD0; // type:function size:0x388 scope:local +fn_1_2158 = .text:0x00002158; // type:function size:0x14C scope:local +fn_1_22A4 = .text:0x000022A4; // type:function size:0x2F4 scope:local +fn_1_2598 = .text:0x00002598; // type:function size:0xA44 scope:local +fn_1_2FDC = .text:0x00002FDC; // type:function size:0x824 scope:local +fn_1_3800 = .text:0x00003800; // type:function size:0x94 scope:local +fn_1_3894 = .text:0x00003894; // type:function size:0x2EC scope:local +fn_1_3B80 = .text:0x00003B80; // type:function size:0x1EC scope:local +fn_1_3D6C = .text:0x00003D6C; // type:function size:0xE0 scope:local +fn_1_3E4C = .text:0x00003E4C; // type:function size:0x1C0 scope:local +fn_1_400C = .text:0x0000400C; // type:function size:0x9C scope:local +fn_1_40A8 = .text:0x000040A8; // type:function size:0x480 scope:local +fn_1_4528 = .text:0x00004528; // type:function size:0x54 scope:local +fn_1_457C = .text:0x0000457C; // type:function size:0x168 scope:local +fn_1_46E4 = .text:0x000046E4; // type:function size:0x120 scope:local +fn_1_4804 = .text:0x00004804; // type:function size:0x30C scope:local +fn_1_4B10 = .text:0x00004B10; // type:function size:0x78 scope:local +fn_1_4B88 = .text:0x00004B88; // type:function size:0x11C scope:local +fn_1_4CA4 = .text:0x00004CA4; // type:function size:0x78 scope:local +fn_1_4D1C = .text:0x00004D1C; // type:function size:0x2D8 scope:local +fn_1_4FF4 = .text:0x00004FF4; // type:function size:0x2B8 scope:local +fn_1_52AC = .text:0x000052AC; // type:function size:0x154 scope:local +fn_1_5400 = .text:0x00005400; // type:function size:0x3E0 scope:local +fn_1_57E0 = .text:0x000057E0; // type:function size:0x214 scope:local +fn_1_59F4 = .text:0x000059F4; // type:function size:0x198 scope:local +fn_1_5B8C = .text:0x00005B8C; // type:function size:0xD8 scope:local +fn_1_5C64 = .text:0x00005C64; // type:function size:0xBC scope:local +fn_1_5D20 = .text:0x00005D20; // type:function size:0x33C scope:local +fn_1_605C = .text:0x0000605C; // type:function size:0x4B0 scope:local fn_1_650C = .text:0x0000650C; // type:function size:0x260 fn_1_676C = .text:0x0000676C; // type:function size:0x20 -fn_1_678C = .text:0x0000678C; // type:function size:0x84 -fn_1_6810 = .text:0x00006810; // type:function size:0x4 -fn_1_6814 = .text:0x00006814; // type:function size:0x16C -fn_1_6980 = .text:0x00006980; // type:function size:0x318 -fn_1_6C98 = .text:0x00006C98; // type:function size:0x240 -fn_1_6ED8 = .text:0x00006ED8; // type:function size:0x110 -fn_1_6FE8 = .text:0x00006FE8; // type:function size:0x400 -fn_1_73E8 = .text:0x000073E8; // type:function size:0x5B4 -fn_1_799C = .text:0x0000799C; // type:function size:0xFC -fn_1_7A98 = .text:0x00007A98; // type:function size:0x88 -fn_1_7B20 = .text:0x00007B20; // type:function size:0xB4 -fn_1_7BD4 = .text:0x00007BD4; // type:function size:0x4C -fn_1_7C20 = .text:0x00007C20; // type:function size:0x10 +fn_1_678C = .text:0x0000678C; // type:function size:0x84 scope:local +fn_1_6810 = .text:0x00006810; // type:function size:0x4 scope:local +fn_1_6814 = .text:0x00006814; // type:function size:0x16C scope:local +fn_1_6980 = .text:0x00006980; // type:function size:0x318 scope:local +fn_1_6C98 = .text:0x00006C98; // type:function size:0x240 scope:local +fn_1_6ED8 = .text:0x00006ED8; // type:function size:0x110 scope:local +fn_1_6FE8 = .text:0x00006FE8; // type:function size:0x400 scope:local +fn_1_73E8 = .text:0x000073E8; // type:function size:0x5B4 scope:local +fn_1_799C = .text:0x0000799C; // type:function size:0xFC scope:local +fn_1_7A98 = .text:0x00007A98; // type:function size:0x88 scope:local +fn_1_7B20 = .text:0x00007B20; // type:function size:0xB4 scope:local +fn_1_7BD4 = .text:0x00007BD4; // type:function size:0x4C scope:local +fn_1_7C20 = .text:0x00007C20; // type:function size:0x10 scope:local fn_1_7C30 = .text:0x00007C30; // type:function size:0x20 fn_1_7C50 = .text:0x00007C50; // type:function size:0x10 fn_1_7C60 = .text:0x00007C60; // type:function size:0xA4 -fn_1_7D04 = .text:0x00007D04; // type:function size:0x274 +fn_1_7D04 = .text:0x00007D04; // type:function size:0x274 scope:local fn_1_7F78 = .text:0x00007F78; // type:function size:0x15C fn_1_80D4 = .text:0x000080D4; // type:function size:0x180 -fn_1_8254 = .text:0x00008254; // type:function size:0x10 +fn_1_8254 = .text:0x00008254; // type:function size:0x10 scope:local fn_1_8264 = .text:0x00008264; // type:function size:0x10 -fn_1_8274 = .text:0x00008274; // type:function size:0x5C +fn_1_8274 = .text:0x00008274; // type:function size:0x5C scope:local fn_1_82D0 = .text:0x000082D0; // type:function size:0x1A0 fn_1_8470 = .text:0x00008470; // type:function size:0x200 fn_1_8670 = .text:0x00008670; // type:function size:0x30 fn_1_86A0 = .text:0x000086A0; // type:function size:0x8CC _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:0x8 data:double -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x9 data:byte -lbl_1_rodata_A9 = .rodata:0x000000A9; // type:object size:0xB data:byte -lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 data:double -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double -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:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float -lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double -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:0x4 data:float -lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float -lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 data:double -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 data:double -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double -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_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_68 = .data:0x00000068; // type:object size:0x4 data:4byte -lbl_1_data_6C = .data:0x0000006C; // type:object size:0x20 +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:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x9 scope:local data:byte +lbl_1_rodata_A9 = .rodata:0x000000A9; // type:object size:0x9 scope:local data:byte +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x8 scope:local data:double +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size: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:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 scope:local data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x8 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 scope:local data:double +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:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x8 scope:local data:double +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 scope:local data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 scope:local data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +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_data_0 = .data:0x00000000; // type:object size:0x2 scope:local data:2byte +lbl_1_data_4 = .data:0x00000004; // type:object size:0xC scope:local data:float +lbl_1_data_10 = .data:0x00000010; // type:object size:0xC scope:local data:float +lbl_1_data_1C = .data:0x0000001C; // type:object size:0x4 scope:local +lbl_1_data_44 = .data:0x00000044; // type:object size:0x23 scope:local data:string +lbl_1_data_68 = .data:0x00000068; // type:object size:0x4 scope:local data:4byte +lbl_1_data_6C = .data:0x0000006C; // type:object size:0x20 scope:local jumptable_1_data_8C = .data:0x0000008C; // type:object size:0x1C scope:local jumptable_1_data_A8 = .data:0x000000A8; // type:object size:0x1C scope:local -lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x20 -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_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 -lbl_1_data_ADC = .data:0x00000ADC; // type:object size:0xC data:4byte -lbl_1_data_AE8 = .data:0x00000AE8; // type:object size:0x14 data:4byte -lbl_1_data_AFC = .data:0x00000AFC; // type:object size:0x18 -lbl_1_data_B14 = .data:0x00000B14; // type:object size:0x18 -lbl_1_data_B2C = .data:0x00000B2C; // type:object size:0x48 -lbl_1_data_B74 = .data:0x00000B74; // type:object size:0x30 -lbl_1_data_BA4 = .data:0x00000BA4; // type:object size:0x18 -lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x2 data:2byte -lbl_1_bss_2 = .bss:0x00000002; // type:object size:0x2 data:2byte -lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x8 data:2byte -lbl_1_bss_C = .bss:0x0000000C; // type:object size:0xC data:4byte -lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x2 data:2byte -lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0xC data:2byte -lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x2 data:2byte -lbl_1_bss_2A = .bss:0x0000002A; // type:object size:0x2 data:2byte -lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x2 data:2byte -lbl_1_bss_2E = .bss:0x0000002E; // type:object size:0x2 data:2byte -lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x2 data:2byte -lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x10 -lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte -lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte -lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte -lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x8 data:4byte -lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x18 -lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x4 data:4byte -lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x4 data:4byte -lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x4 data:4byte -lbl_1_bss_7C = .bss:0x0000007C; // type:object size:0x4 data:4byte -lbl_1_bss_80 = .bss:0x00000080; // type:object size:0x4 data:float -lbl_1_bss_84 = .bss:0x00000084; // type:object size:0x4 data:4byte -lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x4 data:4byte -lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x4 data:4byte -lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x4 data:4byte -lbl_1_bss_94 = .bss:0x00000094; // type:object size:0x4 data:4byte -lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x4 data:4byte -lbl_1_bss_9C = .bss:0x0000009C; // type:object size:0x14 -lbl_1_bss_B0 = .bss:0x000000B0; // type:object size:0x4 data:4byte -lbl_1_bss_B4 = .bss:0x000000B4; // type:object size:0x4 data:4byte +lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x20 scope:local +lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x30 scope:local data:float +lbl_1_data_114 = .data:0x00000114; // type:object size:0x20 scope:local data:float +lbl_1_data_134 = .data:0x00000134; // type:object size:0x20 scope:local data:float +lbl_1_data_154 = .data:0x00000154; // type:object size:0x4 scope:local data:4byte +lbl_1_data_158 = .data:0x00000158; // type:object size:0xC0 scope:local data:float +lbl_1_data_218 = .data:0x00000218; // type:object size:0xC0 scope:local data:float +lbl_1_data_2D8 = .data:0x000002D8; // type:object size:0x78 scope:local data:float +lbl_1_data_350 = .data:0x00000350; // type:object size:0x78 scope:local data:float +lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0xC0 scope:local data:float +lbl_1_data_488 = .data:0x00000488; // type:object size:0xC0 scope:local data:float +lbl_1_data_548 = .data:0x00000548; // type:object size:0x78 scope:local data:float +lbl_1_data_5C0 = .data:0x000005C0; // type:object size:0x78 scope:local data:float +lbl_1_data_638 = .data:0x00000638; // type:object size:0x108 scope:local data:float +lbl_1_data_740 = .data:0x00000740; // type:object size:0x108 scope:local data:float +lbl_1_data_848 = .data:0x00000848; // type:object size:0x108 scope:local data:float +lbl_1_data_950 = .data:0x00000950; // type:object size:0x108 scope:local data:float +lbl_1_data_A58 = .data:0x00000A58; // type:object size:0x30 scope:local +lbl_1_data_A88 = .data:0x00000A88; // type:object size:0x48 scope:local data:float +lbl_1_data_AD0 = .data:0x00000AD0; // type:object size:0xC scope:local data:4byte +lbl_1_data_ADC = .data:0x00000ADC; // type:object size:0xC scope:local data:4byte +lbl_1_data_AE8 = .data:0x00000AE8; // type:object size:0x14 scope:local data:4byte +lbl_1_data_AFC = .data:0x00000AFC; // type:object size:0x18 scope:local +lbl_1_data_B14 = .data:0x00000B14; // type:object size:0x18 scope:local +lbl_1_data_B2C = .data:0x00000B2C; // type:object size:0x48 scope:local data:float +lbl_1_data_B74 = .data:0x00000B74; // type:object size:0x30 scope:local +lbl_1_data_BA4 = .data:0x00000BA4; // type:object size:0x18 scope:local +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_2 = .bss:0x00000002; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0xC scope:local data:2byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_2A = .bss:0x0000002A; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_2E = .bss:0x0000002E; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x10 scope:local +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x8 scope:local data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x18 scope:local +lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_7C = .bss:0x0000007C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_80 = .bss:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_bss_84 = .bss:0x00000084; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_94 = .bss:0x00000094; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_9C = .bss:0x0000009C; // type:object size:0x14 scope:local +lbl_1_bss_B0 = .bss:0x000000B0; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_B4 = .bss:0x000000B4; // type:object size:0x4 scope:local data:4byte diff --git a/config/GMPE01_00/rels/m404Dll/symbols.txt b/config/GMPE01_00/rels/m404Dll/symbols.txt index 3ffbe0e4..70a77577 100644 --- a/config/GMPE01_00/rels/m404Dll/symbols.txt +++ b/config/GMPE01_00/rels/m404Dll/symbols.txt @@ -46,96 +46,98 @@ fn_1_648C = .text:0x0000648C; // type:function size:0x250 fn_1_66DC = .text:0x000066DC; // type:function size:0x5AC _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:0x8 data:double -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 data:double -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:2byte -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_88 = .rodata:0x00000088; // type:object size:0x8 data:double -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double -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:0x20 data:byte -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x1 data:byte -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x1 data:byte -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_data_0 = .data:0x00000000; // type:object size:0x248 -lbl_1_data_248 = .data:0x00000248; // type:object size:0x260 -lbl_1_data_4A8 = .data:0x000004A8; // type:object size:0x290 +__fakeHalf = .rodata:0x00000000; // type:object size:0x4 data:float +__fakeThree = .rodata:0x00000004; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 scope:local data:2byte +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_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +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:0x20 scope:local data:byte +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x1 scope:local data:byte +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x248 data:float +lbl_1_data_248 = .data:0x00000248; // type:object size:0x260 data:float +lbl_1_data_4A8 = .data:0x000004A8; // type:object size:0x290 data:float lbl_1_data_738 = .data:0x00000738; // type:object size:0x38 data:float lbl_1_data_770 = .data:0x00000770; // type:object size:0xC data:float lbl_1_data_77C = .data:0x0000077C; // type:object size:0xC data:float lbl_1_data_788 = .data:0x00000788; // type:object size:0x4 -lbl_1_data_78C = .data:0x0000078C; // type:object size:0xC -lbl_1_data_798 = .data:0x00000798; // type:object size:0xC -lbl_1_data_7A4 = .data:0x000007A4; // type:object size:0x24 +lbl_1_data_78C = .data:0x0000078C; // type:object size:0xC data:float +lbl_1_data_798 = .data:0x00000798; // type:object size:0xC data:float +lbl_1_data_7A4 = .data:0x000007A4; // type:object size:0x24 scope:local data:string lbl_1_data_7C8 = .data:0x000007C8; // type:object size:0x4 data:4byte jumptable_1_data_7CC = .data:0x000007CC; // type:object size:0x28 scope:local -lbl_1_data_7F4 = .data:0x000007F4; // type:object size:0x1C data:string -lbl_1_data_810 = .data:0x00000810; // type:object size:0xC -lbl_1_data_81C = .data:0x0000081C; // type:object size:0x30 -lbl_1_data_84C = .data:0x0000084C; // type:object size:0x20 +lbl_1_data_7F4 = .data:0x000007F4; // type:object size:0x1C scope:local data:string +lbl_1_data_810 = .data:0x00000810; // type:object size:0xC data:2byte +lbl_1_data_81C = .data:0x0000081C; // type:object size:0x30 data:float +lbl_1_data_84C = .data:0x0000084C; // type:object size:0x20 data:float lbl_1_data_86C = .data:0x0000086C; // type:object size:0x20 lbl_1_data_88C = .data:0x0000088C; // type:object size:0x4 data:4byte lbl_1_data_890 = .data:0x00000890; // type:object size:0x28 lbl_1_data_8B8 = .data:0x000008B8; // type:object size:0x20 -lbl_1_data_8D8 = .data:0x000008D8; // type:object size:0x10 +lbl_1_data_8D8 = .data:0x000008D8; // type:object size:0x10 data:float lbl_1_data_8E8 = .data:0x000008E8; // type:object size:0xC -lbl_1_data_8F4 = .data:0x000008F4; // type:object size:0x8 data:wstring +lbl_1_data_8F4 = .data:0x000008F4; // type:object size:0x8 data:2byte lbl_1_data_8FC = .data:0x000008FC; // type:object size:0x18 -lbl_1_data_914 = .data:0x00000914; // type:object size:0x1C +lbl_1_data_914 = .data:0x00000914; // type:object size:0x1C scope:local data:string lbl_1_data_930 = .data:0x00000930; // type:object size:0x20 lbl_1_data_950 = .data:0x00000950; // type:object size:0x20 -lbl_1_data_970 = .data:0x00000970; // type:object size:0x7 data:string -lbl_1_data_977 = .data:0x00000977; // type:object size:0x7 data:string -lbl_1_data_97E = .data:0x0000097E; // type:object size:0x7 data:string -lbl_1_data_985 = .data:0x00000985; // type:object size:0x7 data:string +lbl_1_data_970 = .data:0x00000970; // type:object size:0x7 scope:local data:string +lbl_1_data_977 = .data:0x00000977; // type:object size:0x7 scope:local data:string +lbl_1_data_97E = .data:0x0000097E; // type:object size:0x7 scope:local data:string +lbl_1_data_985 = .data:0x00000985; // type:object size:0x7 scope:local data:string lbl_1_data_98C = .data:0x0000098C; // type:object size:0x10 -lbl_1_data_99C = .data:0x0000099C; // type:object size:0x10 -lbl_1_data_9AC = .data:0x000009AC; // type:object size:0x30 +lbl_1_data_99C = .data:0x0000099C; // type:object size:0x10 data:float +lbl_1_data_9AC = .data:0x000009AC; // type:object size:0x30 data:4byte lbl_1_data_9DC = .data:0x000009DC; // type:object size:0x18 data:4byte lbl_1_data_9F4 = .data:0x000009F4; // type:object size:0x18 data:4byte lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_00/rels/present/splits.txt b/config/GMPE01_00/rels/present/splits.txt index 5ac9cc92..3c65c150 100644 --- a/config/GMPE01_00/rels/present/splits.txt +++ b/config/GMPE01_00/rels/present/splits.txt @@ -10,12 +10,12 @@ REL/executor.c: .text start:0x00000000 end:0x000000A0 REL/present/init.c: - .text start:0x000000A0 end:0x00000920 + .text start:0x000000A0 end:0x000006B4 .rodata start:0x00000000 end:0x00000020 .bss start:0x00000000 end:0x00000020 REL/present/camera.c: - .text start:0x00000920 end:0x00001458 + .text start:0x000006B4 end:0x00001458 .rodata start:0x00000020 end:0x000000A0 .data start:0x00000000 end:0x00000050 diff --git a/config/GMPE01_00/rels/present/symbols.txt b/config/GMPE01_00/rels/present/symbols.txt index fb21664c..d6e7f4bc 100644 --- a/config/GMPE01_00/rels/present/symbols.txt +++ b/config/GMPE01_00/rels/present/symbols.txt @@ -68,122 +68,125 @@ fn_1_4A04 = .text:0x00004A04; // type:function size:0x2E8 fn_1_4CEC = .text:0x00004CEC; // type:function size:0x104 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size: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_50 = .rodata:0x00000050; // type:object size:0x8 data:double -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x218 -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x708 -lbl_1_rodata_9C0 = .rodata:0x000009C0; // type:object size:0x4 data:float -lbl_1_rodata_9C4 = .rodata:0x000009C4; // type:object size:0x4 data:float -lbl_1_rodata_9C8 = .rodata:0x000009C8; // type:object size:0x4 data:float -lbl_1_rodata_9D0 = .rodata:0x000009D0; // type:object size:0x8 data:double -lbl_1_rodata_9D8 = .rodata:0x000009D8; // type:object size:0x20 -lbl_1_rodata_9F8 = .rodata:0x000009F8; // type:object size:0x28 -lbl_1_rodata_A20 = .rodata:0x00000A20; // type:object size:0x4 data:float -lbl_1_rodata_A24 = .rodata:0x00000A24; // type:object size:0x4 data:float -lbl_1_rodata_A28 = .rodata:0x00000A28; // type:object size:0x4 data:float -lbl_1_rodata_A2C = .rodata:0x00000A2C; // type:object size:0x4 data:float -lbl_1_rodata_A30 = .rodata:0x00000A30; // type:object size:0x4 data:float -lbl_1_rodata_A34 = .rodata:0x00000A34; // type:object size:0x4 data:float -lbl_1_rodata_A38 = .rodata:0x00000A38; // type:object size:0x4 data:float -lbl_1_rodata_A3C = .rodata:0x00000A3C; // type:object size:0x4 data:float -lbl_1_rodata_A40 = .rodata:0x00000A40; // type:object size:0x4 data:float -lbl_1_rodata_A44 = .rodata:0x00000A44; // type:object size:0x4 data:float -lbl_1_rodata_A48 = .rodata:0x00000A48; // type:object size:0x4 data:float -lbl_1_rodata_A50 = .rodata:0x00000A50; // type:object size:0x8 data:double -lbl_1_rodata_A58 = .rodata:0x00000A58; // type:object size:0x4 data:float -lbl_1_rodata_A60 = .rodata:0x00000A60; // type:object size:0x8 data:double -lbl_1_rodata_A68 = .rodata:0x00000A68; // type:object size:0x8 data:double -lbl_1_rodata_A70 = .rodata:0x00000A70; // type:object size:0x4 data:float -lbl_1_rodata_A74 = .rodata:0x00000A74; // type:object size:0x28 -lbl_1_rodata_A9C = .rodata:0x00000A9C; // type:object size:0x4 data:float -lbl_1_rodata_AA0 = .rodata:0x00000AA0; // type:object size:0x4 data:float -lbl_1_rodata_AA4 = .rodata:0x00000AA4; // type:object size:0x4 data:float -lbl_1_rodata_AA8 = .rodata:0x00000AA8; // type:object size:0x4 data:float -lbl_1_rodata_AAC = .rodata:0x00000AAC; // type:object size:0x4 data:float -lbl_1_rodata_AB0 = .rodata:0x00000AB0; // type:object size:0x4 data:float -lbl_1_rodata_AB8 = .rodata:0x00000AB8; // type:object size:0x8 data:double -lbl_1_rodata_AC0 = .rodata:0x00000AC0; // type:object size:0x8 data:double -lbl_1_rodata_AC8 = .rodata:0x00000AC8; // type:object size:0x28 -lbl_1_rodata_AF0 = .rodata:0x00000AF0; // type:object size:0x28 -lbl_1_rodata_B18 = .rodata:0x00000B18; // type:object size:0x28 -lbl_1_rodata_B40 = .rodata:0x00000B40; // type:object size:0x28 -lbl_1_rodata_B68 = .rodata:0x00000B68; // type:object size:0x28 -lbl_1_rodata_B90 = .rodata:0x00000B90; // type:object size:0x4 data:float -lbl_1_rodata_B94 = .rodata:0x00000B94; // type:object size:0x4 data:float -lbl_1_rodata_B98 = .rodata:0x00000B98; // type:object size:0x4 data:float -lbl_1_rodata_B9C = .rodata:0x00000B9C; // type:object size:0x4 data:float -lbl_1_rodata_BA0 = .rodata:0x00000BA0; // type:object size:0x4 data:float -lbl_1_rodata_BA4 = .rodata:0x00000BA4; // type:object size:0xC -lbl_1_rodata_BB0 = .rodata:0x00000BB0; // type:object size:0x4 data:float -lbl_1_rodata_BB4 = .rodata:0x00000BB4; // type:object size:0x4 data:float -lbl_1_rodata_BB8 = .rodata:0x00000BB8; // type:object size:0x4 data:float -lbl_1_rodata_BBC = .rodata:0x00000BBC; // type:object size:0x4 data:float -lbl_1_rodata_BC0 = .rodata:0x00000BC0; // type:object size:0x4 data:float -lbl_1_rodata_BC4 = .rodata:0x00000BC4; // type:object size:0x4 data:float -lbl_1_rodata_BC8 = .rodata:0x00000BC8; // type:object size:0x4 data:float -lbl_1_rodata_BCC = .rodata:0x00000BCC; // type:object size:0x4 data:float -lbl_1_rodata_BD0 = .rodata:0x00000BD0; // type:object size:0x8 data:float -lbl_1_rodata_BD8 = .rodata:0x00000BD8; // type:object size:0xC -lbl_1_rodata_BE4 = .rodata:0x00000BE4; // type:object size:0x4 data:float -lbl_1_rodata_BE8 = .rodata:0x00000BE8; // type:object size:0x4 data:float -lbl_1_rodata_BEC = .rodata:0x00000BEC; // type:object size:0x4 data:float -lbl_1_rodata_BF0 = .rodata:0x00000BF0; // type:object size:0x4 data:float -lbl_1_rodata_BF4 = .rodata:0x00000BF4; // type:object size:0x4 data:float -lbl_1_rodata_BF8 = .rodata:0x00000BF8; // type:object size:0x8 data:double -lbl_1_rodata_C00 = .rodata:0x00000C00; // type:object size:0x4 data:float -lbl_1_rodata_C08 = .rodata:0x00000C08; // type:object size:0x8 data:double -lbl_1_rodata_C10 = .rodata:0x00000C10; // type:object size:0x4 data:float -lbl_1_rodata_C14 = .rodata:0x00000C14; // type:object size:0x4 data:float -lbl_1_rodata_C18 = .rodata:0x00000C18; // type:object size:0x4 data:float -lbl_1_rodata_C1C = .rodata:0x00000C1C; // type:object size:0x4 data:float -lbl_1_rodata_C20 = .rodata:0x00000C20; // type:object size:0x8 data:double -lbl_1_rodata_C28 = .rodata:0x00000C28; // type:object size:0x8 data:double -lbl_1_rodata_C30 = .rodata:0x00000C30; // type:object size:0x4 data:float -lbl_1_rodata_C34 = .rodata:0x00000C34; // type:object size:0x4 data:float -lbl_1_rodata_C38 = .rodata:0x00000C38; // type:object size:0x4 data:float -lbl_1_rodata_C40 = .rodata:0x00000C40; // type:object size:0x8 data:double -lbl_1_rodata_C48 = .rodata:0x00000C48; // type:object size:0x4 data:float -lbl_1_rodata_C4C = .rodata:0x00000C4C; // type:object size:0x4 data:float -lbl_1_data_0 = .data:0x00000000; // type:object size:0x1B data:string -lbl_1_data_1B = .data:0x0000001B; // type:object size:0x1B data:string -lbl_1_data_36 = .data:0x00000036; // type:object size:0x1A -lbl_1_data_50 = .data:0x00000050; // type:object size:0x1C +__fakeHalf = .rodata:0x00000000; // type:object size:0x4 data:float +__fakeThree = .rodata:0x00000004; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data: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_50 = .rodata:0x00000050; // type:object size:0x8 scope:local data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 scope:local data:double +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x218 scope:local +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x708 scope:local +lbl_1_rodata_9C0 = .rodata:0x000009C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C4 = .rodata:0x000009C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C8 = .rodata:0x000009C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9D0 = .rodata:0x000009D0; // type:object size:0x8 scope:local data:float +lbl_1_rodata_9D8 = .rodata:0x000009D8; // type:object size:0x20 scope:local +lbl_1_rodata_9F8 = .rodata:0x000009F8; // type:object size:0x28 scope:local +lbl_1_rodata_A20 = .rodata:0x00000A20; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A24 = .rodata:0x00000A24; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A28 = .rodata:0x00000A28; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A2C = .rodata:0x00000A2C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A30 = .rodata:0x00000A30; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A34 = .rodata:0x00000A34; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A38 = .rodata:0x00000A38; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A3C = .rodata:0x00000A3C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A40 = .rodata:0x00000A40; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A44 = .rodata:0x00000A44; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A48 = .rodata:0x00000A48; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A50 = .rodata:0x00000A50; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A58 = .rodata:0x00000A58; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A60 = .rodata:0x00000A60; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A68 = .rodata:0x00000A68; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A70 = .rodata:0x00000A70; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A74 = .rodata:0x00000A74; // type:object size:0x28 scope:local +lbl_1_rodata_A9C = .rodata:0x00000A9C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AA0 = .rodata:0x00000AA0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AA4 = .rodata:0x00000AA4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AA8 = .rodata:0x00000AA8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AAC = .rodata:0x00000AAC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AB0 = .rodata:0x00000AB0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AB8 = .rodata:0x00000AB8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_AC0 = .rodata:0x00000AC0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_AC8 = .rodata:0x00000AC8; // type:object size:0x28 scope:local +lbl_1_rodata_AF0 = .rodata:0x00000AF0; // type:object size:0x28 scope:local +lbl_1_rodata_B18 = .rodata:0x00000B18; // type:object size:0x28 scope:local +lbl_1_rodata_B40 = .rodata:0x00000B40; // type:object size:0x28 scope:local +lbl_1_rodata_B68 = .rodata:0x00000B68; // type:object size:0x28 scope:local +lbl_1_rodata_B90 = .rodata:0x00000B90; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B94 = .rodata:0x00000B94; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B98 = .rodata:0x00000B98; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B9C = .rodata:0x00000B9C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BA0 = .rodata:0x00000BA0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BA4 = .rodata:0x00000BA4; // type:object size:0x8 scope:local +lbl_1_rodata_BB0 = .rodata:0x00000BB0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BB4 = .rodata:0x00000BB4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BB8 = .rodata:0x00000BB8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BBC = .rodata:0x00000BBC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC0 = .rodata:0x00000BC0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC4 = .rodata:0x00000BC4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC8 = .rodata:0x00000BC8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BCC = .rodata:0x00000BCC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BD0 = .rodata:0x00000BD0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BD8 = .rodata:0x00000BD8; // type:object size:0xC scope:local +lbl_1_rodata_BE4 = .rodata:0x00000BE4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BE8 = .rodata:0x00000BE8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BEC = .rodata:0x00000BEC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BF0 = .rodata:0x00000BF0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BF4 = .rodata:0x00000BF4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BF8 = .rodata:0x00000BF8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C00 = .rodata:0x00000C00; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C08 = .rodata:0x00000C08; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C10 = .rodata:0x00000C10; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C14 = .rodata:0x00000C14; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C18 = .rodata:0x00000C18; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C1C = .rodata:0x00000C1C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C20 = .rodata:0x00000C20; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C28 = .rodata:0x00000C28; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C30 = .rodata:0x00000C30; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C34 = .rodata:0x00000C34; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C38 = .rodata:0x00000C38; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C40 = .rodata:0x00000C40; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C48 = .rodata:0x00000C48; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4C = .rodata:0x00000C4C; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x1B scope:local data:string +lbl_1_data_1B = .data:0x0000001B; // type:object size:0x1B scope:local data:string +lbl_1_data_36 = .data:0x00000036; // type:object size:0x1A scope:local data:string +lbl_1_data_50 = .data:0x00000050; // type:object size:0x1C data:4byte lbl_1_data_6C = .data:0x0000006C; // type:object size:0x10 data:4byte -lbl_1_data_7C = .data:0x0000007C; // type:object size:0x8 +lbl_1_data_7C = .data:0x0000007C; // type:object size:0x8 scope:local data:string lbl_1_data_84 = .data:0x00000084; // type:object size:0x20 jumptable_1_data_A4 = .data:0x000000A4; // type:object size:0x2C scope:local jumptable_1_data_D0 = .data:0x000000D0; // type:object size:0x1C scope:local -lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x24 -lbl_1_data_114 = .data:0x00000114; // type:object size:0x2A data:string -lbl_1_data_13E = .data:0x0000013E; // type:object size:0x2E +lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x24 data:float +lbl_1_data_114 = .data:0x00000114; // type:object size:0x2A scope:local data:string +lbl_1_data_13E = .data:0x0000013E; // type:object size:0x2E scope:local data:string jumptable_1_data_16C = .data:0x0000016C; // type:object size:0x34 scope:local lbl_1_data_1A0 = .data:0x000001A0; // type:object size:0xC data:4byte -lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_14 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte -lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x8 data:4byte -lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x8 data:4byte -lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x8 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_00/rels/staffDll/symbols.txt b/config/GMPE01_00/rels/staffDll/symbols.txt index 4c847261..ad21899f 100644 --- a/config/GMPE01_00/rels/staffDll/symbols.txt +++ b/config/GMPE01_00/rels/staffDll/symbols.txt @@ -9,42 +9,46 @@ ShowPicture = .text:0x00000BCC; // type:function size:0x1C4 scope:local MainProc = .text:0x00000D90; // type:function size:0x500 scope:local _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:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float +lbl_1_rodata_0 = .rodata:0x00000000; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4 = .rodata:0x00000004; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8 = .rodata:0x00000008; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C = .rodata:0x0000000C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float staffData = .data:0x00000000; // type:object size:0x1158 scope:local staffLogoPosTbl = .data:0x00001158; // type:object size:0xC scope:local data:float -lbl_1_data_1164 = .data:0x00001164; // type:object size:0x14 data:string +lbl_1_data_1164 = .data:0x00001164; // type:object size:0x14 scope:local data:string multiViewObj = .bss:0x00000000; // type:object size:0x4 scope:local data:4byte currImg = .bss:0x00000004; // type:object size:0x4 scope:local data:4byte staffSide = .bss:0x00000008; // type:object size:0x4 scope:local data:4byte diff --git a/config/GMPE01_00/rels/w20Dll/symbols.txt b/config/GMPE01_00/rels/w20Dll/symbols.txt index 8e8d1e62..471db631 100644 --- a/config/GMPE01_00/rels/w20Dll/symbols.txt +++ b/config/GMPE01_00/rels/w20Dll/symbols.txt @@ -13,17 +13,21 @@ fn_1_4A8 = .text:0x000004A8; // type:function size:0x4 fn_1_4AC = .text:0x000004AC; // type:function size:0x1CC _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_20 = .rodata:0x00000020; // type:object size:0x8 data:double -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_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_20 = .rodata:0x00000020; // type:object size:0x8 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_data_0 = .data:0x00000000; // type:object size:0x2 data:2byte lbl_1_data_2 = .data:0x00000002; // type:object size:0x2 data:2byte +lbl_1_data_4 = .data:0x00000004; // type:object size:0x2 data:2byte lbl_1_data_6 = .data:0x00000006; // type:object size:0x2 data:2byte lbl_1_data_8 = .data:0x00000008; // type:object size:0x2 data:2byte -lbl_1_data_A = .data:0x0000000A; // type:object size:0x22 data:2byte -lbl_1_data_2C = .data:0x0000002C; // type:object size:0x8 -lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x8 -lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x6 +lbl_1_data_A = .data:0x0000000A; // type:object size:0x2 data:2byte +lbl_1_data_C = .data:0x0000000C; // type:object size:0x20 data:4byte +unkMotTbl = .data:0x0000002C; // type:object size:0x8 +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x2 diff --git a/configure.py b/configure.py index d15a71df..9a835e91 100644 --- a/configure.py +++ b/configure.py @@ -299,7 +299,7 @@ def MusyX(objects, mw_version="GC/1.3.2", debug=False, major=1, minor=5, patch=4 def Rel(lib_name, objects): return { "lib": lib_name, - "mw_version": "GC/2.6", + "mw_version": "GC/1.3.2", "cflags": cflags_rel, "host": True, "objects": objects, @@ -781,7 +781,7 @@ config.libs = [ ), Rel('E3setupDLL', objects = { - Object(NonMatching, "REL/E3setupDLL/mgselect.c"), + Object(Matching, "REL/E3setupDLL/mgselect.c"), Object(Matching, "REL/executor.c"), Object(Matching, "REL/E3setupDLL/main.c"), } @@ -796,20 +796,20 @@ config.libs = [ Rel('m401Dll', objects = { Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m401Dll/main.c"), + Object(Matching, "REL/m401Dll/main.c"), Object(NonMatching, "REL/m401Dll/main_ex.c"), } ), Rel('m402Dll', objects = { - Object(NonMatching, "REL/m402Dll/main.c"), + Object(Matching, "REL/m402Dll/main.c"), } ), Rel('m403Dll', objects = { Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m403Dll/main.c"), - Object(NonMatching, "REL/m403Dll/scene.c"), + Object(Matching, "REL/m403Dll/main.c"), + Object(Matching, "REL/m403Dll/scene.c"), } ), Rel('m404Dll', @@ -1326,11 +1326,11 @@ config.libs = [ Rel('present', objects = { Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/present/init.c"), - Object(NonMatching, "REL/present/camera.c"), - Object(NonMatching, "REL/present/present.c"), - Object(NonMatching, "REL/present/main.c"), - Object(NonMatching, "REL/present/common.c"), + Object(Matching, "REL/present/init.c"), + Object(Matching, "REL/present/camera.c"), + Object(Matching, "REL/present/present.c"), + Object(Matching, "REL/present/main.c"), + Object(Matching, "REL/present/common.c"), } ), Rel('resultDll', @@ -1355,7 +1355,7 @@ config.libs = [ Rel('staffDll', objects = { Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/staffDll/main.c"), + Object(Matching, "REL/staffDll/main.c"), } ), Rel('subchrselDll', @@ -1441,7 +1441,7 @@ config.libs = [ Rel('w20Dll', objects = { Object(Matching, "REL/board_executor.c"), - Object(NonMatching, "REL/w20Dll/main.c"), + Object(Matching, "REL/w20Dll/main.c"), } ), Rel('w21Dll', diff --git a/include/REL/E3SetupDLL.h b/include/REL/E3SetupDLL.h index ef58102c..a873ccf2 100644 --- a/include/REL/E3SetupDLL.h +++ b/include/REL/E3SetupDLL.h @@ -1,6 +1,7 @@ #ifndef E3SETUPDLL_H #define E3SETUPDLL_H +#include "game/animdata.h" #include "game/object.h" #include "game/pad.h" @@ -11,13 +12,59 @@ typedef struct e3pad { u16 unk6; } E3Pad; +typedef struct mgInterface { + /* 0x00 */ AnimData *unk_00[2]; + /* 0x08 */ s32 unk08[5]; + /* 0x1C */ s16 group; + /* 0x1E */ s16 group2; + /* 0x20 */ s32 unk20[3]; + /* 0x2C */ s16 unk_2C; + /* 0x30 */ s32 unk30; +} mgInterface; + +typedef struct mgPic { + /* 0x00 */ AnimData *unk_00[2]; + /* 0x08 */ s32 unk08[9]; + /* 0x2C */ s16 unk_2C; + /* 0x2E */ s32 unk2E[4]; + /* 0x40 */ s16 unk_40; + /* 0x44 */ s32 unk44[2]; + /* 0x4C */ s32 unk_4C; + /* 0x50 */ s32 unk50; +} mgPic; + +typedef struct mgSelect { + /* 0x00 */ AnimData *unk_00[4]; + /* 0x10 */ s32 unk10[3]; + /* 0x1C */ s16 unk_1C; + /* 0x1E */ s16 unk_1E; + /* 0x20 */ s16 unk_20; + /* 0x22 */ s16 unk22; + /* 0x24 */ s32 unk24[2]; + /* 0x2C */ s16 unk_2C; + /* 0x2E */ s16 unk_2E[4]; + /* 0x36 */ s16 unk36; + /* 0x38 */ s16 unk_38[4]; + /* 0x40 */ s16 unk40; + /* 0x42 */ s16 unk_42; + /* 0x44 */ s16 unk_44; + /* 0x46 */ s16 unk_46; + /* 0x48 */ s32 unk48[3]; +} mgSelect; + extern E3Pad e3PadData[4]; extern s16 e3PadCtrl; +extern s16 e3ConfigPlayerCnt; extern s16 e3ConfigPlayerF; extern s32 e3ExitEnableF; extern OverlayID e3NextOvl; extern s32 e3NextEvent; extern u32 e3ExitMode; +extern float e3CameraFov; +extern omObjData *e3MenuMainObj; +extern omObjData *e3ViewObj; +extern omObjData *e3OvlWatchObj; +extern omObjData *e3BGObj; void E3MainInit(void); void E3MGSelectInit(void); @@ -27,4 +74,4 @@ void E3OvlWatchInit(omObjData *object); void E3BGCreate(omObjData *object); void E3LightInit(void); -#endif \ No newline at end of file +#endif diff --git a/include/REL/board_executor.h b/include/REL/board_executor.h index 89450e01..47d3f448 100644 --- a/include/REL/board_executor.h +++ b/include/REL/board_executor.h @@ -5,7 +5,9 @@ extern "C" { #endif -extern int _prolog(); +#include "dolphin/types.h" + +extern s32 _prolog(); extern void _epilog(); typedef void (*VoidFunc)(void); diff --git a/include/REL/executor.h b/include/REL/executor.h index afec2f28..f6ed3f1d 100644 --- a/include/REL/executor.h +++ b/include/REL/executor.h @@ -5,7 +5,9 @@ extern "C" { #endif -extern int _prolog(); +#include "dolphin/types.h" + +extern s32 _prolog(); extern void _epilog(); typedef void (*VoidFunc)(void); diff --git a/include/REL/m401Dll.h b/include/REL/m401Dll.h index 89bdf388..4f218ffb 100644 --- a/include/REL/m401Dll.h +++ b/include/REL/m401Dll.h @@ -66,6 +66,7 @@ void fn_2_10710(void); void fn_2_1079C(void); omObjData *fn_2_10A88(Vec *arg0, s16 arg1); +void fn_2_141B0(void); omObjData *fn_2_14640(Process *objman); #endif \ No newline at end of file diff --git a/include/REL/m403Dll.h b/include/REL/m403Dll.h new file mode 100755 index 00000000..287c2294 --- /dev/null +++ b/include/REL/m403Dll.h @@ -0,0 +1,21 @@ +#ifndef M403DLL_H +#define M403DLL_H + +#include "game/process.h" + +#include "dolphin.h" + +void fn_1_650C(Process *arg0); +void fn_1_676C(void); +void fn_1_7C30(float arg0); +void fn_1_7C50(s32 arg0); +void fn_1_7C60(void); +float fn_1_7F78(float arg0, float arg1); +float fn_1_80D4(Vec *arg0, float arg1); +s32 fn_1_8264(void); +s32 fn_1_82D0(Vec *arg0); +s32 fn_1_8470(Vec *arg0); +void fn_1_8670(s32 arg0); +s32 fn_1_86A0(Vec *arg0, Vec *arg1); + +#endif diff --git a/include/REL/present.h b/include/REL/present.h new file mode 100644 index 00000000..af9b3a01 --- /dev/null +++ b/include/REL/present.h @@ -0,0 +1,166 @@ +#ifndef PRESENT_H +#define PRESENT_H + +#include "game/object.h" +// #include "REL/option.h" // this causes problems because of the extern bsses + +typedef struct UnkWindowDataStruct { + /* 0x00 */ Process *process; + /* 0x04 */ s16 window; + /* 0x06 */ char unk06[2]; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ u32 unk18; + /* 0x1C */ s32 choice; + /* 0x20 */ s32 unk_20; +} UnkWindowDataStruct; // this already exists in option.h + +typedef struct UnkPresentStruct { + /* 0x00 */ UnkWindowDataStruct *unk_00; + /* 0x04 */ s32 unk_04; +} UnkPresentStruct; + +typedef struct UnkPresentStruct2 { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ s32 unk_0C; + /* 0x10 */ omObjData *unk_10[134]; + /* 0x228 */ UnkWindowDataStruct *unk_228; + /* 0x22C */ UnkWindowDataStruct *unk_22C; + /* 0x230 */ s16 sprite; + /* 0x234 */ s32 unk_234; + /* 0x238 */ s32 unk_238; + /* 0x23C */ float unk_23C; + /* 0x240 */ float unk_240; + /* 0x244 */ float unk_244; + /* 0x248 */ float unk_248; + /* 0x24C */ float unk_24C; + /* 0x250 */ float unk_250; + /* 0x254 */ float unk_254; + /* 0x258 */ float unk_258; + /* 0x25C */ float unk_25C; + /* 0x260 */ float unk_260; + /* 0x264 */ float unk_264; + /* 0x268 */ float unk_268; + /* 0x26C */ float unk_26C; + /* 0x270 */ s32 unk_270[60]; +} UnkPresentStruct2; + +typedef struct UnkPresentStruct3 { + /* 0x00 */ Vec unk_00; + /* 0x0C */ Vec unk_0C; + /* 0x18 */ GXColor unk_18; +} UnkPresentStruct3; + +typedef struct UnkPresentStruct4 { + /* 0x00 */ Vec unk_00; + /* 0x0C */ Vec unk_0C; + /* 0x18 */ Vec unk_18; +} UnkPresentStruct4; + +typedef struct UnkPresentStruct5 { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s16 unk_04; + /* 0x08 */ float x; + /* 0x0C */ float y; + /* 0x10 */ float z; + /* 0x14 */ float unk_14; + /* 0x18 */ s32 unk18[2]; + /* 0x20 */ float unk_20; + /* 0x24 */ float unk_24; + /* 0x28 */ float unk_28; + /* 0x2C */ float unk_2C; + /* 0x30 */ float unk_30; + /* 0x34 */ float unk_34; + /* 0x38 */ float unk_38; + /* 0x3C */ s32 unk3C[3]; + /* 0x48 */ float unk_48; + /* 0x4C */ float unk_4C; + /* 0x50 */ s32 unk_50; + /* 0x54 */ s32 unk_54; +} UnkPresentStruct5; + +typedef struct UnkPresentStruct6 { + /* 0x00 */ s16 unk_00; + /* 0x04 */ float unk_04; + /* 0x08 */ float unk_08; +} UnkPresentStruct6; // looks like a struct in option/scene.c + +typedef struct UnkPresentStruct6Weird { + /* 0x00 */ s16 unk_00; + /* 0x04 */ float unk_04; + /* 0x08 */ float unk_08; + /* 0x0C */ float unk_0C; +} UnkPresentStruct6Weird; // looks like a struct in option/scene.c + +typedef struct UnkPresentCameraStruct { + /* 0x00 */ Vec pos; + /* 0x0C */ Vec target; + /* 0x18 */ Vec up; + /* 0x24 */ float unk_24; + /* 0x28 */ float unk_28; + /* 0x2C */ Vec unk_2C; + /* 0x38 */ Vec unk_38; + /* 0x44 */ float unk44; + /* 0x48 */ float unk48; + /* 0x4C */ float unk4C; + /* 0x50 */ float unk_50; + /* 0x54 */ float unk_54; + /* 0x58 */ Vec unk_58; + /* 0x64 */ Vec unk_64; + /* 0x70 */ float unk70; + /* 0x74 */ float unk74; + /* 0x78 */ float unk78; + /* 0x7C */ float unk_7C; + /* 0x80 */ float unk_80; + /* 0x84 */ float unk_84; + /* 0x88 */ float unk_88; + /* 0x8C */ float unk_8C; + /* 0x90 */ float unk_90; + /* 0x94 */ float unk_94; + /* 0x98 */ float unk_98; +} UnkPresentCameraStruct; + +typedef struct UnkPresentNestedInnerStruct { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk_0C; +} UnkPresentNestedInnerStruct; + +typedef struct UnkPresentNestedOuterStruct { + /* 0x00 */ s32 unk00; + /* 0x04 */ UnkPresentNestedInnerStruct unk_04[11]; +} UnkPresentNestedOuterStruct; + +typedef struct UnkPresentStruct7 { + /* 0x00 */ s32 unk_00; + /* 0x04 */ float unk_04; +} UnkPresentStruct7; + +extern omObjData *lbl_1_bss_10; +extern omObjData *lbl_1_bss_8; +extern Process *lbl_1_bss_4; + +void fn_1_144(s16 arg0, s32 arg1, s32 arg2); +void fn_1_334(s16 arg0, s32 arg1, float arg8, s32 arg2); +omObjData *fn_1_6B4(); +void fn_1_920(omObjData *object, float arg8, float arg9, float argA, s32 arg1); +void fn_1_9A4(omObjData *object, float arg8, float arg9, float argA, s32 arg1); +void fn_1_BF8(omObjData *object); +omObjData *fn_1_1458(void); +void fn_1_180C(omObjData *object, s32 arg1); +s32 fn_1_1850(omObjData *object); +omObjData *fn_1_39A8(void); +UnkWindowDataStruct *fn_1_3EA4(s32 arg0); +void fn_1_4080(UnkWindowDataStruct *windowData); +void fn_1_4098(UnkWindowDataStruct *windowData); +void fn_1_40B0(UnkWindowDataStruct *windowData, u32 mess); +omObjData *fn_1_42F4(void); +void fn_1_45C0(omObjData *arg0, s32 arg1); +s32 fn_1_4604(omObjData *object); + +#endif diff --git a/include/REL/staffDll.h b/include/REL/staffDll.h new file mode 100644 index 00000000..21e81970 --- /dev/null +++ b/include/REL/staffDll.h @@ -0,0 +1,15 @@ +#ifndef STAFFDLL_H +#define STAFFDLL_H + +#include "dolphin/types.h" + +typedef struct UnkStaffDllStruct { + /* 0x00 */ u32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ float unk_08; + /* 0x0C */ u32 unk_0C; + /* 0x10 */ s32 unk_10; + /* 0x14 */ s32 unk_14; +} UnkStaffDllStruct; + +#endif diff --git a/include/REL/w20Dll.h b/include/REL/w20Dll.h new file mode 100644 index 00000000..484b0f77 --- /dev/null +++ b/include/REL/w20Dll.h @@ -0,0 +1,12 @@ +#ifndef REL_W20_H +#define REL_W20_H + +#include "dolphin/types.h" + +typedef struct UnkW20BoardData { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s16 unk_04; + /* 0x06 */ s16 unk_06; +} UnkW20BoardData; + +#endif diff --git a/include/ext_math.h b/include/ext_math.h index 6f1703c9..b9f396c8 100644 --- a/include/ext_math.h +++ b/include/ext_math.h @@ -12,9 +12,10 @@ typedef struct vec2f { #define ABS(x) (((x) < 0) ? -(x) : (x)) #define VECDistanceXZ(a, b) sqrtf((((a)->x-(b)->x)*((a)->x-(b)->x))+(((a)->z-(b)->z)*((a)->z-(b)->z))) -#define VECDistanceAlt(a, b) sqrtf((((a)->x-(b)->x)*((a)->x-(b)->x))+(((a)->y-(b)->y)*((a)->y-(b)->y))+(((a)->z-(b)->z)*((a)->z-(b)->z))) +#define VECDistanceZY(a, b) sqrtf((((a)->z-(b)->z)*((a)->z-(b)->z))+(((a)->y-(b)->y)*((a)->y-(b)->y))) #define VECMagXZ(a) sqrtf(((a)->x*(a)->x)+((a)->z*(a)->z)) +#define VECMagPoint(x, y, z) sqrtf(((x)*(x))+((y)*(y))+((z)*(z))) #define sind(x) sin(M_PI*(x)/180.0) #define cosd(x) cos(M_PI*(x)/180.0) diff --git a/include/game/board/window.h b/include/game/board/window.h index bf594796..eb015c5f 100644 --- a/include/game/board/window.h +++ b/include/game/board/window.h @@ -10,7 +10,7 @@ void BoardWinUnusedArraySet(f32*); void BoardWinKillAll(void); void BoardWinDestroy(void); void BoardWinProc(void); -int BoardWinChoiceGet(void); +s32 BoardWinChoiceGet(void); void BoardWinPause(void); void BoardWinCreateChoice(s32 pos, u32 mess, s32 portrait, s32 choice); void BoardWinCreate(s32 pos, u32 mess, s32 portrait); @@ -21,7 +21,7 @@ void BoardWinAttrSet(s32 attr); void BoardWinAttrReset(s32 attr); void BoardWinChoiceDisable(s32 choice); void BoardWinKeyWait(void); -int BoardWinSpeedGet(void); +s32 BoardWinSpeedGet(void); void BoardWinSpeedSet(s32 value); s16 BoardWinChoiceNowGet(void); void BoardWinPriSet(s16 prio); diff --git a/include/game/chrman.h b/include/game/chrman.h index 0dd38dc2..d305e3a6 100755 --- a/include/game/chrman.h +++ b/include/game/chrman.h @@ -10,7 +10,7 @@ void CharARAMClose(s16 character); void CharKill(s16 arg0); void CharKillAll(void); s16 CharModelCreate(s16 character, s16 lod); -s16 CharModelMotionCreate(s16 character, s32 arg1); +s16 CharModelMotionCreate(s16 character, s32 data_num); void CharModelMotionIndexSet(s16 character, s16 arg1, s32 arg2); void CharModelMotionKill(s16 character, u32 motion); void CharModelMotionDataClose(s16 character); diff --git a/include/game/data.h b/include/game/data.h index 889a931c..f41a3816 100644 --- a/include/game/data.h +++ b/include/game/data.h @@ -30,7 +30,7 @@ typedef struct data_read_stat { } DataReadStat; void HuDataInit(void); -int HuDataReadChk(s32 data_num); +s32 HuDataReadChk(s32 data_num); DataReadStat *HuDataGetStatus(void *dir_ptr); void *HuDataGetDirPtr(s32 data_num); DataReadStat *HuDataDirRead(s32 data_num); @@ -52,7 +52,7 @@ void HuDataDirClose(s32 data_id); void HuDataDirCloseNum(s32 num); void *HuDataReadNumHeapShortForce(s32 data_id, s32 num, HeapID heap); -void HuDecodeData(void *src, void *dst, u32 size, int decode_type); +void HuDecodeData(void *src, void *dst, u32 size, s32 decode_type); extern u32 DirDataSize; diff --git a/include/game/frand.h b/include/game/frand.h index 39e6d1b6..c18dde16 100644 --- a/include/game/frand.h +++ b/include/game/frand.h @@ -4,6 +4,7 @@ #include "dolphin/types.h" #define frandBool() (((s32)frand() & 0x1)) +#define frandu8() (((u32)frand() & 0xFF)) #define frand8() (((s32)frand() & 0xFF)) #define frandmods(range) ((s32)frand() % (range)) #define frand16() (((s32)frand() & 0xFFFF)) diff --git a/include/game/gamework.h b/include/game/gamework.h index 12da26f5..a4c41334 100644 --- a/include/game/gamework.h +++ b/include/game/gamework.h @@ -7,30 +7,30 @@ void GWInit(void); void GWGameStatReset(void); s32 GWMessSpeedGet(void); s32 GWMessDelayGet(void); -void GWMGRecordSet(int index, s32 value); -s32 GWMGRecordGet(int index); -void GWCharColorGet(int character, GXColor *color); -void GWBoardPlayCountSet(int board, u8 value); -void GWBoardPlayCountAdd(int board, u8 value); -u8 GWBoardPlayCountGet(int board); -void GWBoardMaxStarsSet(int board, int value); -u16 GWBoardMaxStarsGet(int board); -void GWBoardMaxCoinsSet(int board, int value); -u16 GWBoardMaxCoinsGet(int board); -int GWBoardWinCountInc(int character, int board); -int GWBoardWinCountGet(int character, int board); -void GWBoardWinCountSet(int character, int board, int value); -int GWMGAvailGet(int id); -int GWMGAvailSet(int id); -int GWMGCustomGet(int id); -int GWMGCustomSet(int id); -int GWMGCustomReset(int id); -s16 GWCoinsGet(int player); -void GWCoinsSet(int player, s16 value); -void GWCoinsAdd(int player, s16 amount); -void GWStarsSet(int player, s16 value); -void GWStarsAdd(int player, s16 amount); -s32 GWStarsGet(int player); +void GWMGRecordSet(s32 index, s32 value); +s32 GWMGRecordGet(s32 index); +void GWCharColorGet(s32 character, GXColor *color); +void GWBoardPlayCountSet(s32 board, u8 value); +void GWBoardPlayCountAdd(s32 board, u8 value); +u8 GWBoardPlayCountGet(s32 board); +void GWBoardMaxStarsSet(s32 board, s32 value); +u16 GWBoardMaxStarsGet(s32 board); +void GWBoardMaxCoinsSet(s32 board, s32 value); +u16 GWBoardMaxCoinsGet(s32 board); +s32 GWBoardWinCountInc(s32 character, s32 board); +s32 GWBoardWinCountGet(s32 character, s32 board); +void GWBoardWinCountSet(s32 character, s32 board, s32 value); +s32 GWMGAvailGet(s32 id); +s32 GWMGAvailSet(s32 id); +s32 GWMGCustomGet(s32 id); +s32 GWMGCustomSet(s32 id); +s32 GWMGCustomReset(s32 id); +s16 GWCoinsGet(s32 player); +void GWCoinsSet(s32 player, s16 value); +void GWCoinsAdd(s32 player, s16 amount); +void GWStarsSet(s32 player, s16 value); +void GWStarsAdd(s32 player, s16 amount); +s32 GWStarsGet(s32 player); void GWTotalStarsSet(s16 value); void GWTotalStarsAdd(s16 amount); u16 GWTotalStarsGet(void); diff --git a/include/game/gamework_data.h b/include/game/gamework_data.h index 5b3d2a26..18fe16b1 100644 --- a/include/game/gamework_data.h +++ b/include/game/gamework_data.h @@ -186,6 +186,12 @@ static inline void GWRumbleSet(s32 value) } } +static inline s32 GWBonusStarGet(void) +{ + return GWSystem.bonus_star; +} + + static inline s32 GWMGExplainGet(void) { return GWSystem.explain_mg; diff --git a/include/game/hsfanim.h b/include/game/hsfanim.h index edfe1862..e06f19f9 100644 --- a/include/game/hsfanim.h +++ b/include/game/hsfanim.h @@ -41,7 +41,7 @@ typedef struct particle_data { /* 0x28 */ float unk_28; /* 0x2C */ u8 unk_2C; /* 0x2D */ u8 unk_2D; - /* 0x2E */ char unk_2E[2]; + /* 0x2E */ s16 unk_2E; /* 0x30 */ s16 unk_30; /* 0x32 */ char unk_32[2]; /* 0x34 */ u32 unk_34; diff --git a/include/game/hsfload.h b/include/game/hsfload.h index 9db51807..1b67cb21 100644 --- a/include/game/hsfload.h +++ b/include/game/hsfload.h @@ -7,6 +7,6 @@ HsfData *LoadHSF(void *data); void ClusterAdjustObject(HsfData *model, HsfData *src_model); char *SetName(u32 *str_ofs); char *MakeObjectName(char *name); -int CmpObjectName(char *name1, char *name2); +s32 CmpObjectName(char *name1, char *name2); #endif \ No newline at end of file diff --git a/include/game/hsfman.h b/include/game/hsfman.h index b0481822..f90b11db 100644 --- a/include/game/hsfman.h +++ b/include/game/hsfman.h @@ -191,8 +191,8 @@ void Hu3DGLightSpotSet(s16, u16, f32); void Hu3DLLightSpotSet(s16, s16, u16, f32); void Hu3DGLightInfinitytSet(s16); void Hu3DLLightInfinitytSet(s16, s16); -void Hu3DGLightPointSet(s16, u16, f32, f32); -void Hu3DLLightPointSet(s16, s16, u16, f32, f32); +void Hu3DGLightPointSet(s16, f32, f32, u16); +void Hu3DLLightPointSet(s16, s16, f32, f32, u16); void Hu3DGLightKill(s16); void Hu3DLLightKill(s16, s16); void Hu3DLightAllKill(void); diff --git a/include/game/jmp.h b/include/game/jmp.h index 5e2b8434..0aadbc43 100755 --- a/include/game/jmp.h +++ b/include/game/jmp.h @@ -13,7 +13,7 @@ typedef struct jump_buf { double flt_regs[19]; } jmp_buf; -int gcsetjmp(jmp_buf *jump); -int gclongjmp(jmp_buf *jump, int status); +s32 gcsetjmp(jmp_buf *jump); +s32 gclongjmp(jmp_buf *jump, s32 status); #endif diff --git a/include/game/minigame_seq.h b/include/game/minigame_seq.h index 4bfd3107..d54895c9 100644 --- a/include/game/minigame_seq.h +++ b/include/game/minigame_seq.h @@ -43,8 +43,8 @@ typedef struct seq_work SeqWork; -typedef int (*SeqUpdateFunc)(SeqWork *work); -typedef int (*SeqInitFunc)(SeqWork *work, va_list params); +typedef s32 (*SeqUpdateFunc)(SeqWork *work); +typedef s32 (*SeqInitFunc)(SeqWork *work, va_list params); typedef struct seq_work { SeqUpdateFunc update; diff --git a/include/game/object.h b/include/game/object.h index eab5424d..95061c52 100644 --- a/include/game/object.h +++ b/include/game/object.h @@ -32,8 +32,8 @@ typedef void (*omObjFunc)(struct om_obj_data *); typedef struct om_ovl_his_data { OverlayID overlay; - int event; - int stat; + s32 event; + s32 stat; } omOvlHisData; typedef struct om_obj_data { @@ -65,14 +65,14 @@ typedef struct om_dll_data { s32 ret; } omDllData; -void omMasterInit(int prio, FileListEntry *ovl_list, int ovl_count, OverlayID start_ovl); -void omOvlCallEx(OverlayID overlay, s16 arg2, int event, int stat); -void omOvlGotoEx(OverlayID overlay, s16 arg2, int event, int stat); +void omMasterInit(s32 prio, FileListEntry *ovl_list, s32 ovl_count, OverlayID start_ovl); +void omOvlCallEx(OverlayID overlay, s16 arg2, s32 event, s32 stat); +void omOvlGotoEx(OverlayID overlay, s16 arg2, s32 event, s32 stat); void omOvlReturnEx(s16 level, s16 arg2); void omOvlKill(s16 arg); -void omOvlHisChg(s32 level, OverlayID overlay, int event, int stat); +void omOvlHisChg(s32 level, OverlayID overlay, s32 event, s32 stat); omOvlHisData *omOvlHisGet(s32 level); -Process *omInitObjMan(s16 max_objs, int prio); +Process *omInitObjMan(s16 max_objs, s32 prio); void omDestroyObjMan(void); omObjData *omAddObjEx(Process *objman_process, s16 prio, u16 mdlcnt, u16 mtncnt, s16 group, omObjFunc func); void omAddMember(Process *objman_process, u16 group, omObjData *object); @@ -93,7 +93,7 @@ OverlayID omCurrentOvlGet(void); void omDLLDBGOut(void); void omDLLInit(FileListEntry *ovl_list); -int omDLLStart(s16 overlay, s16 flag); +s32 omDLLStart(s16 overlay, s16 flag); void omDLLNumEnd(s16 overlay, s16 flag); void omDLLEnd(s16 dllno, s16 flag); omDllData *omDLLLink(omDllData **dll_ptr, s16 overlay, s16 flag); @@ -113,11 +113,11 @@ extern omObjData *omDBGSysKeyObj; extern Process *omwatchproc; extern OverlayID omnextovl; extern OverlayID omcurovl; -extern int omcurdll; -extern int omovlhisidx; -extern int omovlevtno; -extern int omnextovlevtno; -extern int omovlstat; +extern s32 omcurdll; +extern s32 omovlhisidx; +extern s32 omovlevtno; +extern s32 omnextovlevtno; +extern s32 omovlstat; extern char omUPauseFlag; extern s16 omSysExitReq; extern s16 omdispinfo; diff --git a/include/game/process.h b/include/game/process.h index c83b9cf2..3bd6a297 100644 --- a/include/game/process.h +++ b/include/game/process.h @@ -20,7 +20,7 @@ typedef struct process { u16 exec; u16 stat; u16 prio; - int sleep_time; + s32 sleep_time; u32 base_sp; jmp_buf jump; void (*dtor)(void); @@ -35,19 +35,19 @@ void HuPrcChildUnlink(Process *process); Process *HuPrcChildCreate(void (*func)(void), u16 prio, u32 stack_size, s32 extra_size, Process *parent); void HuPrcChildWatch(void); Process *HuPrcCurrentGet(void); -int HuPrcKill(Process *process); +s32 HuPrcKill(Process *process); void HuPrcChildKill(Process *process); -void HuPrcSleep(int time); +void HuPrcSleep(s32 time); void HuPrcVSleep(); void HuPrcWakeup(Process *process); void HuPrcDestructorSet2(Process *process, void (*func)(void)); void HuPrcDestructorSet(void (*func)(void)); -void HuPrcCall(int tick); +void HuPrcCall(s32 tick); void *HuPrcMemAlloc(s32 size); void HuPrcMemFree(void *ptr); void HuPrcSetStat(Process *process, u16 value); void HuPrcResetStat(Process *process, u16 value); -void HuPrcAllPause(int flag); -void HuPrcAllUPause(int flag); +void HuPrcAllPause(s32 flag); +void HuPrcAllUPause(s32 flag); #endif \ No newline at end of file diff --git a/include/game/window.h b/include/game/window.h index a2ff8eb1..85be8616 100644 --- a/include/game/window.h +++ b/include/game/window.h @@ -109,7 +109,9 @@ s16 HuWinChoiceGet(s16 window, s16 start_choice); s16 HuWinChoiceNumGet(s16 window); void HuWinChoiceDisable(s16 window, s16 choice); s16 HuWinChoiceNowGet(s16 window); +#ifndef HUWIN_USE_OLD_DEFS void HuWinMesWait(s16 window); +#endif s16 HuWinAnimSet(s16 window, AnimData *anim, s16 bank, float x, float y); s16 HuWinSprSet(s16 window, s16 sprite, float x, float y); void HuWinSprPosSet(s16 window, s16 index, float x, float y); diff --git a/src/REL/E3setupDLL/mgselect.c b/src/REL/E3setupDLL/mgselect.c index e69de29b..1c9213b4 100644 --- a/src/REL/E3setupDLL/mgselect.c +++ b/src/REL/E3setupDLL/mgselect.c @@ -0,0 +1,501 @@ +#include "ext_math.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/init.h" +#include "game/objsub.h" +#include "game/sprite.h" +#include "game/window.h" +#include "rel_sqrt_consts.h" + +#include "REL/E3SetupDLL.h" + +static s16 mgDefault; +static omObjData *mgInterfaceObj; +static omObjData *mgSelectObj; +static omObjData *mgPicObj; + +s32 lbl_2_bss_14; +s16 lbl_2_bss_10; +s16 lbl_2_bss_E; +s16 lbl_2_bss_C; +s16 lbl_2_bss_A; +static s16 lbl_2_bss_0[5]; + +float lbl_2_data_0[] = { 0, 12000, 0, 0, 0, 0, 0, 0, -1 }; + +static void StartMGSelect(omObjData *object); +static void UpdatePad(omObjData *object); +static void CreateMGSelect(omObjData *object); +static void CreateMGPic(omObjData *object); +static void UpdateMGInterface(omObjData *object); +static void CreateMGInterface(omObjData *object); + +void E3MGSelectInit() +{ + s32 var_r29; + s32 var_r30; + Process *var_r31; + + for (var_r29 = 0, var_r30 = 0; var_r29 < 4; var_r29++) { + if (HuPadStatGet(var_r29) == 0) { + var_r30++; + } + } + e3ConfigPlayerCnt = var_r30; + if (var_r30 <= 0) { + OSReport("No pad detected\n"); + var_r30++; + } + mgDefault = 0; + HuSysVWaitSet(1); + var_r31 = omInitObjMan(0x50, 0x2000); + HuWinInit(1); + CRot.x = -4.0f; + CRot.y = 0.0f; + CRot.z = 0.0f; + Center.x = 0.0f; + Center.y = 160.0f; + Center.z = 0.0f; + CZoom = 1960.0; + e3CameraFov = 40.0f; + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, e3CameraFov, 100.0f, 25000.0f, 4.0f / 3.0f); + e3ViewObj = omAddObjEx(var_r31, 32730, 0, 0, -1, omOutView); + e3OvlWatchObj = omAddObjEx(var_r31, 200, 0, 0, -1, E3OvlWatchInit); + e3MenuMainObj = omAddObjEx(var_r31, 10, 0, 0, -1, StartMGSelect); + e3BGObj = omAddObjEx(var_r31, 0x14, 0, 0, -1, E3BGCreate); + mgInterfaceObj = omAddObjEx(var_r31, 20, 0, 0, -1, CreateMGInterface); + mgSelectObj = omAddObjEx(var_r31, 30, 0, 0, -1, CreateMGSelect); + mgPicObj = omAddObjEx(var_r31, 31, 0, 0, -1, CreateMGPic); + mgPicObj->work[0] = mgDefault; + E3LightInit(); + WipeCreate(1, 0, -1); +} + +s16 lbl_2_data_36[] = { 0x0023, 0x0026, 0x0029, 0x002C }; + +static s16 mgOvlTbl[] = { + 11, + 12, + 15, + 18, + 20, + 23, + 26, + 27, + 33, + 34, + 39, + 44, + 46, +}; + +static s16 mgIdTbl[] = { 403, 404, 407, 410, 412, 415, 418, 419, 425, 426, 431, 436, 438, 0 }; + +static s32 mgNameTbl[] = { + 0x00170003, + 0x00170004, + 0x00170007, + 0x0017000A, + 0x0017000C, + 0x0017000F, + 0x00170012, + 0x00170013, + 0x00170019, + 0x0017001A, + 0x0017001F, + 0x00170024, + 0x00170026, +}; + +char lbl_2_data_A8[] = "\013TEST MINIGAME NAME01\n test"; +char lbl_2_data_C9[] = "\013TEST MINIGAME NAME02"; +char lbl_2_data_DF[] = "\013TEST MINIGAME NAME03"; +char lbl_2_data_F5[] = "\013TEST MINIGAME NAME04"; +char lbl_2_data_10B[] = "\013TEST NAME05"; +char lbl_2_data_118[] = "\013TEST MINIGAME NAME06"; +char lbl_2_data_12E[] = "\013TEST NAME07"; +char lbl_2_data_13B[] = "\013TEST MINIGAME NAME08"; +char lbl_2_data_151[] = "\013TEST MINIGAME NAME09"; +char lbl_2_data_167[] = "\013TEST MINIGAME NAME10"; +char lbl_2_data_17D[] = "\013TEST MINIGAME NAME11"; +char lbl_2_data_193[] = "\013TEST MINIGAME NAME12"; +char lbl_2_data_1A9[] = "\013TEST MINIGAME NAME13"; + +static char *mgNameTestTbl[] = { + lbl_2_data_A8, + lbl_2_data_C9, + lbl_2_data_DF, + lbl_2_data_F5, + lbl_2_data_10B, + lbl_2_data_118, + lbl_2_data_12E, + lbl_2_data_13B, + lbl_2_data_151, + lbl_2_data_167, + lbl_2_data_17D, + lbl_2_data_193, + lbl_2_data_1A9, +}; + +static float cursorYOfsTbl[] = { -100.0f, -50.0f, 0.0f, 50.0f, 100.0f }; + +static s32 mgPicTbl[] = { 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52 }; + +static char startText[] = "\013\016\r PRESS START"; + +static void StartMGSelect(omObjData *object) +{ + HuAudSeqPlay(0x2B); + lbl_2_bss_14 = 0; + lbl_2_bss_10 = -1; + lbl_2_bss_C = 0x1E; + lbl_2_bss_A = 0; + object->func = UpdatePad; + worstVcount = 0; + object->work[0] = 0; + object->work[1] = 0; +} + +static void UpdatePad(omObjData *object) +{ + s32 i; + s32 players; + + if (e3ExitEnableF == 0) { + for (i = 0, players = 0; i < 4; i++) { + E3PadUpdate(i, &e3PadData[i]); + if (!e3PadData[i].enable) { + players++; + } + } + e3ConfigPlayerCnt = players; + } +} + +static void UpdateMGSelect(omObjData *object) +{ + mgSelect *var_r31; + s32 var_r30; + u32 var_r28; + s16 var_r27; + s16 var_r26; + s16 var_r25; + s16 var_r24; + u16 var_r23; + s16 var_r22; + s32 var_r21; + float sp8[2]; + + var_r31 = object->data; + var_r23 = e3PadData[e3PadCtrl].btnDown; + if (object->work[3] != 0) { + if ((var_r23 & 0x1100) != 0) { + HuAudFXPlay(1); + mgDefault = var_r31->unk_44; + var_r21 = mgIdTbl[var_r31->unk_44]; + GWMGAvailSet(var_r21); + GWSystem.mg_next = var_r21 - 401; + e3NextOvl = 3; + e3NextEvent = 0; + e3ExitMode = 2; + e3ExitEnableF = 1; + var_r28 = mgOvlTbl[var_r31->unk_44]; + + for (var_r30 = 0; var_r30 < 50; var_r30++) { + if (var_r28 == mgInfoTbl[var_r30].ovl) { + break; + } + } + if (var_r30 >= 50) { + e3ExitMode = 0; + e3NextOvl = 0; + }; + switch (mgInfoTbl[var_r30].type) { + case 0: + case 3: + case 4: + case 5: + case 6: + for (var_r30 = 0; var_r30 < 4; var_r30++) { + GWPlayerCfg[var_r30].group = var_r30; + } + break; + case 1: + var_r28 = frand(); + var_r28 &= 3; + for (var_r30 = 0; var_r30 < 4; var_r30++) { + if (var_r28 == var_r30) { + GWPlayerCfg[var_r30].group = 0; + } else { + GWPlayerCfg[var_r30].group = 1; + } + } + break; + case 2: + for (var_r30 = 0; var_r30 < 2; var_r30++) { + GWPlayerCfg[var_r30].group = 0; + } + for (var_r30 = 2; var_r30 < 4; var_r30++) { + GWPlayerCfg[var_r30].group = 1; + } + break; + } + object->work[3] = 0; + return; + } + if ((var_r23 & 0x200) != 0) { + HuAudFXPlay(3); + e3ExitMode = 0; + e3NextOvl = 0; + e3NextEvent = 0; + e3ExitEnableF = 1; + object->work[3] = 0; + return; + } + if (object->work[3] != 0) { + if ((var_r23 & 8) != 0) { + HuAudFXPlay(0); + var_r31->unk_44--; + if (var_r31->unk_44 < 0) { + var_r31->unk_44 = 0xC; + } + } else if ((var_r23 & 4) != 0) { + HuAudFXPlay(0); + var_r31->unk_44++; + if (var_r31->unk_44 >= 13) { + var_r31->unk_44 = 0; + } + } + if (var_r31->unk_46 != var_r31->unk_44) { + mgPicObj->work[0] = var_r31->unk_44; + var_r27 = var_r31->unk_44 - var_r31->unk_46; + if ((var_r27 > 1) || (var_r27 < -1)) { + if (var_r27 < 0) { + var_r27 = 1; + } else { + var_r27 = -1; + } + } + var_r25 = var_r31->unk_42 + var_r27; + if ((var_r25 < 0) || (var_r25 >= 5)) { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + var_r22 = var_r31->unk_2E[var_r30]; + var_r26 = var_r31->unk_38[var_r30]; + var_r24 = var_r26 - var_r27; + if ((var_r24 < 0) || (var_r24 >= 5)) { + var_r28 = mgNameTbl[var_r31->unk_44]; + HuWinMesSizeCancelCRSet(1); + HuWinMesMaxSizeGet(1, sp8, var_r28); + HuWinCenterPosSet(var_r22, (296.0f - sp8[0]) / -2.0f, (68.0f - sp8[1]) / -2.0f); + HuWinMesSet(var_r22, var_r28); + if (var_r24 < 0) { + var_r26 = 4; + } else { + var_r26 = 0; + } + } else { + var_r26 = var_r24; + } + HuWinPosSet(var_r22, 36.0f, 237.0f + cursorYOfsTbl[var_r26]); + var_r31->unk_38[var_r30] = var_r26; + } + } else { + var_r31->unk_42 = var_r25; + HuSprPosSet(var_r31->unk_1C, 1, 0.0f, cursorYOfsTbl[var_r25]); + } + var_r31->unk_46 = var_r31->unk_44; + } + } + } +} + +static void CreateMGSelect(omObjData *object) +{ + mgSelect *temp_r31; + s16 temp_r30; + s16 temp_r29; + s32 var_r28; + s16 var_r26; + s16 index2; + u32 temp_r22; + s32 temp_r21; + AnimData *temp_r25; + AnimData *temp_r23; + float sp8[2]; + + omSetStatBit(object, OM_STAT_MODEL_PAUSED); + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x48, MEMORY_DEFAULT_NUM); + temp_r31 = object->data; + index2 = 0; + temp_r30 = HuSprGrpCreate(3); + temp_r31->unk_1C = temp_r30; + HuSprGrpPosSet(temp_r30, 174.0f, 271.0f); + temp_r25 = HuSprAnimRead(HuDataReadNum(0x21, MEMORY_DEFAULT_NUM)); + temp_r31->unk_00[index2] = temp_r25; + temp_r29 = HuSprCreate(temp_r25, 0x7540, 0); + HuSprGrpMemberSet(temp_r30, index2, temp_r29); + index2++; + temp_r25 = HuSprAnimRead(HuDataReadNum(0x27, MEMORY_DEFAULT_NUM)); + temp_r31->unk_00[index2] = temp_r25; + temp_r29 = HuSprCreate(temp_r25, 0x64, 0); + HuSprGrpMemberSet(temp_r30, index2, temp_r29); + HuSprScaleSet(temp_r30, index2, 1.1f, 1.0f); + HuSprTPLvlSet(temp_r30, index2, 0.5f); + temp_r31->unk_42 = 0; + HuSprPosSet(temp_r30, index2, 0.0f, cursorYOfsTbl[temp_r31->unk_42]); + index2++; + temp_r25 = HuSprAnimRead(HuDataReadNum(0x35, MEMORY_DEFAULT_NUM)); + temp_r31->unk_00[index2++] = temp_r25; + temp_r23 = HuSprAnimRead(HuDataReadNum(0x36, MEMORY_DEFAULT_NUM)); + temp_r31->unk_00[index2++] = temp_r23; + temp_r30 = HuSprGrpCreate(2); + temp_r31->unk_1E = temp_r30; + HuSprGrpPosSet(temp_r30, 174.0f, 128.0f); + temp_r29 = HuSprCreate(temp_r25, 4, 0); + HuSprGrpMemberSet(temp_r30, 0, temp_r29); + temp_r29 = HuSprCreate(temp_r23, 6, 0); + HuSprGrpMemberSet(temp_r30, 1, temp_r29); + HuSprTPLvlSet(temp_r30, 1, 0.7f); + HuSprPosSet(temp_r30, 1, 0.0f, -4.0f); + temp_r30 = HuSprGrpCreate(2); + temp_r31->unk_20 = temp_r30; + HuSprGrpPosSet(temp_r30, 174.0f, 414.0f); + temp_r29 = HuSprCreate(temp_r25, 4, 1); + HuSprGrpMemberSet(temp_r30, 0, temp_r29); + temp_r29 = HuSprCreate(temp_r23, 6, 1); + HuSprGrpMemberSet(temp_r30, 1, temp_r29); + HuSprTPLvlSet(temp_r30, 1, 0.7f); + HuSprPosSet(temp_r30, 1, 0.0f, -4.0f); + + temp_r21 = GWSystem.mg_next + 401; + var_r26 = temp_r21; + for (var_r28 = 0; var_r28 < 13;) { + if (var_r26 != mgIdTbl[var_r28]) { + var_r28++; + } else { + break; + } + } + if (var_r28 >= 13) { + var_r28 = 0; + } + mgDefault = var_r28; + var_r26 = mgDefault; + mgPicObj->work[0] = var_r26; + temp_r31->unk_44 = var_r26; + temp_r31->unk_46 = var_r26; + + for (var_r28 = 0; var_r28 < 5;) { + if (var_r26 >= 13) { + var_r26 = 0; + } + temp_r29 = HuWinCreate(36.0f, 237.0f + cursorYOfsTbl[var_r28], 0x128, 0x44, 0x4E20); + temp_r31->unk_2E[var_r28] = temp_r29; + temp_r31->unk_38[var_r28] = var_r28; + HuWinBGTPLvlSet(temp_r29, 0.0f); + HuWinMesSpeedSet(temp_r29, 0); + temp_r22 = mgNameTbl[var_r26]; + HuWinAttrSet(temp_r29, 0x100); + HuWinMesSizeCancelCRSet(1); + HuWinMesMaxSizeGet(1, sp8, temp_r22); + HuWinCenterPosSet(temp_r29, (296.0f - sp8[0]) / -2.0f, (68.0f - sp8[1]) / -2.0f); + HuWinMesSet(temp_r29, temp_r22); + var_r28++; + var_r26++; + } + object->work[3] = 1; + object->func = UpdateMGSelect; +} + +static void UpdateMGPic(omObjData *object) +{ + mgPic *temp_r30 = (mgPic *)object->data; + s16 temp_r29; + + if (object->work[1] != object->work[0]) { + temp_r29 = temp_r30->unk_40; + HuSprAttrSet(temp_r29, object->work[1], 4); + HuSprAttrReset(temp_r29, object->work[0], 4); + object->work[1] = object->work[0]; + } +} + +static void CreateMGPic(omObjData *object) +{ + mgPic *temp_r28; + AnimData *temp_r3_2; + s16 temp_r3; + s32 var_r30; + s32 index; + s16 index2; + s16 group; + + omSetStatBit(object, OM_STAT_MODEL_PAUSED); + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(mgPic), MEMORY_DEFAULT_NUM); + temp_r28 = object->data; + index2 = 0; + temp_r3 = HuSprGrpCreate(14); + temp_r28->unk_40 = temp_r3; + HuSprGrpPosSet(temp_r3, 444.0f, 228.0f); + + for (var_r30 = 0; var_r30 < 13; var_r30++) { + temp_r3_2 = HuSprAnimRead(HuDataReadNum(mgPicTbl[var_r30], MEMORY_DEFAULT_NUM)); + temp_r28->unk_00[var_r30] = temp_r3_2; + group = HuSprCreate(temp_r3_2, 0x2710, 0); + HuSprGrpMemberSet(temp_r3, var_r30, group); + HuSprScaleSet(temp_r3, var_r30, 0.6f, 0.6f); + HuSprAttrSet(temp_r3, var_r30, 4); + } + index2 = var_r30; + temp_r3_2 = HuSprAnimRead(HuDataReadNum(0x22, MEMORY_DEFAULT_NUM)); + temp_r28->unk_00[index2] = temp_r3_2; + group = HuSprCreate(temp_r3_2, 0x7540, 0); + HuSprGrpMemberSet(temp_r3, index2, group); + HuSprTPLvlSet(temp_r3, index2, 0.7f); + index2++; + object->work[1] = object->work[0]; + HuSprAttrReset(temp_r3, object->work[1], 4); + object->func = UpdateMGPic; +} + +static void UpdateMGInterface(omObjData *object) { void *sp8 = object->data; } + +static void CreateMGInterface(omObjData *object) +{ + mgInterface *unkStruct; + s16 index; + s16 group; + s16 index2; + AnimData *temp_r3_2; + float sp8[2]; + + omSetStatBit(object, OM_STAT_MODEL_PAUSED); + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(mgInterface), MEMORY_DEFAULT_NUM); + unkStruct = object->data; + index2 = 0; + group = HuSprGrpCreate(1); + unkStruct->group = group; + HuSprGrpPosSet(group, 288.0f, 64.0f); + temp_r3_2 = HuSprAnimRead(HuDataReadNum(0x24, MEMORY_DEFAULT_NUM)); + unkStruct->unk_00[index2] = temp_r3_2; + index = HuSprCreate(temp_r3_2, 0x2710, 0); + HuSprGrpMemberSet(group, 0, index); + index2++; + group = HuSprGrpCreate(1); + unkStruct->group2 = group; + HuSprGrpPosSet(group, 444.0f, 384.0f); + temp_r3_2 = HuSprAnimRead(HuDataReadNum(0x23, MEMORY_DEFAULT_NUM)); + unkStruct->unk_00[index2] = temp_r3_2; + index = HuSprCreate(temp_r3_2, 0x271A, 0); + HuSprGrpMemberSet(group, 0, index); + index2++; + HuWinMesMaxSizeGet(1, sp8, &startText); + index = HuWinCreate(340.0f, 362.0f, sp8[0], sp8[1], 0); + unkStruct->unk_2C = index; + HuWinMesColSet(index, 0); + HuWinBGTPLvlSet(index, 0.0f); + HuWinMesSpeedSet(index, 0); + HuWinMesSet(index, MAKE_MESSID_PTR(startText)); + object->func = UpdateMGInterface; +} diff --git a/src/REL/board_executor.c b/src/REL/board_executor.c index b906db0e..c884fbb7 100644 --- a/src/REL/board_executor.c +++ b/src/REL/board_executor.c @@ -5,7 +5,7 @@ static void InitBoard(void) { BoardCommonInit(BoardCreate, BoardDestroy); } -int _prolog(void) { +s32 _prolog(void) { const VoidFunc* ctors = _ctors; while (*ctors != 0) { (**ctors)(); diff --git a/src/REL/bootDll/main.c b/src/REL/bootDll/main.c index b5b6f749..199b450d 100644 --- a/src/REL/bootDll/main.c +++ b/src/REL/bootDll/main.c @@ -13,6 +13,8 @@ #include "game/thpmain.h" #include "game/msm.h" #include "math.h" +#include "ext_math.h" + #include "rel_sqrt_consts.h" #include "data_num/title.h" @@ -375,15 +377,15 @@ void fn_1_1178(void) y = lbl_1_bss_3C[i].y; z = lbl_1_bss_3C[i].z; - pos.x = (((sin((M_PI*y)/180.0)*cos((M_PI*x)/180.0))*lbl_1_bss_1C[i])+lbl_1_bss_24[i].x); - pos.y = (-sin((M_PI*x)/180.0)*lbl_1_bss_1C[i])+lbl_1_bss_24[i].y; - pos.z = ((cos((M_PI*y)/180.0)*cos((M_PI*x)/180.0))*lbl_1_bss_1C[i])+lbl_1_bss_24[i].z; + pos.x = (((sind(y)*cosd(x))*lbl_1_bss_1C[i])+lbl_1_bss_24[i].x); + pos.y = (-sind(x)*lbl_1_bss_1C[i])+lbl_1_bss_24[i].y; + pos.z = ((cosd(y)*cosd(x))*lbl_1_bss_1C[i])+lbl_1_bss_24[i].z; target.x = lbl_1_bss_24[i].x; target.y = lbl_1_bss_24[i].y; target.z = lbl_1_bss_24[i].z; - up.x = sin((M_PI*y)/180.0)*sin((M_PI*x)/180.0); - up.y = cos((M_PI*x)/180.0); - up.z = cos((M_PI*y)/180.0)*sin((M_PI*x)/180.0); + up.x = sind(y)*sind(x); + up.y = cosd(x); + up.z = cosd(y)*sind(x); Hu3DCameraPosSet(lbl_1_data_58[i], pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z); } } @@ -408,27 +410,27 @@ void fn_1_152C(void) { if (lbl_1_bss_1C[0] < 100.0f) { lbl_1_bss_1C[0] = 100.0f; } - pos.x = lbl_1_bss_24[0].x + (lbl_1_bss_1C[0] * (sin((M_PI * lbl_1_bss_3C[0].y) / 180.0) * cos((M_PI * lbl_1_bss_3C[0].x) / 180.0))); - pos.y = (lbl_1_bss_24[0].y + (lbl_1_bss_1C[0] * -sin((M_PI * lbl_1_bss_3C[0].x) / 180.0))); - pos.z = (lbl_1_bss_24[0].z + (lbl_1_bss_1C[0] * (cos((M_PI * lbl_1_bss_3C[0].y) / 180.0) * cos((M_PI * lbl_1_bss_3C[0].x) / 180.0)))); + pos.x = lbl_1_bss_24[0].x + (lbl_1_bss_1C[0] * (sind(lbl_1_bss_3C[0].y) * cosd(lbl_1_bss_3C[0].x))); + pos.y = (lbl_1_bss_24[0].y + (lbl_1_bss_1C[0] * -sind(lbl_1_bss_3C[0].x))); + pos.z = (lbl_1_bss_24[0].z + (lbl_1_bss_1C[0] * (cosd(lbl_1_bss_3C[0].y) * cosd(lbl_1_bss_3C[0].x)))); offset.x = lbl_1_bss_24[0].x - pos.x; offset.y = lbl_1_bss_24[0].y - pos.y; offset.z = lbl_1_bss_24[0].z - pos.z; - dir.x = (sin((M_PI * lbl_1_bss_3C[0].y) / 180.0) * sin((M_PI * lbl_1_bss_3C[0].x) / 180.0)); - dir.y = cos((M_PI * lbl_1_bss_3C[0].x) / 180.0); - dir.z = (cos((M_PI * lbl_1_bss_3C[0].y) / 180.0) * sin((M_PI * lbl_1_bss_3C[0].x) / 180.0)); + dir.x = (sind(lbl_1_bss_3C[0].y) * sind(lbl_1_bss_3C[0].x)); + dir.y = cosd(lbl_1_bss_3C[0].x); + dir.z = (cosd(lbl_1_bss_3C[0].y) * sind(lbl_1_bss_3C[0].x)); z_rot = lbl_1_bss_3C[0].z; - y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cos((M_PI * z_rot) / 180.0)) - + dir.y * (offset.x * offset.y * (1.0f - cos((M_PI * z_rot) / 180.0)) - offset.z * sin((M_PI * z_rot) / 180.0)) - + dir.z * (offset.x * offset.z * (1.0f - cos((M_PI * z_rot) / 180.0)) + offset.y * sin((M_PI * z_rot) / 180.0)); + y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cosd(z_rot)) + + dir.y * (offset.x * offset.y * (1.0f - cosd(z_rot)) - offset.z * sind(z_rot)) + + dir.z * (offset.x * offset.z * (1.0f - cosd(z_rot)) + offset.y * sind(z_rot)); - y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cos((M_PI * z_rot) / 180.0)) - + dir.x * (offset.x * offset.y * (1.0f - cos((M_PI * z_rot) / 180.0)) + offset.z * sin((M_PI * z_rot) / 180.0)) - + dir.z * (offset.y * offset.z * (1.0f - cos((M_PI * z_rot) / 180.0)) - offset.x * sin((M_PI * z_rot) / 180.0)); + y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cosd(z_rot)) + + dir.x * (offset.x * offset.y * (1.0f - cosd(z_rot)) + offset.z * sind(z_rot)) + + dir.z * (offset.y * offset.z * (1.0f - cosd(z_rot)) - offset.x * sind(z_rot)); - y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cos((M_PI * z_rot) / 180.0)) - + (dir.x * (offset.x * offset.z * (1.0 - cos((M_PI * z_rot) / 180.0)) - offset.y * sin((M_PI * z_rot) / 180.0)) - + dir.y * (offset.y * offset.z * (1.0 - cos((M_PI * z_rot) / 180.0)) + offset.x * sin((M_PI * z_rot) / 180.0))); + y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cosd(z_rot)) + + (dir.x * (offset.x * offset.z * (1.0 - cosd(z_rot)) - offset.y * sind(z_rot)) + + dir.y * (offset.y * offset.z * (1.0 - cosd(z_rot)) + offset.x * sind(z_rot))); PSVECCrossProduct(&dir, &offset, &offset); PSVECNormalize(&offset, &offset); @@ -507,7 +509,7 @@ static BOOL TitleProc(void) } HuSprAttrReset(titleGroup, 3, HUSPR_ATTR_DISPOFF); for(i=1; i<=50; i++) { - scale = (cos((i*1.8)*M_PI/180.0)*10.0)+1.0; + scale = (cosd(i*1.8)*10.0)+1.0; HuSprScaleSet(titleGroup, 3, scale, scale); HuSprTPLvlSet(titleGroup, 3, i/50.0); HuPrcVSleep(); @@ -525,7 +527,7 @@ static BOOL TitleProc(void) HuSprAttrSet(titleGroup, 2, HUSPR_ATTR_DISPOFF); return 1; } - scale = (sin((i*scale_time)*M_PI/180.0)*0.1)+0.9; + scale = (sind(i*scale_time)*0.1)+0.9; scale_time += 0.05; if(scale_time > 5) { scale_time = 5; @@ -548,4 +550,3 @@ static BOOL TitleProc(void) return 0; } -char data_pad[] = "\0\0\0\0\0\0\0"; \ No newline at end of file diff --git a/src/REL/executor.c b/src/REL/executor.c index 8cc50de0..4acadcff 100644 --- a/src/REL/executor.c +++ b/src/REL/executor.c @@ -1,6 +1,6 @@ #include "REL/executor.h" -int _prolog(void) { +s32 _prolog(void) { const VoidFunc* ctors = _ctors; while (*ctors != 0) { (**ctors)(); diff --git a/src/REL/instDll/main.c b/src/REL/instDll/main.c index fa3066d4..b5e83a73 100644 --- a/src/REL/instDll/main.c +++ b/src/REL/instDll/main.c @@ -19,6 +19,7 @@ #include "game/chrman.h" #include "math.h" +#include "ext_math.h" #include "rel_sqrt_consts.h" @@ -260,7 +261,7 @@ static void fn_1_994(void) } pos_z = -500.0f; for(i=0; i<=50; i++) { - Hu3DModelPosSet(model, 0.0f, 2500.0*cos(M_PI*(i*1.8f)/180.0)-200.0, pos_z); + Hu3DModelPosSet(model, 0.0f, 2500.0*cosd(i*1.8f)-200.0, pos_z); Hu3DModelRotSet(model, 0, 0, 45.0f*(1.0f-(i/50.0f))); pos_z += 50.0/7.0; Hu3DShadowTPLvlSet(0.5*(i/50.0f)); @@ -269,8 +270,8 @@ static void fn_1_994(void) HuAudFXPlay(1211); Hu3DModelAttrReset(model, 0x40000002); for(i=1; i<=20; i++) { - Hu3DModelPosSet(model, 0.0f, (200.0*(sin(M_PI*(i*2.25f)/180.0)*(1.0/sin(M_PI/4))))-200.0, pos_z); - rot_x = (20-i)*cos(M_PI*(i*13.5f)/180.0); + Hu3DModelPosSet(model, 0.0f, (200.0*(sind(i*2.25f)*(1.0/sind(45))))-200.0, pos_z); + rot_x = (20-i)*cosd(i*13.5f); Hu3DModelRotSet(model, rot_x, 0.0f, 0.0f); pos_z += 50.0/7.0; HuPrcVSleep(); @@ -546,7 +547,7 @@ static void fn_1_17E4(void) CharModelMotionSet(char_tbl[j], mot_tbl[j][1]); } if(time <= 30) { - Hu3DModelPosSet(player_mdl[j], player_pos[j].x, player_pos[j].y+(300.0*sin(M_PI*(time*9.0f)/180.0)), player_pos[j].z-(time*20)); + Hu3DModelPosSet(player_mdl[j], player_pos[j].x, player_pos[j].y+(300.0*sind(time*9.0f)), player_pos[j].z-(time*20)); if(time <= 10) { tplvl = 1-(0.1*time); Hu3DModelTPLvlSet(platform_mdl[j], 0.5*tplvl); @@ -624,11 +625,11 @@ static void fn_1_220C(void) Hu3DMotionTimeSet(model, 40); HuAudFXPlay(lbl_1_data_10C[lbl_1_bss_12*2]); for(i=0; i<=20; i++) { - Hu3DModelPosSet(model, -153.0f-(100.0f-(100.0f*(i/20.0f))), (100.0*sin(M_PI*(i*9.0f)/180.0)) + -150.0 + ofs_x, 356.0f); + Hu3DModelPosSet(model, -153.0f-(100.0f-(100.0f*(i/20.0f))), (100.0*sind(i*9.0f)) + -150.0 + ofs_x, 356.0f); HuPrcVSleep(); } for(i=0; i<=10; i++) { - Hu3DModelPosSet(model, -153.0f, (15.0*sin(M_PI*(i*18.0f)/180.0)) + -150.f + ofs_x, 356.0f); + Hu3DModelPosSet(model, -153.0f, (15.0*sind(i*18.0f)) + -150.f + ofs_x, 356.0f); Hu3DModelRotSet(model, 0.0f, 90-((i/10.0f)*70), 0); HuPrcVSleep(); } @@ -645,7 +646,7 @@ static void fn_1_220C(void) HuPrcSleep(20); HuAudFXPlay(lbl_1_data_10C[(lbl_1_bss_12*2)+1]); for(i=0; i<=30; i++) { - Hu3DModelPosSet(model, (i*5)-153, (50.0*sin(M_PI*(i*9.0f)/180.0)) + -150.0 + ofs_x, (i*20)+356); + Hu3DModelPosSet(model, (i*5)-153, (50.0*sind(i*9.0f)) + -150.0 + ofs_x, (i*20)+356); HuPrcVSleep(); } HuPrcEnd(); @@ -698,7 +699,7 @@ static void fn_1_2804(void) } HuPrcSleep(40); for(i=0; i<=20; i++) { - pos_x = 500.0*cos(M_PI*(i*4.5f)/180.0)+142.0; + pos_x = 500.0*cosd(i*4.5f)+142.0; HuWinPosSet(window, pos_x, 320); HuPrcVSleep(); } @@ -725,7 +726,7 @@ static void fn_1_2804(void) HuWinMesPalSet(window, 7, 0, 0, 192); HuWinPosSet(window_other, 142.0f, 320.0f); for(i=0; i<=10; i++) { - HuWinPosSet(window_other, 30.0*sin(M_PI*(i*9.0f)/180.0)+142.0, 160.0*(1.0-cos(M_PI*(i*9.0f)/180.0))+320.0); + HuWinPosSet(window_other, 30.0*sind(i*9.0f)+142.0, 160.0*(1.0-cosd(i*9.0f))+320.0); HuPrcVSleep(); } HuPrcSleep(5); @@ -734,7 +735,7 @@ static void fn_1_2804(void) HuPrcVSleep(); } for(i=0; i<=20; i++) { - pos_x = 500.0*(1.0-cos(M_PI*(i*4.5f)/180.0))+142.0; + pos_x = 500.0*(1.0-cosd(i*4.5f))+142.0; HuWinPosSet(window, pos_x, 320); HuPrcVSleep(); } @@ -870,9 +871,9 @@ static void fn_1_2FA0(void) for(temp_r31=0; temp_r31<36; temp_r31++) { temp_f30 = temp_r31; if(temp_f30 <= 20.0f) { - temp_f31 = 300.0*cos(M_PI*(4.5f*temp_f30)/180.0)+temp_f29; + temp_f31 = 300.0*cosd(4.5f*temp_f30)+temp_f29; HuSprGrpPosSet(temp_r25, temp_f31, temp_f28); - temp_f31 = 300.0*cos(M_PI*(4.5f*temp_f30)/180.0)+(576.0f-(temp_r22/2)-24.0f); + temp_f31 = 300.0*cosd(4.5f*temp_f30)+(576.0f-(temp_r22/2)-24.0f); for(temp_r30=0; temp_r30 0.0f) { if(temp_f30 <= 20.0f) { - temp_f31 = 300.0*cos(M_PI*(4.5f*temp_f30)/180.0)+lbl_1_data_124[2]; + temp_f31 = 300.0*cosd(4.5f*temp_f30)+lbl_1_data_124[2]; HuSprGrpPosSet(temp_r24, temp_f31, 186.0f); - temp_f31 = 300.0*cos(M_PI*(4.5f*temp_f30)/180.0)+(lbl_1_data_124[2]-88.0f); + temp_f31 = 300.0*cosd(4.5f*temp_f30)+(lbl_1_data_124[2]-88.0f); HuWinPosSet(sp10[0], 16.0f+temp_f31, 168.0f); } } temp_f30 = temp_r31-6; if(temp_f30 > 0.0f) { if(temp_f30 <= 20.0f) { - temp_f31 = 300.0*cos(M_PI*(4.5f*temp_f30)/180.0)+lbl_1_data_124[4]; + temp_f31 = 300.0*cosd(4.5f*temp_f30)+lbl_1_data_124[4]; HuSprGrpPosSet(temp_r23, temp_f31, 242.0f); - temp_f31 = 300.0*cos(M_PI*(4.5f*temp_f30)/180.0)+(lbl_1_data_124[4]-100.0f); + temp_f31 = 300.0*cosd(4.5f*temp_f30)+(lbl_1_data_124[4]-100.0f); HuWinPosSet(sp10[1], 16.0f+temp_f31, 224.0f); } } temp_f30 = temp_r31-9; if(temp_f30 > 0.0f) { if(temp_f30 <= 20.0f) { - temp_f31 = 300.0*cos(M_PI*(4.5f*temp_f30)/180.0)+(lbl_1_data_124[6]-217.0f); + temp_f31 = 300.0*cosd(4.5f*temp_f30)+(lbl_1_data_124[6]-217.0f); HuWinPosSet(sp10[2], 16.0f+temp_f31, 274.0f); } } @@ -919,14 +920,14 @@ static void fn_1_2FA0(void) HuWinMesSet(sp10[2], 0x240002+lbl_1_bss_10+lbl_1_bss_6); } for(temp_r31=0; temp_r31<=10; temp_r31++) { - HuWinPosSet(temp_r27, 30.0*sin(M_PI*(temp_r31*9.0f)/180.0)+temp_f31, 200.0*(1.0-cos(M_PI*(temp_r31*9.0f)/180.0))+274.0); + HuWinPosSet(temp_r27, 30.0*sind(temp_r31*9.0f)+temp_f31, 200.0*(1.0-cosd(temp_r31*9.0f))+274.0); HuPrcVSleep(); } } HuPrcVSleep(); } for(temp_r31=0; temp_r31<20; temp_r31++) { - temp_f30 = 1.0-cos(M_PI*(temp_r31*4.5f)/180.0); + temp_f30 = 1.0-cosd(temp_r31*4.5f); temp_f31 = temp_f29+(500.0f*temp_f30); HuSprGrpPosSet(temp_r25, temp_f31, temp_f28); temp_f31 = ((576.0f-(work.alt_word_len/2))-24.0f)+(500.0f*temp_f30); @@ -968,15 +969,15 @@ static void fn_1_4174(omObjData *object) y = lbl_1_bss_40[i].y; z = lbl_1_bss_40[i].z; - pos.x = (((sin((M_PI*y)/180.0)*cos((M_PI*x)/180.0))*lbl_1_bss_20[i])+lbl_1_bss_28[i].x); - pos.y = (-sin((M_PI*x)/180.0)*lbl_1_bss_20[i])+lbl_1_bss_28[i].y; - pos.z = ((cos((M_PI*y)/180.0)*cos((M_PI*x)/180.0))*lbl_1_bss_20[i])+lbl_1_bss_28[i].z; + pos.x = (((sind(y)*cosd(x))*lbl_1_bss_20[i])+lbl_1_bss_28[i].x); + pos.y = (-sind(x)*lbl_1_bss_20[i])+lbl_1_bss_28[i].y; + pos.z = ((cosd(y)*cosd(x))*lbl_1_bss_20[i])+lbl_1_bss_28[i].z; target.x = lbl_1_bss_28[i].x; target.y = lbl_1_bss_28[i].y; target.z = lbl_1_bss_28[i].z; - up.x = sin((M_PI*y)/180.0)*sin((M_PI*x)/180.0); - up.y = cos((M_PI*x)/180.0); - up.z = cos((M_PI*y)/180.0)*sin((M_PI*x)/180.0); + up.x = sind(y)*sind(x); + up.y = cosd(x); + up.z = cosd(y)*sind(x); Hu3DCameraPosSet(lbl_1_data_144[i], pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z); } } @@ -1000,27 +1001,27 @@ static void fn_1_4528(omObjData *object) if (lbl_1_bss_20[0] < 100.0f) { lbl_1_bss_20[0] = 100.0f; } - pos.x = lbl_1_bss_28[0].x + (lbl_1_bss_20[0] * (sin((M_PI * lbl_1_bss_40[0].y) / 180.0) * cos((M_PI * lbl_1_bss_40[0].x) / 180.0))); - pos.y = (lbl_1_bss_28[0].y + (lbl_1_bss_20[0] * -sin((M_PI * lbl_1_bss_40[0].x) / 180.0))); - pos.z = (lbl_1_bss_28[0].z + (lbl_1_bss_20[0] * (cos((M_PI * lbl_1_bss_40[0].y) / 180.0) * cos((M_PI * lbl_1_bss_40[0].x) / 180.0)))); + pos.x = lbl_1_bss_28[0].x + (lbl_1_bss_20[0] * (sind(lbl_1_bss_40[0].y) * cosd(lbl_1_bss_40[0].x))); + pos.y = (lbl_1_bss_28[0].y + (lbl_1_bss_20[0] * -sind(lbl_1_bss_40[0].x))); + pos.z = (lbl_1_bss_28[0].z + (lbl_1_bss_20[0] * (cosd(lbl_1_bss_40[0].y) * cosd(lbl_1_bss_40[0].x)))); offset.x = lbl_1_bss_28[0].x - pos.x; offset.y = lbl_1_bss_28[0].y - pos.y; offset.z = lbl_1_bss_28[0].z - pos.z; - dir.x = (sin((M_PI * lbl_1_bss_40[0].y) / 180.0) * sin((M_PI * lbl_1_bss_40[0].x) / 180.0)); - dir.y = cos((M_PI * lbl_1_bss_40[0].x) / 180.0); - dir.z = (cos((M_PI * lbl_1_bss_40[0].y) / 180.0) * sin((M_PI * lbl_1_bss_40[0].x) / 180.0)); + dir.x = (sind(lbl_1_bss_40[0].y) * sind(lbl_1_bss_40[0].x)); + dir.y = cosd(lbl_1_bss_40[0].x); + dir.z = (cosd(lbl_1_bss_40[0].y) * sind(lbl_1_bss_40[0].x)); z_rot = lbl_1_bss_40[0].z; - y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cos((M_PI * z_rot) / 180.0)) - + dir.y * (offset.x * offset.y * (1.0f - cos((M_PI * z_rot) / 180.0)) - offset.z * sin((M_PI * z_rot) / 180.0)) - + dir.z * (offset.x * offset.z * (1.0f - cos((M_PI * z_rot) / 180.0)) + offset.y * sin((M_PI * z_rot) / 180.0)); + y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cosd(z_rot)) + + dir.y * (offset.x * offset.y * (1.0f - cosd(z_rot)) - offset.z * sind(z_rot)) + + dir.z * (offset.x * offset.z * (1.0f - cosd(z_rot)) + offset.y * sind(z_rot)); - y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cos((M_PI * z_rot) / 180.0)) - + dir.x * (offset.x * offset.y * (1.0f - cos((M_PI * z_rot) / 180.0)) + offset.z * sin((M_PI * z_rot) / 180.0)) - + dir.z * (offset.y * offset.z * (1.0f - cos((M_PI * z_rot) / 180.0)) - offset.x * sin((M_PI * z_rot) / 180.0)); + y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cosd(z_rot)) + + dir.x * (offset.x * offset.y * (1.0f - cosd(z_rot)) + offset.z * sind(z_rot)) + + dir.z * (offset.y * offset.z * (1.0f - cosd(z_rot)) - offset.x * sind(z_rot)); - y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cos((M_PI * z_rot) / 180.0)) - + (dir.x * (offset.x * offset.z * (1.0 - cos((M_PI * z_rot) / 180.0)) - offset.y * sin((M_PI * z_rot) / 180.0)) - + dir.y * (offset.y * offset.z * (1.0 - cos((M_PI * z_rot) / 180.0)) + offset.x * sin((M_PI * z_rot) / 180.0))); + y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cosd(z_rot)) + + (dir.x * (offset.x * offset.z * (1.0 - cosd(z_rot)) - offset.y * sind(z_rot)) + + dir.y * (offset.y * offset.z * (1.0 - cosd(z_rot)) + offset.x * sind(z_rot))); PSVECCrossProduct(&dir, &offset, &offset); PSVECNormalize(&offset, &offset); @@ -1070,14 +1071,14 @@ static void fn_1_50B0(ModelData *model, Mtx mtx) GXSetVtxDesc(GX_VA_NRM, GX_DIRECT); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); target.x = target.z = 0.0f; - target.x = lbl_1_data_14C*sin(M_PI*lbl_1_bss_40[0].y/180.0); - target.z = lbl_1_data_14C*cos(M_PI*lbl_1_bss_40[0].y/180.0); + target.x = lbl_1_data_14C*sind(lbl_1_bss_40[0].y); + target.z = lbl_1_data_14C*cosd(lbl_1_bss_40[0].y); target.y = 415.0f; - pos.x = (sin(M_PI*lbl_1_bss_40[0].y/180.0)*cos(M_PI*lbl_1_bss_40[0].x/180.0)*lbl_1_bss_20[0])+lbl_1_bss_28[0].x; - pos.y = (-sin(M_PI*lbl_1_bss_40[0].x/180.0)*lbl_1_bss_20[0])+lbl_1_bss_28[0].y; - pos.z = (cos(M_PI*lbl_1_bss_40[0].y/180.0)*cos(M_PI*lbl_1_bss_40[0].x/180.0)*lbl_1_bss_20[0])+lbl_1_bss_28[0].z; - up.x = -sin(M_PI*lbl_1_bss_40[0].y/180.0); - up.z = -cos(M_PI*lbl_1_bss_40[0].y/180.0); + pos.x = (sind(lbl_1_bss_40[0].y)*cosd(lbl_1_bss_40[0].x)*lbl_1_bss_20[0])+lbl_1_bss_28[0].x; + pos.y = (-sind(lbl_1_bss_40[0].x)*lbl_1_bss_20[0])+lbl_1_bss_28[0].y; + pos.z = (cos(M_PI*lbl_1_bss_40[0].y/180.0)*cosd(lbl_1_bss_40[0].x)*lbl_1_bss_20[0])+lbl_1_bss_28[0].z; + up.x = -sind(lbl_1_bss_40[0].y); + up.z = -cosd(lbl_1_bss_40[0].y); up.y = 0; MTXLookAt(lookat, &pos, &up, &target); MTXLightPerspective(light, lbl_1_bss_C, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); diff --git a/src/REL/m401Dll/main.c b/src/REL/m401Dll/main.c index bbbc503d..57778356 100644 --- a/src/REL/m401Dll/main.c +++ b/src/REL/m401Dll/main.c @@ -10,6 +10,8 @@ #include "game/sprite.h" #include "game/frand.h" #include "game/chrman.h" +#include "game/pad.h" +#include "game/printfunc.h" #include "REL/m401Dll.h" #include "math.h" @@ -116,7 +118,7 @@ void fn_2_C130(omObjData *object); void fn_2_C6DC(omObjData *object); void fn_2_D088(omObjData *object); -void fn_2_DBCC(s32 arg0); +void fn_2_DBCC(s16 arg0); void ModuleProlog(void) { @@ -618,11 +620,11 @@ void fn_2_1DE8(omObjData *object) HsfObject *temp_r30 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[3]); temp_r30->type = 2; sp2C.x = 0; - sp2C.y = -150.0f+((1.0f/255.0f)*(300.0f*(u32)frand8())); + sp2C.y = -150.0f+((1.0f/255.0f)*(300.0f*frandu8())); sp2C.z = -23000; fn_2_91AC(lbl_2_bss_100[0], &sp2C); sp2C.x = 0; - sp2C.y = -150.0f+((1.0f/255.0f)*(300.0f*(u32)frand8())); + sp2C.y = -150.0f+((1.0f/255.0f)*(300.0f*frandu8())); sp2C.z = -25000; fn_2_91AC(lbl_2_bss_100[1], &sp2C); sp2C.x = 5500; @@ -709,9 +711,9 @@ void fn_2_21F8(omObjData *object) Hu3DModelAttrSet(object->model[2], 0xC0000001); temp_r28 = 4; for(temp_r30=0; temp_r30 -31260.0f) { temp_r28 = 4; for(temp_r30=0; temp_r30trans.y < 1100) { temp_r31->unk0 = 2; - temp_f27 = VECDistanceAlt(&object->trans, &temp_r31->unk24); + temp_f27 = VECMagPoint(object->trans.x-temp_r31->unk24.x, object->trans.y-temp_r31->unk24.y, object->trans.z-temp_r31->unk24.z); temp_r31->unk58.z = temp_f27; temp_r31->unk58.y = 0; temp_r31->unk6E = 110; @@ -1224,7 +1226,7 @@ void fn_2_3F28(omObjData *object) object->trans.z = temp_r31->unk30.z+(temp_r31->unk58.z*(sp28.z*sind(temp_r31->unk58.y))); temp_r31->unk58.y += 9.0f/11.0f; omSetRot(object, atan2d(sp28.y, sp28.z)+90.0, 0, 0); - temp_f27 = VECDistanceAlt(&object->trans, &sp1C); + temp_f27 = VECMagPoint(object->trans.x-sp1C.x, object->trans.y-sp1C.y, object->trans.z-sp1C.z); if(--temp_r31->unk6E == 60 && temp_r31->unk4 == 0 && lbl_2_bss_4 == NULL) { temp_r29 = &Hu3DCamera[0]; lbl_2_bss_4 = omAddObjEx(HuPrcCurrentGet(), 1400, 0, 0, -1, fn_2_D3E8); @@ -1261,4 +1263,2237 @@ void fn_2_3F28(omObjData *object) fn_2_6B44(object); break; } +} + +void fn_2_6B44(omObjData *object); + +void fn_2_48A0(omObjData *object) +{ + M401WorkPlayer *temp_r31; + Work2FA4 *temp_r29; + float temp_f29; + Vec sp4C; + Vec sp40; + s32 sp30[] = { -10, -50, -80, -130 }; + Vec sp24; + Vec sp18; + Vec spC; + temp_r31 = object->data; + temp_r29 = lbl_2_bss_10C->data; + if(temp_r31->unk4 == 0) { + lbl_2_bss_1A--; + } + switch(temp_r31->unk0) { + case 5: + if(temp_r31->unk6A == 1) { + CharModelMotionShiftSet(temp_r31->unk86, object->motion[1], 0, 8, 0x40000001); + temp_r31->unk6A = 0; + } + omSetRot(object, 0, 180, 0); + object->trans.z -= 5.0f; + fn_2_6B44(object); + break; + + case 6: + object->trans.y += temp_r31->unk58.x; + if(object->trans.y >= 910.0f) { + if(temp_r31->unk6C == 0) { + temp_r31->unk6C = 1; + Hu3DModelAttrReset(object->model[2], 1); + Hu3DModelAttrSet(object->model[2], 0x40000001); + Hu3DModelPosSet(object->model[2], object->trans.x, 950, 30+object->trans.z); + Hu3DModelScaleSet(object->model[2], 1, 1, 1); + Hu3DMotionTimeSet(object->model[2], 0); + sp4C.x = object->trans.x; + sp4C.y = 950; + sp4C.z = 30+object->trans.z; + fn_2_10A88(&sp4C, 7); + HuAudFXEmiterPlay(1289, &sp4C); + } + temp_r31->unk58.x *= 0.7f; + if(temp_r31->unk58.x <= 0.5f) { + temp_r31->unk0 = 7; + temp_r31->unk58.x = -0.5f; + CharModelMotionShiftSet(temp_r31->unk86, object->motion[0], 0, 30, 0x40000001); + temp_r31->unk80 = 0; + temp_r31->unk6C = 0; + } + } + + break; + + case 7: + object->trans.y += temp_r31->unk58.x; + if(object->trans.y <= 890) { + object->trans.y = 890; + if(lbl_2_bss_BA) { + if(temp_r31->unk68) { + temp_r31->unk0 = 16; + } else { + temp_r31->unk0 = 9; + } + } else { + temp_r31->unk0 = 8; + temp_r29->unk8.z = 0.5f; + temp_r31->unk6E = 0; + HuAudSStreamPlay(4); + lbl_2_bss_C0 = MGSeqDrawCreate(); + lbl_2_bss_1A = 210; + } + } + temp_r31->unk58.x *= 1.17f; + object->trans.y -= 0.35f*sind(temp_r31->unk80); + temp_r31->unk80 += 3.0f; + if(temp_r31->unk80 >= 360.0f) { + temp_r31->unk80 -= 360.0f; + } + break; + + case 8: + object->trans.y -= 0.35f*sind(temp_r31->unk80); + temp_r31->unk80 += 3.0f; + if(temp_r31->unk80 >= 360.0f) { + temp_r31->unk80 -= 360.0f; + } + if(temp_r31->unk6E == 13) { + Hu3DModelAttrReset(lbl_2_bss_10C->model[6], 1); + Hu3DMotionTimeSet(lbl_2_bss_10C->model[6], 0); + } else if(temp_r31->unk6E == 50) { + Hu3DMotionOverlaySet(object->model[0], object->motion[8]); + Hu3DMotionOverlayTimeSet(object->model[0], 31.0f); + Hu3DData[object->model[0]].unk_78 = 1; + } + if(temp_r31->unk6E >= 70) { + if(object->rot.y < 90.0f) { + object->rot.y += 2.25f; + } else { + object->rot.y = 90.0f; + } + } + temp_r31->unk6E++; + if(temp_r29->unk8.y >= 1500.0f) { + temp_r29->unk8.z = 0; + if(temp_r31->unk4 == 0) { + temp_r31->unk0 = 14; + } + } + break; + + case 16: + if(!temp_r31->unk6C) { + temp_r31->unk6C = 1; + HuAudPlayerVoicePlay(temp_r31->unk4, 292); + Hu3DMotionOverlaySet(object->model[0], object->motion[9]); + if(temp_r31->unk4 == lbl_2_bss_B2[0]) { + HuAudSStreamPlay(1); + lbl_2_bss_C0 = MGSeqWinCreate(lbl_2_bss_AA[0], lbl_2_bss_AA[1], lbl_2_bss_AA[2], lbl_2_bss_AA[3]); + lbl_2_bss_1A = 210; + temp_r31->unk6E = 160; + temp_r31->unk0 = 13; + } + } + temp_r31->unk58.x *= 1.17f; + object->trans.y -= 0.35f*sind(temp_r31->unk80); + temp_r31->unk80 += 3.0f; + if(temp_r31->unk80 >= 360.0f) { + temp_r31->unk80 -= 360.0f; + } + if(73.0f <= Hu3DMotionOverlayTimeGet(object->model[0])) { + Hu3DMotionOverlayTimeSet(object->model[0], 35.0f); + } + break; + + case 10: + object->trans.y += temp_r31->unk58.x; + if(object->trans.y >= 910.0f) { + if(temp_r31->unk6C == 0) { + temp_r31->unk6C = 1; + omVibrate(temp_r31->unk4, 12, 4, 2); + Hu3DModelAttrReset(object->model[2], 1); + Hu3DModelAttrReset(object->model[2], 0x40000002); + Hu3DModelAttrSet(object->model[2], 0x40000001); + Hu3DModelPosSet(object->model[2], object->trans.x, 950, 30+object->trans.z); + Hu3DModelScaleSet(object->model[2], 1, 1, 1); + Hu3DMotionTimeSet(object->model[2], 0); + Hu3DModelAttrReset(object->model[3], 0x40000002); + Hu3DModelAttrReset(object->model[3], 1); + Hu3DModelClusterAttrReset(object->model[3], 0, 0xC0000002); + Hu3DModelPosSet(object->model[3], object->trans.x, 0, 30+object->trans.z); + Hu3DMotionTimeSet(object->model[3], 0); + sp4C.x = object->trans.x; + sp4C.y = 950; + sp4C.z = 30+object->trans.z; + fn_2_10A88(&sp4C, 7); + HuAudFXEmiterPlay(1289, &sp4C); + } + temp_r31->unk0 = 11; + temp_r31->unk24.x = sp30[temp_r31->unk4]; + temp_r31->unk24.y = 1030; + temp_r31->unk24.z = 40; + sp4C.x = object->trans.x; + sp4C.y = object->trans.y; + sp4C.z = object->trans.z; + VECSubtract(&temp_r31->unk24, &sp4C, &sp40); + VECNormalize(&sp40, &sp40); + temp_f29 = VECDistanceXZ(&temp_r31->unk24, &object->trans); + temp_r31->unk30.x = (sp40.x*temp_f29)/60.0f; + temp_r31->unk30.z = (sp40.z*temp_f29)/60.0f; + temp_r31->unk30.y = 18.75f; + temp_r31->unk58.y = 0; + } + break; + + case 11: + temp_f29 = temp_r31->unk30.y-(0.020833334f*temp_r31->unk58.y*temp_r31->unk58.y); + object->trans.x += temp_r31->unk30.x; + object->trans.z += temp_r31->unk30.z; + object->trans.y += temp_f29; + temp_r31->unk58.y += 1.0f; + if(object->trans.y <= 1030.0f && temp_f29 < 0) { + temp_r31->unk0 = 12; + object->trans.y = 1030+temp_r29->unk4; + CharModelMotionShiftSet(temp_r31->unk86, object->motion[2], 0, 15, 0x40000001); + temp_r31->unk58.x = 0; + } + break; + + case 12: + object->trans.y = 1030+temp_r29->unk4; + sp24.x = (sind(temp_r31->unk58.x), 0.0); + sp24.y = -100*sind(temp_r31->unk58.x)+1300; + sp24.z = -500*sind(temp_r31->unk58.x)+1300; + sp18.x = (sind(temp_r31->unk58.x), 0.0); + sp18.y = 330*sind(temp_r31->unk58.x)+920; + sp18.z = (sind(temp_r31->unk58.x), 0.0) + -100.0; + spC.x = 0; + spC.y = 1; + spC.z = 0; + Hu3DCameraPosSetV(1, &sp24, &spC, &sp18); + temp_r31->unk58.x += 3.0f; + if(temp_r31->unk58.x > 90.0f) { + temp_r31->unk0 = 13; + CharModelMotionShiftSet(temp_r31->unk86, object->motion[5], 0, 20, 0); + HuAudSStreamPlay(1); + lbl_2_bss_C0 = MGSeqWinCreate(lbl_2_bss_AA[0], -1, -1, -1); + lbl_2_bss_1A = 210; + } + temp_r31->unk6E = 160; + break; + + case 13: + if(lbl_2_bss_BA == 1) { + object->trans.y = 1030+temp_r29->unk4; + } else { + temp_r31->unk58.x *= 1.17f; + object->trans.y -= 0.35f*sind(temp_r31->unk80); + temp_r31->unk80 += 3.0f; + if(temp_r31->unk80 >= 360.0f) { + temp_r31->unk80 -= 360.0f; + } + if(73.0f <= Hu3DMotionOverlayTimeGet(object->model[0])) { + Hu3DMotionOverlayTimeSet(object->model[0], 35.0f); + } + } + if(--temp_r31->unk6E == 0) { + temp_r31->unk0 = 14; + } + + break; + + case 14: + if(temp_r31->unk68) { + if(lbl_2_bss_BA == 1) { + object->trans.y = 1030+temp_r29->unk4; + } else { + temp_r31->unk58.x *= 1.17f; + object->trans.y -= 0.35f*sind(temp_r31->unk80); + temp_r31->unk80 += 3.0f; + if(temp_r31->unk80 >= 360.0f) { + temp_r31->unk80 -= 360.0f; + } + if(73.0f <= Hu3DMotionOverlayTimeGet(object->model[0])) { + Hu3DMotionOverlayTimeSet(object->model[0], 35.0f); + } + } + } + if(lbl_2_bss_1A <= 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuAudSeqFadeOut(lbl_2_bss_A4, 100); + HuAudFXStop(lbl_2_bss_11C); + temp_r31->unk0 = 15; + } + break; + + case 15: + if(temp_r31->unk68) { + if(lbl_2_bss_BA == 1) { + object->trans.y = 1030+temp_r29->unk4; + } else { + temp_r31->unk58.x *= 1.17f; + object->trans.y -= 0.35f*sind(temp_r31->unk80); + temp_r31->unk80 += 3.0f; + if(temp_r31->unk80 >= 360.0f) { + temp_r31->unk80 -= 360.0f; + } + if(73.0f <= Hu3DMotionOverlayTimeGet(object->model[0])) { + Hu3DMotionOverlayTimeSet(object->model[0], 35.0f); + } + } + } + if(!WipeStatGet()) { + lbl_2_bss_110->func = fn_2_A10; + } + break; + } +} + +void fn_2_65FC(omObjData *object); +void fn_2_6AF4(omObjData *object); +void fn_2_A940(omObjData *object); + +void fn_2_6C94(omObjData *object, s8 *x, s8 *y, u16 *btn); + +void fn_2_5CC0(omObjData *object) +{ + M401WorkPlayer *temp_r31; + float temp_f29; + Vec sp20; + Vec sp14; + s32 sp10; + u16 spA; + s8 sp9; + s8 sp8; + temp_f29 = 0; + temp_r31 = object->data; + sp9 = sp8 = spA = 0; + if(temp_r31->unk78 == 0) { + if(GWPlayerCfg[temp_r31->unk4].iscom) { + fn_2_6C94(object, &sp9, &sp8, &spA); + } else { + sp9 = HuPadStkX[temp_r31->unk8]; + sp8 = HuPadStkY[temp_r31->unk8]; + spA = HuPadBtnDown[temp_r31->unk8]; + } + if(sp9 != 0 || sp8 != 0) { + temp_r31->unk58.z = sqrtf((sp9*sp9)+(sp8*sp8))/9.0f; + } + temp_r31->unk64 = atan2d(sp9, sp8); + if(spA & PAD_BUTTON_A) { + temp_r31->unk88 += 1.51f*lbl_2_data_0; + if(temp_r31->unk88 < 1.51f*lbl_2_data_0) { + temp_r31->unk88 = 1.51f*lbl_2_data_0; + } + } + if(temp_r31->unk88 >= 0.0f){ + temp_f29 = 0; + } else { + temp_f29 = fabs(temp_r31->unk88/(1.51f*lbl_2_data_0)); + } + if(temp_r31->unk84) { + if(--temp_r31->unk84 == 0) { + CharModelMotionShiftSet(temp_r31->unk86, object->motion[1], 0, 8, 0x40000001); + temp_r31->unk6A = 0; + } + } + } else { + temp_r31->unk84 = 0; + if(--temp_r31->unk7A == 0) { + sp10 = GWPlayerCfg[temp_r31->unk4].character; + CharModelMotionShiftSet(temp_r31->unk86, object->motion[1], 0, 8, 0x40000001); + temp_r31->unk78 = 0; + temp_r31->unk6A = 0; + } + if(temp_r31->unk7A & 0x1) { + Hu3DModelAttrSet(object->model[0], 1); + } else { + Hu3DModelAttrReset(object->model[0], 1); + } + } + if(temp_f29 != 0) { + if(++temp_r31->unk8C > 15) { + temp_r31->unk8C = 15; + } + temp_r31->unk8E = 0; + } else { + if(++temp_r31->unk8E > 5) { + temp_r31->unk8E = 5; + temp_r31->unk8C = 0; + } + } + if(temp_r31->unk78 == 0 && temp_r31->unk84 == 0) { + if(temp_r31->unk58.z > 0 || temp_r31->unk8C >= 5) { + if(temp_r31->unk6A == 0) { + temp_r31->unk6A = 1; + CharModelMotionShiftSet(temp_r31->unk86, object->motion[3], 0, 8, 0x40000001); + } + } else { + if(temp_r31->unk6A == 1) { + CharModelMotionShiftSet(temp_r31->unk86, object->motion[1], 0, 8, 0x40000001); + temp_r31->unk6A = 0; + } + } + } + CharModelMotionSpeedSet(temp_r31->unk86, 1.0f+temp_f29); + fn_2_65FC(object); + if(temp_r31->unk58.z > 0.1f) { + temp_r31->unk58.z *= 0.9f; + } else { + temp_r31->unk58.z = 0.0f; + } + temp_r31->unk88 -= 0.15f*lbl_2_data_0; + if(temp_r31->unk88 > -lbl_2_data_0) { + temp_r31->unk88 = -lbl_2_data_0; + } + sp20.x = object->trans.x; + sp20.y = object->trans.y; + sp20.z = object->trans.z; + omSetTra(object, temp_r31->unkC.x, temp_r31->unkC.y, lbl_2_bss_60.z+temp_r31->unkC.z); + sp14.x = object->trans.x; + sp14.y = object->trans.y; + sp14.z = object->trans.z; + if(sp8 != 0) { + object->rot.x -= 0.05f*sp8; + } else { + object->rot.x *= 0.8f; + if(object->rot.x < 0.01f) { + object->rot.x = 0; + } + } + if(sp9 != 0) { + object->rot.z -= 0.05f*sp9; + } else { + object->rot.z *= 0.8f; + if(object->rot.z < 0.01f) { + object->rot.z = 0; + } + } + if(object->rot.x < -30.0f) { + object->rot.x = -30.0f; + } + if(object->rot.x > 30.0f) { + object->rot.x = 30.0f; + } + if(object->rot.z < -30.0f) { + object->rot.z = -30.0f; + } + if(object->rot.z > 30.0f) { + object->rot.z = 30.0f; + } + object->rot.y = 180; + fn_2_6AF4(object); + fn_2_A940(object); + temp_r31->unk70 = 0; +} + +void fn_2_65FC(omObjData *object) +{ + M401WorkPlayer *temp_r31; + M401WorkPlayer *temp_r30; + s32 temp_r29; + omObjData *temp_r28; + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f26; + float temp_f24; + + Vec sp24; + Vec sp18; + Vec spC; + temp_r30 = object->data; + temp_f26 = temp_r30->unk58.z; + sp24.x = sind(temp_r30->unk64); + sp24.y = cosd(temp_r30->unk64); + sp24.z = temp_r30->unk88+lbl_2_data_0; + VECNormalize(&sp24, &sp18); + sp24.x *= temp_f26; + sp24.y *= temp_f26; + sp24.z -= lbl_2_data_0; + temp_f31 = temp_r30->unkC.x+sp24.x; + temp_f30 = temp_r30->unkC.y+sp24.y; + temp_f29 = temp_r30->unkC.z+sp24.z; + if(temp_f31 < -400) { + temp_f31 = -400; + } + if(temp_f31 > 400) { + temp_f31 = 400; + } + if(temp_f30 < -300) { + temp_f30 = -300; + } + if(temp_f30 > 300) { + temp_f30 = 300; + } + if(temp_f29 < 400) { + temp_f29 = 400; + } + if(temp_f29 > 800) { + temp_f29 = 800; + } + for(temp_r29=0; temp_r29<4; temp_r29++) { + if(lbl_2_bss_118[temp_r29] != object) { + temp_r28 = lbl_2_bss_118[temp_r29]; + temp_r31 = temp_r28->data; + temp_f24 = VECMagPoint(temp_f31-temp_r31->unkC.x, temp_f30-temp_r31->unkC.y, temp_f29-temp_r31->unkC.z); + if(temp_f24 < 127.0f) { + spC.x = temp_f31-temp_r31->unkC.x; + spC.y = temp_f30-temp_r31->unkC.y; + spC.z = temp_f29-temp_r31->unkC.z; + VECNormalize(&spC, &spC); + temp_f31 = temp_r31->unkC.x+127.0f*spC.x; + temp_f30 = temp_r31->unkC.y+127.0f*spC.y; + temp_f29 = temp_r31->unkC.z+127.0f*spC.z; + } + } + } + if(temp_f31 < -400) { + temp_f31 = -400; + } + if(temp_f31 > 400) { + temp_f31 = 400; + } + if(temp_f30 < -300) { + temp_f30 = -300; + } + if(temp_f30 > 300) { + temp_f30 = 300; + } + if(temp_f29 < 400) { + temp_f29 = 400; + } + if(temp_f29 > 800) { + temp_f29 = 800; + } + temp_r30->unkC.x = temp_f31; + temp_r30->unkC.y = temp_f30; + temp_r30->unkC.z = temp_f29; +} + +void fn_2_6AF4(omObjData *object) +{ + M401WorkPlayer *temp_r31 = object->data; + temp_r31->unk18.x = temp_r31->unkC.x+lbl_2_bss_60.x; + temp_r31->unk18.y = object->trans.y; + temp_r31->unk18.z = 80+object->trans.z; +} + +void fn_2_6B44(omObjData *object) +{ + M401WorkPlayer *temp_r30; + float temp_f31; + float temp_f30; + float temp_f29; + temp_r30 = object->data; + temp_f31 = 80.0*sind(object->rot.y+180.0f); + temp_f29 = 80.0*-cosd(object->rot.y); + temp_f30 = 80.0*sind(object->rot.x); + temp_r30->unk18.x = object->trans.x+temp_f31; + temp_r30->unk18.y = object->trans.y+temp_f30; + temp_r30->unk18.z = object->trans.z+temp_f29; +} + +omObjData *fn_2_792C(omObjData *object); + +void fn_2_6C94(omObjData *object, s8 *x, s8 *y, u16 *btn) +{ + M401WorkPlayer *temp_r31; + s32 temp_r30; + omObjData *temp_r28; + s32 temp_r27; + u16 temp_r26 = 0; + float temp_f31; + float temp_f30; + float temp_f29; + s16 sp50[][8] = { + 0, 2, 0, 2, 0, 2, 0, 2, + 0, 2, 0, 2, 0, 0, 0, 2, + 0, 0, 0, 2, 0, 0, 0, 2, + 0, 0, 0, 0, 0, 0, 0, 0, + }; + Vec sp44; + Vec sp38; + Vec sp2C; + Vec sp20; + s16 sp18[] = { + 50, 125, 200, 245 + }; + s16 sp10[] = { + 75, 150, 200, 250 + }; + s16 sp8[] = { + 9, 6, 4, 2 + }; + temp_r31 = object->data; + *x = *y = 0; + *btn = 0; + if(temp_r31->unk7C == 0) { + temp_r31->unk7E = sp50[GWPlayerCfg[temp_r31->unk4].diff][frand() & 0x7]; + temp_r31->unk7C = (frand()%60)+30; + temp_r31->unk92 = 0; + if(frandu8() < sp18[GWPlayerCfg[temp_r31->unk4].diff]) { + temp_r31->unk92 |= 1; + } + if(frandu8() < sp10[GWPlayerCfg[temp_r31->unk4].diff]) { + temp_r31->unk92 |= 2; + } + } else { + temp_r31->unk7C--; + } + temp_r26 = temp_r31->unk92; + sp44.x = sp44.y = sp44.z = 0; + switch(temp_r31->unk7E) { + case 0: + temp_r28 = fn_2_792C(object); + if(temp_r28) { + sp44.x = temp_r28->trans.x-object->trans.x; + sp44.y = temp_r28->trans.y-object->trans.y; + sp44.z = temp_r28->trans.z-object->trans.z; + } + break; + + case 2: + break; + } + if(temp_r26 & 0x1) { + sp38.x = object->trans.x; + sp38.y = object->trans.y; + sp38.z = object->trans.z; + for(temp_r27=0; temp_r27<4; temp_r27++) { + if(lbl_2_bss_118[temp_r27] != object) { + sp20.x = lbl_2_bss_118[temp_r27]->trans.x; + sp20.y = lbl_2_bss_118[temp_r27]->trans.y; + sp20.z = lbl_2_bss_118[temp_r27]->trans.z; + VECSubtract(&sp38, &sp20, &sp2C); + temp_f31 = VECMag(&sp2C)-110.0f; + if(temp_f31 < 110.0f) { + temp_f31 -= 60.0f; + if(temp_f31 < 0.01f) { + temp_f31 = 0.01; + } + VECScale(&sp2C, &sp2C, 1.0f/temp_f31); + VECAdd(&sp44, &sp2C, &sp44); + } + } + } + } + if(temp_r26 & 0x2) { + for(temp_r30=0; temp_r30<4; temp_r30++) { + if(lbl_2_bss_E4[temp_r30]->func != NULL) { + sp20.x = lbl_2_bss_E4[temp_r30]->trans.x; + sp20.y = lbl_2_bss_E4[temp_r30]->trans.y; + sp20.z = lbl_2_bss_E4[temp_r30]->trans.z; + VECSubtract(&sp38, &sp20, &sp2C); + temp_f31 = VECMag(&sp2C)-110.0f; + if(temp_f31 < 110.0f) { + temp_f31 -= 60.0f; + if(temp_f31 < 0.01f) { + temp_f31 = 0.01; + } + VECScale(&sp2C, &sp2C, 1.0f/temp_f31); + VECAdd(&sp44, &sp2C, &sp44); + } + } + } + for(temp_r30=0; temp_r30<2; temp_r30++) { + if(lbl_2_bss_100[temp_r30]->func != NULL) { + sp20.x = lbl_2_bss_100[temp_r30]->trans.x; + sp20.y = lbl_2_bss_100[temp_r30]->trans.y; + sp20.z = lbl_2_bss_100[temp_r30]->trans.z; + VECSubtract(&sp38, &sp20, &sp2C); + temp_f31 = VECMag(&sp2C)-110.0f; + if(temp_f31 < 110.0f) { + temp_f31 -= 60.0f; + if(temp_f31 < 0.01f) { + temp_f31 = 0.01; + } + VECScale(&sp2C, &sp2C, 1.0f/temp_f31); + VECAdd(&sp44, &sp2C, &sp44); + } + } + } + sp20.x = lbl_2_bss_FC->trans.x; + sp20.y = lbl_2_bss_FC->trans.y; + sp20.z = lbl_2_bss_FC->trans.z; + VECSubtract(&sp38, &sp20, &sp2C); + sp2C.x = 0; + temp_f31 = VECMag(&sp2C)-220.0f; + if(temp_f31 < 220.0f) { + temp_f31 -= 160.0f; + if(temp_f31 < 0.01f) { + temp_f31 = 0.01; + } + VECScale(&sp2C, &sp2C, 1.0f/temp_f31); + VECAdd(&sp44, &sp2C, &sp44); + } + } + + if(sp44.z < 0.0f) { + if(temp_r31->unk90 == 0) { + *btn |= 0x100; + temp_r31->unk90 = (frand()%sp8[GWPlayerCfg[temp_r31->unk4].diff])+3; + } else { + temp_r31->unk90--; + } + } + sp44.z = 0; + temp_f30 = VECMag(&sp44); + temp_f30 *= 0.2f; + temp_f29 = atan2d(sp44.y, sp44.x); + if(temp_f30 > 72.0f) { + temp_f30 = 72.0f; + } + if(temp_f30 < 10.0f) { + temp_f30 = 0.0f; + } + *x = temp_f30*cosd(temp_f29); + *y = temp_f30*sind(temp_f29); +} + +s32 fn_2_AC2C(Vec *pos, float dist, omObjData **newobj); + +s32 fn_2_7640(omObjData *object, omObjData **newobj) +{ + Vec spC; + spC.x = object->trans.x; + spC.y = object->trans.y; + spC.z = object->trans.z-100.0f; + return fn_2_AC2C(&spC, 270.0f, newobj); +} + +void fn_2_76AC(omObjData *object, s32 arg1) +{ + M401WorkPlayer *temp_r31; + if(arg1) { + temp_r31 = object->data; + temp_r31->unk7E = 1; + temp_r31->unk7C = 5; + switch(arg1) { + case 1: + temp_r31->unk80 = 180.0+atan2d(temp_r31->unk54->trans.x-object->trans.x, temp_r31->unk54->trans.y-object->trans.y); + break; + + case 2: + if(temp_r31->unkC.y > temp_r31->unk54->trans.y) { + temp_r31->unk80 = 80.0f+((1.0f/255.0f)*(20.0f*frandu8())); + } else { + temp_r31->unk80 = 260.0f+((1.0f/255.0f)*(20.0f*frandu8())); + } + break; + + case 3: + if(temp_r31->unkC.y > temp_r31->unk54->trans.y) { + temp_r31->unk80 = 80.0f+((1.0f/255.0f)*(20.0f*frandu8())); + } else { + temp_r31->unk80 = 260.0f+((1.0f/255.0f)*(20.0f*frandu8())); + } + break; + } + } +} + +omObjData *fn_2_792C(omObjData *object) +{ + omObjData **temp_r31; + s32 temp_r30; + omObjData *temp_r28; + float temp_f31, temp_f30, temp_f29; + float temp_f27, temp_f26; + temp_r31 = omGetGroupMemberListEx(HuPrcCurrentGet(), 1); + temp_f26 = 100000; + temp_r28 = NULL; + for(temp_r30=0; temp_r30<28; temp_r30++) { + if(temp_r31[temp_r30] == NULL || temp_r31[temp_r30]->trans.z-lbl_2_bss_60.z > 850.0f || temp_r31[temp_r30]->trans.z-lbl_2_bss_60.z < -2500.0f) { + continue; + } + temp_f30 = temp_r31[temp_r30]->trans.x-object->trans.x; + temp_f29 = temp_r31[temp_r30]->trans.y-object->trans.y; + temp_f31 = temp_r31[temp_r30]->trans.z-object->trans.z; + temp_f31 *= 0.15f; + temp_f27 = VECMagPoint(temp_f30, temp_f29, temp_f31); + if(temp_f27 < temp_f26 && temp_f27 < 2000.0f) { + temp_f26 = temp_f27; + temp_r28 = temp_r31[temp_r30]; + } + } + return temp_r28; +} + +void fn_2_A914(s32 player); + +void fn_2_7C3C(omObjData *object) +{ + M401WorkPlayer *temp_r31 = object->data; + temp_r31->unk78 = 1; + temp_r31->unk7A = 120; + CharModelMotionShiftSet(temp_r31->unk86, object->motion[7], 0, 10, 0); + fn_2_A914(temp_r31->unk4); +} + +typedef struct work_7CB4 { + s16 unk0; + Vec unk4; + Vec unk10; + s16 unk1C; + s16 unk1E; + s16 unk20; + s16 unk22; + s16 unk24; + float unk28; + s16 unk2C; + s16 unk2E; + float unk30; +} Work7CB4; + +void fn_2_7E6C(omObjData *object); + +void fn_2_7CB4(omObjData *object) +{ + Work7CB4 *temp_r31; + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work7CB4), MEMORY_DEFAULT_NUM); + temp_r31 = object->data; + temp_r31->unk10.x = 0; + temp_r31->unk10.y = 200; + temp_r31->unk10.z = 0; + temp_r31->unk1E = 0; + temp_r31->unk22 = 100; + temp_r31->unk4.x = 0; + temp_r31->unk4.y = 200; + temp_r31->unk24 = 0; + temp_r31->unk28 = 0; + object->model[0] = Hu3DModelCreateFile(0x20000B); + Hu3DModelClusterAttrSet(object->model[0], 0, 0xC0000001); + Hu3DModelAttrSet(object->model[0], 0x1); + Hu3DModelAmbSet(object->model[0], 0.6f, 0.6f, 0.6f); + Hu3DModelShadowSet(object->model[0]); + temp_r31->unk0 = 0; + temp_r31->unk22 = 180; + omSetTra(object, 0, 200, 200); + omSetRot(object, 0, 180, 0); + object->func = fn_2_7E6C; +} + +void fn_2_7E6C(omObjData *object) +{ + Work7CB4 *temp_r31; + temp_r31 = object->data; + switch(temp_r31->unk0) { + case 0: + if(--temp_r31->unk22 == 0) { + temp_r31->unk0 = 1; + } + break; + + case 1: + object->trans.z += -11.333333f; + break; + } +} + +s32 gap_04_00000328_data = 0x20000C; +s32 lbl_2_data_32C[] = { + 4, 6 +}; +Vec lbl_2_data_334[][10] = { + { + { 1400, -600, -21500 }, + { -100, 100, -22000 }, + { -1000, -200, -23000 }, + { -2000, -200, -23500 }, + { -2200, -200, -23500 }, + { -2300, -200, -23500 }, + }, + { + { -1000, 500, -29500 }, + { -300, 300, -31500 }, + { 300, -150, -32500 }, + { -200, 250, -34000 }, + { -300, 300, -35000 }, + { -600, 300, -36000 }, + { 1000, -180, -40000 }, + { 1000, -180, -40000 }, + } + +}; + +void fn_2_7EDC(s32 arg0, s32 arg1, float arg2, Vec *arg3) +{ + Vec *temp_r31; + Vec *temp_r30; + Vec *temp_r29; + Vec *temp_r28; + float temp_f31 = arg2*arg2; + if(arg1 == 0) { + temp_r31 = &lbl_2_data_334[arg0][arg1]; + temp_r30 = &lbl_2_data_334[arg0][arg1+1]; + temp_r29 = &lbl_2_data_334[arg0][arg1+2]; + temp_r28 = &lbl_2_data_334[arg0][arg1+3]; + arg3->x = (0.5f * ((2.0f * temp_r31->x) + ((temp_f31 * (temp_r29->x + (temp_r31->x - (2.0f * temp_r30->x)))) + (arg2 * (((-3.0f * temp_r31->x) + (4.0f * temp_r30->x)) - temp_r29->x))))); + arg3->y = (0.5f * ((2.0f * temp_r31->y) + ((temp_f31 * (temp_r29->y + (temp_r31->y - (2.0f * temp_r30->y)))) + (arg2 * (((-3.0f * temp_r31->y) + (4.0f * temp_r30->y)) - temp_r29->y))))); + arg3->z = (0.5f * ((2.0f * temp_r31->z) + ((temp_f31 * (temp_r29->z + (temp_r31->z - (2.0f * temp_r30->z)))) + (arg2 * (((-3.0f * temp_r31->z) + (4.0f * temp_r30->z)) - temp_r29->z))))); + } else { + temp_r31 = &lbl_2_data_334[arg0][arg1-1]; + temp_r30 = &lbl_2_data_334[arg0][arg1]; + temp_r29 = &lbl_2_data_334[arg0][arg1+1]; + temp_r28 = &lbl_2_data_334[arg0][arg1+2]; + arg3->x = (0.5f * ((2.0f * temp_r30->x) + ((arg2 * (-temp_r31->x + temp_r29->x)) + ((arg2 * (temp_f31 * (temp_r28->x + ((-temp_r31->x + (3.0f * temp_r30->x)) - (3.0f * temp_r29->x))))) + (temp_f31 * (((4.0f * temp_r29->x) + ((2.0f * temp_r31->x) - (5.0f * temp_r30->x))) - temp_r28->x)))))); + arg3->y = (0.5f * ((2.0f * temp_r30->y) + ((arg2 * (-temp_r31->y + temp_r29->y)) + ((arg2 * (temp_f31 * (temp_r28->y + ((-temp_r31->y + (3.0f * temp_r30->y)) - (3.0f * temp_r29->y))))) + (temp_f31 * (((4.0f * temp_r29->y) + ((2.0f * temp_r31->y) - (5.0f * temp_r30->y))) - temp_r28->y)))))); + arg3->z = (0.5f * ((2.0f * temp_r30->z) + ((arg2 * (-temp_r31->z + temp_r29->z)) + ((arg2 * (temp_f31 * (temp_r28->z + ((-temp_r31->z + (3.0f * temp_r30->z)) - (3.0f * temp_r29->z))))) + (temp_f31 * (((4.0f * temp_r29->z) + ((2.0f * temp_r31->z) - (5.0f * temp_r30->z))) - temp_r28->z)))))); + } +} + +s32 fn_2_8450(omObjData *object) +{ + Work7CB4 *temp_r31; + Vec *temp_r29; + Vec *temp_r28; + float temp_f29; + Vec sp18; + Vec spC; + temp_r31 = object->data; + while(1) { + if(temp_r31->unk2E == lbl_2_data_32C[temp_r31->unk2C]) { + return 1; + } + temp_r28 = &lbl_2_data_334[temp_r31->unk2C][temp_r31->unk2E+1]; + temp_r29 = &lbl_2_data_334[temp_r31->unk2C][temp_r31->unk2E]; + sp18.x = temp_r28->x - temp_r29->x; + sp18.y = temp_r28->y - temp_r29->y; + sp18.z = temp_r28->z - temp_r29->z; + temp_f29 = VECMagPoint(sp18.x, sp18.y, sp18.z); + if(temp_r31->unk30 > temp_f29) { + temp_r31->unk30 -= temp_f29; + temp_r31->unk2E++; + continue; + } + break; + } + fn_2_7EDC(temp_r31->unk2C, temp_r31->unk2E, temp_r31->unk30/temp_f29, &spC); + sp18.x = spC.x-object->trans.x; + sp18.y = spC.y-object->trans.y; + sp18.z = spC.z-object->trans.z; + VECNormalize(&sp18, &sp18); + object->trans.x = spC.x; + object->trans.y = spC.y; + object->trans.z = spC.z; + object->rot.y = atan2d(sp18.x, sp18.z); + object->rot.x = -90.0f*sp18.y; + return 0; +} + +s32 fn_2_873C(omObjData *object) +{ + Work7CB4 *temp_r30; + Vec sp8; + temp_r30 = object->data; + if(object->trans.x > -400.0f + && object->trans.x < 400.0f + && object->trans.z-lbl_2_bss_60.z < 300.0f + && object->trans.y > -300.0f + && object->trans.y < 300.0f) { + if(temp_r30->unk1E == 0) { + if(temp_r30->unk20 != 0) { + temp_r30->unk20--; + sp8.x = object->trans.x; + sp8.y = object->trans.y; + sp8.z = object->trans.z-lbl_2_bss_60.z; + fn_2_10A88(&sp8, 1); + return 1; + } + + } else { + temp_r30->unk1E--; + } + } + return 0; +} + +void fn_2_8968(omObjData *object); + +void fn_2_8868(omObjData *object) +{ + Work7CB4 *temp_r31; + temp_r31 = object->data; + if(lbl_2_bss_60.z < -20800.0f) { + Hu3DModelAttrReset(object->model[0], 1); + temp_r31->unk2C = 0; + temp_r31->unk2E = 0; + temp_r31->unk30 = 0; + temp_r31->unk1E = ((frand()%10)+13)*0.43478262f; + temp_r31->unk20 = 2; + fn_2_8450(object); + object->func = fn_2_8968; + } +} + +void fn_2_8B58(omObjData *object); + +void fn_2_8968(omObjData *object) +{ + Work7CB4 *temp_r29; + temp_r29 = object->data; + temp_r29->unk30 += 25.875; + if(fn_2_873C(object)) { + temp_r29->unk1E = ((frand()%15)+22)*0.43478262f; + } + if(fn_2_8450(object)) { + Hu3DModelAttrSet(object->model[0], 1); + object->func = fn_2_8B58; + } +} + +void fn_2_8C58(omObjData *object); + +void fn_2_8B58(omObjData *object) +{ + Work7CB4 *temp_r31; + temp_r31 = object->data; + if(lbl_2_bss_60.z < -30500.0f) { + Hu3DModelAttrReset(object->model[0], 1); + temp_r31->unk2C = 1; + temp_r31->unk2E = 0; + temp_r31->unk30 = 0; + temp_r31->unk1E = ((frand()%60)+50)*0.43478262f; + temp_r31->unk20 = 3; + fn_2_8450(object); + object->func = fn_2_8C58; + } +} + +s32 lbl_2_data_424[] = { + 50, 95 +}; + +void fn_2_8C58(omObjData *object) +{ + Work7CB4 *temp_r29; + temp_r29 = object->data; + temp_r29->unk30 += 25.875; + if(fn_2_873C(object)) { + temp_r29->unk1E = ((frand()%15)+lbl_2_data_424[lbl_2_bss_14++])*0.43478262f; + } + if(fn_2_8450(object)) { + Hu3DModelAttrSet(object->model[0], 1); + object->func = NULL; + } +} + +typedef struct work_8E74 { + Vec unk0; + Vec unkC; + Vec unk18; + Vec unk24; + float unk30; + Vec unk34; +} Work8E74; + +void fn_2_9298(omObjData *object); + +void fn_2_8E74(omObjData *object) +{ + Work8E74 *temp_r31; + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work8E74), MEMORY_DEFAULT_NUM); + temp_r31 = object->data; + temp_r31->unk24.x = 6; + temp_r31->unk24.z = 90; + temp_r31->unk24.y = 100; + object->model[0] = Hu3DModelCreateFile(0x20000D); + object->motion[0] = Hu3DJointMotionFile(object->model[0], 0x200010); + Hu3DMotionSet(object->model[0], object->motion[0]); + Hu3DModelAttrSet(object->model[0], 0x40000001); + Hu3DModelAttrSet(object->model[0], 1); + omSetTra(object, -1000, 0, -23000); + omSetRot(object, 0, 90, 0); + temp_r31->unkC.x = 1000.0f-object->trans.x; + temp_r31->unkC.y = temp_r31->unk24.y-object->trans.y; + temp_r31->unkC.z = 0; + temp_r31->unk34.x = 1000; + temp_r31->unk34.y = 30; + temp_r31->unk34.z = 360.0f+((1.0f/255.0f)*frandu8()); + temp_r31->unk30 = VECMagPoint(temp_r31->unkC.x, temp_r31->unkC.y, temp_r31->unkC.z); + VECNormalize(&temp_r31->unkC, &temp_r31->unk0); + Hu3DModelShadowSet(object->model[0]); + object->work[3] = 2; + object->func = fn_2_9298; +} + +void fn_2_91AC(omObjData *object, Vec *pos) +{ + Work8E74 *temp_r30; + temp_r30 = object->data; + temp_r30->unk18 = *pos; + temp_r30->unk34.z = (1.0f/255.0f)*(360.0f*frandu8()); + Hu3DModelAttrReset(object->model[0], 1); + omSetTra(object, pos->x, pos->y, pos->z); + object->work[2] = HuAudFXEmiterPlay(1284, &pos); + object->func = fn_2_9298; +} + +void fn_2_9298(omObjData *object) +{ + Work8E74 *temp_r31; + float temp_f29; + Vec spC; + temp_r31 = object->data; + object->trans.x = temp_r31->unk18.x+1000.0f*sind(temp_r31->unk34.z); + temp_f29 = (temp_r31->unk34.y/temp_r31->unk34.x)*sqrtf((temp_r31->unk34.x*temp_r31->unk34.x)-(object->trans.x*object->trans.x)); + if(temp_r31->unk34.z >= 90.0f && temp_r31->unk34.z <= 270.0f) { + temp_f29 = -temp_f29; + } + object->trans.z = temp_r31->unk18.z+temp_f29; + temp_r31->unk34.z += 0.6f+(0.6f*fabs(cosd(temp_r31->unk34.z))); + if(temp_r31->unk34.z >= 360.0f) { + temp_r31->unk34.z -= 360.0f; + } + omSetRot(object, 0, 90.0f+temp_r31->unk34.z , 0); + spC.x = object->trans.x; + spC.y = object->trans.y; + spC.z = object->trans.z; + HuAudFXEmiterUpDate(object->work[2], &spC); + if(object->trans.z > lbl_2_bss_6C.z-220.0f) { + Hu3DModelAttrSet(object->model[0], 1); + HuAudFXStop(object->work[2]); + object->func = NULL; + } +} + +void fn_2_979C(omObjData *object); + +void fn_2_95E4(omObjData *object) +{ + object->model[0] = Hu3DModelCreateFile(0x200018); + object->motion[0] = Hu3DJointMotionFile(object->model[0], 0x200019); + object->motion[1] = Hu3DJointMotionFile(object->model[0], 0x20001A); + omSetTra(object, 3000, 0, -37000); + omSetRot(object, 0, 270, 0); + Hu3DMotionSet(object->model[0], object->motion[0]); + Hu3DModelAttrSet(object->model[0], 0x1); + Hu3DModelAttrSet(object->model[0], 0x40000001); + object->work[3] = 3; + Hu3DModelShadowSet(object->model[0]); + object->func = fn_2_979C; +} + +void fn_2_9734(s32 flag) +{ + if(flag) { + Hu3DModelAttrReset(lbl_2_bss_FC->model[0], 1); + } else { + Hu3DModelAttrSet(lbl_2_bss_FC->model[0], 1); + } +} + +void fn_2_988C(omObjData *object); + +void fn_2_979C(omObjData *object) +{ + if(lbl_2_bss_60.z < -19000.0f) { + fn_2_9734(1); + omSetTra(object, -2500, -800, -21000); + omSetRot(object, 0, 125, 0); + Hu3DMotionSet(object->model[0], object->motion[0]); + Hu3DModelAttrSet(object->model[0], 0x40000001); + object->func = fn_2_988C; + } +} + +void fn_2_99A4(omObjData *object); + +void fn_2_988C(omObjData *object) +{ + object->trans.x += 2.3f*(26.0*sind(object->rot.y)); + object->trans.z += 2.3f*(26.0*cosd(object->rot.y)); + if(object->trans.x > 6000.0f) { + fn_2_9734(0); + object->func = fn_2_99A4; + } +} + +void fn_2_9B90(omObjData *object); + +void fn_2_99A4(omObjData *object) +{ + float temp_f31; + if(lbl_2_bss_60.z <= -36200.0f+((1.0f/255.0f)*(200.0f*frandu8()))) { + temp_f31 = -250.0f+((1.0f/255.0f)*(500.0f*frandu8())); + fn_2_9734(1); + omSetTra(object, 3000, temp_f31, -37000); + omSetRot(object, 0, 270, 0); + Hu3DMotionSet(object->model[0], object->motion[0]); + Hu3DModelAttrSet(object->model[0], 0x40000001); + object->func = fn_2_9B90; + lbl_2_bss_78.x = object->trans.x; + lbl_2_bss_78.y = object->trans.y; + lbl_2_bss_78.z = object->trans.z; + lbl_2_bss_8C = HuAudFXEmiterPlay(1286, &lbl_2_bss_78); + } +} + +void fn_2_9B90(omObjData *object) +{ + object->trans.x += 2.3f*(17.0*sind(object->rot.y)); + object->trans.z += 2.3f*(17.0*cosd(object->rot.y)); + lbl_2_bss_78.x = object->trans.x; + lbl_2_bss_78.y = object->trans.y; + lbl_2_bss_78.z = object->trans.z; + HuAudFXEmiterUpDate(lbl_2_bss_8C, &lbl_2_bss_78); + if(object->trans.x <= -3000.0f) { + fn_2_9734(0); + object->func = NULL; + HuAudFXStop(lbl_2_bss_8C); + } +} + +typedef struct work_a318 { + Vec unk0; + s16 unkC; +} WorkA318; + +s32 lbl_2_data_42C[] = { + 0x20001C, + 0x20001D +}; + +void fn_2_9D00(Process *objman) +{ + omObjData *temp_r31; + s32 temp_r30; + s32 temp_r29; + for(temp_r29=0; temp_r29<4; temp_r29++) { + temp_r31 = omAddObjEx(objman, 1130, 1, 2, -1, NULL); + lbl_2_bss_E4[temp_r29] = temp_r31; + temp_r31->model[0] = Hu3DModelCreateFile(0x20001B); + for(temp_r30=0; temp_r30<2; temp_r30++) { + temp_r31->motion[temp_r30] = Hu3DJointMotionFile(temp_r31->model[0], lbl_2_data_42C[temp_r30]); + } + Hu3DModelAttrSet(temp_r31->model[0], 1); + temp_r31->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkA318), MEMORY_DEFAULT_NUM); + Hu3DModelShadowSet(temp_r31->model[0]); + temp_r31->work[3] = 1; + } +} + +void fn_2_A318(omObjData *object); + + +void fn_2_9E28(float arg1, float arg2) +{ + s32 temp_r31; + WorkA318 *temp_r30; + float temp_f31; + float temp_f30; + float temp_f29; + temp_f30 = (arg2-arg1)/4; + temp_f31 = arg1; + for(temp_r31=0; temp_r31<4; temp_r31++) { + temp_r30 = lbl_2_bss_E4[temp_r31]->data; + Hu3DModelAttrReset(lbl_2_bss_E4[temp_r31]->model[0], 1); + temp_f29 = -400.0f+((1.0f/255.0f)*(800.0f*frandu8())); + temp_r30->unk0.x = -250.0f+((1.0f/255.0f)*(500.0f*frandu8())); + omSetTra(lbl_2_bss_E4[temp_r31], temp_f29, temp_r30->unk0.x+lbl_2_bss_60.y, temp_f31); + Hu3DMotionSet(lbl_2_bss_E4[temp_r31]->model[0], lbl_2_bss_E4[temp_r31]->motion[0]); + Hu3DModelAttrSet(lbl_2_bss_E4[temp_r31]->model[0], 0x40000001); + temp_f31 += temp_f30; + temp_r30->unkC = (frand()%30)+30; + temp_r30->unk0.z = 0; + lbl_2_bss_E4[temp_r31]->func = fn_2_A318; + } +} + +omObjData *fn_2_A0B0(omObjData *object) +{ + omObjData *temp_r31; + s32 temp_r30; + omObjData *temp_r29; + M401WorkPlayer *spC; + + float temp_f27; + float temp_f26; + temp_f26 = 999999; + for(temp_r30=0; temp_r30<4; temp_r30++) { + float temp_f31; + float temp_f30; + float temp_f29; + temp_r31 = lbl_2_bss_118[temp_r30]; + spC = temp_r31->data; + temp_f31 = temp_r31->trans.x - object->trans.x; + temp_f30 = temp_r31->trans.y - object->trans.y; + temp_f29 = 0.4f*(temp_r31->trans.z - object->trans.z); + temp_f27 = VECMagPoint(temp_f31, temp_f30, temp_f29); + if(temp_f27 < temp_f26) { + temp_r29 = lbl_2_bss_118[temp_r30]; + temp_f26 = temp_f27; + } + } + return temp_r29; +} + +void fn_2_A318(omObjData *object) +{ + WorkA318 *temp_r30; + omObjData *temp_r28; + M401WorkPlayer *sp10; + temp_r30 = object->data; + if(0.0f == temp_r30->unk0.z) { + if(temp_r30->unkC == 0) { + temp_r28 = fn_2_A0B0(object); + sp10 = temp_r28->data; + temp_r30->unk0.y = atan2d(temp_r28->trans.y - object->trans.y, temp_r28->trans.x - object->trans.x); + temp_r30->unk0.z = 8.0f+((1.0f/255.0f)*((9.0f*frandu8()))); + Hu3DMotionSet(object->model[0], object->motion[1]); + Hu3DModelAttrReset(object->model[0], 0x40000001); + lbl_2_bss_78.x = object->trans.x; + lbl_2_bss_78.y = object->trans.y; + lbl_2_bss_78.z = object->trans.z; + HuAudFXEmiterPlay(1282, &lbl_2_bss_78); + } else { + temp_r30->unkC--; + temp_r30->unk0.x -= 2.5f; + } + } else { + temp_r30->unk0.x = temp_r30->unk0.x+(temp_r30->unk0.z*sind(temp_r30->unk0.y)); + object->trans.x += temp_r30->unk0.z*cosd(temp_r30->unk0.y); + temp_r30->unk0.z *= 0.94f; + if(temp_r30->unk0.z < 0.1f) { + temp_r30->unk0.z = 0; + temp_r30->unkC = (frand()%30)+25; + Hu3DMotionSet(object->model[0], object->motion[0]); + Hu3DModelAttrSet(object->model[0], 0x40000001); + } + } + if(temp_r30->unk0.x < -300.0f) { + temp_r30->unk0.x = -300.0f; + } + if(temp_r30->unk0.x > 300.0f) { + temp_r30->unk0.x = 300.0f; + } + if(object->trans.x < -400.0f) { + object->trans.x = -400.0f; + } + if(object->trans.x > 400.0f) { + object->trans.x = 400.0f; + } + omSetTra(object, object->trans.x, temp_r30->unk0.x+lbl_2_bss_60.y, object->trans.z); + if(object->trans.z > lbl_2_bss_6C.z-160.0f) { + Hu3DModelAttrSet(object->model[0], 1); + object->func = NULL; + } +} + +void fn_2_A8A4(omObjData *object, float x, float y, float z) +{ + omSetTra(object, lbl_2_bss_60.x+x, lbl_2_bss_60.y+y, lbl_2_bss_60.z+z); +} + +s32 lbl_2_data_434[] = { + 0x12D, + 0x16D, + 0x1AD, + 0x1ED, + 0x22D, + 0x26D, + 0x2AD, + 0x2ED +}; + +void fn_2_A914(s32 player) +{ + HuAudPlayerVoicePlay(player, 301); +} + +void fn_2_A940(omObjData *object) +{ + Vec spC; + omObjData *sp8; + M401WorkPlayer *temp_r28; + s32 temp_r23; + temp_r28 = object->data; + if(temp_r28->unk78 != 0) { + return; + } + spC.x = object->trans.x; + spC.y = object->trans.y; + spC.z = object->trans.z; + if((temp_r23 = fn_2_AC2C(&spC, 90, &sp8)) != 0) { + if(temp_r23 == 1) { + omVibrate(temp_r28->unk4, 12, 4, 2); + } else if(temp_r23 == 3) { + omVibrate(temp_r28->unk4, 12, 4, 2); + } else { + omVibrate(temp_r28->unk4, 12, 12, 0); + } + fn_2_7C3C(object); + fn_2_1858(temp_r28->unk4, sp8->work[3]); + } + +} + +s32 fn_2_AC2C(Vec *pos, float dist, omObjData **newobj) +{ + omObjData *temp_r30; + s32 temp_r29; + float temp_f20; + float temp_f19; + float temp_f18; + WorkA318 *sp70; + float sp6C; + + *newobj = NULL; + for(temp_r29=0; temp_r29<4; temp_r29++) { + temp_r30 = lbl_2_bss_E4[temp_r29]; + if(temp_r30->func != NULL) { + sp70 = temp_r30->data; + temp_f20 = VECMagPoint(pos->x-temp_r30->trans.x, pos->y-temp_r30->trans.y, pos->z-temp_r30->trans.z); + if(temp_f20 < sqrtf(1024.0f+(dist*dist))) { + *newobj = temp_r30; + return 1; + } + } + } + temp_r30 = lbl_2_bss_FC; + temp_f20 = VECDistanceZY(pos, &temp_r30->trans); + if(temp_f20 < sqrtf(6400.0f+(dist*dist)) + && temp_r30->trans.x < pos->x-(dist/2.0f) + && 1500.0f+temp_r30->trans.x > pos->x+(dist/2.0f)) { + *newobj = temp_r30; + return 2; + } + for(temp_r29=0; temp_r29<2; temp_r29++) { + if(lbl_2_bss_100[temp_r29]->func != NULL) { + temp_f19 = lbl_2_bss_100[temp_r29]->trans.x+(70.0*sind(lbl_2_bss_100[temp_r29]->rot.y)); + temp_f18 = lbl_2_bss_100[temp_r29]->trans.z+(70.0*cosd(lbl_2_bss_100[temp_r29]->rot.y)); + sp6C = lbl_2_bss_100[temp_r29]->trans.y-10.0f; + temp_f20 = VECMagPoint(pos->x-temp_f19, pos->y-sp6C, pos->z-temp_f18); + if(temp_f20 < sqrtf(4900.0f+(dist*dist))) { + *newobj = lbl_2_bss_100[temp_r29]; + return 3; + } + temp_f19 = lbl_2_bss_100[temp_r29]->trans.x; + temp_f18 = lbl_2_bss_100[temp_r29]->trans.z; + sp6C = lbl_2_bss_100[temp_r29]->trans.y-10.0f; + temp_f20 = VECMagPoint(pos->x-temp_f19, pos->y-sp6C, pos->z-temp_f18); + if(temp_f20 < sqrtf(4900.0f+(dist*dist))) { + *newobj = lbl_2_bss_100[temp_r29]; + return 3; + } + temp_f19 = lbl_2_bss_100[temp_r29]->trans.x+(70.0*sind(lbl_2_bss_100[temp_r29]->rot.y+180.0f)); + temp_f18 = lbl_2_bss_100[temp_r29]->trans.z+(70.0*cosd(lbl_2_bss_100[temp_r29]->rot.y+180.0f)); + sp6C = lbl_2_bss_100[temp_r29]->trans.y-10.0f; + temp_f20 = VECMagPoint(pos->x-temp_f19, pos->y-sp6C, pos->z-temp_f18); + if(temp_f20 < sqrtf(4410.0f+(dist*dist))) { + *newobj = lbl_2_bss_100[temp_r29]; + return 3; + } + } + } + return 0; +} + +void fn_2_D8CC(omObjData *object); + +void fn_2_BD90(omObjData *object) +{ + s32 temp_r27; + M401WorkPlayer *temp_r26; + switch(object->work[0]) { + case 0: + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60);; + object->work[0] = 1; + break; + + case 1: + if(!WipeStatGet()) { + object->work[0] = 2; + object->work[1] = 180; + } + break; + + case 2: + if(object->work[1] == 0) { + lbl_2_bss_C0 = MGSeqStartCreate(); + object->work[0] = 3; + lbl_2_bss_A4 = HuAudSeqPlay(68); + } else { + object->work[1]--; + } + break; + + case 3: + if(!MGSeqStatGet(lbl_2_bss_C0)) { + fn_2_AEC(1); + lbl_2_bss_120 = 1; + fn_2_1A38(lbl_2_bss_10C); + + lbl_2_bss_10C->func = fn_2_34B8; + for(temp_r27=0; temp_r27<4; temp_r27++) { + temp_r26 = lbl_2_bss_118[temp_r27]->data; + temp_r26->unk58.z = 0; + temp_r26->unkC.z = 800; + lbl_2_bss_118[temp_r27]->func = fn_2_5CC0; + object->trans.x = object->trans.y = object->trans.z = 0; + } + lbl_2_bss_108->func = fn_2_8868; + omDelObjEx(HuPrcCurrentGet(), object); + lbl_2_bss_114 = NULL; + lbl_2_bss_4->func = fn_2_D8CC; + } + + break; + } +} + +void fn_2_C130(omObjData *object) +{ + M401WorkPlayer *temp_r31; + s32 temp_r30; + LightData *temp_r28; + Vec sp14; + Vec sp8; + switch(object->work[0]) { + case 0: + if(!MGSeqStatGet(lbl_2_bss_C0)) { + object->work[0] = 1; + HuAudFXStop(lbl_2_bss_11C); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + WipeColorSet(255, 255, 255); + } + break; + + case 1: + if(WipeStatGet()) { + return; + } + Hu3DFogClear(); + temp_r28 = &Hu3DGlobalLight[0]; + temp_r28->color.r = 255; + temp_r28->color.g = 255; + temp_r28->color.b = 255; + sp14.x = 0; + sp14.y = 2500; + sp14.z = 1000; + sp8.x = 0; + sp8.y = 1030; + sp8.z = 0; + Hu3DGLightPosAimSetV(lbl_2_bss_A8, &sp14, &sp8); + lbl_2_data_30.x = 0; + lbl_2_data_30.y = 2500; + lbl_2_data_30.z = 1000; + lbl_2_data_48.x = 0; + lbl_2_data_48.y = 1030; + lbl_2_data_48.z = 0; + Hu3DShadowPosSet(&lbl_2_data_30, &lbl_2_data_3C, &lbl_2_data_48); + HuAudAUXVolSet(-1, -1); + fn_2_2ED0(lbl_2_bss_10C); + for(temp_r30=0; temp_r30<4; temp_r30++) { + temp_r31 = lbl_2_bss_118[temp_r30]->data; + temp_r31->unk50->work[0] = 1; + temp_r31->unk6C = 0; + CharModelMotionSet(((M401WorkPlayer *)(lbl_2_bss_118[temp_r30]->data))->unk86, lbl_2_bss_118[temp_r30]->motion[4]); + Hu3DModelAttrReset(lbl_2_bss_118[temp_r30]->model[0], 0x40000001); + lbl_2_bss_118[temp_r30]->func = fn_2_48A0; + Hu3DModelAmbSet(lbl_2_bss_118[temp_r30]->model[0], 0.7f, 0.7f, 0.7f); + omSetTra(lbl_2_bss_118[temp_r30], -225.0f+(temp_r30*150), 740, 400); + omSetRot(lbl_2_bss_118[temp_r30], 0, 0, 0); + if(temp_r31->unk68) { + if(lbl_2_bss_BA == 1) { + temp_r31->unk0 = 10; + temp_r31->unk58.x = 13; + } else { + temp_r31->unk58.x = 10; + temp_r31->unk0 = 6; + } + OSReport("GetCoin:%d\n", temp_r30); + GWPlayerCoinWinSet(temp_r30, 10); + } else { + temp_r31->unk58.x = 10; + temp_r31->unk0 = 6; + } + } + fn_2_26E0(lbl_2_bss_10C); + object->work[0] = 2; + lbl_2_bss_F4->work[0] = 1; + fn_2_141B0(); + lbl_2_bss_10C->func = fn_2_3838; + lbl_2_bss_11C = HuAudFXPlay(1280); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + omDelObjEx(HuPrcCurrentGet(), lbl_2_bss_C8); + break; + + case 2: + WipeStatGet() == 0; + break; + } +} + +typedef struct work_c840 { + Vec unk0[9]; + float unk6C[9]; +} WorkC840; + +void fn_2_C840(s16 arg0); + +void fn_2_CAB0(omObjData *object); + +void fn_2_C6DC(omObjData *object) +{ + s32 temp_r30; + float temp_f31; + WorkC840 *sp8; + sp8 = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkC840), MEMORY_DEFAULT_NUM); + for(temp_r30=0; temp_r30<9; temp_r30++) { + if(temp_r30 == 0) { + object->model[temp_r30] = Hu3DModelCreateFile(0x200002); + } else { + object->model[temp_r30] = Hu3DModelCreateFile(0x200002); + } + Hu3DModelLayerSet(object->model[temp_r30], 1); + fn_2_C840(temp_r30); + temp_f31 = (1.0f/255.0f)*(Hu3DMotionMaxTimeGet(object->model[temp_r30])*frandu8()); + Hu3DMotionTimeSet(object->model[temp_r30], temp_f31); + } + omSetStatBit(object, 0x100); + object->func = fn_2_CAB0; +} + +void fn_2_C840(s16 arg0) +{ + WorkC840 *temp_r31; + float temp_f31, temp_f30; + temp_r31 = lbl_2_bss_F8->data; + temp_f30 = (1.0f/255.0f)*(360.0f*frandu8()); + temp_f31 = (1.0f/255.0f)*(200.0f*frandu8()); + temp_r31->unk0[arg0].x = temp_f31*cosd(temp_f30); + temp_r31->unk0[arg0].z = temp_f31*sind(temp_f30); + temp_r31->unk0[arg0].y = 1000; + temp_r31->unk6C[arg0] = 1.0f; + temp_f31 *= 0.25f; + Hu3DModelRotSet(lbl_2_bss_F8->model[arg0], temp_f31*sind(temp_f30), 0, temp_f31*cosd(temp_f30)); + Hu3DMotionTimeSet(lbl_2_bss_F8->model[arg0], 0); +} + +void fn_2_CAB0(omObjData *object) +{ + s32 temp_r31; + WorkC840 *temp_r29; + u8 temp_r28; + float temp_f29; + temp_r29 = object->data; + for(temp_r31=0; temp_r31<9; temp_r31++) { + Hu3DModelPosSet(object->model[temp_r31], temp_r29->unk0[temp_r31].x, temp_r29->unk0[temp_r31].y, lbl_2_bss_38.z+temp_r29->unk0[temp_r31].z-500); + Hu3DModelTPLvlSet(object->model[temp_r31], temp_r29->unk6C[temp_r31]); + temp_f29 = Hu3DMotionTimeGet(object->model[temp_r31])/Hu3DMotionMaxTimeGet(object->model[temp_r31]); + temp_r29->unk6C[temp_r31] = 1.0f-temp_f29; + if(Hu3DMotionTimeGet(object->model[temp_r31]) >= Hu3DMotionMaxTimeGet(object->model[temp_r31])) { + fn_2_C840(temp_r31); + } + } + if(lbl_2_bss_60.z <= -26800.0f && lbl_2_bss_60.z >= -27400.0f) { + temp_r28 = 255.0f-(223.0f*(-(lbl_2_bss_60.z+26800.0f) / 600.0f)); + if(temp_r28 < 32) { + temp_r28 = 32; + } + } else if(lbl_2_bss_60.z <= -27700.0f && lbl_2_bss_60.z >= -28300.0f) { + temp_r28 = 32.0f+(223.0f*(-(lbl_2_bss_60.z+27700.0f) / 600.0f)); + } else if(lbl_2_bss_60.z < -27400.0f && lbl_2_bss_60.z > -28300.0f) { + temp_r28 = 32; + } else { + temp_r28 = 255; + } + Hu3DGLightColorSet(lbl_2_bss_A8, temp_r28, temp_r28, temp_r28, 255); + if(lbl_2_bss_60.z < -26600.0f && lbl_2_bss_60.z > -27500.0f) { + for(temp_r31=0; temp_r31<9; temp_r31++) { + Hu3DModelAttrSet(object->model[temp_r31], 1); + } + } else { + for(temp_r31=0; temp_r31<9; temp_r31++) { + Hu3DModelAttrReset(object->model[temp_r31], 1); + } + } +} + +void fn_2_D088(omObjData *object) +{ + CameraData *temp_r31 = &Hu3DCamera[0]; + Vec sp8; + + lbl_2_bss_6C = temp_r31->pos; + lbl_2_bss_60 = temp_r31->target; + VECSubtract(&lbl_2_bss_6C, &lbl_2_bss_54, &sp8); + lbl_2_bss_50 = VECMag(&sp8); + lbl_2_bss_54 = lbl_2_bss_6C; + + fn_2_A98(); +} + +void fn_2_D180(float arg0) +{ + Vec sp14; + Vec sp8; + lbl_2_bss_44.x = 0; + lbl_2_bss_44.y = 0; + lbl_2_bss_44.z = arg0; + lbl_2_bss_38.x = 0; + lbl_2_bss_38.y = 0; + lbl_2_bss_38.z = -1500+arg0; + lbl_2_bss_2C.x = 0; + lbl_2_bss_2C.y = 1; + lbl_2_bss_2C.z = 0; + Hu3DCameraPosSetV(1, &lbl_2_bss_44, &lbl_2_bss_2C, &lbl_2_bss_38); + Hu3DModelPosSet(lbl_2_bss_10C->model[1], 0, 0, -1500+arg0); + lbl_2_data_30.y = 3500+lbl_2_bss_38.y; + lbl_2_data_30.z = 1500+lbl_2_bss_38.z; + lbl_2_data_48.y = lbl_2_bss_38.y-200; + lbl_2_data_48.z = 500+lbl_2_bss_38.z; + Hu3DShadowPosSet(&lbl_2_data_30, &lbl_2_data_3C, &lbl_2_data_48); + sp14 = lbl_2_bss_44; + VECSubtract(&lbl_2_bss_38, &sp14, &sp8); + VECNormalize(&sp8, &sp8); + HuAudFXListnerUpdate(&sp14, &sp8); +} + +void fn_2_D3E8(omObjData *object) +{ + Vec sp14; + Vec sp8; + float temp_f31 = 1.5f*object->scale.x; + lbl_2_bss_44.x = object->trans.x+(-object->trans.x*sind(temp_f31)); + lbl_2_bss_44.y = object->trans.y+(-object->trans.y*sind(temp_f31)); + lbl_2_bss_44.z = object->trans.z+(-object->trans.z*sind(temp_f31)); + lbl_2_bss_38.x = object->rot.x+(-object->rot.x*sind(temp_f31)); + lbl_2_bss_38.y = object->rot.y+(-object->rot.y*sind(temp_f31)); + lbl_2_bss_38.z = object->rot.z+((-1500.0f-object->rot.z)*sind(temp_f31)); + lbl_2_bss_2C.x = 0; + lbl_2_bss_2C.y = 1; + lbl_2_bss_2C.z = 0; + object->scale.x += 1.0f; + if(object->scale.x > 60.0f) { + lbl_2_bss_44.x = 0; + lbl_2_bss_44.y = 0; + lbl_2_bss_44.z = 0; + lbl_2_bss_38.x = 0; + lbl_2_bss_38.y = 0; + lbl_2_bss_38.z = -1500; + } + Hu3DCameraPosSetV(1, &lbl_2_bss_44, &lbl_2_bss_2C, &lbl_2_bss_38); + lbl_2_bss_54 = lbl_2_bss_44; + lbl_2_data_30.y = 3500+lbl_2_bss_38.y; + lbl_2_data_30.z = 1500+lbl_2_bss_38.z; + lbl_2_data_48.y = lbl_2_bss_38.y-200; + lbl_2_data_48.z = 500+lbl_2_bss_38.z; + Hu3DShadowPosSet(&lbl_2_data_30, &lbl_2_data_3C, &lbl_2_data_48); + sp14 = lbl_2_bss_44; + VECSubtract(&lbl_2_bss_38, &lbl_2_bss_44, &sp8); + VECNormalize(&sp8, &sp8); + HuAudFXListnerUpdate(&sp14, &sp8); + if(object->scale.x > 60.0f) { + lbl_2_bss_128 = 100; + Hu3DCameraPerspectiveSet(1, lbl_2_bss_12C, lbl_2_bss_128, lbl_2_bss_124, 1.2f); + object->scale.x = 0; + object->func = NULL; + } +} + +void fn_2_D8CC(omObjData *object) +{ + if(lbl_2_bss_BE != 0) { + return; + } + lbl_2_data_0 *= 1.05f; + if(lbl_2_data_0 < -14.375f) { + lbl_2_data_0 = -14.375f; + } + object->scale.x += lbl_2_data_0; + fn_2_D180(object->scale.x); +} + +s32 lbl_2_data_460[] = { + 0x200004, + 0x200005, + 0x200006 +}; + +typedef struct work_e6e8 { + s16 unk0; + Vec unk4; + float unk10; + float unk14; + float unk18; + float unk1C; + float unk20; + float unk24; + float unk28; + float unk2C; + s8 *unk30; + Vec *unk34; + Vec *unk38; + Vec *unk3C; + Vec *unk40; + Vec *unk44; + Vec *unk48; + Vec *unk4C; + s16 *unk50; + s16 *unk54; + float *unk58; + float *unk5C; + float *unk60; + float *unk64; + float *unk68; +} WorkE6E8; + +void fn_2_DBCC(s16 arg0) +{ + omObjData *temp_r31; + s32 temp_r30; + s8 *temp_r28; + float temp_f31; + temp_r31 = lbl_2_bss_C4 = omAddObjEx(lbl_2_bss_1C, 1145, arg0, 0, -1, NULL); + omSetStatBit(temp_r31, 0x100); + temp_r31->data = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(s8), MEMORY_DEFAULT_NUM); + temp_r28 = temp_r31->data; + temp_r31->work[0] = arg0; + for(temp_r30=0; temp_r30model[temp_r30] = Hu3DModelCreateFile(lbl_2_data_460[temp_r30]); + } else { + temp_r31->model[temp_r30] = Hu3DModelLink(temp_r31->model[temp_r30%3]); + } + temp_f31 = 0.5f+((1.0f/255.0f)*(0.5f*frandu8())); + Hu3DModelScaleSet(temp_r31->model[temp_r30], temp_f31, temp_f31, temp_f31); + Hu3DModelAttrSet(temp_r31->model[temp_r30], 1); + Hu3DModelAttrSet(temp_r31->model[temp_r30], 0x40000001); + Hu3DMotionTimeSet(temp_r31->model[temp_r30], (1.0f/255.0f)*(Hu3DMotionMaxTimeGet(temp_r31->model[temp_r30])*frandu8())); + temp_r28[temp_r30] = 0; + } +} + +void fn_2_DE1C(WorkE6E8 *arg0) +{ + HuMemDirectFree(arg0->unk34); + HuMemDirectFree(arg0->unk38); + HuMemDirectFree(arg0->unk40); + HuMemDirectFree(arg0->unk44); + HuMemDirectFree(arg0->unk48); + HuMemDirectFree(arg0->unk4C); + HuMemDirectFree(arg0->unk3C); + HuMemDirectFree(arg0->unk50); + HuMemDirectFree(arg0->unk54); + HuMemDirectFree(arg0->unk58); + HuMemDirectFree(arg0->unk5C); + HuMemDirectFree(arg0->unk60); + HuMemDirectFree(arg0->unk64); + HuMemDirectFree(arg0->unk68); + HuMemDirectFree(arg0->unk30); +} + +omObjData *fn_2_DEBC(s16 arg0) +{ + WorkE6E8 *temp_r31; + s32 temp_r29; + omObjData *temp_r28; + s32 temp_r27; + s8 *temp_r26; + if(arg0 <= 0) { + return NULL; + } + temp_r28 = omAddObjEx(lbl_2_bss_1C, 1145, arg0, 0, -1, NULL); + omSetStatBit(temp_r28, 0x100); + temp_r28->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkE6E8), MEMORY_DEFAULT_NUM); + temp_r31 = temp_r28->data; + temp_r31->unk34 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(Vec), MEMORY_DEFAULT_NUM); + temp_r31->unk38 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(Vec), MEMORY_DEFAULT_NUM); + temp_r31->unk40 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(Vec), MEMORY_DEFAULT_NUM); + temp_r31->unk44 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(Vec), MEMORY_DEFAULT_NUM); + temp_r31->unk48 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(Vec), MEMORY_DEFAULT_NUM); + temp_r31->unk4C = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(Vec), MEMORY_DEFAULT_NUM); + temp_r31->unk3C = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(Vec), MEMORY_DEFAULT_NUM); + temp_r31->unk50 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(s16), MEMORY_DEFAULT_NUM); + temp_r31->unk54 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(s16), MEMORY_DEFAULT_NUM); + temp_r31->unk58 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(float), MEMORY_DEFAULT_NUM); + temp_r31->unk5C = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(float), MEMORY_DEFAULT_NUM); + temp_r31->unk60 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(float), MEMORY_DEFAULT_NUM); + temp_r31->unk64 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(float), MEMORY_DEFAULT_NUM); + temp_r31->unk68 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(float), MEMORY_DEFAULT_NUM); + temp_r31->unk30 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0*sizeof(s8), MEMORY_DEFAULT_NUM); + for(temp_r27=0; temp_r27data; + for(temp_r29=0; temp_r29work[0]; temp_r29++) { + if(temp_r26[temp_r29] == 0) { + temp_r26[temp_r29] = 1; + temp_r28->model[temp_r27] = lbl_2_bss_C4->model[temp_r29]; + temp_r31->unk54[temp_r27] = temp_r29%3; + temp_r31->unk30[temp_r27] = temp_r29; + break; + } + } + if(temp_r29 == lbl_2_bss_C4->work[0]) { + arg0 -= (s32)arg0-temp_r27; + break; + } + } + if(arg0 == 0) { + fn_2_DE1C(temp_r31); + omDelObjEx(HuPrcCurrentGet(), temp_r28); + temp_r28 = NULL; + } else { + temp_r31->unk0 = arg0; + temp_r31->unk10 = 0; + } + return temp_r28; +} + +void fn_2_E24C(omObjData *object) +{ + WorkE6E8 *temp_r31; + s32 temp_r30; + s8 *temp_r28; + temp_r31 = object->data; + temp_r28 = lbl_2_bss_C4->data; + for(temp_r30=0; temp_r30unk0; temp_r30++) { + temp_r28[temp_r31->unk30[temp_r30]] = 0; + Hu3DModelAttrSet(object->model[temp_r30], 1); + } + fn_2_DE1C(temp_r31); + omDelObjEx(HuPrcCurrentGet(), object); +} + +void fn_2_E6E8(omObjData *object); + +void fn_2_E364(omObjData *object, s16 arg1) +{ + s32 temp_r31; + WorkE6E8 *temp_r29 = object->data; + if(arg1 == 1) { + for(temp_r31=0; temp_r31unk0; temp_r31++) { + Hu3DModelAttrReset(object->model[temp_r31], 1); + } + object->func = fn_2_E6E8; + } else { + for(temp_r31=0; temp_r31unk0; temp_r31++) { + Hu3DModelAttrSet(object->model[temp_r31], 1); + } + object->func = NULL; + } +} + +void fn_2_E420(omObjData *object, Vec *arg1, Vec *arg2) +{ + WorkE6E8 *temp_r31 = object->data; + s32 temp_r30; + for(temp_r30=0; temp_r30unk0; temp_r30++) { + temp_r31->unk34[temp_r30].x = (arg1->x - arg2->x)+((1.0f/255.0f)*(2.0f*arg2->x*frandu8())); + temp_r31->unk34[temp_r30].y = (arg1->y - arg2->y)+((1.0f/255.0f)*(2.0f*arg2->y*frandu8())); + temp_r31->unk34[temp_r30].z = (arg1->z - arg2->z)+((1.0f/255.0f)*(2.0f*arg2->z*frandu8())); + VECNormalize(&temp_r31->unk34[temp_r30], &temp_r31->unk38[temp_r30]); + temp_r31->unk5C[temp_r30] = temp_r31->unk64[temp_r30] = temp_r31->unk60[temp_r30] = temp_r31->unk68[temp_r30] = 0; + temp_r31->unk58[temp_r30] = 0.1f; + Hu3DModelPosSet(object->model[temp_r30], temp_r31->unk34[temp_r30].x, temp_r31->unk34[temp_r30].y, temp_r31->unk34[temp_r30].z); + + } +} + +void fn_2_E66C(omObjData *object, Vec *pos) +{ + WorkE6E8 *temp_r31 = object->data; + temp_r31->unk4 = *pos; +} + +void fn_2_E69C(omObjData *object, float arg2, float arg3) +{ + WorkE6E8 *temp_r31 = object->data; + temp_r31->unk14 = arg2; + temp_r31->unk18 = arg3; +} + +void fn_2_E6BC(omObjData *object, float arg2, float arg3, float arg4, float arg5, float arg6) +{ + WorkE6E8 *temp_r31 = object->data; + temp_r31->unk1C = arg2; + temp_r31->unk20 = arg3; + temp_r31->unk24 = arg4; + temp_r31->unk28 = arg5; + temp_r31->unk2C = arg6; +} + +void fn_2_E6E8(omObjData *object) +{ + WorkE6E8 *temp_r31 = object->data; + s32 temp_r30; + s32 temp_r29; + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + float temp_f27; + Mtx sp158, sp128, spF8, spC8, sp98, sp68; + Vec sp5C, sp50, sp44, sp38, sp2C, sp20, sp14, sp8; + for(temp_r30=0; temp_r30unk0; temp_r30++) { + temp_r31->unk3C[temp_r30].x = 0; + temp_r31->unk3C[temp_r30].y = 0; + temp_r31->unk3C[temp_r30].z = 0; + temp_r31->unk40[temp_r30].x = 0; + temp_r31->unk40[temp_r30].y = 0; + temp_r31->unk40[temp_r30].z = 0; + temp_r31->unk44[temp_r30].x = 0; + temp_r31->unk44[temp_r30].y = 0; + temp_r31->unk44[temp_r30].z = 0; + temp_r31->unk48[temp_r30].x = 0; + temp_r31->unk48[temp_r30].y = 0; + temp_r31->unk48[temp_r30].z = 0; + temp_r31->unk4C[temp_r30].x = 0; + temp_r31->unk4C[temp_r30].y = 0; + temp_r31->unk4C[temp_r30].z = 0; + temp_r31->unk50[temp_r30] = 0; + } + for(temp_r30=0; temp_r30unk0; temp_r30++) { + for(temp_r29=temp_r30+1; temp_r29unk0; temp_r29++) { + VECSubtract(&temp_r31->unk34[temp_r30], &temp_r31->unk34[temp_r29], &sp5C); + temp_f28 = VECMag(&sp5C); + if(temp_f28 < temp_r31->unk14) { + VECScale(&sp5C, &sp50, 1.0f/(temp_f28*temp_f28)); + VECAdd(&temp_r31->unk3C[temp_r30], &sp50, &temp_r31->unk3C[temp_r30]); + VECSubtract(&temp_r31->unk3C[temp_r29], &sp50, &temp_r31->unk3C[temp_r29]); + if(temp_r31->unk54[temp_r30] == temp_r31->unk54[temp_r29]){ + VECScale(&temp_r31->unk38[temp_r29], &sp50, 1.0f/temp_f28); + VECAdd(&temp_r31->unk40[temp_r30], &sp50, &temp_r31->unk40[temp_r30]); + VECScale(&temp_r31->unk38[temp_r30], &sp50, 1.0f/temp_f28); + VECAdd(&temp_r31->unk40[temp_r29], &sp50, &temp_r31->unk40[temp_r29]); + VECAdd(&temp_r31->unk44[temp_r30], &temp_r31->unk34[temp_r29], &temp_r31->unk44[temp_r30]); + VECAdd(&temp_r31->unk44[temp_r29], &temp_r31->unk34[temp_r30], &temp_r31->unk44[temp_r29]); + } + temp_r31->unk50[temp_r30]++; + temp_r31->unk50[temp_r29]++; + } + + } + for(temp_r29=0; temp_r29<4; temp_r29++) { + sp44.x = lbl_2_bss_118[temp_r29]->trans.x; + sp44.y = lbl_2_bss_118[temp_r29]->trans.y; + sp44.z = lbl_2_bss_118[temp_r29]->trans.z; + VECSubtract(&temp_r31->unk34[temp_r30], &sp44, &sp38); + if(!(VECDotProduct(&sp38, &temp_r31->unk38[temp_r30]) > 0)) { + temp_f30 = VECMag(&sp38)-200; + if(temp_f30 < temp_r31->unk14) { + temp_f30 -= 100; + if(temp_f30 < 0.01f) { + temp_f30 = 0.01f; + } + VECScale(&sp38, &sp38, 1.0f/temp_f30); + VECAdd(&temp_r31->unk4C[temp_r30], &sp38, &temp_r31->unk4C[temp_r30]); + } + } + } + if(temp_r31->unk50[temp_r30] != 0) { + VECScale(&temp_r31->unk44[temp_r30], &temp_r31->unk44[temp_r30], 1.0f/temp_r31->unk50[temp_r30]); + VECSubtract(&temp_r31->unk44[temp_r30], &temp_r31->unk34[temp_r30], &sp2C); + temp_f29 = VECMag(&sp2C); + if(temp_f29 > 0.0f){ + VECScale(&sp2C, &temp_r31->unk44[temp_r30], 1.0f/temp_f29); + } else { + temp_r31->unk44[temp_r30].x = 0; + temp_r31->unk44[temp_r30].y = 0; + temp_r31->unk44[temp_r30].z = 0; + } + VECScale(&temp_r31->unk40[temp_r30], &temp_r31->unk40[temp_r30], 1.0f/temp_r31->unk50[temp_r30]); + temp_f29 = VECMag(&temp_r31->unk40[temp_r30]); + if(temp_f29 > 0) { + VECScale(&temp_r31->unk40[temp_r30], &temp_r31->unk40[temp_r30], 1.0f/temp_f29); + VECSubtract(&temp_r31->unk40[temp_r30], &temp_r31->unk38[temp_r30], &sp2C); + VECScale(&sp2C, &temp_r31->unk40[temp_r30], 1.0f/temp_f29); + } + } + VECSubtract(&temp_r31->unk4, &temp_r31->unk34[temp_r30], &temp_r31->unk48[temp_r30]); + VECNormalize(&temp_r31->unk48[temp_r30], &temp_r31->unk48[temp_r30]); + } + for(temp_r30=0; temp_r30unk0; temp_r30++) { + sp20.x = 0; + sp20.y = 0; + sp20.z = 0; + VECScale(&temp_r31->unk3C[temp_r30], &sp8, temp_r31->unk1C); + VECAdd(&sp8, &sp20, &sp20); + VECScale(&temp_r31->unk4C[temp_r30], &sp8, temp_r31->unk20); + VECAdd(&sp8, &sp20, &sp20); + VECScale(&temp_r31->unk40[temp_r30], &sp8, temp_r31->unk24); + VECAdd(&sp8, &sp20, &sp20); + VECScale(&temp_r31->unk44[temp_r30], &sp8, temp_r31->unk28); + VECAdd(&sp8, &sp20, &sp20); + VECScale(&temp_r31->unk48[temp_r30], &sp8, temp_r31->unk2C); + VECAdd(&sp8, &sp20, &sp20); + temp_f27 = VECMag(&sp20); + if(temp_f27 > 1.0f) { + VECScale(&sp20, &sp20, 1.0f/temp_f27); + } + if(sp20.y > 0.01f) { + temp_r31->unk60[temp_r30] += 0.02f; + if(temp_r31->unk60[temp_r30] > 0.8f) { + temp_r31->unk60[temp_r30] = 0.8f; + } + } else { + if(sp20.y < -0.01f) { + temp_r31->unk60[temp_r30] -= 0.02f; + if(temp_r31->unk60[temp_r30] < -0.8f) { + temp_r31->unk60[temp_r30] = -0.8f; + } + } else { + temp_r31->unk60[temp_r30] *= 0.98f; + } + } + temp_r31->unk58[temp_r30] -= 0.002*temp_r31->unk60[temp_r30]; + temp_r31->unk58[temp_r30] = temp_r31->unk18+(0.99f*(temp_r31->unk58[temp_r30]-temp_r31->unk18)); + if(temp_r31->unk58[temp_r30] < 0.4f*temp_r31->unk18) { + temp_r31->unk58[temp_r30] = 0.4f*temp_r31->unk18; + } + if(temp_r31->unk58[temp_r30] > 5.0f*temp_r31->unk18) { + temp_r31->unk58[temp_r30] = 5.0f*temp_r31->unk18; + } + sp14 = sp20; + sp14.y = 0; + sp8 = temp_r31->unk38[temp_r30]; + if(VECMag(&sp14) > 0) { + VECNormalize(&sp14, &sp14); + } + temp_f31 = VECDotProduct(&sp14, &sp8); + if(temp_f31 > 0.7f) { + temp_f31 -= 0.7f; + temp_r31->unk58[temp_r30] += 0.005f*temp_f31; + } + VECCrossProduct(&sp14, &sp8, &sp14); + temp_f31 = 0.07f*((1.0f-temp_f31)/2); + if(sp14.y > 0.05f) { + temp_r31->unk68[temp_r30] = 0.05f*(temp_f31+(19.0f*temp_r31->unk68[temp_r30])); + } else if(sp14.y < -0.05f) { + temp_r31->unk68[temp_r30] = 0.05f*((19.0f*temp_r31->unk68[temp_r30])-temp_f31); + } else { + temp_r31->unk68[temp_r30] *= 0.98f; + } + temp_r31->unk5C[temp_r30] += temp_r31->unk68[temp_r30]; + temp_r31->unk64[temp_r30] = 20.0f*-temp_r31->unk68[temp_r30]; + MTXTrans(sp158, temp_r31->unk34[temp_r30].x, temp_r31->unk34[temp_r30].y, temp_r31->unk34[temp_r30].z); + MTXRotDeg(sp128, 'x', (temp_r31->unk60[temp_r30]/M_PI)*180.0); + MTXRotDeg(spF8, 'y', (temp_r31->unk5C[temp_r30]/M_PI)*180.0); + MTXRotDeg(spC8, 'z', (temp_r31->unk64[temp_r30]/M_PI)*180.0); + MTXConcat(sp128, spF8, sp98); + MTXConcat(spC8, sp98, sp68); + MTXConcat(sp68, sp158, sp98); + temp_r31->unk38[temp_r30].x = MTXRowCol(sp98, 2, 0); + temp_r31->unk38[temp_r30].y = MTXRowCol(sp98, 2, 1); + temp_r31->unk38[temp_r30].z = MTXRowCol(sp98, 2, 2); + temp_r31->unk34[temp_r30].x += 100.0f*(temp_r31->unk38[temp_r30].x*temp_r31->unk58[temp_r30]); + temp_r31->unk34[temp_r30].y += 100.0f*(temp_r31->unk38[temp_r30].y*temp_r31->unk58[temp_r30]); + temp_r31->unk34[temp_r30].z += 100.0f*(temp_r31->unk38[temp_r30].z*temp_r31->unk58[temp_r30]); + if(temp_r31->unk34[temp_r30].y < -350.0f) { + temp_r31->unk34[temp_r30].y = -350.0f; + } + Hu3DModelPosSet(object->model[temp_r30], temp_r31->unk34[temp_r30].x, temp_r31->unk34[temp_r30].y, temp_r31->unk34[temp_r30].z); + Hu3DModelRotSet(object->model[temp_r30], (-temp_r31->unk60[temp_r30]/M_PI)*180.0, (-temp_r31->unk5C[temp_r30]/M_PI)*180.0, 0); + } +} + +void fn_2_F778() +{ + CameraData *temp_r31; + s32 temp_r30; + float sp8[7]; + temp_r31 = lbl_2_bss_DC->data; + sp8[0] = temp_r31->pos.x; + sp8[1] = temp_r31->pos.y; + sp8[2] = temp_r31->pos.z; + sp8[3] = temp_r31->up.x; + sp8[4] = temp_r31->up.y; + sp8[5] = temp_r31->up.z; + sp8[6] = temp_r31->target.x; + fontcolor = FONT_COLOR_WHITE; + for(temp_r30=0; temp_r30<7; temp_r30++) { + if(temp_r30 == lbl_2_bss_18) { + print8(24.0+(1.5*((temp_r30*8)*7)), 384, 1.5f, "____"); + } + print8(24.0+(1.5*((temp_r30*8)*7)), 400, 1.5f, "%.2f", sp8[temp_r30]); + } + if(HuPadBtnRep[0] & PAD_BUTTON_LEFT) { + if(--lbl_2_bss_18 < 0) { + lbl_2_bss_18 = 6; + } + } + if(HuPadBtnRep[0] & PAD_BUTTON_RIGHT) { + if(++lbl_2_bss_18 > 6) { + lbl_2_bss_18 = 0; + } + } + if(HuPadBtnRep[0] & PAD_BUTTON_UP) { + if(HuPadBtn[0] & PAD_TRIGGER_R) { + sp8[lbl_2_bss_18] += 1.0f; + } else if(HuPadBtn[0] & PAD_TRIGGER_L) { + sp8[lbl_2_bss_18] += 0.1f; + } else { + sp8[lbl_2_bss_18] += 0.01f; + } + if(sp8[lbl_2_bss_18] > 999.99f) { + sp8[lbl_2_bss_18] = 999.99f; + } + } + if(HuPadBtnRep[0] & PAD_BUTTON_DOWN) { + if(HuPadBtn[0] & PAD_TRIGGER_R) { + sp8[lbl_2_bss_18] -= 1.0f; + } else if(HuPadBtn[0] & PAD_TRIGGER_L) { + sp8[lbl_2_bss_18] -= 0.1f; + } else { + sp8[lbl_2_bss_18] -= 0.01f; + } + if(sp8[lbl_2_bss_18] < 0) { + sp8[lbl_2_bss_18] = 0; + } + } + temp_r31->pos.x = sp8[0]; + temp_r31->pos.y = sp8[1]; + temp_r31->pos.z = sp8[2]; + temp_r31->up.x = sp8[3]; + temp_r31->up.y = sp8[4]; + temp_r31->up.z = sp8[5]; + temp_r31->target.x = sp8[6]; +} + +void fn_2_FF98(omObjData *object); + +omObjData *fn_2_FC40(s16 arg0, Vec *arg1, Vec *arg2, Vec *arg3) +{ + omObjData *temp_r30; + omObjData *temp_r22; + temp_r22 = omAddObjEx(HuPrcCurrentGet(), 1140, 0, 0, -1, fn_2_FF98); + temp_r30 = fn_2_DEBC(arg0); + temp_r22->work[0] = (u32)temp_r30; + fn_2_E420(temp_r30, arg1, arg2); + fn_2_E66C(temp_r30, arg3); + fn_2_E69C(temp_r30, 90.0f, 0.045999996f); + fn_2_E6BC(temp_r30, 5.0f, 1.5f, 0.08f, 0.8f, 0.8f); + fn_2_E364(temp_r30, 1); + return temp_r22; +} + +void fn_2_FF98(omObjData *object) +{ + WorkE6E8 *temp_r29; + omObjData *temp_r28; + s32 temp_r25; + s32 temp_r24; + temp_r24 = 0; + temp_r28 = (omObjData *)(object->work[0]); + temp_r29 = temp_r28->data; + temp_r29->unk4.x += object->scale.x*sind(object->trans.x); + temp_r29->unk4.y += object->scale.y*sind(object->trans.x); + temp_r29->unk4.z += object->scale.z*sind(object->trans.x); + object->trans.x += object->rot.x; + if(object->trans.x >= 360.0f) { + object->trans.x -= 360.0f; + } + if(object->trans.x < 0.0f) { + object->trans.x += 360.0f; + } + for(temp_r25=0; temp_r25unk0; temp_r25++) { + if(temp_r29->unk34[temp_r25].z >= lbl_2_bss_6C.z) { + temp_r24++; + } + } + if(temp_r24 == temp_r29->unk0) { + fn_2_E24C(temp_r28); + omDelObjEx(HuPrcCurrentGet(), object); + } + } \ No newline at end of file diff --git a/src/REL/m402Dll/main.c b/src/REL/m402Dll/main.c new file mode 100755 index 00000000..6b21f7cf --- /dev/null +++ b/src/REL/m402Dll/main.c @@ -0,0 +1,1949 @@ +#include "REL/executor.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/esprite.h" +#include "game/flag.h" +#include "game/frand.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/process.h" +#include "game/sprite.h" +#include "game/wipe.h" + +#include "dolphin.h" +#include "ext_math.h" +#include "rel_sqrt_consts.h" + +#undef ABS +#define ABS(x) ((0 > (x)) ? -(x) : (x)) + +typedef struct unk_bss_204_struct { + /* 0x00 */ u16 unk00; + /* 0x02 */ s16 unk02; + /* 0x04 */ struct unk_bss_204_struct *unk04; + /* 0x08 */ struct unk_bss_204_struct *unk08; +} UnkBss204Struct; // Size 0xC + +typedef struct unk_bss_1ec_struct { + /* 0x00 */ HsfanimStruct00 *unk00; + /* 0x04 */ s32 *unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ struct unk_bss_1ec_struct *unk10; + /* 0x14 */ struct unk_bss_1ec_struct *unk14; +} UnkBss1ECStruct; // Size 0x18 + +typedef struct { + /* 0x00 */ u32 unk00; + /* 0x04 */ s16 unk04; + /* 0x06 */ char unk06[2]; // padding? +} UnkBss5CStruct; // Size 8 + +typedef struct { + /* 0x00 */ float unk00; + /* 0x04 */ float unk04; + /* 0x08 */ float unk08; + /* 0x0C */ float unk0C; + /* 0x10 */ float unk10; + /* 0x14 */ float unk14; + /* 0x18 */ float unk18; + /* 0x1C */ float unk1C; + /* 0x20 */ float unk20; + /* 0x24 */ float unk24; + /* 0x28 */ float unk28; + /* 0x2C */ float unk2C; + /* 0x30 */ float unk30; + /* 0x34 */ s32 unk34; + /* 0x38 */ s32 unk38; + /* 0x3C */ s32 unk3C; + /* 0x40 */ s32 unk40; + /* 0x44 */ s32 unk44; + /* 0x48 */ s32 unk48; + /* 0x4C */ s32 unk4C; + /* 0x50 */ s32 unk50; + /* 0x54 */ s32 unk54; + /* 0x58 */ s32 unk58; + /* 0x5C */ s32 unk5C; + /* 0x60 */ s32 unk60; +} UnkFn27A8Struct; // Size 0x64 + +typedef struct { + /* 0x00 */ float unk00; + /* 0x04 */ float unk04; + /* 0x08 */ float unk08; + /* 0x0C */ float unk0C; + /* 0x10 */ s32 unk10; +} UnkData234Struct; // Size 0x14 + +typedef struct { + /* 0x00 */ float unk00; + /* 0x04 */ float unk04; + /* 0x08 */ float unk08; + /* 0x0C */ float unk0C; + /* 0x10 */ float unk10; + /* 0x14 */ float unk14; + /* 0x18 */ s32 unk18; +} UnkFn6AB4Struct; // Size 0x1C + +typedef struct { + /* 0x00 */ Vec unk00; + /* 0x0C */ float unk0C; + /* 0x10 */ float unk10; + /* 0x14 */ float unk14; + /* 0x18 */ float unk18; + /* 0x1C */ float unk1C; + /* 0x20 */ float unk20; + /* 0x24 */ Vec unk24; + /* 0x30 */ float unk30; + /* 0x34 */ float unk34; + /* 0x38 */ s32 unk38; +} UnkFn70E4Struct; // Size 0x3C + +static void fn_1_0(void); +static void fn_1_24(u16 arg0, s16 arg1); +static s16 fn_1_AC(s16 arg0); +static void fn_1_150(void); +static void fn_1_174(s16 arg0, HsfanimStruct00 *arg1, s32 arg2, s32 arg3, s32 arg4, Vec *arg5, u8 arg6); +static void fn_1_2D8(void); +static void fn_1_414(void); +static s16 fn_1_46C(s32 arg0); +static void fn_1_580(s32 *arg0, s32 arg1, s32 arg2); +static void fn_1_798(s32 arg0); +static void fn_1_9EC(void); +static void fn_1_A40(void); +static void fn_1_B4C(float arg0, s32 arg1); +static void fn_1_11F4(float arg0, Vec *arg1, Vec *arg2, Vec *arg3); +static void fn_1_1350(Vec *arg0, Vec *arg1, Vec *arg2); +static s32 fn_1_13DC(float arg0, Vec *arg1); +static void fn_1_1710(float arg0, Vec *arg1); +static void fn_1_1A60(Vec *arg0, s16 arg1, Vec *arg2); +static void fn_1_1D18(s16 arg0, char *arg1, Vec *arg2); +static void fn_1_1D70(s16 arg0, char *arg1, Vec *arg2, Mtx arg3); +static float fn_1_1E20(float arg0, float arg1, float arg2); +static void fn_1_1F24(s32 arg0); +static void fn_1_1F58(s32 arg0); +static void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3); +static void fn_1_2454(void); +static void fn_1_2744(s16 arg0, GXColor *arg1); +static u16 fn_1_27A8(UnkFn27A8Struct *arg0); +static void fn_1_2880(UnkFn27A8Struct *arg0, omObjData *arg1); +static void fn_1_2970(UnkFn27A8Struct *arg0, omObjData *arg1, u8 arg2); +static void fn_1_2B30(UnkFn27A8Struct *arg0, omObjData *arg1, omObjData *arg2); +static u8 fn_1_2DBC(UnkFn27A8Struct *arg0, omObjData *arg1); +static void fn_1_313C(UnkFn27A8Struct *arg0, omObjData *arg1); +static void fn_1_3204(omObjData *arg0); +static void fn_1_4190(float arg0); +static void fn_1_4284(float arg0); +static void fn_1_43D8(omObjData *arg0); +static void fn_1_63C8(omObjData *arg0); +static void fn_1_6858(omObjData *arg0); +static void fn_1_685C(omObjData *arg0); +static void fn_1_6AB4(omObjData *arg0); +static void fn_1_6E64(omObjData *arg0); +static void fn_1_7020(omObjData *arg0); +static void fn_1_70E4(omObjData *arg0); +static void fn_1_7950(omObjData *arg0); +static void fn_1_7AEC(s32 arg0, Vec *arg1, Vec *arg2); +static void fn_1_7D48(omObjData *arg0); +static void fn_1_7D4C(omObjData *arg0); +static void fn_1_7E80(omObjData *arg0); +static void fn_1_7E84(omObjData *arg0); +static void fn_1_8048(void); +static void fn_1_8218(omObjData *arg0); +static void fn_1_9058(omObjData *arg0); +static void fn_1_9AF4(omObjData *arg0); + +static UnkBss204Struct lbl_1_bss_204; +static UnkBss1ECStruct lbl_1_bss_1EC; +static Process *lbl_1_bss_1E8; +static Vec lbl_1_bss_1DC; +static Vec lbl_1_bss_1D0; +static Vec lbl_1_bss_1C4; +static Vec lbl_1_bss_1B8; +static u32 lbl_1_bss_1B4; +static s32 lbl_1_bss_1B0; +static s32 lbl_1_bss_1AC; +static s16 lbl_1_bss_1AA; +static s16 lbl_1_bss_1A8; +static s32 lbl_1_bss_1A4; +static s32 lbl_1_bss_1A0; +static float lbl_1_bss_19C; +static s32 lbl_1_bss_15C[16]; +static UnkBss5CStruct lbl_1_bss_5C[32]; +static omObjData *lbl_1_bss_58; +static omObjData **lbl_1_bss_54; +static omObjData **lbl_1_bss_50; +static omObjData **lbl_1_bss_4C; +static omObjData **lbl_1_bss_48; +static omObjData **lbl_1_bss_44; +static omObjData **lbl_1_bss_40; +static u8 lbl_1_bss_3C_unused[4]; +static float lbl_1_bss_38; +static float lbl_1_bss_34; +static float lbl_1_bss_30; +static float lbl_1_bss_2C; +static float lbl_1_bss_28; +static s16 lbl_1_bss_26; +static s16 lbl_1_bss_24; +static s16 lbl_1_bss_16[7]; +static s16 lbl_1_bss_14; +static s32 lbl_1_bss_10; +static float lbl_1_bss_C; +static float lbl_1_bss_8; +static float lbl_1_bss_4; +static u8 lbl_1_bss_0[4]; + +static s16 lbl_1_data_0[] = { + 0, 1, 2, 3, 4, 5, 6, 7 +}; + +static Vec lbl_1_data_10 = { 0.0f, 2500.0f, 2200.0f }; +static Vec lbl_1_data_1C = { 0.0f, 1.0f, 0.0f }; +static Vec lbl_1_data_28 = { 0.0f, 388.0f, 0.0f }; +static Vec lbl_1_data_34 = { 0.0f, 2000.0f, 1000.0f }; +static Vec lbl_1_data_40 = { 0.0f, -2.0f, -1.0f }; +static GXColor lbl_1_data_4C = { 0xFF, 0xFF, 0xFF, 0xFF }; + +static Vec lbl_1_data_50_unused = { 0.0f, -1.0f, 0.0f }; +static u8 lbl_1_data_5C_unused[] = { 0xFF, 0xFF, 0xFF, 0xFF }; + +static Vec lbl_1_data_60 = { 0.0f, 4000.0f, 1000.0f }; +static Vec lbl_1_data_6C = { 0.0f, 0.0f, 0.0f }; + +static s32 lbl_1_data_78[8][11] = { + { + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 2), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 28), + DATA_MAKE_NUM(DATADIR_M402, 16), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 62), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 3), + DATA_MAKE_NUM(DATADIR_M402, 8), + DATA_MAKE_NUM(DATADIR_M402, 0), + DATA_MAKE_NUM(DATADIR_M402, 24), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 117), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 76) + }, + { + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 2), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 28), + DATA_MAKE_NUM(DATADIR_M402, 17), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 62), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 3), + DATA_MAKE_NUM(DATADIR_M402, 9), + DATA_MAKE_NUM(DATADIR_M402, 1), + DATA_MAKE_NUM(DATADIR_M402, 25), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 117), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 76) + }, + { + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 2), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 28), + DATA_MAKE_NUM(DATADIR_M402, 18), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 62), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 3), + DATA_MAKE_NUM(DATADIR_M402, 10), + DATA_MAKE_NUM(DATADIR_M402, 2), + DATA_MAKE_NUM(DATADIR_M402, 26), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 117), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 76) + }, + { + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 2), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 28), + DATA_MAKE_NUM(DATADIR_M402, 19), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 62), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 3), + DATA_MAKE_NUM(DATADIR_M402, 11), + DATA_MAKE_NUM(DATADIR_M402, 3), + DATA_MAKE_NUM(DATADIR_M402, 27), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 117), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 76) + }, + { + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 2), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 28), + DATA_MAKE_NUM(DATADIR_M402, 20), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 62), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 3), + DATA_MAKE_NUM(DATADIR_M402, 12), + DATA_MAKE_NUM(DATADIR_M402, 4), + DATA_MAKE_NUM(DATADIR_M402, 28), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 117), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 76) + }, + { + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 2), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 28), + DATA_MAKE_NUM(DATADIR_M402, 21), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 62), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 3), + DATA_MAKE_NUM(DATADIR_M402, 13), + DATA_MAKE_NUM(DATADIR_M402, 5), + DATA_MAKE_NUM(DATADIR_M402, 29), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 117), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 76) + }, + { + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 2), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 28), + DATA_MAKE_NUM(DATADIR_M402, 22), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 62), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 3), + DATA_MAKE_NUM(DATADIR_M402, 14), + DATA_MAKE_NUM(DATADIR_M402, 6), + DATA_MAKE_NUM(DATADIR_M402, 30), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 117), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 76) + }, + { + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 2), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 28), + DATA_MAKE_NUM(DATADIR_M402, 23), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 62), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 3), + DATA_MAKE_NUM(DATADIR_M402, 15), + DATA_MAKE_NUM(DATADIR_M402, 7), + DATA_MAKE_NUM(DATADIR_M402, 31), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 117), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 76) + } +}; + +static s32 lbl_1_data_1D8[] = { + DATA_MAKE_NUM(DATADIR_M402, 38), + DATA_MAKE_NUM(DATADIR_M402, 40), + DATA_MAKE_NUM(DATADIR_M402, 37), + DATA_MAKE_NUM(DATADIR_M402, 39) +}; + +static s32 lbl_1_data_1E8[] = { + DATA_MAKE_NUM(DATADIR_M402, 41), + DATA_MAKE_NUM(DATADIR_M402, 42), + DATA_MAKE_NUM(DATADIR_M402, 43) +}; + +static s32 lbl_1_data_1F4 = DATA_MAKE_NUM(DATADIR_M402, 44); + +static s32 lbl_1_data_1F8[] = { + DATA_MAKE_NUM(DATADIR_M402, 45), + DATA_MAKE_NUM(DATADIR_M402, 46) +}; + +static Vec lbl_1_data_200[] = { + { 450.0f, 290.0f, 0.0f }, + { -450.0f, 290.0f, 0.0f } +}; + +static s32 lbl_1_data_218[] = { + DATA_MAKE_NUM(DATADIR_M402, 48), + DATA_MAKE_NUM(DATADIR_M402, 50), + DATA_MAKE_NUM(DATADIR_M402, 47), + DATA_MAKE_NUM(DATADIR_M402, 49), + DATA_MAKE_NUM(DATADIR_M402, 51), + DATA_MAKE_NUM(DATADIR_M402, 52), + DATA_MAKE_NUM(DATADIR_M402, 53) +}; + +static UnkData234Struct lbl_1_data_234[] = { + { 0.0f, 0.0f, 0.0f, 0.0f, -1 }, + { 2.0f, 2.0f, 0.1f, 0.125f, 0x514 }, + { 2.0f, 2.0f, 0.2f, 0.25f, -1 }, + { 3.0f, 4.0f, 0.3f, 0.35f, 0x515 }, + { 3.0f, 4.0f, 0.4f, 0.45f, -1 }, + { 3.0f, 6.0f, 0.45f, 0.5125f, 0x516 }, + { 3.0f, 6.0f, 0.5f, 0.575f, -1 }, + { 3.0f, 6.0f, 0.55f, 0.6375f, -1 }, + { 3.0f, 6.0f, 0.6f, 0.7f, -1 }, + { 4.0f, 8.0f, 0.65f, 0.75f, 0x517 }, + { 4.0f, 8.0f, 0.7f, 0.8f, -1 }, + { 4.0f, 8.0f, 0.75f, 0.85f, -1 }, + { 4.0f, 8.0f, 0.8f, 0.9f, -1 }, + { 4.0f, 10.0f, 0.83f, 0.9166f, 0x518 }, + { 4.0f, 10.0f, 0.86f, 0.9333f, -1 }, + { 4.0f, 10.0f, 0.9f, 0.95f, -1 }, + { 4.0f, 10.0f, 0.93f, 0.9666f, -1 }, + { 4.0f, 10.0f, 0.96f, 0.9833f, -1 }, + { 4.0f, 10.0f, 1.0f, 1.0f, -1 }, + { 1.0f, 10.0f, 1.0f, 1.0f, -1 } +}; + +static s32 lbl_1_data_3C4[] = { + 0x00000514, + 0x00000515, + 0x00000516, + 0x00000517, + 0x00000518 +}; + +static void fn_1_0(void) { + lbl_1_bss_204.unk04 = NULL; + lbl_1_bss_204.unk08 = NULL; +} + +static void fn_1_24(u16 arg0, s16 arg1) { + UnkBss204Struct *temp_r31; + UnkBss204Struct *temp_r30; + UnkBss204Struct *temp_r29; + + temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r31), MEMORY_DEFAULT_NUM); + temp_r31->unk00 = arg0; + temp_r31->unk02 = arg1; + temp_r30 = &lbl_1_bss_204; + temp_r29 = temp_r30->unk08; + temp_r30->unk08 = temp_r31; + if (NULL != temp_r29) { + temp_r29->unk04 = temp_r31; + } + temp_r31->unk04 = temp_r30; + temp_r31->unk08 = temp_r29; +} + +static s16 fn_1_AC(s16 arg0) { + UnkBss204Struct *var_r31; + UnkBss204Struct *temp_r29; + UnkBss204Struct *temp_r30; + s16 temp_r28; + + var_r31 = lbl_1_bss_204.unk08; + while (NULL != var_r31) { + if (arg0 == var_r31->unk00) { + temp_r28 = var_r31->unk02; + temp_r29 = var_r31->unk04; + temp_r30 = var_r31->unk08; + temp_r29->unk08 = temp_r30; + if (NULL != temp_r30) { + temp_r30->unk04 = temp_r29; + } + HuMemDirectFree(var_r31); + return temp_r28; + } + var_r31 = var_r31->unk08; + } + return -1; +} + +static void fn_1_150(void) { + lbl_1_bss_1EC.unk10 = NULL; + lbl_1_bss_1EC.unk14 = NULL; +} + +static void fn_1_174(s16 arg0, HsfanimStruct00 *arg1, s32 arg2, s32 arg3, s32 arg4, Vec *arg5, u8 arg6) { + UnkBss1ECStruct *temp_r27; + UnkBss1ECStruct *var_r31; + UnkBss1ECStruct *temp_r28; + s32 i; + + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*var_r31), MEMORY_DEFAULT_NUM); + var_r31->unk00 = arg1; + var_r31->unk08 = arg3; + var_r31->unk0C = arg4; + var_r31->unk04 = HuMemDirectMallocNum(HEAP_SYSTEM, arg4 * sizeof(*var_r31->unk04), MEMORY_DEFAULT_NUM); + for (i = 0; i < arg4; i++, arg5++) { + var_r31->unk04[i] = Hu3DParManLink(arg0, arg1); + if (var_r31->unk04[i] >= 0) { + Hu3DParManAttrReset(var_r31->unk04[i], 1); + Hu3DParManPosSet(var_r31->unk04[i], arg5->x, arg5->y, arg5->z); + Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(var_r31->unk04[i]), arg6); + Hu3DModelLayerSet(Hu3DParManModelIDGet(var_r31->unk04[i]), arg2); + } + } + temp_r28 = &lbl_1_bss_1EC; + temp_r27 = temp_r28->unk14; + temp_r28->unk14 = var_r31; + if (NULL != temp_r27) { + temp_r27->unk10 = var_r31; + } + var_r31->unk10 = temp_r28; + var_r31->unk14 = temp_r27; +} + +static void fn_1_2D8(void) { + UnkBss1ECStruct *var_r31; + UnkBss1ECStruct *temp_r28; + UnkBss1ECStruct *temp_r29; + s32 i; + + var_r31 = lbl_1_bss_1EC.unk14; + while (NULL != var_r31) { + var_r31->unk08--; + if (var_r31->unk08 == 0) { + for (i = 0; i < var_r31->unk0C; i++) { + if (var_r31->unk04[i] >= 0) { + Hu3DParManAttrSet(var_r31->unk04[i], 1); + } + } + } + temp_r28 = var_r31->unk10; + temp_r29 = var_r31->unk14; + if (-var_r31->unk00->unk00 > var_r31->unk08) { + for (i = 0; i < var_r31->unk0C; i++) { + if (var_r31->unk04[i] >= 0) { + Hu3DParManKill(var_r31->unk04[i]); + } + } + temp_r28->unk14 = temp_r29; + if (NULL != temp_r29) { + temp_r29->unk10 = temp_r28; + } + HuMemDirectFree(var_r31->unk04); + HuMemDirectFree(var_r31); + } + var_r31 = temp_r29; + } +} + +static void fn_1_414(void) { + s32 i; + + for (i = 0; i < 32; i++) { + lbl_1_bss_5C[i].unk00 = 0; + lbl_1_bss_5C[i].unk04 = -1; + } +} + +static s16 fn_1_46C(s32 arg0) { + s32 i; + + for (i = 0; i < 32; i++) { + if (arg0 == lbl_1_bss_5C[i].unk00) { + return Hu3DModelLink(lbl_1_bss_5C[i].unk04); + } + } + for (i = 0; i < 32; i++) { + if (lbl_1_bss_5C[i].unk00 == 0) { + lbl_1_bss_5C[i].unk00 = arg0; + lbl_1_bss_5C[i].unk04 = Hu3DModelCreateFile(arg0); + return lbl_1_bss_5C[i].unk04; + } + } + return Hu3DModelCreateFile(arg0); +} + +static void fn_1_580(s32 *arg0, s32 arg1, s32 arg2) { + s32 var_r30; + + espBankSet(arg0[arg1 + 1], 10); + espBankSet(arg0[arg1 + 4], 11); + if (36000 <= arg2) { + arg2 = 35999; + } + var_r30 = arg2 / 3600; + arg2 -= var_r30 * 3600; + if (var_r30 > 9) { + var_r30 = 9; + } + espBankSet(arg0[arg1], var_r30); + var_r30 = arg2 / 60; + arg2 -= var_r30 * 60; + espBankSet(arg0[arg1 + 2], var_r30 / 10); + espBankSet(arg0[arg1 + 3], var_r30 % 10); + var_r30 = 101.5f * arg2 / 60.0f; + espBankSet(arg0[arg1 + 5], var_r30 / 10); + espBankSet(arg0[arg1 + 6], var_r30 % 10); +} + +static void fn_1_798(s32 arg0) { + lbl_1_bss_19C = 0.0f; + lbl_1_bss_1AC = lbl_1_bss_1B0; + GWMGRecordSet(arg0, lbl_1_bss_1AC); + fn_1_580(lbl_1_bss_15C, 7, lbl_1_bss_1B0); +} + +static void fn_1_9EC(void) { + s32 i; + + for (i = 0; i < 16; i++) { + espDispOn(lbl_1_bss_15C[i]); + } +} + +static void fn_1_A40(void) { + float temp_f31; + s32 i; + + if (0.0f <= lbl_1_bss_19C) { + lbl_1_bss_19C += 16.0f; + temp_f31 = 1.0 + 0.2f * sind(lbl_1_bss_19C); + for (i = 7; i <= 14; i++) { + espScaleSet(lbl_1_bss_15C[i], temp_f31, temp_f31); + } + } +} + +static void fn_1_B4C(float arg0, s32 arg1) { + float temp_f30; + float temp_f31; + s32 i; + + temp_f31 = 288.0f; + temp_f30 = arg0; + lbl_1_bss_15C[15] = espEntry(arg1, 0, 0); + espTPLvlSet(lbl_1_bss_15C[15], 0.5f); + espColorSet(lbl_1_bss_15C[15], 0, 0, 0); + espPosSet(lbl_1_bss_15C[15], temp_f31, temp_f30); + temp_f31 = 248.0f; + temp_f30 = arg0 - 8.0f; + lbl_1_bss_15C[14] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 55), 0, 0); + espPosSet(lbl_1_bss_15C[14], temp_f31 - 18.0f, temp_f30); + for (i = 7; i <= 13; i++) { + lbl_1_bss_15C[i] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 48), 0, 0); + espPosSet(lbl_1_bss_15C[i], temp_f31, temp_f30); + temp_f31 += 16.0f; + } + fn_1_580(lbl_1_bss_15C, 7, lbl_1_bss_1AC); + temp_f31 = 248.0f; + temp_f30 = arg0 + 8.0f; + for (i = 0; i <= 6; i++) { + lbl_1_bss_15C[i] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 49), 0, 0); + espPosSet(lbl_1_bss_15C[i], temp_f31, temp_f30); + temp_f31 += 16.0f; + } + fn_1_580(lbl_1_bss_15C, 0, 0); + for (i = 0; i < 16; i++) { + espDrawNoSet(lbl_1_bss_15C[i], 0); + espDispOff(lbl_1_bss_15C[i]); + espAttrSet(lbl_1_bss_15C[i], HUSPR_ATTR_NOANIM); + espPriSet(lbl_1_bss_15C[i], 0x80 + i); + } +} + +static void fn_1_11F4(float arg0, Vec *arg1, Vec *arg2, Vec *arg3) { + float temp_f31; + + if (1.0f < arg0) { + arg0 = 1.0f; + } + temp_f31 = sind(90.0f * arg0) * sind(90.0f * arg0); + arg3->x = arg1->x + temp_f31 * (arg2->x - arg1->x); + arg3->y = arg1->y + temp_f31 * (arg2->y - arg1->y); + arg3->z = arg1->z + temp_f31 * (arg2->z - arg1->z); +} + +static void fn_1_1350(Vec *arg0, Vec *arg1, Vec *arg2) { + Hu3DCameraPosSetV(1, arg0, arg1, arg2); + lbl_1_bss_1DC = *arg0; + lbl_1_bss_1C4 = *arg2; +} + +static s32 fn_1_13DC(float arg0, Vec *arg1) { + Vec sp18; + Vec spC; + + fn_1_11F4(arg0, &lbl_1_bss_1DC, &lbl_1_bss_1D0, &sp18); + fn_1_11F4(arg0, &lbl_1_bss_1C4, &lbl_1_bss_1B8, &spC); + Hu3DCameraPosSetV(1, &sp18, arg1, &spC); + if (1.0f <= arg0) { + return 1; + } else { + lbl_1_bss_1A0 = 1; + return 0; + } +} + +static void fn_1_1710(float arg0, Vec *arg1) { + Vec sp18; + Vec spC; + + fn_1_11F4(arg0, &lbl_1_bss_1DC, &lbl_1_bss_1D0, &sp18); + fn_1_11F4(arg0, &lbl_1_bss_1C4, &lbl_1_bss_1B8, &spC); + fn_1_1350(&sp18, arg1, &spC); + lbl_1_bss_1A0 = 1; +} + +static void fn_1_1A60(Vec *arg0, s16 arg1, Vec *arg2) { + Mtx sp1C; + Vec sp10; + float temp_f30; + float temp_f29; + float temp_f28; + float temp_f31; + CameraData *temp_r31; + s32 i; + + for (i = 0; i < 16; i++) { + if (arg1 & (1 << i)) { + break; + } + } + temp_r31 = &Hu3DCamera[i]; + C_MTXLookAt(sp1C, &temp_r31->pos, &temp_r31->up, &temp_r31->target); + PSMTXMultVec(sp1C, arg0, &sp10); + temp_f30 = sp10.z * (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2)) * temp_r31->aspect; + temp_f29 = sp10.z * (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2)); + temp_f28 = 0.9f * temp_r31->viewport_x; + temp_f31 = 0.9f * temp_r31->viewport_w; + arg2->x = temp_f31 / 2 + sp10.x * ((temp_f31 / 2) / -temp_f30) + temp_f28; + arg2->y = temp_r31->viewport_h / 2 + sp10.y * ((temp_r31->viewport_h / 2) / temp_f29) + temp_r31->viewport_y; + arg2->z = 0.0f; +} + +static void fn_1_1D18(s16 arg0, char *arg1, Vec *arg2) { + Mtx sp10; + + Hu3DModelObjMtxGet(arg0, arg1, sp10); + arg2->x = sp10[0][3]; + arg2->y = sp10[1][3]; + arg2->z = sp10[2][3]; +} + +static void fn_1_1D70(s16 arg0, char *arg1, Vec *arg2, Mtx arg3) { + Mtx spC; + ModelData *var_r30; + + var_r30 = &Hu3DData[arg0]; + Hu3DModelObjMtxGet(arg0, arg1, spC); + PSMTXConcat(var_r30->unk_F0, spC, spC); + if (NULL != arg3) { + PSMTXCopy(spC, arg3); + } + arg2->x = spC[0][3]; + arg2->y = spC[1][3]; + arg2->z = spC[2][3]; +} + +static float fn_1_1E20(float arg0, float arg1, float arg2) { + float var_f31; + float var_f30; + + var_f31 = fmod(arg1 - arg0, 360.0); + if (0.0f > var_f31) { + var_f31 += 360.0f; + } + if (180.0f < var_f31) { + var_f31 -= 360.0f; + } + var_f30 = fmod(arg0 + var_f31 * arg2, 360.0); + if (0.0f > var_f30) { + var_f30 += 360.0f; + } + return var_f30; +} + +static void fn_1_1F24(s32 arg0) { + lbl_1_bss_1A4 = HuAudSeqPlay(arg0); +} + +static void fn_1_1F58(s32 arg0) { + if (lbl_1_bss_1A4 >= 0) { + if (arg0 < 0) { + arg0 = 1000; + } + HuAudSeqFadeOut(lbl_1_bss_1A4, arg0); + } + lbl_1_bss_1A4 = -1; +} + +static void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3) { + Vec sp18; + float var_f28; + s32 var_r30; + + sp18.x = 0.0f; + sp18.y = 0.0f; + sp18.z = 0.0f; + sp18.x = arg2 / 4.0f; + sp18.z = -(float) arg3 / 4.0f; + var_r30 = 0; + var_f28 = VECMagXZ(&sp18); + if (0.5f <= var_f28) { + if (10.0f <= var_f28) { + sp18.x /= var_f28; + sp18.z /= var_f28; + var_f28 = 10.0f; + sp18.x = 10.0f * sp18.x; + sp18.z = 10.0f * sp18.z; + } + *arg1 = fn_1_1E20(*arg1, atan2d(sp18.x, sp18.z), 0.4f); + if (8.0f <= var_f28) { + var_r30 = 2; + } else { + var_r30 = 1; + } + } + PSVECAdd((Vec*) &arg0, &sp18, (Vec*) &arg0); +} + +#include "src/REL/executor.c" + +static void fn_1_2454(void) { + HuSysVWaitSet(1); + if (HuPadBtnDown[0] & 0x400) { + lbl_1_bss_1B0 = -1; + } + print8(24, 32, 1.5f, "%f COUNT:%d MES:%d WIN:%d", lbl_1_bss_38, lbl_1_bss_1B4, lbl_1_bss_1AA, lbl_1_bss_26); + print8(24, 48, 1.5f, "%f %f %f", lbl_1_bss_4, lbl_1_bss_C, lbl_1_bss_8); + print8(24, 64, 1.5f, "%x %x", HuMemHeapSizeGet(HEAP_SYSTEM) - HuMemUsedMallocSizeGet(HEAP_SYSTEM), HuMemHeapSizeGet(HEAP_DATA) - HuMemUsedMallocSizeGet(HEAP_DATA)); + lbl_1_bss_8 -= HuPadSubStkX[0] / 59.0f; + lbl_1_bss_C -= (HuPadSubStkY[0] / 59.0f) * 4.0f; + lbl_1_bss_4 -= (HuPadTrigL[0] / 150.0f) * 4.0f; + lbl_1_bss_4 += (HuPadTrigR[0] / 150.0f) * 4.0f; +} + +static void fn_1_2744(s16 arg0, GXColor *arg1) { + s16 var_r30; + + var_r30 = Hu3DLLightCreateV(arg0, &lbl_1_data_34, &lbl_1_data_40, arg1); + Hu3DLLightStaticSet(arg0, var_r30, 1); +} + +static u16 fn_1_27A8(UnkFn27A8Struct *arg0) { + u16 var_r30; + + var_r30 = 0; + if (frandmod(arg0->unk34) == 0) { + var_r30 = 0x100; + } + if (--arg0->unk38 < 0) { + arg0->unk34 -= frandmod(3); + if (arg0->unk34 < 2) { + arg0->unk34 = 2; + } + arg0->unk38 = (arg0->unk3C >> 1) + frandmod(arg0->unk3C); + } + if (var_r30 == 0) { + if (++arg0->unk40 > 60) { + arg0->unk40 = 0; + var_r30 = 0x100; + } + } else { + arg0->unk40 = 0; + } + return var_r30; +} + +static void fn_1_2880(UnkFn27A8Struct *arg0, omObjData *arg1) { + arg0->unk4C = 2016; + arg0->unk60 = 0; + arg0->unk2C = 0.0f; + arg0->unk30 = 0.0f; + arg0->unk1C = 670.0f; + arg0->unk20 = 0.0f; + arg0->unk24 = arg0->unk1C; + arg0->unk08 = 0.0f; + arg0->unk0C = 0.0f; + arg0->unk10 = arg0->unk0C; + Hu3DModelAttrReset(arg1->model[0], 0x40000002); + Hu3DModelAttrSet(arg1->model[0], 0x40000001); + Hu3DMotionSet(arg1->model[0], arg1->motion[0]); +} + +static void fn_1_2970(UnkFn27A8Struct *arg0, omObjData *arg1, u8 arg2) { + Vec sp18; + Vec spC; + float temp_f31; + s32 i; + + fn_1_1D18(arg1->model[0], "motionC-stretch", &sp18); + for (i = 0; i < 8; i++) { + temp_f31 = arg0->unk1C + 50.0f; + spC.x = 20.0f * frandf() - 10.0f; + spC.y = arg0->unk18; + spC.z = 20.0f; + if (arg2 != 0) { + spC.y += 180.0f; + spC.z = 10.0f; + } + temp_f31 = 3.0f * (30.0f * frandf() - 15.0f); + spC.y += temp_f31 + 10.0f * (0.0f > temp_f31 ? -1 : 1); + fn_1_7AEC(arg0->unk54, &sp18, &spC); + } +} + +static void fn_1_2B30(UnkFn27A8Struct *arg0, omObjData *arg1, omObjData *arg2) { + arg0->unk50 = 0; + arg0->unk20 = (770.0f - arg0->unk1C) / 18.0f; + arg0->unk0C = Hu3DMotionTimeGet(arg2->model[0]); + Hu3DMotionTimeSet(lbl_1_bss_54[arg0->unk54]->model[0], 0.0f); + Hu3DMotionSpeedSet(arg1->model[0], 1.0f); + Hu3DModelAttrReset(arg1->model[0], 0x40000003); + Hu3DMotionShiftSet(arg1->model[0], arg1->motion[7], 0.0f, 8.0f, 0); + fn_1_2970(arg0, arg2, 1); + HuAudCharVoicePlay(arg0->unk58, 0x123); +} + +static u8 fn_1_2DBC(UnkFn27A8Struct *arg0, omObjData *arg1) { + Vec sp20; + float var_f30; + float var_f29; + + arg0->unk50++; + var_f30 = 90.0f * (arg0->unk50 / 18.0f); + var_f29 = arg0->unk0C * (1.0 - sind(var_f30)); + Hu3DMotionTimeSet(arg1->model[0], var_f29); + fn_1_1D18(arg1->model[0], "motionC-stretch", &sp20); + arg0->unk28 = sp20.y - arg0->unk14 + 388.0f; + arg0->unk1C += arg0->unk20; + if (18.0f < arg0->unk50) { + arg0->unk20 = (670.0f - arg0->unk1C) / 20.0f; + Hu3DModelAttrReset(arg1->model[0], 0x40000003); + Hu3DMotionSet(arg1->model[0], arg1->motion[2]); + Hu3DMotionTimeSet(arg1->model[0], 20.0f); + omVibrate(arg0->unk54, 12, 4, 2); + HuAudFXPlay(0x50F); + fn_1_2970(arg0, arg1, 0); + return 1; + } + return 0; +} + +static void fn_1_313C(UnkFn27A8Struct *arg0, omObjData *arg1) { + Vec sp8; + + arg0->unk1C += arg0->unk20; + if (670.0f > arg0->unk1C) { + arg0->unk1C = 670.0f; + } + fn_1_1D18(arg1->model[0], "motionC-stretch", &sp8); + arg0->unk28 = sp8.y - arg0->unk14 + 388.0f; +} + +static void fn_1_3204(omObjData *arg0) { + Vec sp48; + Vec sp3C; + Vec sp24; + Vec spC; + float temp_f31; + UnkFn27A8Struct *temp_r31; + omObjData *temp_r29; + UnkData234Struct *temp_r28; + u16 var_r26; + + temp_r31 = arg0->data; + if (lbl_1_bss_58->work[0] == 1007) { + switch (temp_r31->unk4C) { + case 2017: + temp_r31->unk4C = 2014; + break; + case 2018: + temp_r31->unk4C = 2015; + break; + default: + temp_r31->unk4C = 2010; + break; + } + Hu3DMotionSpeedSet(arg0->model[0], 1.0f); + if (lbl_1_bss_26 == temp_r31->unk54) { + GWPlayerCoinWinSet(temp_r31->unk54, 10); + } + arg0->func = fn_1_43D8; + return; + } + if (lbl_1_bss_58->work[0] == 1006) { + temp_r29 = lbl_1_bss_48[temp_r31->unk54]; + if (temp_r31->unk60 < 19) { + if (GWPlayerCfg[temp_r31->unk54].iscom) { + var_r26 = fn_1_27A8(temp_r31); + } else { + var_r26 = HuPadBtnDown[temp_r31->unk5C]; + } + if (temp_r31->unk60 == 0) { + if (var_r26 & 0x100) { + temp_r31->unk60 = 1; + temp_r31->unk2C = 0.0f; + temp_r31->unk30 = 0.0f; + temp_r31->unk08 = 0.0f; + temp_r31->unk0C = 0.0f; + temp_r31->unk10 = temp_r31->unk0C; + temp_r31->unk20 = 0.0f; + temp_r31->unk24 = temp_r31->unk1C; + HuAudFXPlay(0x50E); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[5], 0.0f, 2.0f, 0x40000001); + } + } else { + temp_r31->unk30 += 1.0f; + } + switch (temp_r31->unk4C) { + case 2016: + if (var_r26 & 0x100) { + temp_r28 = &lbl_1_data_234[temp_r31->unk60]; + if (temp_r28->unk10 >= 0 && 0.0f == temp_r31->unk2C) { + HuAudFXPlay(temp_r28->unk10); + } + temp_r31->unk2C += 1.0f; + Hu3DMotionTimeSet(lbl_1_bss_54[temp_r31->unk54]->model[0], temp_r28->unk04); + temp_f31 = temp_r28->unk08 - temp_r28[-1].unk08; + temp_f31 *= 1.0f - temp_r31->unk2C / temp_r28->unk00; + temp_r31->unk24 = 670.0f - 450.0f * (temp_r28->unk08 - temp_f31); + temp_f31 = temp_r28->unk0C - temp_r28[-1].unk0C; + temp_f31 *= 1.0f - temp_r31->unk2C / temp_r28->unk00; + temp_r31->unk10 = (temp_r28->unk0C - temp_f31) * Hu3DMotionMaxTimeGet(temp_r29->model[0]); + temp_f31 = temp_r31->unk60 / 20.0f; + temp_r31->unk20 = temp_f31 * (temp_r31->unk24 - temp_r31->unk1C); + temp_r31->unk08 = temp_f31 * (temp_r31->unk10 - temp_r31->unk0C); + if (temp_r28->unk00 <= temp_r31->unk2C) { + temp_r31->unk60++; + if (temp_r31->unk60 == 3) { + Hu3DMotionSpeedSet(arg0->model[0], 0.83f); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[6], 0.0f, 4.0f, 0x40000001); + } + if (temp_r31->unk60 == 9) { + Hu3DMotionSpeedSet(arg0->model[0], 1.0f); + } + temp_r31->unk2C = 0.0f; + temp_r31->unk30 = 0.0f; + if (temp_r31->unk60 >= 19) { + temp_r31->unk1C = temp_r31->unk24; + temp_r31->unk20 = 0.0f; + temp_r31->unk0C = temp_r31->unk10; + temp_r31->unk08 = 0.0f; + if (lbl_1_bss_26 < 0) { + lbl_1_bss_26 = temp_r31->unk54; + } else if (frandmod(100) > 50) { + lbl_1_bss_26 = temp_r31->unk54; + } + } + } + } + if (60.0f <= temp_r31->unk30) { + temp_r31->unk4C = 2017; + fn_1_2B30(temp_r31, arg0, temp_r29); + } else { + if (temp_r31->unk1C > temp_r31->unk24) { + temp_r31->unk1C += temp_r31->unk20; + if (temp_r31->unk1C <= temp_r31->unk24) { + temp_r31->unk1C = temp_r31->unk24; + } + } + if (temp_r31->unk0C < temp_r31->unk10) { + temp_r31->unk0C += temp_r31->unk08; + if (temp_r31->unk0C >= temp_r31->unk10) { + temp_r31->unk0C = temp_r31->unk10; + } + } + Hu3DMotionTimeSet(temp_r29->model[0], temp_r31->unk0C); + } + break; + case 2017: + if (fn_1_2DBC(temp_r31, temp_r29) != 0) { + temp_r31->unk4C = 2018; + temp_r31->unk50 = 120; + } + break; + case 2018: + fn_1_313C(temp_r31, temp_r29); + temp_r31->unk50 -= 1.0f; + if (temp_r31->unk50 == 32) { + Hu3DMotionSet(arg0->model[0], arg0->motion[9]); + Hu3DMotionShiftSet(temp_r29->model[0], temp_r29->motion[1], 0.0f, 20.0f, 0x40000002); + } + if (0.0f > temp_r31->unk50) { + fn_1_2880(temp_r31, arg0); + } + break; + default: + OSReport("*** player mode error(%d)!!\n", temp_r31->unk4C); + break; + } + if (lbl_1_bss_28 < temp_r31->unk1C) { + lbl_1_bss_28 = temp_r31->unk1C; + } + omSetTra(arg0, temp_r31->unk1C * sind(180.0f + temp_r31->unk18), temp_r31->unk28, temp_r31->unk1C * cosd(180.0f + temp_r31->unk18)); + } + } +} + +static void fn_1_4190(float arg0) { + Vec sp8; + s32 i; + + for (i = 0; i < 4; i++) { + sp8.x = 155.5 * sind(arg0); + sp8.y = 588.0f; + sp8.z = 155.5 * cosd(arg0); + fn_1_7AEC(5, &sp8, NULL); + arg0 += 90.0f; + } +} + +static void fn_1_4284(float arg0) { + Vec sp8; + s32 i; + + for (i = 0; i < 4; i++) { + sp8.x = 155.5 * sind(arg0); + sp8.y = 388.0f; + sp8.z = 155.5 * cosd(arg0); + sp8.x += 40.0f * frandf() - 20.0f; + sp8.z += 40.0f * frandf() - 20.0f; + fn_1_7AEC(4, &sp8, NULL); + arg0 += 90.0f; + } +} + +static void fn_1_43D8(omObjData *arg0) { + Vec spE8; + float temp_f31; + float temp_f23; + UnkFn27A8Struct *temp_r31; + omObjData *temp_r30; + s32 temp_r28; + + temp_r31 = arg0->data; + temp_r30 = lbl_1_bss_48[temp_r31->unk54]; + switch (temp_r31->unk4C) { + case 2000: + if (lbl_1_bss_58->work[0] == 1001) { + temp_r31->unk4C++; + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[1], 0.0f, 10.0f, 0); + } + break; + case 2001: + temp_r31->unk1C -= 1.0f; + if (Hu3DMotionEndCheck(arg0->model[0])) { + temp_r31->unk4C++; + temp_r31->unk08 = 0.0f; + temp_r31->unk04 = 2000.0f; + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[2], 0.0f, 10.0f, 0); + Hu3DMotionSet(temp_r30->model[0], temp_r30->motion[0]); + Hu3DModelAttrSet(temp_r30->model[0], 0x40000002); + Hu3DModelAttrReset(temp_r30->model[0], 0x40000001); + Hu3DModelAttrReset(temp_r30->model[0], 1); + } + break; + case 2002: + temp_r31->unk08 += 0.4f; + temp_r31->unk04 -= temp_r31->unk08; + if (temp_r31->unk48 != 0 && Hu3DMotionEndCheck(arg0->model[0])) { + temp_r31->unk48 = 0; + HuAudCharVoicePlay(temp_r31->unk58, 0x128); + } + if (786.0f > temp_r31->unk04) { + temp_r31->unk4C++; + if (temp_r31->unk54 == 0) { + HuAudFXPlay(0x50D); + } + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[3], 0.0f, 10.0f, 0); + } + break; + case 2003: + temp_r31->unk08 += 0.4f; + temp_r31->unk04 -= temp_r31->unk08; + if (536.0f > temp_r31->unk04) { + temp_r31->unk4C++; + temp_r31->unk50 = 0; + temp_r31->unk04 = 536.0f; + Hu3DModelAttrReset(temp_r30->model[0], 0x40000002); + spE8.x = temp_r31->unk00 * sind(180.0f + temp_r31->unk18); + spE8.y = temp_r31->unk04; + spE8.z = temp_r31->unk00 * cosd(180.0f + temp_r31->unk18); + fn_1_7AEC(6, &spE8, NULL); + omVibrate(temp_r31->unk54, 12, 0xC, 0); + } + break; + case 2004: + temp_r31->unk50++; + if (70.0f < temp_r31->unk50) { + temp_r31->unk4C++; + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[4], 0.0f, 10.0f, 0); + } + break; + case 2005: + temp_r31->unk50++; + if (130.0f == temp_r31->unk50) { + if (lbl_1_bss_10 != 0) { + lbl_1_bss_10 = 0; + HuAudFXPlay(0x510); + } + fn_1_2970(temp_r31, temp_r30, 0); + } + if (!Hu3DMotionEndCheck(arg0->model[0])) { + temp_r31->unk1C -= 2.3f; + } + if (Hu3DMotionEndCheck(temp_r30->model[0])) { + temp_r31->unk4C++; + temp_r31->unk50 = 0; + temp_r31->unk0C = 0.0f; + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[5], 0.0f, 10.0f, 0x40000001); + Hu3DMotionShiftSet(temp_r30->model[0], temp_r30->motion[1], 0.0f, 10.0f, 0x40000002); + } + break; + case 2006: + if (temp_r31->unk50++ > 10) { + temp_r31->unk4C++; + } + fn_1_1D18(temp_r30->model[0], "motionC-stretch", &spE8); + temp_r31->unk14 = spE8.y; + break; + case 2007: + temp_r31->unk1C -= 5.0f; + if (670.0f > temp_r31->unk1C) { + temp_f31 = (670.0f - temp_r31->unk1C) / 450.0f; + Hu3DMotionTimeSet(lbl_1_bss_54[temp_r31->unk54]->model[0], 10.0f * temp_f31); + temp_r28 = (s32) (10.0f * temp_f31) >> 1; + if (temp_r28 < 5 && temp_r31->unk44 != lbl_1_data_3C4[temp_r28]) { + temp_r31->unk44 = lbl_1_data_3C4[temp_r28]; + HuAudFXPlay(temp_r31->unk44); + } + } + if (470.0f > temp_r31->unk1C) { + temp_r31->unk4C++; + temp_r31->unk1C = 470.0f; + fn_1_2B30(temp_r31, arg0, temp_r30); + } else { + temp_r31->unk0C += 0.7f; + Hu3DMotionTimeSet(temp_r30->model[0], temp_r31->unk0C); + } + break; + case 2008: + if (fn_1_2DBC(temp_r31, temp_r30) != 0) { + temp_r31->unk4C++; + temp_r31->unk50 = 120; + } + break; + case 2009: + fn_1_313C(temp_r31, temp_r30); + temp_r31->unk50 -= 1.0f; + if (temp_r31->unk50 == 32) { + Hu3DMotionSet(arg0->model[0], arg0->motion[9]); + Hu3DMotionShiftSet(temp_r30->model[0], temp_r30->motion[1], 0.0f, 20.0f, 0x40000002); + } + if (0.0f > temp_r31->unk50) { + lbl_1_bss_58->work[0]++; + fn_1_2880(temp_r31, arg0); + arg0->func = fn_1_3204; + } + break; + + case 2010: + if (temp_r31->unk54 == lbl_1_bss_26) { + temp_r31->unk4C = 2012; + temp_r31->unk20 = 10.5f; + Hu3DModelAttrReset(arg0->model[0], 0x40000003); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[8], 0.0f, 20.0f, 0); + Hu3DModelAttrReset(temp_r30->model[0], 0x40000003); + Hu3DMotionShiftSet(temp_r30->model[0], temp_r30->motion[2], 20.0f, 20.0f, 0); + HuAudFXPlay(0x513); + fn_1_4190(temp_r31->unk18); + } else { + temp_r31->unk4C = 2014; + fn_1_2B30(temp_r31, arg0, temp_r30); + } + break; + + case 2011: + break; + + case 2012: + temp_r31->unk1C -= temp_r31->unk20; + if (0.0f > temp_r31->unk1C) { + temp_r31->unk1C = 0.0f; + } + temp_r31->unk20 -= 0.25f; + if (0.0f > temp_r31->unk20) { + temp_r31->unk4C++; + temp_r31->unk50 = 0; + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[9], 0.0f, 20.0f, 0); + } + if (4.5f <= temp_r31->unk20) { + fn_1_4284(temp_r31->unk18); + } + break; + case 2013: + temp_r31->unk50++; + temp_f23 = 90.0f * (temp_r31->unk50 / 20.0f); + temp_f31 = sind(temp_f23) * sind(temp_f23); + if (180.0f > temp_r31->unk18) { + temp_r31->unk24 = temp_r31->unk18 + -temp_r31->unk18 * temp_f31; + } else { + temp_r31->unk24 = temp_r31->unk18 + (360.0f - temp_r31->unk18) * temp_f31; + } + omSetRot(arg0, 0.0f, temp_r31->unk24, 0.0f); + if (20.0f <= temp_r31->unk50) { + temp_r31->unk4C = 2011; + } + break; + case 2014: + if (fn_1_2DBC(temp_r31, temp_r30) != 0) { + temp_r31->unk4C++; + temp_r31->unk50 = 120; + } + break; + case 2015: + fn_1_313C(temp_r31, temp_r30); + temp_r31->unk50 -= 1.0f; + if (temp_r31->unk50 == 32) { + Hu3DMotionSet(arg0->model[0], arg0->motion[9]); + Hu3DMotionShiftSet(temp_r30->model[0], temp_r30->motion[1], 0.0f, 20.0f, 0x40000002); + } + if (0.0f > temp_r31->unk50) { + temp_r31->unk4C = 2011; + } + break; + default: + OSReport("*** player mode error(%d)!!\n", temp_r31->unk4C); + break; + } + omSetTra(arg0, temp_r31->unk1C * sind(180.0f + temp_r31->unk18), temp_r31->unk28, temp_r31->unk1C * cosd(180.0f + temp_r31->unk18)); + omSetTra(temp_r30, temp_r31->unk00 * sind(180.0f + temp_r31->unk18), temp_r31->unk04, temp_r31->unk00 * cosd(180.0f + temp_r31->unk18)); + if (lbl_1_bss_58->work[0] < 1008 && temp_r31->unk54 == lbl_1_bss_26) { + lbl_1_bss_1B8.x = temp_r31->unk1C * sind(180.0f + temp_r31->unk18); + lbl_1_bss_1B8.y = 508.0f; + lbl_1_bss_1B8.z = temp_r31->unk1C * cosd(180.0f + temp_r31->unk18); + lbl_1_bss_1D0.x = lbl_1_bss_1B8.x; + lbl_1_bss_1D0.y = lbl_1_bss_1B8.y + 270.0f; + lbl_1_bss_1D0.z = lbl_1_bss_1B8.z + 850.0f; + } +} + +static void fn_1_63C8(omObjData *arg0) { + UnkFn27A8Struct *temp_r31; + s16 temp_r28; + s16 var_r27; + s32 i; + + temp_r31 = arg0->data; + temp_r31->unk54 = arg0->work[0]; + temp_r31->unk58 = GWPlayerCfg[temp_r31->unk54].character; + temp_r31->unk5C = GWPlayerCfg[temp_r31->unk54].pad_idx; + temp_r31->unk4C = 2000; + temp_r31->unk60 = 0; + temp_r31->unk28 = 388.0f; + temp_r31->unk2C = 0.0f; + temp_r31->unk30 = 0.0f; + temp_r31->unk0C = 0.0f; + temp_r31->unk00 = 895.0f; + temp_r31->unk04 = 536.0f; + temp_r31->unk44 = -1; + temp_r31->unk48 = 1; + temp_r31->unk34 = 10; + temp_r31->unk38 = 10; + temp_r31->unk3C = 10; + temp_r31->unk40 = 60; + arg0->model[0] = CharModelCreate(lbl_1_data_0[temp_r31->unk58], 4); + CharModelStepTypeSet(lbl_1_data_0[temp_r31->unk58], 0); + for (i = 0; i < 11; i++) { + arg0->motion[i] = CharModelMotionCreate(lbl_1_data_0[temp_r31->unk58], lbl_1_data_78[temp_r31->unk58][i]); + CharModelMotionSet(lbl_1_data_0[temp_r31->unk58], arg0->motion[i]); + } + temp_r28 = arg0->model[0]; + var_r27 = Hu3DLLightCreateV(temp_r28, &lbl_1_data_34, &lbl_1_data_40, &lbl_1_data_4C); + Hu3DLLightStaticSet(temp_r28, var_r27, 1); + Hu3DModelAttrSet(arg0->model[0], 1); + Hu3DModelAttrSet(arg0->model[0], 0x40000001); + Hu3DModelLayerSet(arg0->model[0], 3); + Hu3DMotionSet(arg0->model[0], arg0->motion[0]); + temp_r31->unk18 = 135.0f + 90.0f * temp_r31->unk54; + temp_r31->unk1C = 895.0f; + omSetTra(arg0, temp_r31->unk1C * sind(180.0f + temp_r31->unk18), temp_r31->unk28, temp_r31->unk1C * cosd(180.0f + temp_r31->unk18)); + omSetRot(arg0, 0.0f, temp_r31->unk18, 0.0f); + Hu3DModelShadowSet(arg0->model[0]); + Hu3DModelAttrReset(arg0->model[0], 1); + if (GWPlayerCfg[temp_r31->unk54].iscom) { + switch (GWPlayerCfg[temp_r31->unk54].diff) { + case 0: + temp_r31->unk34 = 26; + temp_r31->unk3C = 90; + break; + case 1: + temp_r31->unk34 = 24; + temp_r31->unk3C = 80; + break; + case 2: + temp_r31->unk34 = 22; + temp_r31->unk3C = 70; + break; + case 3: + default: + temp_r31->unk34 = 18; + temp_r31->unk3C = 40; + break; + } + temp_r31->unk38 = (temp_r31->unk3C >> 1) + frandmod(temp_r31->unk3C); + } + CharModelMotionDataClose(lbl_1_data_0[temp_r31->unk58]); + arg0->func = fn_1_43D8; +} + +static void fn_1_6858(omObjData *arg0) { +} + +static void fn_1_685C(omObjData *arg0) { + float temp_f31; + float temp_f29; + float temp_f30; + s32 temp_r29; + s32 i; + + temp_r29 = arg0->work[0]; + arg0->model[0] = Hu3DModelCreateFile(lbl_1_data_1D8[temp_r29]); + for (i = 0; i < 3; i++) { + arg0->motion[i] = Hu3DJointMotionFile(arg0->model[0], lbl_1_data_1E8[i]); + } + Hu3DModelAttrSet(arg0->model[0], 1); + Hu3DModelAttrSet(arg0->model[0], 0x40000002); + Hu3DModelLayerSet(arg0->model[0], 4); + Hu3DMotionSet(arg0->model[0], arg0->motion[0]); + temp_f31 = ((UnkFn27A8Struct*) lbl_1_bss_4C[temp_r29]->data)->unk18; + temp_f29 = ((UnkFn27A8Struct*) lbl_1_bss_4C[temp_r29]->data)->unk04; + temp_f30 = ((UnkFn27A8Struct*) lbl_1_bss_4C[temp_r29]->data)->unk00; + omSetTra(arg0, temp_f30 * sind(180.0f + temp_f31), temp_f29, temp_f30 * cosd(180.0f + temp_f31)); + omSetRot(arg0, 0.0f, temp_f31, 0.0f); + Hu3DModelShadowSet(arg0->model[0]); + arg0->func = fn_1_6858; +} + +static void fn_1_6AB4(omObjData *arg0) { + Vec *temp_r29; + UnkFn6AB4Struct *temp_r31; + float temp_f31; + + temp_r29 = &lbl_1_data_200[arg0->work[0]]; + temp_r31 = arg0->data; + switch (temp_r31->unk18) { + case 3000: + temp_r31->unk14 -= 1.0f; + if (0.0f > temp_r31->unk14 && frandmod(20) == 0) { + temp_r31->unk18 = 3001; + temp_r31->unk0C = 360.0f * frandf(); + temp_r31->unk10 = 10.0f; + HuAudFXPlay(0x512); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[0], 0.0f, 20.0f, 0); + } + break; + case 3001: + temp_r31->unk00 += sind(temp_r31->unk0C); + temp_r31->unk08 += cosd(temp_r31->unk0C); + temp_f31 = temp_r31->unk00 - temp_r29->x; + if (50.0f < ABS(temp_f31)) { + temp_r31->unk00 = temp_r29->x + 50.0f * (0.0f > temp_f31 ? -1 : 1); + } + temp_f31 = temp_r31->unk08 - temp_r29->z; + if (50.0f < ABS(temp_f31)) { + temp_r31->unk08 = temp_r29->z + 50.0f * (0.0f > temp_f31 ? -1 : 1); + } + temp_r31->unk04 += temp_r31->unk10; + temp_r31->unk10 -= 0.5f; + if (temp_r29->y > temp_r31->unk04) { + temp_r31->unk18 = 3000; + temp_r31->unk14 = 20.0f; + temp_r31->unk04 = temp_r29->y; + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[1], 0.0f, 20.0f, 0); + } + break; + } + omSetTra(arg0, temp_r31->unk00, temp_r31->unk04, temp_r31->unk08); + omSetRot(arg0, 0.0f, temp_r31->unk0C, 0.0f); +} + +static void fn_1_6E64(omObjData *arg0) { + Vec *temp_r29; + UnkFn6AB4Struct *temp_r30; + s32 i; + + temp_r29 = &lbl_1_data_200[arg0->work[0]]; + temp_r30 = arg0->data; + arg0->model[0] = Hu3DModelCreateFile(lbl_1_data_1F4); + for (i = 0; i < 2; i++) { + arg0->motion[i] = Hu3DJointMotionFile(arg0->model[0], lbl_1_data_1F8[i]); + } + Hu3DModelAttrSet(arg0->model[0], 1); + Hu3DModelLayerSet(arg0->model[0], 5); + Hu3DMotionSet(arg0->model[0], arg0->motion[1]); + temp_r30->unk18 = 3000; + temp_r30->unk14 = 0.0f; + temp_r30->unk00 = temp_r29->x; + temp_r30->unk04 = temp_r29->y; + temp_r30->unk08 = temp_r29->z; + temp_r30->unk0C = 360.0f * frandf(); + omSetTra(arg0, temp_r30->unk00, temp_r30->unk04, temp_r30->unk08); + omSetRot(arg0, 0.0f, temp_r30->unk0C, 0.0f); + Hu3DModelShadowSet(arg0->model[0]); + Hu3DModelAttrReset(arg0->model[0], 0x40000002); + Hu3DModelAttrReset(arg0->model[0], 1); + arg0->func = fn_1_6AB4; +} + +static void fn_1_7020(omObjData *arg0) { + Hu3DModelAttrSet(arg0->model[0], 1); + fn_1_24(arg0->work[0], arg0->model[0]); + omDelObjEx(lbl_1_bss_1E8, arg0); + lbl_1_bss_24--; +} + +static void fn_1_70E4(omObjData *arg0) { + Mtx sp18; + Vec spC; + float var_f27; + float temp_f26; + float temp_f30; + float temp_f31; + UnkFn70E4Struct *temp_r31; + + temp_r31 = arg0->data; + switch (arg0->work[0]) { + case 0: + case 1: + case 2: + case 3: + var_f27 = temp_r31->unk24.z; + spC.x = 0.0f; + spC.y = 0.0f; + spC.z = var_f27; + temp_r31->unk24.z *= 0.92f; + PSMTXIdentity(sp18); + mtxRot(sp18, temp_r31->unk24.x, temp_r31->unk24.y, 0.0f); + PSMTXMultVec(sp18, &spC, &spC); + PSVECAdd(&spC, &temp_r31->unk00, &temp_r31->unk00); + omSetTra(arg0, temp_r31->unk00.x, temp_r31->unk00.y, temp_r31->unk00.z); + Hu3DModelTPLvlSet(arg0->model[0], temp_r31->unk30); + temp_r31->unk30 -= 0.02f; + if (0.1f > temp_r31->unk30) { + fn_1_7020(arg0); + } + break; + case 4: + temp_r31->unk00.y += temp_r31->unk30; + if (390.0f >= temp_r31->unk00.y) { + temp_r31->unk00.y = 390.0f; + } + omSetTra(arg0, temp_r31->unk00.x, temp_r31->unk00.y, temp_r31->unk00.z); + if (390.0f >= temp_r31->unk00.y) { + break; + } + temp_r31->unk0C += 8.0f + frandmod(8); + temp_r31->unk10 += 8.0f + frandmod(8); + temp_r31->unk14 += 8.0f + frandmod(8); + omSetRot(arg0, temp_r31->unk0C, temp_r31->unk10, temp_r31->unk14); + if (0.0f < temp_r31->unk30) { + temp_r31->unk30 -= 0.3f; + break; + } + if (0.0f == temp_r31->unk34) { + temp_r31->unk34 = 0.003f + 0.006f * frandf(); + } + temp_r31->unk30 -= temp_r31->unk34; + temp_r31->unk00.x += temp_r31->unk24.x; + temp_r31->unk00.z += temp_r31->unk24.z; + if (!(lbl_1_bss_1B4 & 3)) { + temp_r31->unk24.x = 6.0f * frandf() - 3.0f; + temp_r31->unk24.z = 6.0f * frandf() - 3.0f; + } + break; + case 5: + if (Hu3DMotionEndCheck(arg0->model[0])) { + fn_1_7020(arg0); + } + break; + case 6: + spC = lbl_1_data_10; + temp_f26 = Hu3DMotionMaxTimeGet(arg0->model[0]); + temp_f31 = 1.0f - Hu3DMotionTimeGet(arg0->model[0]) / temp_f26; + spC.x += 100.0f * temp_f31 * frandf() * (frandmod(100) > 50 ? 1.0f : -1.0f); + spC.z += 100.0f * temp_f31 * frandf() * (frandmod(100) > 50 ? 1.0f : -1.0f); + Hu3DCameraPosSetV(1, &spC, &lbl_1_data_1C, &lbl_1_data_28); + lbl_1_bss_1DC = spC; + lbl_1_bss_1C4 = lbl_1_data_28; + temp_f30 = 0.5f * Hu3DMotionMaxTimeGet(arg0->model[0]); + if (temp_f30 < Hu3DMotionTimeGet(arg0->model[0])) { + temp_f31 = 1.0f - (Hu3DMotionTimeGet(arg0->model[0]) - temp_f30) / temp_f30; + Hu3DModelTPLvlSet(arg0->model[0], temp_f31); + temp_f31 = 1.0f - temp_f31; + omSetSca(arg0, temp_r31->unk18 + temp_f31, temp_r31->unk1C + temp_f31, temp_r31->unk20 + temp_f31); + } + if (Hu3DMotionEndCheck(arg0->model[0])) { + Hu3DCameraPosSetV(1, &lbl_1_data_10, &lbl_1_data_1C, &lbl_1_data_28); + lbl_1_bss_1DC = lbl_1_data_10; + lbl_1_bss_1C4 = lbl_1_data_28; + fn_1_7020(arg0); + } + break; + default: + OSReport("effect id error!!(%d)\n", arg0->work[0]); + break; + } +} + +static void fn_1_7950(omObjData *arg0) { + UnkFn70E4Struct *temp_r30; + s16 var_r25; + + temp_r30 = arg0->data; + temp_r30->unk38--; + if (temp_r30->unk38 <= 0) { + var_r25 = fn_1_AC(arg0->work[0]); + if (var_r25 < 0) { + arg0->model[0] = Hu3DModelLink(lbl_1_bss_16[arg0->work[0]]); + } else { + arg0->model[0] = var_r25; + } + Hu3DMotionTimeSet(arg0->model[0], 0.0f); + Hu3DModelAttrSet(arg0->model[0], 1); + Hu3DModelLayerSet(arg0->model[0], 2); + omSetTra(arg0, temp_r30->unk00.x, temp_r30->unk00.y, temp_r30->unk00.z); + omSetRot(arg0, temp_r30->unk0C, temp_r30->unk10, temp_r30->unk14); + omSetSca(arg0, temp_r30->unk18, temp_r30->unk1C, temp_r30->unk20); + Hu3DModelAttrReset(arg0->model[0], 0x40000003); + Hu3DModelAttrReset(arg0->model[0], 1); + arg0->func = fn_1_70E4; + } +} + +static void fn_1_7AEC(s32 arg0, Vec *arg1, Vec *arg2) { + omObjData *temp_r3; + UnkFn70E4Struct *temp_r31; + + if (lbl_1_bss_24 < 300) { + lbl_1_bss_24++; + temp_r3 = omAddObjEx(lbl_1_bss_1E8, 105, 1, 1, 5, fn_1_7950); + temp_r3->work[0] = arg0; + temp_r3->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r31), MEMORY_DEFAULT_NUM); + temp_r31 = temp_r3->data; + temp_r31->unk0C = 0.0f; + temp_r31->unk10 = 0.0f; + temp_r31->unk14 = 0.0f; + temp_r31->unk18 = 1.0f; + temp_r31->unk1C = 1.0f; + temp_r31->unk20 = 1.0f; + temp_r31->unk24.x = 0.0f; + temp_r31->unk24.y = 0.0f; + temp_r31->unk24.z = 0.0f; + temp_r31->unk00 = *arg1; + if (NULL != arg2) { + temp_r31->unk24 = *arg2; + } + temp_r31->unk38 = frandmod(10); + switch (arg0) { + case 0: + case 1: + case 2: + case 3: + temp_r31->unk30 = 1.0f; + break; + case 4: + temp_r31->unk30 = 12.0f + 2.0f * frandf(); + temp_r31->unk34 = 0.0f; + temp_r31->unk18 = 8.0f; + temp_r31->unk1C = 8.0f; + temp_r31->unk20 = 8.0f; + break; + case 5: + temp_r31->unk18 = 4.0f; + temp_r31->unk1C = 4.0f; + temp_r31->unk20 = 4.0f; + break; + } + } +} + +static void fn_1_7D48(omObjData *arg0) { +} + +static void fn_1_7D4C(omObjData *arg0) { + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M402, 35)); + Hu3DModelAttrSet(arg0->model[0], 1); + Hu3DModelAttrSet(arg0->model[0], 0x40000002); + Hu3DModelLayerSet(arg0->model[0], 0); + omSetTra(arg0, 0.0f, 0.0f, 0.0f); + omSetRot(arg0, 0.0f, 270.0f + 90.0f * arg0->work[0], 0.0f); + Hu3DModelShadowMapSet(arg0->model[0]); + Hu3DModelAttrReset(arg0->model[0], 1); + arg0->func = fn_1_7D48; +} + +static void fn_1_7E80(omObjData *arg0) { +} + +static void fn_1_7E84(omObjData *arg0) { + float temp_f31; + + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M402, 36)); + Hu3DModelAttrSet(arg0->model[0], 1); + Hu3DModelAttrSet(arg0->model[0], 0x40000001); + Hu3DModelAttrReset(arg0->model[0], 0x40000002); + Hu3DModelLayerSet(arg0->model[0], 1); + temp_f31 = 135.0f + 90.0f * arg0->work[0]; + omSetTra(arg0, 155.5 * sind(temp_f31), 0.0f, 155.5 * cosd(temp_f31)); + omSetRot(arg0, 0.0f, 0.0f, 0.0f); + Hu3DModelAttrReset(arg0->model[0], 1); + arg0->func = fn_1_7E80; +} + +static inline void fn_1_8048InlineFunc(Vec *arg0, float arg1, float arg2, float arg3) { + arg0->x = arg1; + arg0->y = arg2; + arg0->z = arg3; +} + +static void fn_1_8048(void) { + Vec sp14; + Vec sp8; + + lbl_1_bss_38 += lbl_1_bss_34; + if (360.0f < lbl_1_bss_38) { + lbl_1_bss_34 -= 0.2f; + if (0.0f > lbl_1_bss_34) { + lbl_1_bss_34 = 0.0f; + } + } + sp14.x = 2000.0 * cosd(lbl_1_bss_38); + sp14.y = 2000.0 * sind(lbl_1_bss_38); + sp14.z = 0.0f; + fn_1_8048InlineFunc(&sp8, -sp14.x, -sp14.y, -sp14.z); + Hu3DGLightPosSetV(lbl_1_bss_14, &sp14, &sp8); +} + +static void fn_1_8218(omObjData *arg0) { + Vec sp38; + float temp_f26; + omObjData *temp_r30; + + if (omSysExitReq != 0) { + fn_1_1F58(-1); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_9AF4; + } + lbl_1_bss_1B4++; + switch (arg0->work[0]) { + case 1000: + if (WipeStatGet() == 0) { + arg0->work[0]++; + } + break; + case 1001: + case 1002: + case 1003: + case 1004: + break; + case 1005: + if (lbl_1_bss_1AA < 0) { + lbl_1_bss_1AA = MGSeqCreate(3, 0); + } else { + if (lbl_1_bss_1A4 < 0 && (MGSeqStatGet(lbl_1_bss_1AA) & 0x10)) { + lbl_1_bss_1A4 = HuAudSeqPlay(0x46); + } + if (MGSeqStatGet(lbl_1_bss_1AA) == 0) { + arg0->work[0]++; + lbl_1_bss_1B0 = 1800; + lbl_1_bss_1A8 = MGSeqCreate(1, lbl_1_bss_1B0 / 60, -1, -1); + lbl_1_bss_1AA = -1; + } + } + break; + case 1006: + MGSeqParamSet(lbl_1_bss_1A8, 1, (lbl_1_bss_1B0 + 59) / 60); + lbl_1_bss_1B0--; + if (lbl_1_bss_1B0 < 0 || lbl_1_bss_26 >= 0) { + lbl_1_bss_1B0 = 1800; + lbl_1_bss_2C = 0.0f; + arg0->work[0] = 1007; + } + if (670.0f <= lbl_1_bss_28) { + lbl_1_bss_28 = 670.0f; + } + temp_f26 = 2.5f * (670.0f - lbl_1_bss_28); + sp38 = lbl_1_data_10; + sp38.y = lbl_1_bss_1DC.y + (lbl_1_data_10.y - temp_f26 - lbl_1_bss_1DC.y) / 3.0f; + sp38.z = lbl_1_bss_1DC.z + (lbl_1_data_10.z - temp_f26 - lbl_1_bss_1DC.z) / 3.0f; + fn_1_1350(&sp38, &lbl_1_data_1C, &lbl_1_data_28); + lbl_1_bss_28 = 0.0f; + break; + case 1007: + if (lbl_1_bss_1AA < 0) { + MGSeqParamSet(lbl_1_bss_1A8, 2, -1); + lbl_1_bss_1A8 = -1; + lbl_1_bss_1AA = MGSeqCreate(3, 1); + fn_1_1F58(100); + } else { + lbl_1_bss_2C += 1.0f; + if (90.0f >= lbl_1_bss_2C) { + fn_1_13DC(lbl_1_bss_2C / 90.0f, &lbl_1_data_1C); + } + if (MGSeqStatGet(lbl_1_bss_1AA) == 0) { + arg0->work[0]++; + lbl_1_bss_1AA = -1; + lbl_1_bss_2C = 0.0f; + } + } + break; + case 1008: + if (lbl_1_bss_1AA < 0) { + if (lbl_1_bss_26 < 0) { + lbl_1_bss_1AA = MGSeqCreate(3, 2); + HuAudSStreamPlay(4); + } else { + lbl_1_bss_1AA = MGSeqCreate(5, 3, GWPlayerCfg[lbl_1_bss_26].character, -1, -1, -1); + temp_r30 = lbl_1_bss_4C[lbl_1_bss_26]; + Hu3DMotionShiftSet(temp_r30->model[0], temp_r30->motion[10], 0.0f, 20.0f, 0); + HuAudSStreamPlay(1); + } + } else { + lbl_1_bss_2C += 1.0f; + if (lbl_1_bss_26 >= 0 && 110.0f == lbl_1_bss_2C) { + Hu3DModelAttrSet(arg0->model[1], 1); + Hu3DModelAttrReset(arg0->model[2], 0x40000002); + Hu3DModelAttrReset(arg0->model[2], 1); + Hu3DMotionTimeSet(arg0->model[2], 0.0f); + Hu3DMotionSpeedSet(arg0->model[2], 3.0f); + } + if (210.0f < lbl_1_bss_2C && MGSeqStatGet(lbl_1_bss_1AA) == 0) { + fn_1_1F58(-1); + lbl_1_bss_1AA = -1; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_9AF4; + } + } + break; + default: + OSReport("*** main mode error(%d)!!\n", arg0->work[0]); + break; + } + lbl_1_bss_30 -= 1.0f; + if (0.0f == lbl_1_bss_30) { + Hu3DModelAttrSet(arg0->model[1], 1); + Hu3DModelAttrReset(arg0->model[2], 0x40000002); + Hu3DModelAttrReset(arg0->model[2], 1); + Hu3DMotionTimeSet(arg0->model[2], 0.0f); + Hu3DMotionSpeedSet(arg0->model[2], 3.0f); + } + if (0.0f > lbl_1_bss_30) { + lbl_1_bss_30 = -1.0f; + fn_1_8048(); + if (Hu3DMotionEndCheck(arg0->model[2])) { + Hu3DModelAttrReset(arg0->model[1], 1); + Hu3DModelAttrSet(arg0->model[2], 1); + } + } +} + +static void fn_1_9058(omObjData *arg0) { + s16 temp_r29; + s16 temp_r28; + s32 i; + + arg0->work[0] = 1000; + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M402, 32)); + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M402, 33)); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M402, 34)); + for (i = 0; i < 3; i++) { + Hu3DModelAttrSet(arg0->model[i], 1); + Hu3DModelAttrSet(arg0->model[i], 0x40000002); + Hu3DModelLayerSet(arg0->model[i], 0); + Hu3DModelPosSet(arg0->model[i], 0.0f, 0.0f, 0.0f); + } + Hu3DModelReflectTypeSet(arg0->model[0], 3); + Hu3DModelReflectTypeSet(arg0->model[1], 3); + Hu3DModelReflectTypeSet(arg0->model[2], 3); + temp_r29 = arg0->model[0]; + temp_r28 = Hu3DLLightCreateV(temp_r29, &lbl_1_data_34, &lbl_1_data_40, &lbl_1_data_4C); + Hu3DLLightStaticSet(temp_r29, temp_r28, 1); + Hu3DModelAttrReset(arg0->model[0], 1); + Hu3DModelAttrReset(arg0->model[1], 1); + Hu3DModelShadowMapSet(arg0->model[0]); + HuAudFXPlay(0x519); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_8218; +} + +void ModuleProlog(void) { + Vec sp20; + omObjData *temp_r30; + s32 i; + + OSReport("******* M402 ObjectSetup *********\n"); + lbl_1_bss_1E8 = omInitObjMan(400, 0x2000); + omGameSysInit(lbl_1_bss_1E8); + lbl_1_bss_1B4 = 0; + lbl_1_bss_1AA = -1; + lbl_1_bss_1A8 = -1; + lbl_1_bss_26 = -1; + lbl_1_bss_1A4 = -1; + lbl_1_bss_10 = 1; + lbl_1_bss_8 = 0.0f; + lbl_1_bss_C = 2200.0f; + lbl_1_bss_4 = 2500.0f; + lbl_1_bss_1D0 = lbl_1_data_10; + lbl_1_bss_1B8 = lbl_1_data_28; + Hu3DReflectNoSet(0); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraPerspectiveSet(1, 30.0f, 20.0f, 20000.0f, 1.2f); + fn_1_1350(&lbl_1_data_10, &lbl_1_data_1C, &lbl_1_data_28); + lbl_1_bss_38 = 180.0f; + lbl_1_bss_34 = 4.0f; + lbl_1_bss_30 = 60.0f; + lbl_1_bss_14 = Hu3DGLightCreateV(&lbl_1_data_34, &lbl_1_data_40, &lbl_1_data_4C); + Hu3DGLightStaticSet(lbl_1_bss_14, 1); + fn_1_8048(); + Hu3DShadowCreate(30.0f, 20.0f, 20000.0f); + Hu3DShadowTPLvlSet(0.5f); + PSVECNormalize(&lbl_1_data_60, &sp20); + Hu3DShadowPosSet(&lbl_1_data_60, &sp20, &lbl_1_data_6C); + omMakeGroupEx(lbl_1_bss_1E8, 0, 4); + lbl_1_bss_54 = omGetGroupMemberListEx(lbl_1_bss_1E8, 0); + for (i = 0; i < 4; i++) { + temp_r30 = omAddObjEx(lbl_1_bss_1E8, 100, 1, 0, 0, fn_1_7D4C); + temp_r30->work[0] = i; + } + omMakeGroupEx(lbl_1_bss_1E8, 1, 4); + lbl_1_bss_50 = omGetGroupMemberListEx(lbl_1_bss_1E8, 1); + for (i = 0; i < 4; i++) { + temp_r30 = omAddObjEx(lbl_1_bss_1E8, 101, 1, 0, 1, fn_1_7E84); + temp_r30->work[0] = i; + } + omMakeGroupEx(lbl_1_bss_1E8, 2, 4); + lbl_1_bss_4C = omGetGroupMemberListEx(lbl_1_bss_1E8, 2); + for (i = 0; i < 4; i++) { + temp_r30 = omAddObjEx(lbl_1_bss_1E8, 102, 1, 11, 2, fn_1_63C8); + temp_r30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkFn27A8Struct), MEMORY_DEFAULT_NUM); + temp_r30->work[0] = i; + } + omMakeGroupEx(lbl_1_bss_1E8, 3, 4); + lbl_1_bss_48 = omGetGroupMemberListEx(lbl_1_bss_1E8, 3); + for (i = 0; i < 4; i++) { + temp_r30 = omAddObjEx(lbl_1_bss_1E8, 103, 1, 3, 3, fn_1_685C); + temp_r30->work[0] = i; + } + omMakeGroupEx(lbl_1_bss_1E8, 4, 2); + lbl_1_bss_44 = omGetGroupMemberListEx(lbl_1_bss_1E8, 4); + for (i = 0; i < 2; i++) { + temp_r30 = omAddObjEx(lbl_1_bss_1E8, 104, 1, 2, 4, fn_1_6E64); + temp_r30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkFn6AB4Struct), MEMORY_DEFAULT_NUM); + temp_r30->work[0] = i; + } + fn_1_0(); + lbl_1_bss_24 = 0; + omMakeGroupEx(lbl_1_bss_1E8, 5, 300); + lbl_1_bss_40 = omGetGroupMemberListEx(lbl_1_bss_1E8, 5); + for (i = 0; i < 7; i++) { + lbl_1_bss_16[i] = Hu3DModelCreateFile(lbl_1_data_218[i]); + Hu3DModelAttrSet(lbl_1_bss_16[i], 1); + Hu3DModelAttrSet(lbl_1_bss_16[i], 0x40000002); + } + lbl_1_bss_58 = omAddObjEx(lbl_1_bss_1E8, 106, 3, 1, -1, fn_1_9058); +} + +static void fn_1_9AF4(omObjData *arg0) { + s32 i; + + if (WipeStatGet() == 0) { + if (lbl_1_bss_1AA >= 0) { + MGSeqKill(lbl_1_bss_1AA); + } + if (lbl_1_bss_1A8 >= 0) { + MGSeqKill(lbl_1_bss_1A8); + } + MGSeqKillAll(); + HuAudAllStop(); + for (i = 0; i < 4; i++) { + CharModelKill(lbl_1_data_0[GWPlayerCfg[i].character]); + } + omOvlReturnEx(1, 1); + } +} diff --git a/src/REL/m403Dll/main.c b/src/REL/m403Dll/main.c new file mode 100755 index 00000000..4447b3ac --- /dev/null +++ b/src/REL/m403Dll/main.c @@ -0,0 +1,1592 @@ +#include "REL/m403Dll.h" +#include "REL/executor.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/frand.h" +#include "game/gamework.h" +#include "game/gamework_data.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 "ext_math.h" +#include "rel_sqrt_consts.h" + +typedef struct { + /* 0x000 */ u8 unk00; + /* 0x001 */ char unk01[3]; + /* 0x004 */ Vec unk04; + /* 0x010 */ Vec unk10; + /* 0x01C */ Vec unk1C; + /* 0x028 */ Vec unk28; + /* 0x034 */ Vec unk34; + /* 0x040 */ Vec unk40; + /* 0x04C */ Vec unk4C; + /* 0x058 */ Vec unk58; + /* 0x064 */ Vec unk64; + /* 0x070 */ Vec unk70; + /* 0x07C */ Vec unk7C; + /* 0x088 */ float unk88[3][3]; + /* 0x0AC */ Vec unkAC; + /* 0x0B8 */ Vec unkB8; + /* 0x0C4 */ Vec unkC4; + /* 0x0D0 */ float unkD0[3][3]; + /* 0x0F4 */ float unkF4[3]; + /* 0x100 */ float unk100[3]; + /* 0x10C */ float unk10C[3]; + /* 0x118 */ float unk118[3]; + /* 0x124 */ float unk124[3]; + /* 0x130 */ float unk130; + /* 0x134 */ float unk134; + /* 0x138 */ float unk138; + /* 0x13C */ float unk13C; + /* 0x140 */ float unk140; + /* 0x144 */ float unk144; + /* 0x148 */ float unk148; +} Unkm403Struct_00; // Size 0x14C + +typedef struct { + /* 0x00 */ u8 unk00; + /* 0x01 */ u8 unk01; + /* 0x02 */ u8 unk02; + /* 0x03 */ u8 unk03; + /* 0x04 */ u8 unk04; + /* 0x05 */ u8 unk05; + /* 0x06 */ u8 unk06; + /* 0x07 */ u8 unk07; + /* 0x08 */ char unk08[2]; + /* 0x0A */ u8 unk0A; + /* 0x0B */ char unk0B[1]; + /* 0x0C */ u8 unk0C; + /* 0x0D */ u8 unk0D; + /* 0x0E */ u8 unk0E; + /* 0x0F */ char unk0F[1]; + /* 0x10 */ s16 unk10; + /* 0x12 */ s16 unk12; + /* 0x14 */ s16 unk14; + /* 0x16 */ s16 unk16; + /* 0x18 */ s16 unk18; + /* 0x1A */ s16 unk1A; + /* 0x1C */ float unk1C; + /* 0x20 */ float unk20; + /* 0x24 */ float unk24; + /* 0x28 */ float unk28; + /* 0x2C */ Vec unk2C; + /* 0x38 */ float unk38; + /* 0x3C */ float unk3C; + /* 0x40 */ float unk40; + /* 0x44 */ float unk44; + /* 0x48 */ float unk48; + /* 0x4C */ float unk4C; + /* 0x50 */ Vec unk50; + /* 0x5C */ s16 unk5C; // Start of a struct of size 0x40 (memset)? + /* 0x5E */ s16 unk5E; + /* 0x60 */ float unk60; + /* 0x64 */ float unk64; + /* 0x68 */ char unk68[0x34]; + /* 0x9C */ u8 unk9C; + /* 0x9D */ char unk9D[3]; + /* 0xA0 */ s32 unkA0; +} Unkm403Struct_01; // Size 0xA4 + +static void fn_1_424(omObjData *arg0); +static void fn_1_444(omObjData *arg0); +static void fn_1_82C(omObjData *arg0); +static void fn_1_1214(omObjData *arg0); +static void fn_1_1274(omObjData *arg0); +static void fn_1_1460(omObjData *arg0); +static void fn_1_16D8(omObjData *arg0); +static void fn_1_17DC(omObjData *arg0); +static void fn_1_1A50(float arg0, Vec *arg1, Vec *arg2, float arg3); +static void fn_1_1AF0(float arg0, Vec *arg1, Vec *arg2, float arg3, Vec *arg4, Vec *arg5, float arg6); +static void fn_1_1DA8(float arg0); +static void fn_1_1DD0(omObjData *arg0); +static void fn_1_2158(omObjData *arg0); +static void fn_1_22A4(omObjData *arg0); +static void fn_1_2598(omObjData *arg0); +static void fn_1_2FDC(omObjData *arg0); +static void fn_1_3800(void); +static s32 fn_1_3894(void); +static void fn_1_3B80(omObjData *arg0); +static void fn_1_3D6C(Vec *arg0, Vec *arg1); +static void fn_1_3E4C(omObjData *arg0); +static s16 fn_1_400C(s32 arg0, s16 arg1, ParticleHook arg2); +static void fn_1_40A8(ModelData *model, ParticleData *particle, Mtx matrix); +static s32 fn_1_4528(void); +static float fn_1_457C(float arg0, float arg1, float arg2); +static void fn_1_46E4(Mtx arg0, float arg1, float arg2, float arg3); +static void fn_1_4804(float *arg0, float *arg1); +static float fn_1_4B10(float arg0, float arg1, float arg2, float arg3); +static void fn_1_4B88(float *arg0, float *arg1, float *arg2, float *arg3, float arg4); +static float fn_1_4CA4(float arg0, float arg1, float arg2, float arg3); +static void fn_1_4D1C(float *arg0, float *arg1, float *arg2, float *arg3, float arg4); +static void fn_1_4FF4(float *arg0, float *arg1, float *arg2, s32 arg3); +static float fn_1_52AC(float arg0, float *arg1, float *arg2, float *arg3, s32 arg4); +static void fn_1_5400(float *arg0, Vec *arg1, float arg2[][3], s32 arg3); +static void fn_1_57E0(float arg0, Vec *arg1, float *arg2, Vec *arg3, float arg4[][3], s32 arg5); +static float fn_1_59F4(Vec *arg0); +static void fn_1_5B8C(Vec arg0, Vec arg1, Vec *arg2, float arg3); +static float fn_1_5C64(Vec arg0, Vec arg1, Vec arg2); +static float fn_1_5D20(Vec *arg0, Vec *arg1, Vec *arg2); +static float fn_1_605C(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3, Vec *arg4); + +static omObjData *lbl_1_bss_50; +static omObjData *lbl_1_bss_4C; +static omObjData *lbl_1_bss_48; +static omObjData *lbl_1_bss_44; +static omObjData *lbl_1_bss_34[4]; +static u16 lbl_1_bss_30; +static s16 lbl_1_bss_2E; +static s16 lbl_1_bss_2C; +static s16 lbl_1_bss_2A; +static s16 lbl_1_bss_28; +static s16 lbl_1_bss_1C[6]; +static s16 lbl_1_bss_18[2]; +static u8 lbl_1_bss_10_unused[8]; +static s32 lbl_1_bss_C; +static u8 lbl_1_bss_6_unused[6]; +static s16 lbl_1_bss_4; +static s16 lbl_1_bss_2; +static s16 lbl_1_bss_0; + +static s16 lbl_1_data_0 = -1; +static Vec lbl_1_data_4 = { 0.0f, 4000.0f, 4000.0f }; +static Vec lbl_1_data_10 = { 0.0f, -0.7f, -0.6f }; +static GXColor lbl_1_data_1C = { 0xFF, 0xFF, 0xFF, 0xFF }; + +static Vec lbl_1_data_20_unused = { 0.0f, 4000.0f, -2000.0f }; +static Vec lbl_1_data_2C_unused = { 0.0f, 1.0f, 0.0f }; +static u8 lbl_1_data_38_unused[0xC] = { 0 }; + +void ModuleProlog(void) { + LightData *var_r28; + Process *temp_r31; + omObjData *var_r29; + s32 temp_r27; + s32 var_r26; + s32 i; + + OSReport("******* M403ObjectSetup *********\n"); + Hu3DLighInit(); + var_r26 = Hu3DGLightCreateV(&lbl_1_data_4, &lbl_1_data_10, &lbl_1_data_1C); + Hu3DGLightInfinitytSet(var_r26); + var_r28 = &Hu3DGlobalLight[0]; + var_r28->unk_00 |= 0x8000; + temp_r31 = omInitObjMan(50, 0x2000); + temp_r27 = frand() & 0x1F; + for (i = 0; i < temp_r27; i++) { + fn_1_4528(); + } + 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_4C = omAddObjEx(temp_r31, 0x7FDA, 0, 0, -1, omOutView); + lbl_1_bss_50 = omAddObjEx(temp_r31, 0x10, 8, 0, -1, fn_1_424); + lbl_1_bss_44 = omAddObjEx(temp_r31, 0x20, 16, 0, -1, fn_1_1274); + lbl_1_bss_48 = omAddObjEx(temp_r31, 0x50, 16, 0, -1, fn_1_16D8); + omAddObjEx(temp_r31, 0x60, 0, 0, -1, fn_1_3B80); + fn_1_650C(temp_r31); + fn_1_7C50(3); + omMakeGroupEx(temp_r31, 0, 4); + omGetGroupMemberListEx(temp_r31, 0); + for (i = 0; i < 4; i++) { + var_r29 = omAddObjEx(temp_r31, 0x30, 2, 8, 0, fn_1_1DD0); + lbl_1_bss_34[i] = var_r29; + var_r29->work[0] = i; + var_r29->work[1] = i; + } + omGameSysInit(temp_r31); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + HuAudSndGrpSet(0x1C); + lbl_1_bss_2 = 0; + if (GWMGRecordGet(9) == 0U) { + GWMGRecordSet(9, 5); + } +} + +static void fn_1_424(omObjData *arg0) { + lbl_1_bss_30 = 0; + arg0->func = fn_1_444; +} + +static void fn_1_444(omObjData *arg0) { + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + + switch (lbl_1_bss_30) { + 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_1A50(1.0f, &sp2C, &sp20, var_f31); + lbl_1_bss_28 = 60; + lbl_1_bss_30++; + break; + case 1: + if (--lbl_1_bss_28 == 0) { + lbl_1_bss_30++; + } + break; + case 2: + if (lbl_1_bss_28 == 0) { + fn_1_7C60(); + lbl_1_bss_28 = 90; + 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_1AF0(180.0f, &sp14, &sp8, var_f30, &sp2C, &sp20, var_f31); + } + if (--lbl_1_bss_28 == 0) { + lbl_1_bss_30++; + } + break; + case 3: + if (lbl_1_bss_28 == 0) { + lbl_1_bss_28 = 90; + } + if (--lbl_1_bss_28 == 0) { + lbl_1_bss_30++; + } + break; + case 4: + lbl_1_bss_30 = 5; + lbl_1_bss_2E = lbl_1_bss_2C = -1; + arg0->func = fn_1_82C; + HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M403, 19), MEMORY_DEFAULT_NUM)); + break; + } + if (omSysExitReq != 0 && WipeStatGet() == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_1214; + } +} + +static s32 lbl_1_data_68 = -1; + +s32 lbl_1_data_6C[] = { + DATA_MAKE_NUM(DATADIR_MGCONST, 0), + DATA_MAKE_NUM(DATADIR_MGCONST, 1), + DATA_MAKE_NUM(DATADIR_MGCONST, 2), + DATA_MAKE_NUM(DATADIR_MGCONST, 3), + DATA_MAKE_NUM(DATADIR_MGCONST, 4), + DATA_MAKE_NUM(DATADIR_MGCONST, 5), + DATA_MAKE_NUM(DATADIR_MGCONST, 6), + DATA_MAKE_NUM(DATADIR_MGCONST, 7) +}; + +static void fn_1_82C(omObjData *arg0) { + Vec sp1C; + Vec sp10; + float var_f31; + s16 sp8[4]; + s32 var_r30; + s32 var_r27; + s32 var_r29; + s32 i; + + switch (lbl_1_bss_30) { + case 5: + if (lbl_1_bss_2C == -1) { + lbl_1_bss_2A = 1800; + lbl_1_bss_2C = MGSeqStartCreate(); + MGSeqPosSet(lbl_1_bss_2C, 320.0f, 240.0f); + } else if (MGSeqStatGet(lbl_1_bss_2C) == 0) { + lbl_1_bss_2C = -1; + lbl_1_bss_30++; + lbl_1_bss_28 = 0; + lbl_1_data_0 = 4; + if (lbl_1_bss_2 != 0) { + sp1C.x = 476.0f; + sp1C.y = 64.0f; + var_r30 = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 51), 2, 0); + lbl_1_bss_1C[0] = var_r30; + espPosSet(var_r30, sp1C.x + 32.0f, sp1C.y); + var_r30 = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 51), 2, 0); + lbl_1_bss_1C[1] = var_r30; + espPosSet(var_r30, sp1C.x + 56.0f, sp1C.y); + var_r30 = espEntry(lbl_1_data_6C[GWPlayerCfg[lbl_1_bss_4].character], 1, 0); + lbl_1_bss_1C[2] = var_r30; + espPosSet(var_r30, sp1C.x, sp1C.y); + var_r30 = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 22), 3, 0); + lbl_1_bss_1C[3] = var_r30; + espPosSet(var_r30, sp1C.x + 36.0f, sp1C.y); + var_r30 = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 23), 4, 0); + lbl_1_bss_1C[4] = var_r30; + espColorSet(var_r30, 0, 0, 0); + espTPLvlSet(var_r30, 0.5); + espPosSet(var_r30, sp1C.x + 36.0f, sp1C.y); + } + } + if (lbl_1_data_68 == -1 && (MGSeqStatGet(lbl_1_bss_2C) & 0x10)) { + lbl_1_data_68 = HuAudSeqPlay(0x48); + } + break; + case 6: + var_r29 = 0; + if (lbl_1_bss_2 != 0) { + if (((Unkm403Struct_01*) lbl_1_bss_34[lbl_1_bss_4]->data)->unk07 == 0 && fn_1_8264() == 0) { + var_r29++; + } + } else if (lbl_1_data_0 <= 1 && fn_1_8264() == 0) { + var_r29++; + } + if (lbl_1_bss_2 != 0) { + espBankSet(lbl_1_bss_1C[0], lbl_1_bss_0 / 10); + espBankSet(lbl_1_bss_1C[1], lbl_1_bss_0 % 10); + } + if (var_r29 != 0) { + lbl_1_bss_30++; + } + break; + case 7: + if (lbl_1_bss_2C == -1) { + lbl_1_bss_2C = MGSeqFinishCreate(); + MGSeqPosSet(lbl_1_bss_2C, 320.0f, 240.0f); + MGSeqKill(lbl_1_bss_2E); + HuAudSeqFadeOut(lbl_1_data_68, 100); + break; + } + if (MGSeqStatGet(lbl_1_bss_2C) == 0) { + lbl_1_bss_2C = -1; + if (lbl_1_bss_2 == 0) { + if (lbl_1_data_0 != 0) { + for (i = 0; i < 4; i++) { + if (((Unkm403Struct_01*) lbl_1_bss_34[i]->data)->unk07 != 0) { + break; + } + } + sp1C.x = lbl_1_bss_34[i]->trans.x; + sp1C.y = 100.0f; + sp1C.z = lbl_1_bss_34[i]->trans.z; + sp10.x = -18.0f; + sp10.y = 0.0f; + sp10.z = 0.0f; + var_f31 = 600.0f; + fn_1_1A50(45.0f, &sp1C, &sp10, var_f31); + } + lbl_1_bss_30 = 9; + lbl_1_bss_28 = 90; + break; + } + if (GWMGRecordGet(9) < lbl_1_bss_0 - 1) { + GWMGRecordSet(9, lbl_1_bss_0 - 1); + lbl_1_bss_30 = 8; + break; + } + lbl_1_bss_2C = -1; + lbl_1_bss_30 = 11; + lbl_1_bss_28 = 150; + } + break; + case 8: + if (lbl_1_bss_2C == -1) { + lbl_1_bss_2C = MGSeqRecordCreate(lbl_1_bss_0 - 1); + break; + } + if (MGSeqStatGet(lbl_1_bss_2C) == 0) { + lbl_1_bss_2C = -1; + lbl_1_bss_28 = 150; + lbl_1_bss_30 = 11; + } + break; + case 9: + if (--lbl_1_bss_28 == 0) { + lbl_1_bss_30++; + } + break; + case 10: + if (lbl_1_bss_2C == -1) { + if (lbl_1_data_0 == 0) { + lbl_1_bss_2C = MGSeqDrawCreate(); + HuAudSStreamPlay(4); + } else { + for (i = 0; i < 4; i++) { + sp8[i] = -1; + } + for (i = 0, var_r27 = 0; i < 4; i++) { + if (((Unkm403Struct_01*) lbl_1_bss_34[i]->data)->unk07 != 0) { + GWPlayerCoinWinAdd(i, 10); + sp8[var_r27++] = GWPlayerCfg[i].character; + } + } + lbl_1_bss_2C = MGSeqWinCreate(sp8[0], sp8[1], sp8[2], sp8[3]); + HuAudSStreamPlay(1); + } + } + lbl_1_bss_2C = -1; + lbl_1_bss_28 = 210; + lbl_1_bss_30++; + break; + case 11: + if (--lbl_1_bss_28 == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_1214; + } + break; + } + if (omSysExitReq != 0 && WipeStatGet() == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_1214; + } +} + +static void fn_1_1214(omObjData *arg0) { + if (WipeStatGet() == 0) { + fn_1_676C(); + CharModelKill(-1); + MGSeqKill(lbl_1_bss_2E); + MGSeqKillAll(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + } +} + +static void fn_1_1274(omObjData *arg0) { + 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); + arg0->func = fn_1_1460; +} + +static void fn_1_1460(omObjData *arg0) { + s8 sp11[] = { 1, 0, 2, 1, 0, 3, 2, 1, 0 }; + s8 sp8[] = { 1, 1, 2, 2, 2, 3, 3, 3, 3 }; + s32 var_r30; + + switch (lbl_1_bss_30) { + case 0: + break; + case 1: + Hu3DGLightColorSet(lbl_1_bss_18[0], 0xF0, 0xF0, 0xF0, 0xFF); + break; + case 2: + break; + case 3: + Hu3DGLightColorSet(lbl_1_bss_18[1], 0xFF, 0xE0, 0xD0, 0xFF); + break; + case 4: + break; + case 5: + arg0->work[0] = 30; + arg0->work[1] = 17; + lbl_1_bss_C = 1; + break; + case 6: + if (fn_1_8264() != 0) { + break; + } + if (lbl_1_bss_C == 0) { + lbl_1_bss_C = 30; + lbl_1_bss_0++; + } + lbl_1_bss_C--; + if (lbl_1_bss_C == 0) { + var_r30 = (arg0->work[1] - 2) / 2; + if (var_r30 < 0) { + var_r30 = 0; + } + fn_1_8670(sp11[var_r30]); + fn_1_7C50(sp8[var_r30]); + fn_1_7C30(0.01f * arg0->work[0]); + arg0->work[0] += 5; + if (arg0->work[1] > 2) { + arg0->work[1]--; + } + } + break; + } +} + +static void fn_1_16D8(omObjData *arg0) { + Unkm403Struct_00 *temp_r3; + + temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r3), MEMORY_DEFAULT_NUM); + arg0->data = temp_r3; + temp_r3->unk148 = temp_r3->unk144 = 0.0f; + temp_r3->unk140 = 1.0f; + temp_r3->unk10.x = temp_r3->unk28.x = -23.5f; + temp_r3->unk10.y = temp_r3->unk28.y = 0.0f; + temp_r3->unk10.z = temp_r3->unk28.z = 0.0f; + temp_r3->unk04.x = temp_r3->unk1C.x = 0.0f; + temp_r3->unk04.y = temp_r3->unk1C.y = 320.0f; + temp_r3->unk04.z = temp_r3->unk1C.z = 147.0f; + temp_r3->unk130 = temp_r3->unk134 = 1720.0f; + arg0->func = fn_1_17DC; +} + +static void fn_1_17DC(omObjData *arg0) { + Unkm403Struct_00 *temp_r31; + float temp_f31; + + temp_r31 = arg0->data; + if (temp_r31->unk148 > 0.0f) { + temp_r31->unk148 -= temp_r31->unk140; + temp_f31 = (temp_r31->unk144 - temp_r31->unk148) / temp_r31->unk144; + temp_f31 = sind(90.0f * temp_f31); + if (temp_r31->unk00 == 0) { + temp_r31->unk04.x = temp_r31->unk1C.x + temp_f31 * (temp_r31->unk34.x - temp_r31->unk1C.x); + temp_r31->unk04.y = temp_r31->unk1C.y + temp_f31 * (temp_r31->unk34.y - temp_r31->unk1C.y); + temp_r31->unk04.z = temp_r31->unk1C.z + temp_f31 * (temp_r31->unk34.z - temp_r31->unk1C.z); + temp_r31->unk10.x = temp_r31->unk28.x + temp_f31 * (temp_r31->unk40.x - temp_r31->unk28.x); + temp_r31->unk10.y = temp_r31->unk28.y + temp_f31 * (temp_r31->unk40.y - temp_r31->unk28.y); + temp_r31->unk10.z = temp_r31->unk28.z + temp_f31 * (temp_r31->unk40.z - temp_r31->unk28.z); + temp_r31->unk130 = temp_r31->unk134 + temp_f31 * (temp_r31->unk138 - temp_r31->unk134); + } else { + fn_1_57E0(2.0f * temp_f31, &temp_r31->unk04, temp_r31->unkF4, &temp_r31->unk64, temp_r31->unk88, 3); + fn_1_57E0(2.0f * temp_f31, &temp_r31->unk10, temp_r31->unk100, &temp_r31->unkAC, temp_r31->unkD0, 3); + temp_r31->unk130 = fn_1_52AC(2.0f * temp_f31, temp_r31->unk124, temp_r31->unk10C, temp_r31->unk118, 3); + } + } + CRot.x = temp_r31->unk10.x; + CRot.y = temp_r31->unk10.y; + CRot.z = temp_r31->unk10.z; + Center.x = temp_r31->unk04.x; + Center.y = temp_r31->unk04.y; + Center.z = temp_r31->unk04.z; + CZoom = temp_r31->unk130; +} + +static void fn_1_1A50(float arg0, Vec *arg1, Vec *arg2, float arg3) { + Unkm403Struct_00 *temp_r31; + + temp_r31 = lbl_1_bss_48->data; + temp_r31->unk00 = 0; + temp_r31->unk144 = arg0; + temp_r31->unk148 = arg0; + temp_r31->unk1C = temp_r31->unk04; + temp_r31->unk34.x = arg1->x; + temp_r31->unk34.y = arg1->y; + temp_r31->unk34.z = arg1->z; + temp_r31->unk28 = temp_r31->unk10; + temp_r31->unk40.x = arg2->x; + temp_r31->unk40.y = arg2->y; + temp_r31->unk40.z = arg2->z; + temp_r31->unk134 = temp_r31->unk130; + temp_r31->unk138 = arg3; +} + +static void fn_1_1AF0(float arg0, Vec *arg1, Vec *arg2, float arg3, Vec *arg4, Vec *arg5, float arg6) { + Unkm403Struct_00 *temp_r31; + + temp_r31 = lbl_1_bss_48->data; + temp_r31->unk00 = 1; + temp_r31->unk148 = temp_r31->unk144 = arg0; + temp_r31->unk1C = temp_r31->unk04; + temp_r31->unk34.x = arg1->x; + temp_r31->unk34.y = arg1->y; + temp_r31->unk34.z = arg1->z; + temp_r31->unk4C.x = arg4->x; + temp_r31->unk4C.y = arg4->y; + temp_r31->unk4C.z = arg4->z; + temp_r31->unk28 = temp_r31->unk10; + temp_r31->unk40.x = arg2->x; + temp_r31->unk40.y = arg2->y; + temp_r31->unk40.z = arg2->z; + temp_r31->unk58.x = arg5->x; + temp_r31->unk58.y = arg5->y; + temp_r31->unk58.z = arg5->z; + temp_r31->unk134 = temp_r31->unk130; + temp_r31->unk138 = arg3; + temp_r31->unk13C = arg6; + temp_r31->unk64 = temp_r31->unk1C; + temp_r31->unk70 = temp_r31->unk4C; + temp_r31->unk7C = temp_r31->unk34; + temp_r31->unkAC = temp_r31->unk28; + temp_r31->unkB8 = temp_r31->unk58; + temp_r31->unkC4 = temp_r31->unk40; + temp_r31->unk10C[0] = temp_r31->unk134; + temp_r31->unk10C[1] = temp_r31->unk13C; + temp_r31->unk10C[2] = temp_r31->unk138; + temp_r31->unk124[0] = 0.0f; + temp_r31->unk124[1] = ABS(temp_r31->unk10C[1] - temp_r31->unk10C[0]); + temp_r31->unk124[2] = ABS(temp_r31->unk10C[2] - temp_r31->unk10C[1]) + temp_r31->unk124[1]; + fn_1_5400(temp_r31->unkF4, &temp_r31->unk64, temp_r31->unk88, 3); + fn_1_5400(temp_r31->unk100, &temp_r31->unkAC, temp_r31->unkD0, 3); + fn_1_4FF4(temp_r31->unk124, temp_r31->unk10C, temp_r31->unk118, 3); +} + +static void fn_1_1DA8(float arg0) { + Unkm403Struct_00 *temp_r31; + + temp_r31 = lbl_1_bss_48->data; + temp_r31->unk140 = arg0; +} + +static s32 lbl_1_data_C4[] = { + 0, 2, 3, 8, 10, 9, 23, 24 +}; + +static Vec lbl_1_data_E4[] = { + { -300.0f, 2200.0f, 0.0f }, + { -100.0f, 2200.0f, 0.0f }, + { 100.0f, 2200.0f, 0.0f }, + { 300.0f, 2200.0f, 0.0f } +}; + +static float lbl_1_data_114[] = { + 40.0f, 40.0f, 40.0f, 40.0f, + 40.0f, 100.0f, 40.0f, 80.0f +}; + +static float lbl_1_data_134[] = { + 160.0f, 160.0f, 180.0f, 160.0f, + 160.0f, 180.0f, 180.0f, 200.0f +}; + +static u32 lbl_1_data_154 = 0x41C64E6D; + +static void fn_1_1DD0(omObjData *arg0) { + Unkm403Struct_01 *temp_r3; + s32 temp_r27; + s32 i; + s32 temp_r28; + + temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r3), MEMORY_DEFAULT_NUM); + arg0->data = temp_r3; + temp_r3->unk00 = arg0->work[0]; + temp_r3->unk01 = GWPlayerCfg[temp_r3->unk00].character; + temp_r3->unk02 = temp_r3->unk00 >> 1; + temp_r3->unk03 = temp_r3->unk00 & 1; + temp_r3->unk04 = GWPlayerCfg[temp_r3->unk00].pad_idx; + temp_r3->unk05 = GWPlayerCfg[temp_r3->unk00].iscom; + temp_r3->unk06 = GWPlayerCfg[temp_r3->unk00].diff; + temp_r3->unk18 = temp_r3->unk1A = 0; + temp_r3->unk07 = 1; + temp_r3->unk0C = 1; + temp_r3->unk0D = 0; + temp_r3->unk0E = 0; + temp_r3->unk0A = 0; + temp_r3->unk9C = 0; + temp_r27 = arg0->work[1]; + temp_r3->unk2C.x = lbl_1_data_E4[temp_r27].x; + temp_r3->unk2C.y = lbl_1_data_E4[temp_r27].y + 100.0f * ((fn_1_4528() - 0x8000) / 32768.0f); + temp_r3->unk2C.z = lbl_1_data_E4[temp_r27].z; + temp_r3->unk44 = temp_r3->unk48 = temp_r3->unk4C = 0.0f; + temp_r3->unk38 = temp_r3->unk3C = temp_r3->unk40 = 0.0f; + temp_r3->unk20 = temp_r3->unk3C; + temp_r3->unk24 = 0.0f; + temp_r3->unk1C = 0.0f; + temp_r3->unk28 = 1.0f; + memset(&temp_r3->unk5C, 0, 0x40); + temp_r3->unkA0 = 1; + if (lbl_1_bss_2 != 0 && temp_r3->unk05 == 0) { + lbl_1_bss_4 = temp_r3->unk00; + } + temp_r28 = CharModelCreate(temp_r3->unk01, 4); + arg0->model[0] = temp_r28; + Hu3DModelAttrSet(temp_r28, 0x40000001); + Hu3DModelShadowSet(temp_r28); + for (i = 0; i < 8; i++) { + arg0->motion[i] = CharModelMotionCreate(temp_r3->unk01, lbl_1_data_C4[i]); + } + CharModelMotionDataClose(temp_r3->unk01); + CharModelMotionSet(temp_r3->unk01, arg0->motion[temp_r3->unk18]); + omSetTra(arg0, temp_r3->unk2C.x, temp_r3->unk2C.y, temp_r3->unk2C.z); + Hu3DModelPosSet(temp_r28, temp_r3->unk2C.x, temp_r3->unk2C.y, temp_r3->unk2C.z); + Hu3DModelRotSet(temp_r28, 0.0f, 30.0f, 0.0f); + CharModelStepTypeSet(temp_r3->unk01, 1); + CharModelVoiceEnableSet(temp_r3->unk01, arg0->motion[3], 0); + arg0->func = fn_1_2158; +} + +static void fn_1_2158(omObjData *arg0) { + Unkm403Struct_01 *temp_r31; + s32 sp8; + + sp8 = arg0->model[0]; + temp_r31 = arg0->data; + temp_r31->unk10 = temp_r31->unk12 = 0; + temp_r31->unk14 = temp_r31->unk16 = 0; + switch (lbl_1_bss_30) { + case 3: + break; + case 2: + if (lbl_1_bss_28 < 60.0f) { + break; + } + /* fallthrough */ + case 1: + temp_r31->unk18 = 3; + temp_r31->unk48 = 0.0f; + temp_r31->unk0C = 0; + break; + case 5: + arg0->func = fn_1_22A4; + break; + } + if (temp_r31->unk2C.y < 10.0f) { + omVibrate(temp_r31->unk00, 12, 6, 6); + temp_r31->unk2C.y = 10.0f; + temp_r31->unk0C = 1; + } + fn_1_2FDC(arg0); +} + +static void fn_1_22A4(omObjData *arg0) { + Unkm403Struct_01 *temp_r31; + s32 temp_r29; + s32 temp_r28; + + temp_r29 = arg0->model[0]; + temp_r31 = arg0->data; + if (temp_r31->unk07 != 0) { + if (lbl_1_bss_30 == 6 && !(temp_r31->unk07 & 2)) { + if (temp_r31->unk05 != 0) { + fn_1_2598(arg0); + } else { + temp_r31->unk10 = HuPadStkX[temp_r31->unk04]; + temp_r31->unk12 = HuPadStkY[temp_r31->unk04]; + temp_r31->unk14 = HuPadBtnDown[temp_r31->unk04]; + temp_r31->unk16 = HuPadBtn[temp_r31->unk04]; + } + } else { + temp_r31->unk10 = temp_r31->unk12 = 0; + temp_r31->unk14 = temp_r31->unk16 = 0; + } + switch (lbl_1_bss_30) { + case 5: + case 6: + break; + case 7: + case 9: + arg0->scale.y += 0.2f * (1.0f - arg0->scale.y); + temp_r31->unk3C = fn_1_457C(temp_r31->unk3C, 0.0f, 0.9f); + break; + case 10: + if (temp_r31->unk18 != 6) { + temp_r31->unk18 = 6; + } + break; + } + if (temp_r31->unk07 & 2) { + temp_r31->unk10 = temp_r31->unk12 = 0; + temp_r31->unk14 = temp_r31->unk16 = 0; + if (arg0->scale.y < 0.2f) { + omVibrate(temp_r31->unk00, 12, 4, 2); + HuAudFXPlay(0x523); + temp_r31->unk07 = 0; + Hu3DModelShadowReset(temp_r29); + Hu3DModelAttrSet(temp_r29, 1); + lbl_1_data_0--; + temp_r28 = fn_1_400C(DATA_MAKE_NUM(DATADIR_M403, 19), 100, fn_1_40A8); + Hu3DModelPosSet(temp_r28, temp_r31->unk2C.x, temp_r31->unk2C.y, temp_r31->unk2C.z); + Hu3DModelLayerSet(temp_r28, 2); + } + } + if (fn_1_8264() != 0) { + temp_r31->unkA0 = 0; + } else if (!(temp_r31->unk07 & 2) && temp_r31->unkA0 == 0) { + omVibrate(temp_r31->unk00, 12, 6, 6); + temp_r31->unkA0 = 1; + } + fn_1_2FDC(arg0); + } +} + +static void fn_1_2598(omObjData *arg0) { + Vec sp38[6]; + Vec sp14; + Vec sp8; + float sp20[6]; + float var_f31; + float var_f30; + float temp_f29; + float var_f28; + Unkm403Struct_01 *temp_r31; + s16 var_r27; + s16 var_r26; + s16 var_r21; + s16 var_r20; + s16 temp_r28; + s32 var_r23; + s32 var_r22; + s32 var_r25; + s32 temp_r24; + s32 var_r29; + s32 i; + + var_r22 = 0; + for (i = 0, var_r29 = 0; i < 4; i++) { + temp_r31 = lbl_1_bss_34[i]->data; + if (temp_r31->unk05 == 0 && temp_r31->unk07 != 0) { + break; + } + } + temp_r31 = arg0->data; + if (i >= 4 && temp_r31->unk9C == 0) { + var_r22 = 1; + } + temp_r28 = temp_r31->unk06; + var_r27 = var_r26 = var_r21 = var_r20 = 0; + switch (temp_r31->unk5C) { + case 0: + if (fn_1_8264() != 0) { + temp_r31->unk5C = 1; + } + break; + case 1: + temp_r31->unk5C = 2; + temp_r31->unk5E = (s32) (60.0f * (1.2f - 0.2f * temp_r28) * (fn_1_4528() / 65536.0f)); + temp_r31->unk60 = 500.0f * ((fn_1_4528() - 0x8000) / 32768.0f); + temp_r31->unk64 = 200.0f * ((fn_1_4528() - 0x8000) / 32768.0f); + var_r27 = temp_r31->unk10; + var_r26 = temp_r31->unk12; + break; + case 2: + sp8.x = temp_r31->unk60 - temp_r31->unk2C.x; + sp8.y = 0.0f; + sp8.z = temp_r31->unk64 - temp_r31->unk2C.z; + var_f31 = fn_1_59F4(&sp8); + if (var_f31 < 20.0f) { + temp_r31->unk5C = 3; + } else { + if (var_f31 >= 100.0f) { + var_f28 = 0.8f; + } else { + var_f28 = 0.4f; + } + var_f30 = fn_1_457C(temp_r31->unk3C, atan2d(sp8.x, sp8.z), var_f28); + temp_f29 = 48.0f + 4.0f * temp_r28; + var_r27 = temp_f29 * sind(var_f30); + var_r26 = temp_f29 * -cosd(var_f30); + if (fn_1_8264() == 0) { + temp_r31->unk5C = 0; + if (temp_r31->unk5E == 0) { + temp_r31->unk5E = -1; + } + } else if (temp_r31->unk5E >= 0) { + if (temp_r31->unk5E == 0) { + if (var_f31 < 150.0f && temp_r31->unk0E != 0) { + temp_r31->unk5C = 3; + } else if ((s32) ((temp_r28 + 2) * (fn_1_4528() / 65536.0f)) != 0 && var_r22 == 0) { + temp_r31->unk5C = 4; + } else { + temp_r31->unk5C = 1; + } + } else { + temp_r31->unk5E--; + } + } + } + break; + case 3: + sp8.x = temp_r31->unk60 - temp_r31->unk2C.x; + sp8.y = 0.0f; + sp8.z = temp_r31->unk64 - temp_r31->unk2C.z; + if (fn_1_59F4(&sp8) >= 30.000002f && temp_r31->unk0E == 0) { + temp_r31->unk5C = 2; + } else if (fn_1_8264() == 0) { + temp_r31->unk5C = 0; + } else { + if (temp_r31->unk5E > 0) { + temp_r31->unk5E--; + } + if (temp_r31->unk5E == 0) { + if ((s32) ((temp_r28 + 2) * (fn_1_4528() / 65536.0f)) != 0 && var_r22 == 0) { + temp_r31->unk5C = 4; + } else { + temp_r31->unk5C = 1; + } + } + } + break; + case 4: + temp_r24 = fn_1_82D0(&sp38[0]); + for (i = 0; i < temp_r24; i++) { + PSVECSubtract(&sp38[i], &temp_r31->unk2C, &sp8); + sp20[i] = PSVECMag(&sp8); + } + for (i = 0; i < temp_r24 - 1; i++) { + for (var_r29 = i + 1; var_r29 < temp_r24; var_r29++) { + if (sp20[i] > sp20[var_r29]) { + sp14 = sp38[i]; + sp38[i] = sp38[var_r29]; + sp38[var_r29] = sp14; + var_f31 = sp20[i]; + sp20[i] = sp20[var_r29]; + sp20[var_r29] = var_f31; + } + } + } + var_r25 = 1000; + var_r23 = var_r25 * (fn_1_4528() / 65536.0f); + for (i = 0; i < temp_r24 - 1; i++) { + var_r25 = var_r25 * (5.0f + temp_r28) * 0.1f; + var_r23 -= var_r25; + if (var_r23 < 0) { + break; + } + } + temp_r31->unk60 = sp38[i].x + 100.0f * (0.5f - 0.15f * temp_r28) * ((fn_1_4528() - 0x8000) / 32768.0f); + temp_r31->unk64 = sp38[i].z + 100.0f * (0.5f - 0.15f * temp_r28) * ((fn_1_4528() - 0x8000) / 32768.0f); + temp_r31->unk5C = 2; + temp_r31->unk5E = -1; + var_r27 = temp_r31->unk10; + var_r26 = temp_r31->unk12; + break; + } + temp_r31->unk10 = var_r27; + temp_r31->unk12 = var_r26; + temp_r31->unk14 = var_r21; + temp_r31->unk16 = var_r20; +} + +static void fn_1_2FDC(omObjData *arg0) { + float var_f29; + Unkm403Struct_01 *temp_r31; + s32 temp_r25; + s16 var_r27; + s16 var_r28; + s16 temp_r30; + s16 temp_r29; + s16 spA; + s16 sp8; + + temp_r31 = arg0->data; + temp_r25 = arg0->model[0]; + var_r28 = temp_r31->unk18; + temp_r31->unk50 = temp_r31->unk2C; + temp_r30 = temp_r31->unk10; + temp_r29 = temp_r31->unk12; + spA = temp_r31->unk14; + sp8 = temp_r31->unk16; + switch (temp_r31->unk18) { + case 0: + case 1: + case 2: + temp_r31->unk1C = 0.14f * sqrtf(temp_r30 * temp_r30 + temp_r29 * temp_r29); + if (temp_r31->unk1C > 0.1f) { + if (temp_r31->unk1C >= 6.0f) { + var_r28 = 2; + var_r27 = 1; + } else { + var_r28 = 1; + var_r27 = 1; + } + var_f29 = atan2d(temp_r30, -temp_r29); + temp_r31->unk3C = fn_1_457C(temp_r31->unk3C, var_f29, 0.5f); + temp_r31->unk20 = temp_r31->unk3C; + temp_r31->unk24 += 1.0f; + if (temp_r31->unk24 >= 0.5f * temp_r31->unk28) { + temp_r31->unk24 -= 0.5f * temp_r31->unk28; + } + temp_r31->unk1C *= 1.0 + 0.25 * cosd(90.0f * (temp_r31->unk24 / (0.5f * temp_r31->unk28))); + } else { + temp_r31->unk24 = 0.0f; + temp_r31->unk1C = 0.0f; + var_r28 = 0; + var_r27 = 1; + } + temp_r31->unk48 = -2.4333334f; + break; + case 3: + var_r27 = 0; + if (Hu3DData[temp_r25].unk_0C == -1 && CharModelMotionEndCheck(temp_r31->unk01)) { + temp_r31->unk48 += -2.4333334f; + } else { + temp_r31->unk48 = 0.0f; + } + if (temp_r31->unk0C != 0) { + if (temp_r31->unk0D != 0) { + temp_r31->unk48 = 0.0f; + temp_r31->unk0D = 0; + var_r28 = 5; + var_r27 = 0; + } else { + temp_r31->unk48 *= -0.1f; + temp_r31->unk0C = 0; + var_r28 = 4; + var_r27 = 0; + } + } + break; + case 4: + temp_r31->unk48 += -2.4333334f; + if (temp_r31->unk0C != 0 && CharModelMotionEndCheck(temp_r31->unk01)) { + var_r28 = 5; + var_r27 = 0; + } + break; + case 5: + if (CharModelMotionEndCheck(temp_r31->unk01)) { + var_r28 = 0; + var_r27 = 1; + } + break; + case 6: + case 7: + var_r27 = 0; + temp_r31->unk48 = -2.4333334f; + break; + } + if (temp_r31->unk07 & 4) { + if (temp_r31->unk0A & 2) { + Hu3DModelAttrSet(temp_r25, 1); + } else { + Hu3DModelAttrReset(temp_r25, 1); + } + if (--temp_r31->unk0A == 0) { + temp_r31->unk07 &= ~4; + } + } + temp_r31->unk44 = temp_r31->unk1C * sind(temp_r31->unk20); + temp_r31->unk4C = temp_r31->unk1C * cosd(temp_r31->unk20); + temp_r31->unk2C.x += temp_r31->unk44; + if (temp_r31->unk0C == 0) { + temp_r31->unk2C.y += temp_r31->unk48; + } + temp_r31->unk2C.z += temp_r31->unk4C; + if (var_r28 != temp_r31->unk1A) { + temp_r31->unk1A = var_r28; + temp_r31->unk18 = var_r28; + CharModelMotionShiftSet(temp_r31->unk01, arg0->motion[temp_r31->unk18], 0.0f, 8.0f, var_r27); + temp_r31->unk28 = CharModelMotionMaxTimeGet(temp_r31->unk01); + } + omSetTra(arg0, temp_r31->unk2C.x, temp_r31->unk2C.y, temp_r31->unk2C.z); + omSetRot(arg0, temp_r31->unk38, temp_r31->unk3C, temp_r31->unk40); +} + +static void fn_1_3800(void) { + s32 var_r29; + s32 i; + Unkm403Struct_01 *temp_r30; + + var_r29 = 0; + for (i = 0; i < 4; i++) { + temp_r30 = lbl_1_bss_34[i]->data; + if (temp_r30->unk07 != 0) { + temp_r30->unk0E = 0; + } + } + while (fn_1_3894() != 0 && var_r29 < 50) { + var_r29++; + } +} + +static s32 fn_1_3894(void) { + Vec sp14[4]; + Vec sp8; + float var_f31; + float var_f30; + s32 var_r26; + omObjData* temp_r25; + Unkm403Struct_01 *temp_r28; + Unkm403Struct_01 *temp_r27; + Unkm403Struct_01 *temp_r31; + s32 i; + s32 j; + + var_r26 = 0; + for (i = 0; i < 4; i++) { + sp14[i].x = sp14[i].y = sp14[i].z = 0.0f; + } + for (i = 0; i < 3; i++) { + temp_r28 = lbl_1_bss_34[i]->data; + if (temp_r28->unk07 != 0) { + for (j = i + 1; j < 4; j++) { + temp_r27 = lbl_1_bss_34[j]->data; + if (temp_r27->unk07 != 0) { + PSVECSubtract(&temp_r28->unk2C, &temp_r27->unk2C, &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[i], &sp8, &sp14[i]); + PSVECSubtract(&sp14[j], &sp8, &sp14[j]); + temp_r28->unk0E++; + temp_r27->unk0E++; + var_r26++; + } + } + } + } + } + for (i = 0; i < 4; i++) { + temp_r25 = lbl_1_bss_34[i]; + temp_r31 = temp_r25->data; + if (temp_r31->unk07 != 0) { + PSVECAdd(&temp_r31->unk2C, &sp14[i], &temp_r31->unk2C); + if (temp_r31->unk2C.x > 660.0f) { + temp_r31->unk2C.x = 660.0f; + } + if (temp_r31->unk2C.x < -660.0f) { + temp_r31->unk2C.x = -660.0f; + } + if (temp_r31->unk2C.z > 360.0f) { + temp_r31->unk2C.z = 360.0f; + } + if (temp_r31->unk2C.z < -360.0f) { + temp_r31->unk2C.z = -360.0f; + } + omSetTra(temp_r25, temp_r31->unk2C.x, temp_r31->unk2C.y, temp_r31->unk2C.z); + } + } + return var_r26; +} + +static void fn_1_3B80(omObjData *arg0) { + s32 sp8[4]; + s32 var_r30; + s32 i; + + if (lbl_1_bss_30 < 6) { + return; + } + if (fn_1_8264() != 0) { + for (i = 0; i < 4; i++) { + fn_1_3E4C(lbl_1_bss_34[i]); + } + } else { + for (i = 0, var_r30 = 0; i < 4; i++) { + ((Unkm403Struct_01*) lbl_1_bss_34[i]->data)->unk9C = 0; + if (((Unkm403Struct_01*) lbl_1_bss_34[i]->data)->unk07 != 0) { + sp8[var_r30++] = i; + } + } + if (var_r30 != 0) { + i = sp8[(s32) (var_r30 * (fn_1_4528() / 65536.0f))]; + ((Unkm403Struct_01*) lbl_1_bss_34[i]->data)->unk9C = 1; + } + } + fn_1_3800(); +} + +static void fn_1_3D6C(Vec *arg0, Vec *arg1) { + Vec sp18[6]; + Vec spC; + float var_f31; + float var_f30; + s32 temp_r30; + s32 i; + + temp_r30 = fn_1_8470(sp18); + var_f31 = 2000.0f; + for (i = 0; i < temp_r30; i++) { + PSVECSubtract(&sp18[i], arg0, &spC); + var_f30 = PSVECMag(&spC); + if (var_f30 >= var_f31) { + continue; + } + var_f31 = var_f30; + *arg1 = sp18[i]; + } +} + +static void fn_1_3E4C(omObjData *arg0) { + Vec sp8; + float var_f30; + float var_f31; + Unkm403Struct_01 *temp_r31; + + temp_r31 = arg0->data; + if (temp_r31->unk07 != 0) { + var_f30 = fn_1_80D4(&temp_r31->unk2C, lbl_1_data_114[temp_r31->unk01]) - 10.0f; + if (var_f30 < 0.0f) { + var_f30 = 0.0f; + } + if (!(temp_r31->unk07 & 2)) { + var_f31 = 1.0f; + if (var_f30 < lbl_1_data_134[temp_r31->unk01]) { + if (fn_1_86A0(&temp_r31->unk2C, &sp8) != 0) { + temp_r31->unk2C.x = sp8.x; + temp_r31->unk2C.z = sp8.z; + } else { + if (fn_1_7F78(temp_r31->unk2C.x, temp_r31->unk2C.z) - 10.0f < 100.0f) { + temp_r31->unk07 |= 2; + } + var_f31 = var_f30 / lbl_1_data_134[temp_r31->unk01]; + } + } + } else { + var_f31 = var_f30 / lbl_1_data_134[temp_r31->unk01]; + } + if (arg0->scale.y < var_f31) { + var_f31 = arg0->scale.y + 0.2f * (var_f31 - arg0->scale.y); + } + arg0->scale.y = var_f31; + } +} + +static s16 fn_1_400C(s32 arg0, s16 arg1, ParticleHook arg2) { + AnimData *var_r29; + ParticleData *temp_r31; + s32 temp_r30; + + var_r29 = HuSprAnimRead(HuDataReadNum(arg0, MEMORY_DEFAULT_NUM)); + temp_r30 = Hu3DParticleCreate(var_r29, arg1); + Hu3DParticleHookSet(temp_r30, arg2); + temp_r31 = Hu3DData[temp_r30].unk_120; + temp_r31->unk_2E = temp_r30; + temp_r31->unk_00 = temp_r31->unk_02 = 0; + return temp_r30; +} + +static void fn_1_40A8(ModelData *model, ParticleData *particle, Mtx matrix) { + float temp_f31; + float temp_f30; + float temp_f29; + HsfanimStruct01 *var_r31; + s16 sp8; + s32 i; + + sp8 = 0; + switch (particle->unk_00) { + case 0: + temp_f29 = 360.0f / particle->unk_30; + var_r31 = particle->unk_48; + for (i = 0; i < particle->unk_30; i++, var_r31++) { + var_r31->unk08.x = sind(temp_f29 * i) * (1.0f + 6.0f * ((fn_1_4528() - 0x8000) / 32768.0f) * 0.1f); + var_r31->unk08.y = 0.0f; + var_r31->unk08.z = cosd(temp_f29 * i) * (1.0f + 6.0f * ((fn_1_4528() - 0x8000) / 32768.0f) * 0.1f); + var_r31->unk34.x = 0.0f; + var_r31->unk34.y = 0.0f; + var_r31->unk34.z = 0.0f; + } + particle->unk_02 = 30; + particle->unk_00++; + /* fallthrough */ + case 1: + particle->unk_02--; + temp_f31 = (30.0f - particle->unk_02) / 30.0f; + temp_f30 = particle->unk_02 / 30.0f; + var_r31 = particle->unk_48; + for (i = 0; i < particle->unk_30; i++, var_r31++) { + var_r31->unk34.x += 5.0f * temp_f30 * var_r31->unk08.x; + var_r31->unk34.y = 20.0f; + var_r31->unk34.z += 5.0f * temp_f30 * var_r31->unk08.z; + var_r31->unk2C = 20.0f + 60.0f * temp_f31; + var_r31->unk40.r = var_r31->unk40.g = var_r31->unk40.b = 0xFF; + var_r31->unk40.a = 64.0f * (1.0f - temp_f31 * temp_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)); +} + +static s32 fn_1_4528(void) { + lbl_1_data_154 *= 0x41C64E6D; + lbl_1_data_154 += 0x3039; + return lbl_1_data_154 >> 16; +} + +static float fn_1_457C(float arg0, float arg1, float arg2) { + float var_f31; + + if (arg0 > 180.0f) { + arg0 -= 360.0f; + } else if (arg0 <= -180.0f) { + arg0 += 360.0f; + } + if (arg1 > 180.0f) { + arg1 -= 360.0f; + } else if (arg1 <= -180.0f) { + arg1 += 360.0f; + } + var_f31 = arg0 - arg1; + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } else if (var_f31 <= -180.0f) { + var_f31 += 360.0f; + } + arg0 = arg1 + var_f31 * arg2; + if (arg0 > 180.0f) { + arg0 -= 360.0f; + } else if (arg0 <= -180.0f) { + arg0 += 360.0f; + } + return arg0; +} + +static void fn_1_46E4(Mtx arg0, float arg1, float arg2, float arg3) { + Mtx sp38; + Mtx sp8; + + if (arg3 != 0.0f) { + PSMTXRotRad(arg0, 'Z', MTXDegToRad(arg3)); + } else { + PSMTXIdentity(arg0); + } + if (arg1 != 0.0f) { + PSMTXRotRad(sp38, 'X', MTXDegToRad(arg1)); + PSMTXConcat(sp38, arg0, arg0); + } + if (arg2 != 0.0f) { + PSMTXRotRad(sp8, 'Y', MTXDegToRad(arg2)); + PSMTXConcat(sp8, arg0, arg0); + } +} + +static void fn_1_4804(float *arg0, float *arg1) { + float temp_f29; + float var_f28; + double var_f30; + + arg1[0] = atan2d(arg0[10], arg0[6]); + arg1[2] = atan2d(arg0[0], arg0[1]); + temp_f29 = -arg0[2]; + if (1.0 - temp_f29 * temp_f29 < 0.0) { + var_f30 = -(1.0 - temp_f29 * temp_f29); + } else { + var_f30 = 1.0 - temp_f29 * temp_f29; + } + var_f28 = sqrtf(var_f30); + if (arg1[0] > 90.0f && arg1[0] < 270.0f && arg1[2] > 90.0f && arg1[2] < 270.0f) { + arg1[0] = fmod(180.0f + arg1[0], 360.0); + arg1[2] = fmod(180.0f + arg1[2], 360.0); + var_f28 = -var_f28; + } + arg1[1] = atan2d(var_f28, temp_f29); +} + +static float fn_1_4B10(float arg0, float arg1, float arg2, float arg3) { + float temp_f31; + float var_f30; + + temp_f31 = 1.0 - arg0; + var_f30 = temp_f31 * temp_f31 * arg1 + temp_f31 * arg0 * arg2 * 2.0 + arg0 * arg0 * arg3; + return var_f30; +} + +static void fn_1_4B88(float *arg0, float *arg1, float *arg2, float *arg3, float arg4) { + s32 i; + + for (i = 0; i < 3; i++) { + *(arg3++) = fn_1_4B10(arg4, *(arg0++), *(arg1++), *(arg2++)); + } +} + +static float fn_1_4CA4(float arg0, float arg1, float arg2, float arg3) { + float var_f31 = 2.0 * ((arg0 - 1.0) * arg1 + (1.0 - 2.0 * arg0) * arg2 + arg0 * arg3); + return var_f31; +} + +static void fn_1_4D1C(float *arg0, float *arg1, float *arg2, float *arg3, float arg4) { + float spC[3]; + float var_f29; + s32 i; + + for (i = 0; i < 3; i++) { + spC[i] = fn_1_4CA4(arg4, *(arg0++), *(arg1++), *(arg2++)); + } + var_f29 = VECMagPoint(spC[0], spC[1], spC[2]); + if (var_f29) { + var_f29 = 1.0 / var_f29; + for (i = 0; i < 3; i++) { + *(arg3++) = var_f29 * spC[i]; + } + } else { + *(arg3++) = 0.0f; + *(arg3++) = 0.0f; + *(arg3++) = 1.0f; + } +} + +static void fn_1_4FF4(float *arg0, float *arg1, float *arg2, s32 arg3) { + float sp48[16]; + float sp8[16]; + double temp_f31; + s32 i; + + arg2[0] = 0.0f; + arg2[arg3 - 1] = 0.0f; + for (i = 0; i < arg3 - 1; i++) { + sp48[i] = arg0[i + 1] - arg0[i]; + if (sp48[i] == 0.0f) { + sp8[i + 1] = 0.0f; + } else { + sp8[i + 1] = (arg1[i + 1] - arg1[i]) / sp48[i]; + } + } + arg2[1] = sp8[2] - sp8[1]; + sp8[1] = 2.0f * (arg0[2] - arg0[0]); + for (i = 1; i < arg3 - 2; i++) { + temp_f31 = sp48[i] / sp8[i]; + arg2[i + 1] = sp8[i + 2] - sp8[i + 1] - temp_f31 * arg2[i]; + sp8[i + 1] = 2.0f * (arg0[i + 2] - arg0[i]) - temp_f31 * sp48[i]; + } + arg2[arg3 - 2] -= sp48[arg3 - 2] * arg2[arg3 - 1]; + for (i = arg3 - 2; i > 0; i--) { + if (sp8[i] == 0.0f) { + arg2[i] = 0.0f; + } else { + arg2[i] = (arg2[i] - sp48[i] * arg2[i + 1]) / sp8[i]; + } + } +} + +static float fn_1_52AC(float arg0, float *arg1, float *arg2, float *arg3, s32 arg4) { + float temp_f31; + float temp_f30; + float var_f29; + s32 temp_r31; + + temp_r31 = arg0; + arg0 -= temp_r31; + temp_f31 = arg1[temp_r31 + 1] - arg1[temp_r31]; + temp_f30 = temp_f31 * arg0; + var_f29 = arg2[temp_r31] + temp_f30 * (temp_f30 * (3.0f * arg3[temp_r31] + temp_f30 * (arg3[temp_r31 + 1] - arg3[temp_r31]) / temp_f31) + ((arg2[temp_r31 + 1] - arg2[temp_r31]) / temp_f31 - temp_f31 * (2.0f * arg3[temp_r31] + arg3[temp_r31 + 1]))); + if (temp_f31 == 0.0f) { + var_f29 = arg2[temp_r31]; + } + return var_f29; +} + +static void fn_1_5400(float *arg0, Vec *arg1, float arg2[][3], s32 arg3) { + Vec sp8; + float temp_f31; + float spD4[16]; + float sp94[16]; + s32 j; + s32 i; + + arg0[0] = 0.0f; + for (i = 1; i < arg3; i++) { + PSVECSubtract(&arg1[i], &arg1[i - 1], &sp8); + arg0[i] = arg0[i - 1] + PSVECMag(&sp8); + } + for (j = 0; j < 3; j++) { + for (i = 0; i < arg3; i++) { + spD4[i] = ((float*) &arg1[i])[j]; + } + fn_1_4FF4(arg0, spD4, sp94, arg3); + for (i = 0; i < arg3; i++) { + arg2[i][j] = sp94[i]; + } + } +} + +static void fn_1_57E0(float arg0, Vec *arg1, float *arg2, Vec *arg3, float arg4[][3], s32 arg5) { + float sp48[16]; + float sp8[16]; + s32 i; + s32 j; + + for (i = 0; i < 3; i++) { + for (j = 0; j < arg5; j++) { + sp48[j] = ((float*) &arg3[j])[i]; + sp8[j] = arg4[j][i]; + } + ((float*) arg1)[i] = fn_1_52AC(arg0, arg2, sp48, sp8, arg5); + } +} + +static float fn_1_59F4(Vec *arg0) { + float var_f30; + float var_f29; + + var_f30 = arg0->x * arg0->x + arg0->y * arg0->y + arg0->z * arg0->z; + 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; +} + +static void fn_1_5B8C(Vec arg0, Vec arg1, Vec *arg2, float arg3) { + if (arg3 <= 0.0f) { + arg2->x = arg0.x; + arg2->y = arg0.y; + arg2->z = arg0.z; + arg3 = 0.0f; + } else if (arg3 >= 1.0f) { + arg2->x = arg0.x + arg1.x; + arg2->y = arg0.y + arg1.y; + arg2->z = arg0.z + arg1.z; + arg3 = 1.0f; + } else { + arg2->x = arg0.x + arg3 * arg1.x; + arg2->y = arg0.y + arg3 * arg1.y; + arg2->z = arg0.z + arg3 * arg1.z; + } +} + +static float fn_1_5C64(Vec arg0, Vec arg1, Vec arg2) { + float var_f31; + float temp_f30; + + var_f31 = arg2.x * (arg1.x - arg0.x) + arg2.y * (arg1.y - arg0.y) + arg2.z * (arg1.z - arg0.z); + temp_f30 = -(arg2.x * arg2.x + arg2.y * arg2.y + arg2.z * arg2.z); + if (temp_f30 != 0.0f) { + var_f31 /= temp_f30; + } + return var_f31; +} + +static float fn_1_5D20(Vec *arg0, Vec *arg1, Vec *arg2) { + Vec sp44; + float var_f31; + + if (arg2->x * arg2->x + arg2->y * arg2->y + arg2->z * arg2->z == 0.0f) { + return (arg0->x - arg1->x) * (arg0->x - arg1->x) + (arg0->y - arg1->y) * (arg0->y - arg1->y) + (arg0->z - arg1->z) * (arg0->z - arg1->z); + } + var_f31 = fn_1_5C64(*arg0, *arg1, *arg2); + fn_1_5B8C(*arg1, *arg2, &sp44, var_f31); + return (arg0->x - sp44.x) * (arg0->x - sp44.x) + (arg0->y - sp44.y) * (arg0->y - sp44.y) + (arg0->z - sp44.z) * (arg0->z - sp44.z); +} + +static float fn_1_605C(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3, Vec *arg4) { + float var_f27; + + if (arg2->x * arg2->x + arg2->y * arg2->y + arg2->z * arg2->z == 0.0f) { + return (arg0->x - arg1->x) * (arg0->x - arg1->x) + (arg0->y - arg1->y) * (arg0->y - arg1->y) + (arg0->z - arg1->z) * (arg0->z - arg1->z); + } + var_f27 = fn_1_5C64(*arg0, *arg1, *arg2); + fn_1_5B8C(*arg1, *arg2, arg3, var_f27); + arg4->x = arg3->x - arg0->x; + arg4->y = arg3->y - arg0->y; + arg4->z = arg3->z - arg0->z; + return fn_1_59F4(arg4); +} diff --git a/src/REL/m403Dll/scene.c b/src/REL/m403Dll/scene.c new file mode 100755 index 00000000..71a7f6cf --- /dev/null +++ b/src/REL/m403Dll/scene.c @@ -0,0 +1,1024 @@ +#include "REL/m403Dll.h" +#include "game/audio.h" +#include "game/frand.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/object.h" + +#include "ext_math.h" + +typedef struct { + struct { + u8 unk00_field0 : 1; + }; + char unk01[3]; + s32 unk04; + float unk08; + s32 unk0C[6]; + s32 unk24[12]; +} UnkBss9CData; // Size 0x54 + +static void fn_1_678C(omObjData *arg0); +static void fn_1_6810(omObjData *arg0); +static void fn_1_6814(omObjData *arg0); +static void fn_1_6980(omObjData *arg0); +static void fn_1_6C98(omObjData *arg0); +static void fn_1_6ED8(omObjData *arg0); +static void fn_1_6FE8(omObjData *arg0); +static void fn_1_73E8(omObjData *arg0); +static void fn_1_799C(void); +static void fn_1_7A98(s16 arg0); +static s32 fn_1_7B20(float arg0, float arg1); +static void fn_1_7BD4(s32 arg0, Vec *arg1); +static s32 fn_1_7C20(UnkBss9CData *arg0, s32 arg1); +static s32 fn_1_7D04(float arg0, float arg1, Vec *arg2); +static s32 fn_1_8254(void); +static s32 fn_1_8274(UnkBss9CData *arg0, s32 *arg1); + +static omObjData *lbl_1_bss_B4; +static omObjData *lbl_1_bss_B0; +static omObjData *lbl_1_bss_9C[5]; +static s32 lbl_1_bss_98; +static s32 lbl_1_bss_94; +static s32 lbl_1_bss_90; +static s32 lbl_1_bss_8C; +static s32 lbl_1_bss_88; +static s32 lbl_1_bss_84; +static float lbl_1_bss_80; +static s32 lbl_1_bss_7C; +static s32 lbl_1_bss_78; +static s32 lbl_1_bss_74; +static s32 lbl_1_bss_70; +static s32 lbl_1_bss_58[6]; + +static Vec lbl_1_data_158[] = { + { 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 } +}; + +static Vec lbl_1_data_218[] = { + { 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 } +}; + +static Vec lbl_1_data_2D8[] = { + { 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 } +}; + +static Vec lbl_1_data_350[] = { + { 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 } +}; + +static Vec lbl_1_data_3C8[] = { + { 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 } +}; + +static Vec lbl_1_data_488[] = { + { 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 } +}; + +static Vec lbl_1_data_548[] = { + { 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 } +}; + +static Vec lbl_1_data_5C0[] = { + { 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 } +}; + +static Vec lbl_1_data_638[] = { + { 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 } +}; + +static Vec lbl_1_data_740[] = { + { 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 } +}; + +static Vec lbl_1_data_848[] = { + { 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 } +}; + +static Vec lbl_1_data_950[] = { + { 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 } +}; + +static s32 lbl_1_data_A58[] = { + DATA_MAKE_NUM(DATADIR_M403, 4), + DATA_MAKE_NUM(DATADIR_M403, 5), + DATA_MAKE_NUM(DATADIR_M403, 6), + DATA_MAKE_NUM(DATADIR_M403, 9), + DATA_MAKE_NUM(DATADIR_M403, 12), + DATA_MAKE_NUM(DATADIR_M403, 15), + DATA_MAKE_NUM(DATADIR_M403, 7), + DATA_MAKE_NUM(DATADIR_M403, 8), + DATA_MAKE_NUM(DATADIR_M403, 10), + DATA_MAKE_NUM(DATADIR_M403, 11), + DATA_MAKE_NUM(DATADIR_M403, 13), + DATA_MAKE_NUM(DATADIR_M403, 14) +}; + +static Vec lbl_1_data_A88[] = { + { -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 } +}; + +static s32 lbl_1_data_AD0[] = { 6, 8, 10 }; +static s32 lbl_1_data_ADC[] = { 7, 9, 11 }; +static s32 lbl_1_data_AE8[] = { 1, 2, 3, 4, 5 }; + +static Vec *lbl_1_data_AFC[] = { + lbl_1_data_3C8, + lbl_1_data_158, + lbl_1_data_548, + lbl_1_data_2D8, + lbl_1_data_638, + lbl_1_data_848 +}; + +static s32 lbl_1_data_B14[] = { + 16, 16, 10, 10, 22, 22 +}; + +static Vec lbl_1_data_B2C[] = { + { 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 } +}; + +static Vec *lbl_1_data_B74[][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 } +}; + +static s32 lbl_1_data_BA4[] = { + 16, 16, 10, 10, 22, 22 +}; + +void fn_1_650C(Process *arg0) { + Vec sp20; + Vec sp14; + Vec sp8; + s32 i; + + 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_B4 = omAddObjEx(arg0, 10, 2, 0, -1, fn_1_678C); + lbl_1_bss_B0 = omAddObjEx(arg0, 12, 4, 0, -1, fn_1_6814); + for (i = 0; i < 5; i++) { + lbl_1_bss_9C[i] = omAddObjEx(arg0, 14, 7, 0, -1, fn_1_6C98); + } + Hu3DShadowCreate(30.0f, 20.0f, 25000.0f); + Hu3DShadowTPLvlSet(0.65f); + Hu3DShadowPosSet(&sp20, &sp14, &sp8); + lbl_1_bss_98 = 0; + lbl_1_bss_94 = lbl_1_bss_90 = 2; + lbl_1_bss_84 = 0; + lbl_1_bss_88 = 0; + lbl_1_bss_80 = 0.75f; + lbl_1_bss_74 = 3; + lbl_1_bss_70 = 0; + lbl_1_bss_7C = 0; + lbl_1_bss_78 = 0; + memset(lbl_1_bss_58, 0, sizeof(lbl_1_bss_58)); +} + +void fn_1_676C(void) { + fn_1_799C(); +} + +static void fn_1_678C(omObjData *arg0) { + arg0->stat |= 0x100; + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M403, 16)); + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M403, 17)); + arg0->func = fn_1_6810; +} + +static void fn_1_6810(omObjData *arg0) { +} + +static void fn_1_6814(omObjData *arg0) { + arg0->stat |= 0x100; + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M403, 0)); + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M403, 3)); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M403, 1)); + arg0->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M403, 2)); + Hu3DMotionSpeedSet(arg0->model[2], 0.0f); + Hu3DModelShadowSet(arg0->model[1]); + Hu3DModelPosSet(arg0->model[1], 0.0f, 0.0f, -500.0f); + Hu3DData[arg0->model[3]].unk_94 = 0.0f; + Hu3DData[arg0->model[3]].unk_98 = 2.0f; + arg0->work[3] = 30; + arg0->func = fn_1_6980; +} + +static void fn_1_6980(omObjData *arg0) { + ModelData *var_r30; + UnkBss9CData *var_r29; + + if (lbl_1_bss_7C != 0) { + if (lbl_1_bss_78 == 0) { + if (arg0->work[0] < 60.0f) { + arg0->work[0]++; + var_r30 = &Hu3DData[arg0->model[1]]; + var_r30->rot.x = -120.0f * arg0->work[0] / 60.0f; + } else { + lbl_1_bss_78 ^= 1; + lbl_1_bss_7C = 0; + } + } else if (arg0->work[0] != 0) { + arg0->work[0]--; + var_r30 = &Hu3DData[arg0->model[1]]; + var_r30->rot.x = -120.0f * arg0->work[0] / 60.0f; + } else { + lbl_1_bss_78 ^= 1; + lbl_1_bss_7C = 0; + } + } + var_r29 = lbl_1_bss_9C[lbl_1_bss_94]->data; + if (lbl_1_bss_8C != 0) { + lbl_1_bss_8C = 0; + lbl_1_bss_88 = 1; + } + if (lbl_1_bss_94 != lbl_1_bss_90) { + lbl_1_bss_88 = 0; + lbl_1_bss_84 = 0; + } + lbl_1_bss_90 = lbl_1_bss_94; + if (var_r29->unk00_field0 != 0) { + lbl_1_bss_94 = (lbl_1_bss_94 + 1) % 5; + lbl_1_bss_84 = 1; + } + if (arg0->work[3] != 0) { + if (--arg0->work[3] == 0) { + HuAudFXPlay(0x521); + } + } +} + +static void fn_1_6C98(omObjData *arg0) { + UnkBss9CData *var_r29; + s32 i; + + var_r29 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*var_r29), MEMORY_DEFAULT_NUM); + arg0->data = var_r29; + memset(arg0->data, 0, sizeof(*var_r29)); + for (i = 0; i < 12; i++) { + var_r29->unk24[i] = -1; + } + for (i = 0; i < 12U; i++) { + var_r29->unk24[i] = Hu3DModelCreateFile(lbl_1_data_A58[i]); + Hu3DModelAttrSet(var_r29->unk24[i], 1); + } + arg0->model[0] = var_r29->unk24[0]; + Hu3DModelAttrReset(arg0->model[0], 1); + var_r29->unk00_field0 = 0; + var_r29->unk04 = 4 - lbl_1_bss_98; + fn_1_6FE8(arg0); + arg0->trans.y = 5.0f; + arg0->trans.z = -500.0f; + switch (var_r29->unk04) { + case 0: + case 1: + break; + case 2: + for (i = 0; i < 7; i++) { + Hu3DModelShadowSet(arg0->model[i]); + } + break; + case 3: + for (i = 0; i < 7; i++) { + Hu3DModelShadowMapSet(arg0->model[i]); + } + arg0->trans.y = 2.5f; + break; + case 4: + for (i = 0; i < 7; i++) { + Hu3DModelShadowMapSet(arg0->model[i]); + } + arg0->trans.y = 0.0f; + break; + } + fn_1_6ED8(arg0); + lbl_1_bss_98++; + arg0->func = fn_1_73E8; +} + +static void fn_1_6ED8(omObjData *arg0) { + Mtx sp38; + Mtx sp8; + s32 i; + + PSMTXTrans(sp38, arg0->trans.x, arg0->trans.y, arg0->trans.z); + mtxRot(sp8, arg0->rot.x, arg0->rot.y, arg0->rot.z); + PSMTXConcat(sp38, sp8, sp38); + for (i = 0; i < 6; i++) { + PSMTXTrans(sp8, lbl_1_data_A88[i].x, lbl_1_data_A88[i].y, lbl_1_data_A88[i].z); + PSMTXConcat(sp38, sp8, sp8); + Hu3DModelPosSet(arg0->model[i + 1], sp8[0][3], sp8[1][3], sp8[2][3]); + Hu3DModelRotSet(arg0->model[i + 1], arg0->rot.x, arg0->rot.y, arg0->rot.z); + } +} + +static void fn_1_6FE8(omObjData *arg0) { + UnkBss9CData *temp_r30; + s32 temp_r29; + s32 temp_r28; + s32 var_r24; + s32 var_r25; + s32 var_r26; + s32 sp8[6]; + s32 i; + + temp_r30 = arg0->data; + for (i = 0; i < 100; i++) { + temp_r29 = (frand8() * 3) >> 8; + temp_r28 = (frand8() * 3) >> 8; + var_r26 = lbl_1_data_AD0[temp_r29]; + lbl_1_data_AD0[temp_r29] = lbl_1_data_AD0[temp_r28]; + lbl_1_data_AD0[temp_r28] = var_r26; + temp_r29 = (frand8() * 3) >> 8; + temp_r28 = (frand8() * 3) >> 8; + var_r26 = lbl_1_data_ADC[temp_r29]; + lbl_1_data_ADC[temp_r29] = lbl_1_data_ADC[temp_r28]; + lbl_1_data_ADC[temp_r28] = var_r26; + temp_r29 = (frand8() * 5) >> 8; + temp_r28 = (frand8() * 5) >> 8; + var_r26 = lbl_1_data_AE8[temp_r29]; + lbl_1_data_AE8[temp_r29] = lbl_1_data_AE8[temp_r28]; + lbl_1_data_AE8[temp_r28] = var_r26; + } + var_r25 = 0; + for (i = 0; i < 6; i++) { + if (lbl_1_bss_58[i] < 6) { + sp8[var_r25++] = i; + } + } + for (i = 0; i < 100; i++) { + temp_r29 = (var_r25 * frand8()) >> 8; + temp_r28 = (var_r25 * frand8()) >> 8; + var_r26 = sp8[temp_r29]; + sp8[temp_r29] = sp8[temp_r28]; + sp8[temp_r28] = var_r26; + } + for (i = 0; i < 6; i++) { + temp_r30->unk0C[i] = 0; + } + for (i = 0; i < lbl_1_bss_70; i++) { + temp_r30->unk0C[sp8[i]] = lbl_1_data_ADC[i]; + } + for (; i < lbl_1_bss_74; i++) { + temp_r30->unk0C[sp8[i]] = lbl_1_data_AD0[i]; + } + var_r24 = 0; + for (i = 0; i < 6; i++) { + if (temp_r30->unk0C[i] == 0) { + temp_r30->unk0C[i] = lbl_1_data_AE8[var_r24++]; + } + } + memcpy(lbl_1_bss_58, &temp_r30->unk0C, sizeof(temp_r30->unk0C)); + for (i = 0; i < 6; i++) { + if (arg0->model[i + 1] >= 0) { + Hu3DModelAttrSet(arg0->model[i + 1], 1); + } + } + for (i = 0; i < 6; i++) { + arg0->model[i + 1] = temp_r30->unk24[temp_r30->unk0C[i]]; + Hu3DModelAttrReset(arg0->model[i + 1], 1); + } +} + +static void fn_1_73E8(omObjData *arg0) { + UnkBss9CData *temp_r30; + ModelData *var_r27; + s32 i; + + temp_r30 = arg0->data; + if (lbl_1_bss_88 == 0) { + if (lbl_1_bss_7C != 0 && temp_r30->unk04 < 3) { + var_r27 = &Hu3DData[lbl_1_bss_B0->model[1]]; + arg0->rot.x = var_r27->rot.x; + switch (temp_r30->unk04) { + case 0: + arg0->trans.z = -500.0f + 2.5f * lbl_1_bss_B0->work[0] / 60.0f; + break; + case 1: + arg0->trans.z = -500.0f + 5.0f * lbl_1_bss_B0->work[0] / 60.0f; + break; + case 2: + arg0->trans.z = -500.0f + 7.5f * lbl_1_bss_B0->work[0] / 60.0f; + break; + } + } else { + return; + } + } else { + switch (temp_r30->unk04) { + case 0: + if (lbl_1_bss_84 != 0) { + arg0->trans.z = -495.0f; + temp_r30->unk04++; + } + break; + case 1: + if (lbl_1_bss_84 != 0) { + arg0->trans.z = -492.5f; + temp_r30->unk00_field0 = 0; + temp_r30->unk04++; + temp_r30->unk08 = 0.0f; + for (i = 0; i < 7; i++) { + Hu3DModelShadowSet(arg0->model[i]); + } + } + break; + case 2: + if (lbl_1_bss_84 != 0) { + temp_r30->unk04++; + arg0->trans.y = 2.5f; + for (i = 0; i < 7; i++) { + Hu3DModelShadowReset(arg0->model[i]); + Hu3DModelShadowMapSet(arg0->model[i]); + } + } else { + temp_r30->unk08 += lbl_1_bss_80; + if (temp_r30->unk08 > 90.0f) { + temp_r30->unk00_field0 = 1; + temp_r30->unk08 = 90.0f; + HuAudFXPlay(0x522); + } + arg0->rot.x = -120.0 * cosd(temp_r30->unk08); + arg0->trans.z = 7.5 * cosd(temp_r30->unk08) + -500.0; + } + break; + case 3: + if (lbl_1_bss_84 != 0) { + temp_r30->unk04++; + arg0->trans.y = 0.0f; + } + break; + case 4: + if (lbl_1_bss_84 != 0) { + temp_r30->unk04 = 0; + arg0->trans.y = 5.0f; + arg0->trans.z = -497.5f; + arg0->rot.x = -120.0f; + for (i = 0; i < 7; i++) { + fn_1_7A98(arg0->model[i]); + } + fn_1_6FE8(arg0); + } + break; + } + } + fn_1_6ED8(arg0); +} + +static void fn_1_799C(void) { + omObjData* temp_r30; + UnkBss9CData *temp_r29; + s32 i; + s32 j; + + for (i = 0; i < 5; i++) { + temp_r30 = lbl_1_bss_9C[i]; + temp_r29 = temp_r30->data; + if (temp_r29 != NULL) { + for (j = 0; j < 12; j++) { + if (temp_r29->unk24[j] >= 0) { + Hu3DModelKill(temp_r29->unk24[j]); + } + } + HuMemDirectFree(temp_r29); + lbl_1_bss_9C[i]->data = NULL; + } + for (i = 0; i < temp_r30->mdlcnt; i++) { + temp_r30->model[i] = -1; + } + } +} + +static void fn_1_7A98(s16 arg0) { + s16 i; + HsfData *temp_r31; + HsfObject *var_r28; + HsfObject *var_r30; + HsfConstData *temp_r27; + + temp_r31 = Hu3DData[arg0].hsfData; + var_r28 = temp_r31->object; + for (i = 0; i < temp_r31->objectCnt; i++, var_r28++) { + var_r30 = var_r28; + if (var_r30->constData) { + temp_r27 = var_r30->constData; + temp_r27->flags &= ~8; + } + } +} + +static s32 fn_1_7B20(float arg0, float arg1) { + s32 var_r31; + s32 var_r30; + + var_r31 = (arg0 + 600.0f) / 400.0f; + var_r30 = (arg1 + 400.0f) / 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; +} + +static void fn_1_7BD4(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; +} + +static s32 fn_1_7C20(UnkBss9CData *arg0, s32 arg1) { + return arg0->unk0C[arg1]; +} + +void fn_1_7C30(float arg0) { + lbl_1_bss_8C = 1; + lbl_1_bss_80 = arg0; +} + +void fn_1_7C50(s32 arg0) { + lbl_1_bss_74 = arg0; +} + +void fn_1_7C60(void) { + float var_f30; + + lbl_1_bss_7C = 1; + var_f30 = (lbl_1_bss_78 == 0) ? 1.6666666f : -1.6666666f; + Hu3DMotionSpeedSet(lbl_1_bss_B0->model[2], var_f30); + HuAudFXPlay(0x524); +} + +static s32 fn_1_7D04(float arg0, float arg1, Vec *arg2) { + Mtx sp4C; + Mtx sp1C; + Vec sp10; + Vec *var_r30; + s32 temp_r28; + s32 temp_r21; + s32 temp_r23; + omObjData *temp_r31; + UnkBss9CData *var_r22; + s32 i; + + temp_r31 = lbl_1_bss_9C[lbl_1_bss_94]; + var_r22 = temp_r31->data; + temp_r21 = fn_1_7B20(arg0, arg1); + temp_r28 = fn_1_7C20(var_r22, temp_r21); + if (temp_r28 < 6) { + return 0; + } + temp_r28 -= 6; + fn_1_7BD4(temp_r21, &sp10); + sp10 = lbl_1_data_A88[temp_r21]; + PSMTXTrans(sp4C, temp_r31->trans.x, temp_r31->trans.y, temp_r31->trans.z); + mtxRot(sp1C, temp_r31->rot.x, temp_r31->rot.y, temp_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[temp_r28]; + temp_r23 = lbl_1_data_B14[temp_r28]; + for (i = 0; i < temp_r23; i++) { + PSMTXTrans(sp1C, var_r30->x, var_r30->y, var_r30->z); + PSMTXConcat(sp4C, sp1C, sp1C); + arg2->x = sp1C[0][3]; + arg2->y = sp1C[1][3]; + arg2->z = sp1C[2][3]; + arg2++; + var_r30++; + } + return temp_r23; +} + +float fn_1_7F78(float arg0, float arg1) { + float temp_f30; + float var_f31; + omObjData *temp_r31; + + temp_r31 = lbl_1_bss_9C[lbl_1_bss_94]; + temp_f30 = -(arg1 - temp_r31->trans.z); + if (cosd(temp_r31->rot.x) <= 0.0) { + var_f31 = 9999.0f; + } else { + var_f31 = temp_f30 * sind(temp_r31->rot.x) / cosd(temp_r31->rot.x); + if (var_f31 > 9999.0f) { + var_f31 = 9999.0f; + } + } + return var_f31; +} + +float fn_1_80D4(Vec *arg0, float arg1) { + return fn_1_7F78(0.0f, arg0->z - arg1); +} + +static s32 fn_1_8254(void) { + return lbl_1_bss_7C; +} + +s32 fn_1_8264(void) { + return lbl_1_bss_88; +} + +static s32 fn_1_8274(UnkBss9CData *arg0, s32 *arg1) { + s32 var_r30; + s32 i; + + var_r30 = 0; + for (i = 0; i < 6; i++) { + if (arg0->unk0C[i] >= 6) { + arg1[var_r30++] = i; + } + } + return var_r30; +} + +s32 fn_1_82D0(Vec *arg0) { + omObjData *temp_r31; + UnkBss9CData *temp_r28; + s32 sp8[6]; + s32 var_r26; + s32 temp_r27; + s32 i; + + temp_r31 = lbl_1_bss_9C[lbl_1_bss_94]; + temp_r28 = temp_r31->data; + var_r26 = fn_1_8274(temp_r28, sp8); + for (i = 0; i < var_r26; i++) { + fn_1_7BD4(sp8[i], arg0); + temp_r27 = fn_1_7C20(temp_r28, sp8[i]) - 6; + arg0->x += temp_r31->trans.x + lbl_1_data_B2C[temp_r27].x; + arg0->y += temp_r31->trans.y + lbl_1_data_B2C[temp_r27].y; + arg0->z += temp_r31->trans.z + lbl_1_data_B2C[temp_r27].z; + arg0++; + } + return var_r26; +} + +s32 fn_1_8470(Vec *arg0) { + Mtx sp50; + Mtx sp20; + omObjData* temp_r30; + UnkBss9CData *temp_r27; + s32 sp8[6]; + s32 temp_r26; + s32 var_r25; + s32 i; + + temp_r30 = lbl_1_bss_9C[lbl_1_bss_94]; + temp_r27 = temp_r30->data; + var_r25 = fn_1_8274(temp_r27, sp8); + PSMTXTrans(sp50, temp_r30->trans.x, temp_r30->trans.y, temp_r30->trans.z); + mtxRot(sp20, temp_r30->rot.x, temp_r30->rot.y, temp_r30->rot.z); + PSMTXConcat(sp50, sp20, sp50); + for (i = 0; i < var_r25; i++) { + fn_1_7BD4(sp8[i], arg0); + temp_r26 = fn_1_7C20(temp_r27, sp8[i]) - 6; + arg0->x += lbl_1_data_B2C[temp_r26].x; + arg0->y += lbl_1_data_B2C[temp_r26].y; + arg0->z += lbl_1_data_B2C[temp_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_r25; +} + +void fn_1_8670(s32 arg0) { + if (arg0 > lbl_1_bss_74) { + arg0 = lbl_1_bss_74; + } + lbl_1_bss_70 = arg0; +} + +s32 fn_1_86A0(Vec *arg0, Vec *arg1) { + Vec sp48; + Vec sp3C; + Vec sp30; + Vec sp24; + Vec sp18; + Vec spC; + float var_f31; + float temp_f30; + float temp_f29; + float temp_f28; + float temp_f27; + float temp_f26; + s32 temp_r17; + s32 temp_r21; + s32 temp_r24; + s32 temp_r27; + s32 var_r20; + Vec *temp_r29; + Vec *temp_r30; + omObjData *temp_r28; + UnkBss9CData *temp_r18; + s32 i; + + temp_r28 = lbl_1_bss_9C[lbl_1_bss_94]; + temp_r18 = temp_r28->data; + if (temp_r28->rot.x > 0.0f || temp_r28->rot.x <= -90.0f) { + return 0; + } + PSVECSubtract(arg0, &temp_r28->trans, &sp3C); + sp3C.z /= cosd(temp_r28->rot.x); + temp_r17 = fn_1_7B20(arg0->x, arg0->z); + temp_r24 = fn_1_7C20(temp_r18, temp_r17); + if (temp_r24 < 6) { + return 0; + } + temp_r24 -= 6; + sp48 = lbl_1_data_A88[temp_r17]; + PSVECSubtract(&sp3C, &sp48, &sp3C); + temp_r30 = lbl_1_data_B74[temp_r24][0]; + temp_r29 = lbl_1_data_B74[temp_r24][1]; + temp_r21 = lbl_1_data_BA4[temp_r24]; + for (i = 0; i < temp_r21; i++) { + temp_r27 = (i + 1) % temp_r21; + PSVECSubtract(&temp_r30[temp_r27], &temp_r30[i], &sp24); + PSVECSubtract(&sp3C, &temp_r30[temp_r27], &sp18); + PSVECCrossProduct(&sp24, &sp18, &spC); + if (spC.y < 0.0f) { + continue; + } + PSVECSubtract(&temp_r29[temp_r27], &temp_r30[temp_r27], &sp24); + PSVECSubtract(&sp3C, &temp_r29[temp_r27], &sp18); + PSVECCrossProduct(&sp24, &sp18, &spC); + if (spC.y < 0.0f) { + continue; + } + PSVECSubtract(&temp_r29[i], &temp_r29[temp_r27], &sp24); + PSVECSubtract(&sp3C, &temp_r29[i], &sp18); + PSVECCrossProduct(&sp24, &sp18, &spC); + if (spC.y < 0.0f) { + continue; + } + PSVECSubtract(&temp_r30[i], &temp_r29[i], &sp24); + PSVECSubtract(&sp3C, &temp_r30[i], &sp18); + PSVECCrossProduct(&sp24, &sp18, &spC); + if (spC.y < 0.0f) { + continue; + } + PSVECSubtract(&temp_r30[temp_r27], &temp_r30[i], &sp24); + temp_f30 = (sp3C.x * sp24.x - sp24.x * temp_r30[i].x + sp3C.y * sp24.y - sp24.y * temp_r30[i].y + sp3C.z * sp24.z - sp24.z * temp_r30[i].z) / (sp24.x * sp24.x + sp24.y * sp24.y + sp24.z * sp24.z); + sp30.x = temp_r30[i].x + temp_f30 * sp24.x; + sp30.y = temp_r30[i].y + temp_f30 * sp24.y; + sp30.z = temp_r30[i].z + temp_f30 * sp24.z; + PSVECSubtract(&sp30, &sp3C, &spC); + temp_f28 = PSVECMag(&spC); + PSVECSubtract(&temp_r29[temp_r27], &temp_r29[i], &sp18); + temp_f29 = (sp3C.x * sp18.x - sp18.x * temp_r29[i].x + sp3C.y * sp18.y - sp18.y * temp_r29[i].y + sp3C.z * sp18.z - sp18.z * temp_r29[i].z) / (sp18.x * sp18.x + sp18.y * sp18.y + sp18.z * sp18.z); + sp30.x = temp_r29[i].x + temp_f29 * sp18.x; + sp30.y = temp_r29[i].y + temp_f29 * sp18.y; + sp30.z = temp_r29[i].z + temp_f29 * sp18.z; + PSVECSubtract(&sp30, &sp3C, &spC); + temp_f27 = PSVECMag(&spC); + if (temp_f28 == 0.0f) { + var_f31 = temp_f30; + } else if (temp_f27 == 0.0f) { + var_f31 = temp_f29; + } else { + temp_f26 = 1.0f - temp_f28 / (temp_f28 + temp_f27); + var_f31 = temp_f30 * temp_f26 + temp_f29 * (1.0f - temp_f26); + } + if (var_f31 < 0.0f) { + var_f31 = 0.0f; + } else if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + sp3C.x = temp_r29[i].x + var_f31 * sp18.x; + sp3C.y = temp_r29[i].y + var_f31 * sp18.y; + sp3C.z = temp_r29[i].z + var_f31 * sp18.z; + arg1->x = temp_r28->trans.x + sp48.x + sp3C.x; + arg1->y = temp_r28->trans.y + sp48.y + sp3C.y; + arg1->z = temp_r28->trans.z + (sp48.z + sp3C.z) * cosd(temp_r28->rot.x); + return 1; + } + var_r20 = 0; + for (i = 0; i < temp_r21; i++) { + temp_r27 = (i + 1) % temp_r21; + var_f31 = (sp3C.z - temp_r30[i].z) / (temp_r30[temp_r27].z - temp_r30[i].z); + spC.x = temp_r30[i].x + var_f31 * (temp_r30[temp_r27].x - temp_r30[i].x); + if (var_f31 >= 0.0f && var_f31 < 1.0f && spC.x > sp3C.x) { + var_r20++; + } + } + if (var_r20 & 1) { + arg1->x = arg0->x; + arg1->y = arg0->y; + arg1->z = arg0->z; + return 1; + } + return 0; +} diff --git a/src/REL/m404Dll/main.c b/src/REL/m404Dll/main.c new file mode 100644 index 00000000..f86f6e35 --- /dev/null +++ b/src/REL/m404Dll/main.c @@ -0,0 +1,1446 @@ +#include "ext_math.h" +#include "game/chrman.h" +#include "game/frand.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/msm.h" +#include "game/object.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" + +typedef struct UnkM404Struct { + s16 unk_00; + s16 unk_02[6]; + s16 unk0E[10]; +} UnkM404Struct; + +typedef struct UnkM404Struct2 { + float unk_00; + float unk_04; + float unk_08; + float unk_0C; + float unk_10; + float unk_14; + float unk_18; +} UnkM404Struct2; + +typedef struct UnkM404Struct3 { + struct { + u8 unk_00_field0 : 1; + u8 unk_00_field1 : 1; + u8 unk_00_field2 : 1; + }; + s8 unk01; + s16 unk_02; + s16 unk_04; + s8 unk_06; + s8 unk_07; + u16 unk_08; + u16 unk_0A; + s16 unk_0C; + s16 unk_0E; + s16 unk_10; + s16 unk_12; + float unk_14; + s32 unk18[2]; + float unk_20; + float unk_24; + float unk_28; + s32 unk_2C; + s32 unk30[2]; + s16 unk_38; + s16 unk3A; + AnimData *unk_3C; + AnimData *unk_40; + void *unk_44; + s32 unk_48; + AnimData *unk_4C; + AnimData *unk_50; + u16 unk_54; + u16 unk_56; + u16 unk_58; + u16 unk_5A; + u16 unk_5C; + u16 unk_5E; + float unk_60; + float unk_64; + float unk_68; + u16 unk_6C; + float (*unk_70)[2]; + s32 unk_74; + s32 unk78[91]; +} UnkM404Struct3; // size 0x1E4 + +s32 lbl_1_bss_0; +float lbl_1_bss_4; +s16 lbl_1_bss_C; +Vec lbl_1_bss_10; +s32 lbl_1_bss_1C; +s32 lbl_1_bss_20; +s32 lbl_1_bss_24; +s32 lbl_1_bss_28[4]; +s32 lbl_1_bss_38[4]; +s32 lbl_1_bss_48; +omObjData *lbl_1_bss_4C; +omObjData *lbl_1_bss_50; +omObjData *lbl_1_bss_54; +omObjData *lbl_1_bss_58; + +float lbl_1_data_0[][2] = { + { -0.00026f, 0.51953f }, + { 0.02825f, 0.51563f }, + { 0.04108f, 0.5166f }, + { 0.05996f, 0.5166f }, + { 0.07878f, 0.39063f }, + { 0.08437f, 0.35254f }, + { 0.09284f, 0.2998f }, + { 0.10234f, 0.2998f }, + { 0.11283f, 0.2998f }, + { 0.1319f, 0.2959f }, + { 0.1373f, 0.40918f }, + { 0.15072f, 0.38574f }, + { 0.17747f, 0.38183f }, + { 0.19753f, 0.47168f }, + { 0.20098f, 0.74902f }, + { 0.2235f, 0.73438f }, + { 0.26048f, 0.71094f }, + { 0.27695f, 0.27344f }, + { 0.30872f, 0.29883f }, + { 0.32409f, 0.30566f }, + { 0.3291f, 0.56738f }, + { 0.34388f, 0.58594f }, + { 0.36296f, 0.58789f }, + { 0.3653f, 0.33984f }, + { 0.38112f, 0.32227f }, + { 0.38717f, 0.31543f }, + { 0.40221f, 0.4541f }, + { 0.42044f, 0.44433f }, + { 0.4375f, 0.43555f }, + { 0.46302f, 0.13281f }, + { 0.48229f, 0.13965f }, + { 0.50013f, 0.14844f }, + { 0.51406f, 0.14844f }, + { 0.52493f, 0.29394f }, + { 0.53854f, 0.5166f }, + { 0.53105f, 0.86816f }, + { 0.50755f, 0.87207f }, + { 0.48893f, 0.85254f }, + { 0.47923f, 0.64258f }, + { 0.48828f, 0.35156f }, + { 0.49401f, 0.19238f }, + { 0.50228f, 0.16797f }, + { 0.52454f, 0.1709f }, + { 0.54518f, 0.17188f }, + { 0.55547f, 0.1748f }, + { 0.57611f, 0.16992f }, + { 0.5916f, 0.16797f }, + { 0.61471f, 0.56543f }, + { 0.62467f, 0.76367f }, + { 0.65156f, 0.76465f }, + { 0.65742f, 0.75488f }, + { 0.69544f, 0.75488f }, + { 0.69544f, 0.63477f }, + { 0.69538f, 0.33203f }, + { 0.69544f, 0.22949f }, + { 0.7028f, 0.22558f }, + { 0.73079f, 0.2207f }, + { 0.76628f, 0.22558f }, + { 0.78555f, 0.22754f }, + { 0.79388f, 0.72949f }, + { 0.81113f, 0.73047f }, + { 0.83034f, 0.72949f }, + { 0.83789f, 0.33789f }, + { 0.86953f, 0.35449f }, + { 0.88047f, 0.36035f }, + { 0.88242f, 0.60058f }, + { 0.89479f, 0.63672f }, + { 0.93939f, 0.68555f }, + { 0.9252f, 0.52051f }, + { 0.94284f, 0.51758f }, + { 0.96113f, 0.51367f }, + { 0.99303f, 0.50977f }, + { 1.0f, 0.50683f }, +}; +float lbl_1_data_248[][2] = { { -0.00026f, 0.51953f }, { 0.02825f, 0.51563f }, { 0.0541f, 0.78222f }, { 0.07298f, 0.78222f }, { 0.0918f, 0.65625f }, + { 0.0724f, 0.16504f }, { 0.08607f, 0.15918f }, { 0.09928f, 0.15918f }, { 0.11615f, 0.47852f }, { 0.1248f, 0.60156f }, { 0.13379f, 0.73144f }, + { 0.15592f, 0.66602f }, { 0.17044f, 0.66308f }, { 0.18418f, 0.64355f }, { 0.19603f, 0.1748f }, { 0.22279f, 0.1709f }, { 0.26087f, 0.17383f }, + { 0.27507f, 0.16308f }, { 0.30443f, 0.16602f }, { 0.32142f, 0.16992f }, { 0.26738f, 0.70019f }, { 0.27487f, 0.70996f }, { 0.29395f, 0.71191f }, + { 0.35384f, 0.70703f }, { 0.36966f, 0.71289f }, { 0.37565f, 0.71582f }, { 0.37122f, 0.36523f }, { 0.38763f, 0.36621f }, { 0.40117f, 0.36719f }, + { 0.42135f, 0.16406f }, { 0.44062f, 0.1709f }, { 0.45846f, 0.17969f }, { 0.5099f, 0.07813f }, { 0.52077f, 0.22363f }, { 0.53437f, 0.44629f }, + { 0.53262f, 0.90722f }, { 0.50911f, 0.91113f }, { 0.49049f, 0.8916f }, { 0.48496f, 0.76758f }, { 0.48984f, 0.5f }, { 0.49557f, 0.34082f }, + { 0.5127f, 0.40234f }, { 0.53496f, 0.40527f }, { 0.55605f, 0.40625f }, { 0.56322f, 0.20801f }, { 0.58118f, 0.21387f }, { 0.59499f, 0.21875f }, + { 0.60208f, 0.35644f }, { 0.61634f, 0.37305f }, { 0.62865f, 0.37305f }, { 0.63242f, 0.30566f }, { 0.64707f, 0.30957f }, { 0.66439f, 0.31348f }, + { 0.67487f, 0.6084f }, { 0.69551f, 0.6084f }, { 0.69499f, 0.44922f }, { 0.69486f, 0.30078f }, { 0.69492f, 0.19824f }, { 0.70228f, 0.19433f }, + { 0.74681f, 0.18945f }, { 0.78229f, 0.19433f }, { 0.80156f, 0.19629f }, { 0.8194f, 0.76074f }, { 0.83665f, 0.76172f }, { 0.85586f, 0.76074f }, + { 0.85488f, 0.30859f }, { 0.88132f, 0.30469f }, { 0.89225f, 0.31055f }, { 0.89076f, 0.74902f }, { 0.90312f, 0.78516f }, { 0.94772f, 0.83398f }, + { 0.93092f, 0.52832f }, { 0.94857f, 0.52539f }, { 0.96686f, 0.52148f }, { 0.99303f, 0.50977f }, { 1.0f, 0.50683f } }; +float lbl_1_data_4A8[][2] = { { -0.00026f, 0.51953f }, { 0.02825f, 0.51563f }, { 0.0332f, 0.55176f }, { 0.04759f, 0.4375f }, { 0.05775f, 0.2959f }, + { 0.06413f, 0.19629f }, { 0.08991f, 0.19531f }, { 0.10723f, 0.19531f }, { 0.11543f, 0.49707f }, { 0.12305f, 0.65918f }, { 0.13607f, 0.94336f }, + { 0.14779f, 0.68945f }, { 0.15514f, 0.53222f }, { 0.16204f, 0.4043f }, { 0.18034f, 0.49512f }, { 0.1847f, 0.35449f }, { 0.19095f, 0.15625f }, + { 0.20742f, 0.17285f }, { 0.22279f, 0.1709f }, { 0.24108f, 0.16894f }, { 0.24896f, 0.08887f }, { 0.2569f, 0.36328f }, { 0.26159f, 0.53125f }, + { 0.2679f, 0.69922f }, { 0.28079f, 0.80859f }, { 0.29987f, 0.89941f }, { 0.31224f, 0.7334f }, { 0.32246f, 0.55664f }, { 0.33112f, 0.41016f }, + { 0.36022f, 0.43164f }, { 0.37207f, 0.60058f }, { 0.38906f, 0.8457f }, { 0.40573f, 0.64844f }, { 0.42227f, 0.39941f }, { 0.43411f, 0.23926f }, + { 0.46732f, 0.79199f }, { 0.4875f, 0.82813f }, { 0.51387f, 0.83496f }, { 0.52324f, 0.13574f }, { 0.48893f, 0.12988f }, { 0.46237f, 0.16699f }, + { 0.46589f, 0.63086f }, { 0.48184f, 0.72266f }, { 0.49629f, 0.81836f }, { 0.50579f, 0.82422f }, { 0.52806f, 0.82715f }, { 0.54915f, 0.82813f }, + { 0.54974f, 0.19433f }, { 0.56764f, 0.17773f }, { 0.57936f, 0.16699f }, { 0.59199f, 0.16894f }, { 0.60111f, 0.16992f }, { 0.60124f, 0.4668f }, + { 0.60124f, 0.45996f }, { 0.60124f, 0.63183f }, { 0.61302f, 0.62695f }, { 0.6321f, 0.63477f }, { 0.65273f, 0.63477f }, { 0.65254f, 0.55176f }, + { 0.65254f, 0.49121f }, { 0.6526f, 0.39551f }, { 0.69297f, 0.39844f }, { 0.69642f, 0.62402f }, { 0.71595f, 0.61621f }, { 0.73451f, 0.61035f }, + { 0.74297f, 0.22266f }, { 0.77773f, 0.21484f }, { 0.79701f, 0.20898f }, { 0.79167f, 0.79102f }, { 0.80892f, 0.79785f }, { 0.83607f, 0.80762f }, + { 0.8487f, 0.4707f }, { 0.87995f, 0.47168f }, { 0.89089f, 0.47754f }, { 0.88796f, 0.14453f }, { 0.90833f, 0.13379f }, { 0.95078f, 0.18066f }, + { 0.95039f, 0.38183f }, { 0.95169f, 0.50977f }, { 0.96999f, 0.50488f }, { 0.99303f, 0.50977f }, { 1.0f, 0.50683f } }; + +UnkM404Struct2 lbl_1_data_738[] = { { 11000.0f, 450.0f, 0.0f, -87.5f, 323.2f, 42.7f, 0.0f }, { 6175.0f, 100.0f, 0.0f, -87.5f, 323.2f, 0.0f, 0.0f } }; + +Vec lbl_1_data_770 = { 700.0f, 2500.0f, -700.0f }; +Vec lbl_1_data_77C = { 0 }; +GXColor lbl_1_data_788 = { 255, 255, 255, 255 }; +Vec lbl_1_data_78C = { 1500.0f, 3000.0f, -200.0f }; +Vec lbl_1_data_798 = { 0.0f, 1.0f, 0.0f }; + +s32 fn_1_E48(void); +void fn_1_39C(omObjData *object); +void fn_1_400(omObjData *object); +void fn_1_784(omObjData *object); +void fn_1_7E0(omObjData *object); +void fn_1_A9C(omObjData *object); +void fn_1_D00(Process *arg0); +void fn_1_DEC(void); +void fn_1_1160(void); +void fn_1_1344(omObjData *object); +void fn_1_1AFC(omObjData *object); +float fn_1_2EBC(float arg0[], float arg8); +void fn_1_4C7C(omObjData *object); +void fn_1_44A0(omObjData *object); +void fn_1_4F4C(omObjData *object); +void fn_1_5278(omObjData *object); +void fn_1_5598(Process *arg0); +void fn_1_553C(omObjData *object); +void fn_1_55F0(void); +void fn_1_55F4(omObjData *object); +void fn_1_57A0(omObjData *object); +void fn_1_58E4(ModelData *modelData, Mtx arg1); +AnimData *fn_1_5D64(u16 arg0, u16 arg1, s32 arg2); +void fn_1_5E74(AnimData *arg0, u16 arg1, u16 arg2, u16 arg3); +u16 fn_1_607C(AnimData *arg0, u16 arg1, u16 arg2); +s32 fn_1_6248(void *arg0, s32 arg1); +void fn_1_6440(omObjData *object); +void fn_1_648C(s32 arg0, s32 arg1, float arg8); +void fn_1_66DC(omObjData *object); + +void ModuleProlog(void) +{ + CameraData *var_r30; + Process *var_r31; + s16 var_r29; + + var_r30 = Hu3DCamera; + OSReport("******* M404ObjectSetup *********\n"); + var_r31 = omInitObjMan(50, 8192); + omGameSysInit(var_r31); + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 10.0f, 20.0f, 25000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + lbl_1_bss_50 = omAddObjEx(var_r31, 32730, 0, 0, -1, omOutView); + lbl_1_bss_10.x = lbl_1_data_77C.x - lbl_1_data_770.x; + lbl_1_bss_10.y = lbl_1_data_77C.y - lbl_1_data_770.y; + lbl_1_bss_10.z = lbl_1_data_77C.z - lbl_1_data_770.z; + PSVECNormalize(&lbl_1_bss_10, &lbl_1_bss_10); + var_r29 = Hu3DGLightCreateV(&lbl_1_data_770, &lbl_1_bss_10, &lbl_1_data_788); + Hu3DGLightInfinitytSet(var_r29); + Hu3DGLightStaticSet(var_r29, 1); + Hu3DShadowCreate(45.0f, var_r30->near, var_r30->far); + Hu3DShadowTPLvlSet(0.625f); + Hu3DShadowPosSet(&lbl_1_data_78C, &lbl_1_data_798, &lbl_1_data_77C); + HuAudSndGrpSet(29); + lbl_1_bss_1C = ((s32)(frand() & 0xFF) * 3) >> 8; + lbl_1_bss_58 = omAddObjEx(var_r31, 0, 0, 0, -1, fn_1_39C); + lbl_1_bss_54 = omAddObjEx(var_r31, 0xA, 0, 0, -1, fn_1_6440); + lbl_1_bss_4C = omAddObjEx(var_r31, 0xB, 0, 0, -1, fn_1_7E0); + fn_1_D00(var_r31); + fn_1_5598(var_r31); +} + +s32 lbl_1_data_7C8 = 0xFFFFFFFFF; + +void fn_1_37C(s32 arg0) +{ + lbl_1_bss_48 = arg0; +} + +s32 fn_1_38C(void) +{ + return lbl_1_bss_48; +} + +void fn_1_39C(omObjData *object) +{ + fn_1_37C(0); + lbl_1_bss_24 = 60; + WipeCreate(1, 0, 60); + object->func = fn_1_400; +} + +void fn_1_400(omObjData *object) +{ + switch (fn_1_38C()) { + case 0: + if (--lbl_1_bss_24) { + break; + } + fn_1_37C(1); + lbl_1_bss_24 = 180; + break; + case 1: + if (--lbl_1_bss_24) { + break; + } + fn_1_37C(2); + lbl_1_bss_C = MGSeqCreate(3, 0); + break; + case 2: + if (!MGSeqStatGet(lbl_1_bss_C)) { + fn_1_37C(3); + } + if (lbl_1_data_7C8 >= 0) { + break; + } + if (!(MGSeqStatGet(lbl_1_bss_C) & 16)) { + break; + } + lbl_1_data_7C8 = HuAudSeqPlay(69); + break; + case 3: + if (!fn_1_E48()) { + break; + } + fn_1_37C(4); + lbl_1_bss_C = MGSeqCreate(3, 1); + HuAudSeqFadeOut(lbl_1_data_7C8, 100); + break; + case 4: + if (!MGSeqStatGet(lbl_1_bss_C)) { + fn_1_37C(5); + WipeColorSet(255, 255, 255); + WipeCreate(2, 0, 30); + lbl_1_bss_24 = 60; + } + case 5: + if (--lbl_1_bss_24) { + break; + } + fn_1_37C(6); + WipeCreate(1, 0, 60); + break; + case 6: + if (WipeStatGet()) { + break; + } + fn_1_37C(7); + lbl_1_bss_24 = 180; + break; + case 7: + if (--lbl_1_bss_24) { + break; + } + fn_1_37C(9); + fn_1_1160(); + if (lbl_1_bss_38[0] >= 0) { + HuAudSStreamPlay(1); + } else { + HuAudSStreamPlay(4); + } + lbl_1_bss_24 = 210; + break; + case 8: + break; + case 9: + if (--lbl_1_bss_24) { + break; + } + WipeCreate(2, 0, 60); + object->func = fn_1_784; + break; + default: + break; + } + if (omSysExitReq && !WipeStatGet()) { + WipeCreate(2, 0, 60); + object->func = fn_1_784; + } +} + +void fn_1_784(omObjData *object) +{ + if (!WipeStatGet()) { + fn_1_DEC(); + fn_1_55F0(); + MGSeqKillAll(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + OSReport("******* M404Exit *********\n"); + } +} + +u16 lbl_1_data_810[] = { 0, 1, 2, 3, 3, 3 }; + +float lbl_1_data_81C[][2] = { { 0.0f, 0.0f }, { 0.0f, 0.0f }, { -46.0f, -2.0f }, { -8.0f, 2.0f }, { 10.0f, 2.0f }, { 28.0f, 2.0f } }; + +float lbl_1_data_84C[][2] = { { 472.0f, 128.0f }, { 472.0f, 208.0f }, { 472.0f, 288.0f }, { 472.0f, 368.0f } }; + +s32 lbl_1_data_86C[] = { 0x00610000, 0x00610001, 0x00610002, 0x00610003, 0x00610004, 0x00610005, 0x00610006, 0x00610007 }; + +s32 lbl_1_data_88C = 0xFFFFFFFF; + +u32 lbl_1_data_890[][2] + = { { 0x005F0000, 0x00000000 }, { 0x005F0002, 0x00000000 }, { 0x00230022, 0x00000001 }, { 0x005F0017, 0x00000000 }, { 0x005F0018, 0x00000000 } }; + +s32 lbl_1_data_8B8[] = { 0x00230001, 0x00230002, 0x00230003, 0x00230004, 0x00230005, 0x00230006, 0x00230007, 0x00230008 }; + +float lbl_1_data_8D8[] = { 35.0f, 30.000002f, 25.0f, 20.0f }; + +float (*lbl_1_data_8E8[])[2] = { lbl_1_data_0, lbl_1_data_248, lbl_1_data_4A8 }; + +u16 lbl_1_data_8F4[] = { 73, 76, 82, 0 }; + +s32 lbl_1_data_8FC[][2] = { { 0x00230013, 0x00230014 }, { 0x00230015, 0x00230016 }, { 0x00230017, 0x00230018 } }; + +void fn_1_7E0(omObjData *object) +{ + UnkM404Struct *var_r31; + u32 var_r30; + s32 var_r29; + UnkM404Struct *var_r27; + omObjData **var_r26; + + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM404Struct) * 4, MEMORY_DEFAULT_NUM); + object->data = var_r31; + memset(object->data, 0, 136); + var_r26 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + + for (var_r29 = 0; var_r29 < 4; var_r31++, var_r29++) { + for (var_r27 = var_r26[var_r29]->data, var_r30 = 0; var_r30 < 6; var_r30++) { + switch (lbl_1_data_810[var_r30]) { + case 0: + var_r31->unk_02[var_r30] = espEntry(0x610014, 1, 0); + espPriSet(var_r31->unk_02[var_r30], 256); + break; + case 1: + var_r31->unk_02[var_r30] = espEntry(0x610015, 0, 0); + espPriSet(var_r31->unk_02[var_r30], 257); + espColorSet(var_r31->unk_02[var_r30], 0, 0, 0); + espTPLvlSet(var_r31->unk_02[var_r30], 0.5f); + break; + case 2: + var_r31->unk_02[var_r30] = espEntry(lbl_1_data_86C[var_r27->unk_02[5]]); + espPriSet(var_r31->unk_02[var_r30], 255); + break; + case 3: + var_r31->unk_02[var_r30] = espEntry(0x610033, 1, 0); + espPriSet(var_r31->unk_02[var_r30], 255); + break; + default: + break; + } + espDispOff(var_r31->unk_02[var_r30]); + espDrawNoSet(var_r31->unk_02[var_r30], 0); + espAttrSet(var_r31->unk_02[var_r30], 1); + espPosSet(var_r31->unk_02[var_r30], lbl_1_data_84C[var_r29][0] + lbl_1_data_81C[var_r30][0], + lbl_1_data_84C[var_r29][1] + lbl_1_data_81C[var_r30][1]); + } + } + + HuDataDirClose(DATADIR_MGCONST); + object->func = fn_1_A9C; +} + +void fn_1_A9C(omObjData *object) +{ + s32 var_r31; + UnkM404Struct *var_r30; + s32 var_r29; + UnkM404Struct3 *var_r28; + omObjData **var_r27; + + var_r30 = object->data; + switch (fn_1_38C()) { + case 6: + for (var_r31 = 0; var_r31 < 4; var_r31++) { + for (var_r29 = 0; var_r29 < 6; var_r29++) { + espDispOn(var_r30[var_r31].unk_02[var_r29]); + } + } + break; + case 7: + var_r27 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + for (var_r29 = 0, var_r31 = 0; var_r31 < 4; var_r31++) { + var_r28 = var_r27[var_r31]->data; + var_r30[var_r31].unk_00 = var_r28->unk_58; + if (var_r28->unk_00_field1) { + var_r29++; + } + } + if ((var_r29 >= 4) && (lbl_1_bss_0 == 0)) { + HuAudFXPlay(1325); + lbl_1_bss_0 = 1; + } + if ((lbl_1_bss_0 == 0) && (lbl_1_data_88C < 0)) { + lbl_1_data_88C = HuAudFXPlay(1324); + } + break; + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + espBankSet(var_r30[var_r31].unk_02[3], var_r30[var_r31].unk_00 / 100); + espBankSet(var_r30[var_r31].unk_02[4], (var_r30[var_r31].unk_00 / 10) % 10); + espBankSet(var_r30[var_r31].unk_02[5], var_r30[var_r31].unk_00 % 10); + } +} + +void fn_1_CD0(void) +{ + HuMemDirectFree(lbl_1_bss_4C->data); +} + +void fn_1_D00(Process *process) +{ + s32 var_r31; + + lbl_1_bss_38[0] = lbl_1_bss_38[1] = lbl_1_bss_38[2] = lbl_1_bss_38[3] = -1; + lbl_1_bss_28[0] = lbl_1_bss_28[1] = lbl_1_bss_28[2] = lbl_1_bss_28[3] = -1; + lbl_1_bss_20 = 0; + omMakeGroupEx(process, 0, 4); + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + omAddObjEx(process, 5, 10, 50, 0, fn_1_1344); + } +} + +void fn_1_DEC(void) +{ + s32 var_r31; + omObjData **var_r30; + + var_r30 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + fn_1_553C(var_r30[var_r31]); + } +} + +s32 fn_1_E48(void) +{ + s32 var_r31; + omObjData **var_r30; + UnkM404Struct3 *var_r29; + + var_r30 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r29 = var_r30[var_r31]->data; + if (!var_r29->unk_00_field0) { + break; + } + } + if (var_r31 < 4) { + return 0; + } + return 1; +} + +u16 fn_1_ED4(omObjData *object) +{ + UnkM404Struct3 *var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r31 = object->data; + + for (var_r28 = 0, var_r30 = 0; var_r30 < var_r31->unk_3C->bmp->sizeY; var_r30++) { + for (var_r29 = 0; var_r29 < var_r31->unk_3C->bmp->sizeX; var_r29++) { + if (!fn_1_607C(var_r31->unk_3C, var_r29, var_r30)) { + var_r28++; + } + } + } + return var_r28; +} + +s32 fn_1_F70(omObjData *object, float arg8) +{ + UnkM404Struct3 *var_r31; + s32 var_r30; + s32 var_r29; + u16 var_r28; + u16 var_r27; + s32 var_r26; + u16 var_r25; + u16 var_r24; + + var_r31 = object->data; + var_r26 = var_r31->unk_3C->bmp->sizeX * arg8; + + for (var_r30 = 0; var_r30 < var_r31->unk_3C->bmp->sizeY; var_r30++) { + for (var_r29 = var_r31->unk_5A; var_r29 < var_r26; var_r29++) { + if (!fn_1_607C(var_r31->unk_3C, var_r29, var_r30)) { + for (var_r27 = 0; var_r27 < (var_r31->unk_4C->bmp->sizeY / var_r31->unk_3C->bmp->sizeY); var_r27++) { + for (var_r28 = 0; var_r28 < (var_r31->unk_4C->bmp->sizeX / var_r31->unk_3C->bmp->sizeX); var_r28++) { + var_r25 = ((s32)var_r28) + var_r31->unk_4C->bmp->sizeX * var_r29 / var_r31->unk_3C->bmp->sizeX; + var_r24 = ((s32)var_r27) + var_r31->unk_4C->bmp->sizeY * var_r30 / var_r31->unk_3C->bmp->sizeY; + if (fn_1_607C(var_r31->unk_4C, var_r25, var_r24)) { + var_r31->unk_54++; + break; + } + } + if (var_r28 < var_r31->unk_4C->bmp->sizeX / var_r31->unk_3C->bmp->sizeX) { + break; + } + } + } + } + } + var_r31->unk_5A = var_r26; + return (var_r31->unk_54 * 100) / var_r31->unk_56; +} + +void fn_1_1160(void) +{ + s32 sp10[4]; + u16 sp8[3] = { 28, 18, 29 }; + s32 var_r31; + s32 var_r30; + UnkM404Struct3 *var_r29; + omObjData **var_r28; + s32 var_r27; + s32 var_r26; + UnkM404Struct3 *var_r25; + s16 var_r24; + + var_r26 = 0; + var_r28 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r29 = var_r28[var_r31]->data; + for (var_r27 = 0, var_r30 = 0; var_r30 < 4; var_r30++) { + if (var_r31 != var_r30) { + var_r25 = var_r28[var_r30]->data; + if (var_r29->unk_58 < var_r25->unk_58) { + var_r27++; + } + } + } + sp10[var_r31] = var_r27; + if (var_r29->unk_58 > var_r26) { + var_r26 = var_r29->unk_58; + } + } + if (var_r26 > 30) { + for (var_r30 = 0, var_r31 = 0; var_r31 < 4; var_r31++) { + if (!sp10[var_r31]) { + lbl_1_bss_38[var_r30] = var_r31; + lbl_1_bss_28[var_r30] = GWPlayerCfg[lbl_1_bss_38[var_r30]].character; + var_r30++; + } + var_r24 = sp10[var_r31]; + GWPlayerCoinWinSet(var_r31, var_r24); + } + return; + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + GWPlayerCoinWinSet(var_r31, 3); + } +} + +void fn_1_1344(omObjData *object) +{ + UnkM404Struct3 *var_r31; + s32 var_r29; + float(*var_r28)[2]; + s32 var_r24; + ModelData *var_r22; + + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM404Struct3), MEMORY_DEFAULT_NUM); + object->data = var_r31; + memset(var_r31, 0, 484); + var_r31->unk_02 = lbl_1_bss_20++; + var_r31->unk_04 = GWPlayerCfg[var_r31->unk_02].pad_idx; + + var_r31->unk_0C = var_r24 = GWPlayerCfg[var_r31->unk_02].character; + var_r31->unk_0E = GWPlayerCfg[var_r31->unk_02].diff; + var_r31->unk_10 = GWPlayerCfg[var_r31->unk_02].group; + object->model[0] = CharModelCreate(var_r24, 2); + Hu3DModelShadowSet(object->model[0]); + object->model[1] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_8B8[var_r24], MEMORY_DEFAULT_NUM, HEAP_DATA)); + Hu3DModelHookSet(object->model[0], "test11_tex_we-itemhook-r", object->model[1]); + var_r31->unk_2C = 0; + + for (var_r29 = 0; var_r29 < (u32)5; var_r29++) { + if (!lbl_1_data_890[var_r29][1]) { + object->motion[var_r29] = CharModelMotionCreate(var_r31->unk_0C, lbl_1_data_890[var_r29][0]); + } else { + object->motion[var_r29] = CharModelMotionCreate(var_r31->unk_0C, var_r31->unk_0C + lbl_1_data_890[var_r29][0]); + } + } + Hu3DMotionSet(object->model[0], object->motion[0]); + Hu3DModelAttrSet(object->model[0], 0x40000601); + CharModelVoiceEnableSet(var_r24, object->motion[1], 0); + object->trans.x = -90.0f; + object->trans.y = 0.0f; + object->trans.z = -450.0f + (300.0f * var_r31->unk_02); + object->rot.y = 90.0f; + object->model[2] = Hu3DHookFuncCreate(fn_1_58E4); + Hu3DModelPosSet(object->model[2], 0.0f, object->trans.y, object->trans.z); + var_r22 = &Hu3DData[object->model[2]]; + var_r22->unk_120 = (void *)object; + var_r31->unk_4C = fn_1_5D64(960, 64, 1); + var_r31->unk_48 = 4096; + var_r31->unk_44 = HuMemDirectMallocNum(HEAP_SYSTEM, var_r31->unk_48, MEMORY_DEFAULT_NUM); + DCInvalidateRange(var_r31->unk_44, var_r31->unk_48); + var_r31->unk_48 = fn_1_6248(var_r31->unk_44, var_r31->unk_48); + var_r31->unk_3C = HuSprAnimRead(HuDataSelHeapReadNum(lbl_1_data_8FC[lbl_1_bss_1C][0], MEMORY_DEFAULT_NUM, HEAP_DATA)); + DCFlushRangeNoSync(var_r31->unk_3C->bmp->data, (var_r31->unk_3C->bmp->pixSize * (var_r31->unk_3C->bmp->sizeX * var_r31->unk_3C->bmp->sizeY)) / 8); + var_r31->unk_54 = 0; + var_r31->unk_56 = fn_1_ED4(object); + var_r31->unk_40 = HuSprAnimRead(HuDataSelHeapReadNum(lbl_1_data_8FC[lbl_1_bss_1C][1], MEMORY_DEFAULT_NUM, HEAP_DATA)); + var_r31->unk_50 = HuSprAnimRead(HuDataSelHeapReadNum(0x230019, MEMORY_DEFAULT_NUM, HEAP_DATA)); + DCFlushRangeNoSync(var_r31->unk_50->bmp->data, (var_r31->unk_50->bmp->pixSize * (var_r31->unk_50->bmp->sizeX * var_r31->unk_50->bmp->sizeY)) / 8); + Hu3DMotionOverlaySet(object->model[0], object->motion[2]); + object->trans.y = 1500.0f; + var_r31->unk_38 = var_r31->unk_02 * 60 / 2; + CharModelDataClose(var_r31->unk_0C); + if (GWPlayerCfg[var_r31->unk_02].iscom == 1) { + var_r28 = lbl_1_data_8E8[lbl_1_bss_1C]; + var_r31->unk_6C = lbl_1_data_8F4[lbl_1_bss_1C]; + var_r31->unk_70 = HuMemDirectMallocNum(HEAP_SYSTEM, (var_r31->unk_6C + 3) * 8, MEMORY_DEFAULT_NUM); + + for (var_r29 = 0; var_r29 < var_r31->unk_6C; var_r29++, var_r28++) { + var_r31->unk_70[var_r29][0] = 3000.0f * var_r28[0][0]; + var_r31->unk_70[var_r29][1] = object->trans.z - (200.0f * (var_r28[0][1] - 0.5f)); + if (var_r29 && var_r29 < (var_r31->unk_6C - 1)) { + var_r31->unk_70[var_r29][0] += lbl_1_data_8D8[var_r31->unk_0E] * (s32)(frand() % 512 - 256) / 256; + var_r31->unk_70[var_r29][1] += lbl_1_data_8D8[var_r31->unk_0E] * (s32)(frand() % 512 - 256) / 256; + } + } + + while (var_r29 < (var_r31->unk_6C + 3)) { + var_r31->unk_70[var_r29][0] = var_r31->unk_70[var_r31->unk_6C - 1][0]; + var_r31->unk_70[var_r29][1] = var_r31->unk_70[var_r31->unk_6C - 1][1]; + var_r29++; + } + var_r31->unk_64 = 0.0f; + var_r31->unk_68 = fn_1_2EBC(var_r31->unk_70[var_r31->unk_5E], 1.0f); + } + var_r31->unk_14 = 90.0f; + var_r31->unk_74 = -1; + object->func = fn_1_1AFC; +} + +void fn_1_1AFC(omObjData *object) +{ + UnkM404Struct3 *var_r31; + + + var_r31 = object->data; + if (fn_1_38C() >= 1) { + if (var_r31->unk_00_field2) { + if (var_r31->unk_38 != 0) { + if (--var_r31->unk_38 == 0) { + HuAudFXPlay(1327); + } + } + if (object->trans.y > 0.0f) { + var_r31->unk_24 = var_r31->unk_24 - 1.0000001f; + object->trans.y += var_r31->unk_24; + if (object->trans.y < 0.0f) { + object->trans.y = 0.0f; + omVibrate(var_r31->unk_02, 12, 6, 6); + HuAudFXPlay(1326); + } + } + if (fn_1_38C() != 2) { + return; + } + var_r31->unk_24 = 0.0f; + object->func = fn_1_44A0; + return; + } + if (var_r31->unk_38 == 0) { + var_r31->unk_00_field2 = 1; + var_r31->unk_38 = 30; + return; + } + var_r31->unk_38--; + } +} + +float fn_1_1C80(float arg8, float arg9, float argA, float argB, float argC) +{ + float var_f31; + float var_f30; + float var_f29; + + var_f31 = 1.0f - arg8; + var_f30 = var_f31 * var_f31; + var_f29 = var_f31 * var_f31 * var_f31; + return (arg8 * arg8 * arg8 * argC) + (3.0f * var_f31 * arg8 * arg8 * argB + (var_f29 * arg9 + 3.0f * var_f30 * arg8 * argA)); +} + +float fn_1_1D28(float arg8, float arg9, float argA, float argB, float argC) +{ + float var_f31; + float var_f30; + float var_f29; + + var_f31 = 3.0f * (-arg9 + argC + (3.0f * (argA - argB))); + var_f30 = 2.0f * ((3.0f * (arg9 + argB)) - (6.0f * argA)); + var_f29 = 3.0f * (-arg9 + argA); + return var_f31 * arg8 * arg8 + var_f30 * arg8 + var_f29; +} + +float fn_1_1DF8(float arg0[], float arg8) +{ + float var_f31; + float var_f30; + + var_f31 = fn_1_1D28(arg8, arg0[0], arg0[2], arg0[4], arg0[6]); + var_f30 = fn_1_1D28(arg8, arg0[1], arg0[3], arg0[7], arg0[7]); + + return sqrtf(var_f31 * var_f31 + var_f30 * var_f30); +} + +float fn_1_2184(float arg0[], float arg8) +{ + float sp158[1]; + float var_f31; + float var_f26; + float var_f21; + float var_f20; + float var_f19; + s32 var_r31; + + var_f26 = 0.0f; + var_f19 = 16.0f; + var_f20 = (arg8 - var_f26) / var_f19; + sp158[0] = var_f20 + var_f20; + + var_f21 = fn_1_1DF8(arg0, var_f26) + fn_1_1DF8(arg0, arg8); + + for (var_r31 = 1, var_f31 = var_f26 + var_f20; var_r31 < var_f19; var_r31 += 2, var_f31 += sp158[0]) { + var_f21 += 4.0f * fn_1_1DF8(arg0, var_f31); + } + + for (var_r31 = 2, var_f31 = var_f26 + sp158[0]; var_r31 < var_f19; var_r31 += 2, var_f31 += sp158[0]) { + var_f21 += 2.0f * fn_1_1DF8(arg0, var_f31); + } + return (var_f20 / 3.0f) * var_f21; +} + +float fn_1_2EBC(float arg0[], float arg8) +{ + float spF8; + float var_f31; + float var_f27; + float var_f22; + float var_f23; + + s32 var_r31; + s32 var_r30; + s32 var_r29; + + var_r29 = 32; + var_f31 = 0.0f; + spF8 = 0.0f; + + var_f27 = arg8 - var_f31; + var_f22 = var_f27 * (fn_1_1DF8(arg0, var_f31) + fn_1_1DF8(arg0, arg8)) / 2; + + for (var_r30 = 1; var_r30 <= var_r29; var_r30 *= 2) { + for (var_f23 = 0.0f, var_r31 = 1; var_r31 <= var_r30; var_r31 += 1) { + var_f23 += fn_1_1DF8(arg0, var_f31 + var_f27 * (var_r31 - 0.5f)); + } + var_f23 *= var_f27; + spF8 = (var_f22 + (2.0f * var_f23)) / 3.0f; + var_f27 /= 2; + var_f22 = (var_f22 + var_f23) / 2; + } + return spF8; +} + +float fn_1_3A38(float arg0[], float arg8, float arg9) +{ + volatile float sp40; + volatile float sp3C; + float var_f24; + float var_f18; + s32 var_r30; + + sp3C = 0.00001f; + var_r30 = 0; + do { + var_f18 = fn_1_2EBC(arg0, arg8) - arg9; + if (fabs(var_f24 = fn_1_1DF8(arg0, arg8)) < sp3C) { + var_f24 = 1.0f; + } + sp40 = arg8; + arg8 -= var_f18 / var_f24; + var_r30++; + } while (arg8 != sp40 && var_r30 < 16); + return arg8; +} + +float fn_1_3E2C(float arg8, float arg9, float argA) // same as in REL/m402Dll +{ + float var_f30; + float var_f31; + + var_f31 = fmod(arg9 - arg8, 360.0); + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + var_f30 = fmod(arg8 + (argA * var_f31), 360.0); + if (var_f30 < 0.0f) { + var_f30 += 360.0f; + } + return var_f30; +} + +void fn_1_3F30(omObjData *object) +{ + float var_f24; + float var_f23; + + UnkM404Struct3 *var_r31; + float *var_r30; + + var_r31 = object->data; + if (var_r31->unk_5E < (var_r31->unk_6C - 1)) { + if ((3.0f + var_r31->unk_64) >= var_r31->unk_68) { + var_r31->unk_64 = 3.0f - (var_r31->unk_68 - var_r31->unk_64); + var_r31->unk_5E += 3; + var_r31->unk_68 = fn_1_2EBC(var_r31->unk_70[var_r31->unk_5E], 1.0f); + } else { + var_r31->unk_64 += 3.0f; + } + var_r31->unk_60 = fn_1_3A38(var_r31->unk_70[var_r31->unk_5E], var_r31->unk_60, var_r31->unk_64); + var_r30 = var_r31->unk_70[var_r31->unk_5E]; + var_f24 = fn_1_1C80(var_r31->unk_60, var_r30[0], var_r30[2], var_r30[4], var_r30[6]) - 90.0f; + var_f23 = fn_1_1C80(var_r31->unk_60, var_r30[1], var_r30[3], var_r30[5], var_r30[7]); + var_r31->unk_14 = fn_1_3E2C(var_r31->unk_14, atan2d(var_f24 - object->trans.x, -(var_f23 - object->trans.z)), 0.1f); + var_r31->unk_06 = (u8)(20.0 * sind(var_r31->unk_14)); + var_r31->unk_07 = (u8)(20.0 * cosd(var_r31->unk_14)); + } else { + var_r31->unk_06 = 20; + var_r31->unk_07 = 0; + } +} + +void fn_1_445C(s32 arg0, s16 arg1) +{ + UnkMsmStruct_01 sp8; + + sp8.unk00 = 1; + sp8.unk04 = arg1; + msmSeSetParam(arg0, &sp8); +} + +void fn_1_44A0(omObjData *object) +{ + Vec sp8; + float var_f31; + + UnkM404Struct3 *var_r31; + ModelData *var_r29; + s32 var_r28; + s16 var_r27; + + + var_r31 = object->data; + var_r28 = -1; + if (fn_1_38C() == 6) { + object->func = fn_1_4C7C; + } + if (fn_1_38C() == 3 && !var_r31->unk_00_field0) { + switch (var_r31->unk_12) { + case 0: + if (GWPlayerCfg[var_r31->unk_02].iscom == 0) { + var_r31->unk_06 = HuPadStkX[var_r31->unk_04]; + var_r31->unk_07 = HuPadStkY[var_r31->unk_04]; + var_r31->unk_08 = HuPadBtn[var_r31->unk_04]; + var_r31->unk_0A = HuPadBtnDown[var_r31->unk_04]; + } else { + var_r31->unk_08 = var_r31->unk_0A = 0; + var_r31->unk_06 = var_r31->unk_07 = 0; + fn_1_3F30(object); + } + if (((var_r31->unk_06 * var_r31->unk_06) + (var_r31->unk_07 * var_r31->unk_07)) > 16.0f) { + var_f31 = atan2d(var_r31->unk_06, -var_r31->unk_07); + var_r31->unk_20 = 3.0f * sind(var_f31); + var_r31->unk_28 = 3.0f * cosd(var_f31); + var_r28 = 1; + if (var_r31->unk_20 > 0.0f) { + CharModelMotionSpeedSet(var_r31->unk_0C, 0.5f); + } else { + CharModelMotionSpeedSet(var_r31->unk_0C, -0.5f); + } + Hu3DMotionOverlaySpeedSet(object->model[0], Hu3DData[object->model[0]].unk_68); + if (var_r31->unk_2C == 0) { + Hu3DModelAttrReset(object->model[0], 0x40000400); + Hu3DMotionOverlayTimeSet(object->model[0], 0.0f); + } + } else { + var_r31->unk_20 = var_r31->unk_28 = 0.0f; + var_r28 = 0; + CharModelMotionSpeedSet(var_r31->unk_0C, 1.0f); + Hu3DMotionOverlayTimeSet(object->model[0], 0.0f); + Hu3DModelAttrSet(object->model[0], 0x40000400); + } + sp8.x = object->trans.x; + sp8.z = object->trans.z; + object->trans.x += var_r31->unk_20; + object->trans.z += var_r31->unk_28; + if (object->trans.x < -90.0f) { + object->trans.x = -90.0f; + } + if (object->trans.x < (Center.x - 500.0f)) { + object->trans.x = Center.x - 500.0f; + } else if (object->trans.x > (550.0f + Center.x)) { + object->trans.x = 550.0f + Center.x; + } + if ((object->trans.x != sp8.x) || (object->trans.z != sp8.z)) { + if (var_r31->unk_74 < 0) { + var_r31->unk_74 = HuAudFXPlay(0x52B); + } + } else if (var_r31->unk_74 >= 0) { + HuAudFXStop(var_r31->unk_74); + var_r31->unk_74 = -1; + } + var_r29 = &Hu3DData[object->model[2]]; + if (object->trans.z < (var_r29->pos.z - 100.0f)) { + object->trans.z = var_r29->pos.z - 100.0f; + } else if (object->trans.z > ((100.0f + var_r29->pos.z) - 1.0f)) { + object->trans.z = (100.0f + var_r29->pos.z) - 1.0f; + } + if ((90.0f + object->trans.x) > 3000.0f) { + object->trans.x = 2910.0f; + var_r31->unk_12++; + var_r31->unk_2C = -1; + var_r28 = 1; + CharModelMotionSpeedSet(var_r31->unk_0C, 1.0f); + Hu3DMotionOverlayReset(object->model[0]); + Hu3DModelAttrSet(object->model[1], 1); + if (var_r31->unk_74 >= 0) { + HuAudFXStop(var_r31->unk_74); + var_r31->unk_74 = -1; + } + } + fn_1_5278(object); + if (var_r31->unk_74 >= 0) { + var_r27 = 64.0f + ((64.0f * (object->trans.x - Center.x)) / 500.0f); + if (var_r27 < 0) { + var_r27 = 0; + } else if (var_r27 > 127) { + var_r27 = 127; + } + HuAudFXPanning(var_r31->unk_74, var_r27); + } + break; + case 1: + var_r28 = 1; + object->trans.x += 4.0000005f; + if (object->trans.x >= 3200.0f) { + var_r31->unk_12++; + var_r31->unk_38 = 0x3C; + } + break; + case 2: + var_r28 = 0; + object->rot.y += 0.1f * -object->rot.y; + if (--var_r31->unk_38 == 0) { + var_r31->unk_00_field0 = 1; + } + break; + } + if (var_r28 >= 0 && var_r28 != var_r31->unk_2C) { + var_r31->unk_2C = var_r28; + CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_2C], 0.0f, 5.0f, 0x40000001); + } + } +} + +void fn_1_4C7C(omObjData *object) +{ + UnkM404Struct3 *var_r30; + + var_r30 = object->data; + object->trans.x = 3200.0f; + object->trans.z = -450.0f + (300.0f * var_r30->unk_02); + object->rot.y = 0.0f; + var_r30->unk_2C = -1; + CharModelMotionShiftSet(var_r30->unk_0C, *object->motion, 0.0f, 5.0f, 0x40000001); + var_r30->unk_5A = 0; + var_r30->unk_5C = fn_1_F70(object, 1.0f); + var_r30->unk_5A = 0; + var_r30->unk_54 = 0; + var_r30->unk_74 = -1; + object->func = fn_1_4F4C; +} + +void fn_1_4F4C(omObjData *object) +{ + UnkM404Struct3 *var_r30; + s32 var_r29; + u16 var_r23; + + var_r30 = object->data; + if (fn_1_38C() == 7) { + var_r23 = fn_1_F70(object, (Center.x - lbl_1_data_738[1].unk_04) / (3000.0f - lbl_1_data_738[1].unk_04)); + if (!var_r30->unk_00_field1 && var_r23 == var_r30->unk_5C) { + var_r30->unk_00_field1 = 1; + } + var_r30->unk_58 = var_r23; + } + if (fn_1_38C() == 9 && var_r30->unk_2C < 0) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (var_r30->unk_02 == lbl_1_bss_38[var_r29]) { + break; + } + } + if (var_r29 < 4) { + var_r30->unk_2C = 3; + } else { + var_r30->unk_2C = 4; + } + CharModelMotionShiftSet(var_r30->unk_0C, object->motion[var_r30->unk_2C], 0.0f, 5.0f, 0); + } +} + +void fn_1_5278(omObjData *object) +{ + float var_f31; + UnkM404Struct3 *var_r31; + float var_f30; + ModelData *var_r27; + s32 var_r29; + s32 var_r28; + u16 var_r26; + u16 var_r25; + + var_r31 = object->data; + var_r27 = &Hu3DData[object->model[2]]; + var_f31 = ((90.0f + object->trans.x) - var_r27->pos.x) / 3000.0f; + var_f30 = (object->trans.z - (var_r27->pos.z - 100.0f)) / 200.0f; + + for (var_r29 = 0; var_r29 < var_r31->unk_50->bmp->sizeY; var_r29++) { + for (var_r28 = 0; var_r28 < var_r31->unk_50->bmp->sizeX; var_r28++) { + var_r26 = (var_r28 + (var_f31 * var_r31->unk_4C->bmp->sizeX)) - var_r31->unk_50->bmp->sizeX / 2; + var_r25 = (var_r29 + (var_f30 * var_r31->unk_4C->bmp->sizeY)) - var_r31->unk_50->bmp->sizeY / 2; + if (var_r26 < var_r31->unk_4C->bmp->sizeX && var_r25 < var_r31->unk_4C->bmp->sizeY) { + fn_1_5E74(var_r31->unk_4C, var_r26, var_r25, fn_1_607C(var_r31->unk_50, var_r28, var_r29)); + } + } + } + DCFlushRangeNoSync(var_r31->unk_4C->bmp->data, var_r31->unk_4C->bmp->dataSize); +} + +void fn_1_553C(omObjData *object) +{ + UnkM404Struct3 *var_r30; + + var_r30 = object->data; + if (object->data != NULL) { + HuMemDirectFree(var_r30->unk_44); + HuMemDirectFree(object->data); + object->data = NULL; + } +} + +void fn_1_5598(Process *arg0) +{ + omMakeGroupEx(arg0, 1, 1); + omAddObjEx(arg0, 10, 7, 0, 1, fn_1_55F4); +} + +void fn_1_55F0(void) { } + +s32 lbl_1_data_930[] = { 0x0023000B, 0x0023000C, 0x0023000D, 0x0023000E, 0x0023000F, 0x00230010, 0x00230011, 0x00230012 }; + +s32 lbl_1_data_950[] = { 0x0023001A, 0x0023001B, 0x0023001C, 0x0023001D, 0x0023001E, 0x0023001F, 0x00230020, 0x00230021 }; + +char *lbl_1_data_98C[] = { "kari00", "kari01", "kari02", "kari03" }; + +float lbl_1_data_99C[] = { -450, -150, 150, 450 }; + +s32 lbl_1_data_9AC[][2] = { { 8, 4 }, { 7, 8 }, { 6, 8 }, { 5, 16 }, { 2, 16 }, { 2, 16 } }; + +s32 lbl_1_data_9DC[] = { 8, 8, 8, 4, 4, 4 }; +s32 lbl_1_data_9F4[] = { 8, 8, 8, 4, 4, 4 }; + +void fn_1_55F4(omObjData *object) +{ + s32 var_r30; + + object->model[0] = Hu3DModelCreate(HuDataSelHeapReadNum(0x230009, MEMORY_DEFAULT_NUM, HEAP_DATA)); + object->model[1] = Hu3DModelCreate(HuDataSelHeapReadNum(0x23000A, MEMORY_DEFAULT_NUM, HEAP_DATA)); + Hu3DModelAttrSet(object->model[1], 0x40000001); + object->model[2] = Hu3DModelCreate(HuDataSelHeapReadNum(0x230000, MEMORY_DEFAULT_NUM, HEAP_DATA)); + Hu3DModelShadowMapSet(object->model[2]); + + for (var_r30 = 0; var_r30 < 4; var_r30++) { + object->model[var_r30 + 3] + = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_data_930[GWPlayerCfg[var_r30].character], MEMORY_DEFAULT_NUM, HEAP_DATA)); + Hu3DModelPosSet(object->model[var_r30 + 3], 0.0f, 0.0f, lbl_1_data_99C[var_r30]); + Hu3DAnimCreate(HuSprAnimRead(HuDataSelHeapReadNum(lbl_1_data_950[GWPlayerCfg[var_r30].character], MEMORY_DEFAULT_NUM, HEAP_DATA)), + object->model[2], lbl_1_data_98C[var_r30]); + } + object->func = fn_1_57A0; +} + +void fn_1_57A0(omObjData *object) { } + +void fn_1_57A4(s32 arg0, GXColor *arg1) +{ + GXColor sp8[8] = { { 227, 67, 67, 255 }, { 68, 67, 227, 255 }, { 241, 158, 220, 255 }, { 67, 228, 68, 255 }, { 138, 60, 180, 255 }, + { 146, 85, 55, 255 }, { 227, 200, 20, 255 }, { 40, 40, 40, 255 } }; + + *arg1 = sp8[arg0]; +} + +void fn_1_58E4(ModelData *modelData, Mtx arg1) +{ + GXTexObj sp3C; + UnkM404Struct3 *var_r31; + omObjData *var_r30; + s32 var_r29; + + var_r30 = (omObjData *)modelData->unk_120; // TODO fix in modelData struct + var_r31 = var_r30->data; + { + GXColor sp18 = { 255, 0, 0, 255 }; + GXColor sp14 = { 255, 255, 255, 192 }; + GXLoadPosMtxImm(arg1, 0); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + GXSetNumTexGens(1); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 60, GX_FALSE, 125); + HuSprTexLoad(var_r31->unk_40, 0, 0, GX_CLAMP, GX_CLAMP, GX_LINEAR); + GXSetNumTevStages(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_RASC); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_DIVIDE_2, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_KONST, GX_CA_ZERO, GX_CA_TEXA, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + + var_r29 = var_r31->unk_0C; + fn_1_57A4(var_r29, &sp18); + + GXSetChanMatColor(GX_COLOR0A0, sp18); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetBlendMode(GX_DECAL, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetCullMode(GX_CULL_BACK); + GXCallDisplayList(var_r31->unk_44, var_r31->unk_48); + GXInitTexObj(&sp3C, var_r31->unk_4C->bmp->data, var_r31->unk_4C->bmp->sizeX, var_r31->unk_4C->bmp->sizeY, 1, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXLoadTexObj(&sp3C, GX_TEXMAP0); + GXSetNumTevStages(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_RASC); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_A0, GX_CA_TEXA, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + + GXSetTevColor(GX_TEVREG0, sp14); + GXCallDisplayList(var_r31->unk_44, var_r31->unk_48); + } +} + +AnimData *fn_1_5D64(u16 sizeX, u16 sizeY, s32 arg2) +{ + AnimBmpData *bmp; + AnimData *anim; + + anim = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(AnimBmpData), MEMORY_DEFAULT_NUM); + bmp = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(AnimData), MEMORY_DEFAULT_NUM); + anim->bmp = bmp; + bmp->sizeX = sizeX; + bmp->sizeY = sizeY; + bmp->dataFmt = lbl_1_data_9AC[arg2][0]; + bmp->pixSize = lbl_1_data_9AC[arg2][1]; + bmp->dataSize = (bmp->pixSize * (bmp->sizeX * bmp->sizeY)) / 8; + bmp->data = HuMemDirectMallocNum(HEAP_SYSTEM, bmp->dataSize, MEMORY_DEFAULT_NUM); + memset(bmp->data, 0, bmp->dataSize); + DCFlushRangeNoSync(bmp->data, bmp->dataSize); + return anim; +} + +void fn_1_5E74(AnimData *arg0, u16 arg1, u16 arg2, u16 arg3) +{ + u8 *var_r31; + u16 var_r30; + u16 var_r29; + s32 var_r28; + s32 temp_r0_2; + s32 temp_r7; + u8 temp_r0; + + switch (arg0->bmp->pixSize) { + case 4: + var_r30 = lbl_1_data_9DC[0]; // 8 + var_r29 = lbl_1_data_9DC[1]; // 8 + break; + case 8: + var_r30 = lbl_1_data_9DC[2]; // 8 + var_r29 = lbl_1_data_9DC[3]; // 4 + break; + case 16: + var_r30 = lbl_1_data_9DC[4]; // 4 + var_r29 = lbl_1_data_9DC[5]; // 4 + break; + } + + var_r28 = (arg0->bmp->sizeX / var_r30) * ((arg2 / var_r29) << 5); + var_r31 = ((u8 *)arg0->bmp->data) + (var_r28 + ((arg0->bmp->pixSize * ((arg2 % var_r29) * 8)) / 8)); + var_r31 += (arg1 % 8 * arg0->bmp->pixSize) / 8; + var_r31 += (arg1 / var_r30) << 5; + + switch (arg0->bmp->pixSize) { + case 4: + if ((arg1 & 1) == 0) { + *var_r31 &= 0xF; + *var_r31 |= arg3 << 4; + break; + } + *var_r31 &= 0xF0; + *var_r31 |= arg3; + break; + case 8: + *var_r31 |= arg3; + break; + case 16: + *((u16 *)var_r31) = arg3; + break; + } +} + +u16 fn_1_607C(AnimData *anim, u16 arg1, u16 arg2) +{ + u16 var_r31; + u16 var_r30; + u8 *var_r29; + s32 var_r28; + u32 temp_r0_2; + u32 temp_r6; + u8 temp_r0; + u8 temp_r0_3; + + switch (anim->bmp->pixSize) { + case 4: + var_r31 = lbl_1_data_9F4[0]; + var_r30 = lbl_1_data_9F4[1]; + break; + case 8: + var_r31 = lbl_1_data_9F4[2]; + var_r30 = lbl_1_data_9F4[3]; + break; + case 16: + var_r31 = lbl_1_data_9F4[4]; + var_r30 = lbl_1_data_9F4[5]; + break; + } + var_r29 = ((u8 *)anim->bmp->data) + ((arg1 / var_r31) << 5) + (arg1 % 8 * anim->bmp->pixSize) / 8 + + (((anim->bmp->sizeX / var_r31) * ((arg2 / var_r30) << 5)) + ((anim->bmp->pixSize * ((arg2 % var_r30) * 8)) / 8)); + + switch (anim->bmp->pixSize) { + case 4: + if ((arg1 & 1) == 0) { + var_r28 = *var_r29 >> 4; + } else { + var_r28 = *var_r29 & 0xF; + } + return var_r28; + case 8: + return *var_r29; + case 16: + return *((u16 *)var_r29); + } +} + +s32 fn_1_6248(void *arg0, s32 arg1) +{ + s32 var_r31; + + GXBeginDisplayList(arg0, arg1); + GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 4); + + GXPosition3f32(0.0f, 1.5f, 100.0f); + GXTexCoord2f32(0.0f, 1.0f); + GXPosition3f32(0.0f, 1.5f, -100.0f); + GXTexCoord2f32(0.0f, 0.0f); + GXPosition3f32(3000.0f, 1.5f, 100.0f); + GXTexCoord2f32(1.0f, 1.0f); + GXPosition3f32(3000.0f, 1.5f, -100.0f); + GXTexCoord2f32(1.0f, 0.0f); + + var_r31 = GXEndDisplayList(); + DCFlushRangeNoSync(arg0, var_r31); + return var_r31; +} + +void fn_1_6440(omObjData *object) +{ + fn_1_648C(0, 0, 0.0f); + object->func = fn_1_66DC; +} + +void fn_1_648C(s32 arg0, s32 arg1, float arg8) +{ + CZoom = lbl_1_data_738[arg0].unk_00 + arg8 * (lbl_1_data_738[arg1].unk_00 - lbl_1_data_738[arg0].unk_00); + Center.x = lbl_1_data_738[arg0].unk_04 + arg8 * (lbl_1_data_738[arg1].unk_04 - lbl_1_data_738[arg0].unk_04); + Center.y = lbl_1_data_738[arg0].unk_08 + arg8 * (lbl_1_data_738[arg1].unk_08 - lbl_1_data_738[arg0].unk_08); + Center.z = lbl_1_data_738[arg0].unk_0C + arg8 * (lbl_1_data_738[arg1].unk_0C - lbl_1_data_738[arg0].unk_0C); + CRot.x = lbl_1_data_738[arg0].unk_10 + arg8 * (lbl_1_data_738[arg1].unk_10 - lbl_1_data_738[arg0].unk_10); + CRot.y = lbl_1_data_738[arg0].unk_14 + arg8 * (lbl_1_data_738[arg1].unk_14 - lbl_1_data_738[arg0].unk_14); + CRot.z = lbl_1_data_738[arg0].unk_18 + arg8 * (lbl_1_data_738[arg1].unk_18 - lbl_1_data_738[arg0].unk_18); +} + +void fn_1_66DC(omObjData *object) +{ + CameraData *var_r31; + + var_r31 = Hu3DCamera; + switch (fn_1_38C()) { + case 1: + fn_1_648C(0, 1, 1.0 - cosd(90.0f * lbl_1_bss_4)); + if (lbl_1_bss_4 < 1.0f) { + lbl_1_bss_4 += 0.007999999f; + if (lbl_1_bss_4 > 1.0f) { + lbl_1_bss_4 = 1.0f; + } + } + break; + case 3: + Center.x += 2.0000002f; + Hu3DShadowData.unk_14.x = 1000.0f + var_r31->pos.x; + Hu3DShadowData.unk_20.x = Hu3DShadowData.unk_14.x - 1500.0f; + break; + case 6: + fn_1_648C(1, 1, 0.0f); + break; + case 7: + if (Center.x < 3000.0f) { + Center.x += 25.0f; + } + default: + break; + } +} diff --git a/src/REL/messDll/main.c b/src/REL/messDll/main.c index 5ef28622..38c846f0 100755 --- a/src/REL/messDll/main.c +++ b/src/REL/messDll/main.c @@ -8,7 +8,7 @@ #include "game/wipe.h" #include "dolphin.h" -#include "math.h" +#include "ext_math.h" #include "rel_sqrt_consts.h" extern s32 sprintf(char*, const char*, s32); @@ -68,25 +68,25 @@ static void fn_1_300(omObjData *arg0) { CRot.y += HuPadSubStkX[0] / 20; CZoom += HuPadTrigL[0] / 2; CZoom -= HuPadTrigR[0] / 2; - sp2C.x = Center.x + CZoom * (sin(CRot.y * M_PI / 180.0) * cos(CRot.x * M_PI / 180.0)); - sp2C.y = Center.y + CZoom * -sin(CRot.x * M_PI / 180.0); - sp2C.z = Center.z + CZoom * (cos(CRot.y * M_PI / 180.0) * cos(CRot.x * M_PI / 180.0)); + sp2C.x = Center.x + CZoom * (sind(CRot.y) * cosd(CRot.x)); + sp2C.y = Center.y + CZoom * -sind(CRot.x); + sp2C.z = Center.z + CZoom * (cosd(CRot.y) * cosd(CRot.x)); sp20.x = Center.x - sp2C.x; sp20.y = Center.y - sp2C.y; sp20.z = Center.z - sp2C.z; - sp14.x = sin(CRot.y * M_PI / 180.0) * sin(CRot.x * M_PI / 180.0); - sp14.y = cos(CRot.x * M_PI / 180.0); - sp14.z = cos(CRot.y * M_PI / 180.0) * sin(CRot.x * M_PI / 180.0); + sp14.x = sind(CRot.y) * sind(CRot.x); + sp14.y = cosd(CRot.x); + sp14.z = cosd(CRot.y) * sind(CRot.x); temp_f31 = CRot.z; - sp8.x = sp14.x * (sp20.x * sp20.x + (1.0f - sp20.x * sp20.x) * cos(temp_f31 * M_PI / 180.0)) - + sp14.y * (sp20.x * sp20.y * (1.0 - cos(temp_f31 * M_PI / 180.0)) - sp20.z * sin(temp_f31 * M_PI / 180.0)) - + sp14.z * (sp20.x * sp20.z * (1.0 - cos(temp_f31 * M_PI / 180.0)) + sp20.y * sin(temp_f31 * M_PI / 180.0)); - sp8.y = sp14.x * (sp20.x * sp20.y * (1.0 - cos(temp_f31 * M_PI / 180.0)) + sp20.z * sin(temp_f31 * M_PI / 180.0)) - + sp14.y * (sp20.y * sp20.y + (1.0f - sp20.y * sp20.y) * cos(temp_f31 * M_PI / 180.0)) - + sp14.z * (sp20.y * sp20.z * (1.0 - cos(temp_f31 * M_PI / 180.0)) - sp20.x * sin(temp_f31 * M_PI / 180.0)); - sp8.z = sp14.x * (sp20.x * sp20.z * (1.0 - cos(temp_f31 * M_PI / 180.0)) - sp20.y * sin(temp_f31 * M_PI / 180.0)) - + sp14.y * (sp20.y * sp20.z * (1.0 - cos(temp_f31 * M_PI / 180.0)) + sp20.x * sin(temp_f31 * M_PI / 180.0)) - + sp14.z * (sp20.z * sp20.z + (1.0f - sp20.z * sp20.z) * cos(temp_f31 * M_PI / 180.0)); + sp8.x = sp14.x * (sp20.x * sp20.x + (1.0f - sp20.x * sp20.x) * cosd(temp_f31)) + + sp14.y * (sp20.x * sp20.y * (1.0 - cosd(temp_f31)) - sp20.z * sind(temp_f31)) + + sp14.z * (sp20.x * sp20.z * (1.0 - cosd(temp_f31)) + sp20.y * sind(temp_f31)); + sp8.y = sp14.x * (sp20.x * sp20.y * (1.0 - cosd(temp_f31)) + sp20.z * sind(temp_f31)) + + sp14.y * (sp20.y * sp20.y + (1.0f - sp20.y * sp20.y) * cosd(temp_f31)) + + sp14.z * (sp20.y * sp20.z * (1.0 - cosd(temp_f31)) - sp20.x * sind(temp_f31)); + sp8.z = sp14.x * (sp20.x * sp20.z * (1.0 - cosd(temp_f31)) - sp20.y * sind(temp_f31)) + + sp14.y * (sp20.y * sp20.z * (1.0 - cosd(temp_f31)) + sp20.x * sind(temp_f31)) + + sp14.z * (sp20.z * sp20.z + (1.0f - sp20.z * sp20.z) * cosd(temp_f31)); PSVECCrossProduct(&sp14, &sp20, &sp20); PSVECNormalize(&sp20, &sp20); temp_r31 = HuPadSubStkX[0] & 0xF8; diff --git a/src/REL/modeseldll/modesel.c b/src/REL/modeseldll/modesel.c new file mode 100644 index 00000000..f1032d6a --- /dev/null +++ b/src/REL/modeseldll/modesel.c @@ -0,0 +1,261 @@ +#define HUWIN_USE_OLD_DEFS +#include "game/object.h" +#include "game/gamework_data.h" +#include "game/audio.h" +#include "game/wipe.h" +#include "game/window.h" +#include "game/object.h" +#include "game/process.h" +#include "game/hsfman.h" +#include "game/pad.h" +#include "game/hsfanim.h" + +#include "ext_math.h" +#include "REL/modeseldll.h" + +s16 lbl_1_data_80[] = { + 16, 17, 18, + 19, 20, 21 +}; + +s32 lbl_1_data_8C[] = { + 0x630030, + 0x630032, + 0x630034, + 0x630036, + 0x630038, + 0x63003A +}; + +s32 lbl_1_data_A4[] = { + 0x630031, + 0x630033, + 0x630035, + 0x630037, + 0x630039, + 0x63003B +}; + +u32 lbl_1_data_BC[] = { + 0x110001, + 0x110002, + 0x110003, + 0x110004, + 0x110005, + 0x110006 +}; + +s16 lbl_1_bss_82; +s16 lbl_1_bss_80; + +void fn_1_3668(void); + +//Scratch is at https://decomp.me/scratch/iirXp +//Register allocation issues at line 180 with load of 1.0 double constant +s32 fn_1_2490(void) +{ + float sp10[2]; + float sp8[2]; + float temp_f31; + float temp_f30; + s16 temp_r31; + s16 temp_r30; + s16 temp_r29; + s16 temp_r28; + s16 temp_r27; + s16 temp_r26; + s32 temp_r25; + WindowData *temp_r24; + AnimData *temp_r23; + AnimData *temp_r22; + s16 temp_r21; + fn_1_3668(); + fn_1_1EC0(1); + temp_r25 = HuAudFXPlay(2094); + if(omovlevtno) { + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + } + for(temp_r31=0; temp_r31<=20; temp_r31++) { + temp_f31 = 1.0-sind(90.0*(temp_r31/20.0)); + Hu3DModelPosSet(lbl_1_bss_19A[14], 0, -50.0f+(200.0f*temp_f31), 0); + Hu3DModelPosSet(lbl_1_bss_19A[15], 0, -50.0f+(200.0f*temp_f31), 0); + HuPrcVSleep(); + } + HuPrcSleep(20); + Hu3DModelAttrReset(lbl_1_bss_19A[14], 0x40000002); + Hu3DModelAttrReset(lbl_1_bss_19A[15], 0x40000002); + HuAudFXPlay(2093); + HuPrcSleep(120); + HuAudFXPlay(2095); + for(temp_r31=0; temp_r31<=30; temp_r31++) { + temp_f31 = temp_r31/30.0; + Hu3DModelPosSet(lbl_1_bss_19A[14], 0, -50.0f-(20.0f*temp_f31), 0); + HuPrcVSleep(); + } + HuWinMesMaxSizeBetGet(sp10, 0x110000, 0x110006); + lbl_1_bss_82 = HuWinExCreateStyled(-10000, 432-sp10[1], sp10[0], sp10[1], -1, 0); + HuWinMesSpeedSet(lbl_1_bss_82, 0); + temp_r24 = &winData[lbl_1_bss_82]; + temp_r24->active_pad = 1; + HuWinExAnimIn(lbl_1_bss_82); + HuWinMesSet(lbl_1_bss_82, 0x110000); + HuWinMesMaxSizeGet(1, sp8, 0x1A0020); + temp_r29 = HuWinCreate(-10000, 8+(432-sp10[1]-sp8[1]), sp8[0], sp8[1], 0); + HuWinMesSpeedSet(temp_r29, 0); + HuWinBGTPLvlSet(temp_r29, 0); + HuWinMesSet(temp_r29, 0x1A0020); + HuWinDispOff(temp_r29); + while(!Hu3DMotionEndCheck(lbl_1_bss_19A[15])) { + HuPrcVSleep(); + } + Hu3DModelAttrSet(lbl_1_bss_19A[15], 1); + for(temp_r31=0; temp_r31<6; temp_r31++) { + Hu3DModelAttrReset(lbl_1_bss_19A[lbl_1_data_80[temp_r31]], 1); + Hu3DModelAttrSet(lbl_1_bss_19A[lbl_1_data_80[temp_r31]], 0x40000002); + Hu3DMotionTimeSet(lbl_1_bss_19A[lbl_1_data_80[temp_r31]], 0); + Hu3DModelPosSet(lbl_1_bss_19A[lbl_1_data_80[temp_r31]], 0, -50, 0); + } + HuWinMesWait(lbl_1_bss_82); + temp_r26 = 0; + lbl_1_bss_80 = temp_r26; + espAttrReset(lbl_1_bss_152[10], HUSPR_ATTR_DISPOFF); + espBankSet(lbl_1_bss_152[10], 0); + for(temp_r31=0; temp_r31<=10; temp_r31++) { + temp_f31 = temp_r31/10.0f; + Hu3DModelPosSet(lbl_1_bss_19A[lbl_1_data_80[lbl_1_bss_80]], 0, -50, 50.0*sind(90.0f*temp_f31)); + espPosSet(lbl_1_bss_152[10], 288.0, -50.0+(106.0*sind(90.0f*temp_f31))); + HuPrcVSleep(); + } + HuWinMesSet(lbl_1_bss_82, lbl_1_data_BC[lbl_1_bss_80]); + HuWinDispOn(temp_r29); + while(1) { + temp_r30 = 0; + if(HuPadDStkRep[0] & PAD_BUTTON_LEFT) { + temp_r30 = -1; + } else if(HuPadDStkRep[0] & PAD_BUTTON_RIGHT) { + temp_r30 = 1; + } + if(temp_r30) { + if(lbl_1_bss_80+temp_r30 < 0) { + lbl_1_bss_80 = 0; + } else if(lbl_1_bss_80+temp_r30 >= 6) { + lbl_1_bss_80 = 5; + } else { + lbl_1_bss_80 += temp_r30; + } + if(temp_r26 != lbl_1_bss_80) { + HuAudFXPlay(0); + for(temp_r31=0; temp_r31<=10; temp_r31++) { + temp_f31 = temp_r31/10.0f; + Hu3DModelPosSet(lbl_1_bss_19A[lbl_1_data_80[temp_r26]], 0, -50, 50.0*cosd(90.0f*temp_f31)); + Hu3DModelPosSet(lbl_1_bss_19A[lbl_1_data_80[lbl_1_bss_80]], 0, -50, 50.0*sind(90.0f*temp_f31)); + espPosSet(lbl_1_bss_152[10], 288.0, -50.0+(106.0*(1.0-sind(180.0f*temp_f31)))); + if(temp_r31 == 5) { + espBankSet(lbl_1_bss_152[10], lbl_1_bss_80); + } + HuPrcVSleep(); + } + temp_r26 = lbl_1_bss_80; + HuWinMesSet(lbl_1_bss_82, lbl_1_data_BC[lbl_1_bss_80]); + } + } + if(HuPadBtnDown[0] & PAD_BUTTON_A) { + HuAudFXPlay(2); + break; + } else if(HuPadBtnDown[0] & PAD_BUTTON_B) { + HuAudFXPlay(3); + HuAudFXStop(temp_r25); + return -1; + } else { + HuPrcVSleep(); + continue; + } + } + Hu3DModelAttrReset(lbl_1_bss_19A[lbl_1_data_80[lbl_1_bss_80]], 0x40000002); + HuAudSeqAllFadeOut(1000); + for(temp_r31=0; temp_r31<=20; temp_r31++) { + temp_f31 = temp_r31/20.0f; + for(temp_r28=0; temp_r28<6; temp_r28++) { + if(temp_r28 != lbl_1_bss_80) { + Hu3DModelPosSet(lbl_1_bss_19A[lbl_1_data_80[temp_r28]], 0, -50-(300.0*(1.0-cosd(90.0f*temp_f31))), 0); + espPosSet(lbl_1_bss_152[10], 288.0, -50.0+(106.0*(cosd(90.0f*temp_f31)))); + } + } + HuPrcVSleep(); + } + HuWinKill(temp_r29); + HuWinExAnimOut(lbl_1_bss_82); + HuAudFXStop(temp_r25); + temp_r27 = HuSprGrpCreate(1); + temp_r21 = HuTHPSprCreateVol("movie/opmov_c00.thp", 0, 3000, 90.0); + HuSprGrpMemberSet(temp_r27, 0, temp_r21); + HuSprPosSet(temp_r27, 0, 288.0f, 240.0f); + HuSprDrawNoSet(temp_r27, 0, 127); + HuPrcSleep(2); + espAttrSet(lbl_1_bss_152[9], HUSPR_ATTR_DISPOFF); + for(temp_r31=0; temp_r31<=10; temp_r31++) { + temp_f31 = temp_r31/10.0; + Hu3DModelPosSet(lbl_1_bss_19A[14], 0, -70.0f-(100.0f*temp_f31), 0); + HuPrcVSleep(); + } + temp_r23 = HuSprAnimRead(HuDataReadNum(lbl_1_data_8C[lbl_1_bss_80], MEMORY_DEFAULT_NUM)); + temp_r22 = HuSprAnimRead(HuDataReadNum(lbl_1_data_A4[lbl_1_bss_80], MEMORY_DEFAULT_NUM)); + Hu3DAnimCreate(temp_r23, lbl_1_bss_19A[22], "ys002_a1"); + Hu3DAnimCreate(temp_r22, lbl_1_bss_19A[22], "ys002_a2"); + Hu3DModelAttrSet(lbl_1_bss_19A[lbl_1_data_80[lbl_1_bss_80]], 1); + Hu3DMotionTimeSet(lbl_1_bss_19A[22], 0); + Hu3DModelAttrReset(lbl_1_bss_19A[22], 1); + Hu3DModelAttrSet(lbl_1_bss_19A[22], 0x40000002); + Hu3DModelPosSet(lbl_1_bss_19A[22], 0, 27, 50); + Hu3DModelScaleSet(lbl_1_bss_19A[22], 1.0f, 1.063f, 1.0f); + for(temp_r31=1; temp_r31<=20; temp_r31++) { + temp_f31 = temp_r31/20.0; + Hu3DModelPosSet(lbl_1_bss_19A[22], 0, 27.0-(60.0*sind(90.0f*temp_f31)), 50); + HuPrcVSleep(); + } + HuPrcSleep(90); + Hu3DFogSet(3000, 8000, 255, 255, 255); + Hu3DModelAttrReset(lbl_1_bss_19A[22], 0x40000002); + HuPrcSleep(60); + temp_f31 =0; + temp_f30 = 5; + while(!HuTHPEndCheck()) { + Hu3DModelPosSet(lbl_1_bss_19A[22], 0, -33.0f+(temp_f31/30.0f), 50.0f-temp_f31); + temp_f31 += temp_f30; + temp_f30 += 5.0f; + HuPrcVSleep(); + } + _ClearFlag(0x1000B); + WipeColorSet(255, 255, 255); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 10); + while(WipeStatGet()) { + HuPrcVSleep(); + } + HuTHPClose(); + HuSprGrpKill(temp_r27); + return lbl_1_bss_80; +} + +void fn_1_3668(void) +{ + Vec sp20; + Vec sp14; + Vec sp8; + Hu3DShadowCreate(20, 100, 5000); + Hu3DShadowTPLvlSet(0.3f); + Hu3DShadowSizeSet(192); + sp14.x = sp14.y = sp14.z = 0; + sp20.x = 0; + sp20.z = 300; + sp20.y = 400; + sp8.x = 0; + sp8.y = 1; + sp8.z = 0; + Hu3DShadowPosSet(&sp20, &sp8, &sp14); + Hu3DModelAttrReset(lbl_1_bss_19A[15], 1); + Hu3DModelAttrSet(lbl_1_bss_19A[15], 0x40000002); + Hu3DMotionTimeSet(lbl_1_bss_19A[15], 0); + Hu3DModelAttrReset(lbl_1_bss_19A[14], 1); + Hu3DModelAttrSet(lbl_1_bss_19A[14], 0x40000002); + Hu3DMotionTimeSet(lbl_1_bss_19A[14], 0); +} \ No newline at end of file diff --git a/src/REL/mstory4Dll/main.c b/src/REL/mstory4Dll/main.c index 4a3f2661..38dc9400 100644 --- a/src/REL/mstory4Dll/main.c +++ b/src/REL/mstory4Dll/main.c @@ -453,7 +453,7 @@ void fn_1_EC(void) } } -int _prolog(void) { +s32 _prolog(void) { const VoidFunc* ctors = _ctors; while (*ctors != 0) { (**ctors)(); diff --git a/src/REL/option/rumble.c b/src/REL/option/rumble.c index 2b21ac52..5bb0ae3a 100755 --- a/src/REL/option/rumble.c +++ b/src/REL/option/rumble.c @@ -129,13 +129,13 @@ static void fn_1_32F0(omObjData *arg0) { fn_1_39E0(temp_r31->unk00, 1, 1); temp_r31->unk20 = 1; temp_r31->unk28 = 0; - GWRumbleSet(1); + GWRumbleSet(1); arg0->unk10 = 3; } else if (fn_1_584(4) != 0 && temp_r31->unk20 != 0) { fn_1_39E0(temp_r31->unk00, 0, 1); temp_r31->unk20 = 0; temp_r31->unk28 = 0; - GWRumbleSet(0); + GWRumbleSet(0); arg0->unk10 = 3; } } diff --git a/src/REL/present/camera.c b/src/REL/present/camera.c new file mode 100644 index 00000000..95c6a85a --- /dev/null +++ b/src/REL/present/camera.c @@ -0,0 +1,235 @@ +#include "ext_math.h" +#include "game/hsfman.h" +#include "game/pad.h" +#include "game/printfunc.h" + +#include "REL/present.h" + +void fn_1_C20(omObjData *object); + +omObjData *fn_1_6B4(void) +{ + omObjData *var_r30; + UnkPresentCameraStruct *var_r31; + + var_r30 = omAddObjEx(lbl_1_bss_4, 1001, 0, 0, 3, fn_1_BF8); + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, 156, MEMORY_DEFAULT_NUM); + var_r30->data = var_r31; + + var_r31->pos.x = 0.0f; + var_r31->pos.y = 0.0f; + var_r31->pos.z = 0.0f; + + var_r31->target.x = 0.0f; + var_r31->target.y = 0.0f; + var_r31->target.z = 0.0f; + + var_r31->up.x = 0.0f; + var_r31->up.y = 1.0f; + var_r31->up.z = 0.0f; + + var_r31->unk_24 = 0.0f; + var_r31->unk_28 = 0.0f; + var_r31->unk_8C = 1.0f; + var_r31->unk_84 = 1.0f; + var_r31->unk_94 = 1.0f; + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraPerspectiveSet(1, 42.0f, 10.0f, 8000.0f, 1.2f); + fn_1_9A4(var_r30, 0.0f, 0.0f, -600.0f, 1); + fn_1_920(var_r30, 0.0f, 220.0f, 250.0f, 1); + + return var_r30; +} + +void fn_1_8F0(omObjData *object) +{ + HuMemDirectFree(object->data); +} + +void fn_1_920(omObjData *object, float arg8, float arg9, float argA, s32 arg1) +{ + UnkPresentCameraStruct *var_r31; + + var_r31 = object->data; + var_r31->unk_58.x = arg8; + var_r31->unk_58.y = arg9; + var_r31->unk_58.z = argA; + + var_r31->unk_2C = var_r31->pos; + var_r31->unk_84 = 0.0f; + var_r31->unk_88 = 1.0f / arg1; +} + +void fn_1_9A4(omObjData *object, float arg8, float arg9, float argA, s32 arg1) +{ + UnkPresentCameraStruct *var_r31; + + var_r31 = object->data; + var_r31->unk_64.x = arg8; + var_r31->unk_64.y = arg9; + var_r31->unk_64.z = argA; + + var_r31->unk_38 = var_r31->target; + var_r31->unk_8C = 0.0f; + var_r31->unk_90 = 1.0f / arg1; +} + +void fn_1_A28(omObjData *object, s32 arg1, float arg8, float arg9, float argA) +{ + UnkPresentCameraStruct *var_r31; + + var_r31 = object->data; + var_r31->unk_64.y = argA; + var_r31->unk_7C = arg8; + var_r31->unk_80 = arg9; + + var_r31->unk_38.y = var_r31->target.y; + var_r31->unk_50 = var_r31->unk_24; + var_r31->unk_54 = var_r31->unk_28; + var_r31->unk_94 = 0.0f; + var_r31->unk_98 = 1.0f / arg1; +} + +float fn_1_AAC(omObjData *object) +{ + UnkPresentCameraStruct *var_r31; + float var_f31; + + var_r31 = object->data; + var_f31 = var_r31->unk_24; + return var_f31; +} + +float fn_1_ADC(omObjData *object) +{ + UnkPresentCameraStruct *var_r31; + float var_f31; + + var_r31 = object->data; + var_f31 = var_r31->unk_28; + return var_f31; +} + +void fn_1_B0C(omObjData *object, float *arg1, float *arg2, float *arg3) +{ + UnkPresentCameraStruct *var_r31; + + var_r31 = object->data; + *arg1 = var_r31->pos.x; + *arg2 = var_r31->pos.y; + *arg3 = var_r31->pos.z; +} + +void fn_1_B3C(omObjData *object, float *arg1, float *arg2, float *arg3) +{ + UnkPresentCameraStruct *var_r31; + + var_r31 = object->data; + *arg1 = var_r31->target.x; + *arg2 = var_r31->target.y; + *arg3 = var_r31->target.z; +} + +s32 fn_1_B6C(omObjData *object) +{ + UnkPresentCameraStruct *var_r31; + s32 var_r30; + s32 var_r29; + + var_r31 = object->data; + var_r30 = 1; + var_r29 = 1; + if (!(var_r31->unk_8C < 1.0f) && !(var_r31->unk_94 < 1.0f)) { + var_r29 = 0; + } + if (!var_r29 && !(var_r31->unk_84 < 1.0f)) { + var_r30 = 0; + } + return var_r30; +} + +void fn_1_BF8(omObjData *object) +{ + fn_1_C20(object); +} + +void fn_1_C20(omObjData *object) +{ + UnkPresentCameraStruct *var_r31; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + + var_r31 = object->data; + if (var_r31->unk_84 < 1.0f) { + var_f28 = sind(90.0f * var_r31->unk_84); + var_r31->pos.x = var_r31->unk_2C.x + var_f28 * (var_r31->unk_58.x - var_r31->unk_2C.x); + var_r31->pos.y = var_r31->unk_2C.y + var_f28 * (var_r31->unk_58.y - var_r31->unk_2C.y); + var_r31->pos.z = var_r31->unk_2C.z + var_f28 * (var_r31->unk_58.z - var_r31->unk_2C.z); + + if ((var_r31->unk_84 += var_r31->unk_88) >= 1.0f) { + var_r31->pos = var_r31->unk_58; + } + } + if (var_r31->unk_8C < 1.0f) { + var_f28 = sind(90.0f * var_r31->unk_8C); + var_r31->target.x = var_r31->unk_38.x + var_f28 * (var_r31->unk_64.x - var_r31->unk_38.x); + var_r31->target.y = var_r31->unk_38.y + var_f28 * (var_r31->unk_64.y - var_r31->unk_38.y); + var_r31->target.z = var_r31->unk_38.z + var_f28 * (var_r31->unk_64.z - var_r31->unk_38.z); + + if ((var_r31->unk_8C += var_r31->unk_90) >= 1.0f) { + var_r31->target = var_r31->unk_64; + } + } + if (var_r31->unk_94 < 1.0f) { + var_f28 = sind(90.0f * var_r31->unk_94); + var_r31->target.y = var_r31->unk_38.y + (var_f28 * (var_r31->unk_64.y - var_r31->unk_38.y)); + var_r31->unk_24 = var_r31->unk_50 + (var_f28 * (var_r31->unk_7C - var_r31->unk_50)); + var_r31->unk_28 = var_r31->unk_54 + (var_f28 * (var_r31->unk_80 - var_r31->unk_54)); + + if ((var_r31->unk_94 += var_r31->unk_98) >= 1.0f) { + var_r31->target.y = var_r31->unk_64.y; + var_r31->unk_24 = var_r31->unk_7C; + var_r31->unk_28 = var_r31->unk_80; + } + var_r31->target.x = var_r31->unk_24 * -sind(var_r31->unk_28); + var_r31->target.z = var_r31->unk_24 * cosd(var_r31->unk_28); + } + var_f31 = var_r31->target.x - var_r31->pos.x; + var_f30 = var_r31->target.z - var_r31->pos.z; + + var_r31->unk_24 = sqrtf(var_f31 * var_f31 + var_f30 * var_f30); + var_r31->unk_28 = fmod(-atan2d(var_f31, var_f30), 360.0); + if (var_r31->unk_28 < 0.0f) { + var_r31->unk_28 += 360.0f; + } + Hu3DCameraPosSet(1, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z, var_r31->up.x, var_r31->up.y, var_r31->up.z, var_r31->target.x, + var_r31->target.y, var_r31->target.z); +} + +void fn_1_1198(omObjData *object) +{ + UnkPresentCameraStruct *var_r31; + + if (HuPadBtn[0] & PAD_BUTTON_B) { + var_r31 = object->data; + var_r31->target.x = var_r31->target.x + (0.5f * HuPadStkX[0]); + var_r31->target.y = var_r31->target.y + (0.5f * HuPadStkY[0]); + var_r31->pos.z = var_r31->pos.z + (0.5f * HuPadTrigL[0]); + var_r31->pos.z = var_r31->pos.z - (0.5f * HuPadTrigR[0]); + var_r31->pos.x = var_r31->pos.x + (0.5f * HuPadSubStkY[0]); + var_r31->pos.y = var_r31->pos.y + (0.5f * HuPadSubStkX[0]); + } +} + +void fn_1_1398(omObjData *object) +{ + UnkPresentCameraStruct *var_r31; + + var_r31 = object->data; + print8(32, 64, 1.5f, "AT : x=%.2f y=%.2f z=%.2f", var_r31->target.x, var_r31->target.y, var_r31->target.z); + print8(32, 80, 1.5f, "EYE : x=%.2f y=%.2f z=%.2f", var_r31->pos.x, var_r31->pos.y, var_r31->pos.z); + print8(32, 96, 1.5f, "R : %.2f DEG: %.2f", var_r31->unk_24, var_r31->unk_28); +} diff --git a/src/REL/present/common.c b/src/REL/present/common.c new file mode 100644 index 00000000..c06f944d --- /dev/null +++ b/src/REL/present/common.c @@ -0,0 +1,227 @@ +#include "ext_math.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" + +#include "REL/present.h" + +void fn_1_4620(omObjData *arg0); +void fn_1_4880(omObjData *arg0); + +omObjFunc lbl_1_data_1A0[] = { NULL, fn_1_4620, fn_1_4880 }; + +static const s32 lbl_1_rodata_BD8[] = { 0x006E0089, 0x006E008A, 0x006E008B }; + +void fn_1_4A04(omObjData *object); +float fn_1_4CEC(float arg8, float arg9, float argA); + +omObjData *fn_1_42F4(void) +{ + omObjData *var_r31; + s32 var_lr; + s32 var_r29; + UnkPresentStruct5 *var_r30; + + var_r31 = omAddObjEx(lbl_1_bss_4, 1002, 1, 3, 2, NULL); + var_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, 88, MEMORY_DEFAULT_NUM); + var_r31->data = var_r30; + var_r30->x = 0.0f; + var_r30->z = 0.0f; + var_r30->y = 0.0f; + var_r30->unk_20 = 0.0f; + var_r30->unk_24 = 0.0f; + var_r30->unk_28 = 0.0f; + var_r30->unk_2C = 0.0f; + var_r30->unk_34 = 0.0f; + var_r30->unk_30 = 0.0f; + var_r31->model[0] = Hu3DModelCreate(HuDataReadNum(0x6E0088, MEMORY_DEFAULT_NUM)); + Hu3DModelLayerSet(var_r31->model[0], 1); + + for (var_r29 = 0; var_r29 < 3; var_r29++) { + var_r31->motion[var_r29] = Hu3DJointMotion(var_r31->model[0], HuDataSelHeapReadNum(lbl_1_rodata_BD8[var_r29], MEMORY_DEFAULT_NUM, HEAP_DATA)); + } + Hu3DMotionShiftSet(var_r31->model[0], var_r31->motion[var_r30->unk_04 = 0], 0.0f, 8.0f, 0x40000001); + var_r30->unk_50 = CharModelEffectNpcInit(var_r31->model[0], var_r31->motion[2], 1, 10); + var_r30->unk_54 = CharModelEffectNpcInit(var_r31->model[0], var_r31->motion[1], 0, 10); + CharModelLayerSetAll(1); + Hu3DModelShadowSet(var_r31->model[0]); + fn_1_45C0(var_r31, 0); + fn_1_4A04(var_r31); + Hu3DModelAttrSet(var_r31->model[0], 1); + + return var_r31; +} + +void fn_1_4534(omObjData *object) +{ + s32 var_r31; + void *var_r29; + void *var_r30; + + var_r29 = object->data; + + for (var_r31 = 0; var_r31 < 1; var_r31++) { + Hu3DModelKill(object->model[var_r31]); + } + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + Hu3DMotionKill(object->motion[var_r31]); + } + HuMemDirectFree(var_r29); +} + +void fn_1_45C0(omObjData *object, s32 arg1) +{ + UnkPresentStruct5 *var_r31; + + var_r31 = object->data; + var_r31->unk_00 = arg1; + object->func = lbl_1_data_1A0[arg1]; + object->unk10 = 0; + object->unk10 = 0; +} + +s32 fn_1_4604(omObjData *object) +{ + s32 *var_r31; + + var_r31 = object->data; + return *var_r31; +} + +void fn_1_4620(omObjData *object) +{ + float var_f31; + omObjData *var_r30; + void *var_r29; + UnkPresentStruct5 *var_r31; + + var_r31 = object->data; + switch (object->unk10) { + case 0: + Hu3DModelAttrReset(object->model[0], 1); + var_r31->x = -300.0f; + var_r31->z = -180.0f; + var_r31->unk_48 = 0.0f; + var_r31->unk_4C = 0.025f; + object->unk10 = 1; + case 1: + var_f31 = sind(90.0f * var_r31->unk_48); + var_f31 *= var_f31; + var_r31->unk_14 = -300.0f + (300.0f * var_f31); + var_r31->unk_2C = var_r31->unk_14 - var_r31->x; + if ((var_r31->unk_48 = var_r31->unk_48 + var_r31->unk_4C) < 1.0f) { + break; + } + var_r31->x = 0.0f; + var_r31->unk_48 = 0.0f; + var_r31->unk_4C = 0.05f; + object->unk10 = 2; + case 2: + var_r31->unk_2C = 0.0f; + var_r31->unk_34 = 0.01f; + if ((var_r31->unk_48 = var_r31->unk_48 + var_r31->unk_4C) < 1.0f) { + break; + } + var_r31->unk_24 = 0.0f; + var_r31->unk_2C = 0.0f; + var_r31->unk_30 = 0.0f; + var_r31->unk_34 = 0.0f; + object->unk10 = 3; + case 3: + fn_1_45C0(object, 0); + break; + default: + break; + } + fn_1_4A04(object); +} + +void fn_1_4880(omObjData *object) +{ + float var_f31; + UnkPresentStruct5 *var_r30; + void *var_r29; + + var_r30 = object->data; + switch (object->unk10) { + case 0: + var_r30->unk_48 = 0.0f; + var_r30->unk_4C = 0.025f; + Hu3DModelAttrReset(object->model[0], 1); + object->unk10 = 1; + case 1: + var_f31 = sind(90.0f * var_r30->unk_48); + var_f31 *= var_f31; + var_r30->unk_14 = -(300.0f * var_f31); + var_r30->unk_2C = var_r30->unk_14 - var_r30->x; + if ((var_r30->unk_48 = var_r30->unk_48 + var_r30->unk_4C) < 1.0f) { + break; + } + object->unk10 = 2; + case 2: + Hu3DModelAttrSet(object->model[0], 1); + fn_1_45C0(object, 0); + break; + default: + break; + } + fn_1_4A04(object); + (void)object; +} + +void fn_1_4A04(omObjData *object) +{ + float var_f29; + float var_f30; + s16 var_r29; + UnkPresentStruct5 *var_r31; + + var_r31 = object->data; + var_r29 = 0; + var_f30 = var_r31->unk_2C * var_r31->unk_2C + var_r31->unk_34 * var_r31->unk_34; + var_r31->unk_38 = sqrtf(var_f30); + if (0.001f <= var_r31->unk_38) { + if (12.0f <= var_r31->unk_38) { + var_r31->unk_2C = var_r31->unk_2C / var_r31->unk_38; + var_r31->unk_34 = var_r31->unk_34 / var_r31->unk_38; + var_r31->unk_38 = 12.0f; + var_r31->unk_2C = 12.0f * var_r31->unk_2C; + var_r31->unk_34 = 12.0f * var_r31->unk_34; + } + var_r31->unk_24 = fn_1_4CEC(var_r31->unk_24, atan2d(var_r31->unk_2C, var_r31->unk_34), 0.4f); + + if (8.0f <= var_r31->unk_38) { + var_r29 = 2; + } else { + var_r29 = 1; + } + } + var_r31->x = var_r31->x + var_r31->unk_2C; + var_r31->z = var_r31->z + var_r31->unk_34; + if (var_r31->unk_04 != var_r29) { + Hu3DMotionShiftSet(object->model[0], object->motion[var_r31->unk_04 = var_r29], 0.0f, 8.0f, 0x40000001); // or 0x41000000 + } + omSetTra(object, var_r31->x, var_r31->y, var_r31->z); + omSetRot(object, var_r31->unk_20, var_r31->unk_24, var_r31->unk_28); +} + +float fn_1_4CEC(float arg8, float arg9, float argA) +{ + float var_f30; + float var_f31; + + var_f31 = fmod(arg9 - arg8, 360.0f); + if (0.0f > var_f31) { + var_f31 += 360.0f; + } + if (180.0f < var_f31) { + var_f31 -= 360.0f; + } + var_f30 = fmod(arg8 + (var_f31 * argA), 360.0f); + if (0.0f > var_f30) { + var_f30 += 360.0f; + } + return var_f30; +} diff --git a/src/REL/present/init.c b/src/REL/present/init.c new file mode 100644 index 00000000..fabc34fa --- /dev/null +++ b/src/REL/present/init.c @@ -0,0 +1,176 @@ +#include "game/audio.h" +#include "game/esprite.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/process.h" +#include "game/wipe.h" +#include "rel_sqrt_consts.h" + +#include "REL/present.h" + +omObjData *lbl_1_bss_18; +omObjData *lbl_1_bss_14; +omObjData *lbl_1_bss_10; +omObjData *lbl_1_bss_C; +omObjData *lbl_1_bss_8; +Process *lbl_1_bss_4; +omObjData *lbl_1_bss_0; + +void fn_1_254(void); +void fn_1_45C(void); +void fn_1_5EC(omObjData *object); + +void ModuleProlog(void) +{ + lbl_1_bss_4 = omInitObjMan(150, 8192); + omGameSysInit(lbl_1_bss_4); + HuWinInit(1); + lbl_1_bss_0 = omAddObjEx(lbl_1_bss_4, 1000, 0, 0, 0, fn_1_5EC); + lbl_1_bss_0->unk10 = 0; + lbl_1_bss_18 = fn_1_39A8(); +} + +void fn_1_144(s16 arg0, s32 arg1, s32 arg2) +{ + Process *var_r30; + UnkPresentStruct6 *var_r31; + + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkPresentStruct6), MEMORY_DEFAULT_NUM); + var_r31->unk_00 = arg0; + var_r31->unk_08 = 1.0f / arg2; + if (arg1) { + var_r31->unk_08 = var_r31->unk_08; + var_r31->unk_04 = 0.0f; + } else { + var_r31->unk_08 = -var_r31->unk_08; + var_r31->unk_04 = 1.0f; + } + espDispOn(var_r31->unk_00); + espTPLvlSet(var_r31->unk_00, var_r31->unk_04); + var_r30 = HuPrcChildCreate(fn_1_254, 100, 5376, 0, HuPrcCurrentGet()); + var_r30->user_data = var_r31; +} + +void fn_1_254(void) +{ + UnkPresentStruct6 *var_r31; + + var_r31 = HuPrcCurrentGet()->user_data; + while (TRUE) { + var_r31->unk_04 = var_r31->unk_04 + var_r31->unk_08; + if (var_r31->unk_04 > 1.0f) { + var_r31->unk_04 = 1.0f; + break; + } else if (var_r31->unk_04 < 0.0f) { + var_r31->unk_04 = 0.0f; + break; + } else { + espTPLvlSet(var_r31->unk_00, var_r31->unk_04); + HuPrcVSleep(); + } + } + espTPLvlSet(var_r31->unk_00, var_r31->unk_04); + if (var_r31->unk_08 < 0.0f) { + espDispOff(var_r31->unk_00); + } + HuMemDirectFree(var_r31); + HuPrcEnd(); +} + +void fn_1_334(s16 arg0, s32 arg1, float arg8, s32 arg2) +{ + Process *var_r30; + UnkPresentStruct6Weird *var_r31; // TODO correct type? why are only 12 bytes allocated? + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, 12, MEMORY_DEFAULT_NUM); + var_r31->unk_00 = arg0; + var_r31->unk_0C = 1.0f / arg2; + var_r31->unk_04 = arg8; + + if (arg1) { + var_r31->unk_0C = var_r31->unk_0C; + var_r31->unk_08 = 0.0f; + } else { + var_r31->unk_0C = -var_r31->unk_0C; + var_r31->unk_08 = 1.0f; + } + Hu3DModelTPLvlSet(var_r31->unk_00, var_r31->unk_08 * var_r31->unk_04); + Hu3DModelAttrReset(var_r31->unk_00, 1); + var_r30 = HuPrcChildCreate(fn_1_45C, 100, 5376, 0, HuPrcCurrentGet()); + var_r30->user_data = var_r31; +} + +void fn_1_45C(void) +{ + UnkPresentStruct6Weird *var_r31; // TODO correct type? how is 0C possible? + + var_r31 = HuPrcCurrentGet()->user_data; + while (TRUE) { + var_r31->unk_08 = var_r31->unk_08 + var_r31->unk_0C; + if (var_r31->unk_08 > 1.0f) { + var_r31->unk_08 = 1.0f; + break; + } else if (var_r31->unk_08 < 0.0f) { + var_r31->unk_08 = 0.0f; + break; + } else { + Hu3DModelTPLvlSet(var_r31->unk_00, var_r31->unk_08 * var_r31->unk_04); + HuPrcVSleep(); + } + } + Hu3DModelTPLvlSet(var_r31->unk_00, var_r31->unk_08 * var_r31->unk_04); + if (var_r31->unk_0C < 0.0f) { + Hu3DModelAttrSet(var_r31->unk_00, 1); + } + HuMemDirectFree(var_r31); + HuPrcEnd(); +} + +u32 fn_1_550(u16 arg0) +{ + u32 var_r31; + + var_r31 = HuPadBtnDown[0] & arg0; + return var_r31 != 0; +} + +u32 fn_1_584(u16 arg0) +{ + u32 var_r31; + + var_r31 = HuPadDStkRep[0] & arg0; + return var_r31 != 0; +} + +u32 fn_1_5B8(u16 arg0) +{ + u32 var_r31; + + var_r31 = HuPadDStk[0] & arg0; + return var_r31 != 0; +} + +void fn_1_5EC(omObjData *object) +{ + switch (object->unk10) { + case 0: + object->unk10 = 1; + case 1: + if (!omSysExitReq) { + break; + } + object->unk10 = 2; + case 2: + WipeCreate(2, 0, 60); + HuAudFadeOut(1000); + object->unk10 = 3; + break; + case 3: + if (!WipeStatGet()) { + fn_1_3B18(lbl_1_bss_18); + omOvlReturnEx(1, 1); + } + break; + default: + break; + } +} diff --git a/src/REL/present/main.c b/src/REL/present/main.c new file mode 100644 index 00000000..6542a7b7 --- /dev/null +++ b/src/REL/present/main.c @@ -0,0 +1,311 @@ +#include "game/audio.h" +#include "game/hsfman.h" +#include "game/object.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + +#include "REL/present.h" + +omObjData *lbl_1_bss_20; + +UnkPresentStruct4 lbl_1_data_F0 = { { 0.0f, 3000.0f, 1.0f }, { 0.0f, 1.0f, 0.0f }, { 0.0f, 0.0f, 0.0f } }; + +void fn_1_3B8C(omObjData *object); +void fn_1_3DB8(omObjData *object); +void fn_1_4040(UnkWindowDataStruct *arg0); +void fn_1_4190(UnkWindowDataStruct *arg0); +void fn_1_41E0(void); +void fn_1_41BC(UnkWindowDataStruct *arg0, s32 arg1); + +omObjData *fn_1_39A8(void) +{ + omObjData *object; + UnkPresentStruct *var_r30; + + object = omAddObjEx(lbl_1_bss_4, 1000, 0, 0, 4, NULL); + var_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkPresentStruct), MEMORY_DEFAULT_NUM); + object->data = var_r30; + var_r30->unk_04 = 0; + lbl_1_bss_8 = fn_1_6B4(); + lbl_1_bss_10 = fn_1_1458(); + lbl_1_bss_20 = fn_1_42F4(); + var_r30->unk_00 = fn_1_3EA4(0); + Hu3DShadowCreate(30.0f, 20.0f, 5000.0f); + Hu3DShadowTPLvlSet(0.45f); + Hu3DShadowPosSet(&lbl_1_data_F0.unk_00, &lbl_1_data_F0.unk_0C, &lbl_1_data_F0.unk_18); + if (omovlevtno > 0) { + OSReport("*** PRESENTROOM ( PRESENT GET MODE ) ***\n"); + object->func = fn_1_3DB8; + object->unk10 = 0; + } else { + OSReport("*** PRESENTROOM ( PRESENT VIEW MODE ) ***\n"); + object->func = fn_1_3B8C; + object->unk10 = 0; + } + + return object; +} + +void fn_1_3B18(omObjData *object) +{ + UnkWindowDataStruct **var_r31; + + var_r31 = object->data; + fn_1_8F0(lbl_1_bss_8); + fn_1_1784(lbl_1_bss_10); + fn_1_4534(lbl_1_bss_20); + fn_1_4040(*var_r31); + HuMemDirectFree(var_r31); +} + +void fn_1_3B8C(omObjData *object) +{ + UnkPresentStruct *var_r30; + + var_r30 = object->data; + + switch (object->unk10) { + case 0: + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + object->unk10 = 1; + case 1: + if (WipeStatGet()) { + return; + } + object->unk10 = 2; + case 2: + fn_1_180C(lbl_1_bss_10, 1); + object->unk10 = 3; + case 3: + if (fn_1_1850(lbl_1_bss_10)) { + return; + } + object->unk10 = 4; + case 4: + fn_1_45C0(lbl_1_bss_20, 1); + object->unk10 = 5; + case 5: + if (fn_1_4604(lbl_1_bss_20)) { + return; + } + object->unk10 = 6; + case 6: + HuAudFXPlay(66); + fn_1_4080(var_r30->unk_00); + fn_1_40B0(var_r30->unk_00, 0x320002); + object->unk10 = 7; + case 7: + if (var_r30->unk_00->unk_20) { + return; + } + fn_1_41BC(var_r30->unk_00, 1); + object->unk10 = 8; + case 8: + if (var_r30->unk_00->unk_20) { + return; + } + fn_1_4098(var_r30->unk_00); + if (!var_r30->unk_00->choice) { + var_r30->unk_04 = 0; + object->unk10 = 11; + return; + } else { + object->unk10 = 9; + return; + } + case 9: + fn_1_45C0(lbl_1_bss_20, 2); + object->unk10 = 10; + return; + case 10: + if (fn_1_4604(lbl_1_bss_20)) { + return; + } + object->unk10 = 2; + return; + case 11: + object->unk10 = 12; + var_r30->unk_04 = 0; + case 12: + if (var_r30->unk_00->unk_20) { + return; + } + if (var_r30->unk_04++ >= 60) { + omSysExitReq = 1; + object->func = NULL; + object->unk10 = 0; + } + default: + break; + } +} + +void fn_1_3DB8(omObjData *arg0) +{ + void *sp8; + + sp8 = arg0->data; + switch (arg0->unk10) { + case 0: + fn_1_186C(lbl_1_bss_10, omovlevtno - 1); + arg0->unk10 = 1; + case 1: + fn_1_180C(lbl_1_bss_10, 3); + arg0->unk10 = 2; + case 2: + if (!fn_1_1850(lbl_1_bss_10)) { + arg0->unk10 = 3; + } else { + break; + } + case 3: + arg0->unk10 = 4; + case 4: + omSysExitReq = 1; + arg0->func = NULL; + arg0->unk10 = 0; + break; + default: + break; + } +} + +UnkWindowDataStruct *fn_1_3EA4(s32 arg0) +{ + UnkWindowDataStruct *var_r31; + + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkWindowDataStruct), MEMORY_DEFAULT_NUM); + var_r31->unk18 = 0; + var_r31->unk10 = 0; + var_r31->unk14 = 0; + var_r31->unk_20 = 0; + var_r31->process = HuPrcChildCreate(fn_1_41E0, 1000, 8192, 0, lbl_1_bss_4); + var_r31->process->user_data = var_r31; + var_r31->unk08 = arg0; + switch (arg0) { + case 0: + var_r31->window = HuWinExCreateStyled(-10000.0f, 360.0f, 480, 80, -1, 1); + HuWinBGTPLvlSet(var_r31->window, 0.8f); + HuWinMesSpeedSet(var_r31->window, 0); + HuWinMesPalSet(var_r31->window, 7, 0, 0, 0); + break; + case 1: + var_r31->window = HuWinExCreateStyled(-10000.0f, 326.0f, 500, 40, -1, 0); + HuWinAttrSet(var_r31->window, 2048); + HuWinBGTPLvlSet(var_r31->window, 0.0f); + HuWinMesSpeedSet(var_r31->window, 0); + break; + } + HuWinDrawNoSet(var_r31->window, 63); + fn_1_4190(var_r31); + HuSprExecLayerSet(63, 2); + return var_r31; +} + +void fn_1_4040(UnkWindowDataStruct *windowData) +{ + HuWinExCleanup(windowData->window); + HuPrcKill(windowData->process); + HuMemDirectFree(windowData); +} + +void fn_1_4080(UnkWindowDataStruct *windowData) +{ + if (!windowData->unk0C) { + windowData->unk_20 = 1; + } +} + +void fn_1_4098(UnkWindowDataStruct *windowData) +{ + if (windowData->unk0C) { + windowData->unk_20 = 2; + } +} + +void fn_1_40B0(UnkWindowDataStruct *windowData, u32 mess) +{ + if (!windowData->unk_20) { + HuWinMesSet(windowData->window, mess); + return; + } + windowData->unk18 = mess; +} + +void fn_1_4104(UnkWindowDataStruct *windowData, u32 mess, s16 index) +{ + HuWinInsertMesSet(windowData->window, mess, index); +} + +void fn_1_4144(UnkWindowDataStruct *windowData, float x, float y) +{ + HuWinPosSet(windowData->window, x, y); +} + +void fn_1_4184(UnkWindowDataStruct *windowData) +{ + windowData->unk0C = 1; +} + +void fn_1_4190(UnkWindowDataStruct *windowData) +{ + windowData->unk0C = 0; +} + +void fn_1_419C(UnkWindowDataStruct *windowData) +{ + if (!windowData->unk_20) { + windowData->unk_20 = 3; + } + windowData->unk10 = 1; +} + +void fn_1_41BC(UnkWindowDataStruct *windowData, s32 arg1) +{ + if (!windowData->unk_20) { + windowData->unk_20 = 4; + } + windowData->unk14 = 1; + windowData->choice = arg1; +} + +void fn_1_41E0(void) +{ + UnkWindowDataStruct *windowData; + + windowData = HuPrcCurrentGet()->user_data; + while (TRUE) { + switch (windowData->unk_20) { + case 1: + windowData->unk0C = 1; + HuWinExAnimIn(windowData->window); + break; + case 2: + HuWinExAnimOut(windowData->window); + windowData->unk0C = 0; + break; + case 3: + winData[windowData->window].active_pad = 1; + HuWinMesWait(windowData->window); + windowData->unk10 = 0; + break; + case 4: + windowData->choice = HuWinChoiceGet(windowData->window, windowData->choice); + windowData->unk14 = 0; + break; + } + if (windowData->unk18 != 0) { + HuWinMesSet(windowData->window, windowData->unk18); + windowData->unk18 = 0; + } + windowData->unk_20 = 0; + if (windowData->unk10 != 0) { + windowData->unk_20 = 3; + } + if (windowData->unk14 != 0) { + windowData->unk_20 = 4; + } + HuPrcVSleep(); + } +} diff --git a/src/REL/present/present.c b/src/REL/present/present.c new file mode 100644 index 00000000..458235f4 --- /dev/null +++ b/src/REL/present/present.c @@ -0,0 +1,868 @@ +#include "ext_math.h" +#include "game/esprite.h" +#include "game/gamework_data.h" +#include "game/hsfdraw.h" +#include "game/hsfex.h" +#include "game/hsfman.h" +#include "game/wipe.h" + +#include "REL/present.h" + +void fn_1_180C(omObjData *object, s32 arg1); +void fn_1_1928(omObjData *arg0); +void fn_1_1FA8(omObjData *object, s32 arg1); +void fn_1_20E8(omObjData *arg0); +void fn_1_268C(omObjData *object, float *arg1, float *arg2, float *arg3); +void fn_1_2708(omObjData *arg0, float arg8, s32 arg1); +void fn_1_2774(omObjData *arg0); +s32 fn_1_28F0(omObjData *object); +void fn_1_2924(omObjData *object); +s32 fn_1_2B84(omObjData *arg0, s32 arg1, s32 arg2); +s32 fn_1_2BCC(omObjData *object, s32 arg1); +s32 fn_1_2C5C(omObjData *object, s32 arg1); +s32 fn_1_3394(s32 arg0); +void fn_1_33AC(omObjData *arg0); +s32 fn_1_393C(s32 arg0, s32 arg1); + +UnkPresentStruct3 lbl_1_data_50 = { { 0.0f, 400.0f, 0.0f }, { 0.0f, -400.0f, -500.0f }, { 255, 255, 255, 255 } }; +omObjFunc lbl_1_data_6C[] = { NULL, fn_1_1928, fn_1_20E8, fn_1_33AC }; + +static const s32 lbl_1_rodata_A0[] = { 0x006E006C, 0x006E006B, 0x006E0000, 0x006E0001, 0x006E0002, 0x006E0003, 0x006E0004, 0x006E0005, 0x006E0006, + 0x006E0007, 0x006E0008, 0x006E0009, 0x006E000A, 0x006E000B, 0x006E000C, 0x006E000D, 0x006E000E, 0x006E000F, 0x006E0010, 0x006E0011, 0x006E0012, + 0x006E0013, 0x006E0014, 0x006E0015, 0x006E0016, 0x006E0017, 0x006E0018, 0x006E0019, 0x006E001A, 0x006E001B, 0x006E001C, 0x006E001D, 0x006E001E, + 0x006E001F, 0x006E0020, 0x006E0021, 0x006E0022, 0x006E0023, 0x006E0024, 0x006E0025, 0x006E0026, 0x006E0027, 0x006E0028, 0x006E0029, 0x006E002A, + 0x006E002B, 0x006E002C, 0x006E002D, 0x006E002E, 0x006E002F, 0x006E0030, 0x006E0031, 0x006E0032, 0x006E0033, 0x006E0034, 0x006E0035, 0x006E0036, + 0x006E0037, 0x006E0038, 0x006E0039, 0x006E003A, 0x006E003B, 0x006E003C, 0x006E003D, 0x006E003E, 0x006E003F, 0x006E0040, 0x006E0041, 0x006E0042, + 0x006E0043, 0x006E0044, 0x006E0045, 0x006E0046, 0x006E0047, 0x006E0048, 0x006E0049, 0x006E004A, 0x006E004B, 0x006E004C, 0x006E004D, 0x006E004E, + 0x006E004F, 0x006E0050, 0x006E0051, 0x006E0052, 0x006E0053, 0x006E0054, 0x006E0055, 0x006E0056, 0x006E0057, 0x006E0058, 0x006E0059, 0x006E005A, + 0x006E005B, 0x006E005C, 0x006E005D, 0x006E005E, 0x006E005F, 0x006E0060, 0x006E0061, 0x006E0062, 0x006E0063, 0x006E0064, 0x006E0065, 0x006E0066, + 0x006E0067, 0x006E0068, 0x006E0069, 0x006E006A, 0x006E006D, 0x006E006F, 0x006E0071, 0x006E0073, 0x006E0075, 0x006E0077, 0x006E0079, 0x006E007B, + 0x006E007D, 0x006E006E, 0x006E0070, 0x006E0072, 0x006E0074, 0x006E0076, 0x006E0078, 0x006E007A, 0x006E007C, 0x006E007F, 0x006E0080, 0x006E0081, + 0x006E0082, 0x006E0083, 0x006E0084, 0x006E0085, 0x006E0086 }; + +static const UnkPresentNestedOuterStruct lbl_1_rodata_2B8[] = { + { 0x00000006, { { 0x00000002, 0x00000008, 0x00320006, 0x00320042 }, { 0x00000003, 0x00000009, 0x00320007, 0x00320043 }, + { 0x00000004, 0x0000000A, 0x00320008, 0x00320044 }, { 0x00000005, 0x0000000B, 0x00320009, 0x00320045 }, + { 0x00000006, 0x0000000C, 0x0032000A, 0x00320046 }, { 0x00000007, 0x0000000D, 0x0032000B, 0x00320047 }, + }, + }, + { 0x00000006, { { 0x0000000E, 0x00000014, 0x0032000C, 0x00320048 }, { 0x0000000F, 0x00000015, 0x0032000D, 0x00320049 }, + { 0x00000010, 0x00000016, 0x0032000E, 0x0032004A }, { 0x00000011, 0x00000017, 0x0032000F, 0x0032004B }, + { 0x00000012, 0x00000018, 0x00320010, 0x0032004C }, { 0x00000013, 0x00000019, 0x00320011, 0x0032004D }, + }, + }, + { 0x00000006, { { 0x0000001A, 0x00000020, 0x00320012, 0x0032004E }, { 0x0000001B, 0x00000021, 0x00320013, 0x0032004F }, + { 0x0000001C, 0x00000022, 0x00320014, 0x00320050 }, { 0x0000001D, 0x00000023, 0x00320015, 0x00320051 }, + { 0x0000001E, 0x00000024, 0x00320016, 0x00320052 }, { 0x0000001F, 0x00000025, 0x00320017, 0x00320053 }, + }, + }, + { 0x00000006, { { 0x00000026, 0x0000002C, 0x00320018, 0x00320054 }, { 0x00000027, 0x0000002D, 0x00320019, 0x00320055 }, + { 0x00000028, 0x0000002E, 0x0032001A, 0x00320056 }, { 0x00000029, 0x0000002F, 0x0032001B, 0x00320057 }, + { 0x0000002A, 0x00000030, 0x0032001C, 0x00320058 }, { 0x0000002B, 0x00000031, 0x0032001D, 0x00320059 }, + }, + }, + { 0x00000006, { { 0x00000032, 0x00000038, 0x0032001E, 0x0032005A }, { 0x00000033, 0x00000039, 0x0032001F, 0x0032005B }, + { 0x00000034, 0x0000003A, 0x00320020, 0x0032005C }, { 0x00000035, 0x0000003B, 0x00320021, 0x0032005D }, + { 0x00000036, 0x0000003C, 0x00320022, 0x0032005E }, { 0x00000037, 0x0000003D, 0x00320023, 0x0032005F }, + }, + }, + { 0x00000001, { { 0x00000001, 0xFFFFFFFF, 0x00320041, 0x00320041 } } }, + { 0x00000006, { { 0x0000003E, 0x00000044, 0x00320024, 0x00320060 }, { 0x0000003F, 0x00000045, 0x00320025, 0x00320061 }, + { 0x00000040, 0x00000046, 0x00320026, 0x00320062 }, { 0x00000041, 0x00000047, 0x00320027, 0x00320063 }, + { 0x00000042, 0x00000048, 0x00320028, 0x00320064 }, { 0x00000043, 0x00000049, 0x00320029, 0x00320065 }, + }, + }, + { 0x00000006, { { 0x0000004A, 0x00000050, 0x0032002A, 0x00320066 }, { 0x0000004B, 0x00000051, 0x0032002B, 0x00320067 }, + { 0x0000004C, 0x00000052, 0x0032002C, 0x00320068 }, { 0x0000004D, 0x00000053, 0x0032002D, 0x00320069 }, + { 0x0000004E, 0x00000054, 0x0032002E, 0x0032006A }, { 0x0000004F, 0x00000055, 0x0032002F, 0x0032006B }, + }, + }, + { 0x00000006, { { 0x00000056, 0x0000005C, 0x00320030, 0x0032006C }, { 0x00000057, 0x0000005D, 0x00320031, 0x0032006D }, + { 0x00000058, 0x0000005E, 0x00320032, 0x0032006E }, { 0x00000059, 0x0000005F, 0x00320033, 0x0032006F }, + { 0x0000005A, 0x00000060, 0x00320034, 0x00320070 }, { 0x0000005B, 0x00000061, 0x00320035, 0x00320071 }, + }, + }, + { 0x0000000B, { { 0x00000062, 0xFFFFFFFF, 0x00320036, 0x00320072 }, { 0x00000063, 0xFFFFFFFF, 0x00320037, 0x00320073 }, + { 0x00000064, 0xFFFFFFFF, 0x00320038, 0x00320074 }, { 0x00000065, 0xFFFFFFFF, 0x00320039, 0x00320075 }, + { 0x00000066, 0xFFFFFFFF, 0x0032003A, 0x00320076 }, { 0x00000067, 0xFFFFFFFF, 0x0032003B, 0x00320077 }, + { 0x00000068, 0xFFFFFFFF, 0x0032003C, 0x00320078 }, { 0x00000069, 0xFFFFFFFF, 0x0032003D, 0x00320079 }, + { 0x0000006A, 0xFFFFFFFF, 0x0032003E, 0x0032007A }, { 0x0000006B, 0xFFFFFFFF, 0x0032003F, 0x0032007B }, + { 0x0000006C, 0xFFFFFFFF, 0x00320040, 0x0032007C } + }, + }, +}; + +omObjData *fn_1_1458(void) +{ + UnkPresentStruct2 *var_r31; + s32 var_r30; + omObjData *var_r29; + s32 var_r28; + s16 var_r27; + LightData *var_r26; + + var_r29 = omAddObjEx(lbl_1_bss_4, 1003, 0, 0, 1, NULL); + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, 868, MEMORY_DEFAULT_NUM); + var_r29->data = var_r31; + var_r31->unk_234 = 0; + var_r31->unk_238 = 0; + var_r31->unk_23C = 0.0f; + var_r31->unk_248 = 1.0f; + var_r31->unk_250 = 0.0f; + + for (var_r30 = 0; var_r30 < 60; var_r30++) { + var_r31->unk_270[var_r30] = GWGameStat.present[var_r30]; + } + + for (var_r30 = 0; var_r30 < 59; var_r30++) { + if (!var_r31->unk_270[var_r30]) { + break; + } + } + if (var_r30 == 59) { + var_r31->unk_270[59] = 1; + } + Hu3DLighInit(); + var_r27 = Hu3DGLightCreateV(&lbl_1_data_50.unk_00, &lbl_1_data_50.unk_0C, &lbl_1_data_50.unk_18); + Hu3DGLightInfinitytSet(var_r27); + Hu3DGLightStaticSet(var_r27, 1); + var_r26 = &Hu3DGlobalLight[var_r27]; + var_r26->unk_00 = var_r26->unk_00 | 0x8000; + + for (var_r30 = 0; var_r30 < 134; var_r30++) { + var_r31->unk_10[var_r30] = omAddObjEx(lbl_1_bss_4, 1003, 1, 0, 1, NULL); + var_r31->unk_10[var_r30]->model[0] = Hu3DModelCreate(HuDataSelHeapReadNum(lbl_1_rodata_A0[var_r30], MEMORY_DEFAULT_NUM, HEAP_DATA)); + Hu3DModelLayerSet(var_r31->unk_10[var_r30]->model[0], 0); + Hu3DModelAttrSet(var_r31->unk_10[var_r30]->model[0], 1); + } + + for (var_r28 = 0; var_r28 < 8; var_r28++) { + for (var_r30 = 0; var_r30 < 6; var_r30++) { + Hu3DModelLayerSet(var_r31->unk_10[var_r30 + 2 + var_r28 * 6 * 2]->model[0], 1); + } + } + Hu3DModelShadowMapSet(var_r31->unk_10[0]->model[0]); + fn_1_2924(var_r29); + var_r31->sprite = espEntry(7209095, 0, 0); + espDispOff(var_r31->sprite); + var_r31->unk_228 = fn_1_3EA4(0); + var_r31->unk_22C = fn_1_3EA4(1); + fn_1_2708(var_r29, var_r31->unk_234 * 36.0f, 1); + fn_1_2774(var_r29); + fn_1_180C(var_r29, 0); + + (void)var_r27; + return var_r29; +} + +void fn_1_1784(omObjData *object) +{ + UnkPresentStruct2 *var_r31; + s32 var_r30; + void *var_r29; + + var_r31 = object->data; + fn_1_4040(var_r31->unk_228); + fn_1_4040(var_r31->unk_22C); + + for (var_r30 = 0; var_r30 < 134; var_r30++) { + Hu3DModelKill(var_r31->unk_10[var_r30]->model[0]); + } + espKill(var_r31->sprite); + HuMemDirectFree(var_r31); +} + +void fn_1_180C(omObjData *object, s32 arg1) +{ + UnkPresentStruct2 *var_r31; + + var_r31 = object->data; + var_r31->unk_0C = arg1; + object->func = lbl_1_data_6C[arg1]; + object->unk10 = 0; + object->unk10 = 0; +} + +s32 fn_1_1850(omObjData *object) +{ + UnkPresentStruct2 *var_r31; + + var_r31 = object->data; + return var_r31->unk_0C; +} + +static const s32 lbl_1_rodata_9D8[] = { 0, 1, 2, 3, 4, 6, 7, 8 }; +static const s32 lbl_1_rodata_9F8[] = { 0, 1, 2, 3, 4, 0, 5, 6, 7, 0 }; + +void fn_1_186C(omObjData *object, s32 arg1) +{ + UnkPresentStruct2 *var_r31; + + var_r31 = object->data; + if (arg1 < 48) { + var_r31->unk_234 = lbl_1_rodata_9D8[arg1 / 6]; + var_r31->unk_238 = arg1 % 6; + return; + } + if (arg1 < 59) { + var_r31->unk_234 = 9; + var_r31->unk_238 = (arg1 - 48) % 11; + return; + } + var_r31->unk_234 = 5; + var_r31->unk_238 = 0; +} + +void fn_1_1928(omObjData *object) +{ + Vec sp8; + UnkPresentStruct2 *var_r31; + s32 var_r29; + UnkPresentStruct2 *var_r28; + + var_r31 = object->data; + switch (object->unk10) { + case 0: + var_r31->unk_00 = 0; + var_r31->unk_08 = 0; + object->unk10 = 1; + case 1: + if (var_r31->unk_08) { + fn_1_920(lbl_1_bss_8, 0.0f, 220.0f, 250.0f, 30); + fn_1_9A4(lbl_1_bss_8, 0.0f, 420.0f, -600.0f, 30); + } else { + fn_1_920(lbl_1_bss_8, 0.0f, 220.0f, 250.0f, 30); + fn_1_9A4(lbl_1_bss_8, 0.0f, 0.0f, -600.0f, 30); + } + object->unk10 = 2; + case 2: + if (!fn_1_B6C(lbl_1_bss_8) && !var_r31->unk_228->unk_20 && !fn_1_28F0(object)) { + fn_1_4080(var_r31->unk_228); + fn_1_4080(var_r31->unk_22C); + if (var_r31->unk_08) { + var_r29 = 0x320080; + } else if (var_r31->unk_234 == 5) { + var_r29 = 0x320085; + } else { + var_r29 = 0x32007e; + } + fn_1_40B0(var_r31->unk_22C, var_r29); + switch (var_r31->unk_234) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 6: + case 7: + case 8: + if (var_r31->unk_08) { + if (fn_1_2B84(object, var_r31->unk_234, 5)) { + var_r29 = 0x320005; + } else { + var_r29 = 0x320082; + } + } else if (fn_1_2BCC(object, var_r31->unk_234) > 0) { + var_r29 = 0x320001; + } else { + var_r29 = 0x320081; + } + fn_1_40B0(var_r31->unk_228, var_r29); + fn_1_4104(var_r31->unk_228, lbl_1_rodata_9F8[var_r31->unk_234], 0); + break; + case 5: + if (fn_1_2B84(object, 5, 0)) { + var_r29 = 0x320041; + } else { + var_r29 = 0x320084; + } + fn_1_40B0(var_r31->unk_228, var_r29); + break; + case 9: + if (fn_1_2BCC(object, 9) > 0) { + var_r29 = 0x320083; + } else { + var_r29 = 0x320081; + } + fn_1_40B0(var_r31->unk_228, var_r29); + break; + default: + break; + } + if (var_r31->unk_08) { + sp8.x = 0.0f; + sp8.y = 600.0f; + sp8.z = -500.0f; + } else { + sp8.x = 0.0f; + sp8.y = 210.0f; + sp8.z = -500.0f; + } + Hu3D3Dto2D(&sp8, 1, &sp8); + sp8.y -= 15.0f; + sp8.x -= 20.0f; + espPosSet(var_r31->sprite, sp8.x, sp8.y); + if (!var_r31->unk_00) { + fn_1_144(var_r31->sprite, 1, 5); + var_r31->unk_00 = 1; + } + object->unk10 = 3; + } + break; + case 3: + if (!var_r31->unk_228->unk_20) { + if (fn_1_550(512) && !var_r31->unk_08) { + fn_1_144(var_r31->sprite, 0, 5); + var_r31->unk_00 = 0; + fn_1_4098(var_r31->unk_228); + fn_1_4098(var_r31->unk_22C); + HuAudFXPlay(3); + object->unk10 = 4; + } else if (fn_1_550(256) && !var_r31->unk_08) { + if (var_r31->unk_234 != 5) { + fn_1_144(var_r31->sprite, 0, 5); + var_r31->unk_00 = 0; + fn_1_4098(var_r31->unk_228); + fn_1_4098(var_r31->unk_22C); + HuAudFXPlay(2); + fn_1_180C(object, 2); + } + } else if (fn_1_584(8) && !var_r31->unk_08) { + if ((var_r31->unk_234 != 5) && (var_r31->unk_234 != 9)) { + var_r31->unk_08 = 1; + fn_1_144(var_r31->sprite, 0, 5); + var_r31->unk_00 = 0; + fn_1_4098(var_r31->unk_228); + fn_1_4098(var_r31->unk_22C); + HuAudFXPlay(0); + object->unk10 = 1; + } + } else if (fn_1_584(4) && var_r31->unk_08) { + var_r31->unk_08 = 0; + fn_1_144(var_r31->sprite, 0, 5); + var_r31->unk_00 = 0; + fn_1_4098(var_r31->unk_228); + fn_1_4098(var_r31->unk_22C); + HuAudFXPlay(0); + object->unk10 = 1; + } else if (fn_1_584(1)) { + fn_1_1FA8(object, 1); + HuAudFXPlay(0); + object->unk10 = 2; + } else if (fn_1_584(2)) { + fn_1_1FA8(object, 2); + HuAudFXPlay(0); + object->unk10 = 2; + } + } + break; + case 4: + fn_1_180C(object, 0); + break; + } + fn_1_2774(object); +} + +void fn_1_1FA8(omObjData *object, s32 arg1) +{ + UnkPresentStruct2 *var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + float var_f30; + float var_f31; + float var_f29; + + var_r31 = object->data; + + for (var_r30 = 0, var_f31 = 0.0f;; var_r30++) { + var_f31 += 36.0f; + if (arg1 == 1) { + var_r29 = -1; + } else { + var_r29 = 1; + } + var_r31->unk_234 = var_r31->unk_234 + var_r29; + if (var_r31->unk_234 < 0) { + var_r31->unk_234 = 9; + } else if (var_r31->unk_234 >= 10) { + var_r31->unk_234 = 0; + } + if (!((var_r31->unk_08) && ((var_r31->unk_234 == 5) || (var_r31->unk_234 == 9)))) { + break; + } + } + if (arg1 == 1) { + var_f30 = -var_f31; + } else { + var_f30 = var_f31; + } + var_f29 = var_r31->unk_23C + var_f30; + if (!var_r30) { + var_r28 = 30; + } else { + var_r28 = 45; + } + fn_1_2708(object, var_f29, var_r28); +} + +void fn_1_20E8(omObjData *object) +{ + Vec sp8; + UnkPresentStruct2 *var_r31; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r25; + float var_f31; + float var_f30; + + var_r31 = object->data; + var_r29 = var_r31->unk_238; + var_r27 = var_r31->unk_234; + switch (object->unk10) { + case 0: + fn_1_920(lbl_1_bss_8, 0.0f, 220.0f, -120.0f, 30); + fn_1_9A4(lbl_1_bss_8, 0.0f, 0.0f, -600.0f, 30); + var_r31->unk_04 = fn_1_2BCC(object, var_r27) > 0; + var_r31->unk_00 = 0; + var_r31->unk_238 = 0; + if (var_r31->unk_04) { + var_r25 = fn_1_3394(var_r31->unk_234); + for (var_r28 = 0; var_r28 < var_r25; var_r28++) { + if (fn_1_2B84(object, var_r27, var_r28)) { + var_r31->unk_238 = var_r28; + break; + } + } + } + object->unk10 = 1; + case 1: + if (fn_1_B6C(lbl_1_bss_8)) { + break; + } + fn_1_4080(var_r31->unk_228); + fn_1_4080(var_r31->unk_22C); + fn_1_40B0(var_r31->unk_22C, 0x32007F); + + if (var_r31->unk_04) { + fn_1_40B0(var_r31->unk_228, lbl_1_rodata_2B8[var_r27].unk_04[var_r29].unk_0C); + } else { + fn_1_40B0(var_r31->unk_228, 0x320003); + } + var_r31->unk_258 = 0.0f; + var_r31->unk_25C = 5.0f / 30.0f; + if (var_r31->unk_04) { + fn_1_268C(var_r31->unk_10[lbl_1_rodata_2B8[var_r27].unk_04[var_r29].unk_00], &sp8.x, &sp8.y, &sp8.z); + Hu3D3Dto2D(&sp8, 1, &sp8); + sp8.y -= 15.0f; + sp8.x -= 20.0f; + if (!var_r31->unk_00) { + fn_1_144(var_r31->sprite, 1, 5); + var_r31->unk_00 = 1; + var_r31->unk_260 = sp8.x; + var_r31->unk_264 = sp8.y; + } else { + var_r31->unk_260 = var_r31->unk_268; + var_r31->unk_264 = var_r31->unk_26C; + } + var_r31->unk_268 = sp8.x; + var_r31->unk_26C = sp8.y; + object->unk10 = 2; + } else { + object->unk10 = 3; + break; + } + case 2: + var_f31 = var_r31->unk_260 + (var_r31->unk_258 * (var_r31->unk_268 - var_r31->unk_260)); + var_f30 = var_r31->unk_264 + (var_r31->unk_258 * (var_r31->unk_26C - var_r31->unk_264)); + espPosSet(var_r31->sprite, var_f31, var_f30); + if ((var_r31->unk_258 = var_r31->unk_258 + var_r31->unk_25C) < 1.0f) { + break; + } + espPosSet(var_r31->sprite, var_r31->unk_268, var_r31->unk_26C); + object->unk10 = 3; + case 3: + if (fn_1_550(512)) { + fn_1_4098(var_r31->unk_228); + fn_1_4098(var_r31->unk_22C); + HuAudFXPlay(3); + object->unk10 = 4; + } else if (var_r31->unk_04) { + if (fn_1_584(1) && fn_1_5B8(8)) { + var_r29 = fn_1_2C5C(object, 5); + } else if (fn_1_584(1) && fn_1_5B8(4)) { + var_r29 = fn_1_2C5C(object, 9); + } else if (fn_1_584(2) && fn_1_5B8(8)) { + var_r29 = fn_1_2C5C(object, 6); + } else if (fn_1_584(2) && fn_1_5B8(4)) { + var_r29 = fn_1_2C5C(object, 10); + } else if (fn_1_584(1)) { + var_r29 = fn_1_2C5C(object, 1); + } else if (fn_1_584(2)) { + var_r29 = fn_1_2C5C(object, 2); + } else if (fn_1_584(8)) { + var_r29 = fn_1_2C5C(object, 4); + } else if (fn_1_584(4)) { + var_r29 = fn_1_2C5C(object, 8); + } + } else { + break; + } + if (var_r29 == -1) { + var_r29 = var_r31->unk_238; + } + if (var_r29 != var_r31->unk_238) { + var_r31->unk_238 = var_r29; + object->unk10 = 1; + HuAudFXPlay(0); + } + break; + case 4: + if (var_r31->unk_00) { + fn_1_144(var_r31->sprite, 0, 5); + } + fn_1_180C(object, 1); + break; + default: + break; + } +} + +void fn_1_268C(omObjData *object, float *arg1, float *arg2, float *arg3) +{ + Mtx sp8; + + Hu3DModelObjMtxGet(object->model[0], "cursor", sp8); + *arg1 = sp8[0][3]; + *arg2 = sp8[1][3]; + *arg3 = sp8[2][3]; +} + +void fn_1_2708(omObjData *arg0, float arg8, s32 arg1) +{ + UnkPresentStruct2 *var_r31; + + var_r31 = arg0->data; + var_r31->unk_244 = arg8; + var_r31->unk_240 = var_r31->unk_23C; + var_r31->unk_248 = 0.0f; + var_r31->unk_250 = 1.0f / arg1; +} + +void fn_1_2774(omObjData *object) +{ + UnkPresentStruct2 *var_r31; + float var_f31; + s32 var_r30; + + var_r31 = object->data; + + if (var_r31->unk_248 < 1.0f) { + var_f31 = sin(90.0f * var_r31->unk_248 * M_PI / 180.0f); + var_f31 *= var_f31; + var_r31->unk_23C = var_r31->unk_240 + (var_f31 * (var_r31->unk_244 - var_r31->unk_240)); + + if ((var_r31->unk_248 = var_r31->unk_248 + var_r31->unk_250) >= 1.0f) { + var_r31->unk_23C = var_r31->unk_244; + } + } + var_r31->unk_23C = fmod(var_r31->unk_23C, 360.0); + + if (var_r31->unk_23C < 0.0f) { + var_r31->unk_23C += 360.0f; + } + + for (var_r30 = 0; var_r30 < 134; var_r30++) { + omSetRot(var_r31->unk_10[var_r30], 0.0f, var_r31->unk_23C, 0.0f); + } +} + +s32 fn_1_28F0(omObjData *object) +{ + UnkPresentStruct2 *var_r31; + + var_r31 = object->data; + return var_r31->unk_248 < 1.0f; +} + +s32 lbl_1_data_84[] = { 0, 1, 2, 3, 4, 6, 7, 8 }; + +void fn_1_2924(omObjData *object) +{ + UnkPresentStruct2 *var_r31; + s32 var_r30; + s32 var_r27; + s32 var_r29; + + var_r31 = object->data; + Hu3DModelAttrReset(var_r31->unk_10[0]->model[0], 1); + + for (var_r29 = 0; var_r29 < 8; var_r29++) { + if (fn_1_2BCC(object, lbl_1_data_84[var_r29]) > 0) { + Hu3DModelAttrReset(var_r31->unk_10[var_r29 + 109]->model[0], 1); + } + + for (var_r27 = 0, var_r30 = 0; var_r30 < 6; var_r30++) { + if (fn_1_2B84(object, lbl_1_data_84[var_r29], var_r30)) { + Hu3DModelAttrReset(var_r31->unk_10[var_r29 * 6 * 2 + 2 + var_r30]->model[0], 1); + Hu3DModelAttrReset(var_r31->unk_10[var_r29 * 6 * 2 + 8 + var_r30]->model[0], 1); + var_r27++; + } + } + if (var_r27 >= 6) { + Hu3DModelAttrReset(var_r31->unk_10[var_r29 + 118]->model[0], 1); + } + } + if (fn_1_2BCC(object, 9) > 0) { + Hu3DModelAttrReset(var_r31->unk_10[117]->model[0], 1); + } + for (var_r30 = 0; var_r30 < 11; var_r30++) { + if (fn_1_2B84(object, 9, var_r30)) { + Hu3DModelAttrReset(var_r31->unk_10[var_r30 + 98]->model[0], 1); + } + } + if (fn_1_2B84(object, 5, 0)) { + Hu3DModelAttrReset(var_r31->unk_10[1]->model[0], 1); + } + for (var_r30 = 0; var_r30 < 8; var_r30++) { + if (fn_1_2B84(object, lbl_1_data_84[var_r30], 5)) { + Hu3DModelAttrReset(var_r31->unk_10[var_r30 + 126]->model[0], 1); + } + } +} + +static const s32 lbl_1_rodata_A74[] = { 0, 6, 12, 18, 24, 59, 30, 36, 42, 48 }; + +s32 fn_1_2B84(omObjData *arg0, s32 arg1, s32 arg2) +{ + UnkPresentStruct2 *var_r31; + + var_r31 = arg0->data; + return var_r31->unk_270[arg2 + lbl_1_rodata_A74[arg1]] != 0; +} + +s32 fn_1_2BCC(omObjData *object, s32 arg1) +{ + s32 var_r31; + s32 var_r30; + UnkPresentStruct2 *var_r29; + s32 var_r28; + + var_r28 = fn_1_3394(arg1); + + for (var_r30 = 0, var_r31 = 0; var_r31 < var_r28; var_r31++) { + if (fn_1_2B84(object, arg1, var_r31)) { + var_r30++; + } + } + + return var_r30; +} + +s32 fn_1_2C5C(omObjData *object, s32 arg1) +{ + UnkPresentStruct7 spA4[10]; + Vec sp38; + Vec sp2C; + UnkPresentStruct7 sp24; + float var_f31; + float var_f30; + float var_f29; + UnkPresentStruct2 *var_r31; + s32 var_r30; + s32 var_r28; + s32 var_r26; + s32 var_r23; + s32 var_r22; + omObjData *var_r21; + omObjData *var_r19; + s32 var_r18; + s32 var_r17; + + var_r31 = object->data; + + var_r22 = fn_1_3394(var_r31->unk_234); + + var_r18 = fn_1_2BCC(object, var_r31->unk_234); + if (var_r18 == 1) { + return var_r31->unk_238; + } + + fn_1_268C(var_r31->unk_10[lbl_1_rodata_2B8[var_r31->unk_234].unk_04[var_r31->unk_238].unk_00], &sp38.x, &sp38.y, &sp38.z); + Hu3D3Dto2D(&sp38, 1, &sp38); + for (var_r28 = 0, var_r26 = 0; !var_r28 && (var_r26 < 1); var_r26++) { + for (var_r28 = 0, var_r30 = 0; var_r30 < var_r22; var_r30++) { + if (var_r30 == var_r31->unk_238) { + continue; + } + if (!fn_1_2B84(object, var_r31->unk_234, var_r30)) { + continue; + } + fn_1_268C(var_r31->unk_10[lbl_1_rodata_2B8[var_r31->unk_234].unk_04[var_r30].unk_00], &sp2C.x, &sp2C.y, &sp2C.z); + Hu3D3Dto2D(&sp2C, 1, &sp2C); + var_f30 = sp38.x - sp2C.x; + var_f29 = sp38.y - sp2C.y; + var_f31 = fmod(atan2d(var_f30, var_f29), 360.0); + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + if ((arg1 == 1 && var_f31 >= 45.0f && var_f31 < 135.0f) || (arg1 == 2 && var_f31 >= 225.0f && var_f31 < 315.0f) + || (arg1 == 8 && var_f31 >= 135.0f && var_f31 < 225.0f) + || (arg1 == 4 && (var_f31 >= 0.0f && var_f31 < 45.0f || var_f31 >= 315.0f && var_f31 < 360.0f)) + || (arg1 == 5 && var_f31 >= 0.0f && var_f31 < 90.0f) || (arg1 == 9 && var_f31 >= 90.0f && var_f31 < 180.0f) + || (arg1 == 6 && var_f31 >= 270.0f && var_f31 < 360.0f) || (arg1 == 10 && var_f31 >= 180.0f && var_f31 < 270.0f)) { + spA4[var_r28].unk_00 = var_r30; + spA4[var_r28].unk_04 = sqrtf(var_f30 * var_f30 + var_f29 * var_f29); + var_r28++; + } + } + + if (var_r28) { + continue; + } + switch (arg1) { + case 0: + break; + case 1: + L_00003218: + arg1 = 2; + break; + case 2: + L_00003220: + arg1 = 1; + break; + case 3: + break; + case 4: + L_00003228: + arg1 = 8; + break; + case 7: + break; + case 8: + L_00003230: + arg1 = 4; + break; + case 5: + L_00003238: + arg1 = 10; + break; + case 9: + L_00003240: + arg1 = 6; + break; + case 6: + L_00003248: + arg1 = 9; + break; + case 10: + L_00003250: + arg1 = 5; + break; + default: + break; + } + // L_00003254: + } + if (!var_r28) { + return var_r31->unk_238; + } + do { + for (var_r23 = 0, var_r30 = 0; var_r30 < (var_r28 - 1); var_r30++) { + if (spA4[var_r30].unk_04 > spA4[var_r30 + 1].unk_04) { + sp24 = spA4[var_r30 + 1]; + spA4[var_r30 + 1] = spA4[var_r30]; + spA4[var_r30] = sp24; + var_r23 = 1; + } + } + } while (var_r23); + return spA4[(var_r26 <= 1) ? 0 : var_r28 - 1].unk_00; +} + +static const s32 lbl_1_rodata_AC8[] = { 6, 6, 6, 6, 6, 1, 6, 6, 6, 11 }; + +s32 fn_1_3394(s32 arg0) +{ + return lbl_1_rodata_AC8[arg0]; +} + +static const s32 lbl_1_rodata_AF0[] = { 2, 14, 26, 38, 50, 0, 62, 74, 86, 0 }; +static const s32 lbl_1_rodata_B18[] = { 8, 20, 32, 44, 56, 0, 68, 80, 92, 0 }; +static const s32 lbl_1_rodata_B40[] = { 126, 127, 128, 129, 130, 0, 131, 132, 133, 0 }; +static const s32 lbl_1_rodata_B68[] = { 118, 119, 120, 121, 122, 0, 123, 124, 125, 0 }; + +void fn_1_33AC(omObjData *object) +{ + f32 var_f29; + f32 var_f30; + f32 var_f31; + UnkPresentStruct2 *var_r31; + UnkPresentStruct2 *var_r30; + UnkPresentStruct2 *var_r28; + s32 var_r27; + + var_r31 = object->data; + switch (object->unk10) { + case 0: + var_f29 = 36.0f * var_r31->unk_234; + fn_1_2708(object, var_f29, 1); + fn_1_2774(object); + Hu3DModelAttrSet(var_r31->unk_10[var_r31->unk_238 + lbl_1_rodata_B18[var_r31->unk_234]]->model[0], 1); + Hu3DModelAttrSet(var_r31->unk_10[lbl_1_rodata_B68[var_r31->unk_234]]->model[0], 1); + Hu3DModelAttrSet(var_r31->unk_10[lbl_1_rodata_B40[var_r31->unk_234]]->model[0], 1); + var_r31->unk_24C = 0.0f; + var_r31->unk_254 = 1.0f / 360.0f; + object->unk10 = 1; + case 1: + WipeCreate(1, 0, 120); + object->unk10 = 2; + case 2: + var_f31 = sind(90.0f * var_r31->unk_24C); + var_f31 *= var_f31; + fn_1_920(lbl_1_bss_8, 0.0f, 820.0f - (600.0f * var_f31), -120.0f, 1); + fn_1_9A4(lbl_1_bss_8, 0.0f, 680.0f - (680.0f * var_f31), -600.0f, 1); + omSetTra(var_r31->unk_10[var_r31->unk_238 + lbl_1_rodata_AF0[var_r31->unk_234]], 0.0f, 840.0f - (840.0f * var_f31), 0.0f); + if ((var_r31->unk_24C = var_r31->unk_24C + var_r31->unk_254) < 1.0f) { + return; + } + if (fn_1_393C(var_r31->unk_234, var_r31->unk_238)) { + fn_1_334(var_r31->unk_10[var_r31->unk_238 + lbl_1_rodata_B18[var_r31->unk_234]]->model[0], 1, 0.4f, 30); + } + object->unk10 = 3; + case 3: + fn_1_4080(var_r31->unk_228); + fn_1_4104(var_r31->unk_228, lbl_1_rodata_2B8[var_r31->unk_234].unk_04[var_r31->unk_238].unk08, 0); + fn_1_40B0(var_r31->unk_228, 0x320004); + fn_1_419C(var_r31->unk_228); + object->unk10 = 4; + case 4: + if (var_r31->unk_228->unk_20) { + break; + } + object->unk10 = 5; + case 5: + fn_1_4098(var_r31->unk_228); + object->unk10 = 6; + case 6: + if (!var_r31->unk_228->unk_20) { + fn_1_180C(object, 0); + } + break; + } +} + +static const s32 lbl_1_rodata_BA4[][2] = { { 7, 1 } }; + +s32 fn_1_393C(s32 arg0, s32 arg1) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 1; var_r31++) { + if (arg0 == lbl_1_rodata_BA4[var_r31][0] && arg1 == lbl_1_rodata_BA4[var_r31][1]) { + return 0; + } + } + return 1; +} diff --git a/src/REL/staffDll/main.c b/src/REL/staffDll/main.c new file mode 100644 index 00000000..13bd4fad --- /dev/null +++ b/src/REL/staffDll/main.c @@ -0,0 +1,597 @@ +#include "game/animdata.h" +#include "game/audio.h" +#include "game/hsfman.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/process.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + +#include "REL/staffDll.h" +#include "rel_sqrt_consts.h" + +static s16 imgGroup[26]; +static s16 staffLogoGroup[3]; +static s16 thpGroup; +static s16 thpCoverGroup; +static s32 staffSide; +static s32 currImg; +static omObjData *multiViewObj; + +static UnkStaffDllStruct staffData[] = { + { 0x00340001, 0, 0.0f, 0, 0, 0 }, + { 0x00350000, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 72.0f, 0, 0, 0 }, + { 0x00340002, 0, 0.0f, 0, 0, 0 }, + { 0x00350001, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 48.0f, 0, 0, 0 }, + { 0x00340003, 0, 0.0f, 0, 0, 0 }, + { 0x00350002, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 48.0f, 0, 0, 0 }, + { 0x00340004, 0, 0.0f, 0, 0, 0 }, + { 0x00350003, 2, 0.0f, 0, 0, 0 }, + { 0x00350004, 2, 0.0f, 0, 0, 0 }, + { 0x00350005, 2, 0.0f, 0, 0, 0 }, + { 0x00350006, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 24.0f, 0, 0, 0 }, + { 0x00350007, 2, 0.0f, 0, 0, 0 }, + { 0x00350008, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 48.0f, 0, 0, 0 }, + { 0x00340005, 0, 0.0f, 0, 0, 0 }, + { 0x00350009, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 48.0f, 0, 0, 0 }, + { 0x00340006, 0, 0.0f, 0, 0, 0 }, + { 0x0035000A, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 48.0f, 0, 0, 0 }, + { 0x00340007, 0, 0.0f, 0, 0, 0 }, + { 0x0034001C, 1, 0.0f, 0, 0, 0 }, + { 0x0035000B, 2, 0.0f, 0, 0, 0 }, + { 0x0035000C, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 24.0f, 0, 0, 0 }, + { 0x0034001D, 1, 0.0f, 0, 0, 0 }, + { 0x0035000D, 2, 0.0f, 0, 0, 0 }, + { 0x0035000E, 2, 0.0f, 0, 0, 0 }, + { 0x0035000F, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 24.0f, 0, 0, 0 }, + { 0x00350010, 2, 0.0f, 0, 0, 0 }, + { 0x00350011, 2, 0.0f, 0, 0, 0 }, + { 0x00350012, 2, 0.0f, 0, 0, 0 }, + { 0x00350013, 2, 0.0f, 0, 0, 0 }, + { 0x00350014, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 24.0f, 0, 0, 0 }, + { 0x0034001E, 1, 0.0f, 0, 0, 0 }, + { 0x00350015, 2, 0.0f, 0, 0, 0 }, + { 0x00350016, 2, 0.0f, 0, 0, 0 }, + { 0x00350017, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 48.0f, 0, 0, 0 }, + { 0x00340008, 0, 0.0f, 0, 0, 0 }, + { 0x00350018, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 48.0f, 0, 0, 0 }, + { 0x00340009, 0, 0.0f, 0, 0, 0 }, + { 0x00350019, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 48.0f, 0, 0, 0 }, + { 0x0034000A, 0, 0.0f, 0, 0, 0 }, + { 0x0034001C, 1, 0.0f, 0, 0, 0 }, + { 0x0035001A, 2, 0.0f, 0, 0, 0 }, + { 0x0035001B, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 24.0f, 0, 0, 0 }, + { 0x0034001D, 1, 0.0f, 0, 0, 0 }, + { 0x0035001C, 2, 0.0f, 0, 0, 0 }, + { 0x0035001D, 2, 0.0f, 0, 0, 0 }, + { 0x0035001E, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 24.0f, 0, 0, 0 }, + { 0x0034001E, 1, 0.0f, 0, 0, 0 }, + { 0x0035001F, 2, 0.0f, 0, 0, 0 }, + { 0x00350020, 2, 0.0f, 0, 0, 0 }, + { 0x00350021, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 48.0f, 0, 0, 0 }, + { 0x0034000B, 0, 0.0f, 0, 0, 0 }, + { 0x0034001F, 1, 0.0f, 0, 0, 0 }, + { 0x00350022, 2, 0.0f, 0, 0, 0 }, + { 0x00350023, 2, 0.0f, 0, 0, 0 }, + { 0x00350024, 2, 0.0f, 0, 0, 0 }, + { 0x00350025, 2, 0.0f, 0, 0, 0 }, + { 0x00350026, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 24.0f, 0, 0, 0 }, + { 0x00350027, 2, 0.0f, 0, 0, 0 }, + { 0x00350028, 2, 0.0f, 0, 0, 0 }, + { 0x00350029, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 24.0f, 0, 0, 0 }, + { 0x0034001C, 1, 0.0f, 0, 0, 0 }, + { 0x0035002A, 2, 0.0f, 0, 0, 0 }, + { 0x0035002B, 2, 0.0f, 0, 0, 0 }, + { 0x0035002C, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 24.0f, 0, 0, 0 }, + { 0x0034001D, 1, 0.0f, 0, 0, 0 }, + { 0x0035002D, 2, 0.0f, 0, 0, 0 }, + { 0x0035002E, 2, 0.0f, 0, 0, 0 }, + { 0x0035002F, 2, 0.0f, 0, 0, 0 }, + { 0x00350030, 2, 0.0f, 0, 0, 0 }, + { 0x00350031, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 24.0f, 0, 0, 0 }, + { 0x00350032, 2, 0.0f, 0, 0, 0 }, + { 0x00350033, 2, 0.0f, 0, 0, 0 }, + { 0x00350034, 2, 0.0f, 0, 0, 0 }, + { 0x00350035, 2, 0.0f, 0, 0, 0 }, + { 0x00350036, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 48.0f, 0, 0, 0 }, + { 0x0034000C, 0, 0.0f, 0, 0, 0 }, + { 0x00350037, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 48.0f, 0, 0, 0 }, + { 0x0034000D, 0, 0.0f, 0, 0, 0 }, + { 0x00350038, 2, 0.0f, 0, 0, 0 }, + { 0x00350039, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 48.0f, 0, 0, 0 }, + { 0x0034000E, 0, 0.0f, 0, 0, 0 }, + { 0x0035003A, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 48.0f, 0, 0, 0 }, + { 0x0034000F, 0, 0.0f, 0, 0, 0 }, + { 0x0035003B, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 48.0f, 0, 0, 0 }, + { 0x00340010, 0, 0.0f, 0, 0, 0 }, + { 0x0035003C, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 24.0f, 0, 0, 0 }, + { 0x00340011, 0, 0.0f, 0, 0, 0 }, + { 0x0035003B, 2, 0.0f, 0, 0, 0 }, + { 0x0035003C, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 24.0f, 0, 0, 0 }, + { 0x00340012, 0, 0.0f, 0, 0, 0 }, + { 0x0035003D, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 24.0f, 0, 0, 0 }, + { 0x00340013, 0, 0.0f, 0, 0, 0 }, + { 0x0035003E, 2, 0.0f, 0, 0, 0 }, + { 0x0035003F, 2, 0.0f, 0, 0, 0 }, + { 0x00350040, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 48.0f, 0, 0, 0 }, + { 0x00340014, 0, 0.0f, 0, 0, 0 }, + { 0x00350041, 2, 0.0f, 0, 0, 0 }, + { 0x00350042, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 48.0f, 0, 0, 0 }, + { 0x00340015, 0, 0.0f, 0, 0, 0 }, + { 0x00350043, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 48.0f, 0, 0, 0 }, + { 0x00340022, 0, 0.0f, 0, 0, 0 }, + { 0x00340024, 1, 0.0f, 0, 0, 0 }, + { 0x00350056, 2, 0.0f, 0, 0, 0 }, + { 0x00350057, 2, 0.0f, 0, 0, 0 }, + { 0x00350058, 2, 0.0f, 0, 0, 0 }, + { 0x00350059, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 24.0f, 0, 0, 0 }, + { 0x00340025, 1, 0.0f, 0, 0, 0 }, + { 0x0035005A, 2, 0.0f, 0, 0, 0 }, + { 0x0035005B, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 48.0f, 0, 0, 0 }, + { 0x00340023, 0, 0.0f, 0, 0, 0 }, + { 0x0035005C, 2, 0.0f, 0, 0, 0 }, + { 0x0035005D, 2, 0.0f, 0, 0, 0 }, + { 0x0035005E, 2, 0.0f, 0, 0, 0 }, + { 0x0035005F, 2, 0.0f, 0, 0, 0 }, + { 0x00350060, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 48.0f, 0, 0, 0 }, + { 0x00340016, 0, 0.0f, 0, 0, 0 }, + { 0x00350044, 2, 0.0f, 0, 0, 0 }, + { 0x00350045, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 24.0f, 0, 0, 0 }, + { 0x00350046, 2, 0.0f, 0, 0, 0 }, + { 0x00350047, 2, 0.0f, 0, 0, 0 }, + { 0x00350048, 2, 0.0f, 0, 0, 0 }, + { 0x00350049, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 24.0f, 0, 0, 0 }, + { 0x0035004A, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 48.0f, 0, 0, 0 }, + { 0x0035004B, 2, 0.0f, 0, 0, 0 }, + { 0x0035004C, 2, 0.0f, 0, 0, 0 }, + { 0x0035004D, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 48.0f, 0, 0, 0 }, + { 0x00340017, 0, 0.0f, 0, 0, 0 }, + { 0x0035004E, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 48.0f, 0, 0, 0 }, + { 0x00340018, 0, 0.0f, 0, 0, 0 }, + { 0x0035004F, 2, 0.0f, 0, 0, 0 }, + { 0x00350050, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 72.0f, 0, 0, 0 }, + { 0x00340019, 0, 0.0f, 0, 0, 0 }, + { 0x00350038, 2, 0.0f, 0, 0, 0 }, + { 0x00350051, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 72.0f, 0, 0, 0 }, + { 0x0034001A, 0, 0.0f, 0, 0, 0 }, + { 0x00350052, 2, 0.0f, 0, 0, 0 }, + { 0x00350053, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 72.0f, 0, 0, 0 }, + { 0x0034001B, 0, 0.0f, 0, 0, 0 }, + { 0x00350054, 2, 0.0f, 0, 0, 0 }, + { 0x00350055, 2, 0.0f, 0, 0, 0 }, + { -3, 0, 74.0f, 0, 0, 0 }, + { -2, 0, 0.0f, 0, 0, 0 }, + { -1, 0, 0.0f, 0, 0, 0 }, +}; +static float staffLogoPosTbl[] = { 460.0f, 293.0f, 293.0f }; + +static void MainProc(void); +static void CreateStaff(void); +static void ShowPicture(void); + +void ModuleProlog(void) +{ + Process *var_r31; + s32 var_lr; + + var_r31 = omInitObjMan(0x32, 0x2000); + omGameSysInit(var_r31); + HuWinInit(1); + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 20.0f, 20.0f, 10000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(1, 0, 0, 640, 480); + multiViewObj = omAddObjEx(var_r31, 0x7FDA, 0, 0, -1, omOutViewMulti); + multiViewObj->work[0] = 1; + CRotM[0].x = -35.0f; + CRotM[0].y = 0.0f; + CRotM[0].z = 0.0f; + CenterM[0].x = 0.0f; + CenterM[0].y = 0.0f; + CenterM[0].z = -250.0f; + CZoomM[0] = 4820.0f; + Hu3DBGColorSet(0, 0, 0); + CreateStaff(); + HuPrcChildCreate(MainProc, 0x1000, 0x2000, 0, HuPrcCurrentGet()); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); +} + +static void ExitProc(void) +{ + while (TRUE) { + if (omSysExitReq == 1) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuAudFadeOut(1000); + HuPrcSleep(60); + MGSeqKillAll(); + omOvlReturnEx(1, 1); + + while (TRUE) { + HuPrcVSleep(); + } + } + HuPrcVSleep(); + } + + while (!omSysExitReq) { + HuPrcVSleep(); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuAudFadeOut(1000); + HuPrcSleep(60); + MGSeqKillAll(); + omOvlReturnEx(1, 1); + + while (TRUE) { + HuPrcVSleep(); + } +} + +static void CreateStaff(void) +{ + void *var_r29; + AnimData *var_r28; + s16 var_r30; + s32 var_r31; + + staffSide = 0; + currImg = 0; + + for (var_r31 = 0; var_r31 < 26; var_r31++) { + var_r29 = HuDataSelHeapReadNum(var_r31 + 0x730000, MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r28 = HuSprAnimRead(var_r29); + var_r30 = HuSprCreate(var_r28, 16386, 0); + imgGroup[var_r31] = HuSprGrpCreate(1); + HuSprGrpMemberSet(imgGroup[var_r31], 0, var_r30); + if (staffSide != 0) { + HuSprGrpPosSet(imgGroup[var_r31], 380.0f, 240.0f); + } else { + HuSprGrpPosSet(imgGroup[var_r31], 200.0f, 240.0f); + } + HuSprAttrSet(imgGroup[var_r31], 0, HUSPR_ATTR_DISPOFF); + } + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + var_r29 = HuDataSelHeapReadNum(var_r31 + 0x73001A, MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r28 = HuSprAnimRead(var_r29); + var_r30 = HuSprCreate(var_r28, 256, 0); + staffLogoGroup[var_r31] = HuSprGrpCreate(1); + HuSprGrpMemberSet(staffLogoGroup[var_r31], 0, var_r30); + HuSprAttrSet(staffLogoGroup[var_r31], 0, HUSPR_ATTR_DISPOFF); + } + thpGroup = HuSprGrpCreate(1); + var_r30 = HuTHPSprCreate("movie/stmov_a00.thp", 0, 16386); + HuSprGrpMemberSet(thpGroup, 0, var_r30); + HuSprGrpScaleSet(thpGroup, 0.65f, 0.65f); + HuSprGrpPosSet(thpGroup, 280.0f, 200.0f); + HuSprAttrSet(thpGroup, 0, HUSPR_ATTR_DISPOFF); + HuTHPStop(); + var_r29 = HuDataSelHeapReadNum(0x73001D, MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r28 = HuSprAnimRead(var_r29); + var_r30 = HuSprCreate(var_r28, 16385, 0); + thpCoverGroup = HuSprGrpCreate(1); + HuSprGrpMemberSet(thpCoverGroup, 0, var_r30); + HuSprGrpScaleSet(thpCoverGroup, 40.0f, 40.0f); + HuSprGrpPosSet(thpCoverGroup, 280.0f, 200.0f); + HuSprAttrSet(thpCoverGroup, 0, HUSPR_ATTR_DISPOFF); + HuPrcChildCreate(ShowPicture, 4096, 8192, 0, HuPrcCurrentGet()); + HuPrcChildCreate(ExitProc, 4096, 4096, 0, HuPrcCurrentGet()); +} + +static void MoveStaff(void) +{ + float sp8[2]; + Process *temp_ret; + float var_f30; + float var_f31; + s16 var_r30; + u32 var_r29; + UnkStaffDllStruct *var_r31; + + var_r31 = HuPrcCurrentGet()->user_data; + var_r31->unk_14 = 0; + switch (var_r31->unk_00) { + case -2: + HuSprAttrReset(staffLogoGroup[var_r31->unk_10], 0, HUSPR_ATTR_DISPOFF); + var_f31 = staffLogoPosTbl[var_r31->unk_10]; + var_f30 = 576.0f; + break; + default: + HuWinMesMaxSizeGet(1, sp8, var_r31->unk_00); + var_r29 = 0; + switch (var_r31->unk_04) { + case 3: + var_f31 = 320.0f - (0.75f * sp8[0]) / 2; + break; + case 0: + var_f31 = 10.0f; + if (!staffSide) { + var_f31 += 240.0f; + } + break; + case 1: + var_f31 = 30.0f; + if (!staffSide) { + var_f31 += 240.0f; + } + break; + case 2: + var_f31 = 550.0f - (0.75f * sp8[0]); + if (staffSide) { + var_f31 -= 240.0f; + } + var_r29 = 0x1000; + break; + } + var_f30 = 476.0f; + var_r30 = HuWinCreate(var_f31, var_f30, sp8[0], sp8[1], 1); + HuWinAttrSet(var_r30, var_r29); + HuWinPriSet(var_r30, 256); + HuWinBGTPLvlSet(var_r30, 0.0f); + HuWinMesSpeedSet(var_r30, 0); + HuWinMesSet(var_r30, var_r31->unk_00); + HuWinScaleSet(var_r30, 0.75f, 0.75f); + switch (var_r31->unk_04) { + case 0: + case 1: + HuWinMesPalSet(var_r30, 7, 96, 240, 255); + break; + default: + HuWinMesPalSet(var_r30, 7, 255, 255, 255); + break; + } + break; + } + while (TRUE) { + var_f30 -= 0.4f; + if (var_r31->unk_00 == -2) { + if (var_f30 < -114.0f) { + break; + } + } else if (var_f30 < -24.0f) { + break; + } + if (var_r31->unk_00 == -2) { + HuSprGrpPosSet(staffLogoGroup[var_r31->unk_10], var_f31, var_f30); + } else { + HuWinPosSet(var_r30, var_f31, var_f30); + } + HuPrcVSleep(); + } + var_r31->unk_14 = 1; + if (var_r31->unk_00 == -2) { + HuSprAttrSet(staffLogoGroup[var_r31->unk_10], 0, HUSPR_ATTR_DISPOFF); + } else { + HuWinKill(var_r30); + } + HuPrcVSleep(); + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +static void HidePicture(void) +{ + s32 prevImg; + + prevImg = currImg; + currImg++; + if (staffSide != 0) { + HuSprGrpPosSet(imgGroup[currImg], 380.0f, 240.0f); + } else { + HuSprGrpPosSet(imgGroup[currImg], 200.0f, 240.0f); + } + HuSprAttrSet(imgGroup[prevImg], 0, HUSPR_ATTR_DISPOFF); + HuPrcSleep(20); + HuSprAttrReset(imgGroup[currImg], 0, HUSPR_ATTR_DISPOFF); + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +static void ShowPicture(void) +{ + float var_f31; + s32 var_r31; + + HuPrcSleep(360); + HuSprAttrReset(imgGroup[currImg], 0, HUSPR_ATTR_DISPOFF); + + for (var_r31 = 0, var_f31 = 0.0f; var_r31 < 30; var_r31++, var_f31 += 1.0f / 30.0f) { + HuSprTPLvlSet(imgGroup[currImg], 0, var_f31); + HuPrcVSleep(); + } + HuSprTPLvlSet(imgGroup[currImg], 0, 1.0f); + + while (TRUE) { + if (currImg >= 24) { + HuPrcSleep(430); + } else { + HuPrcSleep(550); + } + if (currImg >= 25) { + break; + } + HuPrcChildCreate(HidePicture, 0x1000, 0x2000, 0, HuPrcCurrentGet()); + } + + for (var_r31 = 0, var_f31 = 1.0f; var_r31 < 30; var_r31++, var_f31 -= 1.0f / 30.0f) { + HuSprTPLvlSet(imgGroup[25], 0, var_f31); + HuPrcVSleep(); + } + HuSprAttrSet(imgGroup[25], 0, HUSPR_ATTR_DISPOFF); + HuSprAttrSet(imgGroup[25], 0, HUSPR_ATTR_DISPOFF); + + while (TRUE) { + HuPrcVSleep(); + } +} + +static void MainProc(void) +{ + s32 var_r31; + UnkStaffDllStruct *var_r30; + s32 var_r29; + Process *var_r28; + s32 var_r27; + float var_f29; + float var_f30; + float var_f31; + + HuPrcSleep(60); + var_r27 = HuAudSStreamPlay(22); + + for (var_r31 = 0;; var_r31++) { + var_r30 = &staffData[var_r31]; + if (var_r30->unk_00 == -1) { + break; + } + + switch (var_r30->unk_00) { + case -3: + HuPrcSleep(var_r30->unk_08 / 0.4f); + break; + default: + var_r28 = HuPrcChildCreate(MoveStaff, 0x1000, 0x2000, 0, HuPrcCurrentGet()); + var_r28->user_data = var_r30; + if (var_r30->unk_0C == 1) { + staffSide++; + staffSide &= 1; + HuPrcChildCreate(HidePicture, 0x1000, 0x2000, 0, HuPrcCurrentGet()); + } else { + HuPrcSleep(60); + } + break; + } + } + var_r30 = &staffData[var_r31 - 1]; + + while (var_r30->unk_14 == 0) { + HuPrcVSleep(); + } + HuPrcSleep(60); + HuSprAttrReset(staffLogoGroup[1], 0, HUSPR_ATTR_DISPOFF); + var_f29 = staffLogoPosTbl[1]; + var_f30 = 526.0f; + var_r29 = 0; + + while (TRUE) { + var_f30 -= 0.4f; + if (var_f30 < 400.0f) { + break; + } + if ((var_r29 == 0) && (var_f30 < 506.0f)) { + var_r29 = 1; + HuAudSStreamFadeOut(var_r27, 6000); + } + HuSprGrpPosSet(staffLogoGroup[1], var_f29, var_f30); + HuPrcVSleep(); + } + HuSprGrpPosSet(staffLogoGroup[1], var_f29, 400.0f); + HuPrcSleep(240); + HuSprAttrReset(thpGroup, 0, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(thpCoverGroup, 0, HUSPR_ATTR_DISPOFF); + HuTHPRestart(); + + for (var_r31 = 0, var_f31 = 1.0f; var_r31 < 90; var_r31++, var_f31 -= 0.1f / 9.0f) { + HuSprTPLvlSet(thpCoverGroup, 0, var_f31); + HuPrcVSleep(); + } + HuSprAttrSet(thpCoverGroup, 0, HUSPR_ATTR_DISPOFF); + + while (HuTHPFrameGet() < 450) { + HuPrcVSleep(); + } + HuSprAttrReset(thpCoverGroup, 0, HUSPR_ATTR_DISPOFF); + + for (var_r31 = 0, var_f31 = 0.0f; var_r31 < 120; var_r31++, var_f31 += 0.05f / 6.0f) { + HuSprTPLvlSet(thpCoverGroup, 0, var_f31); + HuPrcVSleep(); + } + HuSprTPLvlSet(thpCoverGroup, 0, 1.0f); + HuSprAttrSet(thpGroup, 0, HUSPR_ATTR_DISPOFF); + HuTHPClose(); + + for (var_r31 = 0, var_f31 = 1.0f; var_r31 < 30; var_r31++, var_f31 -= 1.0f / 30.0f) { + HuSprTPLvlSet(staffLogoGroup[1], 0, var_f31); + HuPrcVSleep(); + } + HuSprAttrSet(staffLogoGroup[1], 0, HUSPR_ATTR_DISPOFF); + HuPrcSleep(120); + HuSprAttrReset(staffLogoGroup[2], 0, HUSPR_ATTR_DISPOFF); + HuSprGrpPosSet(staffLogoGroup[2], 280.0f, 240.0f); + + for (var_r31 = 0, var_f31 = 0.0f; var_r31 < 30; var_r31++, var_f31 += 1.0f / 30.0f) { + HuSprTPLvlSet(staffLogoGroup[2], 0, var_f31); + HuPrcVSleep(); + } + + HuPrcSleep(600); + + while (TRUE) { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (HuPadBtn[var_r31] & PAD_BUTTON_START) { + break; + } + } + if (var_r31 < 4) { + break; + } + HuPrcVSleep(); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuAudFadeOut(1000); + HuPrcSleep(60); + MGSeqKillAll(); + omOvlReturnEx(1, 1); + + while (TRUE) { + HuPrcVSleep(); + } +} diff --git a/src/REL/w01Dll/main.c b/src/REL/w01Dll/main.c index c17f0a58..615dce8c 100755 --- a/src/REL/w01Dll/main.c +++ b/src/REL/w01Dll/main.c @@ -1114,7 +1114,7 @@ static void fn_1_3624(void) { } temp_r19 = HuAudFXPlay(0x40C); fn_1_4774(); - WipeCreate(1, 0, -1); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); lbl_1_bss_6B0 = 1; HuAudFXPlay(0x413); while (TRUE) { @@ -1163,7 +1163,7 @@ static void fn_1_3624(void) { lbl_1_bss_660.x = lbl_1_bss_660.z = 0.0f; BoardAudSeqFadeOut(1, 1000); WipeColorSet(0, 0, 0); - WipeCreate(2, 0, -1); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); HuAudFXPlay(0x401); temp_f28 = (-lbl_1_bss_63C - lbl_1_bss_660.y) / 30.0f; for (i = 0; i < 30; i++) { @@ -1213,7 +1213,7 @@ static void fn_1_45F4(void) { BoardAudSeqPause(0, 0, 1000); BoardCameraMoveSet(1); BoardCameraMotionWait(); - WipeCreate(1, 0, 21); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -1316,7 +1316,7 @@ static s32 fn_1_48B4(void) { HuAudFXPlay(0x402); BoardStatusShowSetAll(0); WipeColorSet(0, 0, 0); - WipeCreate(2, 0, 21); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -1930,7 +1930,7 @@ static void fn_1_77EC(s32 arg0, s32 arg1) { static void fn_1_7894(void) { lbl_1_bss_6B1 = 1; WipeColorSet(0, 0, 0); - WipeCreate(2, 0, 21); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -1987,7 +1987,7 @@ static void fn_1_7A64(void) { fn_1_852C(); BoardModelMotionSpeedSet(lbl_1_bss_6AE, lbl_1_bss_670); BoardCameraMotionWait(); - WipeCreate(1, 0, -1); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); lbl_1_bss_6B0 = 1; temp_r19 = HuAudFXPlay(0x412); while (TRUE) { @@ -2005,13 +2005,13 @@ static void fn_1_7A64(void) { if (lbl_1_bss_0->unk00_field0 == 0) { if (BoardModelMotionTimeGet(lbl_1_bss_6AE) <= 20.0f && var_r28 == 0) { WipeColorSet(0, 0, 0); - WipeCreate(2, 0, -1); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); var_r28 = 1; } } else { if (BoardModelMotionTimeGet(lbl_1_bss_6AE) >= lbl_1_bss_644 - 20.0f && var_r28 == 0) { WipeColorSet(0, 0, 0); - WipeCreate(2, 0, -1); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); var_r28 = 1; } } diff --git a/src/REL/w04Dll/big_boo.c b/src/REL/w04Dll/big_boo.c index 4e897c0f..ff859078 100755 --- a/src/REL/w04Dll/big_boo.c +++ b/src/REL/w04Dll/big_boo.c @@ -301,7 +301,7 @@ static void fn_1_68D8(void) { HuPrcVSleep(); } BoardModelAlphaSet(lbl_1_bss_274, 0); - WipeCreate(2, 0, 60); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); WipeColorSet(0, 0, 0); while (WipeStatGet() != 0) { HuPrcVSleep(); @@ -384,7 +384,7 @@ static void fn_1_6CF8(void) { BoardCameraXRotZoomSet(1600.0f, -5.0f); lbl_1_bss_104 = HuPrcChildCreate(fn_1_75D8, 0x2003, 0x1000, 0, boardMainProc); HuPrcDestructorSet2(lbl_1_bss_104, fn_1_757C); - WipeCreate(1, 0, 60); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -417,7 +417,7 @@ static void fn_1_7300(void) { s32 i; s32 j; - WipeCreate(2, 0, 30); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -453,7 +453,7 @@ static void fn_1_7300(void) { sp8.x = sp8.y = sp8.z = 3.0f; BoardModelScaleSetV(lbl_1_bss_274, &sp8); BoardModelPosSetV(lbl_1_bss_274, &lbl_1_bss_108); - WipeCreate(1, 0, 30); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); while (WipeStatGet() != 0) { HuPrcVSleep(); } diff --git a/src/REL/w06Dll/bowser.c b/src/REL/w06Dll/bowser.c index e0a282bf..acc1bb8b 100755 --- a/src/REL/w06Dll/bowser.c +++ b/src/REL/w06Dll/bowser.c @@ -317,7 +317,7 @@ static void fn_1_95AC(s32 arg0) { HuPrcVSleep(); } WipeColorSet(0xFF, 0xFF, 0xFF); - WipeCreate(2, 1, 1); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_CROSS, 1); HuPrcSleep(2); BoardCameraMoveSet(0); BoardModelVisibilitySet(BoardPlayerModelGet(arg0), 0); @@ -334,7 +334,7 @@ static void fn_1_95AC(s32 arg0) { sp38.z = sp2C.z; BoardPlayerPosSetV(arg0, &sp38); BoardModelVisibilitySet(BoardPlayerModelGet(arg0), 1); - WipeCreate(1, 1, 30); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_CROSS, 30); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -553,7 +553,7 @@ static void fn_1_A408(s32 arg0) { _SetFlag(FLAG_ID_MAKE(1, 28)); _SetFlag(FLAG_ID_MAKE(1, 14)); WipeColorSet(0xFF, 0xFF, 0xFF); - WipeCreate(2, 0, -1); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -669,7 +669,7 @@ static void fn_1_AB4C(s32 arg0, s32 arg1) { BoardCameraMotionStartEx(lbl_1_data_49A, &spC, &sp18, 2000.0f, -1.0f, 2); BoardCameraMotionWait(); BoardCameraTargetModelSet(-1); - WipeCreate(1, 0, 21); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -1048,7 +1048,7 @@ static void fn_1_C40C(void) { sp20.y += 250.0f; BoardModelPosSetV(lbl_1_data_4A0, &sp20); BoardModelScaleSet(lbl_1_data_4A0, 10.0f, 10.0f, 10.0f); - WipeCreate(1, 0, 21); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -1083,7 +1083,7 @@ static void fn_1_C40C(void) { BoardWinKill(); BoardAudSeqFadeOut(1, 1000); WipeColorSet(0, 0, 0); - WipeCreate(2, 0, 21); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } diff --git a/src/REL/w20Dll/main.c b/src/REL/w20Dll/main.c new file mode 100644 index 00000000..f4c3829d --- /dev/null +++ b/src/REL/w20Dll/main.c @@ -0,0 +1,154 @@ +#include "game/board/model.h" +#include "game/data.h" +#include "game/gamework_data.h" +#include "math.h" + +#include "REL/w20Dll.h" + +s16 lbl_1_bss_C; +s32 lbl_1_bss_8; +s32 lbl_1_bss_4; +UnkW20BoardData *lbl_1_bss_0; + +s16 lbl_1_data_0 = 0xFFFF; +s16 lbl_1_data_2 = 0xFFFF; +s16 lbl_1_data_4 = 0xFFFF; +s16 lbl_1_data_6 = 0xFFFF; +s16 lbl_1_data_8 = 0xFFFF; +s16 lbl_1_data_A = 0xFFFF; +s32 lbl_1_data_C[] = { + 0x005F0000, + 0x001A0000, + 0x006D0000, + 0x008A0000, + 0x00850000, + 0x00110000, + 0x000D0000, + 0x00810000, +}; + +s32 unkMotTbl[] = { DATA_MAKE_NUM(DATADIR_BGUEST, 42), -1 }; + +void fn_1_44C(void); +void fn_1_490(void); +void fn_1_494(void); +s32 fn_1_498(void); +void fn_1_4A0(void); +void fn_1_4A4(void); +void fn_1_4A8(void); +s32 fn_1_4AC(s16 arg0, float arg8, float arg9); + +void BoardCreate(void) +{ + s32 sp8; + s32 var_r31; + + var_r31 = GWSystem.board; + sp8 = var_r31; + lbl_1_bss_0 = (UnkW20BoardData *)GWSystem.board_data; + lbl_1_bss_0->unk_00 = 0; + lbl_1_bss_0->unk_04 = 0; + lbl_1_bss_0->unk_06 = 0; + BoardSpaceInit(DATA_MAKE_NUM(DATADIR_W20, 0)); + lbl_1_data_0 = BoardModelCreate(0x7C0001, NULL, 0); + fn_8006DDE8(lbl_1_data_0, -1.0f); + BoardModelPosSet(lbl_1_data_0, 0.0f, 0.0f, 0.0f); + BoardModelMotionStart(lbl_1_data_0, 0, 0x40000001); + BoardModelMotionSpeedSet(lbl_1_data_0, 1.0f); + lbl_1_data_2 = BoardModelCreate(0x7C0002, NULL, 0); + fn_8006DDE8(lbl_1_data_2, -1.0f); + BoardModelPosSet(lbl_1_data_2, 0.0f, 0.0f, 0.0f); + BoardModelMotionStart(lbl_1_data_2, 0, 0x40000001); + lbl_1_data_6 = BoardModelCreate(0x20029, unkMotTbl, 0); + BoardModelMotionStart(lbl_1_data_6, 1, 0x40000001); + lbl_1_data_8 = BoardModelCreate(0x20029, unkMotTbl, 0); + BoardModelMotionStart(lbl_1_data_8, 1, 0x40000001); + BoardLightHookSet(fn_1_44C, fn_1_490); + BoardSpaceWalkEventFuncSet(fn_1_498); + BoardSpaceWalkMiniEventFuncSet(fn_1_4A8); + BoardSpaceLandEventFuncSet(fn_1_494); + BoardShopHostSet(lbl_1_data_6); + BoardLotteryHostSet(lbl_1_data_8); + BoardStarHostSet(lbl_1_data_6); +} + +void BoardDestroy(void) +{ + if (lbl_1_data_6 != -1) { + BoardModelKill(lbl_1_data_6); + lbl_1_data_6 = -1; + } + if (lbl_1_data_0 != -1) { + BoardModelKill(lbl_1_data_0); + lbl_1_data_0 = -1; + } + if (lbl_1_data_2 != -1) { + BoardModelKill(lbl_1_data_2); + lbl_1_data_2 = -1; + } + BoardSpaceDestroy(); +} + +void fn_1_44C(void) +{ + s16 var_r31; + + var_r31 = BoardModelIDGet(lbl_1_data_0); + Hu3DModelLightInfoSet(var_r31, 1); +} + +void fn_1_490(void) { } + +void fn_1_494(void) { } + +s32 fn_1_498(void) { return 0; } + +void fn_1_4A0(void) { } + +void fn_1_4A4(void) { } + +void fn_1_4A8(void) { } + +s32 fn_1_4AC(s16 arg0, float arg8, float arg9) +{ + float var_f29; + float var_f31; + s32 var_r31; + + var_r31 = 0; + var_f31 = BoardModelRotYGet(arg0); + arg8 = fmod(arg8, 360.0f); + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + if (arg8 < 0.0f) { + arg8 += 360.0f; + } + if (var_f31 != arg8) { + var_f29 = arg8 - var_f31; + if (var_f29 < 0.0f) { + var_f29 += 360.0f; + } + if (var_f29 < 180.0f) { + if (var_f29 > arg9) { + var_f31 += arg9; + } else { + var_f31 = arg8; + } + } else if ((360.0f - var_f29) > arg9) { + var_f31 -= arg9; + } else { + var_f31 = arg8; + } + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + if (var_f31 >= 360.0f) { + var_f31 -= 360.0f; + } + BoardModelRotYSet(arg0, var_f31); + } else { + var_r31 = 1; + } + return var_r31; +} diff --git a/src/game/board/boo.c b/src/game/board/boo.c index 2042ae27..b4d2a436 100755 --- a/src/game/board/boo.c +++ b/src/game/board/boo.c @@ -17,7 +17,7 @@ #include "game/board/space.h" #include "game/board/window.h" -#include "math.h" +#include "ext_math.h" typedef struct { struct { @@ -635,12 +635,12 @@ static void BallMain(omObjData *arg0) { temp_f30 = 240.0f; BoardCameraRotGet(&sp20); BoardCameraTargetGet(&sp2C); - sp8.x = sp2C.x + sin(sp20.y * M_PI / 180.0) * cos(sp20.x * M_PI / 180.0) * temp_f30; - sp8.y = sp2C.y + -sin(sp20.x * M_PI / 180.0) * temp_f30; - sp8.z = sp2C.z + cos(sp20.y * M_PI / 180.0) * cos(sp20.x * M_PI / 180.0) * temp_f30; - sp14.x = sin(sp20.y * M_PI / 180.0) * sin(sp20.x * M_PI / 180.0); - sp14.y = cos(sp20.x * M_PI / 180.0); - sp14.z = cos(sp20.y * M_PI / 180.0) * sin(sp20.x * M_PI / 180.0); + sp8.x = sp2C.x + sind(sp20.y) * cosd(sp20.x) * temp_f30; + sp8.y = sp2C.y + -sind(sp20.x) * temp_f30; + sp8.z = sp2C.z + cosd(sp20.y) * cosd(sp20.x) * temp_f30; + sp14.x = sind(sp20.y) * sind(sp20.x); + sp14.y = cosd(sp20.x); + sp14.z = cosd(sp20.y) * sind(sp20.x); if (temp_r30->unk01 != 0) { temp_r30->unk02 += temp_r30->unk01; if (temp_r30->unk02 > 255) { @@ -711,8 +711,8 @@ static void BallRenderHook(void) { sp20.z = 0.0f; C_MTXLookAt(sp38, &sp2C, &sp20, &sp14); GXLoadPosMtxImm(sp38, GX_PNMTX0); - sp2C.x = sin(5 * M_PI / 72) * 20000.0 * 1.2f; - sp2C.y = sin(5 * M_PI / 72) * 20000.0 * 0.8333333f; + sp2C.x = sind(12.5) * 20000.0 * 1.2f; + sp2C.y = sind(12.5) * 20000.0 * 0.8333333f; sp2C.z = -9000.0f; GXBegin(GX_QUADS, GX_VTXFMT0, 4); GXPosition3f32(-sp2C.x, -sp2C.y, sp2C.z); @@ -754,12 +754,12 @@ static void UpdateBallCamera(omObjData *arg0) { sp20.x = arg0->trans.x; sp20.y = arg0->trans.y + arg0->rot.y; sp20.z = arg0->trans.z; - sp14.x = sp20.x + sin(0.0) * cos(arg0->rot.x * M_PI / 180.0) * arg0->rot.z; - sp14.y = sp20.y + -sin(arg0->rot.x * M_PI / 180.0) * arg0->rot.z; - sp14.z = sp20.z + cos(0.0) * cos(arg0->rot.x * M_PI / 180.0) * arg0->rot.z; - sp8.x = sin(0.0) * sin(arg0->rot.x * M_PI / 180.0); - sp8.y = cos(arg0->rot.x * M_PI / 180.0); - sp8.z = cos(0.0) * sin(arg0->rot.x * M_PI / 180.0); + sp14.x = sp20.x + sin(0.0) * cosd(arg0->rot.x) * arg0->rot.z; + sp14.y = sp20.y + -sind(arg0->rot.x) * arg0->rot.z; + sp14.z = sp20.z + cos(0.0) * cosd(arg0->rot.x) * arg0->rot.z; + sp8.x = sin(0.0) * sind(arg0->rot.x); + sp8.y = cosd(arg0->rot.x); + sp8.z = cos(0.0) * sind(arg0->rot.x); Hu3DCameraPosSetV(var_r30->unk02, &sp14, &sp8, &sp20); } @@ -909,9 +909,9 @@ static void BallPlayerZoomOut(omObjData *arg0, BallPlayerWork *arg1) { sp14.x = arg0->trans.x; sp14.y = arg0->trans.y; sp14.z = arg0->trans.z; - sp8.x = sp14.x + 120.0 * sin(-M_PI / 2); + sp8.x = sp14.x + 120.0 * sind(-90); sp8.y = sp14.y; - sp8.z = sp14.z + 120.0 * cos(-M_PI / 2); + sp8.z = sp14.z + 120.0 * cosd(-90); BoardPlayerPosLerpStart(stealTarget, &sp14, &sp8, 20); var_r29 = GWPlayer[stealTarget].character; HuAudFXPlay(booSfxTbl[0][var_r29]); @@ -1082,9 +1082,9 @@ static void BallBooCreate(void) { BoardModelCameraSet(temp_r31->unk04, 1); temp_f31 = BoardPlayerRotYGet(stealTarget); BoardPlayerPosGet(stealTarget, &sp14); - ballBooObj->trans.x = sp14.x + 240.0 * sin(-temp_f31 * M_PI / 180.0); + ballBooObj->trans.x = sp14.x + 240.0 * sind(-temp_f31); ballBooObj->trans.y = sp14.y + 160.0f; - ballBooObj->trans.z = sp14.z + 240.0 * cos(-temp_f31 * M_PI / 180.0); + ballBooObj->trans.z = sp14.z + 240.0 * cosd(-temp_f31); BoardModelPosSet(temp_r31->unk04, ballBooObj->trans.x, ballBooObj->trans.y, ballBooObj->trans.z); if (stealType == 2) { var_f30 = 126.0f; @@ -1093,9 +1093,9 @@ static void BallBooCreate(void) { var_f30 = 90.0f; var_f29 = 100.0f; } - sp8.x = sp14.x + var_f30 * sin(-temp_f31 * M_PI / 180.0); + sp8.x = sp14.x + var_f30 * sind(-temp_f31); sp8.y = sp14.y + var_f29; - sp8.z = sp14.z + var_f30 * cos(-temp_f31 * M_PI / 180.0); + sp8.z = sp14.z + var_f30 * cosd(-temp_f31); ballBooObj->rot.x = (sp8.x - ballBooObj->trans.x) / 60.0f; ballBooObj->rot.y = (sp8.y - ballBooObj->trans.y) / 60.0f; ballBooObj->rot.z = (sp8.z - ballBooObj->trans.z) / 60.0f; @@ -1104,7 +1104,7 @@ static void BallBooCreate(void) { ballBooObj->scale.z = 1.0f; sp8.x = sp14.x - ballBooObj->trans.x; sp8.z = sp14.z - ballBooObj->trans.z; - ballBooObj->scale.y = 180.0 * (atan2(sp8.x, sp8.z) / M_PI); + ballBooObj->scale.y = atan2d(sp8.x, sp8.z); BoardModelRotYSet(temp_r31->unk04, ballBooObj->scale.y); BoardModelMotionStart(temp_r31->unk04, 1, 0x40000001); } @@ -1246,7 +1246,7 @@ static void BallBooAttack(omObjData *arg0, BallBooWork *arg1) { } } OSu8tof32(&arg1->unk02, &var_f29); - arg0->scale.z = 1.0 + sin(var_f29 * M_PI / 180.0); + arg0->scale.z = 1.0 + sind(var_f29); } static void BallBooFlash(omObjData *arg0, BallBooWork *arg1) { @@ -1258,9 +1258,9 @@ static void BallBooFlash(omObjData *arg0, BallBooWork *arg1) { BoardModelMotionShiftSet(arg1->unk04, 3, 0.0f, 10.0f, 0x40000001); temp_f31 = BoardPlayerRotYGet(stealTarget); BoardPlayerPosGet(stealTarget, &sp8); - sp8.x += 500.0 * sin(-temp_f31 * M_PI / 180.0); + sp8.x += 500.0 * sind(-temp_f31); sp8.y = sp8.y + 160.0f; - sp8.z += 500.0 * cos(-temp_f31 * M_PI / 180.0); + sp8.z += 500.0 * cosd(-temp_f31); arg0->rot.x = (sp8.x - arg0->trans.x) / 72.0f; arg0->rot.y = (sp8.y - arg0->trans.y) / 72.0f; arg0->rot.z = (sp8.z - arg0->trans.z) / 72.0f; @@ -1365,8 +1365,8 @@ void TakeBallStar(void) { ballTakeCoinObj->trans.y = sp8.y + 150.0f; ballTakeCoinObj->trans.z = sp8.z; temp_r31->unk04 = sp8.y; - ballTakeCoinObj->rot.x = 3.0 * sin(4 * M_PI / 9); - ballTakeCoinObj->rot.z = 3.0 * cos(4 * M_PI / 9); + ballTakeCoinObj->rot.x = 3.0 * sind(80); + ballTakeCoinObj->rot.z = 3.0 * cosd(80); ballTakeCoinObj->rot.y = 0.0f; BoardModelPosSet(temp_r31->unk02, ballTakeCoinObj->trans.x, ballTakeCoinObj->trans.y, ballTakeCoinObj->trans.z); BoardModelVisibilitySet(temp_r31->unk02, 1); diff --git a/src/game/board/boo_house.c b/src/game/board/boo_house.c index 3d8cf829..05e5b246 100644 --- a/src/game/board/boo_house.c +++ b/src/game/board/boo_house.c @@ -15,6 +15,8 @@ #include "game/board/player.h" #include "game/board/window.h" +#include "ext_math.h" + // bss static s16 houseMdl[6]; @@ -134,7 +136,7 @@ static void ExecBooHouse(void) { Vec sp20; Vec sp14; Vec sp8; - f32 temp_f31; + float temp_f31; s16 temp_r29; s32 var_r31; s16 var_r30; @@ -187,7 +189,7 @@ static void ExecBooHouse(void) { BoardSpacePosGet(0, temp_r29, &sp2C); PSVECSubtract(&sp2C, &sp38, &sp20); PSVECNormalize(&sp20, &sp20); - temp_f31 = (180.0 * (atan2(-sp20.x, -sp20.z) / M_PI)); + temp_f31 = atan2d(-sp20.x, -sp20.z); sp14.x = -15.0f; sp14.y = temp_f31; sp14.z = 0.0f; @@ -577,7 +579,7 @@ void ApplySteal(void) { s32 temp_r30; s32 temp_r6; s32 var_r31; - f32 var_f31; + float var_f31; BoardModelHookSet(houseMdl[0], "yoko8", booMdl); BoardModelVisibilitySet(booMdl, 1); @@ -749,7 +751,7 @@ void BoardBooHouseTutorialExec(void) { Vec sp20; Vec sp14; Vec sp8; - f32 temp_f31; + float temp_f31; s16 temp_r28; s16 temp_r29; s32 temp_r27; @@ -765,7 +767,7 @@ void BoardBooHouseTutorialExec(void) { BoardSpacePosGet(0, temp_r28, &sp2C); PSVECSubtract(&sp2C, &sp38, &sp20); PSVECNormalize(&sp20, &sp20); - temp_f31 = (180.0 * (atan2(-sp20.x, -sp20.z) / M_PI)); + temp_f31 = atan2d(-sp20.x, -sp20.z); sp14.x = -15.0f; sp14.y = temp_f31; sp14.z = 0.0f; diff --git a/src/game/board/char_wheel.c b/src/game/board/char_wheel.c index a3d53557..e155fa5f 100755 --- a/src/game/board/char_wheel.c +++ b/src/game/board/char_wheel.c @@ -10,7 +10,7 @@ #include "game/board/tutorial.h" #include "game/board/ui.h" -#include "math.h" +#include "ext_math.h" typedef struct { struct { @@ -374,7 +374,7 @@ static void GrowCharWheel(CharWheelWork *arg0) { if (arg0->unk02 < 90) { arg0->unk02 += 3; } else { - if (_CheckFlag(0x1000B)) { + if (_CheckFlag(FLAG_ID_MAKE(1, 11))) { BoardTutorialHookExec(0x14, 0); } arg0->unk02 = 90; @@ -382,7 +382,7 @@ static void GrowCharWheel(CharWheelWork *arg0) { wheelFXStat = HuAudFXPlay(0x30A); } OSs8tof32(&arg0->unk02, &temp_f30); - HuSprGrpScaleSet(wheelSprGrp, sin(temp_f30 * M_PI / 180.0), sin(temp_f30 * M_PI / 180.0)); + HuSprGrpScaleSet(wheelSprGrp, sind(temp_f30), sind(temp_f30)); } static void ShrinkCharWheel(CharWheelWork *arg0) { @@ -397,7 +397,7 @@ static void ShrinkCharWheel(CharWheelWork *arg0) { targetF = 0; } OSs8tof32(&arg0->unk02, &temp_f30); - HuSprGrpScaleSet(wheelSprGrp, sin(temp_f30 * M_PI / 180.0), sin(temp_f30 * M_PI / 180.0)); + HuSprGrpScaleSet(wheelSprGrp, sind(temp_f30), sind(temp_f30)); } static void KillCharWheelSpr(void) { diff --git a/src/game/board/com.c b/src/game/board/com.c index 3f6cc4bf..d98c4bb7 100755 --- a/src/game/board/com.c +++ b/src/game/board/com.c @@ -9,7 +9,7 @@ #include "game/board/window.h" #include "game/board/boo.h" -#include "math.h" +#include "ext_math.h" typedef BOOL (*UseCheckFunc)(s32 player, s32 item); @@ -625,7 +625,7 @@ s32 BoardComJunctionInputGet(s32 item, Vec *input, s32 num_dirs, float *dirs) { BoardSpacePosGet(0, space, &pos_junction); BoardSpacePosGet(0, space_next, &pos_next); PSVECSubtract(&pos_next, &pos_junction, &dir); - angle = BoardDAngleCalc(90.0 - 180.0 * (atan2(dir.z, dir.x) / M_PI)); + angle = BoardDAngleCalc(90.0 - atan2d(dir.z, dir.x)); if (angle < 0.0f) { angle += 360.0f; } diff --git a/src/game/board/item.c b/src/game/board/item.c index b7b40ddf..e9486df6 100755 --- a/src/game/board/item.c +++ b/src/game/board/item.c @@ -26,6 +26,8 @@ #include "game/board/view.h" #include "game/frand.h" +#include "ext_math.h" + typedef struct { /* 0x00 */ s16 unk00; /* 0x02 */ s16 unk02; @@ -285,7 +287,7 @@ static void ItemSizeShowAnim(void) { BoardModelRotSetV(suitMdl, &spC); BoardModelPosSetV(suitMdl, &sp24); for (i = 0; i < 120; i++) { - sp24.y += 3.0 * sin(var_f31 * M_PI / 180.0); + sp24.y += 3.0 * sind(var_f31); BoardModelPosSetV(suitMdl, &sp24); var_f31 += 9.0f; if (var_f31 >= 360.0f) { @@ -318,7 +320,7 @@ static void ItemRotProc(void) { while (1) { if (temp_r31->unk00 == 0) { sp14 = sp20; - sp14.y += temp_r31->unk04 * sin(temp_r31->unk0C * M_PI / 180.0); + sp14.y += temp_r31->unk04 * sind(temp_r31->unk0C); BoardModelPosSetV(temp_r31->unk02, &sp14); temp_r31->unk0C += temp_r31->unk08; if (temp_r31->unk0C >= 360.0f) { @@ -489,8 +491,8 @@ static Process *ItemShowProc(UnkItemShowProcStruct *arg0, Vec *arg1) { if (arg0 == NULL || arg0->unk1C != 0) { CharModelLayerSetAll(3); sp20.y += 35.0f; - sp20.z += 50.0 * cos(sp14.y * M_PI / 180.0); - sp20.x += 50.0 * sin(sp14.y * M_PI / 180.0); + sp20.z += 50.0 * cosd(sp14.y); + sp20.x += 50.0 * sind(sp14.y); CharModelEffectCreate(1, &sp20); HuPrcSleep(10); } @@ -861,7 +863,7 @@ static void ExecItemPipe(void) { HuPrcVSleep(); } WipeColorSet(0, 0, 0); - WipeCreate(2, 0, 30); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -887,7 +889,7 @@ static void ExecItemPipe(void) { BoardPlayerVoiceEnableSet(sp2C[var_r31], 4, 0); BoardModelVisibilitySet(BoardPlayerModelGet(sp2C[var_r31]), 0); } - WipeCreate(1, 0, 30); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -1124,12 +1126,12 @@ static void ExecItemSwap(void) { for (var_r31 = 0; var_r31 < 60; var_r31++) { for (var_r30 = 0; var_r30 < var_r28 / 2; var_r30++) { sp6C = sp1A4[var_r30]; - sp6C.x += 3.0 * sin((frandmods(360)) * M_PI / 180.0); - sp6C.y += 3.0 * sin((frandmods(360)) * M_PI / 180.0); + sp6C.x += 3.0 * sind(frandmods(360)); + sp6C.y += 3.0 * sind(frandmods(360)); BoardModelPosSetV(sp54[var_r30], &sp6C); sp6C = sp180[var_r30]; - sp6C.x += 3.0 * sin((frandmods(360)) * M_PI / 180.0); - sp6C.y += 3.0 * sin((frandmods(360)) * M_PI / 180.0); + sp6C.x += 3.0 * sind(frandmods(360)); + sp6C.y += 3.0 * sind(frandmods(360)); BoardModelPosSetV(sp54[var_r30 + 3], &sp6C); } HuPrcSleep(2); @@ -1263,8 +1265,8 @@ static void ExecItemSpark(void) { BoardSpaceRotGet(0, GWPlayer[currItemRestore].space_curr, &sp20); BoardModelRotSetV(suitMdl, &sp20); BoardModelPosGet(suitMdl, &sp2C); - sp2C.z += 106.0 * sin(sp20.x * M_PI / 180.0); - sp2C.x -= 106.0 * sin(sp20.z * M_PI / 180.0); + sp2C.z += 106.0 * sind(sp20.x); + sp2C.x -= 106.0 * sind(sp20.z); BoardModelPosSetV(suitMdl, &sp2C); HuAudFXPlay(0x31B); BoardModelMotionStart(suitMdl, 1, 0); @@ -1369,9 +1371,9 @@ static void ExecItemWhistle(void) { temp_r17 = BoardModelMotionCreate(sp20[var_r31], DATA_MAKE_NUM(DATADIR_BGUEST, 40)); BoardModelMotionStart(sp20[var_r31], temp_r17, 0x40000001); sp28[var_r31] = 120.0f; - spF0[var_r31].x = spB4.x + 120.0 * sin(var_f31 * M_PI / 180.0); + spF0[var_r31].x = spB4.x + 120.0 * sind(var_f31); spF0[var_r31].y = 1000.0f + spB4.y + 100.0f * var_r31; - spF0[var_r31].z = spB4.z + 120.0 * cos(var_f31 * M_PI / 180.0); + spF0[var_r31].z = spB4.z + 120.0 * cosd(var_f31); spC0[var_r31].x = spC0[var_r31].z = 0.0f; spC0[var_r31].y = var_f31 + 90.0f; if (spC0[var_r31].y >= 360.0f) { @@ -1420,7 +1422,7 @@ static void ExecItemWhistle(void) { HuPrcVSleep(); } WipeColorSet(0, 0, 0); - WipeCreate(2, 0, 60); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -1435,7 +1437,7 @@ static void ExecItemWhistle(void) { for (var_r31 = 0; var_r31 < 4; var_r31++) { BoardModelVisibilitySet(sp20[var_r31], 1); } - WipeCreate(1, 0, 60); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -1490,8 +1492,8 @@ static void ExecItemWhistle(void) { if (spC0[var_r31].y >= 360.0f) { spC0[var_r31].y -= 360.0f; } - spF0[var_r31].x = spB4.x + 120.0 * sin(sp38[var_r31] * M_PI / 180.0); - spF0[var_r31].z = spB4.z + 120.0 * cos(sp38[var_r31] * M_PI / 180.0); + spF0[var_r31].x = spB4.x + 120.0 * sind(sp38[var_r31]); + spF0[var_r31].z = spB4.z + 120.0 * cosd(sp38[var_r31]); BoardModelPosSetV(sp20[var_r31], &spF0[var_r31]); BoardModelRotSetV(sp20[var_r31], &spC0[var_r31]); } @@ -1523,8 +1525,8 @@ static void ExecItemWhistle(void) { spF0[var_r31].y = spB4.y; sp48[var_r31] = -1.0f; } - spF0[var_r31].x = spB4.x + sp28[var_r31] * sin(sp38[var_r31] * M_PI / 180.0); - spF0[var_r31].z = spB4.z + sp28[var_r31] * cos(sp38[var_r31] * M_PI / 180.0); + spF0[var_r31].x = spB4.x + sp28[var_r31] * sind(sp38[var_r31]); + spF0[var_r31].z = spB4.z + sp28[var_r31] * cosd(sp38[var_r31]); BoardModelPosSetV(sp20[var_r31], &spF0[var_r31]); } } @@ -1538,7 +1540,7 @@ static void ExecItemWhistle(void) { BoardModelPosSetV(temp_r28, &sp9C); var_f30 *= 0.945f; if (sp9C.y >= 500.0f && var_r26 == 0) { - WipeCreate(2, 0, 45); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 45); BoardAudSeqFadeOut(0, 1000); var_r26 = 1; } @@ -1955,12 +1957,12 @@ static void LampParticleUpdate(ModelData *model, ParticleData *particle, Mtx mat } } if (j != particle->unk_30) { - var_r31->unk34.x = 60.0 * sin((spC.y - 90.0f) * M_PI / 180.0); + var_r31->unk34.x = 60.0 * sind(spC.y - 90.0f); var_r31->unk34.y = 30.0f; - var_r31->unk34.z = 60.0 * cos((spC.y - 90.0f) * M_PI / 180.0); + var_r31->unk34.z = 60.0 * cosd(spC.y - 90.0f); sp8 = 12.0f; - var_r31->unk08.x = 12.0 * cos((i * 110.0f + 35.0f) * M_PI / 180.0); - var_r31->unk08.y = 12.0 * sin((i * 110.0f + 35.0f) * M_PI / 180.0); + var_r31->unk08.x = 12.0 * cosd(i * 110.0f + 35.0f); + var_r31->unk08.y = 12.0 * sind(i * 110.0f + 35.0f); var_r31->unk08.z = 3.0f + frand8() * 5.0f * 0.003921569f; var_r31->unk14.y = 255.0f; var_r31->unk2C = 25.0f; @@ -1983,9 +1985,9 @@ static void LampParticleUpdate(ModelData *model, ParticleData *particle, Mtx mat if (var_r31->unk14.y <= 120.0f) { var_r31->unk14.y = 200.0f; temp_f31 = frand8() * 180.0f * 0.003921569f; - var_r31->unk08.x = 6.0 * cos(temp_f31 * M_PI / 180.0); + var_r31->unk08.x = 6.0 * cosd(temp_f31); var_r31->unk08.y = -4.0f; - var_r31->unk08.z = 6.0 * sin(temp_f31 * M_PI / 180.0); + var_r31->unk08.z = 6.0 * sind(temp_f31); var_r31->unk00_s16 = 1; } var_r31->unk40.a = var_r31->unk14.y; @@ -2017,11 +2019,11 @@ static void GenieParticleUpdate(ModelData *model, ParticleData *particle, Mtx ma var_r31->unk34.y = -50.0f + frand8() * 100.0f * 0.003921569f; var_r31->unk34.z = -10.0f + frand8() * 20.0f * 0.003921569f; temp_f31 = 0.5f + frand8() * 3.0f * 0.003921569f; - var_r31->unk08.x = temp_f31 * cos((i * 110.0f + 35.0f) * M_PI / 180.0); - var_r31->unk08.y = temp_f31 * sin((i * 110.0f + 35.0f) * M_PI / 180.0); + var_r31->unk08.x = temp_f31 * cosd(i * 110.0f + 35.0f); + var_r31->unk08.y = temp_f31 * sind(i * 110.0f + 35.0f); var_r31->unk08.z = 0.0f; var_r31->unk14.y = 255.0f; - temp_f30 = 125.0f + frand8() * 0x64 * 0.003921569f; + temp_f30 = 125.0f + frand8() * 100 * 0.003921569f; var_r31->unk40.r = var_r31->unk40.g = var_r31->unk40.b = temp_f30; var_r31->unk00 = 0; var_r31->unk2C = 80.0f + frand8() * 60.0f * 0.003921569f; @@ -2246,7 +2248,7 @@ static void GenieSceneExec(void) { Hu3DModelPosSet(temp_r27, booCamPos.x, booCamPos.y, booCamPos.z - 175.0f); temp_r23 = Hu3DData[temp_r27].unk_120; temp_r23->unk_02 = 1; - WipeCreate(1, 0, 45); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 45); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -2288,9 +2290,9 @@ static void GenieSceneExec(void) { booCamUp.x = sp38.x + (sp50.x - sp38.x) * 0.7f; booCamUp.y = sp38.y + 400.0f; booCamUp.z = sp38.z + (sp50.z - sp38.z) * 0.7f; - booCamPos.x = booCamUp.x + sin(-5 * M_PI / 9) * 1100.0; + booCamPos.x = booCamUp.x + sind(-100) * 1100.0; booCamPos.y = booCamUp.y + 950.0f; - booCamPos.z = booCamUp.z + cos(-5 * M_PI / 9) * 1100.0; + booCamPos.z = booCamUp.z + cosd(-100) * 1100.0; HuAudFXPlay(0x356); BoardWinCreate(2, MAKE_MESSID(18, 27), -1); BoardWinWait(); @@ -2343,7 +2345,7 @@ static void GenieSceneExec(void) { } HuPrcVSleep(); } - WipeCreate(2, 0, 45); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 45); BoardAudSeqFadeOut(1, 1000); while (WipeStatGet() != 0) { HuPrcVSleep(); @@ -2426,7 +2428,7 @@ static void ExecItemGenie(void) { HuAudFXStop(temp_r25); HuAudFXPauseAll(1); WipeColorSet(0xFF, 0xFF, 0xFF); - WipeCreate(2, 0, 45); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 45); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -2446,7 +2448,7 @@ static void ExecItemGenie(void) { BoardPlayerPosSetV(currItemRestore, &spC); BoardCameraMotionWait(); BoardCameraMoveSet(1); - WipeCreate(1, 0, 45); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 45); HuPrcSleep(15); BoardAudSeqPause(0, 0, 1000); while (WipeStatGet() != 0) { @@ -2565,7 +2567,7 @@ static void ExecItemBagShow(void) { break; } sp8 = sp14; - sp8.y += 15.0 * sin(var_f31 * M_PI / 180.0); + sp8.y += 15.0 * sind(var_f31); BoardModelPosSetV(suitMdl, &sp8); var_f31 += 36.0f; HuPrcVSleep(); diff --git a/src/game/board/pause.c b/src/game/board/pause.c index a3b6a10d..3bdcbfe3 100755 --- a/src/game/board/pause.c +++ b/src/game/board/pause.c @@ -506,13 +506,13 @@ static void PauseConfigObjFunc(omObjData *arg0) { break; case 1: if (UpdatePauseBox(arg0, temp_r31, 1) != 0) { - GWMGExplainSet(boxState[1]); + GWMGExplainSet(boxState[1]); } UpdatePauseText(cursorPos); break; case 2: if (UpdatePauseBox(arg0, temp_r31, 2) != 0) { - GWMGShowComSet(boxState[2]); + GWMGShowComSet(boxState[2]); } UpdatePauseText(cursorPos); break; @@ -534,7 +534,7 @@ static void PauseConfigObjFunc(omObjData *arg0) { break; case 4: if (UpdatePauseBox(arg0, temp_r31, 4) != 0) { - GWRumbleSet(boxState[4]); + GWRumbleSet(boxState[4]); } UpdatePauseText(cursorPos); break; @@ -542,13 +542,13 @@ static void PauseConfigObjFunc(omObjData *arg0) { if (UpdatePauseBoxExt(arg0, temp_r31, 5) != 0) { switch (boxState[5]) { case 0: - GWMessSpeedSet(2); + GWMessSpeedSet(2); break; case 1: - GWMessSpeedSet(1); + GWMessSpeedSet(1); break; case 2: - GWMessSpeedSet(0); + GWMessSpeedSet(0); break; } } @@ -562,13 +562,13 @@ static void PauseConfigObjFunc(omObjData *arg0) { if (UpdatePauseBoxExt(arg0, temp_r31, 6) != 0) { switch (boxState[6]) { case 0: - GWSaveModeSet(1); + GWSaveModeSet(1); break; case 1: - GWSaveModeSet(0); + GWSaveModeSet(0); break; case 2: - GWSaveModeSet(2); + GWSaveModeSet(2); break; } } diff --git a/src/game/board/roll.c b/src/game/board/roll.c index 643c4925..918fae5e 100755 --- a/src/game/board/roll.c +++ b/src/game/board/roll.c @@ -12,6 +12,8 @@ #include "game/board/player.h" #include "game/board/tutorial.h" +#include "ext_math.h" + typedef struct { struct { u8 unk00_field0 : 1; @@ -481,7 +483,7 @@ static void DiceMain(omObjData *arg0) { var_f27 = 1.0f; var_f28 = 0.5f; } - arg0->scale.x = var_f27 + var_f28 * sin((float) (temp_r29->unk04 % 180) * M_PI / 180.0); + arg0->scale.x = var_f27 + var_f28 * sind((float) (temp_r29->unk04 % 180)); arg0->scale.y = arg0->scale.x; arg0->scale.z = arg0->scale.x; if (temp_r29->unk04 <= 360) { @@ -502,7 +504,7 @@ static void DiceMain(omObjData *arg0) { temp_r29->unk04 -= 360; } OSs16tof32(&temp_r29->unk04, &temp_f29); - arg0->trans.y += 0.20000000298023224 * sin(temp_f29 * M_PI / 180.0); + arg0->trans.y += 0.2f * sind(temp_f29); break; case 2: temp_r29->unk04++; @@ -523,7 +525,7 @@ static void DiceMain(omObjData *arg0) { OSs16tof32(&temp_r29->unk04, &temp_f29); if (temp_r29->unk04 < 4) { arg0->trans.y += 10.0f + (0.5f * temp_f29); - arg0->scale.x = (arg0->scale.x + (0.10000000149011612 * sin((M_PI * (4.0f * temp_f29)) / 180.0))); + arg0->scale.x += 0.1f * sind(4.0f * temp_f29); arg0->scale.y = arg0->scale.x; arg0->scale.z = arg0->scale.x; } else { diff --git a/src/game/board/shop.c b/src/game/board/shop.c index 71cc0b2f..20608ce6 100755 --- a/src/game/board/shop.c +++ b/src/game/board/shop.c @@ -21,7 +21,7 @@ #include "game/board/window.h" #include "dolphin.h" -#include "math.h" +#include "ext_math.h" typedef struct { struct { @@ -262,7 +262,7 @@ static void ExecShop(void) { BoardSpacePosGet(0, temp_r25, &sp2C); PSVECSubtract(&sp2C, &sp38, &sp20); PSVECNormalize(&sp20, &sp20); - temp_f31 = 180.0 * (atan2(-sp20.x, -sp20.z) / M_PI); + temp_f31 = atan2d(-sp20.x, -sp20.z); sp14.x = -10.0f; sp14.y = temp_f31; sp14.z = 0.0f; @@ -535,7 +535,7 @@ static void UpdateShopWin(omObjData *arg0) { temp_r28->unk04 = 90; } OSs8tof32(&temp_r28->unk04, &var_f28); - arg0->scale.x = arg0->scale.y = arg0->scale.z = 0.25 * sin(var_f28 * M_PI / 180.0); + arg0->scale.x = arg0->scale.y = arg0->scale.z = 0.25 * sind(var_f28); } if (temp_r28->unk00_field1 == 5) { var_f29 = -12.5f; @@ -575,7 +575,7 @@ static void SetShopWinItem(ShopWinWork *arg0, omObjData *arg1) { BoardModelMotionSpeedSet(itemMdl, 0.033333335f); } BoardCameraDirGet(&spC); - arg1->rot.y = BoardDAngleCalc(180.0 * (atan2(-spC.x, -spC.z) / M_PI)); + arg1->rot.y = BoardDAngleCalc(atan2d(-spC.x, -spC.z)); OSf32tos16(&arg1->rot.y, &angleVal); } } @@ -689,7 +689,7 @@ static void MoveItemGive(omObjData *arg0, ItemGiveWork *arg1) { temp_f27 = -0.08166667f * temp_f27 * temp_f27; arg0->trans.y += temp_f27; BoardCameraDirGet(&sp10); - var_f26 = BoardDAngleCalc(180.0 * (atan2(-sp10.x, -sp10.z) / M_PI)); + var_f26 = BoardDAngleCalc(atan2d(-sp10.x, -sp10.z)); OSf32tos16(&var_f26, &angleVal); } else { arg0->scale.x += arg0->scale.y; @@ -723,7 +723,7 @@ static void ShrinkItemGive(omObjData *arg0, ItemGiveWork *arg1) { if (var_f30 > 90.0f) { var_f30 = 90.0f; } - arg0->scale.x = cos(var_f30 * M_PI / 180.0); + arg0->scale.x = cosd(var_f30); arg0->trans.y += arg0->rot.x; angleVal += 8; if (angleVal > 360) { @@ -1137,7 +1137,7 @@ void BoardShopTutorialExec(s32 arg0) { BoardSpacePosGet(0, temp_r27, &sp3C); PSVECSubtract(&sp3C, &sp48, &sp30); PSVECNormalize(&sp30, &sp30); - temp_f31 = 180.0 * (atan2(-sp30.x, -sp30.z) / M_PI); + temp_f31 = atan2d(-sp30.x, -sp30.z); sp24.x = -10.0f; sp24.y = temp_f31; sp24.z = 0.0f; diff --git a/src/game/board/space.c b/src/game/board/space.c index 7d18bc55..8f5db247 100644 --- a/src/game/board/space.c +++ b/src/game/board/space.c @@ -677,7 +677,7 @@ s32 BoardSpaceBlockExec(s32 player, s32 space) if(space == GWSystem.block_pos) { event_exec = 1; } - if((int)GWSystem.bonus_star == 0 && GWPartyGet() == 1 && !_CheckFlag(FLAG_ID_MAKE(1, 11))) { + if(!GWBonusStarGet() && GWPartyGet() == 1 && !_CheckFlag(FLAG_ID_MAKE(1, 11))) { event_exec = 0; } if(GWBoardGet() == 7 || GWBoardGet() == 8) { diff --git a/src/game/board/star.c b/src/game/board/star.c index d2613730..79f3e8fa 100755 --- a/src/game/board/star.c +++ b/src/game/board/star.c @@ -20,7 +20,7 @@ #include "game/board/ui.h" #include "game/board/window.h" -#include "math.h" +#include "ext_math.h" typedef struct { struct { @@ -207,7 +207,7 @@ static void ExecStar(void) { var_r22 = BoardSpaceLinkFlagSearch(0, temp_r24, 0x04000000); BoardSpacePosGet(0, var_r22, &sp18); PSVECSubtract(&sp18, &sp24, &spC); - temp_f30 = 90.0 - 180.0 * (atan2(spC.z, spC.x) / M_PI); + temp_f30 = 90.0 - atan2d(spC.z, spC.x); temp_f30 = 90.0f * ((temp_f30 + 3.0f) / 90.0f); temp_f29 = BoardPlayerRotYGet(temp_r31); BoardPlayerIdleSet(temp_r31); @@ -511,7 +511,7 @@ static void ShrinkGiveStar(GiveStarWork *arg0, omObjData *arg1) { } } OSs16tof32(&arg0->unk08, &var_f30); - arg1->scale.x = sin((var_f30 + 90.0f) * M_PI / 180.0); + arg1->scale.x = sind(var_f30 + 90.0f); if (arg1->scale.x <= 0.0f) { arg1->scale.x = 0.001f; } @@ -663,7 +663,7 @@ void BoardStarShowNext(s32 arg0) { var_r26 = &wipeData; if (var_r26->mode == 0) { WipeColorSet(0, 0, 0); - WipeCreate(2, 0, 21); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -727,7 +727,7 @@ void BoardStarShowNext(s32 arg0) { BoardCameraMotionWait(); BoardCameraMoveSet(1); HuPrcSleep(1); - WipeCreate(1, 0, 21); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -758,7 +758,7 @@ void BoardStarShowNext(s32 arg0) { } BoardAudSeqFadeOut(1, 1000); WipeColorSet(0, 0, 0); - WipeCreate(2, 0, 21); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -774,7 +774,7 @@ void BoardStarShowNext(s32 arg0) { BoardCameraMotionWait(); BoardCameraMoveSet(1); BoardStatusItemSet(1); - WipeCreate(1, 0, 21); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } diff --git a/src/game/board/start.c b/src/game/board/start.c index 0f0ea6a7..5013d43a 100755 --- a/src/game/board/start.c +++ b/src/game/board/start.c @@ -148,7 +148,7 @@ static void ExecStart(void) { InitCamera(); CreateTapWin(); InitHost(); - WipeCreate(1, 0, 0x15); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -172,7 +172,7 @@ static void ExecStart(void) { if (_CheckFlag(0x1000B)) { BoardTutorialHookExec(4, 0); WipeColorSet(0, 0, 0); - WipeCreate(2, 0, 0x15); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -188,7 +188,7 @@ static void ExecStart(void) { BoardCameraMotionWait(); BoardCameraMoveSet(1); BoardModelVisibilitySet(BoardStarHostMdlGet(), 0); - WipeCreate(1, 0, 0x15); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -197,7 +197,7 @@ static void ExecStart(void) { BoardCameraNearFarSet(100.0f, 13000.0f); if (GWBoardGet() == 7 || GWBoardGet() == 8) { WipeColorSet(0, 0, 0); - WipeCreate(2, 0, 0x15); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -213,7 +213,7 @@ static void ExecStart(void) { BoardCameraViewSet(2); BoardCameraMotionWait(); BoardCameraMoveSet(1); - WipeCreate(1, 0, 0x15); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } diff --git a/src/game/board/window.c b/src/game/board/window.c index 6a5e2e0f..5d037a90 100644 --- a/src/game/board/window.c +++ b/src/game/board/window.c @@ -172,7 +172,7 @@ static void ExecBoardWindow(void) { HuPrcEnd(); } -int BoardWinChoiceGet(void) { +s32 BoardWinChoiceGet(void) { return winChoice; } @@ -292,7 +292,7 @@ void BoardWinKeyWait(void) { winWait = 1; } -int BoardWinSpeedGet(void) { +s32 BoardWinSpeedGet(void) { return winSpeedTbl[GWMessSpeedGet()]; } diff --git a/src/game/data.c b/src/game/data.c index 3af1b340..e630d7ed 100644 --- a/src/game/data.c +++ b/src/game/data.c @@ -26,7 +26,7 @@ static DataReadStat ATTRIBUTE_ALIGN(32) ReadDataStat[DATA_MAX_READSTAT]; void HuDataInit(void) { - int i = 0; + s32 i = 0; FileListEntry *dir_stat = DataDirStat; DataReadStat *read_stat; while(dir_stat->name) { @@ -45,9 +45,9 @@ void HuDataInit(void) } } -static int HuDataReadStatusGet(void) +static s32 HuDataReadStatusGet(void) { - int i; + s32 i; for(i=0; i>= 16; for(i=0; i> 16; if(DataDirMax <= dir_id) { @@ -135,7 +135,7 @@ DataReadStat *HuDataDirRead(s32 data_num) static DataReadStat *HuDataDirReadNum(s32 data_num, s32 num) { DataReadStat *read_stat; - int status; + s32 status; s32 dir_id; dir_id = data_num >> 16; if(DataDirMax <= dir_id) { @@ -176,7 +176,7 @@ static DataReadStat *HuDataDirReadNum(s32 data_num, s32 num) DataReadStat *HuDataDirSet(void *dir_ptr, s32 data_num) { DataReadStat *read_stat = HuDataGetStatus(dir_ptr); - int status; + s32 status; if((status = HuDataReadChk(read_stat->dir_id << 16)) >= 0) { HuDataDirClose(data_num); } @@ -194,7 +194,7 @@ DataReadStat *HuDataDirSet(void *dir_ptr, s32 data_num) void HuDataDirReadAsyncCallBack(s32 result, DVDFileInfo* fileInfo) { DataReadStat *read_stat; - int i; + s32 i; for(i=0; istartAddr) { break; @@ -211,7 +211,7 @@ void HuDataDirReadAsyncCallBack(s32 result, DVDFileInfo* fileInfo) s32 HuDataDirReadAsync(s32 data_num) { DataReadStat *read_stat; - int status; + s32 status; s32 dir_id; dir_id = data_num >> 16; if(DataDirMax <= dir_id) { @@ -244,7 +244,7 @@ s32 HuDataDirReadAsync(s32 data_num) s32 HuDataDirReadNumAsync(s32 data_num, s32 num) { DataReadStat *read_stat; - int status; + s32 status; s32 dir_id; dir_id = data_num >> 16; if(DataDirMax <= dir_id) { @@ -291,7 +291,7 @@ static void GetFileInfo(DataReadStat *read_stat, s32 file_num) void *HuDataRead(s32 data_num) { DataReadStat *read_stat; - int status; + s32 status; void *buf; if(!HuDataDirRead(data_num)) { (void)data_num; @@ -312,7 +312,7 @@ void *HuDataRead(s32 data_num) void *HuDataReadNum(s32 data_num, s32 num) { DataReadStat *read_stat; - int status; + s32 status; void *buf; if(!HuDataDirReadNum(data_num, num)) { return NULL; @@ -332,7 +332,7 @@ void *HuDataReadNum(s32 data_num, s32 num) void *HuDataSelHeapRead(s32 data_num, HeapID heap) { DataReadStat *read_stat; - int status; + s32 status; void *buf; if(!HuDataDirRead(data_num)) { return NULL; @@ -368,7 +368,7 @@ void *HuDataSelHeapRead(s32 data_num, HeapID heap) void *HuDataSelHeapReadNum(s32 data_num, s32 num, HeapID heap) { DataReadStat *read_stat; - int status; + s32 status; void *buf; if(!HuDataDirReadNum(data_num, num)) { return NULL; @@ -412,7 +412,7 @@ static void **HuDataReadMultiSub(s32 *data_ids, BOOL use_num, s32 num) char **paths; void **dir_ptrs; void **out_ptrs; - int i, count, total_files; + s32 i, count, total_files; u32 dir_id; for(i=0, count=0; data_ids[i] != -1; i++) { dir_id = data_ids[i] >> 16; @@ -433,7 +433,7 @@ static void **HuDataReadMultiSub(s32 *data_ids, BOOL use_num, s32 num) for(i=0, count=0; data_ids[i] != -1; i++) { dir_id = data_ids[i] >> 16; if(HuDataReadChk(data_ids[i]) < 0) { - int j; + s32 j; for(j=0; dir_ids[j] != -1; j++) { if(dir_ids[j] == dir_id){ break; @@ -481,7 +481,7 @@ static void **HuDataReadMultiSub(s32 *data_ids, BOOL use_num, s32 num) s32 HuDataGetSize(s32 data_num) { DataReadStat *read_stat; - int status; + s32 status; if((status = HuDataReadChk(data_num)) == -1) { return -1; } @@ -499,7 +499,7 @@ void HuDataClose(void *ptr) void HuDataCloseMulti(void **ptrs) { - int i; + s32 i; for(i=0; ptrs[i]; i++) { void *ptr = ptrs[i]; if(ptr) { @@ -514,7 +514,7 @@ void HuDataCloseMulti(void **ptrs) void HuDataDirClose(s32 data_id) { DataReadStat *read_stat; - int i; + s32 i; s32 dir_id = data_id >> 16; for(i=0; isrc++) << 24; size += (*decode->src++) << 16; size += (*decode->src++) << 8; @@ -78,7 +78,7 @@ static void HuDecodeSlide(struct decode_data *decode) num_bits = 32; } if(flag >> 31) { - *decode->dst++ = (int)*decode->src++; + *decode->dst++ = (s32)*decode->src++; decode->size--; } else { u8 *src; @@ -125,7 +125,7 @@ static void HuDecodeFslide(struct decode_data *decode) num_bits = 32; } if(flag >> 31) { - *decode->dst++ = (int)*decode->src++; + *decode->dst++ = (s32)*decode->src++; decode->size--; } else { u8 *src; @@ -155,11 +155,11 @@ static void HuDecodeFslide(struct decode_data *decode) static void HuDecodeRle(struct decode_data *decode) { - int i; + s32 i; while(decode->size) { - int size = *decode->src++; + s32 size = *decode->src++; if(size < 128) { - int fill = *decode->src++; + s32 fill = *decode->src++; for(i=0; idst++ = fill; } @@ -173,7 +173,7 @@ static void HuDecodeRle(struct decode_data *decode) } } -void HuDecodeData(void *src, void *dst, u32 size, int decode_type) +void HuDecodeData(void *src, void *dst, u32 size, s32 decode_type) { struct decode_data decode; struct decode_data *decode_ptr = &decode; diff --git a/src/game/gamework.c b/src/game/gamework.c index e6207992..60ef959b 100644 --- a/src/game/gamework.c +++ b/src/game/gamework.c @@ -147,19 +147,19 @@ s32 GWMessDelayGet(void) return GWSystem.mess_delay; } -void GWMGRecordSet(int index, s32 value) +void GWMGRecordSet(s32 index, s32 value) { if(!_CheckFlag(FLAG_ID_MAKE(1, 12))) { GWGameStat.mg_record[index] = value; } } -s32 GWMGRecordGet(int index) +s32 GWMGRecordGet(s32 index) { return GWGameStat.mg_record[index]; } -void GWCharColorGet(int character, GXColor *color) +void GWCharColorGet(s32 character, GXColor *color) { GXColor char_color[] = { { 227, 67, 67, 255 }, @@ -174,7 +174,7 @@ void GWCharColorGet(int character, GXColor *color) *color = char_color[character]; } -void GWBoardPlayCountSet(int board, u8 value) +void GWBoardPlayCountSet(s32 board, u8 value) { if(value > 99) { value = 99; @@ -182,7 +182,7 @@ void GWBoardPlayCountSet(int board, u8 value) GWGameStat.board_play_count[board] = value; } -void GWBoardPlayCountAdd(int board, u8 value) +void GWBoardPlayCountAdd(s32 board, u8 value) { value += GWGameStat.board_play_count[board]; if(value > 99) { @@ -192,34 +192,34 @@ void GWBoardPlayCountAdd(int board, u8 value) } -u8 GWBoardPlayCountGet(int board) +u8 GWBoardPlayCountGet(s32 board) { return GWGameStat.board_play_count[board]; } -void GWBoardMaxStarsSet(int board, int value) +void GWBoardMaxStarsSet(s32 board, s32 value) { GWGameStat.board_max_stars[board] = value; } -u16 GWBoardMaxStarsGet(int board) +u16 GWBoardMaxStarsGet(s32 board) { return GWGameStat.board_max_stars[board]; } -void GWBoardMaxCoinsSet(int board, int value) +void GWBoardMaxCoinsSet(s32 board, s32 value) { GWGameStat.board_max_coins[board] = value; } -u16 GWBoardMaxCoinsGet(int board) +u16 GWBoardMaxCoinsGet(s32 board) { return GWGameStat.board_max_coins[board]; } -int GWBoardWinCountInc(int character, int board) +s32 GWBoardWinCountInc(s32 character, s32 board) { - int win_count = GWGameStat.board_win_count[board][character]+1; + s32 win_count = GWGameStat.board_win_count[board][character]+1; if(win_count > 99) { win_count = 99; } @@ -227,20 +227,20 @@ int GWBoardWinCountInc(int character, int board) return win_count; } -int GWBoardWinCountGet(int character, int board) +s32 GWBoardWinCountGet(s32 character, s32 board) { return GWGameStat.board_win_count[board][character]; } -void GWBoardWinCountSet(int character, int board, int value) +void GWBoardWinCountSet(s32 character, s32 board, s32 value) { GWGameStat.board_win_count[board][character] = value; } -int GWMGAvailGet(int id) +s32 GWMGAvailGet(s32 id) { - int word; - int bit; + s32 word; + s32 bit; id -= 401; word = id >> 5; bit = id % 32; @@ -251,20 +251,20 @@ int GWMGAvailGet(int id) } } -int GWMGAvailSet(int id) +s32 GWMGAvailSet(s32 id) { - int word; - int bit; + s32 word; + s32 bit; id -= 401; word = id >> 5; bit = id % 32; GWGameStat.mg_avail[word] |= (1 << bit); } -int GWMGCustomGet(int id) +s32 GWMGCustomGet(s32 id) { - int word; - int bit; + s32 word; + s32 bit; id -= 401; word = id >> 5; bit = id % 32; @@ -275,32 +275,32 @@ int GWMGCustomGet(int id) } } -int GWMGCustomSet(int id) +s32 GWMGCustomSet(s32 id) { - int word; - int bit; + s32 word; + s32 bit; id -= 401; word = id >> 5; bit = id % 32; GWGameStat.mg_custom[word] |= (1 << bit); } -int GWMGCustomReset(int id) +s32 GWMGCustomReset(s32 id) { - int word; - int bit; + s32 word; + s32 bit; id -= 401; word = id >> 5; bit = id % 32; GWGameStat.mg_custom[word] &= ~(1 << bit); } -s16 GWCoinsGet(int player) +s16 GWCoinsGet(s32 player) { return GWPlayer[player].coins; } -void GWCoinsSet(int player, s16 value) +void GWCoinsSet(s32 player, s16 value) { if(!_CheckFlag(FLAG_ID_MAKE(1, 12))) { if(value < 0) { @@ -316,12 +316,12 @@ void GWCoinsSet(int player, s16 value) } } -void GWCoinsAdd(int player, s16 amount) +void GWCoinsAdd(s32 player, s16 amount) { GWCoinsSet(player, GWPlayer[player].coins+amount); } -void GWStarsSet(int player, s16 value) +void GWStarsSet(s32 player, s16 value) { if(value < 0) { value = 0; @@ -335,12 +335,12 @@ void GWStarsSet(int player, s16 value) GWPlayer[player].stars = value; } -void GWStarsAdd(int player, s16 amount) +void GWStarsAdd(s32 player, s16 amount) { GWStarsSet(player, GWPlayer[player].stars+amount); } -s32 GWStarsGet(int player) +s32 GWStarsGet(s32 player) { return GWPlayer[player].stars; } diff --git a/src/game/hsfload.c b/src/game/hsfload.c index 1fe557d7..d5db2471 100644 --- a/src/game/hsfload.c +++ b/src/game/hsfload.c @@ -981,7 +981,7 @@ static void PaletteLoad(void) char *MakeObjectName(char *name) { static char buf[768]; - int index, num_minus; + s32 index, num_minus; char *temp_name; num_minus = 0; index = 0; @@ -1009,9 +1009,9 @@ char *MakeObjectName(char *name) return buf; } -int CmpObjectName(char *name1, char *name2) +s32 CmpObjectName(char *name1, char *name2) { - int temp = 0; + s32 temp = 0; return strcmp(name1, name2); } @@ -1054,7 +1054,7 @@ static inline s32 FindClusterName(char *name) return -1; } -static inline int FindMotionClusterName(char *name) +static inline s32 FindMotionClusterName(char *name) { s32 i; HsfCluster *cluster; @@ -1085,7 +1085,7 @@ static inline s32 FindAttributeName(char *name) return -1; } -static inline int FindMotionAttributeName(char *name) +static inline s32 FindMotionAttributeName(char *name) { s32 i; HsfAttribute *attribute; diff --git a/src/game/hsfman.c b/src/game/hsfman.c index 91f52d18..2108aeb2 100644 --- a/src/game/hsfman.c +++ b/src/game/hsfman.c @@ -1500,7 +1500,7 @@ void Hu3DLLightInfinitytSet(s16 dataIndex, s16 lightIndex) { Hu3DLightInfinitytSet(light); } -inline void Hu3DLightPointSet(LightData *light, u16 arg1, f32 arg8, f32 arg9) { +inline void Hu3DLightPointSet(LightData *light, f32 arg8, f32 arg9, u16 arg1) { light->unk_00 &= 0xFF00; light->unk_00 |= 2; light->unk_04 = arg8; @@ -1508,19 +1508,19 @@ inline void Hu3DLightPointSet(LightData *light, u16 arg1, f32 arg8, f32 arg9) { light->unk_02 = arg1; } -void Hu3DGLightPointSet(s16 arg0, u16 arg1, f32 arg8, f32 arg9) { +void Hu3DGLightPointSet(s16 arg0, f32 arg8, f32 arg9, u16 arg1) { LightData* light = &Hu3DGlobalLight[arg0]; - Hu3DLightPointSet(light, arg1, arg8, arg9); + Hu3DLightPointSet(light, arg8, arg9, arg1); } -void Hu3DLLightPointSet(s16 arg0, s16 arg1, u16 arg2, f32 arg8, f32 arg9) { +void Hu3DLLightPointSet(s16 arg0, s16 arg1, f32 arg8, f32 arg9, u16 arg2) { ModelData* data; LightData* light; data = &Hu3DData[arg0]; light = &Hu3DLocalLight[data->unk_38[arg1]]; - Hu3DLightPointSet(light, arg2, arg8, arg9); + Hu3DLightPointSet(light, arg8, arg9, arg2); } void Hu3DGLightKill(s16 index) { @@ -1755,7 +1755,7 @@ s32 Hu3DModelLightInfoSet(s16 arg0, s16 arg1) { Hu3DGLightSpotSet(sp12, 2, var_r18->light.cutoff); break; case 1: - Hu3DGLightPointSet(sp12, 2, var_r18->data.base.scale.x - var_r18->data.base.rot.z, 1.0f); + Hu3DGLightPointSet(sp12, var_r18->data.base.scale.x - var_r18->data.base.rot.z, 1.0f, 2); Hu3DGLightPosSet(sp12, var_r18->light.pos.x, var_r18->light.pos.y, var_r18->light.pos.z, var_r18->light.target.x, var_r18->light.target.y, var_r18->light.target.z); break; case 2: diff --git a/src/game/init.c b/src/game/init.c index 06adbaad..f3a4f853 100644 --- a/src/game/init.c +++ b/src/game/init.c @@ -166,7 +166,7 @@ void HuSysBeforeRender() void HuSysDoneRender(s32 retrace_count) { - int retrace_dist; + s32 retrace_dist; if(DemoStatEnable) { GXDrawDone(); DEMOUpdateStats(1); diff --git a/src/game/jmp.c b/src/game/jmp.c index 94ec81b4..8313bd8c 100755 --- a/src/game/jmp.c +++ b/src/game/jmp.c @@ -1,6 +1,6 @@ #include "game/jmp.h" -int gcsetjmp(register jmp_buf *jump) { +s32 gcsetjmp(register jmp_buf *jump) { // clang-format off asm { mflr r5 @@ -36,7 +36,7 @@ int gcsetjmp(register jmp_buf *jump) { } // clang-format off -asm int gclongjmp(register jmp_buf *jump, register int status) { +asm s32 gclongjmp(register jmp_buf *jump, register s32 status) { nofralloc lwz r5, jump->lr lwz r6, jump->cr diff --git a/src/game/malloc.c b/src/game/malloc.c index 4eb3be59..863f8c57 100644 --- a/src/game/malloc.c +++ b/src/game/malloc.c @@ -7,7 +7,7 @@ static void *HeapTbl[HEAP_MAX]; void HuMemInitAll(void) { - int i; + s32 i; void *ptr; u32 free_size; for(i=0; i<4; i++) { diff --git a/src/game/minigame_seq.c b/src/game/minigame_seq.c index 6834f870..0e721a52 100644 --- a/src/game/minigame_seq.c +++ b/src/game/minigame_seq.c @@ -31,30 +31,30 @@ typedef struct seq_info { s32 time_max; } SeqInfo; -static int SeqInitTimer(SeqWork *work, va_list params); -static int SeqUpdateTimer(SeqWork *work); +static s32 SeqInitTimer(SeqWork *work, va_list params); +static s32 SeqUpdateTimer(SeqWork *work); -static int SeqInitType2(SeqWork *work, va_list params); -static int SeqUpdateType2(SeqWork *work); +static s32 SeqInitType2(SeqWork *work, va_list params); +static s32 SeqUpdateType2(SeqWork *work); -static int SeqInitMGBasic(SeqWork *work, va_list params); -static int SeqUpdateMGBasic(SeqWork *work); -static int SeqInitMGCommon(SeqWork *work, va_list params); -static int SeqUpdateMG1vs3(SeqWork *work); -static int SeqUpdateMGBattle(SeqWork *work); -static int SeqUpdateMGStory(SeqWork *work); -static int SeqUpdateMG2vs2(SeqWork *work); -static int SeqUpdateMGBowser(SeqWork *work); +static s32 SeqInitMGBasic(SeqWork *work, va_list params); +static s32 SeqUpdateMGBasic(SeqWork *work); +static s32 SeqInitMGCommon(SeqWork *work, va_list params); +static s32 SeqUpdateMG1vs3(SeqWork *work); +static s32 SeqUpdateMGBattle(SeqWork *work); +static s32 SeqUpdateMGStory(SeqWork *work); +static s32 SeqUpdateMG2vs2(SeqWork *work); +static s32 SeqUpdateMGBowser(SeqWork *work); -static int SeqInitWin(SeqWork *work, va_list params); -static int SeqUpdateWin(SeqWork *work); -static int SeqInitDraw(SeqWork *work, va_list params); -static int SeqUpdateDraw(SeqWork *work); -static int SeqInitRecord(SeqWork *work, va_list params); -static int SeqUpdateRecord(SeqWork *work); +static s32 SeqInitWin(SeqWork *work, va_list params); +static s32 SeqUpdateWin(SeqWork *work); +static s32 SeqInitDraw(SeqWork *work, va_list params); +static s32 SeqUpdateDraw(SeqWork *work); +static s32 SeqInitRecord(SeqWork *work, va_list params); +static s32 SeqUpdateRecord(SeqWork *work); -static int SeqInitFlip(SeqWork *work, va_list params); -static int SeqUpdateFlip(SeqWork *work); +static s32 SeqInitFlip(SeqWork *work, va_list params); +static s32 SeqUpdateFlip(SeqWork *work); OverlayID mgSeqOvlPrev = OVL_INVALID; @@ -118,7 +118,7 @@ static u8 seqDoneF; u8 lbl_801D3D94; static s16 seqSpeed; static s16 seqPauseF; -static s32 seqRecordVal; +static int seqRecordVal; static s32 pauseWaitF; static s32 pauseExitF; static s32 pauseActiveF; @@ -130,7 +130,7 @@ void fn_80036BC8(void); void MGSeqInit(void) { - int i; + s32 i; SeqWork *work; work = &seqWorkData[0]; for(i=8; i!=0; i--, work++) { @@ -204,8 +204,8 @@ static s16 CreateSeq(s16 seq_no, va_list params) { SeqWork *work; SeqInfo *info; - int i; - int temp; + s32 i; + s32 temp; work = seqWorkData; info = &seqInfoTbl[(u8)seq_no]; for(i=0; i<8; i++, work++) { @@ -269,7 +269,7 @@ u8 MGSeqStatGet(s16 id) SeqWork *work; u8 ret = 0; if(id < 0) { - int i; + s32 i; work = seqWorkData; for(i=8; i != 0; i--, work++) { ret |= work->stat; @@ -334,7 +334,7 @@ void MGSeqStub(void) void MGSeqSprKill(SeqWork *work) { - int i; + s32 i; for(i=0; i<16; i++) { if(work->spr_grp[i] >= 0) { HuSprGrpKill(work->spr_grp[i]); @@ -350,7 +350,7 @@ static void *SeqReadFile(s32 file) return HuAR_ARAMtoMRAMFileRead(file, MEMORY_DEFAULT_NUM, HEAP_DATA); } -static int SeqInitTimer(SeqWork *work, va_list params) +static s32 SeqInitTimer(SeqWork *work, va_list params) { AnimData *spr_anim; s16 sprite; @@ -407,7 +407,7 @@ static int SeqInitTimer(SeqWork *work, va_list params) return 1; } -static int SeqUpdateTimer(SeqWork *work) +static s32 SeqUpdateTimer(SeqWork *work) { float scale; float tp_lvl; @@ -563,7 +563,7 @@ static int SeqUpdateTimer(SeqWork *work) } } -static int SeqInitType2(SeqWork *work, va_list params) +static s32 SeqInitType2(SeqWork *work, va_list params) { s16 spr_idx; s16 spr_grp; @@ -662,7 +662,7 @@ static int SeqInitType2(SeqWork *work, va_list params) return 1; } -static int SeqUpdateType2(SeqWork *work) +static s32 SeqUpdateType2(SeqWork *work) { float tp_lvl; s16 spr_grp; @@ -920,7 +920,7 @@ static float ForceDefine480() static void SeqPlayStartFX(void); -static int SeqInitMGBasic(SeqWork *work, va_list params) +static s32 SeqInitMGBasic(SeqWork *work, va_list params) { s16 i; s16 word_grp; @@ -967,7 +967,7 @@ static int SeqInitMGBasic(SeqWork *work, va_list params) return 1; } -static int SeqUpdateMGBasic(SeqWork *work) +static s32 SeqUpdateMGBasic(SeqWork *work) { s16 idx; float scale; @@ -1130,7 +1130,7 @@ static int SeqUpdateMGBasic(SeqWork *work) return 1; } -static int SeqInitMGCommon(SeqWork *work, va_list params) +static s32 SeqInitMGCommon(SeqWork *work, va_list params) { s16 i; float tp_lvl; @@ -1204,7 +1204,7 @@ static int SeqInitMGCommon(SeqWork *work, va_list params) return 1; } -static int SeqUpdateMGBattle(SeqWork *work) +static s32 SeqUpdateMGBattle(SeqWork *work) { s16 idx; float scale; @@ -1446,7 +1446,7 @@ static int SeqUpdateMGBattle(SeqWork *work) return 1; } -static int SeqUpdateMG1vs3(SeqWork *work) +static s32 SeqUpdateMG1vs3(SeqWork *work) { s16 idx; float scale; @@ -1652,7 +1652,7 @@ static int SeqUpdateMG1vs3(SeqWork *work) return 1; } -static int SeqUpdateMGStory(SeqWork *work) +static s32 SeqUpdateMGStory(SeqWork *work) { s16 idx; float scale; @@ -1859,7 +1859,7 @@ static int SeqUpdateMGStory(SeqWork *work) return 1; } -static int SeqUpdateMG2vs2(SeqWork *work) +static s32 SeqUpdateMG2vs2(SeqWork *work) { s16 idx; float scale; @@ -2036,7 +2036,7 @@ static int SeqUpdateMG2vs2(SeqWork *work) return 1; } -static int SeqInitFlip(SeqWork *work, va_list params) +static s32 SeqInitFlip(SeqWork *work, va_list params) { s16 i; s16 word_grp; @@ -2117,7 +2117,7 @@ static int SeqInitFlip(SeqWork *work, va_list params) return 1; } -static int SeqUpdateFlip(SeqWork *work) +static s32 SeqUpdateFlip(SeqWork *work) { s16 idx; float scale; @@ -2285,7 +2285,7 @@ static int SeqUpdateFlip(SeqWork *work) return 1; } -static int SeqUpdateMGBowser(SeqWork *work) +static s32 SeqUpdateMGBowser(SeqWork *work) { s16 idx; float scale; @@ -2500,7 +2500,7 @@ static int SeqUpdateMGBowser(SeqWork *work) return 1; } -static int SeqInitDraw(SeqWork *work, va_list params) +static s32 SeqInitDraw(SeqWork *work, va_list params) { s16 word_grp; work->state = 2; @@ -2529,7 +2529,7 @@ static int SeqInitDraw(SeqWork *work, va_list params) return 1; } -static int SeqUpdateDraw(SeqWork *work) +static s32 SeqUpdateDraw(SeqWork *work) { s16 idx; float scale; @@ -2700,9 +2700,9 @@ static s16 winnerNameW[8]; #define GET_WIN_KANAF() ((seqLanguage == 0) ? 1 : 0) -static int SeqInitWin(SeqWork *work, va_list params) +static s32 SeqInitWin(SeqWork *work, va_list params) { - s32 win_type = va_arg(params, int); + int win_type = va_arg(params, int); s16 word_idx; s16 word_grp; s32 i; @@ -2731,7 +2731,7 @@ static int SeqInitWin(SeqWork *work, va_list params) num_winners = 0; work->win_scale = 1.0f; for(j=0; j<4; j++) { - s32 winner = va_arg(params, int); + int winner = va_arg(params, int); if(winner < 0) { continue; } @@ -2825,7 +2825,7 @@ static int SeqInitWin(SeqWork *work, va_list params) } -static int SeqUpdateWin(SeqWork *work) +static s32 SeqUpdateWin(SeqWork *work) { s32 idx; float tp_lvl; @@ -2948,7 +2948,7 @@ static int SeqUpdateWin(SeqWork *work) return 1; } -static int SeqInitRecord(SeqWork *work, va_list params) +static s32 SeqInitRecord(SeqWork *work, va_list params) { AnimData *spr_data; s16 spr_grp; @@ -3063,7 +3063,7 @@ static int SeqInitRecord(SeqWork *work, va_list params) return 1; } -static int SeqUpdateRecord(SeqWork *work) +static s32 SeqUpdateRecord(SeqWork *work) { s16 group; if(_CheckFlag(0x1000C)) { diff --git a/src/game/objdll.c b/src/game/objdll.c index 067bee54..c1414129 100644 --- a/src/game/objdll.c +++ b/src/game/objdll.c @@ -16,7 +16,7 @@ void omDLLDBGOut(void) void omDLLInit(FileListEntry *ovl_list) { - int i; + s32 i; OSReport("DLL DBG OUT\n"); for(i=0; i= 0 && !flag) { diff --git a/src/game/objmain.c b/src/game/objmain.c index 88ab203a..f802d287 100644 --- a/src/game/objmain.c +++ b/src/game/objmain.c @@ -34,12 +34,12 @@ omObjData *omDBGSysKeyObj; Process *omwatchproc; OverlayID omnextovl; OverlayID omcurovl; -int omcurdll; -int omovlhisidx; -int omovlevtno; -int omnextovlevtno; -int omovlstat; -static int omnextovlstat; +s32 omcurdll; +s32 omovlhisidx; +s32 omovlevtno; +s32 omnextovlevtno; +s32 omovlstat; +static s32 omnextovlstat; char omUPauseFlag; s16 omSysExitReq; s16 omdispinfo; @@ -52,7 +52,7 @@ OverlayID omprevovl = OVL_INVALID; static void omWatchOverlayProc(void); static void omInsertObj(Process *objman_process, omObjData *object); -void omMasterInit(int prio, FileListEntry *ovl_list, int ovl_count, OverlayID start_ovl) +void omMasterInit(s32 prio, FileListEntry *ovl_list, s32 ovl_count, OverlayID start_ovl) { omDLLInit(ovl_list); omwatchproc = HuPrcCreate(omWatchOverlayProc, prio, 8192, 0); @@ -106,7 +106,7 @@ static void omWatchOverlayProc(void) } } -void omOvlCallEx(OverlayID overlay, s16 arg2, int event, int stat) +void omOvlCallEx(OverlayID overlay, s16 arg2, s32 event, s32 stat) { OSReport("objman>Call New Ovl %d(%d)\n", overlay, arg2); if(omovlhisidx >= OM_OVL_HIS_MAX) { @@ -119,7 +119,7 @@ void omOvlCallEx(OverlayID overlay, s16 arg2, int event, int stat) omOvlGotoEx(overlay, arg2, event, stat); } -void omOvlGotoEx(OverlayID overlay, s16 arg2, int event, int stat) +void omOvlGotoEx(OverlayID overlay, s16 arg2, s32 event, s32 stat) { omprevovl = omcurovl; if(omcurovl >= 0) { @@ -162,7 +162,7 @@ void omOvlKill(s16 arg) omDBGSysKeyObj = NULL; } -void omOvlHisChg(s32 level, OverlayID overlay, int event, int stat) +void omOvlHisChg(s32 level, OverlayID overlay, s32 event, s32 stat) { omOvlHisData *history; if(omovlhisidx-level < 0 || omovlhisidx-level >= OM_OVL_HIS_MAX) { @@ -184,12 +184,12 @@ omOvlHisData *omOvlHisGet(s32 level) return &omovlhis[omovlhisidx-level]; } -Process *omInitObjMan(s16 max_objs, int prio) +Process *omInitObjMan(s16 max_objs, s32 prio) { omObjGroup *group_all; omObjData *obj_all; omObjData *obj; - int i; + s32 i; omObjMan *objman; Process *process; OSReport("objman>InitObjMan start\n"); @@ -245,7 +245,7 @@ void omDestroyObjMan(void) omObjData *omAddObjEx(Process *objman_process, s16 prio, u16 mdlcnt, u16 mtncnt, s16 group, void (*func)(omObjData *)) { - int i; + s32 i; omObjData *object; s16 next_idx; omObjMan *objman = objman_process->user_data; @@ -408,7 +408,7 @@ void omDelMember(Process *objman_process, omObjData *object) void omMakeGroupEx(Process *objman_process, u16 group, u16 max_objs) { - int i; + s32 i; omObjMan *objman = objman_process->user_data; omObjGroup *group_ptr = &objman->group[group]; if(group_ptr->obj != NULL) { @@ -521,7 +521,7 @@ static void omDumpObj(Process *objman_process) { omObjMan *objman = objman_process->user_data; omObjData *obj_all = objman->obj; - int i; + s32 i; OSReport("=================== 現在登録されている OBJECT ==================\n"); OSReport("STAT PRI GRPN MEMN PROG (TRA) (ROT) (SCA) mdlcnt mtncnt work[0] work[1] work[2] work[3] *data\n"); for(i=0; imax_objs; i++) { @@ -540,7 +540,7 @@ void omAllPause(BOOL pause) { Process *objman_process = HuPrcCurrentGet(); omObjMan *objman = objman_process->user_data; - int i; + s32 i; if(pause) { for(i=0; imax_objs; i++) { if((objman->obj[i].stat & (OM_STAT_DELETED|OM_STAT_NOPAUSE)) == 0) { diff --git a/src/game/objsysobj.c b/src/game/objsysobj.c index 765fd55b..3e6b56f3 100644 --- a/src/game/objsysobj.c +++ b/src/game/objsysobj.c @@ -95,7 +95,7 @@ void omSystemKeyCheck(omObjData *object) HuAudSeqPauseAll(0); } } else { - int i; + s32 i; s16 pause = 0; if(WipeStatGet() || omCurrentOvlGet() == OVL_INVALID || omSysExitReq) { return; diff --git a/src/game/process.c b/src/game/process.c index 121089b0..b62b74fc 100644 --- a/src/game/process.c +++ b/src/game/process.c @@ -2,7 +2,7 @@ #include "game/memory.h" #include "dolphin/os.h" -#define PROCESS_MEMORY_RETADDR 0xA5A5A5A5 +#define FAKE_RETADDR 0xA5A5A5A5 #define EXEC_NORMAL 0 #define EXEC_SLEEP 1 @@ -15,7 +15,6 @@ static Process *processcur; static u16 processcnt; u32 procfunc; - void HuPrcInit(void) { processcnt = 0; @@ -49,12 +48,9 @@ static void UnlinkProcess(Process **root, Process *process) { if (process->next) { process->next->prev = process->prev; } - if (process->prev) { process->prev->next = process->next; - } - - else { + } else { *root = process->next; } } @@ -75,13 +71,13 @@ Process *HuPrcCreate(void (*func)(void), u16 prio, u32 stack_size, s32 extra_siz return NULL; } HuMemHeapInit(heap, alloc_size); - process = HuMemMemoryAlloc(heap, sizeof(Process), PROCESS_MEMORY_RETADDR); + process = HuMemMemoryAlloc(heap, sizeof(Process), FAKE_RETADDR); process->heap = heap; process->exec = EXEC_NORMAL; process->stat = 0; process->prio = prio; process->sleep_time = 0; - process->base_sp = ((u32)HuMemMemoryAlloc(heap, stack_size, PROCESS_MEMORY_RETADDR))+stack_size-8; + process->base_sp = ((u32)HuMemMemoryAlloc(heap, stack_size, FAKE_RETADDR))+stack_size-8; gcsetjmp(&process->jump); process->jump.lr = (u32)func; process->jump.sp = process->base_sp; @@ -144,7 +140,7 @@ Process *HuPrcCurrentGet() return processcur; } -static int SetKillStatusProcess(Process *process) +static s32 SetKillStatusProcess(Process *process) { if(process->exec != EXEC_KILLED) { HuPrcWakeup(process); @@ -155,7 +151,7 @@ static int SetKillStatusProcess(Process *process) } } -int HuPrcKill(Process *process) +s32 HuPrcKill(Process *process) { if(process == NULL) { process = HuPrcCurrentGet(); @@ -196,7 +192,7 @@ void HuPrcEnd() gcTerminateProcess(process); } -void HuPrcSleep(int time) +void HuPrcSleep(s32 time) { Process *process = HuPrcCurrentGet(); if(time != 0 && process->exec != EXEC_KILLED) { @@ -210,10 +206,7 @@ void HuPrcSleep(int time) void HuPrcVSleep() { - Process *process = HuPrcCurrentGet(); - if(!gcsetjmp(&process->jump)) { - gclongjmp(&processjmpbuf, 1); - } + HuPrcSleep(0); } void HuPrcWakeup(Process *process) @@ -232,10 +225,10 @@ void HuPrcDestructorSet(void (*func)(void)) process->dtor = func; } -void HuPrcCall(int tick) +void HuPrcCall(s32 tick) { Process *process; - int ret; + s32 ret; processcur = processtop; ret = gcsetjmp(&processjmpbuf); while(1) { @@ -293,12 +286,12 @@ void HuPrcCall(int tick) void *HuPrcMemAlloc(s32 size) { Process *process = HuPrcCurrentGet(); - return HuMemMemoryAlloc(process->heap, size, PROCESS_MEMORY_RETADDR); + return HuMemMemoryAlloc(process->heap, size, FAKE_RETADDR); } void HuPrcMemFree(void *ptr) { - HuMemMemoryFree(ptr, PROCESS_MEMORY_RETADDR); + HuMemMemoryFree(ptr, FAKE_RETADDR); } void HuPrcSetStat(Process *process, u16 value) @@ -311,7 +304,7 @@ void HuPrcResetStat(Process *process, u16 value) process->stat &= ~value; } -void HuPrcAllPause(int flag) +void HuPrcAllPause(s32 flag) { Process *process = processtop; if(flag) { @@ -333,7 +326,7 @@ void HuPrcAllPause(int flag) } } -void HuPrcAllUPause(int flag) +void HuPrcAllUPause(s32 flag) { Process *process = processtop; if(flag) { diff --git a/src/game/saveload.c b/src/game/saveload.c index 1b717efc..a7fe736c 100644 --- a/src/game/saveload.c +++ b/src/game/saveload.c @@ -152,7 +152,7 @@ s32 SLFileCreate(char *fileName, u32 size, void *addr) { } _SetFlag(FLAG_ID_MAKE(3, 0)); result = HuCardWrite(&curFileInfo, addr, size, 0); - _ClearFlag(FLAG_ID_MAKE(3, 0)); + _ClearFlag(FLAG_ID_MAKE(3, 0)); if (result < 0) { HuWinExAnimOut(window); HuWinExCleanup(window); @@ -552,18 +552,18 @@ s32 SLStatSet(s32 reportF) { } return CARD_RESULT_FATAL_ERROR; } - CARDSetCommentAddress(&stat, 0); - CARDSetIconAddress(&stat, 64); - CARDSetBannerFormat(&stat, CARD_STAT_BANNER_C8); - CARDSetIconFormat(&stat, 0, CARD_STAT_ICON_C8); - CARDSetIconFormat(&stat, 1, CARD_STAT_ICON_C8); - CARDSetIconFormat(&stat, 2, CARD_STAT_ICON_C8); - CARDSetIconFormat(&stat, 3, CARD_STAT_ICON_C8); + CARDSetCommentAddress(&stat, 0); + CARDSetIconAddress(&stat, 64); + CARDSetBannerFormat(&stat, CARD_STAT_BANNER_C8); + CARDSetIconFormat(&stat, 0, CARD_STAT_ICON_C8); + CARDSetIconFormat(&stat, 1, CARD_STAT_ICON_C8); + CARDSetIconFormat(&stat, 2, CARD_STAT_ICON_C8); + CARDSetIconFormat(&stat, 3, CARD_STAT_ICON_C8); CARDSetIconSpeed(&stat, 0, CARD_STAT_SPEED_MIDDLE); - CARDSetIconSpeed(&stat, 1, CARD_STAT_SPEED_MIDDLE); - CARDSetIconSpeed(&stat, 2, CARD_STAT_SPEED_MIDDLE); - CARDSetIconSpeed(&stat, 3, CARD_STAT_SPEED_MIDDLE); - CARDSetIconSpeed(&stat, 4, CARD_STAT_SPEED_END); + CARDSetIconSpeed(&stat, 1, CARD_STAT_SPEED_MIDDLE); + CARDSetIconSpeed(&stat, 2, CARD_STAT_SPEED_MIDDLE); + CARDSetIconSpeed(&stat, 3, CARD_STAT_SPEED_MIDDLE); + CARDSetIconSpeed(&stat, 4, CARD_STAT_SPEED_END); CARDSetIconAnim(&stat, CARD_STAT_ANIM_LOOP); result = CARDSetStatus(curSlotNo, fileNo, &stat); @@ -706,43 +706,43 @@ s16 SLMessOut(s16 mess) { slot_mess = 0; has_choice = 0; HuWinInit(1); - SLKillSaveWin(); + SLKillSaveWin(); switch (mess) { case 0: save_mess = MAKE_MESSID(16, 2); break; - + case 1: save_mess = MAKE_MESSID(16, 83); HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0); slot_mess = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]); break; - + case 2: HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0); slot_mess = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]); save_mess = MAKE_MESSID(16, 74); break; - + case 3: save_mess = MAKE_MESSID(16, 74); HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0); slot_mess = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]); break; - + case 4: save_mess = MAKE_MESSID(16, 74); HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0); slot_mess = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]); break; - + case 5: HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0); slot_mess = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]); save_mess = MAKE_MESSID(16, 4); has_choice = 1; break; - + case 6: save_mess = MAKE_MESSID(16, 54); break; @@ -751,30 +751,30 @@ s16 SLMessOut(s16 mess) { slot_mess = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]); save_mess = MAKE_MESSID(16, 55); break; - + case 8: HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0); slot_mess = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]); save_mess = MAKE_MESSID(16, 57); break; - + case 9: HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0); slot_mess = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]); save_mess = MAKE_MESSID(16, 69); break; - + case 10: save_mess = MAKE_MESSID(16, 70); has_choice = 1; break; - + case 11: HuWinInsertMesSizeGet(MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]), 0); slot_mess = MAKE_MESSID_PTR(SlotNameTbl[curSlotNo]); save_mess = MAKE_MESSID(16, 72); break; - + case 12: save_mess = MAKE_MESSID(16, 80); break; diff --git a/src/game/window.c b/src/game/window.c index fbe521c0..114e5f4e 100644 --- a/src/game/window.c +++ b/src/game/window.c @@ -10,7 +10,7 @@ #include "game/armem.h" #include "game/audio.h" -#include "math.h" +#include "ext_math.h" #include "stdarg.h" #include "string.h" @@ -1784,7 +1784,7 @@ static s32 winPortraitTbl[] = { WIN_BOWSER_TALK_ANM, WIN_KKID_TALK_ANM, WIN_KOOPA_TALK_ANM, - WIN_CONDOR_TALK_ANM, + WIN_CONDOR_TALK_ANM, WIN_BOO_BLUE_TALK_ANM, WIN_DOLPHIN_TALK_ANM, WIN_BOO_RED_TALK_ANM, @@ -1842,7 +1842,7 @@ void HuWinExAnimIn(s16 window) { HuSprScaleSet(window_ptr->group, 0, 1.0f, 0.0f); HuWinDispOn(window); for (i=0; i<=10; i++) { - HuSprScaleSet(window_ptr->group, 0, 1.0f, 1.0 - 1.1 * cos(M_PI * (9.0f * i) / 180.0)); + HuSprScaleSet(window_ptr->group, 0, 1.0f, 1.0 - 1.1 * cosd(9.0f * i)); HuPrcVSleep(); } HuSprScaleSet(window_ptr->group, 0, 1.0f, 1.0f); @@ -1852,13 +1852,13 @@ void HuWinExAnimIn(s16 window) { HuWinDispOn(window); for (i=0; i<=20; i++) { if (i <= 10) { - HuSprScaleSet(window_ptr->group, 0, 1.0f, 1.1 * (1.0 - cos(M_PI * (9.0f * i) / 180.0))); + HuSprScaleSet(window_ptr->group, 0, 1.0f, 1.1 * (1.0 - cosd(9.0f * i))); } else { HuSprScaleSet(window_ptr->group, 0, 1.0f, 1.0f); } if (i > 10) { s16 time = i - 10; - HuSprScaleSet(window_ptr->group, 2, 1.0f, 1.0 - 1.1 * cos(M_PI * (9.0f * time) / 180.0)); + HuSprScaleSet(window_ptr->group, 2, 1.0f, 1.0 - 1.1 * cosd(9.0f * time)); } HuPrcVSleep(); } @@ -1873,18 +1873,18 @@ void HuWinExAnimOut(s16 window) { _HuWinHomeClear(window_ptr); if (window_ptr->sprite_id[2] == -1) { for (i=0; i<=10; i++) { - HuSprScaleSet(window_ptr->group, 0, 1.0f, cos(M_PI * (9.0f * i) / 180.0)); + HuSprScaleSet(window_ptr->group, 0, 1.0f, cosd(9.0f * i)); HuPrcVSleep(); } HuWinDispOff(window); } else { for (i=0; i<=15; i++) { if (i <= 10) { - HuSprScaleSet(window_ptr->group, 2, 1.0f, cos(M_PI * (9.0f * i) / 180.0)); + HuSprScaleSet(window_ptr->group, 2, 1.0f, cosd(9.0f * i)); } if (i > 5) { s16 time = i - 5; - HuSprScaleSet(window_ptr->group, 0, 1.0f, cos(M_PI * (9.0f * time) / 180.0)); + HuSprScaleSet(window_ptr->group, 0, 1.0f, cosd(9.0f * time)); } HuPrcVSleep(); } @@ -1901,13 +1901,13 @@ void HuWinExAnimPopIn(s16 window, s16 portrait) { s16 i; for (i=0; i<=10; i++) { - HuSprScaleSet(window_ptr->group, 2, 1.0f, cos(M_PI * (9.0f * i) / 180.0)); + HuSprScaleSet(window_ptr->group, 2, 1.0f, cosd(9.0f * i)); HuPrcVSleep(); } HuWinSprKill(window, 2); HuWinExCreatePortrait(window, portrait, 48.0f, 48.0f); for (i=0; i<=10; i++) { - HuSprScaleSet(window_ptr->group, 2, 1.0f, sin(M_PI * (9.0f * i) / 180.0)); + HuSprScaleSet(window_ptr->group, 2, 1.0f, sind(9.0f * i)); HuPrcVSleep(); } HuSprScaleSet(window_ptr->group, 2, 1.0f, 1.0f); diff --git a/src/game/wipe.c b/src/game/wipe.c index 7d4cbea0..f2429aa3 100644 --- a/src/game/wipe.c +++ b/src/game/wipe.c @@ -6,7 +6,7 @@ s16 HuSysVWaitGet(s16 old); -typedef int (*fadeFunc)(void); +typedef s32 (*fadeFunc)(void); WipeState wipeData; BOOL wipeFadeInF; @@ -15,9 +15,9 @@ static void WipeColorFill(GXColor color); static void WipeFrameStill(GXColor color); -static int WipeNormalFade(void); -static int WipeCrossFade(void); -static int WipeDummyFade(void); +static s32 WipeNormalFade(void); +static s32 WipeCrossFade(void); +static s32 WipeDummyFade(void); static fadeFunc fadeInFunc[3] = { WipeNormalFade, WipeCrossFade, WipeDummyFade }; static fadeFunc fadeOutFunc[3] = { WipeNormalFade, WipeCrossFade, WipeDummyFade }; @@ -25,7 +25,7 @@ static fadeFunc fadeOutFunc[3] = { WipeNormalFade, WipeCrossFade, WipeDummyFade void WipeInit(GXRenderModeObj *rmode) { WipeState *wipe; - int i; + s32 i; wipe = &wipeData; wipe->unk00 = 0; wipe->unk04 = 0; @@ -46,7 +46,7 @@ void WipeInit(GXRenderModeObj *rmode) void WipeExecAlways(void) { - int i; + s32 i; WipeState *wipe; wipe = &wipeData; switch(wipe->mode) { @@ -151,12 +151,12 @@ u8 WipeStatGet(void) return wipeData.stat; } -static int WipeDummyFade(void) +static s32 WipeDummyFade(void) { return 0; } -static int WipeNormalFade(void) +static s32 WipeNormalFade(void) { u8 alpha; WipeState *wipe = &wipeData; @@ -192,9 +192,9 @@ static void WipeColorFill(GXColor color) WipeState *wipe; u16 ulx, lrx, uly, lry; wipe = &wipeData; - ulx = (int)wipe->x; + ulx = (s32)wipe->x; lrx = wipe->x+wipe->w; - uly = (int)wipe->y; + uly = (s32)wipe->y; lry = wipe->x+wipe->h+1; MTXOrtho(proj, uly, lry, ulx, lrx, 0, 10); GXSetProjection(proj, GX_ORTHOGRAPHIC); @@ -227,7 +227,7 @@ static void WipeColorFill(GXColor color) GXSetChanMatColor(GX_COLOR0A0, colorN); } -static int WipeCrossFade(void) +static s32 WipeCrossFade(void) { u32 size; u8 alpha; @@ -273,9 +273,9 @@ static void WipeFrameStill(GXColor color) WipeState *wipe; u16 ulx, lrx, uly, lry; wipe = &wipeData; - ulx = (int)wipe->x; + ulx = (s32)wipe->x; lrx = wipe->x+wipe->w; - uly = (int)wipe->y; + uly = (s32)wipe->y; lry = wipe->x+wipe->h+1; MTXOrtho(proj, uly, lry, ulx, lrx, 0, 10); GXSetProjection(proj, GX_ORTHOGRAPHIC);