From 7cda6af48aaa724ea3edb449fe170d11b2e5a699 Mon Sep 17 00:00:00 2001 From: dbalatoni13 Date: Sun, 10 Nov 2024 06:53:52 +0100 Subject: [PATCH] Finished m432Dll --- config/GMPE01_00/rels/m432Dll/symbols.txt | 375 +-- configure.py | 2 +- include/REL/m432data.h | 1235 ++++++++ src/REL/m432Dll/main.c | 3307 ++++++++++++++++++++- 4 files changed, 4725 insertions(+), 194 deletions(-) create mode 100644 include/REL/m432data.h diff --git a/config/GMPE01_00/rels/m432Dll/symbols.txt b/config/GMPE01_00/rels/m432Dll/symbols.txt index 75ff4704..4926357c 100644 --- a/config/GMPE01_00/rels/m432Dll/symbols.txt +++ b/config/GMPE01_00/rels/m432Dll/symbols.txt @@ -101,138 +101,138 @@ fn_1_128C8 = .text:0x000128C8; // type:function size:0x5E0 fn_1_12EA8 = .text:0x00012EA8; // type:function size:0x300 fn_1_131A8 = .text:0x000131A8; // type:function size:0x2178 fn_1_15320 = .text:0x00015320; // type:function size:0x9C -fn_1_153BC = .text:0x000153BC; // type:function size:0xDA0 +ObjectSetup = .text:0x000153BC; // type:function size:0xDA0 fn_1_1615C = .text:0x0001615C; // type:function size:0x104 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:double -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 data:double -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_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: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_17C = .rodata:0x0000017C; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 data:double -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float -lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_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:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float -lbl_1_rodata_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_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:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_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: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_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_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:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 scope:local data:double +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_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_data_0 = .data:0x00000000; // type:object size:0x10 lbl_1_data_10 = .data:0x00000010; // type:object size:0x20 lbl_1_data_30 = .data:0x00000030; // type:object size:0x28 lbl_1_data_58 = .data:0x00000058; // type:object size:0x28 -lbl_1_data_80 = .data:0x00000080; // type:object size:0x1F data:string +lbl_1_data_80 = .data:0x00000080; // type:object size:0x1F scope:local data:string lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x8 lbl_1_data_A8 = .data:0x000000A8; // type:object size:0x20 data:float lbl_1_data_C8 = .data:0x000000C8; // type:object size:0xC @@ -250,81 +250,81 @@ lbl_1_data_2F4 = .data:0x000002F4; // type:object size:0x24 lbl_1_data_318 = .data:0x00000318; // type:object size:0x3C lbl_1_data_354 = .data:0x00000354; // type:object size:0x18 lbl_1_data_36C = .data:0x0000036C; // type:object size:0x18 -lbl_1_data_384 = .data:0x00000384; // type:object size:0xB data:string -lbl_1_data_38F = .data:0x0000038F; // type:object size:0xB data:string -lbl_1_data_39A = .data:0x0000039A; // type:object size:0xB data:string -lbl_1_data_3A5 = .data:0x000003A5; // type:object size:0xB data:string -lbl_1_data_3B0 = .data:0x000003B0; // type:object size:0xB data:string -lbl_1_data_3BB = .data:0x000003BB; // type:object size:0xB data:string -lbl_1_data_3C6 = .data:0x000003C6; // type:object size:0xB data:string -lbl_1_data_3D1 = .data:0x000003D1; // type:object size:0xB data:string +lbl_1_data_384 = .data:0x00000384; // type:object size:0xB scope:local data:string +lbl_1_data_38F = .data:0x0000038F; // type:object size:0xB scope:local data:string +lbl_1_data_39A = .data:0x0000039A; // type:object size:0xB scope:local data:string +lbl_1_data_3A5 = .data:0x000003A5; // type:object size:0xB scope:local data:string +lbl_1_data_3B0 = .data:0x000003B0; // type:object size:0xB scope:local data:string +lbl_1_data_3BB = .data:0x000003BB; // type:object size:0xB scope:local data:string +lbl_1_data_3C6 = .data:0x000003C6; // type:object size:0xB scope:local data:string +lbl_1_data_3D1 = .data:0x000003D1; // type:object size:0xB scope:local data:string lbl_1_data_3DC = .data:0x000003DC; // type:object size:0x20 -lbl_1_data_3FC = .data:0x000003FC; // type:object size:0xB data:string -lbl_1_data_407 = .data:0x00000407; // type:object size:0xB data:string -lbl_1_data_412 = .data:0x00000412; // type:object size:0xB data:string -lbl_1_data_41D = .data:0x0000041D; // type:object size:0xB data:string -lbl_1_data_428 = .data:0x00000428; // type:object size:0xB data:string -lbl_1_data_433 = .data:0x00000433; // type:object size:0xD +lbl_1_data_3FC = .data:0x000003FC; // type:object size:0xB scope:local data:string +lbl_1_data_407 = .data:0x00000407; // type:object size:0xB scope:local data:string +lbl_1_data_412 = .data:0x00000412; // type:object size:0xB scope:local data:string +lbl_1_data_41D = .data:0x0000041D; // type:object size:0xB scope:local data:string +lbl_1_data_428 = .data:0x00000428; // type:object size:0xB scope:local data:string +lbl_1_data_433 = .data:0x00000433; // type:object size:0xD scope:local data:string lbl_1_data_440 = .data:0x00000440; // type:object size:0x18 data:4byte -lbl_1_data_458 = .data:0x00000458; // type:object size:0xB data:string -lbl_1_data_463 = .data:0x00000463; // type:object size:0xB data:string -lbl_1_data_46E = .data:0x0000046E; // type:object size:0xB data:string -lbl_1_data_479 = .data:0x00000479; // type:object size:0xB data:string -lbl_1_data_484 = .data:0x00000484; // type:object size:0xB data:string -lbl_1_data_48F = .data:0x0000048F; // type:object size:0xB data:string -lbl_1_data_49A = .data:0x0000049A; // type:object size:0xB data:string -lbl_1_data_4A5 = .data:0x000004A5; // type:object size:0xB data:string -lbl_1_data_4B0 = .data:0x000004B0; // type:object size:0xB data:string -lbl_1_data_4BB = .data:0x000004BB; // type:object size:0xD +lbl_1_data_458 = .data:0x00000458; // type:object size:0xB scope:local data:string +lbl_1_data_463 = .data:0x00000463; // type:object size:0xB scope:local data:string +lbl_1_data_46E = .data:0x0000046E; // type:object size:0xB scope:local data:string +lbl_1_data_479 = .data:0x00000479; // type:object size:0xB scope:local data:string +lbl_1_data_484 = .data:0x00000484; // type:object size:0xB scope:local data:string +lbl_1_data_48F = .data:0x0000048F; // type:object size:0xB scope:local data:string +lbl_1_data_49A = .data:0x0000049A; // type:object size:0xB scope:local data:string +lbl_1_data_4A5 = .data:0x000004A5; // type:object size:0xB scope:local data:string +lbl_1_data_4B0 = .data:0x000004B0; // type:object size:0xB scope:local data:string +lbl_1_data_4BB = .data:0x000004BB; // type:object size:0xD scope:local data:string lbl_1_data_4C8 = .data:0x000004C8; // type:object size:0x28 data:4byte -lbl_1_data_4F0 = .data:0x000004F0; // type:object size:0x14 -lbl_1_data_504 = .data:0x00000504; // type:object size:0x24 +lbl_1_data_4F0 = .data:0x000004F0; // type:object size:0x14 data:byte +lbl_1_data_504 = .data:0x00000504; // type:object size:0x24 data:byte lbl_1_data_528 = .data:0x00000528; // type:object size:0x8 -lbl_1_data_530 = .data:0x00000530; // type:object size:0xB data:string -lbl_1_data_53B = .data:0x0000053B; // type:object size:0xB data:string -lbl_1_data_546 = .data:0x00000546; // type:object size:0xB data:string -lbl_1_data_551 = .data:0x00000551; // type:object size:0xB data:string -lbl_1_data_55C = .data:0x0000055C; // type:object size:0xB data:string -lbl_1_data_567 = .data:0x00000567; // type:object size:0xB data:string -lbl_1_data_572 = .data:0x00000572; // type:object size:0xB data:string -lbl_1_data_57D = .data:0x0000057D; // type:object size:0xB data:string -lbl_1_data_588 = .data:0x00000588; // type:object size:0xB data:string -lbl_1_data_593 = .data:0x00000593; // type:object size:0xB data:string -lbl_1_data_59E = .data:0x0000059E; // type:object size:0xB data:string -lbl_1_data_5A9 = .data:0x000005A9; // type:object size:0xB data:string -lbl_1_data_5B4 = .data:0x000005B4; // type:object size:0xB data:string -lbl_1_data_5BF = .data:0x000005BF; // type:object size:0xB data:string -lbl_1_data_5CA = .data:0x000005CA; // type:object size:0xB data:string -lbl_1_data_5D5 = .data:0x000005D5; // type:object size:0xB data:string -lbl_1_data_5E0 = .data:0x000005E0; // type:object size:0xB data:string +lbl_1_data_530 = .data:0x00000530; // type:object size:0xB scope:local data:string +lbl_1_data_53B = .data:0x0000053B; // type:object size:0xB scope:local data:string +lbl_1_data_546 = .data:0x00000546; // type:object size:0xB scope:local data:string +lbl_1_data_551 = .data:0x00000551; // type:object size:0xB scope:local data:string +lbl_1_data_55C = .data:0x0000055C; // type:object size:0xB scope:local data:string +lbl_1_data_567 = .data:0x00000567; // type:object size:0xB scope:local data:string +lbl_1_data_572 = .data:0x00000572; // type:object size:0xB scope:local data:string +lbl_1_data_57D = .data:0x0000057D; // type:object size:0xB scope:local data:string +lbl_1_data_588 = .data:0x00000588; // type:object size:0xB scope:local data:string +lbl_1_data_593 = .data:0x00000593; // type:object size:0xB scope:local data:string +lbl_1_data_59E = .data:0x0000059E; // type:object size:0xB scope:local data:string +lbl_1_data_5A9 = .data:0x000005A9; // type:object size:0xB scope:local data:string +lbl_1_data_5B4 = .data:0x000005B4; // type:object size:0xB scope:local data:string +lbl_1_data_5BF = .data:0x000005BF; // type:object size:0xB scope:local data:string +lbl_1_data_5CA = .data:0x000005CA; // type:object size:0xB scope:local data:string +lbl_1_data_5D5 = .data:0x000005D5; // type:object size:0xB scope:local data:string +lbl_1_data_5E0 = .data:0x000005E0; // type:object size:0xB scope:local data:string lbl_1_data_5EC = .data:0x000005EC; // type:object size:0x8B8 -lbl_1_data_EA4 = .data:0x00000EA4; // type:object size:0xB data:string -lbl_1_data_EAF = .data:0x00000EAF; // type:object size:0xB data:string -lbl_1_data_EBA = .data:0x00000EBA; // type:object size:0xB data:string -lbl_1_data_EC5 = .data:0x00000EC5; // type:object size:0xB data:string -lbl_1_data_ED0 = .data:0x00000ED0; // type:object size:0xC +lbl_1_data_EA4 = .data:0x00000EA4; // type:object size:0xB scope:local data:string +lbl_1_data_EAF = .data:0x00000EAF; // type:object size:0xB scope:local data:string +lbl_1_data_EBA = .data:0x00000EBA; // type:object size:0xB scope:local data:string +lbl_1_data_EC5 = .data:0x00000EC5; // type:object size:0xB scope:local data:string +lbl_1_data_ED0 = .data:0x00000ED0; // type:object size:0xC scope:local data:string lbl_1_data_EDC = .data:0x00000EDC; // type:object size:0x8B8 lbl_1_data_1794 = .data:0x00001794; // type:object size:0x20 lbl_1_data_17B4 = .data:0x000017B4; // type:object size:0x20 lbl_1_data_17D4 = .data:0x000017D4; // type:object size:0x20 data:float lbl_1_data_17F4 = .data:0x000017F4; // type:object size:0x20 lbl_1_data_1814 = .data:0x00001814; // type:object size:0x50 -lbl_1_data_1864 = .data:0x00001864; // type:object size:0x11 data:string -lbl_1_data_1875 = .data:0x00001875; // type:object size:0x11 data:string -lbl_1_data_1886 = .data:0x00001886; // type:object size:0x11 data:string -lbl_1_data_1897 = .data:0x00001897; // type:object size:0x18 data:string -lbl_1_data_18AF = .data:0x000018AF; // type:object size:0xB data:string -lbl_1_data_18BA = .data:0x000018BA; // type:object size:0x18 data:string -lbl_1_data_18D2 = .data:0x000018D2; // type:object size:0xC data:string -lbl_1_data_18DE = .data:0x000018DE; // type:object size:0x6 data:string -lbl_1_data_18E4 = .data:0x000018E4; // type:object size:0x21 data:string -lbl_1_data_1905 = .data:0x00001905; // type:object size:0x1F +lbl_1_data_1864 = .data:0x00001864; // type:object size:0x11 scope:local data:string +lbl_1_data_1875 = .data:0x00001875; // type:object size:0x11 scope:local data:string +lbl_1_data_1886 = .data:0x00001886; // type:object size:0x11 scope:local data:string +lbl_1_data_1897 = .data:0x00001897; // type:object size:0x18 scope:local data:string +lbl_1_data_18AF = .data:0x000018AF; // type:object size:0xB scope:local data:string +lbl_1_data_18BA = .data:0x000018BA; // type:object size:0x18 scope:local data:string +lbl_1_data_18D2 = .data:0x000018D2; // type:object size:0xC scope:local data:string +lbl_1_data_18DE = .data:0x000018DE; // type:object size:0x6 scope:local data:string +lbl_1_data_18E4 = .data:0x000018E4; // type:object size:0x21 scope:local data:string +lbl_1_data_1905 = .data:0x00001905; // type:object size:0x1F scope:local data:string jumptable_1_data_1924 = .data:0x00001924; // type:object size:0x1C scope:local jumptable_1_data_1940 = .data:0x00001940; // type:object size:0x44 scope:local -lbl_1_data_1984 = .data:0x00001984; // type:object size:0xB data:string -lbl_1_data_198F = .data:0x0000198F; // type:object size:0x1D +lbl_1_data_1984 = .data:0x00001984; // type:object size:0xB scope:local data:string +lbl_1_data_198F = .data:0x0000198F; // type:object size:0x1D scope:local data:string jumptable_1_data_19AC = .data:0x000019AC; // type:object size:0x28 scope:local -lbl_1_data_19D4 = .data:0x000019D4; // type:object size:0x24 data:string +lbl_1_data_19D4 = .data:0x000019D4; // type:object size:0x24 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x3F0 data:float lbl_1_bss_3F0 = .bss:0x000003F0; // type:object size:0x4 data:float lbl_1_bss_3F4 = .bss:0x000003F4; // type:object size:0x4 data:4byte @@ -333,7 +333,8 @@ lbl_1_bss_3FC = .bss:0x000003FC; // type:object size:0x4 data:4byte lbl_1_bss_400 = .bss:0x00000400; // type:object size:0x2 data:2byte lbl_1_bss_402 = .bss:0x00000402; // type:object size:0x2 data:2byte lbl_1_bss_404 = .bss:0x00000404; // type:object size:0x2 data:2byte -lbl_1_bss_408 = .bss:0x00000408; // type:object size:0x8 data:4byte +lbl_1_bss_408 = .bss:0x00000408; // type:object size:0x4 data:4byte +lbl_1_bss_40C = .bss:0x0000040C; // type:object size:0x4 data:4byte lbl_1_bss_410 = .bss:0x00000410; // type:object size:0x4 data:4byte lbl_1_bss_414 = .bss:0x00000414; // type:object size:0x4 data:4byte lbl_1_bss_418 = .bss:0x00000418; // type:object size:0x4 data:4byte diff --git a/configure.py b/configure.py index 339a9dfe..56ea295c 100644 --- a/configure.py +++ b/configure.py @@ -1065,7 +1065,7 @@ config.libs = [ Rel( "m432Dll", # Dungeon Duos objects={ - Object(NonMatching, "REL/m432Dll/main.c"), + Object(Matching, "REL/m432Dll/main.c"), }, ), Rel( diff --git a/include/REL/m432data.h b/include/REL/m432data.h new file mode 100644 index 00000000..1152d0c7 --- /dev/null +++ b/include/REL/m432data.h @@ -0,0 +1,1235 @@ +#ifndef M432DATA_H +#define M432DATA_H + +#include "datadir_enum.h" +#include "dolphin.h" +#include "game/hsfanim.h" + +typedef struct UnkM432DllBss0SubStruct { + char *unk_00; + char *unk_04; + s32 unk_08; + u32 unk_0C[2]; + u32 unk_14; + float unk_18; + float unk_1C; + Vec unk_20; + Vec unk_2C; + float unk_38; + float unk_3C; + s16 unk_40; + s32 unk_44; +} UnkM432DllBss0SubStruct; /* size = 0x48 */ + +typedef struct UnkM432DllData1794Struct { + float unk_00; + float unk_04; + float unk_08; + float unk_0C; + float unk_10; + float unk_14; + s32 unk_18; + s32 unk_1C; +} UnkM432DllData1794Struct; /* size = 0x20 */ + +s32 lbl_1_data_A0[2] = { 1, 2 }; +float lbl_1_data_A8[8] = { 0.0f, 0.0f, 318.0f, 480.0f, 322.0f, 0.0f, 318.0f, 480.0f }; +Vec lbl_1_data_C8 = { 0.0f, 1.0f, 0.0f }; +Vec lbl_1_data_D4 = { 0.0f, 3000.0f, 1000.0f }; +Vec lbl_1_data_E0 = { 0.0f, -3.0f, -1.0f }; +GXColor lbl_1_data_EC = { 0xFF, 0xFF, 0xFF, 0xFF }; +Vec lbl_1_data_F0 = { 0.0f, 5000.0f, 100.0f }; +Vec lbl_1_data_FC = { 0.0f, 0.0f, 0.0f }; + +s32 lbl_1_data_108[8][0xB] = { + { + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x73), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x74), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x5B), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x1D), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x38), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x6C), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x72), + }, + { + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x02), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x03), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x73), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x74), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x5B), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x1D), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x38), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x6C), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x72), + }, + { + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x00), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x02), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x03), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x73), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x74), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x5B), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x1D), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x38), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x6C), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x72), + }, + { + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x02), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x03), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x73), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x74), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x5B), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x1D), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x38), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x6C), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x72), + }, + { + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x02), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x03), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x73), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x74), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x5B), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x1D), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x38), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x6C), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x72), + }, + { + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x02), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x03), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x73), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x74), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x5B), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x1D), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x38), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x6C), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x72), + }, + { + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x02), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x03), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x73), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x74), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x5B), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x1D), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x38), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x6C), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x72), + }, + { + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x02), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x03), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x73), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x74), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x6A), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x5B), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x1D), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x38), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x6C), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x72), + }, +}; + +s32 lbl_1_data_268[8] = { 0, 1, 2, 3, 4, -1, -1, -1 }; + +s32 lbl_1_data_288[9] = { + DATA_MAKE_NUM(DATADIR_M432, 0x1F), + DATA_MAKE_NUM(DATADIR_M432, 0x20), + DATA_MAKE_NUM(DATADIR_M432, 0x21), + DATA_MAKE_NUM(DATADIR_M432, 0x22), + DATA_MAKE_NUM(DATADIR_M432, 0x23), + DATA_MAKE_NUM(DATADIR_M432, 0x24), + DATA_MAKE_NUM(DATADIR_M432, 0x25), + DATA_MAKE_NUM(DATADIR_M432, 0x26), + DATA_MAKE_NUM(DATADIR_M432, 0x27), +}; + +s32 lbl_1_data_2AC[9] = { 0, 8, -0x10, 4, 0, -4, -1, 0, 0 }; +s32 lbl_1_data_2D0[9] = { 0, 8, -0x10, 8, 0, -4, -1, 0, 0 }; +s32 lbl_1_data_2F4[9] = { 0, 8, -0x10, 7, 0, -4, -1, 0, 0 }; +s32 lbl_1_data_318[0xF] = { 1, 0, -0x10, 5, -0x18, -5, 2, 0, -5, 6, 0x18, -5, -1, 0, 0 }; +Vec lbl_1_data_354[2] = { { -1200.0f, 0.0f, 0.0f }, { -400.0f, 0.0f, 0.0f } }; +Vec lbl_1_data_36C[2] = { { 400.0f, 0.0f, 0.0f }, { 1200.0f, 0.0f, 0.0f } }; + +char *lbl_1_data_3DC[8] = { + "m432_00-o0", + "m432_00-o1", + "m432_00-o2", + "m432_00-o3", + "m432_00-o4", + "m432_00-o5", + "m432_00-o6", + "m432_00-o7", +}; + +char *lbl_1_data_440[6] = { + "m432_00-p0", + "m432_00-p1", + "m432_00-p2", + "m432_00-p3", + "m432_00-p4", + "m432_00-q0", +}; + +char *lbl_1_data_4C8[0xA] = { + "m432_00-r0", + "m432_00-r1", + "m432_00-r2", + "m432_00-r5", + "m432_00-r4", + "m432_00-r3", + "m432_00-r6", + "m432_00-r7", + "m432_00-r8", + "m432_00-s0", +}; + +u8 lbl_1_data_4F0[0x14] = { + 0, + 0, + 0, + 1, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0, + 0, + 0, + 3, +}; + +u8 lbl_1_data_504[0x24] = { + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 5, + 0, + 0, + 0, + 8, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0, + 0, + 0, + 6, + 0, + 0, + 0, + 7, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, + 0xFF, +}; + +s32 lbl_1_data_528[2] = { DATA_MAKE_NUM(DATADIR_M432, 0x05), DATA_MAKE_NUM(DATADIR_M432, 0x06) }; + +UnkM432DllBss0SubStruct lbl_1_data_5EC[0x1F] = { + { + "m432_00-i0", + NULL, + -1, + { 0, 0 }, + 0, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-b0", + "m432_00-a0", + 4, + { DATA_MAKE_NUM(DATADIR_M432, 0x0C), DATA_MAKE_NUM(DATADIR_M432, 0x0D) }, + 1, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-a1", + NULL, + 5, + { DATA_MAKE_NUM(DATADIR_M432, 0x0A), DATA_MAKE_NUM(DATADIR_M432, 0x0B) }, + 0x100, + 90.0f, + 150.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-b2", + "m432_00-a2", + 6, + { DATA_MAKE_NUM(DATADIR_M432, 0x0C), DATA_MAKE_NUM(DATADIR_M432, 0x0D) }, + 1, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-a3", + NULL, + 7, + { DATA_MAKE_NUM(DATADIR_M432, 0x0A), DATA_MAKE_NUM(DATADIR_M432, 0x0B) }, + 0x100, + 90.0f, + 150.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-c0", + NULL, + 0x10, + { DATA_MAKE_NUM(DATADIR_M432, 0x0E), DATA_MAKE_NUM(DATADIR_M432, 0x0F) }, + 0x400, + 90.0f, + 150.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-c1", + NULL, + 0x11, + { DATA_MAKE_NUM(DATADIR_M432, 0x0E), DATA_MAKE_NUM(DATADIR_M432, 0x0F) }, + 0x400, + -90.0f, + 150.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-d0", + NULL, + 0x14, + { DATA_MAKE_NUM(DATADIR_M432, 0x10), DATA_MAKE_NUM(DATADIR_M432, 0x11) }, + 0, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-c2", + NULL, + 0x12, + { DATA_MAKE_NUM(DATADIR_M432, 0x0E), DATA_MAKE_NUM(DATADIR_M432, 0x0F) }, + 0x200, + 90.0f, + 150.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-c3", + NULL, + 0x13, + { DATA_MAKE_NUM(DATADIR_M432, 0x0E), DATA_MAKE_NUM(DATADIR_M432, 0x0F) }, + 0x200, + -90.0f, + 150.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-d1", + NULL, + 0x15, + { DATA_MAKE_NUM(DATADIR_M432, 0x12), DATA_MAKE_NUM(DATADIR_M432, 0x13) }, + 0, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-p0", + "m432_00-q0", + -1, + { 0, 0 }, + 2, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-p1", + "m432_00-q0", + -1, + { 0, 0 }, + 2, + 0.0f, + 1.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-p2", + "m432_00-q0", + -1, + { 0, 0 }, + 2, + 0.0f, + 2.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-p3", + "m432_00-q0", + -1, + { 0, 0 }, + 2, + 0.0f, + 3.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-p4", + "m432_00-q0", + -1, + { 0, 0 }, + 2, + 0.0f, + 4.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-q0", + NULL, + -1, + { 0, 0 }, + 8, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r0", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r1", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 1.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r2", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 2.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r5", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 3.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r4", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 4.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r3", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 5.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r6", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 6.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r7", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 7.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r8", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 8.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-s0", + NULL, + -1, + { 0, 0 }, + 0x10, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-e0", + NULL, + 8, + { DATA_MAKE_NUM(DATADIR_M432, 0x14), DATA_MAKE_NUM(DATADIR_M432, 0x15) }, + 0x800, + 180.0f, + 120.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-j0", + NULL, + 9, + { DATA_MAKE_NUM(DATADIR_M432, 0x18), DATA_MAKE_NUM(DATADIR_M432, 0x19) }, + 0, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-h0", + NULL, + 0x16, + { DATA_MAKE_NUM(DATADIR_M432, 0x16), DATA_MAKE_NUM(DATADIR_M432, 0x17) }, + 0, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-t0", + NULL, + 0x17, + { DATA_MAKE_NUM(DATADIR_M432, 0x1C), DATA_MAKE_NUM(DATADIR_M432, 0x1D) }, + 0, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, +}; + +UnkM432DllBss0SubStruct lbl_1_data_EDC[0x1F] = { + { + "m432_00-i1", + NULL, + -1, + { 0, 0 }, + 0, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-a0", + NULL, + 0xA, + { DATA_MAKE_NUM(DATADIR_M432, 0x0A), DATA_MAKE_NUM(DATADIR_M432, 0x0B) }, + 0x100, + -90.0f, + 150.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-b1", + "m432_00-a1", + 0xB, + { DATA_MAKE_NUM(DATADIR_M432, 0x0C), DATA_MAKE_NUM(DATADIR_M432, 0x0D) }, + 1, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-a2", + NULL, + 0xC, + { DATA_MAKE_NUM(DATADIR_M432, 0x0A), DATA_MAKE_NUM(DATADIR_M432, 0x0B) }, + 0x100, + -90.0f, + 150.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-b3", + "m432_00-a3", + 0xD, + { DATA_MAKE_NUM(DATADIR_M432, 0x0C), DATA_MAKE_NUM(DATADIR_M432, 0x0D) }, + 1, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-c0", + NULL, + 0x10, + { 0, 0 }, + 0x400, + 90.0f, + 150.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-c1", + NULL, + 0x11, + { 0, 0 }, + 0x400, + -90.0f, + 150.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-d0", + NULL, + 0x14, + { 0, 0 }, + 0, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-c2", + NULL, + 0x12, + { 0, 0 }, + 0x200, + 90.0f, + 150.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-c3", + NULL, + 0x13, + { 0, 0 }, + 0x200, + -90.0f, + 150.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-d1", + NULL, + 0x15, + { 0, 0 }, + 0, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-p0", + "m432_00-q0", + -1, + { 0, 0 }, + 2, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-p1", + "m432_00-q0", + -1, + { 0, 0 }, + 2, + 0.0f, + 1.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-p2", + "m432_00-q0", + -1, + { 0, 0 }, + 2, + 0.0f, + 2.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-p3", + "m432_00-q0", + -1, + { 0, 0 }, + 2, + 0.0f, + 3.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-p4", + "m432_00-q0", + -1, + { 0, 0 }, + 2, + 0.0f, + 4.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-q0", + NULL, + -1, + { 0, 0 }, + 8, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r0", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r1", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 1.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r2", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 2.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r5", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 3.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r4", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 4.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r3", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 5.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r6", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 6.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r7", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 7.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-r8", + "m432_00-s0", + -1, + { 0, 0 }, + 4, + 0.0f, + 8.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-s0", + NULL, + -1, + { 0, 0 }, + 0x10, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-e1", + NULL, + 0xE, + { DATA_MAKE_NUM(DATADIR_M432, 0x14), DATA_MAKE_NUM(DATADIR_M432, 0x15) }, + 0x800, + 180.0f, + 120.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-k0", + NULL, + 0xF, + { DATA_MAKE_NUM(DATADIR_M432, 0x1A), DATA_MAKE_NUM(DATADIR_M432, 0x1B) }, + 0, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-h0", + NULL, + 0x16, + { 0, 0 }, + 0, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, + { + "m432_00-t0", + NULL, + 0x17, + { 0, 0 }, + 0, + 0.0f, + 0.0f, + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + 0.0f, + 0.0f, + 0, + 0, + }, +}; + +UnkM432DllData1794Struct lbl_1_data_1794 = { 6300.0f, 0.7f, 10.0f, 0.4f, 1.0f, 0, 2, 6 }; +UnkM432DllData1794Struct lbl_1_data_17B4 = { 5700.0f, 0.8f, 8.0f, 0.6f, 1.0f, 0, 4, 5 }; +UnkM432DllData1794Struct lbl_1_data_17D4 = { 5100.0f, 0.9f, 6.0f, 0.8f, 1.0f, 0, 6, 4 }; +UnkM432DllData1794Struct lbl_1_data_17F4 = { 4500.0f, 1.0f, 4.0f, 1.0f, 1.0f, 0, 8, 3 }; +HsfanimStruct00 lbl_1_data_1814 = { + 0x1E, + { 0, 0 }, + 1.0f, + 50.0f, + 360.0f, + { 0.0f, 0.1f, 0.0f }, + 1.0f, + 1.0f, + 30.0f, + 1.1f, + 4, + { + { 0xF0, 0xD0, 0xB0, 0xFF }, + { 0xE0, 0xC0, 0xA0, 0xFF }, + { 0xD0, 0xB0, 0x90, 0xFF }, + { 0xC0, 0xA0, 0x80, 0xFF }, + }, + { + { 0xF0, 0xD0, 0xB0, 0 }, + { 0xE0, 0xC0, 0xA0, 0 }, + { 0xD0, 0xB0, 0x90, 0 }, + { 0xC0, 0xA0, 0x80, 0 }, + }, +}; + +#endif diff --git a/src/REL/m432Dll/main.c b/src/REL/m432Dll/main.c index 117d8d64..18d7f523 100644 --- a/src/REL/m432Dll/main.c +++ b/src/REL/m432Dll/main.c @@ -1,11 +1,14 @@ #include "REL/executor.h" +#include "dolphin/types.h" #include "game/chrman.h" #include "game/frand.h" +#include "game/memory.h" #include "game/minigame_seq.h" #include "game/object.h" #include "game/objsub.h" #include "game/wipe.h" +#include "game/gamework.h" #include "game/gamework_data.h" #include "game/mapspace.h" @@ -21,7 +24,15 @@ #include "game/sprite.h" #include "ext_math.h" -#include "rel_sqrt_consts.h" + +#include "string.h" + +#ifndef __MWERKS__ +#include "game/audio.h" +#include "game/hsfex.h" + +void HuSysVWaitSet(s16 vcount); +#endif #undef ABS #define ABS(x) ((0 > (x)) ? -(x) : (x)) @@ -56,7 +67,7 @@ Vec lbl_1_bss_590; Vec lbl_1_bss_584; u32 lbl_1_bss_580; s32 lbl_1_bss_57C; -u32 lbl_1_bss_578; +u32 lbl_1_bss_578; // TODO maybe array? s16 lbl_1_bss_576; s16 lbl_1_bss_574; s32 lbl_1_bss_570; @@ -403,9 +414,9 @@ void fn_1_1D70(s16 arg0, char *arg1, Vec *arg2, Mtx arg3) var_r30 = &Hu3DData[arg0]; Hu3DModelObjMtxGet(arg0, arg1, spC); - PSMTXConcat(var_r30->unk_F0, spC, spC); + MTXConcat(var_r30->unk_F0, spC, spC); if (NULL != arg3) { - PSMTXCopy(spC, arg3); + MTXCopy(spC, arg3); } arg2->x = spC[0][3]; arg2->y = spC[1][3]; @@ -433,7 +444,7 @@ float fn_1_1E20(float arg0, float arg1, float arg2) void fn_1_1F24(s32 arg0) { - lbl_1_bss_570 = HuAudSeqPlay((s32)arg0); + lbl_1_bss_570 = HuAudSeqPlay(arg0); } void fn_1_1F58(s32 arg0) @@ -477,4 +488,3288 @@ void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3) } } VECAdd((Vec *)&arg0, &sp18, (Vec *)&arg0); -} \ No newline at end of file +} + +s16 lbl_1_data_0[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; +s32 lbl_1_data_10[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; +float lbl_1_data_30[0xA] = { 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 70.0f, 100.0f }; +float lbl_1_data_58[0xA] = { + 150.0f, + 170.0f, + 190.0f, + 170.0f, + 160.0f, + 150.0f, + 180.0f, + 200.0f, + 150.0f, + 200.0f, +}; + +// these are copied from m461Dll/main.c +typedef void (*PlayerOldHook)(omObjData *obj); +typedef Vec *(*PlayerOldPosHook)(omObjData *obj); + +typedef struct work_playerold { + omObjData *unk_00; + PlayerOldHook unk_04; + PlayerOldPosHook unk_08; + PlayerOldHook unk_0C; + PlayerOldHook unk_10; + s32 *unk_14; + s32 unk_18; + s32 unk_1C; + s32 unk_20; + s32 unk_24; + s32 unk_28; + s32 unk_2C; + s32 unk_30; + s32 unk_34; + s32 unk_38; + s32 unk_3C; + s32 unk_40; + s32 unk_44; + s32 unk_48; + s32 unk_4C; + Vec *unk_50; + Vec unk_54; + float unk_60; + s32 unk_64; + Vec *unk_68; + Vec unk_6C; + Vec unk_78; + Vec unk_84; + Vec unk_90; + float unk_9C; + float unk_A0; + float unk_A4; + float unk_A8; + Vec unk_AC; + float unk_B8; + float unk_BC; + float unk_C0; +} WorkPlayerOld; + +typedef WorkPlayerOld *(*PlayerOldFind)(int no); + +PlayerOldFind lbl_1_bss_424; +float lbl_1_bss_420; + +void fn_1_23B4(WorkPlayerOld *player) +{ + s32 i; + for (i = 0; i < 8; i++) { + if (player->unk_44 == player->unk_14[i]) { + player->unk_40 = lbl_1_data_10[i]; + return; + } + } + player->unk_40 = -1; +} + +void fn_1_2418(float *minDist, s32 *state, s32 stateNew, Vec *posA, float aYOfs, Vec *posB, float bYOfs) +{ + Vec pointA = *posA; + Vec pointB = *posB; + float dist; + pointA.y += aYOfs; + pointB.y += bYOfs; + dist = VECDistance(&pointA, &pointB); + if (*minDist > dist) { + *minDist = dist; + *state = stateNew; + } +} + +void fn_1_24F8(WorkPlayerOld *player1, WorkPlayerOld *player2, float *minDist, s32 *state) +{ + *minDist = 10 * (player1->unk_BC + player2->unk_BC); + fn_1_2418(minDist, state, 0, &player1->unk_6C, player1->unk_BC, &player2->unk_6C, player2->unk_BC); + fn_1_2418(minDist, state, 1, &player1->unk_6C, player1->unk_C0 - player1->unk_BC, &player2->unk_6C, player2->unk_C0 - player2->unk_BC); + fn_1_2418(minDist, state, 2, &player1->unk_6C, player1->unk_BC, &player2->unk_6C, player2->unk_C0 - player2->unk_BC); + fn_1_2418(minDist, state, 3, &player1->unk_6C, player1->unk_C0 - player1->unk_BC, &player2->unk_6C, player2->unk_BC); +} + +s32 fn_1_2824(WorkPlayerOld *player, WorkPlayerOld *player2) +{ + Vec dir; + Vec dir2; + float dist; + + player->unk_3C |= 0x1; + player->unk_90.x = player->unk_20 / 4.0f; + player->unk_90.z = -(float)player->unk_24 / 4.0f; + if (player->unk_90.x != 0.0f || player->unk_90.z != 0.0f) { + return; + } + VECSubtract(&player->unk_6C, &player2->unk_6C, &dir); + dist = VECMagXZ(&dir); + if (0.0f == dist) { + dir.x = 0; + dir.z = -1; + } + else { + dir.x /= dist; + dir.z /= dist; + } + VECSubtract(&player->unk_6C, &player->unk_78, &dir2); + dist = VECMagXZ(&dir2); + if (5 > dist) { + dist = 5; + } + player->unk_90.x = dir.x * dist; + player->unk_90.z = dir.z * dist; +} + +void fn_1_2BD0(WorkPlayerOld *player, float arg1, float arg2) +{ + player->unk_38 = 1; + player->unk_84.y = arg1; + player->unk_A4 = arg2; + if (player->unk_3C & 0x2) { + player->unk_3C &= ~0x2; + } +} + +void fn_1_2C00(PlayerOldFind find, float yDist) +{ + lbl_1_bss_424 = find; + lbl_1_bss_420 = yDist; +} + +void fn_1_2C1C(WorkPlayerOld *player, omObjData *obj, s32 arg2, s32 arg3, s32 *arg4, s32 arg5, Vec *pos, float arg7) +{ + player->unk_00 = obj; + player->unk_18 = arg2; + player->unk_1C = arg3; + player->unk_14 = arg4; + player->unk_04 = NULL; + player->unk_08 = NULL; + player->unk_0C = NULL; + player->unk_10 = NULL; + player->unk_50 = NULL; + player->unk_64 = 0; + player->unk_68 = 0; + player->unk_38 = 0; + player->unk_3C = 0; + player->unk_44 = arg5; + player->unk_48 = 0; + player->unk_4C = 0; + fn_1_23B4(player); + player->unk_9C = arg7; + player->unk_6C = *pos; + player->unk_78 = *pos; + player->unk_84.x = 0; + player->unk_84.y = 0; + player->unk_84.z = 0; + player->unk_B8 = 1; + player->unk_A8 = 0; + player->unk_BC = lbl_1_data_30[player->unk_1C]; + player->unk_C0 = lbl_1_data_58[player->unk_1C]; +} + +void fn_1_2DA8(WorkPlayerOld *player, PlayerOldHook func) +{ + player->unk_04 = func; +} + +void fn_1_2DB0(WorkPlayerOld *player, PlayerOldPosHook func) +{ + player->unk_08 = func; +} + +void fn_1_2DB8(WorkPlayerOld *player, PlayerOldHook func) +{ + player->unk_0C = func; +} + +void fn_1_2DC0(WorkPlayerOld *player, PlayerOldHook func) +{ + player->unk_10 = func; +} + +void fn_1_2DC8(WorkPlayerOld *player, s32 count, Vec *data) +{ + player->unk_64 = count; + player->unk_68 = data; +} + +void fn_1_2DD4(WorkPlayerOld *player) +{ + omSetTra(player->unk_00, player->unk_6C.x, player->unk_6C.y, player->unk_6C.z); + omSetRot(player->unk_00, 0.0f, player->unk_9C, 0.0f); +} + +void fn_1_2E34(WorkPlayerOld *player) +{ + BOOL addTime; + s32 i; + player->unk_3C &= ~0x100; + if (player->unk_3C & 0x8) { + return; + } + if (NULL == lbl_1_bss_424) { + return; + } + addTime = FALSE; + for (i = 0; i < 4; i++) { + WorkPlayerOld *player2 = lbl_1_bss_424(i); + BOOL fixPos; + float minDist; + s32 state; + if (player == player2) { + continue; + } + if (player2->unk_3C & 0x8) { + continue; + } + fixPos = FALSE; + fn_1_24F8(player, player2, &minDist, &state); + if (minDist < player->unk_BC + player2->unk_BC) { + if (state < 2) { + fixPos = TRUE; + if (player->unk_38 == 1) { + fn_1_2824(player, player2); + } + } + else { + if (state == 2 && player->unk_38 == 1) { + fn_1_2824(player, player2); + player->unk_3C |= 0x100; + player->unk_A4 = 0; + if (!(player2->unk_3C & 0x100)) { + player->unk_84.y = 26.766666f; + } + } + if (state == 3) { + fixPos = TRUE; + if (player->unk_38 == 1) { + if (0.0f < player->unk_84.y) { + player->unk_84.y = 0.0f; + } + player->unk_A4 = 0; + } + } + } + } + if (fixPos) { + Vec dir; + addTime = TRUE; + VECSubtract(&player->unk_6C, &player2->unk_6C, &dir); + if (0.0f == minDist) { + dir.x = 0; + dir.z = -1; + } + else { + dir.x /= minDist; + dir.z /= minDist; + } + player->unk_6C.x = player2->unk_6C.x + (dir.x * (player->unk_BC + player2->unk_BC)); + player->unk_6C.z = player2->unk_6C.z + (dir.z * (player->unk_BC + player2->unk_BC)); + } + } + if (addTime) { + player->unk_4C++; + } + else { + player->unk_4C = 0; + } +} + +float fn_1_39C4(WorkPlayerOld *player, float arg2) +{ + Vec *pos; + s32 i; + AddX = 0.0f; + AddZ = 0.0f; + MapWall(player->unk_BC, player->unk_6C.x, arg2 + player->unk_BC, player->unk_6C.z); + player->unk_6C.x += AddX; + player->unk_6C.z += AddZ; + if (NULL != player->unk_68) { + for (pos = player->unk_68, i = 0; i < player->unk_64; i++, pos += 2) { + int num = 0; + if (pos[0].x == pos[1].x || pos[0].x > player->unk_6C.x || pos[1].x < player->unk_6C.x) { + num++; + } + if (pos[0].y == pos[1].y || pos[0].y > player->unk_6C.y || pos[1].y < player->unk_6C.y) { + num++; + } + if (pos[0].z == pos[1].z || pos[0].z > player->unk_6C.z || pos[1].z < player->unk_6C.z) { + num++; + } + if (num == 3) { + if (pos[0].x != pos[1].x) { + if (pos[0].x > player->unk_6C.x) { + player->unk_6C.x = pos[0].x + player->unk_BC; + } + if (pos[1].x < player->unk_6C.x) { + player->unk_6C.x = pos[1].x - player->unk_BC; + } + } + if (pos[0].y != pos[1].y) { + if (pos[0].y > player->unk_6C.y) { + player->unk_6C.y = pos[0].y; + } + if (pos[1].y < player->unk_6C.y) { + player->unk_6C.y = pos[1].y; + } + } + if (pos[0].z != pos[1].z) { + if (pos[0].z > player->unk_6C.z) { + player->unk_6C.z = pos[0].z + player->unk_BC; + } + if (pos[1].z < player->unk_6C.z) { + player->unk_6C.z = pos[1].z - player->unk_BC; + } + } + } + } + } + return ABS(AddX) + ABS(AddZ); +} + +void fn_1_3CE0(WorkPlayerOld *player, s32 *state, u32 *motAttr) +{ + *motAttr = HU3D_MOTATTR_LOOP; + *state = 0; + if (0.5f <= player->unk_A0) { + if (7.0f <= player->unk_A0) { + *state = 2; + } + else { + *state = 1; + } + } + + if (player->unk_14[3] >= 0 && (player->unk_28 & 0x100)) { + fn_1_2BD0(player, 26.766666f, 1); + *motAttr = HU3D_MOTATTR_NONE; + *state = 3; + } +} + +void fn_1_3DB8(WorkPlayerOld *player, s32 *state, u32 *motAttr) +{ + if (0.0f < player->unk_A4) { + if (player->unk_2C & 0x100) { + player->unk_A4++; + if (4.0f < player->unk_A4) { + player->unk_A4 = 0; + } + else { + player->unk_84.y += 3.65f; + } + } + else { + player->unk_A4 = 0; + } + } + player->unk_84.y += -2.4333334f; + if (player->unk_14[5] >= 0 && (player->unk_28 & 0x140)) { + player->unk_38 = 3; + player->unk_84.y = 0; + player->unk_3C &= ~0x3; + player->unk_3C |= 0x4; + *motAttr = HU3D_MOTATTR_NONE; + *state = 5; + } +} + +void fn_1_3ECC(WorkPlayerOld *player, s32 *state, u32 *motAttr) +{ + if ((player->unk_3C & 0x1000) || Hu3DMotionEndCheck(player->unk_00->model[0])) { + player->unk_3C &= ~0x3; + if (player->unk_40 == 6) { + player->unk_38 = 4; + *motAttr = HU3D_MOTATTR_NONE; + *state = 7; + } + else { + player->unk_38 = 0; + *motAttr = HU3D_MOTATTR_LOOP; + *state = 0; + } + } +} + +void fn_1_3F84(WorkPlayerOld *player, s32 *state, u32 *motAttr) +{ + if (Hu3DMotionShiftIDGet(player->unk_00->model[0]) < 0 && Hu3DMotionEndCheck(player->unk_00->model[0])) { + fn_1_2BD0(player, 0.0f, 0.0f); + } +} + +void fn_1_4024(WorkPlayerOld *player, s32 *state, u32 *motAttr) +{ + if (Hu3DMotionShiftIDGet(player->unk_00->model[0]) < 0 && Hu3DMotionEndCheck(player->unk_00->model[0])) { + player->unk_3C &= ~0x4; + player->unk_38 = 0; + *motAttr = HU3D_MOTATTR_LOOP; + *state = 0; + } +} + +void fn_1_40C0(WorkPlayerOld *player) +{ + u32 motAttr = HU3D_MOTATTR_NONE; + s32 state = -1; + float temp_f28; + float temp_f23; + float temp_f22; + Vec *pos; + BOOL temp_r27; + if (player->unk_3C & 0x1) { + player->unk_84.x = player->unk_90.x; + player->unk_84.z = player->unk_90.z; + } + else { + player->unk_84.x = player->unk_20 / 4.0f; + player->unk_84.z = -(float)player->unk_24 / 4.0f; + if (player->unk_38 == 1 && 0.0f == player->unk_84.x && 0.0f == player->unk_84.z) { + player->unk_84.x = 0.98f * (player->unk_6C.x - player->unk_78.x); + player->unk_84.z = 0.98f * (player->unk_6C.z - player->unk_78.z); + } + if (player->unk_3C & 0x14) { + player->unk_84.x = 0; + player->unk_84.z = 0; + player->unk_28 = 0; + } + } + player->unk_78 = player->unk_6C; + player->unk_A0 = VECMagXZ(&player->unk_84); + if (0.5f <= player->unk_A0) { + if (10.0f <= player->unk_A0) { + player->unk_84.x /= player->unk_A0; + player->unk_84.z /= player->unk_A0; + player->unk_A0 = 10; + player->unk_84.x = 10 * player->unk_84.x; + player->unk_84.z = 10 * player->unk_84.z; + } + } + else { + player->unk_84.x = 0; + player->unk_84.z = 0; + player->unk_A0 = 0; + } + player->unk_84.x *= player->unk_B8; + player->unk_84.z *= player->unk_B8; + player->unk_A0 *= player->unk_B8; + if (player->unk_3C & 0x800) { + player->unk_28 |= 0x100; + player->unk_2C |= 0x100; + if (player->unk_38 == 1) { + if (0.0f == player->unk_A4) { + player->unk_3C &= ~0x800; + } + } + } + switch (player->unk_38) { + case 0: + fn_1_3CE0(player, &state, &motAttr); + break; + + case 1: + fn_1_3DB8(player, &state, &motAttr); + break; + + case 2: + fn_1_3ECC(player, &state, &motAttr); + break; + + case 3: + fn_1_3F84(player, &state, &motAttr); + break; + + case 4: + fn_1_4024(player, &state, &motAttr); + break; + + default: + OSReport("*** player action error(%d)!!\n", player->unk_38); + break; + } + if (player->unk_3C & 0x2000) { + player->unk_84.y = 0; + } + temp_f28 = 0; + if (50.0f < ABS(player->unk_84.y)) { + player->unk_84.y = 50.0f * ((0.0f > player->unk_84.y) ? -1 : 1); + } + if (player->unk_3C & 0x2) { + Mtx rotMtx; + MTXRotDeg(rotMtx, 'y', player->unk_50[2].x - player->unk_60); + MTXMultVec(rotMtx, &player->unk_54, &player->unk_54); + VECAdd(&player->unk_54, &player->unk_50[0], &player->unk_6C); + player->unk_9C += player->unk_50[2].x - player->unk_60; + } + temp_f22 = player->unk_6C.y; + VECAdd(&player->unk_6C, &player->unk_84, &player->unk_6C); + if ((player->unk_3C & 0x1) == 0 && (0.0f != player->unk_84.x || 0.0f != player->unk_84.z)) { + player->unk_9C = fn_1_1E20(player->unk_9C, atan2d(player->unk_84.x, player->unk_84.z), 0.4f * player->unk_B8); + } + temp_f28 += fn_1_39C4(player, temp_f22); + if (nMap == 0) { + player->unk_A8 = lbl_1_bss_420; + } + else { + player->unk_A8 = MapPos(player->unk_6C.x, player->unk_6C.y, player->unk_6C.z, player->unk_C0, &player->unk_AC); + } + temp_r27 = FALSE; + if (NULL != player->unk_08) { + pos = player->unk_08(player->unk_00); + if (NULL != pos) { + if (player->unk_A8 < pos[1].y) { + temp_r27 = TRUE; + player->unk_50 = pos; + player->unk_A8 = pos[1].y; + } + } + } + if (!temp_r27 && (player->unk_3C & 0x2)) { + player->unk_3C &= ~0x2; + } + if (player->unk_38 == 1 && player->unk_A8 >= player->unk_6C.y) { + player->unk_38 = 2; + player->unk_3C &= ~0x3; + player->unk_6C.y = player->unk_A8; + player->unk_84.y = 0; + motAttr = HU3D_MOTATTR_NONE; + state = 4; + if (player->unk_40 == 5) { + state = 6; + if (NULL != player->unk_10) { + player->unk_10(player->unk_00); + } + if (player->unk_18 < 4) { + omVibrate(player->unk_18, 12, 4, 2); + } + } + if (player->unk_3C & 0x200) { + state = -1; + if (NULL != player->unk_0C) { + player->unk_0C(player->unk_00); + } + } + if (temp_r27) { + player->unk_3C |= 0x2; + } + } + temp_f23 = player->unk_6C.y - player->unk_A8; + if (player->unk_38 == 0 && 10.0f < temp_f23) { + if ((player->unk_3C & 0x2000) == 0) { + if ((player->unk_3C & 0x400) != 0) { + player->unk_3C |= 0x800; + } + else { + fn_1_2BD0(player, 0.0f, 0.0f); + motAttr = HU3D_MOTATTR_NONE; + state = 3; + } + } + } + else if (temp_r27) { + if (!(player->unk_3C & 0x2)) { + player->unk_6C.y = player->unk_A8; + player->unk_3C |= 0x2; + } + } + fn_1_2E34(player); + if (NULL != player->unk_04) { + player->unk_04(player->unk_00); + } + temp_f28 += fn_1_39C4(player, player->unk_6C.y); + if (player->unk_3C & 0x2) { + player->unk_60 = player->unk_50[2].x; + VECSubtract(&player->unk_6C, &player->unk_50[0], &player->unk_54); + } + if (0.0f != temp_f28) { + player->unk_48++; + } + else { + player->unk_48 = 0; + } + if (state >= 0 && player->unk_40 != state) { + player->unk_40 = state; + player->unk_44 = player->unk_14[player->unk_40]; + if (player->unk_44 >= 0 && !(player->unk_3C & 0x20)) { + Hu3DMotionShiftSet(player->unk_00->model[0], player->unk_00->motion[player->unk_44], 0, 8, motAttr); + } + } +} + +void fn_1_4ED8(WorkPlayerOld *player, s32 motNo) +{ + s32 i; + player->unk_44 = motNo; + player->unk_38 = 0; + player->unk_3C &= 0x1400; + player->unk_78 = player->unk_6C; + player->unk_84.x = 0; + player->unk_84.y = 0; + player->unk_84.z = 0; + fn_1_23B4(player); + if (player->unk_40 == 3) { + Hu3DModelAttrReset(player->unk_00->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DMotionSet(player->unk_00->model[0], player->unk_00->motion[player->unk_44]); + Hu3DMotionTimeSet(player->unk_00->model[0], Hu3DMotionMaxTimeGet(player->unk_00->model[0]) - 1); + } + else if (player->unk_40 == 5) { + player->unk_38 = 3; + player->unk_3C |= 0x4; + Hu3DModelAttrReset(player->unk_00->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DMotionSet(player->unk_00->model[0], player->unk_00->motion[player->unk_44]); + Hu3DMotionTimeSet(player->unk_00->model[0], Hu3DMotionMaxTimeGet(player->unk_00->model[0]) - 1); + } + else { + Hu3DModelAttrReset(player->unk_00->model[0], HU3D_MOTATTR_PAUSE); + Hu3DMotionShiftSet(player->unk_00->model[0], player->unk_00->motion[player->unk_44], 0, 8, HU3D_MOTATTR_LOOP); + } +} + +void fn_1_5128(WorkPlayerOld *player, s32 attr) +{ + player->unk_3C |= attr; +} + +void fn_1_5138(WorkPlayerOld *player, s32 attr) +{ + player->unk_3C &= ~attr; +} + +#include "REL/m432data.h" + +typedef struct UnkBss0Struct { + /* 0x000 */ omObjData *unk_00; + /* 0x004 */ omObjData *unk_04; + /* 0x008 */ omObjData *unk_08; + /* 0x00C */ omObjData *unk_0C; + /* 0x010 */ UnkM432DllBss0SubStruct *unk_10[2]; + /* 0x018 */ s32 unk_18; + /* 0x01C */ Vec unk_1C; + /* 0x028 */ Vec unk_28; + /* 0x034 */ Vec unk_34; + /* 0x040 */ Vec unk_40; + /* 0x04C */ Vec unk_4C; + /* 0x058 */ Vec unk_58; + /* 0x064 */ float unk_64; + /* 0x068 */ float unk_68; + /* 0x06C */ float unk_6C; + /* 0x070 */ float unk_70; + /* 0x074 */ float unk_74; + /* 0x078 */ float unk_78; + /* 0x07C */ float unk_7C; + /* 0x080 */ float unk_80; + /* 0x084 */ float unk_84; + /* 0x088 */ Vec unk_88[4][3]; + /* 0x118 */ Vec unk_118; + /* 0x124 */ float unk_124; + /* 0x128 */ float unk_128; + /* 0x12C */ float unk_12C; + /* 0x130 */ Vec unk_130[8]; + /* 0x190 */ Vec unk_190; + /* 0x19C */ Vec unk_19C; + /* 0x1A8 */ Vec unk_1A8; + /* 0x1B4 */ s32 unk_1B4; + /* 0x1B8 */ s32 unk_1B8; + /* 0x1BC */ s32 unk_1BC; + /* 0x1C0 */ Vec unk_1C0; + /* 0x1CC */ s32 unk_1CC; + /* 0x1D0 */ s32 unk_1D0; + /* 0x1D4 */ float unk_1D4; + /* 0x1D8 */ s32 unk_1D8; + /* 0x1DC */ float unk_1DC; + /* 0x1E0 */ float unk_1E0; + /* 0x1E4 */ float unk_1E4; + /* 0x1E8 */ float unk_1E8; + /* 0x1EC */ float unk_1EC; + /* 0x1F0 */ float unk_1F0[2]; +} UnkBss0Struct; /* size = 0x1F8 */ + +typedef struct UnkM432DllStruct { + WorkPlayerOld unk_00; + s32 *unk_C4; + UnkM432DllBss0SubStruct *unk_C8; + UnkM432DllData1794Struct *unk_CC; + UnkM432DllBss0SubStruct *unk_D0; + s32 unk_D4[10]; + s32 unk_FC; + s32 unk_100; + float unk_104; + float unk_108; + float unk_10C; + float unk_110; + float unk_114; + s32 unk_118[9]; + Vec unk_13C; + float unk_148; + float unk_14C; + float unk_150; + float unk_154; + float unk_158; + float unk_15C; + float unk_160; + float unk_164; + s32 unk_168; + s32 unk_16C; + s32 unk_170; + s32 unk_174; + s32 unk_178; + s32 unk_17C; + s32 unk_180; + s32 unk_184; + s32 unk_188; + s32 unk_18C; + s32 unk_190; + s32 unk_194; +} UnkM432DllStruct; + +typedef struct UnkM432DllStruct2 { + Vec unk_00; + float unk_0C; + float unk_10; + float unk_14; + float unk_18; +} UnkM432DllStruct2; /* size = 0x1C */ + +void fn_1_10250(omObjData *object); +void fn_1_153BC(void); +void fn_1_1615C(omObjData *object); +void fn_1_6F28(UnkBss0Struct *arg0); +void fn_1_93BC(UnkM432DllStruct *arg0); + +omObjData *lbl_1_bss_41C; +omObjData **lbl_1_bss_418; +omObjData *lbl_1_bss_414; +// data UnkM432DllStruct +omObjData **lbl_1_bss_410; +s32 lbl_1_bss_40C; +AnimData *lbl_1_bss_408; +s16 lbl_1_bss_404; +s16 lbl_1_bss_402; +s16 lbl_1_bss_400; +s32 lbl_1_bss_3FC; +s32 lbl_1_bss_3F8; +s32 lbl_1_bss_3F4; +float lbl_1_bss_3F0; +UnkBss0Struct lbl_1_bss_0[2]; + +void fn_1_5148(UnkM432DllStruct *arg0) +{ + s32 var_r31; + + arg0->unk_D0 = 0; + arg0->unk_FC = 0; + arg0->unk_100 = 0; + arg0->unk_10C = 0.0f; + for (var_r31 = 0; var_r31 < 0xA; var_r31++) { + arg0->unk_D4[var_r31] = -1; + } +} + +UnkM432DllStruct *fn_1_51A8(s32 arg0) +{ + s32 var_r31; + UnkM432DllStruct *var_r30; + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = lbl_1_bss_410[var_r31]->data; + if (arg0 == var_r30->unk_184) { + return var_r30; + } + } + return NULL; +} + +UnkM432DllBss0SubStruct *fn_1_5208(s32 arg0, UnkM432DllBss0SubStruct *arg1) +{ + UnkM432DllBss0SubStruct *var_r31; + s32 var_r30; + s32 var_r29; + + for (var_r30 = 0; var_r30 < 2; var_r30++) { + var_r31 = lbl_1_bss_0[arg0].unk_10[var_r30]; + for (var_r29 = 0; var_r29 < 0x1F; var_r29++, var_r31++) { + if (strcmp(arg1->unk_04, var_r31->unk_00) == 0) { + return var_r31; + } + } + } + return NULL; +} + +inline void fn_1_52B8_inline(Vec *arg0, float arg8, float arg9, float argA) +{ + arg0->x = arg8; + arg0->y = arg9; + arg0->z = argA; +} + +void fn_1_52B8(UnkM432DllBss0SubStruct *arg0, Vec *arg1) +{ + Mtx sp8; + + fn_1_52B8_inline(arg1, 0.0f, 0.0f, arg0->unk_1C); + MTXRotRad(sp8, 0x79, 0.017453292f * arg0->unk_18); + MTXMultVec(sp8, arg1, arg1); + VECAdd(&arg0->unk_2C, arg1, arg1); +} + +void fn_1_5364(s32 arg0, omObjData *object) +{ + if (lbl_1_bss_0[arg0].unk_1D8 >= 0) { + lbl_1_bss_0[arg0].unk_1DC -= 0.016666668f; + if (0.0f >= lbl_1_bss_0[arg0].unk_1DC) { + HuAudFXStop(lbl_1_bss_0[arg0].unk_1D8); + lbl_1_bss_0[arg0].unk_1D8 = -1; + } + else { + HuAudFXPitchSet(lbl_1_bss_0[arg0].unk_1D8, (s32)(8191.0f * lbl_1_bss_0[arg0].unk_1DC)); + HuAudFXVolSet(lbl_1_bss_0[arg0].unk_1D8, (s32)(127.0f * lbl_1_bss_0[arg0].unk_1DC)); + } + } + lbl_1_bss_0[arg0].unk_88[0][2].x = lbl_1_bss_0[arg0].unk_80; + lbl_1_bss_0[arg0].unk_88[1][2].x = lbl_1_bss_0[arg0].unk_80; + Hu3DModelRotSet(object->model[20], 0.0f, lbl_1_bss_0[arg0].unk_80, 0.0f); + fn_1_1D18(object->model[20], "m432_13-player2A", &lbl_1_bss_0[arg0].unk_88[0][1]); + fn_1_1D18(object->model[20], "m432_13-player2B", &lbl_1_bss_0[arg0].unk_88[1][1]); + lbl_1_bss_0[arg0].unk_88[2][2].x = lbl_1_bss_0[arg0].unk_84; + lbl_1_bss_0[arg0].unk_88[3][2].x = lbl_1_bss_0[arg0].unk_84; + Hu3DModelRotSet(object->model[21], 0.0f, lbl_1_bss_0[arg0].unk_84, 0.0f); + fn_1_1D18(object->model[21], "m432_13-player2C", &lbl_1_bss_0[arg0].unk_88[2][1]); + fn_1_1D18(object->model[21], "m432_13-player2C", &lbl_1_bss_0[arg0].unk_88[3][1]); +} + +void fn_1_576C(s32 arg0, omObjData *arg1) +{ + float var_f31 = lbl_1_bss_0[arg0].unk_124 * (Hu3DMotionMaxTimeGet(arg1->model[22]) / 1000.0f); + lbl_1_bss_0[arg0].unk_128 += 0.02f * (var_f31 - lbl_1_bss_0[arg0].unk_128); + Hu3DMotionTimeSet(arg1->model[22], lbl_1_bss_0[arg0].unk_128); +} + +void fn_1_5848(UnkM432DllStruct *var_r28, UnkM432DllBss0SubStruct *var_r31) +{ + s32 sp20; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + + s32 var_r30; + s32 var_r27; + UnkM432DllStruct *var_r26; + UnkM432DllBss0SubStruct *var_r25; + UnkBss0Struct *var_r24; + s32 var_r21; + s32 var_r20; + char **var_r19; + u8 *var_r18; + + var_r20 = var_r31->unk_1C; + var_r26 = fn_1_51A8(var_r28->unk_184 ^ 1); + var_r24 = &lbl_1_bss_0[var_r28->unk_184 >> 1]; + sp20 = var_r24->unk_1B8; + var_r27 = 6; + var_r18 = lbl_1_data_4F0; + var_r19 = lbl_1_data_440; + if ((var_r31->unk_14 & 4) != 0) { + sp20 = var_r24->unk_1BC; + var_r27 = 0xA; + var_r18 = lbl_1_data_504; + var_r19 = lbl_1_data_4C8; + } + var_r30 = frandmod(var_r27 - 1); + for (var_r21 = 0; var_r21 < (var_r27 - 1); var_r21++) { + var_r30 = (var_r30 + 1) % (var_r27 - 1); + if ((var_r20 != var_r30) && (sp20 != var_r30) && (var_r30 != var_r18[var_r20])) { + var_r31->unk_04 = var_r19[var_r30]; + var_r25 = fn_1_5208(var_r28->unk_184 >> 1, var_r31); + var_f31 = var_r26->unk_00.unk_6C.x - var_r25->unk_2C.x; + var_f30 = var_r26->unk_00.unk_6C.z - var_r25->unk_2C.z; + if (200.0f < sqrtf((var_f31 * var_f31) + (var_f30 * var_f30))) { + break; + } + } + } + (void)var_r31; + (void)var_r31; + (void)var_r31; +} + +void fn_1_5BAC(UnkM432DllStruct *arg0, omObjData *object, UnkM432DllBss0SubStruct *arg2, UnkM432DllBss0SubStruct *arg3) +{ + Vec sp14; + Vec sp8; + float var_f31; + + var_f31 = arg2->unk_20.y; + if (25.0f <= arg3->unk_38) { + var_f31 -= 400.0f; + } + else { + var_f31 -= 8.0f * arg3->unk_38; + } + if ((arg2->unk_20.y == var_f31) && (0.0f > arg2->unk_2C.y) && (-1.0f < arg2->unk_2C.y)) { + arg2->unk_2C.y = 0.0f; + HuAudFXPlay(0x699); + } + arg2->unk_2C.y += 0.25f * (var_f31 - arg2->unk_2C.y); + if ((arg2->unk_40 < 0) && ((arg2->unk_20.y - 200.0f) > arg2->unk_2C.y)) { + fn_1_52B8_inline(&sp8, arg2->unk_2C.x - 80.0f, arg2->unk_20.y, arg2->unk_2C.z); + fn_1_52B8_inline(&sp14, 80.0f + arg2->unk_2C.x, arg2->unk_20.y, arg2->unk_2C.z); + fn_1_174(lbl_1_bss_404, &lbl_1_data_1814, 4, 4, 2, &sp8, 0); + HuAudFXPlay(0x69A); + } + Hu3DModelPosSet(object->model[arg2->unk_08], arg2->unk_2C.x, arg2->unk_2C.y, arg2->unk_2C.z); + if ((arg2->unk_20.y - 399.0f) > arg2->unk_2C.y) { + arg0->unk_17C++; + arg2->unk_14 = 0; + } +} + +void fn_1_5F2C(UnkM432DllStruct *arg0, UnkM432DllBss0SubStruct *arg1) +{ + float var_f31; + float var_f30; + UnkBss0Struct *var_r28; + s32 var_r25; + s32 var_r22; + char *var_r24; + + if ((arg0->unk_180 == 0x7D3) && !(arg1->unk_2C.y <= arg0->unk_00.unk_6C.y)) { + var_r28 = &lbl_1_bss_0[arg0->unk_184 >> 1]; + var_f31 = arg0->unk_00.unk_6C.x - arg1->unk_2C.x; + var_f30 = arg0->unk_00.unk_6C.z - arg1->unk_2C.z; + if (sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)) < 100.0f) { + arg0->unk_00.unk_3C |= 0x18; + arg0->unk_180 = 0x7D7; + arg0->unk_C4 = NULL; + var_r22 = arg1->unk_1C; + var_r25 = var_r28->unk_1B8; + var_r24 = lbl_1_data_440[5]; + if (arg1->unk_14 & 4) { + var_r25 = var_r28->unk_1BC; + var_r24 = lbl_1_data_4C8[9]; + } + if (var_r22 == var_r25) { + arg1->unk_04 = var_r24; + } + else { + fn_1_5848(arg0, arg1); + } + arg0->unk_C8 = fn_1_5208(arg0->unk_184 >> 1, arg1); + arg0->unk_D4[arg0->unk_FC] = arg1->unk_44 - arg0->unk_17C; + arg0->unk_FC = (arg0->unk_FC + 1) % 10; + } + } +} + +void fn_1_623C(UnkBss0Struct *arg0, s32 arg1, UnkM432DllStruct *arg2, UnkM432DllStruct *arg3) +{ + UnkM432DllBss0SubStruct *sp3C; + float var_f29; + float var_f28; + float var_f27; + float var_f23; + UnkM432DllBss0SubStruct *var_r31; + UnkM432DllStruct *var_r29; + omObjData *var_r28; + s32 var_r26; + s32 var_r19; + + var_f29 = 0.0f; + var_f28 = 0.0f; + var_f27 = 0.0f; + var_r28 = arg0->unk_04; + for (var_r26 = 0; var_r26 < 2; var_r26++) { + var_r29 = fn_1_51A8((var_r26 + (arg1 * 2))); + for (var_r31 = arg0->unk_10[var_r26], var_r19 = 0; var_r19 < 0x1F; var_r19++, var_r31++) { + if (var_r31->unk_14 & 0x600) { + if (1.0f < var_r31->unk_3C) { + var_r31->unk_3C = 1.0f; + } + var_r31->unk_38 = var_r31->unk_38 + var_r31->unk_3C; + var_r31->unk_3C = var_r31->unk_3C - 0.05f; + if (0.0f > var_r31->unk_3C) { + var_r31->unk_3C = 0.0f; + } + if (var_r31->unk_14 & 0x400) { + var_f29 += var_r31->unk_38; + } + if (var_r31->unk_14 & 0x200) { + var_f28 += var_r31->unk_38; + } + } + if (var_r31->unk_14 & 0x800) { + var_f27 += var_r31->unk_38; + } + if (NULL != var_r31->unk_04) { + sp3C = fn_1_5208(arg1, var_r31); + switch (var_r31->unk_14) { + case 3: + break; + case 1: + fn_1_5BAC(var_r29, var_r28, var_r31, sp3C); + break; + case 2: + case 4: + fn_1_5F2C(var_r29, var_r31); + break; + } + } + } + } + arg0->unk_80 = 80.0f + -var_f29; + arg0->unk_84 = 160.0f + -var_f28; + fn_1_5364(arg1, var_r28); + arg0->unk_124 = var_f27; + if (1000.0f <= arg0->unk_124) { + arg0->unk_124 = 1000.0f; + } + var_f23 = lbl_1_bss_0[arg1].unk_124 * (Hu3DMotionMaxTimeGet(var_r28->model[22]) / 1000.0f); + lbl_1_bss_0[arg1].unk_128 += 0.02f * (var_f23 - lbl_1_bss_0[arg1].unk_128); + Hu3DMotionTimeSet(var_r28->model[22], lbl_1_bss_0[arg1].unk_128); + if ((lbl_1_bss_3FC < 0) && (1000.0f <= arg0->unk_124)) { + lbl_1_bss_3FC = arg2->unk_184 & 2; + arg2->unk_17C += 4; + arg3->unk_17C += 4; + } +} + +void fn_1_6D34(UnkBss0Struct *arg0, UnkM432DllStruct *arg1, Vec *arg2) +{ + float var_f31; + float var_f30; + float var_f28; + float var_f27; + s32 var_r31; + + var_f27 = 100000.0f; + for (var_r31 = 0; var_r31 < 8; var_r31++) { + var_f31 = arg1->unk_00.unk_6C.x - arg0->unk_130[var_r31].x; + var_f30 = arg1->unk_00.unk_6C.z - arg0->unk_130[var_r31].z; + var_f28 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (var_f27 > var_f28) { + var_f27 = var_f28; + *arg2 = arg0->unk_130[var_r31]; + } + } +} + +void fn_1_6F28(UnkBss0Struct *arg0) +{ + float var_f31; + float var_f30; + float var_f26; + float var_f23; + + UnkM432DllStruct *var_r30 = arg0->unk_08->data; + + if (arg0->unk_1B4 < 0) { + fn_1_6D34(arg0, var_r30, &arg0->unk_190); + var_r30->unk_00.unk_3C |= 8; + var_r30->unk_180 = 0x7D9; + arg0->unk_190.y = 3000.0f; + arg0->unk_19C = arg0->unk_190; + arg0->unk_1B4 = 0; + Hu3DModelRotSet(arg0->unk_04->model[25], 0.0f, 0.0f, 0.0f); + Hu3DModelAttrReset(arg0->unk_04->model[25], HU3D_ATTR_DISPOFF); + } + switch (arg0->unk_1B4) { + case 0: + fn_1_40C0(&var_r30->unk_00); + var_f23 = var_r30->unk_00.unk_6C.y - arg0->unk_19C.y; + arg0->unk_190.y += 0.03f * var_f23; + if (50.0f > (0.0f > var_f23 ? -var_f23 : var_f23)) { + arg0->unk_1B4++; + arg0->unk_1A8 = arg0->unk_1C0; + arg0->unk_1A8.y += 900.0f; + arg0->unk_1A8.z -= 150.0f; + var_r30->unk_00.unk_6C = arg0->unk_19C; + var_r30->unk_00.unk_9C = 0.0f; + Hu3DMotionShiftSet(arg0->unk_08->model[0], arg0->unk_08->motion[6], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + } + break; + case 1: + if (50.0f > (0.0f > (arg0->unk_1A8.y - arg0->unk_190.y) ? -(arg0->unk_1A8.y - arg0->unk_190.y) : arg0->unk_1A8.y - arg0->unk_190.y)) { + arg0->unk_1B4++; + } + break; + case 2: + arg0->unk_1A8.y += 0.1f * (((900.0f + arg0->unk_1C0.y) - 200.0f) - arg0->unk_1A8.y); + if (((900.0f + arg0->unk_1C0.y) - 190.0f) > arg0->unk_1A8.y) { + arg0->unk_1B4++; + var_r30->unk_16C = 1; + var_r30->unk_180 = 0x7D3; + fn_1_4ED8(&var_r30->unk_00, 0); + var_r30->unk_00.unk_3C |= 0x210; + if (NULL != arg0->unk_0C) { + arg0->unk_1B4 = 4; + arg0->unk_08 = arg0->unk_0C; + var_r30 = arg0->unk_08->data; + fn_1_6D34(arg0, var_r30, &arg0->unk_1A8); + var_r30->unk_00.unk_3C |= 8; + var_r30->unk_180 = 0x7D9; + } + } + break; + case 3: + arg0->unk_1A8.y += 10.0f; + if ((2000.0f + arg0->unk_1C0.y) < arg0->unk_1A8.y) { + arg0->unk_08 = NULL; + Hu3DModelAttrSet(arg0->unk_04->model[25], HU3D_ATTR_DISPOFF); + return; + } + break; + case 4: + fn_1_40C0(&var_r30->unk_00); + var_f31 = arg0->unk_1A8.x - arg0->unk_190.x; + var_f30 = arg0->unk_1A8.z - arg0->unk_190.z; + arg0->unk_190.x += 0.05f * var_f31; + arg0->unk_190.y += 0.01f * (arg0->unk_1A8.y - arg0->unk_190.y); + arg0->unk_190.z += 0.05f * var_f30; + if (20.0f > sqrtf((var_f31 * var_f31) + (var_f30 * var_f30))) { + arg0->unk_19C = arg0->unk_190; + arg0->unk_1B4 = 0; + } + break; + } + if ((arg0->unk_1B4 > 0) && (arg0->unk_1B4 < 4)) { + if (arg0->unk_1B4 < 3) { + var_r30->unk_00.unk_6C = arg0->unk_19C; + fn_1_2DD4(&var_r30->unk_00); + } + var_f23 = 0.03f * (arg0->unk_1A8.y - arg0->unk_190.y); + arg0->unk_190.y += var_f23; + if (arg0->unk_1C0.y < arg0->unk_190.y) { + var_f26 = (arg0->unk_1A8.y - arg0->unk_190.y) / 900.0f; + if (0.1f > var_f26) { + var_f26 = 0.1f; + } + if (1.0f < var_f26) { + var_f26 = 1.0f; + } + var_f26 = 1.0f - var_f26; + arg0->unk_190.x += 0.03f * var_f26 * (arg0->unk_1A8.x - arg0->unk_190.x); + arg0->unk_190.z += 0.03f * var_f26 * (arg0->unk_1A8.z - arg0->unk_190.z); + } + } + Hu3DModelPosSet(arg0->unk_04->model[25], arg0->unk_190.x, arg0->unk_190.y, arg0->unk_190.z); + fn_1_1D18(arg0->unk_04->model[25], "g008m2_000-itemhook_sao", &arg0->unk_19C); +} + +void fn_1_7C1C(UnkBss0Struct *var_r31, UnkM432DllStruct *var_r30, UnkM432DllStruct *var_r29) +{ + float var_f31; + float var_f30; + + if ((var_r31->unk_7C == 0.0f) && ((0.0f < var_r31->unk_70) || (0.0f > var_r31->unk_74))) { + if (0.0f < var_r31->unk_70) { + var_r31->unk_28.y += 0.05f * (var_r31->unk_70 - var_r31->unk_28.y); + if (2.0f + > (0.0f > (var_r31->unk_70 - var_r31->unk_28.y) ? -(var_r31->unk_70 - var_r31->unk_28.y) : var_r31->unk_70 - var_r31->unk_28.y)) { + var_r31->unk_28.y = var_r31->unk_70; + var_r31->unk_70 = 0.0f; + } + } + if (0.0f > var_r31->unk_74) { + var_r31->unk_28.z += 0.05f * (var_r31->unk_74 - var_r31->unk_28.z); + if (2.0f + > (0.0f > (var_r31->unk_74 - var_r31->unk_28.z) ? -(var_r31->unk_74 - var_r31->unk_28.z) : var_r31->unk_74 - var_r31->unk_28.z)) { + var_r31->unk_28.z = var_r31->unk_74; + var_r31->unk_74 = 0.0f; + } + } + } + else { + var_f30 = var_r31->unk_1EC / var_r31->unk_1E8; + if (265.0f > var_f30) { + var_f31 = 0.2f * (265.0f - var_f30); + if (1.0f <= (0.0f > var_f31 ? -var_f31 : var_f31)) { + var_r31->unk_28.z -= var_f31; + } + } + switch (var_r31->unk_18) { + case 0: + if ((-7100.0f > var_r31->unk_28.z) && ((-7750.0f < var_r31->unk_1F0[0]) || (-7750.0f < var_r31->unk_1F0[1]))) { + var_r31->unk_28.z = -7100.0f; + } + if ((-7750.0f >= var_r31->unk_1F0[0]) && (-7750.0f >= var_r31->unk_1F0[1])) { + var_r31->unk_18++; + var_r31->unk_74 = -8700.0f; + var_r30->unk_17C += 3; + var_r30->unk_15C = -7750.0f; + var_r29->unk_17C += 3; + var_r29->unk_15C = -7750.0f; + fn_1_1D18(var_r31->unk_04->model[3], "m432_00-n1", &var_r31->unk_1C0); + return; + } + break; + case 1: + if ((-9500.0f > var_r31->unk_28.z) && ((-10200.0f < var_r31->unk_1F0[0]) || (-10200.0f < var_r31->unk_1F0[1]))) { + var_r31->unk_28.z = -9500.0f; + } + if ((-10200.0f >= var_r31->unk_1F0[0]) && (-10200.0f >= var_r31->unk_1F0[1])) { + var_r31->unk_18++; + var_r31->unk_74 = -11100.0f; + var_r30->unk_17C += 3; + var_r30->unk_15C = -10200.0f; + var_r29->unk_17C += 3; + var_r29->unk_15C = -10200.0f; + return; + } + break; + case 2: + if ((-11500.0f > var_r31->unk_28.z) && ((-12300.0f < var_r31->unk_1F0[0]) || (-12300.0f < var_r31->unk_1F0[1]))) { + var_r31->unk_28.z = -11500.0f; + } + if ((NULL != var_r30->unk_C8) && (var_r30->unk_C8->unk_14 & 8) && (NULL != var_r29->unk_C8) && ((var_r29->unk_C8->unk_14 & 8) != 0) + && (var_r30->unk_00.unk_38 == 0) && (var_r29->unk_00.unk_38 == 0)) { + var_r31->unk_18++; + var_r31->unk_1E4 = var_r30->unk_C8->unk_2C.y; + var_r31->unk_74 = -13500.0f; + var_r31->unk_70 = var_r30->unk_C8->unk_2C.y; + var_r30->unk_17C += 6; + var_r29->unk_17C += 6; + return; + } + break; + case 3: + if ((-13700.0f > var_r31->unk_28.z) && ((-14400.0f < var_r31->unk_1F0[0]) || (-14400.0f < var_r31->unk_1F0[1]))) { + var_r31->unk_28.z = -13700.0f; + } + if ((NULL != var_r30->unk_C8) && (var_r30->unk_C8->unk_14 & 0x10) && (NULL != var_r29->unk_C8) && (var_r29->unk_C8->unk_14 & 0x10) + && (var_r30->unk_00.unk_38 == 0) && (var_r29->unk_00.unk_38 == 0)) { + var_r31->unk_18++; + var_r31->unk_1E4 = var_r30->unk_C8->unk_2C.y; + var_r31->unk_74 = -15700.0f; + var_r31->unk_78 = 0.0f; + var_r31->unk_7C = 120.0f; + var_r31->unk_4C = var_r31->unk_28; + var_r31->unk_34 = var_r31->unk_1C; + var_r31->unk_58.x = var_r31->unk_28.x; + var_r31->unk_58.y = 400.0f + var_r30->unk_C8->unk_2C.y; + var_r31->unk_58.z = -15700.0f; + var_r31->unk_40 = var_r31->unk_58; + var_r31->unk_40.y = 800.0f + var_r30->unk_C8->unk_2C.y; + var_r31->unk_40.z += 3800.0f; + var_r30->unk_17C += 0xA; + var_r30->unk_148 = 0.0f; + fn_1_52B8(&lbl_1_bss_0[var_r30->unk_184 >> 1].unk_10[var_r30->unk_184 & 1][0x1B], &var_r30->unk_13C); + var_r29->unk_17C += 0xA; + var_r29->unk_148 = 0.0f; + fn_1_52B8(&lbl_1_bss_0[var_r29->unk_184 >> 1].unk_10[var_r29->unk_184 & 1][0x1B], &var_r29->unk_13C); + } + break; + } + } +} + +s32 fn_1_8540(UnkM432DllStruct *arg0) +{ + if (arg0->unk_17C >= 0x1F) { + return -1; + } + if (arg0->unk_17C >= 0x1B) { + return 3; + } + if (arg0->unk_17C >= 0xB) { + return 2; + } + if (arg0->unk_17C >= 5) { + return 1; + } + if (arg0->unk_17C >= 1) { + return 0; + } + return -1; +} + +UnkM432DllBss0SubStruct *fn_1_85AC(UnkM432DllStruct *arg0, UnkBss0Struct *arg1) +{ + UnkM432DllBss0SubStruct *var_r31 = arg1->unk_10[arg0->unk_184 & 1]; + s32 var_r30; + for (var_r30 = 0; var_r30 < 0x1F; var_r30++, var_r31++) { + if ((arg0->unk_17C <= var_r30) && (var_r31->unk_14 & 0xF00)) { + return var_r31; + } + } + return NULL; +} + +float fn_1_861C(UnkM432DllStruct *arg0, UnkBss0Struct *arg1, Vec *arg2) +{ + float var_f31; + float var_f30; + float var_f27; + float var_f28; + s32 var_r31; + + var_f28 = 100000.0f; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_f31 = arg0->unk_00.unk_6C.x - arg1->unk_88[var_r31][1].x; + var_f30 = arg0->unk_00.unk_6C.z - arg1->unk_88[var_r31][1].z; + var_f27 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (var_f28 > var_f27) { + var_f28 = var_f27; + *arg2 = arg1->unk_88[var_r31][1]; + } + } + return var_f28; +} + +void fn_1_8814(UnkM432DllStruct *arg0, s32 arg1, Vec *arg2) +{ + float var_f31; + float var_f30; + float var_f28; + float var_f27; + + var_f27 = 72.0f * arg0->unk_CC->unk_04; + var_f31 = arg2->x - arg0->unk_00.unk_6C.x; + var_f30 = arg2->z - arg0->unk_00.unk_6C.z; + var_f31 *= 4.0f; + var_f30 *= 4.0f; + var_f28 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (var_f27 < var_f28) { + var_f31 = var_f27 * (var_f31 / var_f28); + var_f30 = var_f27 * (var_f30 / var_f28); + } + arg0->unk_00.unk_20 = var_f31; + arg0->unk_00.unk_24 = -var_f30; +} + +void fn_1_8A14(UnkM432DllStruct *arg0, s32 arg1, UnkM432DllBss0SubStruct *arg2) +{ + Vec spC; + + if (NULL != arg2) { + spC = arg2->unk_2C; + if (arg2->unk_14 & 0xF00) { + fn_1_52B8(arg2, &spC); + } + fn_1_8814(arg0, 0, &spC); + } +} + +UnkM432DllBss0SubStruct *fn_1_8CB4(UnkM432DllStruct *arg0, UnkM432DllStruct *arg1, UnkBss0Struct *arg2) +{ + s32 var_r30; + UnkM432DllBss0SubStruct *var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r21; + s32 var_r20; + s32 var_r19; + + var_r29 = NULL; + if (arg0->unk_17C < 0x1F) { + var_r29 = &arg2->unk_10[arg0->unk_184 & 1][arg0->unk_17C]; + } + if (NULL == var_r29) { + return NULL; + } + if (var_r29->unk_14 & 2) { + var_r28 = 5; + var_r27 = arg2->unk_1B8; + var_r26 = 0; + var_r25 = 5; + } + else { + var_r28 = 9; + var_r27 = arg2->unk_1BC; + var_r26 = 0; + var_r25 = 9; + if (-14100.0f < arg0->unk_00.unk_6C.z) { + var_r26 = 3; + var_r25 = 9; + } + if (-13700.0f < arg0->unk_00.unk_6C.z) { + var_r26 = 0; + var_r25 = 6; + } + if (-13300.0f < arg0->unk_00.unk_6C.z) { + var_r26 = 0; + var_r25 = 3; + } + } + var_r30 = frandmod(var_r28); + for (var_r21 = 0; var_r21 < var_r28; var_r21++) { + var_r30 = (var_r30 + 1) % var_r28; + if ((var_r26 <= var_r30) && (var_r25 > var_r30) + && ((arg0->unk_100 != 0) || ((var_r27 != var_r30) && (((var_r29->unk_14 & 4) == 0) || (var_r30 <= 3))))) { + var_r24 = arg0->unk_FC; + var_r19 = 0; + for (var_r20 = 0; var_r20 < arg0->unk_CC->unk_18; var_r20++) { + var_r24--; + if (var_r24 < 0) { + var_r24 += 0xA; + } + if (var_r30 == arg0->unk_D4[var_r24]) { + var_r19 = 1; + } + } + if (var_r19 == 0) { + break; + } + } + } + if ((var_r21 == var_r28) || (var_r27 == var_r30)) { + var_r30 = frandmod(var_r28); + while (var_r30 == var_r27) { + var_r30 = (var_r30 + 1) % var_r28; + } + } + if (arg0->unk_CC->unk_1C < arg0->unk_100) { + var_r30 = var_r27; + } + if (NULL != arg1->unk_C8) { + if (var_r29->unk_14 & 2) { + if (arg1->unk_C8->unk_14 & 8) { + var_r30 = var_r27; + } + } + else if (arg1->unk_C8->unk_14 & 0x10) { + var_r30 = var_r27; + } + } + arg0->unk_100++; + (void)var_r26; + (void)var_r25; + return &var_r29[var_r30]; +} + +void fn_1_8F3C(UnkM432DllStruct *arg0, UnkBss0Struct *arg1, UnkM432DllBss0SubStruct *arg2, Vec *arg3) +{ + *arg3 = arg2->unk_2C; + if (arg0->unk_00.unk_48 >= 0x14) { + if (-12200.0f < arg0->unk_00.unk_6C.z) { + arg3->x = arg1->unk_28.x; + } + else if ((-13300.0f < arg0->unk_00.unk_6C.z) && (-13400.0f > arg2->unk_2C.z)) { + arg3->x = arg1->unk_28.x - 500.0f; + } + else if ((-13700.0f < arg0->unk_00.unk_6C.z) && (-13800.0f > arg2->unk_2C.z)) { + arg3->x = 500.0f + arg1->unk_28.x; + } + else if ((-13500.0f > arg0->unk_00.unk_6C.z) && (-13400.0f < arg2->unk_2C.z)) { + arg3->x = 500.0f + arg1->unk_28.x; + return; + } + } +} + +void fn_1_906C(UnkM432DllStruct *var_r31, UnkM432DllBss0SubStruct *var_r27) +{ + float var_f31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r30 = 0; + var_r29 = 0; + var_r28 = 0; + switch (var_r27->unk_14 & 0xF00) { + case 0x100: + var_r30 = 0x200; + var_r29 = 0x200; + break; + case 0x400: + var_r30 = 0x800; + var_r29 = 0x800; + var_r28 = 1; + break; + case 0x200: + var_r30 = 0x400; + var_r29 = 0x400; + var_r28 = 1; + break; + case 0x800: + if ((var_r31->unk_CC->unk_14 >= var_r31->unk_154) && (var_r31->unk_CC->unk_10 > var_r31->unk_158)) { + var_r31->unk_00.unk_34 = 0x96; + } + else if ((var_r31->unk_CC->unk_10 <= var_r31->unk_154) && (var_r31->unk_CC->unk_14 >= var_r31->unk_158)) { + var_r31->unk_00.unk_34 = 0x96; + } + else { + var_r31->unk_00.unk_30 = 0x96; + } + if (var_r31->unk_CC->unk_0C < frandf()) { + var_r31->unk_104 *= 0.99f; + } + if (var_r31->unk_CC->unk_00 > lbl_1_bss_57C) { + var_r31->unk_104 *= 0.99f; + } + else { + var_r31->unk_104 *= 1.01f; + } + if (0.5f > var_r31->unk_104) { + var_r31->unk_104 = 0.5f; + } + if (1.0f < var_r31->unk_104) { + var_r31->unk_104 = 1.0f; + } + var_r31->unk_00.unk_30 = var_r31->unk_00.unk_30 * var_r31->unk_104; + var_r31->unk_00.unk_34 = var_r31->unk_00.unk_34 * var_r31->unk_104; + break; + } + var_r31->unk_108 -= 1.0f; + if (0.0f > var_r31->unk_108) { + var_f31 = var_r31->unk_CC->unk_08; + if ((var_r28 != 0) && (GWPlayerCfg[var_r31->unk_188].diff == 3)) { + var_f31 = lbl_1_data_17D4.unk_08; + } + var_r31->unk_108 = var_f31 * (0.9f + (frandf() / 2)); + var_r31->unk_00.unk_28 |= var_r30; + var_r31->unk_00.unk_2C |= var_r29; + } +} + +void fn_1_93BC(UnkM432DllStruct *arg0) +{ + Vec spF8; + float spD0; + + float var_f31; + float var_f30; + + UnkM432DllBss0SubStruct *var_r30; + UnkBss0Struct *var_r29; + UnkM432DllBss0SubStruct *var_r28; + UnkM432DllStruct *var_r27; + s32 var_r20; + + if (NULL != arg0->unk_CC) { + var_r27 = fn_1_51A8(arg0->unk_184 ^ 1); + var_r29 = &lbl_1_bss_0[arg0->unk_184 >> 1]; + var_r20 = 1; + switch (fn_1_8540(arg0)) { + case 0: + var_r30 = fn_1_85AC(arg0, var_r29); + fn_1_8A14(arg0, 0, var_r30); + break; + case 1: + var_r28 = fn_1_85AC(arg0, var_r29); + if (NULL != var_r28) { + var_r30 = var_r28; + if (((NULL == arg0->unk_C8) && (NULL != var_r27->unk_C8)) || ((var_r28->unk_2C.z - 400.0f) > arg0->unk_00.unk_6C.z)) { + var_r30++; + } + else if ((var_r28->unk_2C.z - 1350.0f) > var_r27->unk_00.unk_6C.z) { + var_r30++; + var_r20 = 0; + } + if ((1400.0f < (var_r28->unk_2C.z - arg0->unk_00.unk_6C.z)) && (1400.0f < (var_r28->unk_2C.z - var_r27->unk_00.unk_6C.z))) { + var_r20 = 0; + arg0->unk_00.unk_24 = 0x48; + } + else { + if (((var_r28->unk_2C.z - 175.0f) > arg0->unk_00.unk_6C.z) && ((var_r28->unk_2C.z - 1350.0f) < arg0->unk_00.unk_6C.z)) { + if (((var_r29->unk_28.x - 20.0f) < arg0->unk_00.unk_6C.x) && ((20.0f + var_r29->unk_28.x) > arg0->unk_00.unk_6C.x) + && ((var_r28->unk_2C.z - 1000.0f) > arg0->unk_00.unk_6C.z)) { + arg0->unk_00.unk_24 = 0x48; + } + if ((var_r28->unk_2C.z - 1100.0f) > arg0->unk_00.unk_6C.z) { + arg0->unk_00.unk_28 |= 0x100; + arg0->unk_00.unk_2C |= 0x100; + fn_1_8A14(arg0, 0, var_r30); + } + else { + spD0 = fn_1_861C(arg0, var_r29, &spF8); + if ((arg0->unk_00.unk_BC < spD0) && (400.0f > spD0)) { + arg0->unk_00.unk_28 |= 0x100; + arg0->unk_00.unk_2C |= 0x100; + fn_1_8814(arg0, 0, &spF8); + } + } + } + else { + fn_1_8A14(arg0, 0, var_r30); + } + if (((var_r28->unk_2C.z - 175.0f) < arg0->unk_00.unk_6C.z) && (arg0->unk_00.unk_A8 < arg0->unk_00.unk_6C.y)) { + arg0->unk_00.unk_20 = 0; + arg0->unk_00.unk_24 = 0; + } + } + } + break; + case 2: + var_r20 = 0; + arg0->unk_10C -= 1.0f; + if (NULL == arg0->unk_D0) { + arg0->unk_D0 = fn_1_8CB4(arg0, var_r27, var_r29); + } + if (arg0->unk_10C == 1.0f) { + arg0->unk_D0 = fn_1_8CB4(arg0, var_r27, var_r29); + } + if (NULL != arg0->unk_D0) { + fn_1_8F3C(arg0, var_r29, arg0->unk_D0, &spF8); + fn_1_8814(arg0, 0, &spF8); + if (arg0->unk_00.unk_3C & 1) { + arg0->unk_10C = 20.0f + (20.0f * (arg0->unk_184 & 1)); + } + var_f31 = arg0->unk_00.unk_6C.x - arg0->unk_D0->unk_2C.x; + var_f30 = arg0->unk_00.unk_6C.z - arg0->unk_D0->unk_2C.z; + spD0 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if ((200.0f > spD0) || (arg0->unk_00.unk_4C > 0x14) || (arg0->unk_00.unk_48 > 0xC8)) { + arg0->unk_00.unk_28 |= 0x100; + arg0->unk_00.unk_2C |= 0x100; + } + if (50.0f > spD0) { + arg0->unk_00.unk_20 = 0; + arg0->unk_00.unk_24 = 0; + } + if (0.0f < arg0->unk_10C) { + arg0->unk_00.unk_20 = 0; + arg0->unk_00.unk_24 = 0; + arg0->unk_00.unk_28 &= 0xFFFFFEFF; + arg0->unk_00.unk_2C &= 0xFFFFFEFF; + } + } + break; + case 3: + var_r30 = fn_1_85AC(arg0, var_r29); + break; + } + if ((var_r20 != 0) && (NULL != var_r30)) { + fn_1_906C(arg0, var_r30); + } + } +} + +float fn_1_A974(UnkM432DllStruct *var_r31) +{ + Vec sp14; + Vec sp8; + + sp14 = var_r31->unk_00.unk_6C; + sp14.y = lbl_1_bss_0[var_r31->unk_184 >> 1].unk_28.y; + Hu3D3Dto2D(&sp14, lbl_1_data_A0[var_r31->unk_184 >> 1], &sp8); + return sp8.y; +} + +WorkPlayerOld *fn_1_AA00(int no) +{ + return &((UnkM432DllStruct *)lbl_1_bss_410[no]->data)->unk_00; +} + +void fn_1_AA1C(omObjData *object) +{ + float var_f31; + UnkM432DllStruct *var_r31; + UnkM432DllBss0SubStruct *var_r30; + s32 var_r29; + + var_r31 = object->data; + var_f31 = lbl_1_bss_0[var_r31->unk_184 >> 1].unk_28.z - 750.0f; + if (var_f31 > var_r31->unk_00.unk_6C.z) { + var_r31->unk_00.unk_6C.z = var_f31; + } + var_f31 = 900.0f + lbl_1_bss_0[var_r31->unk_184 >> 1].unk_28.z; + if (var_f31 < var_r31->unk_00.unk_6C.z) { + var_r31->unk_00.unk_6C.z = var_f31; + } + if (var_r31->unk_15C < var_r31->unk_00.unk_6C.z) { + var_r31->unk_00.unk_6C.z = var_r31->unk_15C; + } + var_r30 = lbl_1_bss_0[var_r31->unk_184 >> 1].unk_10[var_r31->unk_184 & 1]; + if ((var_r31->unk_184 & 1) != 0) { + lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1E0 = 0.0f; + } + for (var_r29 = 0; var_r29 < 0x1F; var_r29++, var_r30++) { + if ((var_r31->unk_17C <= var_r29) && ((var_r30->unk_14 & 1) != 0)) { + var_f31 = 170.0f + var_r30->unk_2C.z; + if (var_f31 > var_r31->unk_00.unk_6C.z) { + var_r31->unk_00.unk_6C.z = var_f31; + } + if ((var_r31->unk_184 & 1) && (lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1E0 > (var_r30->unk_2C.z - 170.0f))) { + lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1E0 = var_r30->unk_2C.z - 170.0f; + } + } + } + if (((var_r31->unk_184 & 1) == 0) && (lbl_1_bss_0[var_r31->unk_184 >> 1].unk_28.x < var_r31->unk_00.unk_6C.x) + && (0.0f > lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1E0) && (lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1E0 < var_r31->unk_00.unk_6C.z)) { + var_r31->unk_00.unk_6C.z = lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1E0; + } +} + +Vec *fn_1_ACC8(omObjData *object) +{ + float var_f31; + float var_f30; + float var_f27; + + UnkM432DllStruct *var_r31; + UnkBss0Struct *var_r30; + s32 var_r29; + UnkM432DllStruct *var_r28; + + var_r28 = object->data; + var_r31 = var_r28; + var_r30 = &lbl_1_bss_0[var_r28->unk_184 >> 1]; + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if ((var_r31->unk_00.unk_6C.y <= var_r30->unk_88[var_r29][1].y) + && ((var_r31->unk_00.unk_6C.y + (var_r31->unk_00.unk_BC / 2)) >= var_r30->unk_88[var_r29][1].y)) { + var_f31 = var_r31->unk_00.unk_6C.x - var_r30->unk_88[var_r29][1].x; + var_f30 = var_r31->unk_00.unk_6C.z - var_r30->unk_88[var_r29][1].z; + var_f27 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (var_f27 < (var_r31->unk_00.unk_BC + var_r30->unk_88[var_r29][2].y)) { + return &var_r30->unk_88[var_r29][0]; + } + } + } + return NULL; +} + +void fn_1_AF28(omObjData *object) +{ + UnkM432DllStruct *var_r31 = object->data; + var_r31->unk_16C = 0; + var_r31->unk_00.unk_3C &= 0xFFFFFFEF; + fn_1_4ED8(&var_r31->unk_00, 0); +} + +#include "src/REL/executor.c" + +void fn_1_B234(void) +{ + UnkM432DllStruct *var_r31; + s32 var_r30; + u32 var_r29; + u32 var_r28; + + if (HuPadBtn[0] & 2) { + lbl_1_bss_57C = 0x4650; + } + print8(0x18, 0x20, 1.5f, "COUNT:%d MODE:%d MES:%d", lbl_1_bss_580, lbl_1_bss_41C->work[0], lbl_1_bss_576); + print8(0x18, 0x30, 1.5f, "%f %f %f %f", lbl_1_bss_0[0].unk_64, lbl_1_bss_0[0].unk_68, lbl_1_bss_0[0].unk_6C, lbl_1_bss_0[0].unk_28.z); + print8(0x18, 0x40, 1.5f, "%f %f %f %f", lbl_1_bss_0[1].unk_64, lbl_1_bss_0[1].unk_68, lbl_1_bss_0[1].unk_6C, lbl_1_bss_0[0].unk_28.z); + print8(0x18, 0x50, 1.5f, "%x %x", HuMemHeapSizeGet(HEAP_SYSTEM) - HuMemUsedMallocSizeGet(HEAP_SYSTEM), + HuMemHeapSizeGet(HEAP_DATA) - HuMemUsedMallocSizeGet(HEAP_DATA)); + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r31 = lbl_1_bss_410[var_r30]->data; + print8(0x18, (var_r30 * 0x10) + 0x70, 1.5f, "%d %d %04x %.3f (%.3f %.3f %.3f)", var_r31->unk_180, var_r31->unk_00.unk_38, + var_r31->unk_00.unk_3C, var_r31->unk_00.unk_A8, var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, var_r31->unk_00.unk_6C.z); + } +} + +void fn_1_B458(omObjData *object) +{ + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + fn_1_24(0x1000, object->model[0]); + omDelObjEx(lbl_1_bss_5B4, object); + lbl_1_bss_402--; +} + +void fn_1_B518(omObjData *object) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + + UnkM432DllStruct2 *var_r31; + + var_r31 = object->data; + var_r31->unk_10 += 1.0f; + if (30.0f <= var_r31->unk_10) { + fn_1_B458(object); + return; + } + if (10.0f > var_r31->unk_10) { + var_f31 = var_r31->unk_10 / 10.0f; + var_f30 = 0.0f; + } + else { + var_f31 = 1.0f; + var_f30 = (var_r31->unk_10 - 10.0f) / 20.0f; + } + var_f29 = sind((90.0f * var_f31)) * sind((90.0f * var_f31)); + var_f28 = sind((90.0f * var_f30)) * sind((90.0f * var_f30)); + omSetTra(object, var_r31->unk_00.x + (var_r31->unk_14 * var_f29), var_r31->unk_00.y, var_r31->unk_00.z + (var_r31->unk_18 * var_f28)); +} + +void fn_1_B7E4(omObjData *object) +{ + UnkM432DllStruct2 *var_r30; + UnkBss5D0Struct *var_r29; + UnkBss5D0Struct *var_r28; + UnkBss5D0Struct *var_r27; + s16 var_r26; + s16 var_r25; + s16 var_r24; + + var_r26 = fn_1_AC(0x1000); + if (var_r26 < 0) { + object->model[0] = Hu3DModelLink(lbl_1_bss_400); + } + else { + object->model[0] = var_r26; + } + var_r30 = object->data; + var_r30->unk_10 = 0.0f; + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(object->model[0], 3); + omSetTra(object, var_r30->unk_00.x, var_r30->unk_00.y, var_r30->unk_00.z); + omSetRot(object, 0.0f, 0.0f, 0.0f); + omSetSca(object, var_r30->unk_0C, var_r30->unk_0C, var_r30->unk_0C); + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + object->func = fn_1_B518; +} + +void fn_1_B974(Vec *arg0, float arg8, float arg9) +{ + UnkM432DllStruct2 *var_r31; + omObjData *var_r30; + + if (lbl_1_bss_402 < 0xF0) { + lbl_1_bss_402++; + var_r30 = omAddObjEx(lbl_1_bss_5B4, 0x67, 1, 0, 3, fn_1_B7E4); + var_r30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM432DllStruct2), 0x10000000); + var_r31 = var_r30->data; + var_r31->unk_00 = *arg0; + var_r31->unk_00.x += 30.0f * arg9; + var_r31->unk_0C = 1.0f + arg8; + var_r31->unk_14 = 70.0f * arg9; + var_r31->unk_18 = -675.0f; + } +} + +void fn_1_BAA8(UnkM432DllStruct *arg0) +{ + Vec sp20; + Vec sp14; + float var_f31; + float var_f30; + + s32 *var_r29; + s32 var_r27; + + sp20 = arg0->unk_00.unk_6C; + sp20.y += 220.0f; + fn_1_1A60(&sp20, lbl_1_data_A0[arg0->unk_184 >> 1], &sp14); + + arg0->unk_110 = sp14.x; + arg0->unk_114 = sp14.y; + if (NULL != arg0->unk_C4) { + var_f31 = 0.0f; + var_f30 = 0.0f; + for (var_r29 = arg0->unk_C4, var_r27 = 1; var_r29[0] >= 0; var_r29 += 3) { + espPosSet(arg0->unk_118[var_r29[0]], var_r29[1] + (arg0->unk_110 + var_f31), var_r29[2] + (arg0->unk_114 + var_f30)); + espDispOn(arg0->unk_118[var_r29[0]]); + if (var_r27 != 0) { + var_r27 = 0; + var_f31 = var_r29[1]; + var_f30 = var_r29[2]; + } + } + } +} + +s32 fn_1_BF08(UnkM432DllStruct *arg0) +{ + switch (arg0->unk_C8->unk_14 & 0xF00) { + case 0x100: + if (arg0->unk_00.unk_28 & 0x200) { + return 0x7D4; + } + break; + case 0x400: + if (arg0->unk_00.unk_28 & 0x800) { + return 0x7D5; + } + break; + case 0x200: + if (arg0->unk_00.unk_28 & 0x400) { + return 0x7D5; + } + break; + case 0x800: + return 0x7D6; + } + return 0x7D3; +} + +void fn_1_BF9C(UnkM432DllStruct *arg0) +{ + Vec spC; + float var_f31; + float var_f30; + float var_f26; + + UnkM432DllStruct *var_r31; + + var_r31 = arg0; + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 180.0f + arg0->unk_C8->unk_18, 0.4f); + fn_1_52B8(arg0->unk_C8, &spC); + var_f31 = spC.x - var_r31->unk_00.unk_6C.x; + var_f30 = spC.z - var_r31->unk_00.unk_6C.z; + var_f26 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (10.0f <= var_f26) { + var_f31 = 10.0f * (var_f31 / var_f26); + var_f30 = 10.0f * (var_f30 / var_f26); + } + var_r31->unk_00.unk_6C.x += var_f31; + var_r31->unk_00.unk_6C.z += var_f30; +} + +void fn_1_C33C(UnkM432DllStruct *arg0) +{ + Vec spC; + float sp8; + float var_f31; + float var_f30; + float var_f27; + UnkM432DllBss0SubStruct *var_r30; + s32 var_r29; + s32 *var_r28; + UnkM432DllStruct *var_r27; + + var_r28 = NULL; + if (arg0->unk_00.unk_38 == 0) { + for (var_r30 = lbl_1_bss_0[arg0->unk_184 >> 1].unk_10[arg0->unk_184 & 1], var_r29 = 0; var_r29 < 0x1F; var_r29++, var_r30++) + if ((arg0->unk_17C <= var_r29) && (var_r30->unk_14 & 0xF00) && (((var_r30->unk_14 & 0x700) == 0) || !(20.0f < arg0->unk_00.unk_6C.y))) { + fn_1_52B8(var_r30, &spC); + var_f31 = spC.x - arg0->unk_00.unk_6C.x; + var_f30 = spC.z - arg0->unk_00.unk_6C.z; + var_f27 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (arg0->unk_00.unk_BC > var_f27) { + var_r27 = fn_1_51A8(arg0->unk_184 ^ 1); + if ((NULL == var_r27->unk_C8) || (var_r30->unk_08 != var_r27->unk_C8->unk_08)) { + arg0->unk_C8 = var_r30; + switch (var_r30->unk_14 & 0xF00) { + case 0x100: + var_r28 = lbl_1_data_2AC; + break; + case 0x200: + var_r28 = lbl_1_data_2D0; + break; + case 0x400: + var_r28 = lbl_1_data_2F4; + break; + case 0x800: + var_r28 = lbl_1_data_318; + break; + } + break; + } + } + } + } + + if (arg0->unk_C4 != var_r28) { + arg0->unk_C4 = var_r28; + if (NULL == var_r28) { + arg0->unk_C8 = NULL; + } + for (var_r29 = 0; var_r29 < 9; var_r29++) { + espDispOff(arg0->unk_118[var_r29]); + } + } +} + +void fn_1_C724(UnkM432DllStruct *var_r31, omObjData *var_r25, omObjData *var_r24) +{ + Vec spC; + float var_f25; + + UnkBss0Struct *var_r30; + UnkM432DllStruct *var_r29; + s32 var_r28; + void *var_r27; + s32 var_r26; + float var_f19; + + var_r30 = &lbl_1_bss_0[var_r31->unk_184 >> 1]; + fn_1_BF9C(var_r31); + if (fn_1_BF08(var_r31) == 0x7D4) { + var_r30->unk_1D4 += 1.0f - (2.0f * (var_r31->unk_14C / 60.0f)); + if (0.0f > var_r30->unk_1D4) { + var_r30->unk_1D4 = 0.0f; + } + if (1.0f < var_r30->unk_1D4) { + var_r30->unk_1D4 = 1.0f; + } + var_r31->unk_14C = 0.0f; + if (25.0f <= (var_r31->unk_C8->unk_38 += 1.0f)) { + var_r31->unk_C8->unk_38 = 25.0f; + } + omVibrate(var_r31->unk_188, 0xC, 6, 6); + } + else { + var_r31->unk_14C += 1.0f; + var_r30->unk_1D4 -= 0.016666668f; + if (0.0f > var_r30->unk_1D4) { + var_r30->unk_1D4 = 0.0f; + } + if (20.0f <= var_r31->unk_14C) { + var_r31->unk_14C = 0.0f; + if (0.0f >= (var_r31->unk_C8->unk_38 -= 1.0f)) { + var_r31->unk_C8->unk_38 = 0.0f; + } + } + } + HuAudFXPitchSet(var_r30->unk_1CC, (s32)(8191.0f * var_r30->unk_1D4)); + HuAudFXPitchSet(var_r30->unk_1D0, (s32)(8191.0f * (1.0f - (var_r31->unk_C8->unk_38 / 25.0f)))); + if (Hu3DMotionShiftIDGet(var_r25->model[0]) < 0) { + var_f25 = var_r31->unk_C8->unk_38 * (Hu3DMotionMaxTimeGet(var_r25->model[0]) / 25.0f); + Hu3DMotionTimeSet(var_r25->model[0], var_f25); + var_f25 = var_r31->unk_C8->unk_38 * (Hu3DMotionMaxTimeGet((var_r24->model[var_r31->unk_C8->unk_08])) / 25.0f); + Hu3DMotionTimeSet(var_r24->model[var_r31->unk_C8->unk_08], var_f25); + } + if ((25.0f <= var_r31->unk_C8->unk_38) || (var_r31->unk_C8->unk_38 == 0.0f)) { + if (25.0f <= var_r31->unk_C8->unk_38) { + var_r31->unk_17C++; + } + var_r31->unk_180 = 0x7D3; + fn_1_4ED8(&var_r31->unk_00, 0); + HuAudFXStop(var_r30->unk_1CC); + HuAudFXStop(var_r30->unk_1D0); + var_r30->unk_1CC = -1; + var_r30->unk_1D0 = -1; + } +} + +void fn_1_D0E0(UnkM432DllStruct *arg0, omObjData *arg1, omObjData *arg2) +{ + fn_1_BF9C(arg0); + if (fn_1_BF08(arg0) == 0x7D5) { + lbl_1_bss_0[arg0->unk_184 >> 1].unk_1DC += 1.0f - (2.0f * (arg0->unk_14C / 60.0f)); + if (0.0f > lbl_1_bss_0[arg0->unk_184 >> 1].unk_1DC) { + lbl_1_bss_0[arg0->unk_184 >> 1].unk_1DC = 0.0f; + } + if (1.0f < lbl_1_bss_0[arg0->unk_184 >> 1].unk_1DC) { + lbl_1_bss_0[arg0->unk_184 >> 1].unk_1DC = 1.0f; + } + arg0->unk_14C = 0.0f; + arg0->unk_C8->unk_3C += 3.0f; + omVibrate(arg0->unk_188, 0xC, 6, 6); + } + else { + arg0->unk_14C += 1.0f; + } + if (Hu3DMotionShiftIDGet(arg1->model[0]) < 0) { + Hu3DMotionTimeSet(arg1->model[0], 120.0 * (fmod(arg0->unk_C8->unk_38, 360.0) / 360.0)); + Hu3DMotionTimeSet( + arg2->model[arg0->unk_C8->unk_08], Hu3DMotionMaxTimeGet(arg2->model[arg0->unk_C8->unk_08]) * (fmod(arg0->unk_C8->unk_38, 360.0) / 360.0)); + } + if (20.0f <= arg0->unk_14C) { + arg0->unk_180 = 0x7D3; + fn_1_4ED8(&arg0->unk_00, 0); + } + else if (lbl_1_bss_0[arg0->unk_184 >> 1].unk_1D8 < 0) { + lbl_1_bss_0[arg0->unk_184 >> 1].unk_1DC = 0.5f; + lbl_1_bss_0[arg0->unk_184 >> 1].unk_1D8 = HuAudFXPlay((arg0->unk_184 & 2) == 0 ? 0x68E : 0x68F); + } +} + +void fn_1_D9EC(UnkM432DllStruct *arg0, omObjData *arg1, omObjData *arg2) +{ + float var_f28; + float var_f27; + float var_f23; + + fn_1_BF9C(arg0); + if ((arg0->unk_00.unk_30 <= 0) || (arg0->unk_00.unk_34 <= 0)) { + var_f27 = 0.0f; + if (arg0->unk_00.unk_30 > 0) { + var_f27 = -(arg0->unk_00.unk_30 / 150.0f); + } + if (arg0->unk_00.unk_34 > 0) { + var_f27 = arg0->unk_00.unk_34 / 150.0f; + } + if (var_f27 != 0.0f) { + if ((0.0f > var_f27 ? -1 : 1) != (0.0f > arg0->unk_150 ? -1 : 1)) { + var_f28 = arg0->unk_158 - arg0->unk_154; + if (0.0f < var_f28) { + if (0.98f < var_f28) { + var_f28 += 0.6f; + if ((arg0->unk_184 & 2) == 0) { + HuAudFXPlay(0x692); + } + else { + HuAudFXPlay(0x693); + } + } + arg0->unk_C8->unk_38 += 10.0f * var_f28; + var_f23 = var_f28; + if (0.5f > var_f23) { + var_f23 = 0.0f; + } + fn_1_B974(&arg0->unk_C8->unk_2C, var_f23 / 2, (arg0->unk_184 & 1) ? -1.0f : 1.0f); + } + arg0->unk_154 = arg0->unk_158; + } + arg0->unk_150 = var_f27; + arg0->unk_158 = arg0->unk_158 + (0.1f * arg0->unk_150); + if (0.0f > arg0->unk_158) { + arg0->unk_158 = 0.0f; + } + if (1.0f < arg0->unk_158) { + arg0->unk_158 = 1.0f; + } + } + } + if (Hu3DMotionShiftIDGet(arg1->model[0]) < 0) { + Hu3DMotionTimeSet(arg1->model[0], arg0->unk_158 * Hu3DMotionMaxTimeGet(arg1->model[0])); + Hu3DMotionTimeSet(arg2->model[arg0->unk_C8->unk_08], arg0->unk_158 * Hu3DMotionMaxTimeGet(arg2->model[arg0->unk_C8->unk_08])); + } + if (1000.0f <= lbl_1_bss_0[arg0->unk_184 >> 1].unk_124) { + arg0->unk_180 = 0x7D3; + fn_1_4ED8(&arg0->unk_00, 0); + } +} + +void fn_1_E3B4(UnkM432DllStruct *arg0, omObjData *arg1) +{ + float var_f31; + float var_f30; + s32 var_r28; + + if (arg0->unk_00.unk_38 != 0) { + fn_1_40C0(&arg0->unk_00); + return; + } + if (arg0->unk_C8->unk_14 & 0x18) { + if (((arg0->unk_C8->unk_14 & 8) && (arg0->unk_178 <= 0)) || ((arg0->unk_C8->unk_14 & 0x10) && (arg0->unk_178 <= 1))) { + arg0->unk_178++; + omVibrate(arg0->unk_188, 0xC, 4, 2); + if ((arg0->unk_184 & 2) == 0) { + HuAudFXPlay(0x690); + } + else { + HuAudFXPlay(0x691); + } + } + if ((arg0->unk_184 & 1) != 0) { + var_r28 = 1; + } + else { + var_r28 = -1; + } + arg0->unk_170 = var_r28 * 0x18; + arg0->unk_174 = 0x48; + arg0->unk_00.unk_9C = 180.0f; + if ((((arg0->unk_C8->unk_14 & 8) == 0) || !(-11100.0f < lbl_1_bss_0[arg0->unk_184 >> 1].unk_28.z)) + && (((arg0->unk_C8->unk_14 & 0x10) == 0) || !(-13500.0f < lbl_1_bss_0[arg0->unk_184 >> 1].unk_28.z))) { + var_f30 = 800.0f - (400.0f * (arg0->unk_184 & 1)); + if (0.0f > (lbl_1_bss_0[arg0->unk_184 >> 1].unk_74 - lbl_1_bss_0[arg0->unk_184 >> 1].unk_28.z)) { + var_f31 = -(lbl_1_bss_0[arg0->unk_184 >> 1].unk_74 - lbl_1_bss_0[arg0->unk_184 >> 1].unk_28.z); + } + else { + var_f31 = lbl_1_bss_0[arg0->unk_184 >> 1].unk_74 - lbl_1_bss_0[arg0->unk_184 >> 1].unk_28.z; + } + if (!(var_f30 < var_f31)) { + fn_1_5148(arg0); + HuAudCharVoicePlay(arg0->unk_18C, 0x122); + goto block_26; + } + } + } + else { + arg0->unk_170 = 0; + arg0->unk_174 = -0x48; + arg0->unk_00.unk_9C = 0.0f; + block_26: + arg0->unk_D0 = 0; + arg0->unk_D4[arg0->unk_FC] = arg0->unk_C8->unk_44 - arg0->unk_17C; + arg0->unk_FC = (arg0->unk_FC + 1) % 10; + arg0->unk_180 = 0x7D8; + arg0->unk_00.unk_6C = arg0->unk_C8->unk_2C; + arg0->unk_00.unk_6C.y -= 200.0f; + fn_1_4ED8(&arg0->unk_00, 3); + arg0->unk_00.unk_3C |= 8; + } +} + +void fn_1_E9E4(UnkM432DllStruct *arg0) +{ + float var_f31; + float var_f30; + float var_f28; + + arg0->unk_00.unk_20 = arg0->unk_170; + arg0->unk_00.unk_24 = arg0->unk_174; + arg0->unk_00.unk_28 = 0x100; + arg0->unk_00.unk_2C = 0x100; + fn_1_40C0(&arg0->unk_00); + var_f31 = arg0->unk_C8->unk_2C.x - arg0->unk_00.unk_6C.x; + var_f30 = arg0->unk_C8->unk_2C.z - arg0->unk_00.unk_6C.z; + if (sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)) < 100.0f) { + var_f28 = 0.0f; + if (arg0->unk_174 > 0) { + var_f28 = 100.0f; + } + if ((arg0->unk_C8->unk_2C.y + var_f28) > arg0->unk_00.unk_6C.y) { + arg0->unk_00.unk_84.y = 26.766666f; + arg0->unk_00.unk_A4 = 1.0f; + return; + } + arg0->unk_00.unk_3C &= 0xFFFFFFF7; + return; + } + if ((0.0f > arg0->unk_00.unk_84.y) && ((100.0f + arg0->unk_C8->unk_2C.y) > arg0->unk_00.unk_6C.y)) { + arg0->unk_180 = 0x7D3; + HuAudCharVoicePlay(arg0->unk_18C, 0x10D); + } +} + +void fn_1_EC7C(UnkM432DllStruct *arg0, omObjData *arg1) +{ + if ((lbl_1_bss_0[arg0->unk_184 >> 1].unk_1E4 - (arg0->unk_00.unk_BC / 2)) > arg0->unk_00.unk_6C.y) { + Hu3DModelShadowDispOff(arg1->model[0]); + return; + } + Hu3DModelShadowDispOn(arg1->model[0]); +} + +void fn_1_ED0C(omObjData *object) +{ + float var_f31; + float var_f30; + float var_f26; + UnkBss0Struct *var_r28; + UnkM432DllStruct *var_r31; + s32 var_r26; + s32 var_r22; + + var_r31 = object->data; + var_r28 = &lbl_1_bss_0[var_r31->unk_184 >> 1]; + if (lbl_1_bss_41C->work[0] >= 0x3EC) { + if (lbl_1_bss_3FC != (var_r31->unk_184 & 2)) { + var_r26 = 1; + if (var_r31->unk_00.unk_A8 < var_r31->unk_00.unk_6C.y) { + var_r26 = 0; + } + if (var_r31->unk_180 == 0x7D7) { + var_r26 = 0; + } + if (var_r31->unk_180 == 0x7D8) { + var_r26 = 0; + } + if (var_r31->unk_180 == 0x7D9) { + var_r26 = 0; + } + if ((var_r31->unk_180 == 0x7D3) && (var_r31->unk_00.unk_38 == 1)) { + var_r26 = 0; + } + if (var_r26 != 0) { + var_r31->unk_180 = 0x7DA; + if (lbl_1_bss_3FC >= 0) { + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE); + Hu3DMotionShiftSet(object->model[0], object->motion[10], 0.0f, 8.0f, HU3D_ATTR_NONE); + } + else { + var_r31->unk_168 = 1; + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE); + Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + } + } + } + else { + var_r31->unk_180 = 0x7DB; + var_r31->unk_13C.x += 100.0f * (var_r31->unk_184 & 1 ? -1.0f : 1.0f); + var_r31->unk_13C.z += -475.0f; + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE); + Hu3DMotionShiftSet(object->model[0], object->motion[2], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + } + if (var_r31->unk_180 >= 0x7DA) { + for (var_r22 = 0; var_r22 < 9; var_r22++) { + espDispOff(var_r31->unk_118[var_r22]); + } + if (lbl_1_bss_3FC == (var_r31->unk_184 & 2)) { + GWPlayerCoinWinSet(var_r31->unk_188, 10); + } + object->func = fn_1_10250; + return; + } + } + if (GWPlayerCfg[var_r31->unk_188].iscom != 0) { + var_r31->unk_00.unk_20 = 0; + var_r31->unk_00.unk_24 = 0; + var_r31->unk_00.unk_28 = 0; + var_r31->unk_00.unk_2C = 0; + var_r31->unk_00.unk_30 = 0; + var_r31->unk_00.unk_34 = 0; + fn_1_93BC(var_r31); + } + else { + var_r31->unk_00.unk_20 = HuPadStkX[var_r31->unk_190]; + var_r31->unk_00.unk_24 = HuPadStkY[var_r31->unk_190]; + var_r31->unk_00.unk_28 = HuPadBtnDown[var_r31->unk_190]; + var_r31->unk_00.unk_2C = HuPadBtn[var_r31->unk_190]; + var_r31->unk_00.unk_30 = HuPadTrigL[var_r31->unk_190]; + var_r31->unk_00.unk_34 = HuPadTrigR[var_r31->unk_190]; + } + if ((var_r31->unk_180 == 0x7D3) && ((var_r31->unk_13C.x != 0.0f) || (var_r31->unk_13C.z != 0.0f))) { + var_f30 = var_r31->unk_13C.x - var_r31->unk_00.unk_6C.x; + var_f31 = var_r31->unk_13C.z - var_r31->unk_00.unk_6C.z; + if (var_r31->unk_00.unk_BC < (0.0f > var_f31 ? -var_f31 : var_f31)) { + var_f30 = 0.0f; + } + var_f26 = sqrtf((var_f30 * var_f30) + (var_f31 * var_f31)); + if (10.0f <= var_f26) { + var_f30 /= var_f26; + var_f31 /= var_f26; + } + else { + var_f30 = 0.0f; + var_f31 = 0.0f; + var_r31->unk_00.unk_9C = var_r31->unk_148; + } + var_r31->unk_00.unk_20 = 72.0f * var_f30; + var_r31->unk_00.unk_24 = 72.0f * -var_f31; + var_r31->unk_00.unk_28 = 0; + var_r31->unk_00.unk_2C = 0; + var_r31->unk_00.unk_30 = 0; + var_r31->unk_00.unk_34 = 0; + } + switch (var_r31->unk_180) { + case 0x7D3: + if ((var_r31->unk_16C != 0) && ((var_r31->unk_00.unk_3C & 0x101) != 0)) { + var_r31->unk_16C = 0; + var_r31->unk_00.unk_3C &= 0xFFFFFFEF; + fn_1_4ED8(&var_r31->unk_00, 0); + } + fn_1_40C0(&var_r31->unk_00); + fn_1_C33C(var_r31); + if ((NULL != var_r31->unk_C4) && (NULL != var_r31->unk_C8)) { + var_r31->unk_180 = fn_1_BF08(var_r31); + switch (var_r31->unk_180) { + case 0x7D4: + var_r31->unk_14C = 0.0f; + var_r31->unk_C8->unk_38 = 1.0f; + var_r28->unk_1D4 = 0.5f; + if (var_r28->unk_1CC < 0) { + var_r28->unk_1CC = HuAudFXPlay((var_r31->unk_184 & 2) == 0 ? 0x68C : 0x68D); + } + if (var_r28->unk_1D0 < 0) { + var_r28->unk_1D0 = HuAudFXPlay((var_r31->unk_184 & 2) == 0 ? 0x695 : 0x696); + } + Hu3DMotionShiftSet(object->model[0], object->motion[5], 0.0f, 8.0f, HU3D_MOTATTR_PAUSE); + break; + case 0x7D5: + var_r31->unk_14C = 0.0f; + var_r31->unk_C8->unk_3C += 3.0f; + if (var_r28->unk_1D8 < 0) { + var_r28->unk_1DC = 0.5f; + var_r28->unk_1D8 = HuAudFXPlay((var_r31->unk_184 & 2) == 0 ? 0x68E : 0x68F); + } + Hu3DMotionShiftSet( + object->model[0], object->motion[7], 120.0 * (fmod(var_r31->unk_C8->unk_38, 360.0) / 360.0), 8.0f, HU3D_MOTATTR_PAUSE); + break; + case 0x7D6: + var_r31->unk_14C = 0.0f; + var_r31->unk_150 = -1.0f; + var_r31->unk_158 = 0.0f; + var_r31->unk_154 = 0.0f; + Hu3DMotionShiftSet(object->model[0], object->motion[8], 0.0f, 8.0f, HU3D_MOTATTR_PAUSE); + break; + } + } + else if (-800.0f > var_r31->unk_00.unk_6C.y) { + var_r31->unk_00.unk_3C |= 0x10; + if (NULL == lbl_1_bss_0[var_r31->unk_184 >> 1].unk_08) { + lbl_1_bss_0[var_r31->unk_184 >> 1].unk_08 = object; + lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1B4 = -1; + } + else { + lbl_1_bss_0[var_r31->unk_184 >> 1].unk_0C = object; + } + } + break; + case 0x7D4: + fn_1_C724(var_r31, object, lbl_1_bss_0[var_r31->unk_184 >> 1].unk_04); + break; + case 0x7D5: + fn_1_D0E0(var_r31, object, lbl_1_bss_0[var_r31->unk_184 >> 1].unk_04); + break; + case 0x7D6: + fn_1_D9EC(var_r31, object, lbl_1_bss_0[var_r31->unk_184 >> 1].unk_04); + break; + case 0x7D7: + fn_1_E3B4(var_r31, object); + break; + case 0x7D8: + fn_1_E9E4(var_r31); + break; + case 0x7D9: + break; + default: + OSReport("*** player mode error(%d)!!\n", var_r31->unk_180); + break; + } + fn_1_EC7C(var_r31, object); + fn_1_BAA8(var_r31); + + lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1E8 += 1.0f; + + lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1EC += fn_1_A974(var_r31); + lbl_1_bss_0[var_r31->unk_184 >> 1].unk_1F0[var_r31->unk_184 & 1] = var_r31->unk_00.unk_6C.z; + fn_1_2DD4(&var_r31->unk_00); +} + +void fn_1_10250(omObjData *object) +{ + float var_f31; + float var_f30; + float var_f24; + UnkM432DllStruct *var_r31; + omObjData *var_r29; + + var_r31 = object->data; + var_r29 = lbl_1_bss_0[var_r31->unk_184 >> 1].unk_04; + switch (var_r31->unk_180) { + case 0x7D0: + if (lbl_1_bss_41C->work[0] >= 0x3E9) { + var_r31->unk_180++; + Hu3DModelAttrReset(object->model[0], HU3D_ATTR_DISPOFF); + HuAudCharVoicePlay(var_r31->unk_18C, 0x125); + } + break; + case 0x7D1: + var_r31->unk_00.unk_20 = 0; + var_r31->unk_00.unk_24 = 0x48; + var_r31->unk_00.unk_28 = 0x100; + var_r31->unk_00.unk_2C = 0x100; + fn_1_40C0(&var_r31->unk_00); + if (200.0f > var_r31->unk_00.unk_6C.y) { + var_r31->unk_00.unk_84.y = 26.766666f; + var_r31->unk_00.unk_A4 = 1.0f; + } + else { + var_r31->unk_180++; + } + break; + case 0x7D2: + var_r31->unk_00.unk_20 = 0; + var_r31->unk_00.unk_24 = 0; + var_r31->unk_00.unk_28 = 0; + var_r31->unk_00.unk_2C = 0; + if (var_r31->unk_00.unk_38 == 1) { + var_r31->unk_00.unk_24 = 0x48; + } + fn_1_40C0(&var_r31->unk_00); + if ((var_r31->unk_00.unk_38 == 0) && (lbl_1_bss_41C->work[0] >= 0x3EB)) { + var_r31->unk_180++; + object->func = fn_1_ED0C; + } + break; + case 0x7DA: + if ((var_r31->unk_168 != 0) && (lbl_1_bss_3FC < 0) && (lbl_1_bss_41C->work[0] >= 0x3F1)) { + var_r31->unk_168 = 0; + Hu3DModelAttrReset(object->model[0], HU3D_MOTATTR_PAUSE); + Hu3DMotionShiftSet(object->model[0], object->motion[10], 0.0f, 8.0f, HU3D_ATTR_NONE); + } + break; + case 0x7DB: + var_f31 = var_r31->unk_13C.x - var_r31->unk_00.unk_6C.x; + var_f30 = var_r31->unk_13C.z - var_r31->unk_00.unk_6C.z; + if (1.0f > (0.0f > var_f31 ? -var_f31 : var_f31)) { + if (1.0f > (0.0f > var_f30 ? -var_f30 : var_f30)) { + var_r31->unk_180++; + var_r31->unk_160 = 0.0f; + var_r31->unk_164 = var_r31->unk_00.unk_6C.y; + Hu3DMotionShiftSet(object->model[0], object->motion[3], 0.0f, 8.0f, HU3D_ATTR_NONE); + break; + } + } + if (1.0f < (0.0f > var_f31 ? -var_f31 : var_f31)) { + var_f30 = 0.0f; + } + var_f24 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (10.0f < var_f24) { + var_f31 = 10.0f * (var_f31 / var_f24); + var_f30 = 10.0f * (var_f30 / var_f24); + } + var_r31->unk_00.unk_6C.x += var_f31; + var_r31->unk_00.unk_6C.z += var_f30; + + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, atan2d(var_f31, var_f30), 0.4f); + break; + case 0x7DC: + var_r31->unk_160 += 5.0f; + var_r31->unk_00.unk_6C.z -= 10.0f; + var_r31->unk_00.unk_6C.y = lbl_1_bss_0[var_r31->unk_184 >> 1].unk_118.y + (120.0 * sind(var_r31->unk_160)); + if (180.0f <= var_r31->unk_160) { + var_r31->unk_180++; + Hu3DMotionShiftSet(object->model[0], object->motion[4], 0.0f, 8.0f, HU3D_ATTR_NONE); + } + break; + case 0x7DD: + if ((Hu3DMotionShiftIDGet(object->model[0]) < 0) && (Hu3DMotionEndCheck(object->model[0]) != 0)) { + var_r31->unk_180++; + Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(var_r29->model[9], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(var_r29->model[15], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(var_r29->model[23], HU3D_MOTATTR_PAUSE); + HuAudFXPlay(0x694); + } + break; + case 0x7DE: + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 0.0f, 0.4f); + if ((Hu3DMotionEndCheck(var_r29->model[9]) != 0) && (Hu3DMotionEndCheck(var_r29->model[15]) != 0)) { + var_r31->unk_180++; + } + break; + case 0x7DF: + var_r31->unk_00.unk_6C.y = lbl_1_bss_0[var_r31->unk_184 >> 1].unk_118.y; + if (lbl_1_bss_41C->work[0] >= 0x3F1) { + var_r31->unk_180++; + Hu3DMotionShiftSet(object->model[0], object->motion[9], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + HuAudCharVoicePlay(var_r31->unk_18C, 0x125); + } + break; + case 0x7E0: + var_r31->unk_00.unk_6C.y = lbl_1_bss_0[var_r31->unk_184 >> 1].unk_118.y; + break; + case 0x7D3: + case 0x7D4: + case 0x7D5: + case 0x7D6: + case 0x7D7: + case 0x7D8: + case 0x7D9: + default: + OSReport("*** player mode error(%d)!!\n", var_r31->unk_180); + break; + } + fn_1_EC7C(var_r31, object); + fn_1_2DD4(&var_r31->unk_00); +} + +void fn_1_10CCC(omObjData *object) +{ + Vec sp8; + + UnkM432DllStruct *var_r31; + s32 var_r29; + s32 var_r28; + s32 var_r27; + UnkM432DllBss0SubStruct *var_r26; + s32 var_r24; + s32 var_r23; + + var_r31 = object->data; + var_r26 = lbl_1_bss_0[var_r31->unk_184 >> 1].unk_10[var_r31->unk_184 & 1]; + var_r31->unk_18C = GWPlayerCfg[var_r31->unk_188].character; + var_r31->unk_190 = GWPlayerCfg[var_r31->unk_188].pad_idx; + var_r31->unk_180 = 0x7D0; + var_r31->unk_168 = 0; + var_r31->unk_CC = NULL; + var_r31->unk_C4 = NULL; + var_r31->unk_C8 = NULL; + var_r31->unk_150 = 0.0f; + var_r31->unk_158 = 0.0f; + var_r31->unk_154 = 0.0f; + var_r31->unk_17C = 0; + var_r31->unk_15C = 10000.0f; + var_r31->unk_178 = 0; + var_r31->unk_16C = 0; + var_r31->unk_104 = 0.5f; + var_r31->unk_108 = 0.0f; + fn_1_5148(var_r31); + sp8 = var_r26[var_r31->unk_17C++].unk_2C; + sp8.y -= 200.0f; + fn_1_2C1C(&var_r31->unk_00, object, var_r31->unk_188, var_r31->unk_18C, lbl_1_data_268, 0, &sp8, 180.0f); + var_r31->unk_00.unk_04 = fn_1_AA1C; + var_r31->unk_00.unk_08 = fn_1_ACC8; + fn_1_2DC8(&var_r31->unk_00, 1, (var_r31->unk_184 & 2) == 0 ? lbl_1_data_354 : lbl_1_data_36C); + var_r31->unk_00.unk_0C = fn_1_AF28; + var_r31->unk_13C.x = 0.0f; + var_r31->unk_13C.y = 0.0f; + var_r31->unk_13C.z = 0.0f; + object->model[0] = CharModelCreate(lbl_1_data_0[var_r31->unk_18C], 4); + CharModelStepTypeSet(lbl_1_data_0[var_r31->unk_18C], 0); + for (var_r29 = 0; var_r29 < 0xB; var_r29++) { + object->motion[var_r29] = CharModelMotionCreate(lbl_1_data_0[var_r31->unk_18C], lbl_1_data_108[var_r31->unk_18C][var_r29]); + CharModelMotionSet(lbl_1_data_0[var_r31->unk_18C], object->motion[var_r29]); + } + Hu3DModelCameraSet(object->model[0], lbl_1_data_A0[var_r31->unk_184 >> 1]); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelLayerSet(object->model[0], 2); + Hu3DMotionSet(object->model[0], object->motion[0]); + Hu3DModelShadowSet(object->model[0]); + fn_1_2DD4(&var_r31->unk_00); + for (var_r29 = 0; var_r29 < 9; var_r29++) { + var_r31->unk_118[var_r29] = espEntry(lbl_1_data_288[var_r29], 0, 0); + espDrawNoSet(var_r31->unk_118[var_r29], 0); + espDispOff(var_r31->unk_118[var_r29]); + espAttrSet(var_r31->unk_118[var_r29], HUSPR_ATTR_NOANIM); + espBankSet(var_r31->unk_118[var_r29], 0); + espPriSet(var_r31->unk_118[var_r29], 0x80 - var_r29); + } + espTPLvlSet(var_r31->unk_118[0], 0.9f); + espTPLvlSet(var_r31->unk_118[1], 0.9f); + if (GWPlayerCfg[var_r31->unk_188].iscom != 0) { + switch (GWPlayerCfg[var_r31->unk_188].diff) { + case 0: + var_r31->unk_CC = &lbl_1_data_1794; + break; + case 1: + var_r31->unk_CC = &lbl_1_data_17B4; + break; + case 2: + var_r31->unk_CC = &lbl_1_data_17D4; + break; + case 3: + default: + var_r31->unk_CC = &lbl_1_data_17F4; + break; + } + } + CharModelLayerSetAll2(5); + CharModelMotionDataClose(lbl_1_data_0[var_r31->unk_18C]); + object->func = fn_1_10250; +} + +void fn_1_113F0(omObjData *object) { } + +void fn_1_113F4(omObjData *var_r31) +{ + s32 sp48; + + UnkM432DllBss0SubStruct *var_r30; + s32 var_r28; + UnkBss0Struct *var_r22; + + var_r22 = &lbl_1_bss_0[var_r31->work[0]]; + var_r31->model[0] = fn_1_46C(DATA_MAKE_NUM(DATADIR_M432, 0x02)); + Hu3DModelCameraSet(var_r31->model[0], lbl_1_data_A0[var_r31->work[0]]); + Hu3DModelAttrSet(var_r31->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(var_r31->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(var_r31->model[0], 0); + + var_r31->model[1] = fn_1_46C(DATA_MAKE_NUM(DATADIR_M432, 0x04)); + Hu3DModelCameraSet(var_r31->model[1], lbl_1_data_A0[var_r31->work[0]]); + Hu3DModelAttrSet(var_r31->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->model[1], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(var_r31->model[1], HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(var_r31->model[1], 0); + + var_r31->model[2] = fn_1_46C(lbl_1_data_528[var_r31->work[0]]); + Hu3DModelCameraSet(var_r31->model[2], lbl_1_data_A0[var_r31->work[0]]); + Hu3DModelAttrSet(var_r31->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->model[2], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(var_r31->model[2], HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(var_r31->model[2], 1); + + var_r31->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M432, 0x01)); + Hu3DModelCameraSet(var_r31->model[3], lbl_1_data_A0[var_r31->work[0]]); + Hu3DModelAttrSet(var_r31->model[3], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->model[3], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(var_r31->model[3], HU3D_MOTATTR_LOOP); + Hu3DModelLayerSet(var_r31->model[3], 0); + + var_r31->model[24] = fn_1_46C(DATA_MAKE_NUM(DATADIR_M432, 0x03)); + Hu3DModelCameraSet(var_r31->model[24], lbl_1_data_A0[var_r31->work[0]]); + Hu3DModelLayerSet(var_r31->model[24], 0); + Hu3DModelPosSet(var_r31->model[24], 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(var_r31->model[24], 0.0f, 0.0f, 0.0f); + Hu3DModelAttrSet(var_r31->model[24], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->model[24], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(var_r31->model[24], HU3D_MOTATTR_LOOP); + + var_r31->model[25] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M432, 0x07)); + Hu3DMotionSet(var_r31->model[25], Hu3DJointMotionFile(var_r31->model[25], DATA_MAKE_NUM(DATADIR_M432, 0x08))); + Hu3DModelCameraSet(var_r31->model[25], lbl_1_data_A0[var_r31->work[0]]); + Hu3DModelAttrSet(var_r31->model[25], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(var_r31->model[25], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(var_r31->model[25], HU3D_MOTATTR_PAUSE); + Hu3DModelLayerSet(var_r31->model[25], 2); + Hu3DModelShadowSet(var_r31->model[25]); + omSetTra(var_r31, var_r22->unk_28.x, 0.0f, 0.0f); + omSetRot(var_r31, 0.0f, 0.0f, 0.0f); + for (var_r28 = 0; var_r28 < 0x1A; var_r28++) { + Hu3DModelPosSet(var_r31->model[var_r28], var_r22->unk_28.x, 0.0f, 0.0f); + Hu3DModelRotSet(var_r31->model[var_r28], 0.0f, 0.0f, 0.0f); + } + for (var_r28 = 0; var_r28 < 2; var_r28++) { + var_r22->unk_10[var_r28] = HuMemDirectMallocNum(HEAP_SYSTEM, 31 * sizeof(UnkM432DllBss0SubStruct), MEMORY_DEFAULT_NUM); + memcpy(var_r22->unk_10[var_r28], var_r28 == 0 ? &lbl_1_data_5EC : &lbl_1_data_EDC, 31 * sizeof(UnkM432DllBss0SubStruct)); + for (var_r30 = var_r22->unk_10[var_r28], sp48 = 0; sp48 < 0x1F; sp48++, var_r30++) { + fn_1_1D18(var_r31->model[3], var_r30->unk_00, &var_r30->unk_20); + var_r30->unk_2C = var_r30->unk_20; + var_r30->unk_38 = 0.0f; + var_r30->unk_3C = 0.0f; + var_r30->unk_40 = -1; + var_r30->unk_44 = sp48; + if ((var_r30->unk_08 > 0) && (var_r30->unk_0C[var_r31->work[0]] != 0)) { + var_r31->model[var_r30->unk_08] = fn_1_46C(var_r30->unk_0C[var_r31->work[0]]); + Hu3DModelCameraSet(var_r31->model[var_r30->unk_08], lbl_1_data_A0[var_r31->work[0]]); + Hu3DModelLayerSet(var_r31->model[var_r30->unk_08], 0); + Hu3DModelPosSet(var_r31->model[var_r30->unk_08], var_r30->unk_2C.x, var_r30->unk_2C.y, var_r30->unk_2C.z); + Hu3DModelRotSet(var_r31->model[var_r30->unk_08], 0.0f, var_r30->unk_18, 0.0f); + Hu3DModelAttrSet(var_r31->model[var_r30->unk_08], HU3D_ATTR_DISPOFF | HU3D_ATTR_NOCULL); + Hu3DModelAttrSet(var_r31->model[var_r30->unk_08], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(var_r31->model[var_r30->unk_08], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(var_r31->model[var_r30->unk_08], HU3D_ATTR_DISPOFF); + } + } + } + for (var_r28 = 0; var_r28 < 4; var_r28++) { + lbl_1_bss_0[var_r31->work[0]].unk_88[var_r28][2].y = 35.0f; + } + fn_1_1D18(var_r31->model[3], "m432_00-d0", &lbl_1_bss_0[var_r31->work[0]].unk_88[0][0]); + fn_1_1D18(var_r31->model[3], "m432_00-d0", &lbl_1_bss_0[var_r31->work[0]].unk_88[1][0]); + fn_1_1D18(var_r31->model[3], "m432_00-d1", &lbl_1_bss_0[var_r31->work[0]].unk_88[2][0]); + fn_1_1D18(var_r31->model[3], "m432_00-d1", &lbl_1_bss_0[var_r31->work[0]].unk_88[3][0]); + + fn_1_5364(var_r31->work[0], var_r31); + + fn_1_1D18(var_r31->model[3], "m432_00-h0", &lbl_1_bss_0[var_r31->work[0]].unk_118); + for (var_r28 = 0; var_r28 < 8; var_r28++) { + fn_1_1D18(var_r31->model[3], lbl_1_data_3DC[var_r28], &lbl_1_bss_0[var_r31->work[0]].unk_130[var_r28]); + if ((var_r28 % 4) < 2) { + lbl_1_bss_0[var_r31->work[0]].unk_130[var_r28].z -= 150.0f; + } + } + fn_1_1D18(var_r31->model[3], "m432_00-n0", &lbl_1_bss_0[var_r31->work[0]].unk_1C0); + Hu3DModelShadowMapSet(var_r31->model[0]); + Hu3DModelShadowMapSet(var_r31->model[20]); + Hu3DModelShadowMapSet(var_r31->model[21]); + Hu3DModelAttrReset(var_r31->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(var_r31->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(var_r31->model[2], HU3D_ATTR_DISPOFF); + var_r31->func = fn_1_113F0; +} + +void fn_1_12800(omObjData *object) { } + +void fn_1_12804(omObjData *object) +{ + object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M432, 0x00)); + Hu3DModelAttrSet(object->model[0], HU3D_ATTR_DISPOFF); + omSetTra(object, lbl_1_bss_0[object->work[0]].unk_28.x, 0.0f, 0.0f); + omSetRot(object, 0.0f, 0.0f, 0.0f); + object->func = fn_1_12800; +} + +void fn_1_128C8(omObjData *object) +{ + s32 var_r31; + UnkM432DllStruct *var_r30; + UnkM432DllStruct *var_r29; + s32 var_r28; + s32 var_r27; + void *var_r26; + void *var_r25; + omObjData *var_r24; + void *var_r23; + void *var_r22; + + if (lbl_1_bss_41C->work[0] >= 0x3EB) { + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r24 = lbl_1_bss_0[var_r31].unk_04; + var_r30 = fn_1_51A8(var_r31 * 2); + var_r29 = fn_1_51A8(var_r31 * 2 + 1); + if ((var_r30->unk_180 == 0x7DF) && (var_r29->unk_180 == 0x7DF)) { + lbl_1_bss_0[var_r31].unk_12C += 0.05f; + if (12.0f < lbl_1_bss_0[var_r31].unk_12C) { + lbl_1_bss_0[var_r31].unk_12C = 12.0f; + } + lbl_1_bss_0[var_r31].unk_118.y += lbl_1_bss_0[var_r31].unk_12C; + Hu3DModelPosSet(var_r24->model[22], lbl_1_bss_0[var_r31].unk_118.x, lbl_1_bss_0[var_r31].unk_118.y, lbl_1_bss_0[var_r31].unk_118.z); + lbl_1_bss_0[var_r31].unk_28.y += 0.1f * ((500.0f + lbl_1_bss_0[var_r31].unk_118.y) - lbl_1_bss_0[var_r31].unk_28.y); + lbl_1_bss_0[var_r31].unk_1C.y += 0.01f * (1000.0f - lbl_1_bss_0[var_r31].unk_1C.y); + lbl_1_bss_0[var_r31].unk_1C.z += 0.002f * ((4000.0f + lbl_1_bss_0[var_r31].unk_118.z) - lbl_1_bss_0[var_r31].unk_1C.z); + Hu3DCameraPosSetV(lbl_1_data_A0[var_r31], &lbl_1_bss_0[var_r31].unk_1C, &lbl_1_data_C8, &lbl_1_bss_0[var_r31].unk_28); + } + else { + fn_1_623C(&lbl_1_bss_0[var_r31], var_r31, var_r30, var_r29); + if (NULL != lbl_1_bss_0[var_r31].unk_08) { + fn_1_6F28(&lbl_1_bss_0[var_r31]); + } + if ((2.0f <= lbl_1_bss_0[var_r31].unk_1E8) && (lbl_1_bss_0[var_r31].unk_1EC != 0.0f)) { + fn_1_7C1C(&lbl_1_bss_0[var_r31], var_r30, var_r29); + } + lbl_1_bss_0[var_r31].unk_0C = NULL; + lbl_1_bss_0[var_r31].unk_1E8 = 0.0f; + lbl_1_bss_0[var_r31].unk_1EC = 0.0f; + lbl_1_bss_0[var_r31].unk_1F0[0] = 0.0f; + lbl_1_bss_0[var_r31].unk_1F0[1] = 0.0f; + } + } + if (lbl_1_bss_41C->work[0] >= 0x3EC) { + for (var_r31 = 0; var_r31 < 2; var_r31++) { + if (lbl_1_bss_0[var_r31].unk_1CC >= 0) { + HuAudFXStop(lbl_1_bss_0[var_r31].unk_1CC); + } + if (lbl_1_bss_0[var_r31].unk_1D0 >= 0) { + HuAudFXStop(lbl_1_bss_0[var_r31].unk_1D0); + } + if (lbl_1_bss_0[var_r31].unk_1D8 >= 0) { + HuAudFXStop(lbl_1_bss_0[var_r31].unk_1D8); + } + lbl_1_bss_0[var_r31].unk_1CC = -1; + lbl_1_bss_0[var_r31].unk_1D0 = -1; + lbl_1_bss_0[var_r31].unk_1D8 = -1; + } + } + } +} + +void fn_1_12EA8(void) +{ + float var_f31; + float var_f30; + + UnkBss0Struct *var_r31; + s32 var_r30; + + for (var_r30 = 0; var_r30 < 2; var_r30++) { + var_r31 = &lbl_1_bss_0[var_r30]; + if (var_r31->unk_7C == 0.0f) { + var_r31->unk_1C = var_r31->unk_28; + var_r31->unk_1C.x = var_r31->unk_1C.x + (var_r31->unk_68 * sind(var_r31->unk_64)); + var_r31->unk_1C.y += var_r31->unk_6C; + var_r31->unk_1C.z = var_r31->unk_1C.z + (var_r31->unk_68 * cosd(var_r31->unk_64)); + } + else { + var_r31->unk_78 += 1.0f; + var_f30 = var_r31->unk_78 / var_r31->unk_7C; + var_f31 = sind((90.0f * var_f30)) * sind((90.0f * var_f30)); + + var_r31->unk_1C.x = var_r31->unk_34.x + (var_f31 * (var_r31->unk_40.x - var_r31->unk_34.x)); + var_r31->unk_1C.y = var_r31->unk_34.y + (var_f31 * (var_r31->unk_40.y - var_r31->unk_34.y)); + var_r31->unk_1C.z = var_r31->unk_34.z + (var_f31 * (var_r31->unk_40.z - var_r31->unk_34.z)); + var_r31->unk_28.x = var_r31->unk_4C.x + (var_f31 * (var_r31->unk_58.x - var_r31->unk_4C.x)); + var_r31->unk_28.y = var_r31->unk_4C.y + (var_f31 * (var_r31->unk_58.y - var_r31->unk_4C.y)); + var_r31->unk_28.z = var_r31->unk_4C.z + (var_f31 * (var_r31->unk_58.z - var_r31->unk_4C.z)); + if (var_r31->unk_7C <= var_r31->unk_78) { + var_r31->unk_68 = var_r31->unk_1C.z - var_r31->unk_28.z; + var_r31->unk_6C = var_r31->unk_1C.y - var_r31->unk_28.y; + var_r31->unk_78 = 0.0f; + var_r31->unk_7C = 0.0f; + } + } + Hu3DCameraPosSetV(lbl_1_data_A0[var_r30], &var_r31->unk_1C, &lbl_1_data_C8, &var_r31->unk_28); + } +} + +void fn_1_131A8(omObjData *var_r28) +{ + Vec sp98; + Vec sp8C; + Vec sp80; + UnkM432DllStruct *sp7C[1]; + + float var_f31; + float var_f30; + float var_f27; + float var_f26; + float var_f22; + float var_f21; + + UnkBss0Struct *var_r29; + s32 var_r26; + s32 var_r17; + + if (omSysExitReq != 0) { + fn_1_1F58(-1); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 0x3C); + var_r28->func = fn_1_1615C; + } + lbl_1_bss_580++; + switch (var_r28->work[0]) { + case 0x3E8: + if (WipeStatGet() == 0) { + var_r28->work[0]++; + lbl_1_bss_3F0 = 0.0f; + } + break; + case 0x3E9: + lbl_1_bss_3F0 += 1.0f; + var_f31 = lbl_1_bss_3F0 / 60.0f; + var_f30 = sind((90.0f * var_f31)) * sind((90.0f * var_f31)); + for (var_r26 = 0; var_r26 < 2; var_r26++) { + lbl_1_bss_0[var_r26].unk_28.z = -300.0f + (-400.0f * var_f30); + } + fn_1_12EA8(); + if (60.0f <= lbl_1_bss_3F0) { + var_r28->work[0]++; + lbl_1_bss_3F0 = 0.0f; + } + break; + case 0x3EA: + if (lbl_1_bss_576 < 0) { + lbl_1_bss_576 = MGSeqCreate(3, 0); + } + else { + if ((lbl_1_bss_570 < 0) && ((MGSeqStatGet(lbl_1_bss_576) & 0x10) != 0)) { + fn_1_1F24(0x46); + } + if (MGSeqStatGet(lbl_1_bss_576) == 0) { + var_r28->work[0]++; + lbl_1_bss_57C = 0; + lbl_1_bss_576 = -1; + lbl_1_bss_3F0 = 0.0f; + } + } + break; + case 0x3EB: + lbl_1_bss_57C++; + if (lbl_1_bss_574 >= 0) { + MGSeqParamSet(lbl_1_bss_574, 1, (0x468B - lbl_1_bss_57C) / 60); + } + else if (lbl_1_bss_57C > 0x3F48) { + lbl_1_bss_574 = MGSeqCreate(1, (0x468B - lbl_1_bss_57C) / 60, -1, -1); + MGSeqPosSet(lbl_1_bss_574, 288.0f, 400.0f); + } + fn_1_580(lbl_1_bss_528, 0, lbl_1_bss_57C); + + fn_1_12EA8(); + if ((lbl_1_bss_57C >= 0x4650) || (lbl_1_bss_3FC >= 0)) { + var_r28->work[0] = 0x3EC; + lbl_1_bss_3F0 = 0.0f; + } + break; + case 0x3EC: + if (lbl_1_bss_576 < 0) { + if (lbl_1_bss_574 >= 0) { + MGSeqParamSet(lbl_1_bss_574, 2, -1); + } + lbl_1_bss_574 = -1; + lbl_1_bss_3F8 = 0; + lbl_1_bss_576 = MGSeqCreate(3, 1); + fn_1_1F58(0x64); + } + else { + var_r17 = 0; + for (var_r26 = 0; var_r26 < 4; var_r26++) { + if (((UnkM432DllStruct *)lbl_1_bss_410[var_r26]->data)->unk_180 >= 0x7DA) { + var_r17++; + } + } + if (++lbl_1_bss_3F8 > 0x78) { + var_r17 = 4; + } + lbl_1_bss_3F0 += 1.0f; + if ((var_r17 >= 4) && (60.0f <= lbl_1_bss_3F0) && (MGSeqStatGet(lbl_1_bss_576) == 0)) { + var_r28->work[0] = 0x3EE; + if ((lbl_1_bss_3FC >= 0) && (lbl_1_bss_57C < 0x1518)) { + if (GWPlayerCfg[fn_1_51A8(lbl_1_bss_3FC)->unk_188].iscom != 0) { + if (GWPlayerCfg[fn_1_51A8(lbl_1_bss_3FC + 1)->unk_188].iscom == 0) { + goto block_81; + } + } + else { + block_81: + GWGameStat.present[0x32] = 1; + } + } + if ((lbl_1_bss_3FC >= 0) && (lbl_1_bss_578 > lbl_1_bss_57C)) { + if (GWPlayerCfg[fn_1_51A8(lbl_1_bss_3FC)->unk_188].iscom != 0) { + if (GWPlayerCfg[fn_1_51A8(lbl_1_bss_3FC + 1)->unk_188].iscom == 0) { + goto block_98; + } + } + else { + block_98: + var_r28->work[0] = 0x3ED; + fn_1_798(3); + } + } + lbl_1_bss_576 = -1; + lbl_1_bss_3F0 = 0.0f; + } + } + break; + case 0x3ED: + if (lbl_1_bss_576 < 0) { + lbl_1_bss_576 = MGSeqCreate(0xE, lbl_1_bss_578); + } + else if (MGSeqStatGet(lbl_1_bss_576) == 0) { + var_r28->work[0]++; + lbl_1_bss_3F0 = 0.0f; + lbl_1_bss_576 = -1; + } + break; + case 0x3EE: + if (lbl_1_bss_3FC < 0) { + var_r28->work[0] = 0x3F1; + lbl_1_bss_3F0 = 0.0f; + } + else if (2000.0f < lbl_1_bss_0[lbl_1_bss_3FC >> 1].unk_118.y) { + var_r28->work[0]++; + WipeColorSet(0xFF, 0xFF, 0xFF); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + } + break; + case 0x3EF: + if (WipeStatGet() == 0) { + var_r28->work[0]++; + lbl_1_bss_3F0 = 0.0f; + omDelObjEx(lbl_1_bss_5B4, lbl_1_bss_414); + Hu3DCameraKill(lbl_1_data_A0[(lbl_1_bss_3FC >> 1) ^ 1]); + Hu3DCameraPerspectiveSet(lbl_1_data_A0[lbl_1_bss_3FC >> 1], 20.0f, 20.0f, 20000.0f, 1.2f); + Hu3DCameraViewportSet(lbl_1_data_A0[lbl_1_bss_3FC >> 1], 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(lbl_1_data_A0[lbl_1_bss_3FC >> 1], 0, 0, 0x280, 0x1E0); + var_r29 = &lbl_1_bss_0[lbl_1_bss_3FC >> 1]; + var_r29->unk_118.y = 5000.0f; + Hu3DModelPosSet(var_r29->unk_04->model[22], var_r29->unk_118.x, var_r29->unk_118.y, var_r29->unk_118.z); + Hu3DModelPosSet(var_r29->unk_04->model[24], var_r29->unk_118.x, var_r29->unk_118.y, var_r29->unk_118.z); + Hu3DModelAttrReset(var_r29->unk_04->model[24], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(var_r29->unk_04->model[24], HU3D_MOTATTR_PAUSE); + var_r29->unk_28.y = 8000.0f; + var_r29->unk_1C.y = 8000.0f; + var_r29->unk_1C.z = 5000.0f + var_r29->unk_118.z; + Hu3DCameraPosSetV(lbl_1_data_A0[lbl_1_bss_3FC >> 1], &var_r29->unk_1C, &lbl_1_data_C8, &var_r29->unk_28); + var_r29->unk_4C = var_r29->unk_28; + var_r29->unk_58 = var_r29->unk_28; + var_r29->unk_34 = var_r29->unk_1C; + var_r29->unk_40 = var_r29->unk_1C; + var_r29->unk_58.y = 5200.0f; + var_r29->unk_40.y = 5200.0f; + var_r29->unk_40.z = 2000.0f + var_r29->unk_118.z; + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 0x3C); + lbl_1_bss_3F4 = HuAudFXPlay(0x69B); + } + break; + case 0x3F0: + var_r29 = &lbl_1_bss_0[lbl_1_bss_3FC >> 1]; + lbl_1_bss_3F0 += 1.0f; + var_f31 = lbl_1_bss_3F0 / 180.0f; + var_f30 = sind((90.0f * var_f31)) * sind((90.0f * var_f31)); + var_r29->unk_28.y = var_r29->unk_4C.y + (var_f30 * (var_r29->unk_58.y - var_r29->unk_4C.y)); + var_r29->unk_1C.y = var_r29->unk_34.y + (var_f30 * (var_r29->unk_40.y - var_r29->unk_34.y)); + if (90.0f < lbl_1_bss_3F0) { + var_f31 = (lbl_1_bss_3F0 - 90.0f) / 90.0f; + var_f30 = sind((90.0f * var_f31)) * sind((90.0f * var_f31)); + var_r29->unk_1C.z = var_r29->unk_34.z + (var_f30 * (var_r29->unk_40.z - var_r29->unk_34.z)); + } + Hu3DCameraPosSetV(lbl_1_data_A0[lbl_1_bss_3FC >> 1], &var_r29->unk_1C, &lbl_1_data_C8, &var_r29->unk_28); + if (180.0f <= lbl_1_bss_3F0) { + var_r28->work[0]++; + lbl_1_bss_3F0 = 0.0f; + } + break; + case 0x3F1: + if (lbl_1_bss_576 < 0) { + if (lbl_1_bss_3FC < 0) { + lbl_1_bss_576 = MGSeqCreate(3, 2); + HuAudSStreamPlay(4); + } + else { + lbl_1_bss_576 = MGSeqCreate(5, 3, fn_1_51A8(lbl_1_bss_3FC)->unk_18C, fn_1_51A8(lbl_1_bss_3FC + 1)->unk_18C, -1, -1); + HuAudSStreamPlay(1); + } + } + else { + lbl_1_bss_3F0 += 1.0f; + if (0 <= lbl_1_bss_3FC) { } + if ((210.0f < lbl_1_bss_3F0) && (MGSeqStatGet(lbl_1_bss_576) == 0)) { + fn_1_1F58(-1); + lbl_1_bss_576 = -1; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 0x3C); + var_r28->func = fn_1_1615C; + } + } + break; + default: + OSReport("*** main mode error(%d)!!\n", var_r28->work[0]); + break; + } + fn_1_A40(); + if ((lbl_1_bss_3FC >= 0) && (var_r28->work[0] >= 0x3F0)) { + var_r29 = &lbl_1_bss_0[lbl_1_bss_3FC >> 1]; + var_r29->unk_118.y = 5000.0 + (10.0 * sind((lbl_1_bss_580 * 4))); + Hu3DModelPosSet(var_r29->unk_04->model[22], var_r29->unk_118.x, var_r29->unk_118.y, var_r29->unk_118.z); + } + sp98.x = 0.0f; + sp98.y = 0.0f; + sp98.z = 0.0f; + for (var_r26 = 0; var_r26 < 4; var_r26++) { + sp7C[0] = lbl_1_bss_410[var_r26]->data; + sp98.x += sp7C[0]->unk_00.unk_6C.x; + sp98.z += sp7C[0]->unk_00.unk_6C.z; + } + sp98.x *= 0.25f; + sp98.z *= 0.25f; + var_f27 = 0.0f; + for (var_r26 = 0; var_r26 < 4; var_r26++) { + var_f26 = VECDistance(&sp98, &((UnkM432DllStruct *)lbl_1_bss_410[var_r26]->data)->unk_00.unk_6C); + if (var_f27 < var_f26) { + var_f27 = var_f26; + } + } + + fn_1_52B8_inline(&sp80, sp98.x, 0.0f, sp98.z); + + sp98.y = 6.0f * var_f27; + sp98.z += 1000.0f; + VECNormalize(&sp98, &sp8C); + Hu3DShadowPosSet(&sp98, &sp8C, &sp80); + fn_1_2D8(); +} + +void fn_1_15320(omObjData *object) +{ + s32 var_r31; + object->work[0] = 0x3E8; + fn_1_B4C(80.0f, DATA_MAKE_NUM(DATADIR_M432, 0x1E)); + fn_1_9EC(); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_131A8; +} + +void ObjectSetup(void) +{ + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + + UnkBss0Struct *var_r31; + s32 var_r30; + float *var_r29; + UnkM432DllStruct *var_r28; + omObjData *var_r27; + s32 var_r26; + s32 var_r24; + s32 var_r23; + s32 var_r22; + s32 var_r21; + s32 var_r20; + + OSReport("******* M432 ObjectSetup *********\n"); + lbl_1_bss_5B4 = omInitObjMan(0x258, 0x2000); + omGameSysInit(lbl_1_bss_5B4); + nMap = 0; + nChar = 0; + lbl_1_bss_580 = 0; + lbl_1_bss_576 = -1; + lbl_1_bss_574 = -1; + lbl_1_bss_3FC = -1; + lbl_1_bss_3F8 = 0; + lbl_1_bss_570 = -1; + lbl_1_bss_3F4 = -1; + lbl_1_bss_57C = 0; + lbl_1_bss_578 = GWMGRecordGet(3); + lbl_1_bss_568 = -1.0f; + if (lbl_1_bss_578 == 0) { + lbl_1_bss_578 = 0x1C20; + } + fn_1_414(); + for (var_r30 = 0; var_r30 < 2; var_r30++) { + lbl_1_bss_0[var_r30].unk_08 = NULL; + lbl_1_bss_0[var_r30].unk_18 = 0; + lbl_1_bss_0[var_r30].unk_28.x = -800.0f + (1600.0f * var_r30); + lbl_1_bss_0[var_r30].unk_28.y = 0.0f; + lbl_1_bss_0[var_r30].unk_28.z = -300.0f; + lbl_1_bss_0[var_r30].unk_1E4 = 0.0f; + lbl_1_bss_0[var_r30].unk_64 = 0.0f; + lbl_1_bss_0[var_r30].unk_68 = 3900.0f; + lbl_1_bss_0[var_r30].unk_6C = 3250.0f; + lbl_1_bss_0[var_r30].unk_1E8 = 0.0f; + lbl_1_bss_0[var_r30].unk_70 = 0.0f; + lbl_1_bss_0[var_r30].unk_74 = 0.0f; + lbl_1_bss_0[var_r30].unk_78 = 0.0f; + lbl_1_bss_0[var_r30].unk_7C = 0.0f; + lbl_1_bss_0[var_r30].unk_80 = 0.0f; + lbl_1_bss_0[var_r30].unk_84 = 0.0f; + lbl_1_bss_0[var_r30].unk_124 = 0.0f; + lbl_1_bss_0[var_r30].unk_128 = 0.0f; + lbl_1_bss_0[var_r30].unk_12C = 0.0f; + lbl_1_bss_0[var_r30].unk_1B8 = frandmod(5); + lbl_1_bss_0[var_r30].unk_1BC = frandmod(9); + lbl_1_bss_0[var_r30].unk_1CC = -1; + lbl_1_bss_0[var_r30].unk_1D0 = -1; + lbl_1_bss_0[var_r30].unk_1D4 = 0.0f; + lbl_1_bss_0[var_r30].unk_1D8 = -1; + lbl_1_bss_0[var_r30].unk_1DC = 0.0f; + } + Hu3DCameraCreate(3); + Hu3DCameraPerspectiveSet(3, 20.0f, 20.0f, 20000.0f, 0.6f); + fn_1_12EA8(); + for (var_r29 = lbl_1_data_A8, var_r30 = 0; var_r30 < 2; var_r30++, var_r29 += 4) { + Hu3DCameraViewportSet(lbl_1_data_A0[var_r30], var_r29[0], var_r29[1], var_r29[2], var_r29[3], 0.0f, 1.0f); + Hu3DCameraScissorSet(lbl_1_data_A0[var_r30], var_r29[0], var_r29[1], var_r29[2], var_r29[3]); + } + var_r20 = Hu3DGLightCreateV(&lbl_1_data_D4, &lbl_1_data_E0, &lbl_1_data_EC); + Hu3DGLightStaticSet(var_r20, 0); + Hu3DGLightInfinitytSet(var_r20); + Hu3DShadowCreate(30.0f, 20.0f, 20000.0f); + Hu3DShadowTPLvlSet(0.5f); + VECNormalize(&lbl_1_data_F0, &sp8); + Hu3DShadowPosSet(&lbl_1_data_F0, &sp8, &lbl_1_data_FC); + fn_1_2C00(fn_1_AA00, 0.0f); + omMakeGroupEx(lbl_1_bss_5B4, 2, 4); + lbl_1_bss_410 = omGetGroupMemberListEx(lbl_1_bss_5B4, 2); + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r27 = omAddObjEx(lbl_1_bss_5B4, 0x68, 1, 0xB, 2, fn_1_10CCC); + var_r27->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM432DllStruct), MEMORY_DEFAULT_NUM); + var_r27->work[0] = var_r30; + var_r28 = var_r27->data; + var_r28->unk_184 = -1; + var_r28->unk_188 = var_r27->work[0]; + var_r28->unk_194 = GWPlayerCfg[var_r28->unk_188].group; + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r22 = -1; + var_r21 = 0x28; + for (var_r26 = 0; var_r26 < 4; var_r26++) { + var_r28 = lbl_1_bss_410[var_r26]->data; + if (var_r28->unk_184 < 0) { + var_r23 = var_r28->unk_188 + (var_r28->unk_194 * 4); + if (var_r21 > var_r23) { + var_r21 = var_r23; + var_r22 = var_r26; + } + } + } + ((UnkM432DllStruct *)lbl_1_bss_410[var_r22]->data)->unk_184 = var_r30; + } + for (var_r30 = 0; var_r30 < 2; var_r30++) { + lbl_1_bss_0[var_r30].unk_04 = omAddObjEx(lbl_1_bss_5B4, 0x64, 0x1A, 0, 0, fn_1_113F4); + lbl_1_bss_0[var_r30].unk_04->work[0] = var_r30; + lbl_1_bss_0[var_r30].unk_00 = omAddObjEx(lbl_1_bss_5B4, 0x65, 1, 0, 1, fn_1_12804); + lbl_1_bss_0[var_r30].unk_00->work[0] = var_r30; + MapObject[nMap++] = lbl_1_bss_0[var_r30].unk_00; + } + fn_1_150(); + lbl_1_bss_408 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M432, 0x28)); + HuSprAnimLock(lbl_1_bss_408); + lbl_1_bss_404 = Hu3DParManCreate(lbl_1_bss_408, 0x1F4, &lbl_1_data_1814); + Hu3DParManAttrSet(lbl_1_bss_404, 1); + lbl_1_bss_402 = 0; + fn_1_0(); + omMakeGroupEx(lbl_1_bss_5B4, 3, 0xF0); + lbl_1_bss_418 = omGetGroupMemberListEx(lbl_1_bss_5B4, 3); + lbl_1_bss_400 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M432, 0x09)); + Hu3DModelAttrSet(lbl_1_bss_400, HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(lbl_1_bss_400, HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + lbl_1_bss_414 = omAddObjEx(lbl_1_bss_5B4, 0x66, 0, 0, -1, fn_1_128C8); + lbl_1_bss_41C = omAddObjEx(lbl_1_bss_5B4, 0x69, 0x1A, 0, -1, fn_1_15320); + lbl_1_bss_41C->work[0] = 0x3E8; +} + +void fn_1_1615C(omObjData *arg0) +{ + s32 var_r31; + + if (lbl_1_bss_3F4 >= 0) { + lbl_1_bss_3F4 = -1; + HuAudFXStop(lbl_1_bss_3F4); + } + if (WipeStatGet() == 0) { + if (lbl_1_bss_576 >= 0) { + MGSeqKill(lbl_1_bss_576); + } + if (lbl_1_bss_574 >= 0) { + MGSeqKill(lbl_1_bss_574); + } + MGSeqKillAll(); + HuAudAllStop(); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + CharModelKill(lbl_1_data_0[GWPlayerCfg[var_r31].character]); + } + omOvlReturnEx(1, 1); + } +}