From 99916550a77a49a35fab383a1d8e214b320a90ca Mon Sep 17 00:00:00 2001 From: dbalatoni13 Date: Sun, 3 Nov 2024 22:35:25 +0100 Subject: [PATCH] Matched m450Dll --- config/GMPE01_00/rels/m450Dll/symbols.txt | 479 +- configure.py | 2 +- src/REL/m450Dll/main.c | 7299 ++++++++++++++++++++- 3 files changed, 7539 insertions(+), 241 deletions(-) diff --git a/config/GMPE01_00/rels/m450Dll/symbols.txt b/config/GMPE01_00/rels/m450Dll/symbols.txt index 8f6a0e14..6adc8754 100644 --- a/config/GMPE01_00/rels/m450Dll/symbols.txt +++ b/config/GMPE01_00/rels/m450Dll/symbols.txt @@ -184,204 +184,206 @@ fn_1_23330 = .text:0x00023330; // type:function size:0x440 fn_1_23770 = .text:0x00023770; // type:function size:0x530 fn_1_23CA0 = .text:0x00023CA0; // type:function size:0x980 fn_1_24620 = .text:0x00024620; // type:function size:0x4A0C -fn_1_2902C = .text:0x0002902C; // type:function size:0x8C0 +ObjectSetup = .text:0x0002902C; // type:function size:0x8C0 fn_1_298EC = .text:0x000298EC; // type:function size:0xD0 _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_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x1 data:byte -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:0x8 data:double -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 data:4byte -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x58 -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:0x8 data:4byte -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x58 -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:4byte -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x8 data:4byte -lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:4byte -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float -lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float -lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float -lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float -lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 data:double -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 data:double -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float -lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float -lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 data:double -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x8 data:double -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float -lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float -lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float -lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float -lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float -lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float -lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 data:double -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float -lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float -lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float -lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:double -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float -lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 data:float -lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float -lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 data:float -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float -lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float -lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float -lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 data:double -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float -lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float -lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float -lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x8 data:double -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float -lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 data:float -lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float -lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 data:double -lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 data:double -lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x8 data:double -lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x8 data:double +__fakeHalf = .rodata:0x00000000; // type:object size:0x8 data:double +__fakeThree = .rodata:0x00000008; // type:object size:0x8 data:double +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size: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_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:byte +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:0x8 scope:local data:double +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x58 scope:local +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:0x8 scope:local data:4byte +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x58 scope:local +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float +lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 scope:local data:double +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 scope:local data:double +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x8 scope:local data:double +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 scope:local data:double +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x8 scope:local data:double +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 scope:local data:double +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 scope:local data:double +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x8 scope:local data:double +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x8 scope:local data:double 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_9F = .data:0x0000009F; // type:object size:0xD +lbl_1_data_80 = .data:0x00000080; // type:object size:0x1F scope:local data:string +lbl_1_data_9F = .data:0x0000009F; // type:object size:0xC data:byte lbl_1_data_AC = .data:0x000000AC; // type:object size:0x8 lbl_1_data_B4 = .data:0x000000B4; // type:object size:0x4C lbl_1_data_100 = .data:0x00000100; // type:object size:0x14 -lbl_1_data_114 = .data:0x00000114; // type:object size:0x3C -lbl_1_data_150 = .data:0x00000150; // type:object size:0x3C -lbl_1_data_18C = .data:0x0000018C; // type:object size:0x20 -lbl_1_data_1AC = .data:0x000001AC; // type:object size:0x20 -lbl_1_data_1CC = .data:0x000001CC; // type:object size:0x10 -lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x28 -lbl_1_data_204 = .data:0x00000204; // type:object size:0x30 -lbl_1_data_234 = .data:0x00000234; // type:object size:0x20 -lbl_1_data_254 = .data:0x00000254; // type:object size:0x14 -lbl_1_data_268 = .data:0x00000268; // type:object size:0x14 -lbl_1_data_27C = .data:0x0000027C; // type:object size:0x14 -lbl_1_data_290 = .data:0x00000290; // type:object size:0x14 -lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0x12 data:string -lbl_1_data_2B6 = .data:0x000002B6; // type:object size:0x13 data:string -lbl_1_data_2C9 = .data:0x000002C9; // type:object size:0x14 data:string -lbl_1_data_2DD = .data:0x000002DD; // type:object size:0x1C data:string -lbl_1_data_2F9 = .data:0x000002F9; // type:object size:0x12 data:string -lbl_1_data_30B = .data:0x0000030B; // type:object size:0x11 +lbl_1_data_114 = .data:0x00000114; // type:object size:0x3C data:4byte +lbl_1_data_150 = .data:0x00000150; // type:object size:0x3C data:4byte +lbl_1_data_18C = .data:0x0000018C; // type:object size:0x20 data:4byte +lbl_1_data_1AC = .data:0x000001AC; // type:object size:0x20 data:4byte +lbl_1_data_1CC = .data:0x000001CC; // type:object size:0x10 data:4byte +lbl_1_data_1DC = .data:0x000001DC; // type:object size:0x28 data:float +lbl_1_data_204 = .data:0x00000204; // type:object size:0x30 data:float +lbl_1_data_234 = .data:0x00000234; // type:object size:0x20 data:float +lbl_1_data_254 = .data:0x00000254; // type:object size:0x14 data:float +lbl_1_data_268 = .data:0x00000268; // type:object size:0x14 data:float +lbl_1_data_27C = .data:0x0000027C; // type:object size:0x14 data:float +lbl_1_data_290 = .data:0x00000290; // type:object size:0x14 data:float +lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0x12 scope:local data:string +lbl_1_data_2B6 = .data:0x000002B6; // type:object size:0x13 scope:local data:string +lbl_1_data_2C9 = .data:0x000002C9; // type:object size:0x14 scope:local data:string +lbl_1_data_2DD = .data:0x000002DD; // type:object size:0x1C scope:local data:string +lbl_1_data_2F9 = .data:0x000002F9; // type:object size:0x12 scope:local data:string +lbl_1_data_30B = .data:0x0000030B; // type:object size:0x11 scope:local data:string jumptable_1_data_31C = .data:0x0000031C; // type:object size:0x60 scope:local -lbl_1_data_37C = .data:0x0000037C; // type:object size:0x12 data:string -lbl_1_data_38E = .data:0x0000038E; // type:object size:0x12 data:string -lbl_1_data_3A0 = .data:0x000003A0; // type:object size:0x13 data:string -lbl_1_data_3B3 = .data:0x000003B3; // type:object size:0x14 data:string -lbl_1_data_3C7 = .data:0x000003C7; // type:object size:0x14 data:string -lbl_1_data_3DB = .data:0x000003DB; // type:object size:0x13 data:string -lbl_1_data_3EE = .data:0x000003EE; // type:object size:0x1E +lbl_1_data_37C = .data:0x0000037C; // type:object size:0x12 scope:local data:string +lbl_1_data_38E = .data:0x0000038E; // type:object size:0x12 scope:local data:string +lbl_1_data_3A0 = .data:0x000003A0; // type:object size:0x13 scope:local data:string +lbl_1_data_3B3 = .data:0x000003B3; // type:object size:0x14 scope:local data:string +lbl_1_data_3C7 = .data:0x000003C7; // type:object size:0x14 scope:local data:string +lbl_1_data_3DB = .data:0x000003DB; // type:object size:0x13 scope:local data:string +lbl_1_data_3EE = .data:0x000003EE; // type:object size:0x1E scope:local data:string jumptable_1_data_40C = .data:0x0000040C; // type:object size:0x44 scope:local -lbl_1_data_450 = .data:0x00000450; // type:object size:0x14 +lbl_1_data_450 = .data:0x00000450; // type:object size:0x14 scope:local data:string lbl_1_data_464 = .data:0x00000464; // type:object size:0xC data:4byte lbl_1_data_470 = .data:0x00000470; // type:object size:0xC lbl_1_data_47C = .data:0x0000047C; // type:object size:0xC data:4byte lbl_1_data_488 = .data:0x00000488; // type:object size:0xC data:4byte lbl_1_data_494 = .data:0x00000494; // type:object size:0xC data:4byte -lbl_1_data_4A0 = .data:0x000004A0; // type:object size:0xC data:4byte +lbl_1_data_4A0 = .data:0x000004A0; // type:object size:0xC data:float lbl_1_data_4AC = .data:0x000004AC; // type:object size:0xC data:4byte lbl_1_data_4B8 = .data:0x000004B8; // type:object size:0xC data:4byte lbl_1_data_4C4 = .data:0x000004C4; // type:object size:0xC data:4byte @@ -393,41 +395,41 @@ lbl_1_data_500 = .data:0x00000500; // type:object size:0x4 lbl_1_data_504 = .data:0x00000504; // type:object size:0xC lbl_1_data_510 = .data:0x00000510; // type:object size:0xC lbl_1_data_51C = .data:0x0000051C; // type:object size:0x30 -lbl_1_data_54C = .data:0x0000054C; // type:object size:0x10 data:string -lbl_1_data_55C = .data:0x0000055C; // type:object size:0x10 data:string -lbl_1_data_56C = .data:0x0000056C; // type:object size:0x10 data:string -lbl_1_data_57C = .data:0x0000057C; // type:object size:0x10 data:string -lbl_1_data_58C = .data:0x0000058C; // type:object size:0x10 data:string -lbl_1_data_59C = .data:0x0000059C; // type:object size:0x10 data:string -lbl_1_data_5AC = .data:0x000005AC; // type:object size:0x10 data:string -lbl_1_data_5BC = .data:0x000005BC; // type:object size:0x10 data:string +lbl_1_data_54C = .data:0x0000054C; // type:object size:0x10 scope:local data:string +lbl_1_data_55C = .data:0x0000055C; // type:object size:0x10 scope:local data:string +lbl_1_data_56C = .data:0x0000056C; // type:object size:0x10 scope:local data:string +lbl_1_data_57C = .data:0x0000057C; // type:object size:0x10 scope:local data:string +lbl_1_data_58C = .data:0x0000058C; // type:object size:0x10 scope:local data:string +lbl_1_data_59C = .data:0x0000059C; // type:object size:0x10 scope:local data:string +lbl_1_data_5AC = .data:0x000005AC; // type:object size:0x10 scope:local data:string +lbl_1_data_5BC = .data:0x000005BC; // type:object size:0x10 scope:local data:string lbl_1_data_5CC = .data:0x000005CC; // type:object size:0x80 lbl_1_data_64C = .data:0x0000064C; // type:object size:0x2E0 lbl_1_data_92C = .data:0x0000092C; // type:object size:0x20 -lbl_1_data_94C = .data:0x0000094C; // type:object size:0xA0 +lbl_1_data_94C = .data:0x0000094C; // type:object size:0xA0 data:float lbl_1_data_9EC = .data:0x000009EC; // type:object size:0x20 lbl_1_data_A0C = .data:0x00000A0C; // type:object size:0x38 data:4byte -lbl_1_data_A44 = .data:0x00000A44; // type:object size:0x13 data:string -lbl_1_data_A57 = .data:0x00000A57; // type:object size:0x13 data:string -lbl_1_data_A6A = .data:0x00000A6A; // type:object size:0x16 +lbl_1_data_A44 = .data:0x00000A44; // type:object size:0x13 scope:local data:string +lbl_1_data_A57 = .data:0x00000A57; // type:object size:0x13 scope:local data:string +lbl_1_data_A6A = .data:0x00000A6A; // type:object size:0x16 scope:local data:string lbl_1_data_A80 = .data:0x00000A80; // type:object size:0x18C -lbl_1_data_C0C = .data:0x00000C0C; // type:object size:0x13 data:string -lbl_1_data_C1F = .data:0x00000C1F; // type:object size:0x13 data:string -lbl_1_data_C32 = .data:0x00000C32; // type:object size:0x13 data:string -lbl_1_data_C45 = .data:0x00000C45; // type:object size:0x13 data:string +lbl_1_data_C0C = .data:0x00000C0C; // type:object size:0x13 scope:local data:string +lbl_1_data_C1F = .data:0x00000C1F; // type:object size:0x13 scope:local data:string +lbl_1_data_C32 = .data:0x00000C32; // type:object size:0x13 scope:local data:string +lbl_1_data_C45 = .data:0x00000C45; // type:object size:0x13 scope:local data:string lbl_1_data_C58 = .data:0x00000C58; // type:object size:0x1B8 -lbl_1_data_E10 = .data:0x00000E10; // type:object size:0x11 data:string -lbl_1_data_E21 = .data:0x00000E21; // type:object size:0x11 data:string -lbl_1_data_E32 = .data:0x00000E32; // type:object size:0x11 data:string -lbl_1_data_E43 = .data:0x00000E43; // type:object size:0x11 data:string -lbl_1_data_E54 = .data:0x00000E54; // type:object size:0x14 +lbl_1_data_E10 = .data:0x00000E10; // type:object size:0x11 scope:local data:string +lbl_1_data_E21 = .data:0x00000E21; // type:object size:0x11 scope:local data:string +lbl_1_data_E32 = .data:0x00000E32; // type:object size:0x11 scope:local data:string +lbl_1_data_E43 = .data:0x00000E43; // type:object size:0x11 scope:local data:string +lbl_1_data_E54 = .data:0x00000E54; // type:object size:0x14 scope:local data:string lbl_1_data_E68 = .data:0x00000E68; // type:object size:0x14 lbl_1_data_E7C = .data:0x00000E7C; // type:object size:0x84 lbl_1_data_F00 = .data:0x00000F00; // type:object size:0x5C lbl_1_data_F5C = .data:0x00000F5C; // type:object size:0x10 lbl_1_data_F6C = .data:0x00000F6C; // type:object size:0x18 -lbl_1_data_F84 = .data:0x00000F84; // type:object size:0x14 -lbl_1_data_F98 = .data:0x00000F98; // type:object size:0x14 +lbl_1_data_F84 = .data:0x00000F84; // type:object size:0x14 data:float +lbl_1_data_F98 = .data:0x00000F98; // type:object size:0x14 data:float lbl_1_data_FAC = .data:0x00000FAC; // type:object size:0x18 lbl_1_data_FC4 = .data:0x00000FC4; // type:object size:0x14 lbl_1_data_FD8 = .data:0x00000FD8; // type:object size:0x14 @@ -451,47 +453,47 @@ lbl_1_data_1210 = .data:0x00001210; // type:object size:0xC lbl_1_data_121C = .data:0x0000121C; // type:object size:0xC lbl_1_data_1228 = .data:0x00001228; // type:object size:0xC lbl_1_data_1234 = .data:0x00001234; // type:object size:0x20 -lbl_1_data_1254 = .data:0x00001254; // type:object size:0x13 data:string -lbl_1_data_1267 = .data:0x00001267; // type:object size:0x13 data:string -lbl_1_data_127A = .data:0x0000127A; // type:object size:0x13 data:string -lbl_1_data_128D = .data:0x0000128D; // type:object size:0x13 data:string +lbl_1_data_1254 = .data:0x00001254; // type:object size:0x13 scope:local data:string +lbl_1_data_1267 = .data:0x00001267; // type:object size:0x13 scope:local data:string +lbl_1_data_127A = .data:0x0000127A; // type:object size:0x13 scope:local data:string +lbl_1_data_128D = .data:0x0000128D; // type:object size:0x13 scope:local data:string lbl_1_data_12A0 = .data:0x000012A0; // type:object size:0x10 -lbl_1_data_12B0 = .data:0x000012B0; // type:object size:0x13 data:string -lbl_1_data_12C3 = .data:0x000012C3; // type:object size:0x13 data:string -lbl_1_data_12D6 = .data:0x000012D6; // type:object size:0x13 data:string -lbl_1_data_12E9 = .data:0x000012E9; // type:object size:0x13 data:string -lbl_1_data_12FC = .data:0x000012FC; // type:object size:0x13 data:string -lbl_1_data_130F = .data:0x0000130F; // type:object size:0x13 data:string -lbl_1_data_1322 = .data:0x00001322; // type:object size:0x13 data:string -lbl_1_data_1335 = .data:0x00001335; // type:object size:0x13 data:string -lbl_1_data_1348 = .data:0x00001348; // type:object size:0x14 +lbl_1_data_12B0 = .data:0x000012B0; // type:object size:0x13 scope:local data:string +lbl_1_data_12C3 = .data:0x000012C3; // type:object size:0x13 scope:local data:string +lbl_1_data_12D6 = .data:0x000012D6; // type:object size:0x13 scope:local data:string +lbl_1_data_12E9 = .data:0x000012E9; // type:object size:0x13 scope:local data:string +lbl_1_data_12FC = .data:0x000012FC; // type:object size:0x13 scope:local data:string +lbl_1_data_130F = .data:0x0000130F; // type:object size:0x13 scope:local data:string +lbl_1_data_1322 = .data:0x00001322; // type:object size:0x13 scope:local data:string +lbl_1_data_1335 = .data:0x00001335; // type:object size:0x13 scope:local data:string +lbl_1_data_1348 = .data:0x00001348; // type:object size:0x14 scope:local data:string lbl_1_data_135C = .data:0x0000135C; // type:object size:0x24 lbl_1_data_1380 = .data:0x00001380; // type:object size:0x38 data:4byte lbl_1_data_13B8 = .data:0x000013B8; // type:object size:0x38 data:4byte -lbl_1_data_13F0 = .data:0x000013F0; // type:object size:0x13 data:string -lbl_1_data_1403 = .data:0x00001403; // type:object size:0x13 data:string -lbl_1_data_1416 = .data:0x00001416; // type:object size:0x13 data:string -lbl_1_data_1429 = .data:0x00001429; // type:object size:0x13 data:string -lbl_1_data_143C = .data:0x0000143C; // type:object size:0x14 +lbl_1_data_13F0 = .data:0x000013F0; // type:object size:0x13 scope:local data:string +lbl_1_data_1403 = .data:0x00001403; // type:object size:0x13 scope:local data:string +lbl_1_data_1416 = .data:0x00001416; // type:object size:0x13 scope:local data:string +lbl_1_data_1429 = .data:0x00001429; // type:object size:0x13 scope:local data:string +lbl_1_data_143C = .data:0x0000143C; // type:object size:0x14 scope:local data:string lbl_1_data_1450 = .data:0x00001450; // type:object size:0xB4 lbl_1_data_1504 = .data:0x00001504; // type:object size:0x50 -lbl_1_data_1554 = .data:0x00001554; // type:object size:0x13 data:string -lbl_1_data_1567 = .data:0x00001567; // type:object size:0x13 data:string -lbl_1_data_157A = .data:0x0000157A; // type:object size:0x13 data:string -lbl_1_data_158D = .data:0x0000158D; // type:object size:0x13 data:string -lbl_1_data_15A0 = .data:0x000015A0; // type:object size:0x13 data:string -lbl_1_data_15B3 = .data:0x000015B3; // type:object size:0x12 data:string -lbl_1_data_15C5 = .data:0x000015C5; // type:object size:0x25 data:string -lbl_1_data_15EA = .data:0x000015EA; // type:object size:0x22 data:string -lbl_1_data_160C = .data:0x0000160C; // type:object size:0x9 data:string -lbl_1_data_1615 = .data:0x00001615; // type:object size:0xA data:string -lbl_1_data_161F = .data:0x0000161F; // type:object size:0xE data:string -lbl_1_data_162D = .data:0x0000162D; // type:object size:0x6 data:string -lbl_1_data_1633 = .data:0x00001633; // type:object size:0x1D data:string +lbl_1_data_1554 = .data:0x00001554; // type:object size:0x13 scope:local data:string +lbl_1_data_1567 = .data:0x00001567; // type:object size:0x13 scope:local data:string +lbl_1_data_157A = .data:0x0000157A; // type:object size:0x13 scope:local data:string +lbl_1_data_158D = .data:0x0000158D; // type:object size:0x13 scope:local data:string +lbl_1_data_15A0 = .data:0x000015A0; // type:object size:0x13 scope:local data:string +lbl_1_data_15B3 = .data:0x000015B3; // type:object size:0x12 scope:local data:string +lbl_1_data_15C5 = .data:0x000015C5; // type:object size:0x25 scope:local data:string +lbl_1_data_15EA = .data:0x000015EA; // type:object size:0x22 scope:local data:string +lbl_1_data_160C = .data:0x0000160C; // type:object size:0x9 scope:local data:string +lbl_1_data_1615 = .data:0x00001615; // type:object size:0xA scope:local data:string +lbl_1_data_161F = .data:0x0000161F; // type:object size:0xE scope:local data:string +lbl_1_data_162D = .data:0x0000162D; // type:object size:0x6 scope:local data:string +lbl_1_data_1633 = .data:0x00001633; // type:object size:0x1D scope:local data:string jumptable_1_data_1650 = .data:0x00001650; // type:object size:0x70 scope:local -lbl_1_data_16C0 = .data:0x000016C0; // type:object size:0x1C +lbl_1_data_16C0 = .data:0x000016C0; // type:object size:0x1C scope:local data:string jumptable_1_data_16DC = .data:0x000016DC; // type:object size:0xC4 scope:local -lbl_1_data_17A0 = .data:0x000017A0; // type:object size:0x24 data:string +lbl_1_data_17A0 = .data:0x000017A0; // type:object size:0x24 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte @@ -528,7 +530,8 @@ lbl_1_bss_118 = .bss:0x00000118; // type:object size:0x4 data:4byte lbl_1_bss_11C = .bss:0x0000011C; // type:object size:0x4 data:4byte lbl_1_bss_120 = .bss:0x00000120; // type:object size:0x4 data:4byte lbl_1_bss_124 = .bss:0x00000124; // type:object size:0x4 data:float -lbl_1_bss_128 = .bss:0x00000128; // type:object size:0x8 data:float +lbl_1_bss_128 = .bss:0x00000128; // type:object size:0x4 data:float +lbl_1_bss_12C = .bss:0x0000012C; // type:object size:0x4 data:float lbl_1_bss_130 = .bss:0x00000130; // type:object size:0x4 data:4byte lbl_1_bss_134 = .bss:0x00000134; // type:object size:0x4 data:4byte lbl_1_bss_138 = .bss:0x00000138; // type:object size:0x4 data:4byte diff --git a/configure.py b/configure.py index 86b02def..933a7b2b 100644 --- a/configure.py +++ b/configure.py @@ -1202,7 +1202,7 @@ config.libs = [ Rel( "m450Dll", # The Final Battle! objects={ - Object(NonMatching, "REL/m450Dll/main.c"), + Object(Matching, "REL/m450Dll/main.c"), }, ), Rel( diff --git a/src/REL/m450Dll/main.c b/src/REL/m450Dll/main.c index c60c4a31..6876625f 100644 --- a/src/REL/m450Dll/main.c +++ b/src/REL/m450Dll/main.c @@ -1,11 +1,21 @@ #include "REL/executor.h" +#include "datadir_enum.h" +#include "dolphin/gx/GXEnum.h" +#include "dolphin/gx/GXStruct.h" +#include "dolphin/gx/GXVert.h" +#include "dolphin/mtx/GeoTypes.h" +#include "dolphin/pad.h" +#include "dolphin/types.h" #include "game/chrman.h" +#include "game/data.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" @@ -23,6 +33,16 @@ #include "ext_math.h" #include "rel_sqrt_consts.h" +#include "game/window.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)) @@ -403,9 +423,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]; @@ -478,3 +498,7278 @@ void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3) } VECAdd((Vec *)&arg0, &sp18, (Vec *)&arg0); } + +typedef struct UnkData1380Struct { + /* 0x00 */ char **unk_00; + /* 0x04 */ float unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ s32 unk_0C; + /* 0x10 */ s32 unk_10; + /* 0x14 */ s32 unk_14; + /* 0x18 */ s32 unk_18; + /* 0x1C */ s32 unk_1C; + /* 0x20 */ s32 unk_20; + /* 0x24 */ s32 *unk_24; + /* 0x28 */ s32 *unk_28; + /* 0x2C */ s32 *unk_2C; + /* 0x30 */ Vec *unk_30; + /* 0x34 */ Vec *unk_34; +} UnkData1380Struct; /* size = 0x38 */ + +typedef struct UnkData1450Struct { + /* 0x00 */ char *unk_00; + /* 0x04 */ Vec unk_04; + /* 0x10 */ float unk_10; + /* 0x14 */ float unk_14; + /* 0x18 */ s32 unk_18; + /* 0x1C */ s32 unk_1C; + /* 0x20 */ s32 unk_20; +} UnkData1450Struct; /* size = 0x24 */ + +typedef struct UnkData5CCStruct { + /* 0x00 */ char *unk_00; + /* 0x04 */ u32 unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ float unk_0C; +} UnkData5CCStruct; /* size = 0x10 */ + +typedef struct UnkDataA0CStruct { + /* 0x00 */ s32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ s32 unk_08; + /* 0x0C */ s32 unk_0C; + /* 0x10 */ s32 unk_10; + /* 0x14 */ s32 unk_14; + /* 0x18 */ s32 *unk_18; +} UnkDataA0CStruct; /* size = 0x1C */ + +typedef struct UnkData94CStruct { + /* 0x00 */ s32 unk_00; + /* 0x00 */ float unk_04; + /* 0x00 */ float unk_08; + /* 0x00 */ float unk_0C; + /* 0x00 */ u32 unk_10; +} UnkData94CStruct; /* size = 0x14 */ + +typedef struct UnkDataA80Struct { + char *unk_00; + Vec unk_04; + s32 unk_10; + float unk_14; + Vec unk_18; + s32 unk_24; + s32 unk_28; +} UnkDataA80Struct; /* size = 0x2C */ + +typedef struct UnkData204Struct { + float unk_00; + s32 unk_04; +} UnkData204Struct; /* size = 0x08 */ + +// 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); + +typedef struct UnkM450Struct5 { + WorkPlayerOld unk_00; + UnkData94CStruct *unk_C4; + float unk_C8; + float unk_CC; + Vec unk_D0; + Vec unk_DC; + float unk_E8; + float unk_EC; + s32 unk_F0; + s32 unk_F4; + float unk_F8; + u32 unk_FC; + s32 unk_100; + s32 unk_104; + s32 unk_108; + s32 unk_10C; + s32 unk_110; + s32 unk_114; + s32 unk_118; + s32 unk_11C; + s32 unk_120; +} UnkM450Struct5; /* size = 0x124 */ + +typedef struct UnkM450Struct4 { + Vec unk_00; + Vec unk_0C; + Vec unk_18; + Vec unk_24; + Vec unk_30; + float unk_3C; + float unk_40; + float unk_44; + float unk_48; + float unk_4C; + float unk_50; + s32 unk_54; + s32 unk_58; + float unk_5C; + float unk_60; + Vec unk_64; + s32 unk_70; + s32 unk_74; + s32 unk_78; + s32 unk_7C; +} UnkM450Struct4; /* size = 0x80 */ + +typedef struct UnkM450Struct3 { + WorkPlayerOld unk_00; + UnkData204Struct *unk_C4; + Vec2f *unk_C8; + char *unk_CC; + float *unk_D0; + Vec unk_D4; + float unk_E0; + float unk_E4; + float unk_E8; + float unk_EC; + float unk_F0; + float unk_F4; + s32 unk_F8; + s32 unk_FC; + float unk_100; + float unk_104; + float unk_108; + s32 unk_10C; + s32 unk_110; + Vec unk_114; + Vec unk_120; + s32 unk_12C; + s32 unk_130; + s32 unk_134; + s32 unk_138; + s32 unk_13C; + s32 unk_140; + float unk_144; + s32 unk_148; + s32 unk_14C; + s32 unk_150; + u32 unk_154; +} UnkM450Struct3; /* size = 0x158 */ + +typedef struct UnkM450Struct2 { + s32 unk_00; + Vec unk_04; + float unk_10; + float unk_14; + float unk_18; + float unk_1C; + float unk_20; + float unk_24; + float unk_28; + float unk_2C; + Vec unk_30; + s16 unk_3C; + s16 unk_3E; +} UnkM450Struct2; /* size = 0x40 */ + +typedef void (*UnkM450ModelFunc)(ModelData *, struct UnkM450Struct *, Mtx); + +typedef struct UnkM450Struct { + UnkM450ModelFunc unk_00; + AnimData *unk_04; + Vec *unk_08; + float *unk_0C; + UnkM450Struct2 *unk_10; + Vec *unk_14; + Vec2f *unk_18; + Vec2f *unk_1C; + GXColor *unk_20; + void *unk_24; + Vec unk_28; + float unk_34; + float unk_38; + float unk_3C; + float unk_40; + float unk_44; + float unk_48; + float unk_4C; + float unk_50; + float unk_54; + u32 unk_58; + float unk_5C; + float unk_60; + s16 unk_64; + s16 unk_66; + s16 unk_68; + u8 unk_6A; + u8 unk_6B; +} UnkM450Struct; /* size = 0x6C */ + +s32 fn_1_125C0(s32 arg0, s32 arg1); +s32 fn_1_13B90(s32 arg0); +Vec *fn_1_16314(s32 arg0); +void fn_1_16BC4(Vec *arg0, Vec *arg1, s32 arg2); +void fn_1_17360(Vec *arg0, float arg8); +void fn_1_17970(s32 arg0, s32 arg1, float arg8); +void fn_1_18424(s32 arg0, Vec *arg1); +void fn_1_186A8(); +s32 fn_1_1964C(Vec *arg0, Vec *arg1); +s32 fn_1_19798(); +s32 fn_1_19A10(WorkPlayerOld *arg0, Vec *arg1); +s32 fn_1_1B4C8(UnkM450Struct5 *arg0); +void fn_1_1B510(s32 arg0); +s32 fn_1_1C39C(UnkM450Struct5 *arg0); +void fn_1_20170(omObjData *object); +void fn_1_2902C(); +void fn_1_298EC(omObjData *object); +void fn_1_A968(s32 arg0, float arg8, u32 arg1, s32 arg2, float arg9); +s32 fn_1_E0E8(s32 arg0, s32 arg1); +s32 fn_1_E178(s32 arg0, s32 arg1); +void fn_1_E1A8(s32 arg0, s32 arg1, float arg8, u32 arg2, s32 arg3, float arg9); + +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, +}; + +PlayerOldFind lbl_1_bss_1AC; +float lbl_1_bss_1A8; +omObjData *lbl_1_bss_1A4; +omObjData *lbl_1_bss_1A0; +omObjData *lbl_1_bss_144[0x17]; +omObjData **lbl_1_bss_140; +omObjData **lbl_1_bss_13C; +// data: UnkM450Struct5 +omObjData *lbl_1_bss_138; +// data: UnkM450Struct3 +omObjData *lbl_1_bss_134; +// data: UnkM450Struct3 +omObjData **lbl_1_bss_130; +float lbl_1_bss_12C; +float lbl_1_bss_128; +float lbl_1_bss_124; +s32 lbl_1_bss_120; +s32 lbl_1_bss_11C; +s32 lbl_1_bss_118; +s32 lbl_1_bss_114; +s32 lbl_1_bss_110; +s32 lbl_1_bss_10C; +s32 lbl_1_bss_108; +UnkDataA80Struct *lbl_1_bss_104; +s32 lbl_1_bss_100; +UnkData1380Struct *lbl_1_bss_FC; +s32 lbl_1_bss_F8; +Vec lbl_1_bss_EC; +void *lbl_1_bss_E8[1]; +UnkM450Struct4 *lbl_1_bss_E4[1]; +UnkM450Struct4 *lbl_1_bss_DC[2]; +s32 lbl_1_bss_D8; +Vec lbl_1_bss_CC; +float lbl_1_bss_C8; +s32 lbl_1_bss_C4; +s32 lbl_1_bss_B8[3]; +Mtx lbl_1_bss_88; +Vec lbl_1_bss_4C[5]; +Vec lbl_1_bss_34[2]; +s16 lbl_1_bss_2C[4]; +AnimData *lbl_1_bss_28; +s16 lbl_1_bss_24; +s32 lbl_1_bss_20; +s32 lbl_1_bss_1C; +s32 lbl_1_bss_18; +AnimData *lbl_1_bss_14; +s32 lbl_1_bss_10; +s32 lbl_1_bss_C; +s32 lbl_1_bss_8; +s32 lbl_1_bss_4; +s32 lbl_1_bss_0; + +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_1AC = find; + lbl_1_bss_1A8 = 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, player->unk_9C, 0); +} + +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_1AC) { + return; + } + addTime = FALSE; + for (i = 0; i < 4; i++) { + WorkPlayerOld *player2 = lbl_1_bss_1AC(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)) { + player->unk_38 = 1; + player->unk_84.y = 26.766666f; + player->unk_A4 = 1; + if (player->unk_3C & 0x2) { + player->unk_3C &= ~0x2; + } + *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])) { + player->unk_38 = 1; + player->unk_84.y = 0; + player->unk_A4 = 0; + if (player->unk_3C & 0x2) { + player->unk_3C &= ~0x2; + } + } +} + +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_1A8; + } + 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 { + player->unk_38 = 1; + player->unk_84.y = 0.0f; + player->unk_A4 = 0.0f; + if ((player->unk_3C & 2) != 0) { + player->unk_3C &= ~2; + } + 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; +} + +void fn_1_5148(ModelData *model, UnkM450Struct *arg1, Mtx matrix) +{ + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + + UnkM450Struct2 *var_r31; + WorkPlayerOld *var_r29; + GXColor *var_r28; + s16 var_r27; + UnkM450Struct5 *var_r26; + + var_r26 = lbl_1_bss_138->data; + var_r29 = &var_r26->unk_00; + var_r31 = arg1->unk_10; + var_r28 = arg1->unk_20; + arg1->unk_66 = 0; + for (var_r27 = 0; var_r27 < arg1->unk_64; var_r27++, var_r31++, var_r28++) { + if (var_r31->unk_3E >= 0) { + var_r31->unk_10 += var_r31->unk_1C; + if (var_r31->unk_20 < var_r31->unk_10) { + var_r31->unk_3E = -1; + } + else { + arg1->unk_66++; + if (NULL != arg1->unk_08) { + var_r31->unk_04 = *arg1->unk_08; + } + if (NULL != arg1->unk_0C) { + var_r31->unk_14 = *arg1->unk_0C; + } + var_r31->unk_30.x = var_r31->unk_04.x + (var_r31->unk_10 * sind((var_r31->unk_14 + var_r31->unk_18))); + var_r31->unk_30.y = var_r31->unk_30.y + (0.03f * (var_r31->unk_24 - var_r31->unk_30.y)); + var_r31->unk_30.z = var_r31->unk_04.z + (var_r31->unk_10 * cosd((var_r31->unk_14 + var_r31->unk_18))); + var_f31 = var_r31->unk_10 / var_r31->unk_20; + var_f29 = 512.0 * cosd((90.0f * var_f31)); + var_r28->a = 255.0f < var_f29 ? 255.0f : var_f29; + var_r31->unk_3C = arg1->unk_68 * var_f31; + if (arg1->unk_68 <= var_r31->unk_3C) { + var_r31->unk_3C = arg1->unk_68 - 1; + } + var_f31 *= 2.0f; + if (1.0f < var_f31) { + var_f31 = 1.0f; + } + var_r31->unk_2C = sind((100.0f * var_f31)); + var_f30 = (26.666666f * var_r31->unk_2C) + var_r29->unk_BC; + sp14 = var_r29->unk_6C; + sp14.y += var_f30; + sp8 = var_r29->unk_6C; + sp8.y += var_r29->unk_C0 - var_f30; + if ((var_r31->unk_3C < 0xC) + && ((var_f30 > VECDistance(&sp14, &var_r31->unk_30)) || (var_f30 > VECDistance(&sp8, &var_r31->unk_30)))) { + var_r26->unk_FC |= 0x20; + } + } + } + } +} +void fn_1_5548(Vec *arg0, float *arg1) +{ + arg1[0] = arg0[0].x; + arg1[4] = arg0[0].y; + arg1[8] = arg0[0].z; + arg1[1] = arg0[1].y; + arg1[5] = arg0[1].z; + arg1[9] = arg0[2].x; + arg1[2] = arg0[2].z; + arg1[6] = arg0[3].x; + arg1[10] = arg0[3].y; + arg1[3] = 0.0f; + arg1[7] = 0.0f; + arg1[11] = 0.0f; +} + +void fn_1_55C4(Vec *arg0, Vec *arg1, s16 arg2, float arg8) +{ + s16 var_r31; + for (var_r31 = 0; var_r31 < arg2; var_r31++, arg0++, arg1++) { + arg1->x = arg0->x * arg8; + arg1->y = arg0->y * arg8; + arg1->z = arg0->z * arg8; + } +} + +void fn_1_5620(Vec2f *arg0, Vec2f *arg1, s16 arg2, float arg8, float arg9) +{ + arg0[0].x = arg1[arg2].x; + arg0[0].y = arg1[arg2].y; + arg0[1].x = arg8 + arg1[arg2].x; + arg0[1].y = arg1[arg2].y; + arg0[2].x = arg8 + arg1[arg2].x; + arg0[2].y = arg9 + arg1[arg2].y; + arg0[3].x = arg1[arg2].x; + arg0[3].y = arg9 + arg1[arg2].y; +} + +void fn_1_56C4(ModelData *arg0, Mtx arg1) +{ + Mtx sp130; + ROMtx sp100; + Mtx spD0; + Mtx spA0; + Vec sp70[4]; + Vec sp64; + Vec sp58; + Vec sp4C; + Vec sp40; + Vec sp34; + Vec sp28; + Vec sp1C; + Vec sp10; + UnkM450ModelFunc spC; + s16 sp8; + + UnkM450Struct *var_r31; + Vec *var_r30; + UnkM450Struct2 *var_r29; + Vec2f *var_r27; + s16 var_r19; + + var_r31 = arg0->unk_120; + if ((var_r31->unk_6B == 0) || (var_r31->unk_66 != 0)) { + GXLoadPosMtxImm(arg1, 0); + GXSetNumTevStages(1); + GXSetNumTexGens(1); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3C, GX_FALSE, 0x7D); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + sp8 = var_r31->unk_04->bmp->dataFmt & 0xF; + if ((sp8 == 8) || (sp8 == 7)) { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXA, GX_CC_RASC, GX_CC_ZERO); + } + else { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); + } + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + if ((arg0->attr & 2) != 0) { + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + } + else { + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); + } + HuSprTexLoad(var_r31->unk_04, 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZCompLoc(GX_FALSE); + switch (var_r31->unk_6A) { + case 0: + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + break; + case 1: + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); + break; + case 2: + GXSetBlendMode(GX_BM_BLEND, GX_BL_ZERO, GX_BL_INVDSTCLR, GX_LO_NOOP); + break; + } + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, var_r31->unk_14, 0xC); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, var_r31->unk_20, 4); + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_TEX0, var_r31->unk_18, 8); + sp130[0][0] = arg1[0][0]; + sp130[1][0] = arg1[0][1]; + sp130[2][0] = arg1[0][2]; + sp130[0][1] = arg1[1][0]; + sp130[1][1] = arg1[1][1]; + sp130[2][1] = arg1[1][2]; + sp130[0][2] = arg1[2][0]; + sp130[1][2] = arg1[2][1]; + sp130[2][2] = arg1[2][2]; + sp130[0][3] = 0.0f; + sp130[1][3] = 0.0f; + sp130[2][3] = 0.0f; + PSMTXReorder(sp130, sp100); + if ((omPauseChk() == 0) && (var_r31->unk_00)) { + spC = var_r31->unk_00; + spC(arg0, var_r31, arg1); + } + var_r29 = var_r31->unk_10; + var_r30 = var_r31->unk_14; + var_r27 = var_r31->unk_18; + PSMTXROMultVecArray(sp100, &var_r31->unk_28, sp70, 4); + for (var_r19 = 0; var_r19 < var_r31->unk_64; var_r19++, var_r29++, var_r27 += 4) { + if (var_r29->unk_3E < 0) { + var_r30->x = var_r30->y = var_r30->z = 0.0f; + var_r30++; + var_r30->x = var_r30->y = var_r30->z = 0.0f; + var_r30++; + var_r30->x = var_r30->y = var_r30->z = 0.0f; + var_r30++; + var_r30->x = var_r30->y = var_r30->z = 0.0f; + var_r30++; + } + else { + if (var_r29->unk_28 == 0.0f) { + fn_1_55C4(sp70, &sp40, 4, var_r29->unk_2C); + VECAdd(&sp40, &var_r29->unk_30, var_r30++); + VECAdd(&sp4C, &var_r29->unk_30, var_r30++); + VECAdd(&sp58, &var_r29->unk_30, var_r30++); + VECAdd(&sp64, &var_r29->unk_30, var_r30++); + } + else { + fn_1_55C4(&var_r31->unk_28, &sp40, 4, var_r29->unk_2C); + MTXRotRad(spD0, 0x5A, 0.017453292f * var_r29->unk_28); + MTXConcat(sp130, spD0, spA0); + MTXMultVecArray(spA0, &sp40, &sp10, 4); + VECAdd(&sp10, &var_r29->unk_30, var_r30++); + VECAdd(&sp1C, &var_r29->unk_30, var_r30++); + VECAdd(&sp28, &var_r29->unk_30, var_r30++); + VECAdd(&sp34, &var_r29->unk_30, var_r30++); + } + if (var_r29->unk_3C != -1) { + fn_1_5620(var_r27, var_r31->unk_1C, var_r29->unk_3C, var_r31->unk_5C, var_r31->unk_60); + } + } + } + DCFlushRangeNoSync(var_r31->unk_14, var_r31->unk_64 * 0xC * 4); + DCFlushRangeNoSync(var_r31->unk_18, var_r31->unk_64 * 8 * 4); + GXCallDisplayList(var_r31->unk_24, var_r31->unk_58); + } +} + +void fn_1_5E0C(Vec2f *arg0, s16 arg1, s16 arg2, float arg8, float arg9) +{ + s16 var_r31; + s16 var_r30; + s16 var_r29; + + (void)arg9; + (void)arg9; + (void)arg9; + (void)arg8; + (void)arg8; + (void)arg8; + + for (var_r31 = 0; var_r31 < arg1; var_r31++, arg0++) { + var_r30 = var_r31 % arg2; + var_r29 = var_r31 / arg2; + arg0->x = var_r30 * arg8; + arg0->y = var_r29 * arg9; + } +} + +s16 fn_1_5ED8(AnimData *arg0, Vec *arg1, float *arg2, s16 arg3, float arg8, s16 arg4, s16 arg5) +{ + void *sp1C; + + UnkM450Struct *var_r31; + s16 var_r30; + Vec2f *var_r29; + ModelData *var_r28; + GXColor *var_r26; + Vec *var_r25; + UnkM450Struct2 *var_r24; + s16 var_r21; + void *var_r19; + s16 var_r18; + s16 var_r17; + + var_r18 = Hu3DHookFuncCreate(fn_1_56C4); + var_r28 = &Hu3DData[var_r18]; + var_r28->unk_120 = HuMemDirectMallocNum(HEAP_DATA, sizeof(UnkM450Struct), var_r28->unk_48); + var_r31 = var_r28->unk_120; + arg0->useNum++; + var_r31->unk_04 = arg0; + var_r31->unk_08 = arg1; + var_r31->unk_0C = arg2; + var_r31->unk_64 = arg3; + var_r31->unk_6A = 0; + var_r31->unk_00 = 0; + var_r31->unk_66 = arg3; + var_r31->unk_6B = 0; + var_r31->unk_10 = HuMemDirectMallocNum(HEAP_DATA, arg3 * 0x40, var_r28->unk_48); + for (var_r24 = var_r31->unk_10, var_r30 = 0; var_r30 < arg3; var_r30++, var_r24++) { + var_r24->unk_3E = -1; + var_r24->unk_3C = -1; + } + var_r31->unk_14 = HuMemDirectMallocNum(HEAP_DATA, arg3 * sizeof(Vec) * 4, var_r28->unk_48); + for (var_r25 = var_r31->unk_14, var_r30 = 0; var_r30 < (arg3 * 4); var_r30++, var_r25++) { + var_r25->x = 0.0f; + var_r25->y = 0.0f; + var_r25->z = 0.0f; + } + var_r31->unk_20 = HuMemDirectMallocNum(HEAP_DATA, arg3 * sizeof(GXColor), var_r28->unk_48); + for (var_r26 = var_r31->unk_20, var_r30 = 0; var_r30 < arg3; var_r30++, var_r26++) { + var_r26->r = 0xFF; + var_r26->g = 0xFF; + var_r26->b = 0xFF; + var_r26->a = 0xFF; + } + var_r31->unk_18 = HuMemDirectMallocNum(HEAP_DATA, arg3 * sizeof(Vec2f) * 4, var_r28->unk_48); + var_r29 = var_r31->unk_18; + for (var_r30 = 0; var_r30 < arg3; var_r30++) { + var_r29->x = 0.0f; + var_r29->y = 0.0f; + var_r29++; + var_r29->x = 1.0f; + var_r29->y = 0.0f; + var_r29++; + var_r29->x = 1.0f; + var_r29->y = 1.0f; + var_r29++; + var_r29->x = 0.0f; + var_r29->y = 1.0f; + var_r29++; + } + if ((arg4 != 0) || (arg5 != 0)) { + var_r21 = arg0->bmp->sizeX / arg4; + var_r17 = arg0->bmp->sizeY / arg5; + var_r31->unk_68 = var_r21 * var_r17; + var_r31->unk_5C = 1.0f / var_r21; + var_r31->unk_60 = 1.0f / var_r17; + } + else { + var_r21 = 1; + var_r31->unk_68 = 1; + var_r31->unk_5C = 1.0f; + var_r31->unk_60 = 1.0f; + } + var_r31->unk_1C = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_68 * sizeof(Vec2f), var_r28->unk_48); + fn_1_5E0C(var_r31->unk_1C, var_r31->unk_68, var_r21, var_r31->unk_5C, var_r31->unk_60); + var_r31->unk_28.x = var_r31->unk_4C = var_r31->unk_44 = var_r31->unk_50 = -arg8; + var_r31->unk_38 = arg8; + var_r31->unk_28.y = arg8; + var_r31->unk_40 = arg8; + var_r31->unk_34 = arg8; + var_r31->unk_28.z = var_r31->unk_3C = var_r31->unk_48 = var_r31->unk_54 = 0.0f; + var_r19 = HuMemDirectMallocNum(HEAP_DATA, 0x20000, var_r28->unk_48); + sp1C = var_r19; + GXBeginDisplayList(sp1C, 0x20000); + GXBegin(GX_QUADS, GX_VTXFMT0, arg3 * 4); + for (var_r30 = 0; var_r30 < arg3; var_r30++) { + // TODO is this right? + GXPosition1x16(var_r30 * 4); + GXPosition1x16(var_r30); + GXPosition1x16(var_r30 * 4); + + GXPosition1x16(var_r30 * 4 + 1); + GXPosition1x16(var_r30); + GXPosition1x16(var_r30 * 4 + 1); + + GXPosition1x16(var_r30 * 4 + 2); + GXPosition1x16(var_r30); + GXPosition1x16(var_r30 * 4 + 2); + + GXPosition1x16(var_r30 * 4 + 3); + GXPosition1x16(var_r30); + GXPosition1x16(var_r30 * 4 + 3); + } + var_r31->unk_58 = GXEndDisplayList(); + DCFlushRangeNoSync(var_r19, var_r31->unk_58); + var_r31->unk_24 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_58, var_r28->unk_48); + memcpy(var_r31->unk_24, var_r19, var_r31->unk_58); + DCFlushRangeNoSync(var_r31->unk_24, var_r31->unk_58); + HuMemDirectFree(var_r19); + return var_r18; +} + +UnkM450Struct2 *fn_1_6530(s16 arg0, Vec *arg1, GXColor *arg2, float arg8, float arg9) +{ + UnkM450Struct2 *var_r31; + UnkM450Struct *var_r30; + s16 var_r29; + ModelData *var_r28; + + var_r28 = &Hu3DData[arg0]; + var_r30 = var_r28->unk_120; + if (var_r30->unk_6B != 0) { + return NULL; + } + + for (var_r29 = 0, var_r31 = var_r30->unk_10; var_r29 < var_r30->unk_64; var_r29++, var_r31++) { + if (var_r31->unk_3E < 0) { + break; + } + } + if (var_r29 == var_r30->unk_64) { + return NULL; + } + var_r30->unk_20[var_r29] = *arg2; + var_r31->unk_30 = *arg1; + var_r31->unk_2C = arg8; + var_r31->unk_28 = arg9; + var_r31->unk_3C = 0; + var_r31->unk_00 = 0; + var_r31->unk_3E = var_r29; + return var_r31; +} + +void fn_1_6638(s16 arg0, UnkM450ModelFunc arg1) +{ + ModelData *var_r31 = &Hu3DData[arg0]; + UnkM450Struct *var_r30 = var_r31->unk_120; + var_r30->unk_00 = arg1; +} + +void fn_1_6670(s16 arg0, u8 arg1) +{ + ModelData *var_r31 = &Hu3DData[arg0]; + ((UnkM450Struct *)var_r31->unk_120)->unk_6A = arg1; +} + +void fn_1_66A0(s16 arg0) +{ + ModelData *var_r31 = &Hu3DData[arg0]; + UnkM450Struct *var_r30 = var_r31->unk_120; + var_r30->unk_6B = 1; +} + +s32 fn_1_66DC(s16 arg0) +{ + ModelData *var_r30 = &Hu3DData[arg0]; + UnkM450Struct *var_r31 = var_r30->unk_120; + + if ((var_r31->unk_6B != 0) && (var_r31->unk_66 == 0)) { + HuMemDirectFree(var_r31->unk_10); + HuMemDirectFree(var_r31->unk_14); + HuMemDirectFree(var_r31->unk_20); + HuMemDirectFree(var_r31->unk_18); + HuMemDirectFree(var_r31->unk_1C); + HuMemDirectFree(var_r31->unk_24); + HuSprAnimKill(var_r31->unk_04); + HuMemDirectFree(var_r30->unk_120); + Hu3DModelKill(arg0); + return 1; + } + return 0; +} + +void fn_1_6798(s16 arg0, s16 arg1, Vec *arg2, float arg8, float arg9, float argA) +{ + UnkM450Struct2 *var_r31; + s16 var_r27; + + GXColor sp18 = { 0xFF, 0xFF, 0xFF, 0xFF }; + for (var_r27 = 0; var_r27 < arg1; var_r27++) { + var_r31 = fn_1_6530(arg0, arg2, &sp18, 0.0f, 0.0f); + if (!var_r31) { + break; + } + var_r31->unk_04 = *arg2; + var_r31->unk_10 = 0.0f; + var_r31->unk_14 = arg8; + var_r31->unk_1C = 5.0f; + var_r31->unk_20 = arg9; + var_r31->unk_24 = argA; + var_r31->unk_18 = (20.0f * frandf()) - 10.0f; + var_r31->unk_1C = var_r31->unk_1C * (0.8f + (0.4f * frandf())); + var_r31->unk_20 = var_r31->unk_20 * (0.9f + (0.3f * frandf())); + } +} + +s16 fn_1_69F8(Vec *arg0, float *arg1, s16 arg2) +{ + s16 var_r31; + void *var_r30; + ModelData *var_r29; + ModelData *var_r28; + + var_r31 = fn_1_5ED8(lbl_1_bss_14, arg0, arg1, arg2, 80.0f, 0x40, 0x40); + fn_1_6638(var_r31, fn_1_5148); + fn_1_6670(var_r31, 1); + Hu3DModelLayerSet(var_r31, 5); + return var_r31; +} + +float fn_1_6AC8(float arg8, float arg9, float argA, float argB) +{ + if (argA >= argB) { + return arg9; + } + return arg8 + ((arg9 - arg8) * sind(((90.0f / argB) * argA))); +} + +float fn_1_6B90(float arg8, float arg9, float argA, float argB) +{ + if (argA >= argB) { + return arg9; + } + return arg8 + ((arg9 - arg8) * (1.0 - cosd(((90.0f / argB) * argA)))); +} + +void fn_1_6C68(s32 arg0) +{ + lbl_1_bss_10 = 0; + lbl_1_bss_C = arg0; + HuWinInit(1); +} + +void fn_1_6CB0(void (*arg0)(), s32 arg1) +{ + if ((arg1 < 0) || (fn_1_13B90(arg1) == 0)) { + lbl_1_bss_10++; + HuPrcChildCreate(arg0, 0x64, 0x2000, 0, HuPrcCurrentGet()); + } +} + +void fn_1_6D2C(void) +{ + lbl_1_bss_10--; + HuPrcEnd(); +} + +void fn_1_6D68(float *arg0, s32 arg1) +{ + float spC[2]; + + HuWinMesMaxSizeGet(1, spC, arg1); + if (spC[0] > arg0[0]) { + arg0[0] = spC[0]; + } + if (spC[1] > arg0[1]) { + arg0[1] = spC[1]; + } +} + +GXColor lbl_1_data_9F[3] = { + { 0xFF, 0xFF, 0xCC, 0xE6 }, + { 0xCC, 0xFF, 0xFF, 0xE6 }, + { 0xFF, 0xCC, 0xFF, 0xE6 }, +}; + +s32 lbl_1_data_AC[2] = { DATA_MAKE_NUM(DATADIR_M450, 0x2C), DATA_MAKE_NUM(DATADIR_M450, 0x2D) }; + +s32 lbl_1_data_B4[0x13] = { + DATA_MAKE_NUM(DATADIR_M450, 0x2E), + DATA_MAKE_NUM(DATADIR_M450, 0x2F), + DATA_MAKE_NUM(DATADIR_M450, 0x30), + DATA_MAKE_NUM(DATADIR_M450, 0x31), + DATA_MAKE_NUM(DATADIR_M450, 0x32), + DATA_MAKE_NUM(DATADIR_M450, 0x33), + DATA_MAKE_NUM(DATADIR_M450, 0x34), + DATA_MAKE_NUM(DATADIR_M450, 0x35), + DATA_MAKE_NUM(DATADIR_M450, 0x36), + DATA_MAKE_NUM(DATADIR_M450, 0x37), + DATA_MAKE_NUM(DATADIR_M450, 0x38), + DATA_MAKE_NUM(DATADIR_M450, 0x39), + DATA_MAKE_NUM(DATADIR_M450, 0x3A), + DATA_MAKE_NUM(DATADIR_M450, 0x3B), + DATA_MAKE_NUM(DATADIR_M450, 0x3C), + DATA_MAKE_NUM(DATADIR_M450, 0x3D), + DATA_MAKE_NUM(DATADIR_M450, 0x3E), + DATA_MAKE_NUM(DATADIR_M450, 0x3F), + DATA_MAKE_NUM(DATADIR_M450, 0x40), +}; + +s32 lbl_1_data_100[5] = { + DATA_MAKE_NUM(DATADIR_M450, 0x41), + DATA_MAKE_NUM(DATADIR_M450, 0x42), + DATA_MAKE_NUM(DATADIR_M450, 0x43), + DATA_MAKE_NUM(DATADIR_M450, 0x44), + DATA_MAKE_NUM(DATADIR_M450, 0x45), +}; +s32 lbl_1_data_114[0xF] = { + DATA_MAKE_NUM(DATADIR_M450, 0x46), + DATA_MAKE_NUM(DATADIR_M450, 0x47), + DATA_MAKE_NUM(DATADIR_M450, 0x47), + DATA_MAKE_NUM(DATADIR_M450, 0x49), + DATA_MAKE_NUM(DATADIR_M450, 0x4A), + DATA_MAKE_NUM(DATADIR_M450, 0x4B), + DATA_MAKE_NUM(DATADIR_M450, 0x4C), + DATA_MAKE_NUM(DATADIR_M450, 0x4D), + DATA_MAKE_NUM(DATADIR_M450, 0x4E), + DATA_MAKE_NUM(DATADIR_M450, 0x4F), + DATA_MAKE_NUM(DATADIR_M450, 0x50), + DATA_MAKE_NUM(DATADIR_M450, 0x51), + DATA_MAKE_NUM(DATADIR_M450, 0x52), + DATA_MAKE_NUM(DATADIR_M450, 0x53), + DATA_MAKE_NUM(DATADIR_M450, 0x54), +}; +s32 lbl_1_data_150[0xF] = { + DATA_MAKE_NUM(DATADIR_M450, 0x55), + DATA_MAKE_NUM(DATADIR_M450, 0x56), + DATA_MAKE_NUM(DATADIR_M450, 0x56), + DATA_MAKE_NUM(DATADIR_M450, 0x58), + DATA_MAKE_NUM(DATADIR_M450, 0x59), + DATA_MAKE_NUM(DATADIR_M450, 0x5A), + DATA_MAKE_NUM(DATADIR_M450, 0x5B), + DATA_MAKE_NUM(DATADIR_M450, 0x55), + DATA_MAKE_NUM(DATADIR_M450, 0x5C), + DATA_MAKE_NUM(DATADIR_M450, 0x5D), + DATA_MAKE_NUM(DATADIR_M450, 0x5E), + DATA_MAKE_NUM(DATADIR_M450, 0x5F), + DATA_MAKE_NUM(DATADIR_M450, 0x60), + DATA_MAKE_NUM(DATADIR_M450, 0x61), + DATA_MAKE_NUM(DATADIR_M450, 0x62), +}; +s32 lbl_1_data_18C[8] = { 0, 1, 2, 1, 1, -1, -1, -1 }; +s32 lbl_1_data_1AC[8] = { 0, 1, 2, 1, 1, -1, -1, -1 }; +s32 lbl_1_data_1CC[4] = { 0x3E, 0x65, 0x3F, 0x66 }; +UnkData204Struct lbl_1_data_1DC[5] = { + { 510.0f, 0 }, + { 300.0f, 1 }, + { 300.0f, 0 }, + { 300.0f, 1 }, + { 0.0f, 0 }, +}; +UnkData204Struct lbl_1_data_204[6] = { + { 210.0f, 0 }, + { 300.0f, 1 }, + { 300.0f, 0 }, + { 300.0f, 1 }, + { 300.0f, 0 }, + { 0.0f, 0 }, +}; +Vec2f lbl_1_data_234[4] = { + { 300.0f, 300.0f }, + { 300.0f, 240.0f }, + { 300.0f, 210.0f }, + { 300.0f, 180.0f }, +}; +float lbl_1_data_254[5] = { 0.4f, 0.35f, 0.3f, 0.25f, 0.2f }; +float lbl_1_data_268[5] = { 0.45f, 0.4f, 0.35f, 0.3f, 0.25f }; +float lbl_1_data_27C[5] = { 0.5f, 0.45f, 0.4f, 0.35f, 0.3f }; +float lbl_1_data_290[5] = { 0.55f, 0.5f, 0.45f, 0.4f, 0.35f }; + +s32 fn_1_6DD8(float arg8, float arg9, float argA, float argB, s32 arg0) +{ + float spC[2]; + + float var_f30; + float var_f29; + float var_f25; + float var_f24; + float var_f19; + float var_f18; + + s32 var_r31; + WindowData *var_r30; + GXColor *var_r29; + s32 var_r28; + + if (555.0f < (arg8 + argA)) { + arg8 = 555.0f - argA; + } + if (21.0f > arg8) { + arg8 = 21.0f; + } + lbl_1_bss_10++; + var_r28 = HuWinCreate(arg8, arg9, argA, argB, 1); + var_r30 = &winData[var_r28]; + var_r29 = &lbl_1_data_9F[arg0]; + HuWinBGTPLvlSet(var_r28, var_r29->a / 255.0f); + HuSprColorSet(var_r30->group, 0, var_r29->r, var_r29->g, var_r29->b); + var_r30->mess_color = 0; + var_r30->mess_shadow_color = 9; + var_r30->attr |= 0x80; + var_r30->active_pad = 0; + var_f30 = arg8 + (0.5f * argA); + var_f25 = 4.0f / argA; + if (((4.0f + var_f30) - (arg8 + argA)) >= 0.0f) { + var_f30 = (arg8 + argA) - 4.0f; + } + else if ((arg8 - (var_f30 - 2.0f)) >= 0.0f) { + var_f30 = arg8; + } + else { + var_f30 -= 2.0f; + } + var_f29 = arg9 + (0.5f * argB); + var_f24 = 4.0f / argB; + if (((4.0f + var_f29) - (arg9 + argB)) >= 0.0f) { + var_f29 = (arg9 + argB) - 4.0f; + } + else if ((arg9 - (var_f29 - 2.0f)) >= 0.0f) { + var_f29 = arg9; + } + else { + var_f29 -= 2.0f; + } + for (var_r31 = 0; var_r31 < 0xA; var_r31++) { + var_f19 = fn_1_6AC8(var_f30, arg8, var_r31, 10.0f); + spC[1] = fn_1_6AC8(var_f25, 1.0f, var_r31, 10.0f); + var_f18 = fn_1_6AC8(var_f29, arg9, var_r31, 10.0f); + spC[0] = fn_1_6AC8(var_f24, 1.0f, var_r31, 10.0f); + HuWinPosSet(var_r28, var_f19, var_f18); + HuWinScaleSet(var_r28, spC[1], spC[0]); + HuPrcVSleep(); + } + HuWinPosSet(var_r28, arg8, arg9); + HuWinScaleSet(var_r28, 1.0f, 1.0f); + HuPrcVSleep(); + return var_r28; +} + +void fn_1_74EC(s32 arg0) +{ + float sp8[2]; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f25; + float var_f26; + float var_f24; + float var_f19; + float var_f18; + + s32 var_r31; + WindowData *var_r30; + + HuWinMesSet(arg0, 0x1D0016); + HuPrcVSleep(); + var_r30 = &winData[arg0]; + var_f29 = var_r30->pos_x; + var_f28 = var_r30->pos_y; + var_f27 = var_r30->w; + var_f26 = var_r30->h; + var_f31 = var_f29 + (0.5f * var_f27); + var_f25 = 4.0f / var_f27; + if (((4.0f + var_f31) - (var_f29 + var_f27)) >= 0.0f) { + var_f31 = (var_f29 + var_f27) - 4.0f; + } + else if ((var_f29 - (var_f31 - 2.0f)) >= 0.0f) { + var_f31 = var_f29; + } + else { + var_f31 -= 2.0f; + } + var_f30 = var_f28 + (0.5f * var_f26); + var_f24 = 4.0f / var_f26; + if (((4.0f + var_f30) - (var_f28 + var_f26)) >= 0.0f) { + var_f30 = (var_f28 + var_f26) - 4.0f; + } + else if ((var_f28 - (var_f30 - 2.0f)) >= 0.0f) { + var_f30 = var_f28; + } + else { + var_f30 -= 2.0f; + } + for (var_r31 = 0; var_r31 < 0xA; var_r31++) { + var_f19 = fn_1_6B90(var_f29, var_f31, var_r31, 10.0f); + sp8[1] = fn_1_6B90(1.0f, var_f25, var_r31, 10.0f); + var_f18 = fn_1_6B90(var_f28, var_f30, var_r31, 10.0f); + sp8[0] = fn_1_6B90(1.0f, var_f24, var_r31, 10.0f); + HuWinPosSet(arg0, var_f19, var_f18); + HuWinScaleSet(arg0, sp8[1], sp8[0]); + HuPrcVSleep(); + } + HuWinPosSet(arg0, var_f31, var_f30); + HuWinScaleSet(arg0, var_f25, var_f24); + HuPrcVSleep(); + HuWinKill(arg0); + lbl_1_bss_10--; +} + +void fn_1_7B90(s32 arg0, u32 arg1) +{ + winData[arg0].mess_color = 0; + winData[arg0].mess_shadow_color = 9; + winData[arg0].attr |= 0x80; + HuWinMesSet(arg0, arg1); +} + +void fn_1_7C14(s32 arg0, s32 arg1) +{ + HuWinComKeyReset(); + if (arg1 > 0) { + HuPrcSleep(arg1); + } + else { + winData[arg0].active_pad = 1 << lbl_1_bss_C; + HuWinMesWait(arg0); + } + HuWinComKeyReset(); +} + +void fn_1_7C98(s32 arg0) +{ + s32 var_r31; + + HuWinComKeyReset(); + winData[arg0].active_pad = 1 << lbl_1_bss_C; + var_r31 = HuWinChoiceGet(arg0, 1); + if ((var_r31 == -1) || (var_r31 == 1)) { + lbl_1_bss_8 = 0; + } + else { + lbl_1_bss_8 = 1; + } + HuWinComKeyReset(); +} + +void fn_1_7D40(void) +{ + Vec sp18; + float var_f31; + float var_f30; + float var_f29; + + s32 var_r31; + + float sp10[2] = { 0.0f, 0.0f }; + s32 sp24[22] = { + 0x002D0003, + 0x0000003E, + 0x002D0009, + 0x0000003E, + 0x002D000B, + 0x0000003E, + 0x002D000D, + 0x0000003E, + 0x002D000F, + 0x0000003E, + 0x002D0011, + 0x0000003E, + 0x002D0013, + 0x0000003E, + 0x002D0015, + 0x0000003E, + 0x002D0017, + 0x0000003E, + 0x002D0019, + 0x0000003E, + 0x002D001B, + 0x0000003F, + }; + fn_1_E178(0, 1); + fn_1_6D68(sp10, sp24[lbl_1_bss_4 * 2]); + sp18 = lbl_1_bss_34[0]; + sp18.y += 200.0f; + Hu3D3Dto2D(&sp18, 1, &sp18); + if (sp24[(lbl_1_bss_4 * 2) + 1] >= 0) { + var_f30 = 32.0f + (64.0f * (sp18.x / 576.0f)); + if (32.0f > var_f30) { + var_f30 = 32.0f; + } + if (96.0f < var_f30) { + var_f30 = 96.0f; + } + HuAudFXPanning(fn_1_E0E8(0, sp24[(lbl_1_bss_4 * 2) + 1]), (s32)var_f30); + } + var_f31 = sp18.x - (sp10[0] / 2); + var_f29 = 72.0f; + if (lbl_1_bss_4 >= 5) { + if (var_f29 > var_f31) { + var_f31 = var_f29; + } + if ((576.0f - var_f29) < (var_f31 + sp10[0])) { + var_f31 = (576.0f - var_f29) - sp10[0]; + } + } + var_r31 = fn_1_6DD8(var_f31, sp18.y - sp10[1], sp10[0], sp10[1], 0); + fn_1_7B90(var_r31, sp24[lbl_1_bss_4 * 2]); + fn_1_7C14(var_r31, lbl_1_bss_0); + fn_1_74EC(var_r31); + fn_1_E178(0, 0); + fn_1_6D2C(); +} + +void fn_1_8120(void) +{ + Vec sp18; + + float var_f31; + float var_f30; + float var_f29; + + s32 var_r31; + s32 var_r30; + s32 var_r29; + + float sp10[2] = { 0.0f, 0.0f }; + s32 sp24[22] = { + 0x002D0002, + 0x0000003E, + 0x002D0008, + 0x0000003E, + 0x002D000A, + 0x0000003E, + 0x002D000C, + 0x0000003E, + 0x002D000E, + 0x0000003E, + 0x002D0010, + 0x0000003E, + 0x002D0012, + 0x0000003E, + 0x002D0014, + 0x0000003E, + 0x002D0016, + 0x0000003E, + 0x002D0018, + 0x0000003F, + 0x002D001A, + 0x0000003F, + }; + fn_1_E178(1, 1); + fn_1_6D68(sp10, sp24[lbl_1_bss_4 * 2]); + sp18 = lbl_1_bss_34[1]; + sp18.y += 200.0f; + Hu3D3Dto2D(&sp18, 1, &sp18); + if (sp24[(lbl_1_bss_4 * 2) + 1] >= 0) { + var_f30 = 32.0f + (64.0f * (sp18.x / 576.0f)); + if (32.0f > var_f30) { + var_f30 = 32.0f; + } + if (96.0f < var_f30) { + var_f30 = 96.0f; + } + HuAudFXPanning(fn_1_E0E8(1, sp24[(lbl_1_bss_4 * 2) + 1]), (s32)var_f30); + } + var_f31 = sp18.x - (sp10[0] / 2); + var_f29 = 72.0f; + if (lbl_1_bss_4 >= 5) { + if (var_f29 > var_f31) { + var_f31 = var_f29; + } + if ((576.0f - var_f29) < (var_f31 + sp10[0])) { + var_f31 = (576.0f - var_f29) - sp10[0]; + } + } + var_r31 = fn_1_6DD8(var_f31, sp18.y - sp10[1], sp10[0], sp10[1], 1); + fn_1_7B90(var_r31, sp24[lbl_1_bss_4 * 2]); + fn_1_7C14(var_r31, lbl_1_bss_0); + fn_1_74EC(var_r31); + fn_1_E178(1, 0); + fn_1_6D2C(); +} + +void fn_1_8500(void) +{ + float sp28; + float sp20; + float sp18; + float sp10; + float sp8; + + s32 var_r31; + + float sp30[2] = { 0.0f, 0.0f }; + fn_1_6D68(sp30, 0x2D0001); + fn_1_6D68(sp30, 0x2D0004); + fn_1_6D68(sp30, 0x2D0005); + fn_1_6D68(sp30, 0x2D0006); + fn_1_6D68(sp30, 0x2D0007); + var_r31 = fn_1_6DD8((576.0f - sp30[0]) / 2, 48.0f, sp30[0], sp30[1], 2); + HuAudFXPlay(0x3A); + fn_1_A968(3, 8.0f, 0, 0, 0.0f); + fn_1_7B90(var_r31, 0x2D0001); + fn_1_7C14(var_r31, -1); + lbl_1_bss_4 = 0; + lbl_1_bss_0 = 0x78; + fn_1_E1A8(0, 8, 8.0f, 0, 7, 0.0f); + fn_1_E1A8(1, 8, 8.0f, 0, 7, 0.0f); + fn_1_6CB0(fn_1_7D40, -1); + fn_1_6CB0(fn_1_8120, -1); + + while (lbl_1_bss_10 > 2) { + HuPrcVSleep(); + } + HuAudFXPlay(0x3B); + fn_1_A968(4, 8.0f, 0, 0, 60.0f); + fn_1_E1A8(0, 9, 8.0f, 0, 7, 60.0f); + fn_1_E1A8(1, 9, 8.0f, 0, 7, 60.0f); + fn_1_7B90(var_r31, 0x2D0004); + fn_1_7C14(var_r31, -1); + HuAudFXPlay(0x3C); + fn_1_7B90(var_r31, 0x2D0005); + fn_1_7C14(var_r31, -1); + fn_1_7B90(var_r31, 0x2D0006); + fn_1_7C14(var_r31, -1); + HuAudFXPlay(0x3A); + fn_1_7B90(var_r31, 0x2D0007); + fn_1_7C14(var_r31, -1); + fn_1_74EC(var_r31); + fn_1_6D2C(); +} + +void fn_1_8BDC(void) +{ + s32 var_r31; + + lbl_1_bss_4 = 2; + lbl_1_bss_0 = -1; + fn_1_E1A8(1, 0xD, 8.0f, 0x40000001, -1, 0.0f); + fn_1_6CB0(fn_1_8120, -1); + + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + fn_1_E1A8(1, 0, 8.0f, 0x40000001, -1, 0.0f); + fn_1_E1A8(0, 0xD, 8.0f, 0x40000001, -1, 0.0f); + fn_1_6CB0(fn_1_7D40, -1); + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + fn_1_E1A8(0, 0, 8.0f, 0x40000001, -1, 0.0f); + lbl_1_bss_4 = 3; + lbl_1_bss_0 = -1; + fn_1_E1A8(1, 0xD, 8.0f, 0x40000001, -1, 0.0f); + fn_1_6CB0(fn_1_8120, -1); + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + fn_1_E1A8(1, 0, 8.0f, 0x40000001, -1, 0.0f); + fn_1_E1A8(0, 0xD, 8.0f, 0x40000001, -1, 0.0f); + fn_1_6CB0(fn_1_7D40, -1); + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + HuPrcSleep(0x1E); + fn_1_1F58(0x3E8); + lbl_1_bss_4 = 4; + lbl_1_bss_0 = 0x1E; + fn_1_E1A8(0, 0xC, 8.0f, 0x40000001, -1, 0.0f); + fn_1_E1A8(1, 0xC, 8.0f, 0x40000001, -1, 0.0f); + fn_1_6CB0(fn_1_7D40, -1); + fn_1_6CB0(fn_1_8120, -1); + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + fn_1_6D2C(); +} + +void fn_1_9074(void) +{ + lbl_1_bss_4 = 5; + lbl_1_bss_0 = 0x1E; + fn_1_6CB0(fn_1_7D40, -1); + fn_1_6CB0(fn_1_8120, -1); + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + lbl_1_bss_4 = 6; + lbl_1_bss_0 = -1; + fn_1_E1A8(1, 0xD, 8.0f, 0x40000001, -1, 0.0f); + fn_1_6CB0(fn_1_8120, -1); + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + fn_1_E1A8(1, 0, 8.0f, 0x40000001, -1, 0.0f); + fn_1_E1A8(0, 0xD, 8.0f, 0x40000001, -1, 0.0f); + fn_1_6CB0(fn_1_7D40, -1); + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + fn_1_E1A8(0, 0, 8.0f, 0x40000001, -1, 0.0f); + lbl_1_bss_4 = 7; + lbl_1_bss_0 = -1; + fn_1_E1A8(1, 0xD, 8.0f, 0x40000001, -1, 0.0f); + fn_1_6CB0(fn_1_8120, -1); + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + fn_1_E1A8(1, 0, 8.0f, 0x40000001, -1, 0.0f); + fn_1_E1A8(0, 0xD, 8.0f, 0x40000001, -1, 0.0f); + fn_1_6CB0(fn_1_7D40, -1); + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + fn_1_E1A8(0, 0, 8.0f, 0x40000001, -1, 0.0f); + lbl_1_bss_4 = 8; + lbl_1_bss_0 = -1; + fn_1_E1A8(1, 0xE, 8.0f, 0, -1, 0.0f); + fn_1_6CB0(fn_1_8120, -1); + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + fn_1_E1A8(1, 0, 8.0f, 0x40000001, -1, 0.0f); + fn_1_E1A8(0, 0xE, 8.0f, 0, -1, 0.0f); + fn_1_6CB0(fn_1_7D40, -1); + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + fn_1_E1A8(0, 0, 8.0f, 0x40000001, -1, 0.0f); + lbl_1_bss_4 = 9; + lbl_1_bss_0 = 0x1E; + fn_1_6CB0(fn_1_7D40, -1); + fn_1_6CB0(fn_1_8120, -1); + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + fn_1_6D2C(); +} + +void fn_1_96C0(void) +{ + lbl_1_bss_4 = 0xA; + lbl_1_bss_0 = -1; + fn_1_E1A8(1, 4, 8.0f, 0, -1, 0.0f); + fn_1_6CB0(fn_1_8120, -1); + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + fn_1_E1A8(0, 4, 8.0f, 0, -1, 0.0f); + fn_1_6CB0(fn_1_7D40, -1); + while (lbl_1_bss_10 > 1) { + HuPrcVSleep(); + } + fn_1_6D2C(); +} + +void fn_1_9824(void) +{ + s32 var_r31; + + float sp20[2] = { 0.0f, 0.0f }; + fn_1_6D68(sp20, 0x2D001C); + fn_1_6D68(sp20, 0x2D001D); + fn_1_6D68(sp20, 0x2D001E); + var_r31 = fn_1_6DD8((576.0f - sp20[0]) / 2, 132.0f, sp20[0], sp20[1], 2); + fn_1_A968(8, 8.0f, 0, 7, 0.0f); + HuAudFXPlay(0x3C); + fn_1_7B90(var_r31, 0x2D001C); + fn_1_7C14(var_r31, -1); + fn_1_7B90(var_r31, 0x2D001D); + fn_1_7C14(var_r31, -1); + HuAudFXPlay(0x3C); + fn_1_7B90(var_r31, 0x2D001E); + fn_1_7C14(var_r31, -1); + fn_1_74EC(var_r31); + fn_1_6D2C(); +} + +void fn_1_9BA4(void) +{ + s32 var_r31; + float sp20[2] = { 0.0f, 0.0f }; + + fn_1_6D68(sp20, 0x2D001F); + fn_1_6D68(sp20, 0x2D0020); + fn_1_6D68(sp20, 0x2D0021); + var_r31 = fn_1_6DD8((576.0f - sp20[0]) / 2, 48.0f, sp20[0], sp20[1], 2); + HuAudFXPlay(0x3C); + fn_1_7B90(var_r31, 0x2D001F); + fn_1_7C14(var_r31, -1); + fn_1_A968(5, 8.0f, 0, 6, 0.0f); + fn_1_7B90(var_r31, 0x2D0020); + fn_1_7C14(var_r31, -1); + HuAudFXPlay(0x3C); + fn_1_7B90(var_r31, 0x2D0021); + fn_1_7C14(var_r31, -1); + fn_1_A968(0, 8.0f, 0, -1, 0.0f); + fn_1_74EC(var_r31); + fn_1_6D2C(); +} + +void fn_1_9F4C(UnkM450Struct3 *arg0, s32 arg1, Vec *arg2, s8 arg3) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + + s32 var_r29; + s32 var_r28; + s32 var_r27; + + if (90.0f <= arg0->unk_E4) { + arg0->unk_00.unk_6C.y -= 10.0f; + return; + } + var_r29 = 1; + if (arg3 == 0x78) { + if (arg2->x > arg0->unk_00.unk_6C.x) { + var_r29 = 0; + } + } + else if (arg2->z < arg0->unk_00.unk_6C.z) { + var_r29 = 0; + } + if (var_r29 != 0) { + arg0->unk_E4 += 5.0f; + if (0.0f > arg2->x) { + var_f30 = -arg2->x; + } + else { + var_f30 = arg2->x; + } + var_f31 = var_f30; + if (0.0f > arg2->y) { + var_f29 = -arg2->y; + } + else { + var_f29 = arg2->y; + } + if (var_f31 < var_f29) { + if (0.0f > arg2->y) { + var_f28 = -arg2->y; + } + else { + var_f28 = arg2->y; + } + var_f31 = var_f28; + } + if (0.0f > arg2->z) { + var_f27 = -arg2->z; + } + else { + var_f27 = arg2->z; + } + if (var_f31 < var_f27) { + if (0.0f > arg2->z) { + var_f26 = -arg2->z; + } + else { + var_f26 = arg2->z; + } + var_f31 = var_f26; + } + var_f31 = 1500.0f - var_f31; + if (arg3 == 0x78) { + if (0.0f > arg2->x) { + var_r28 = -1; + } + else { + var_r28 = 1; + } + arg0->unk_00.unk_6C.x = arg2->x + ((var_f31 * var_r28) * sind(arg0->unk_E4)); + } + else { + if (0.0f > arg2->z) { + var_r27 = -1; + } + else { + var_r27 = 1; + } + arg0->unk_00.unk_6C.z = arg2->z + ((var_f31 * var_r27) * sind(arg0->unk_E4)); + } + MTXRotRad(Hu3DData[arg1].unk_F0, 0x58, 0.017453292f * arg0->unk_E4); + arg0->unk_00.unk_6C.y = arg2->y + (var_f31 * cosd(arg0->unk_E4)); + return; + } + if (arg3 == 0x78) { + arg0->unk_00.unk_20 = 0x48; + } + else { + arg0->unk_00.unk_24 = 0x48; + } + if (arg0->unk_154 & 0x200) { + var_f31 = arg0->unk_F0 - arg0->unk_00.unk_6C.x; + if (0.0f > var_f31) { + var_f25 = -var_f31; + } + else { + var_f25 = var_f31; + } + if (10.0f > var_f25) { + arg0->unk_154 &= ~0x200; + } + if (0.0f <= var_f31) { + arg0->unk_00.unk_20 = 0x48; + } + else { + arg0->unk_00.unk_20 = -0x48; + } + } + fn_1_40C0(&arg0->unk_00); +} + +void fn_1_A3C4(omObjData *object, Vec *arg1, s32 arg2) +{ + s32 var_r31; + + if (1495.0f > arg1->y) { + for (var_r31 = 0; var_r31 < arg2; var_r31++) { + Hu3DModelShadowDispOff(object->model[var_r31]); + } + return; + } + for (var_r31 = 0; var_r31 < arg2; var_r31++) { + Hu3DModelShadowDispOn(object->model[var_r31]); + } +} + +void fn_1_A470(UnkM450Struct3 *arg0, omObjData *arg1, char *arg2, s32 arg3) +{ + s32 var_r30; + + arg0->unk_CC = arg2; + arg0->unk_154 |= 1; + omSetTra(arg1, 0.0f, 0.0f, 0.0f); + omSetRot(arg1, 0.0f, 0.0f, 0.0f); + omSetSca(arg1, 1.0f, 1.0f, 1.0f); + for (var_r30 = 0; var_r30 < arg3; var_r30++) { + Hu3DModelPosSet(arg1->model[var_r30], 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(arg1->model[var_r30], 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(arg1->model[var_r30], 1.0f, 1.0f, 1.0f); + } +} + +void fn_1_A600(UnkM450Struct3 *arg0, omObjData *arg1, char *arg2, s32 arg3) +{ + s32 var_r29; + + arg0->unk_CC = arg2; + arg0->unk_154 &= ~1; + fn_1_1D70(lbl_1_bss_1A0->model[0], arg0->unk_CC, &arg0->unk_00.unk_6C, NULL); + omSetTra(arg1, 0.0f, 0.0f, 0.0f); + omSetRot(arg1, 0.0f, 0.0f, 0.0f); + for (var_r29 = 0; var_r29 < arg3; var_r29++) { + MTXIdentity(Hu3DData[arg1->model[var_r29]].unk_F0); + Hu3DModelPosSet(arg1->model[var_r29], 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(arg1->model[var_r29], 0.0f, 0.0f, 0.0f); + } +} + +s32 fn_1_A7CC(UnkM450Struct3 *arg0) +{ + if (fn_1_19A10(&arg0->unk_00, &arg0->unk_D4) != 0) { + arg0->unk_150 += 1; + return 1; + } + fn_1_40C0(&arg0->unk_00); + return 0; +} + +void fn_1_A828(UnkM450Struct3 *arg0, float arg8, float arg9, float argA) +{ + float var_f31; + float var_f30; + + arg0->unk_E0 += 1.0f; + var_f31 = arg0->unk_E0 / arg8; + if (1.0f < var_f31) { + var_f31 = 1.0f; + } + var_f30 = sind((90.0f * var_f31)) * sind((90.0f * var_f31)); + arg0->unk_00.unk_6C.y = arg9 + ((var_f30) * (argA - arg9)); +} + +void fn_1_A968(s32 arg0, float arg8, u32 arg1, s32 arg2, float arg9) +{ + UnkM450Struct3 *var_r31; + + if (arg8 == 0.0f) { + Hu3DMotionSet(lbl_1_bss_134->model[0], lbl_1_bss_134->motion[arg0]); + } + else { + Hu3DMotionShiftSet(lbl_1_bss_134->model[0], lbl_1_bss_134->motion[arg0], 0.0f, arg8, arg1); + } + var_r31 = lbl_1_bss_134->data; + var_r31->unk_140 = -1; + var_r31->unk_154 &= ~0x2100; + if (arg2 >= 0) { + var_r31->unk_140 = arg2; + var_r31->unk_144 = arg9; + var_r31->unk_154 |= 0x100; + if (arg0 == 4 || arg0 == 5) { + var_r31->unk_154 |= 0x2000; + } + } +} + +s32 lbl_1_data_F6C[6]; +UnkDataA0CStruct lbl_1_data_A0C[2]; + +void fn_1_AAB0(UnkM450Struct3 *arg0, Vec2f *arg1, s32 arg2) +{ + float var_f30; + float var_f31 = 1.0f; + if (arg2 != 0) { + var_f31 = arg0->unk_F4; + if ((lbl_1_data_F6C[lbl_1_bss_118] - lbl_1_bss_304) > 0xE10) { + arg0->unk_F4 = arg0->unk_F4 - 0.1f; + if (0.0f > arg0->unk_F4) { + arg0->unk_F4 = 0.0f; + } + } + } + var_f30 = arg1->x - arg1->y; + arg0->unk_100 = arg1->y + (var_f30 * var_f31); +} + +float fn_1_AB88(UnkM450Struct3 *arg0) +{ + s32 var_r31 = lbl_1_data_A0C[1].unk_14 - 1; + if (var_r31 > 4) { + var_r31 = 4; + } + if (var_r31 < 0) { + var_r31 = 0; + } + return arg0->unk_D0[var_r31]; +} + +void fn_1_ABD0(omObjData *object) +{ + float var_f29; + UnkM450Struct3 *var_r31 = object->data; + + var_r31->unk_138 = 0; + var_f29 = sqrtf((var_r31->unk_00.unk_6C.x * var_r31->unk_00.unk_6C.x) + (var_r31->unk_00.unk_6C.z * var_r31->unk_00.unk_6C.z)); + if (680.0f < var_f29) { + var_r31->unk_138 = 1; + var_r31->unk_00.unk_6C.x = 680.0f * (var_r31->unk_00.unk_6C.x / var_f29); + var_r31->unk_00.unk_6C.z = 680.0f * (var_r31->unk_00.unk_6C.z / var_f29); + } +} + +void fn_1_AD58(omObjData *object) +{ + Mtx sp1F8; + Vec spFC; + Vec spF0; + Vec spE4; + Vec spD8; + float spCC; + float spC8; + + UnkM450Struct3 *var_r31; + Vec2f *var_r25; + s32 var_r20; + + var_r20 = 0; + spE4 = ((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_00.unk_6C; + var_r31 = object->data; + 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; + switch (var_r31->unk_150) { + case 0xBB8: + if (lbl_1_bss_1A4->work[0] >= 0x3EF) { + var_r31->unk_150++; + var_r31->unk_E4 = 0.0f; + var_r31->unk_154 = var_r31->unk_154 & 0xFFFFFEFF; + } + break; + case 0xBB9: + fn_1_9F4C(var_r31, object->model[0], lbl_1_bss_4C, 0x7A); + if (1000.0f > var_r31->unk_00.unk_6C.y) { + var_r31->unk_150++; + Hu3DModelAttrSet(object->model[0], 1); + } + break; + case 0xBBA: + if (lbl_1_bss_1A4->work[0] >= 0x402) { + var_r31->unk_150++; + var_r31->unk_E0 = 0.0f; + var_r31->unk_00.unk_9C = 270.0f; + fn_1_A470(var_r31, object, "m450mex06-s4kuppa", 2); + fn_1_4ED8(&var_r31->unk_00, 0); + Hu3DModelAttrReset(object->model[0], 1); + } + break; + case 0xBBB: + if (lbl_1_bss_1A4->work[0] >= 0x403) { + var_r31->unk_E0 += 1.0f; + if (30.0f < var_r31->unk_E0) { + var_r31->unk_150++; + var_r31->unk_E4 = 0.0f; + fn_1_A600(var_r31, object, "m450mex06-s4kuppa", 2); + omSetSca(object, 1.5f, 1.5f, 1.5f); + var_r31->unk_00.unk_9C = 270.0f; + var_r31->unk_00.unk_6C.y = 1505.0f; + } + } + break; + case 0xBBC: + fn_1_9F4C(var_r31, object->model[0], &lbl_1_bss_4C[3], 0x78); + if (1000.0f > var_r31->unk_00.unk_6C.y) { + var_r31->unk_150++; + Hu3DModelAttrSet(object->model[0], 1); + lbl_1_bss_1A4->work[0] = 0x404; + lbl_1_bss_128 = 0.0f; + } + break; + case 0xBBD: + if (lbl_1_bss_1A4->work[0] >= 0x409) { + var_r31->unk_150++; + var_r31->unk_E0 = 0.0f; + var_r31->unk_E8 = 360.0f * frandf(); + var_r31->unk_154 |= 2; + MTXIdentity(Hu3DData[object->model[0]].unk_F0); + omSetSca(object, 1.0f, 1.0f, 1.0f); + Hu3DModelScaleSet(object->model[1], 1.5f, 1.5f, 1.5f); + Hu3DModelAttrReset(object->model[1], 1); + Hu3DModelAttrReset(object->model[1], 0x40000002); + Hu3DModelHookSet(object->model[1], "g000i00-itemhook_A", object->model[0]); + var_r31->unk_00.unk_6C.x = 0.0f; + var_r31->unk_00.unk_6C.y = 3000.0f; + var_r31->unk_00.unk_6C.z = 0.0f; + var_r31->unk_00.unk_9C = 270.0f; + fn_1_4ED8(&var_r31->unk_00, 0); + var_r31->unk_00.unk_3C |= 0x2020; + Hu3DMotionSet(object->model[0], object->motion[7]); + Hu3DModelAttrReset(object->model[0], 1); + } + break; + case 0xBBE: + fn_1_A828(var_r31, 120.0f, 3000.0f, 1605.0f); + if (lbl_1_bss_1A4->work[0] >= 0x40B) { + var_r31->unk_150++; + var_r31->unk_E0 = 0.0f; + var_r31->unk_D4.x = 1200.0f; + var_r31->unk_D4.y = var_r31->unk_00.unk_6C.y; + var_r31->unk_D4.z = 0.0f; + } + break; + case 0xBBF: + fn_1_A828(var_r31, 60.0f, var_r31->unk_D4.y, 1605.0f); + if ((fn_1_A7CC(var_r31) != 0) && (lbl_1_bss_1A4->work[0] < 0x40C)) { + lbl_1_bss_1A4->work[0] = 0x40C; + lbl_1_bss_128 = 0.0f; + } + break; + case 0xBC0: + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 270.0f, 0.05f); + if (lbl_1_bss_1A4->work[0] >= 0x40D) { + var_r31->unk_150++; + var_r31->unk_EC = 0.0f; + var_r31->unk_104 = 0.0f; + fn_1_AAB0(var_r31, var_r31->unk_C8, 0); + var_r31->unk_D4 = var_r31->unk_00.unk_6C; + Hu3DMotionShiftSet(object->model[0], object->motion[9], 0.0f, 8.0f, 0x40000001); + } + break; + case 0xBC1: + if ((var_r31->unk_154 & 0x80) != 0) { + var_r31->unk_100 += 1.0f; + if ((Hu3DMotionShiftIDGet(object->model[0]) < 0) && (Hu3DMotionEndCheck(object->model[0]) != 0)) { + var_r31->unk_154 = var_r31->unk_154 & 0xFFFFFF7F; + Hu3DMotionShiftSet(object->model[0], object->motion[9], 0.0f, 8.0f, 0x40000001); + } + } + else if ((var_r31->unk_134 > lbl_1_data_A0C[0].unk_14) || (lbl_1_data_A0C[0].unk_14 <= 0)) { + var_r31->unk_100 += 1.0f; + var_r31->unk_154 |= 0x80; + Hu3DMotionShiftSet(object->model[0], object->motion[8], 0.0f, 8.0f, 0); + } + VECSubtract(&((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_00.unk_6C, &var_r31->unk_00.unk_6C, &spF0); + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, atan2d(spF0.x, spF0.z), 0.4f); + var_r31->unk_100 -= 1.0f; + if (0.0f > var_r31->unk_100) { + var_r31->unk_150 = 0xBC2; + var_r31->unk_154 |= 0x10; + fn_1_AAB0(var_r31, var_r31->unk_C8, 0); + fn_1_17970(object->model[0], object->model[1], var_r31->unk_00.unk_9C - 45.0f); + Hu3DModelAttrReset(object->model[0], 0x40000001); + Hu3DMotionShiftSet(object->model[0], object->motion[10], 0.0f, 8.0f, 0); + } + var_r31->unk_EC += 0.5f; + if (360.0f <= var_r31->unk_EC) { + var_r31->unk_EC -= 360.0f; + } + var_r31->unk_00.unk_6C.x + = var_r31->unk_D4.x - (400.0 * (1.0 - (0.0 > cosd(var_r31->unk_EC) ? -cosd(var_r31->unk_EC) : cosd(var_r31->unk_EC)))); + var_r31->unk_00.unk_6C.z = var_r31->unk_D4.z + (800.0 * sind(var_r31->unk_EC)); + if ((var_r31->unk_150 == 0xBC1) && (lbl_1_bss_1A4->work[0] >= 0x40E)) { + var_r31->unk_150 = 0xBC3; + var_r31->unk_D4 = var_r31->unk_00.unk_6C; + var_r31->unk_D4.z = -1800.0f; + Hu3DMotionShiftSet(object->model[0], object->motion[7], 0.0f, 8.0f, 0x40000001); + } + break; + case 0xBC2: + var_r31->unk_154 &= ~0x80; + if (((var_r31->unk_154 & 0x20) == 0) && (Hu3DMotionShiftIDGet(object->model[0]) < 0) && (Hu3DMotionEndCheck(object->model[0]) != 0)) { + var_r31->unk_154 |= 0x20; + Hu3DMotionShiftSet(object->model[0], object->motion[7], 0.0f, 8.0f, 0x40000001); + } + var_r31->unk_100 -= 1.0f; + if (0.0f > var_r31->unk_100) { + var_r31->unk_150 = 0xBC1; + var_r31->unk_154 &= ~0x30; + Hu3DMotionShiftSet(object->model[0], object->motion[9], 0.0f, 8.0f, 0x40000001); + fn_1_AAB0(var_r31, var_r31->unk_C8, 1); + } + break; + case 0xBC3: + if (lbl_1_bss_1A4->work[0] >= 0x40F) { + if ((var_r31->unk_154 & 0x1000) == 0) { + var_r31->unk_154 |= 0x1000; + HuAudFXPlay(0x3B); + } + if (fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D4) != 0) { + var_r31->unk_150++; + var_r31->unk_154 &= ~2; + Hu3DModelHookObjReset(object->model[1], "g000i00-itemhook_A"); + Hu3DModelAttrSet(object->model[0], 1); + Hu3DModelAttrSet(object->model[1], 1); + lbl_1_bss_1A4->work[0] = 0x410; + lbl_1_bss_128 = 0.0f; + } + fn_1_40C0(&var_r31->unk_00); + } + break; + case 0xBC4: + if (lbl_1_bss_1A4->work[0] >= 0x411) { + var_r31->unk_150++; + var_r31->unk_00.unk_9C = 0.0f; + fn_1_A470(var_r31, object, "m450mex06-s6kuppa01", 2); + fn_1_4ED8(&var_r31->unk_00, 0); + Hu3DModelAttrReset(object->model[0], 1); + } + break; + case 0xBC5: + if (lbl_1_bss_1A4->work[0] >= 0x415) { + var_r31->unk_150 = 0xBC7; + var_r31->unk_E0 = 0.0f; + fn_1_A600(var_r31, object, "m450mex06-s6kuppa01", 2); + omSetSca(object, 1.5f, 1.5f, 1.5f); + var_r31->unk_00.unk_9C = 0.0f; + var_r31->unk_00.unk_6C.y = 1505.0f; + fn_1_4ED8(&var_r31->unk_00, 0); + var_r31->unk_00.unk_04 = fn_1_ABD0; + } + break; + case 0xBC6: + var_r31->unk_E0 += 1.0f; + if (120.0f < var_r31->unk_E0) { + var_r31->unk_150++; + var_r31->unk_E0 = 0.0f; + var_r31->unk_00.unk_3C &= ~0x20; + fn_1_4ED8(&var_r31->unk_00, 0); + } + break; + case 0xBC7: + var_r31->unk_00.unk_B8 = fn_1_AB88(var_r31); + fn_1_19A10(&var_r31->unk_00, &spE4); + fn_1_40C0(&var_r31->unk_00); + var_r31->unk_E0 += 1.0f; + spC8 = (60.0f * (3.0f + lbl_1_data_A0C[1].unk_14)); + if (spC8 < var_r31->unk_E0) { + var_r31->unk_150++; + var_r31->unk_154 &= ~0x70; + var_r31->unk_E0 = 0.0f; + var_r31->unk_114 = spE4; + if (frandmod(0x64) < 0x1E) { + var_r31->unk_110 = 0xBC9; + } + else if (500.0f > VECDistance(&var_r31->unk_00.unk_6C, &spE4)) { + var_r31->unk_110 = 0xBCA; + if (lbl_1_data_A0C[1].unk_14 <= 2) { + var_r31->unk_110 = 0xBCB; + } + } + else { + var_r31->unk_110 = 0xBCC; + } + fn_1_4ED8(&var_r31->unk_00, 0); + } + break; + case 0xBC8: + VECSubtract(&var_r31->unk_114, &var_r31->unk_00.unk_6C, &spF0); + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, atan2d(spF0.x, spF0.z), 0.4f); + var_r31->unk_E0 += 1.0f; + var_r31->unk_114 = spE4; + if (60.0f < var_r31->unk_E0) { + var_r31->unk_150 = var_r31->unk_110; + var_r31->unk_154 &= ~0x30; + var_r31->unk_E0 = 0.0f; + var_r31->unk_00.unk_3C |= 0x20; + } + break; + case 0xBC9: + if ((var_r31->unk_154 & 0x10) == 0) { + var_r31->unk_154 |= 0x10; + Hu3DMotionShiftSet(object->model[0], object->motion[15], 0.0f, 8.0f, 0x40000001); + } + else { + var_r31->unk_00.unk_B8 = 1.5f; + if ((fn_1_19A10(&var_r31->unk_00, &var_r31->unk_114) != 0) || (var_r31->unk_00.unk_48 > 0)) { + var_r31->unk_150 = 0xBC6; + var_r31->unk_E0 = 0.0f; + var_r31->unk_154 |= 0x20; + Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 8.0f, 0x40000001); + } + else { + fn_1_40C0(&var_r31->unk_00); + } + } + break; + case 0xBCA: + if ((var_r31->unk_154 & 0x10) == 0) { + var_r31->unk_154 |= 0x10; + var_r31->unk_12C = fn_1_69F8(NULL, NULL, 0x200); + var_r31->unk_130 = HuAudFXPlay(0x7BC); + Hu3DMotionShiftSet(object->model[0], object->motion[12], 0.0f, 8.0f, 0); + } + else if (Hu3DMotionShiftIDGet(object->model[0]) < 0) { + if (45.0f < Hu3DMotionTimeGet(object->model[0])) { + var_r20 = 1; + } + if (var_r20 != 0) { + if ((Hu3DMotionShiftIDGet(object->model[0]) < 0) && (Hu3DMotionEndCheck(object->model[0]) != 0)) { + Hu3DMotionTimeSet(object->model[0], 50.0f); + } + var_r31->unk_E0 += 1.0f; + if (180.0f < var_r31->unk_E0) { + var_r31->unk_150 = 0xBC6; + var_r31->unk_E0 = 0.0f; + var_r31->unk_154 |= 0x20; + Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 30.0f, 0x40000001); + fn_1_66A0(var_r31->unk_12C); + if (var_r31->unk_130 >= 0) { + HuAudFXStop(var_r31->unk_130); + var_r31->unk_130 = -1; + } + } + } + } + break; + case 0xBCB: + if ((var_r31->unk_154 & 0x10) == 0) { + var_r31->unk_154 |= 0x10; + var_r31->unk_12C = fn_1_69F8(NULL, NULL, 0x200); + var_r31->unk_130 = HuAudFXPlay(0x7BC); + Hu3DMotionShiftSet(object->model[0], object->motion[13], 0.0f, 8.0f, 0); + } + else if ((var_r31->unk_154 & 0x40) == 0) { + if (Hu3DMotionShiftIDGet(object->model[0]) < 0) { + if (52.0f < Hu3DMotionTimeGet(object->model[0])) { + var_r20 = 1; + } + if (Hu3DMotionEndCheck(object->model[0]) != 0) { + var_r31->unk_154 |= 0x40; + Hu3DModelAttrSet(object->model[0], 0x40000001); + Hu3DMotionSet(object->model[0], object->motion[14]); + } + } + } + else { + var_r20 = 1; + var_r31->unk_00.unk_B8 = 0.25f; + fn_1_19A10(&var_r31->unk_00, &spE4); + fn_1_40C0(&var_r31->unk_00); + var_r31->unk_E0 += 1.0f; + if (180.0f < var_r31->unk_E0) { + var_r31->unk_150 = 0xBC6; + var_r31->unk_E0 = 0.0f; + var_r31->unk_154 |= 0x20; + Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 8.0f, 0x40000001); + fn_1_66A0(var_r31->unk_12C); + if (var_r31->unk_130 >= 0) { + HuAudFXStop(var_r31->unk_130); + var_r31->unk_130 = -1; + } + } + } + break; + case 0xBCC: + if ((var_r31->unk_154 & 0x10) == 0) { + var_r31->unk_154 |= 0x10; + fn_1_18424(object->model[0], &var_r31->unk_114); + Hu3DModelAttrReset(object->model[0], 0x40000001); + Hu3DMotionSet(object->model[0], object->motion[11]); + } + else if (((var_r31->unk_154 & 0x20) == 0) && (Hu3DMotionShiftIDGet(object->model[0]) < 0) + && (Hu3DMotionEndCheck(object->model[0]) != 0)) { + var_r31->unk_150 = 0xBC6; + var_r31->unk_E0 = 0.0f; + var_r31->unk_154 |= 0x20; + Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 8.0f, 0x40000001); + if (((var_r31->unk_154 & 0x40) == 0) && (lbl_1_data_A0C[1].unk_14 <= 2)) { + var_r31->unk_150 = 0xBCD; + var_r31->unk_154 |= 0x40; + } + } + break; + case 0xBCD: + var_r31->unk_E0 += 1.0f; + if (10.0f < var_r31->unk_E0) { + var_r31->unk_150 = 0xBC8; + var_r31->unk_110 = 0xBCC; + var_r31->unk_114 = spE4; + var_r31->unk_154 &= ~0x30; + var_r31->unk_E0 = 0.0f; + } + break; + case 0xBCE: + if ((Hu3DMotionShiftIDGet(object->model[0]) < 0) && (Hu3DMotionEndCheck(object->model[0]) != 0)) { + var_r31->unk_150 = 0xBC6; + var_r31->unk_E0 = 0.0f; + var_r31->unk_154 &= ~0x8000; + Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 8.0f, 0x40000001); + Hu3DModelAttrSet(lbl_1_bss_1A0->model[var_r31->unk_10C + 2], 1); + } + break; + case 0xBCF: + if ((var_r31->unk_154 & 0x2000) && (Hu3DMotionShiftIDGet(object->model[0]) < 0) && (128.0f < Hu3DMotionTimeGet(object->model[0]))) { + var_r31->unk_154 &= ~0x2000; + HuAudFXPlay(0x7BD); + } + break; + default: + OSReport("*** kuppa mode error(%d)!!\n", var_r31->unk_150); + break; + } + + if ((var_r31->unk_150 >= 0xBC6) && (var_r31->unk_150 <= 0xBCD)) { + if (var_r31->unk_154 & 0x8000) { + var_r31->unk_E0 = 0.0f; + if (var_r31->unk_12C >= 0) { + fn_1_66A0(var_r31->unk_12C); + } + if (var_r31->unk_130 >= 0) { + HuAudFXStop(var_r31->unk_130); + var_r31->unk_130 = -1; + } + if (fn_1_125C0(1, 1) <= 0) { + var_r31->unk_150 = 0xBCF; + var_r31->unk_154 |= 0x2000; + Hu3DMotionShiftSet(object->model[0], object->motion[17], 0.0f, 8.0f, 0); + HuAudFXPlay(0x3B); + } + else { + var_r31->unk_150 = 0xBCE; + Hu3DMotionShiftSet(object->model[0], object->motion[16], 0.0f, 8.0f, 0); + HuAudFXPlay(0x3B); + Hu3DModelPosSet(lbl_1_bss_1A0->model[var_r31->unk_10C + 2], var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, + 150.0f + var_r31->unk_00.unk_6C.z); + Hu3DModelScaleSet(lbl_1_bss_1A0->model[var_r31->unk_10C + 2], 2.0f, 2.0f, 2.0f); + Hu3DMotionTimeSet(lbl_1_bss_1A0->model[var_r31->unk_10C + 2], 0.0f); + Hu3DModelAttrSet(lbl_1_bss_1A0->model[var_r31->unk_10C + 2], 0x40000001); + Hu3DModelAttrReset(lbl_1_bss_1A0->model[var_r31->unk_10C + 2], 0x40000002); + Hu3DModelAttrReset(lbl_1_bss_1A0->model[var_r31->unk_10C + 2], 1); + } + } + if (var_r31->unk_150 != 0xBCF) { + if ((var_r31->unk_150 < 0xBCE) && ((lbl_1_data_A0C[0].unk_14 <= 0) || (((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_118 >= 0x7EB))) { + var_r31->unk_150 = 0xBCF; + Hu3DMotionShiftSet(object->model[0], object->motion[3], 0.0f, 8.0f, 0x40000001); + HuAudFXPlay(0x3A); + if (var_r31->unk_12C >= 0) { + fn_1_66A0(var_r31->unk_12C); + } + if (var_r31->unk_130 >= 0) { + HuAudFXStop(var_r31->unk_130); + var_r31->unk_130 = -1; + } + } + else if (((var_r31->unk_138 != 0) || (fn_1_19798() != 0)) && (var_r31->unk_150 == 0xBC9)) { + var_r31->unk_150 = 0xBC6; + var_r31->unk_E0 = 0.0f; + Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 8.0f, 0x40000001); + } + } + } + if ((var_r31->unk_154 & 0x100) && (Hu3DMotionShiftIDGet(object->model[0]) < 0) && (Hu3DMotionEndCheck(object->model[0]) != 0)) { + if (var_r31->unk_154 & 0x2000) { + var_r31->unk_154 &= ~0x2000; + HuAudFXPlay(0x7BE); + } + var_r31->unk_144 -= 1.0f; + if (0.0f > var_r31->unk_144) { + var_r31->unk_154 &= ~0x100; + Hu3DMotionShiftSet(object->model[0], object->motion[var_r31->unk_140], 0.0f, 8.0f, 0x40000001); + } + } + if (var_r31->unk_12C >= 0) { + if (var_r20 != 0) { + fn_1_1D18(object->model[0], "g000m0-itemhook_M", &spFC); + fn_1_1D18(object->model[0], "g000m0-ns_hed", &spD8); + VECSubtract(&spFC, &spD8, &spF0); + fn_1_6798(var_r31->unk_12C, 1, &spFC, atan2d(spF0.x, spF0.z), 700.0f, 1550.0f); + } + if (fn_1_66DC(var_r31->unk_12C) != 0) { + var_r31->unk_12C = -1; + } + } + var_r31->unk_134 = lbl_1_data_A0C[0].unk_14; + spFC = var_r31->unk_00.unk_6C; + if (var_r31->unk_154 & 2) { + var_r31->unk_E8 += 4.0f; + if (360.0f <= var_r31->unk_E8) { + var_r31->unk_E8 -= 360.0f; + } + spCC = var_r31->unk_00.unk_6C.y + (8.0 * sind(var_r31->unk_E8)); + omSetTra(object, 0.0f, 0.0f, 0.0f); + omSetRot(object, 0.0f, 0.0f, 0.0f); + Hu3DModelPosSet(object->model[1], var_r31->unk_00.unk_6C.x, spCC, var_r31->unk_00.unk_6C.z); + Hu3DModelRotSet(object->model[1], 0.0f, var_r31->unk_00.unk_9C, 0.0f); + } + else if (var_r31->unk_154 & 1) { + fn_1_1D70(lbl_1_bss_1A0->model[0], var_r31->unk_CC, &spFC, Hu3DData[object->model[0]].unk_F0); + MTXScale(sp1F8, 1.5f, 1.5f, 1.5f); + MTXConcat(Hu3DData[object->model[0]].unk_F0, sp1F8, Hu3DData[object->model[0]].unk_F0); + } + else { + omSetTra(var_r31->unk_00.unk_00, var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, var_r31->unk_00.unk_6C.z); + omSetRot(var_r31->unk_00.unk_00, 0.0f, var_r31->unk_00.unk_9C, 0.0f); + } + fn_1_A3C4(object, &spFC, 2); +} + +void fn_1_DBF0(omObjData *object) +{ + Vec sp8; + + UnkM450Struct3 *var_r31; + s32 var_r29; + + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM450Struct3), MEMORY_DEFAULT_NUM); + var_r31 = object->data; + var_r31->unk_150 = 0xBB8; + var_r31->unk_154 = 0; + var_r31->unk_14C = 0; + var_r31->unk_12C = -1; + var_r31->unk_130 = -1; + sp8.x = 0.0f; + sp8.y = 1500.0f; + sp8.z = -800.0f; + fn_1_2C1C(&var_r31->unk_00, object, 4, 9, lbl_1_data_18C, 0, &sp8, 0.0f); + for (var_r29 = 0; var_r29 < 2; var_r29++) { + object->model[var_r29] = Hu3DModelCreateFile(lbl_1_data_AC[var_r29]); + Hu3DModelAttrSet(object->model[var_r29], 0x4001); + Hu3DModelAttrSet(object->model[var_r29], 0x40000001); + Hu3DModelAttrReset(object->model[var_r29], 0x40000002); + Hu3DModelLayerSet(object->model[var_r29], 3); + Hu3DModelShadowSet(object->model[var_r29]); + } + for (var_r29 = 0; var_r29 < 0x13; var_r29++) { + object->motion[var_r29] = Hu3DJointMotion(object->model[0], HuDataSelHeapReadNum(lbl_1_data_B4[var_r29], MEMORY_DEFAULT_NUM, HEAP_DATA)); + } + Hu3DMotionSet(object->model[0], object->motion[0]); + CharModelEffectNpcInit(object->model[0], object->motion[1], 2, 8); + CharModelEffectNpcInit(object->model[0], object->motion[2], 1, 8); + CharModelEffectNpcInit(object->model[0], object->motion[15], 3, 8); + var_r31->unk_F4 = 1.0f; + switch (GWPlayerCfg[lbl_1_bss_120].diff) { + case 0: + var_r31->unk_C8 = &lbl_1_data_234[0]; + var_r31->unk_D0 = lbl_1_data_254; + break; + case 1: + var_r31->unk_C8 = &lbl_1_data_234[1]; + var_r31->unk_D0 = lbl_1_data_268; + break; + case 2: + var_r31->unk_C8 = &lbl_1_data_234[2]; + var_r31->unk_D0 = lbl_1_data_27C; + break; + case 3: + default: + var_r31->unk_C8 = &lbl_1_data_234[3]; + var_r31->unk_D0 = lbl_1_data_290; + break; + } + omSetTra(var_r31->unk_00.unk_00, var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, var_r31->unk_00.unk_6C.z); + omSetRot(var_r31->unk_00.unk_00, 0.0f, var_r31->unk_00.unk_9C, 0.0f); + omSetSca(object, 1.5f, 1.5f, 1.5f); + Hu3DModelAttrReset(*object->model, 1); + object->func = (omObjFunc)fn_1_AD58; +} + +s32 fn_1_E0E8(s32 arg0, s32 arg1) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 2; var_r31++) { + if (arg1 == lbl_1_data_1CC[var_r31 * 2]) { + return HuAudFXPlay(lbl_1_data_1CC[arg0 + (var_r31 * 2)]); + } + } + + return -1; +} + +s32 fn_1_E178(s32 arg0, s32 arg1) +{ + UnkM450Struct3 *var_r31 = lbl_1_bss_130[arg0]->data; + var_r31->unk_14C = arg1; + return arg0; +} + +void fn_1_E1A8(s32 arg0, s32 arg1, float arg8, u32 arg2, s32 arg3, float arg9) +{ + UnkM450Struct3 *var_r31; + omObjData *var_r30; + + var_r30 = lbl_1_bss_130[arg0]; + if (arg8 == 0.0f) { + Hu3DMotionSet(var_r30->model[0], var_r30->motion[arg1]); + } + else { + Hu3DMotionShiftSet(var_r30->model[0], var_r30->motion[arg1], 0.0f, arg8, arg2); + } + var_r31 = var_r30->data; + var_r31->unk_140 = -1; + var_r31->unk_154 &= ~0x100; + if (arg3 >= 0) { + var_r31->unk_140 = arg3; + var_r31->unk_144 = arg9; + var_r31->unk_154 |= 0x100; + } + var_r31->unk_148 = arg1; +} + +void fn_1_E2BC(s32 arg0, s32 arg1, s32 arg2, s32 arg3) +{ + lbl_1_bss_4 = arg0; + lbl_1_bss_0 = arg1; + if (arg2 == 0) { + fn_1_6CB0(fn_1_7D40, arg3); + } + else { + fn_1_6CB0(fn_1_8120, arg3); + } +} + +void fn_1_E3C8(UnkM450Struct3 *arg0, omObjData *arg1, s32 arg2) +{ + s32 var_r30; + if (arg2 != 0) { + if (arg1->work[0] == 0) { + Hu3DModelAttrReset(arg1->model[1], 1); + } + Hu3DModelAttrReset(arg1->model[0], 1); + } + else { + for (var_r30 = 0; var_r30 < 5; var_r30++) { + Hu3DModelAttrSet(arg1->model[var_r30], 1); + } + } + arg0->unk_00.unk_3C &= ~0xC00; +} + +UnkData1380Struct lbl_1_data_1380; +UnkData1380Struct lbl_1_data_13B8; + +void fn_1_E478(UnkM450Struct3 *arg0, omObjData *arg1) +{ + s32 var_r29; + float var_f31; + UnkData1380Struct *var_r30 = &lbl_1_data_1380; + float var_f30; + + arg0->unk_F8 = -1; + arg0->unk_154 &= ~0x30; + arg0->unk_120.x = 0.0f; + arg0->unk_120.y = 0.0f; + arg0->unk_120.z = 0.0f; + if (arg1->work[0] != 0) { + var_r29 = frandmod(var_r30->unk_08); + while (var_r30->unk_24[var_r29] < 0) { + var_r29 = (var_r29 + 1) % var_r30->unk_08; + } + arg0->unk_F8 = var_r30->unk_24[var_r29]; + var_f31 = 200.0f * frandf(); + var_f30 = 360.0f * frandf(); + arg0->unk_120.x = var_f31 * sind(var_f30); + arg0->unk_120.z = var_f31 * cosd(var_f30); + } +} + +void fn_1_E604(UnkM450Struct3 *arg0, omObjData *arg1) +{ + Vec spC; + float sp8; + + arg0->unk_D4 = ((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_00.unk_6C; + if (((arg0->unk_154 & 0x10) != 0) && ((arg0->unk_154 & 0x20) == 0)) { + if ((Hu3DMotionShiftIDGet(arg1->model[0]) < 0) && (20.0f < Hu3DMotionTimeGet(arg1->model[0]))) { + arg0->unk_154 |= 0x20; + spC = arg0->unk_00.unk_6C; + spC.x += (200.0 * sind(arg0->unk_00.unk_9C)); + spC.y += 100.0f; + spC.z += (200.0 * cosd(arg0->unk_00.unk_9C)); + fn_1_17360(&spC, arg0->unk_00.unk_9C); + } + } + else { + fn_1_19A10(&arg0->unk_00, &arg0->unk_D4); + fn_1_40C0(&arg0->unk_00); + VECSubtract(&arg0->unk_00.unk_6C, &arg0->unk_D4, &spC); + if ((300.0f > sqrtf((spC.x * spC.x) + (spC.z * spC.z))) && ((arg0->unk_154 & 0x10) == 0)) { + arg0->unk_154 |= 0x10; + Hu3DMotionShiftSet(arg1->model[0], arg1->motion[5], 0.0f, 8.0f, 0); + } + } +} + +void fn_1_E918(UnkM450Struct3 *arg0, omObjData *arg1) +{ + arg0->unk_D4 = *fn_1_16314(arg0->unk_F8); + VECAdd(&arg0->unk_120, &arg0->unk_D4, &arg0->unk_D4); + if ((arg0->unk_154 & 0x10) && ((arg0->unk_154 & 0x20) == 0) && (Hu3DMotionShiftIDGet(arg1->model[0]) < 0) + && (Hu3DMotionEndCheck(*arg1->model) != 0)) { + arg0->unk_154 |= 0x20; + fn_1_16BC4(&arg0->unk_00.unk_6C, &arg0->unk_120, arg0->unk_F8); + } + if (fn_1_19A10(&arg0->unk_00, &arg0->unk_D4) != 0) { + if ((arg0->unk_154 & 0x10) == 0) { + arg0->unk_154 |= 0x10; + Hu3DMotionShiftSet(*arg1->model, arg1->motion[5], 0.0f, 8.0f, 0); + } + } + else { + fn_1_40C0(&arg0->unk_00); + } +} + +void fn_1_EA50(UnkM450Struct3 *arg0, omObjData *arg1) +{ + arg0->unk_150 = 0xFAD; + arg0->unk_E0 = 0.0f; + Hu3DMotionShiftSet(*arg1->model, *arg1->motion, 0.0f, 8.0f, 0); + fn_1_1D70(lbl_1_bss_1A0->model[0], arg1->work[0] == 0 ? "m450mex06-s3mini2" : "m450mex06-s3mini1", &arg0->unk_D4, NULL); +} + +HsfanimStruct00 lbl_1_data_1504; + +void fn_1_EB6C(UnkM450Struct3 *arg0, omObjData *arg1) +{ + s32 var_r29; + s16 var_r28; + u32 var_r27; + + fn_1_1D18(arg1->model[4], "g007i03-itemhook_M", &arg0->unk_00.unk_6C); + Hu3DModelHookObjReset(arg1->model[4], "g007i03-itemhook_M"); + Hu3DModelAttrSet(arg1->model[4], 1); + arg0->unk_150 = 0xFAE; + arg0->unk_154 &= 0xFFFFFFFD; + arg0->unk_108 = 19.6f; + arg0->unk_E0 = 0.0f; + Hu3DMotionSet(arg1->model[0], arg1->motion[6]); + Hu3DModelAttrReset(arg1->model[0], 0x40000001); + Hu3DModelAttrSet(arg1->model[0], 0x40000002); + Hu3DMotionTimeSet(arg1->model[0], 1.0f); + arg0->unk_13C = Hu3DParManLink(lbl_1_bss_24, &lbl_1_data_1504); + Hu3DParManPosSet(arg0->unk_13C, arg0->unk_00.unk_6C.x, arg0->unk_00.unk_6C.y, arg0->unk_00.unk_6C.z); + Hu3DParManAttrReset(arg0->unk_13C, 1); + Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(arg0->unk_13C), 1); + Hu3DModelLayerSet(Hu3DParManModelIDGet(arg0->unk_13C), 5); + fn_1_E0E8(arg1->work[0], 0x3F); +} + +void fn_1_ED4C(omObjData *object) +{ + Vec spEC; + float spDC; + + UnkM450Struct3 *var_r31; + Vec *var_r29; + UnkM450Struct3 *var_r18; + + var_r18 = lbl_1_bss_130[object->work[0] ^ 1]->data; + var_r31 = object->data; + 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; + + switch (var_r31->unk_150) { + case 0xFA0: + if ((lbl_1_bss_1A4->work[0] >= 0x3EF) && (30.0f < lbl_1_bss_128)) { + var_r31->unk_150++; + var_r31->unk_E4 = 0.0f; + var_r31->unk_154 &= ~0x100; + var_r31->unk_154 |= 0x200; + var_r31->unk_F0 = var_r31->unk_00.unk_6C.x - (100.0f * (0.0f > var_r31->unk_00.unk_6C.x ? -1 : 1)); + } + if ((object->work[0] == 0) && (var_r31->unk_148 == 7)) { + var_r31->unk_00.unk_9C = 0.0f; + } + else { + VECSubtract(&((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_00.unk_6C, &var_r31->unk_00.unk_6C, &spEC); + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, atan2d(spEC.x, spEC.z), 0.4f); + } + break; + case 0xFA1: + fn_1_9F4C(var_r31, object->model[0], lbl_1_bss_4C, 0x7A); + if (-1100.0f > var_r31->unk_00.unk_6C.z) { + var_r31->unk_150++; + fn_1_E2BC(1, 0x1E, object->work[0], 0); + fn_1_E1A8(object->work[0], 12, 8.0f, 0, 1, 0.0f); + } + break; + case 0xFA2: + if (lbl_1_bss_10 == 0) { + fn_1_9F4C(var_r31, object->model[0], lbl_1_bss_4C, 0x7A); + if (1000.0f > var_r31->unk_00.unk_6C.y) { + var_r31->unk_150++; + var_r31->unk_154 &= ~0x200; + fn_1_E3C8(var_r31, object, 0); + } + } + else { + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 0.0f, 0.4f); + } + break; + case 0xFA3: + if (((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_118 >= 0x7D5) { + var_r31->unk_150++; + fn_1_A470(var_r31, object, object->work[0] == 0 ? "m450mex06-s2kuppa01" : "m450mex06-s2kuppa02", 5); + fn_1_4ED8(&var_r31->unk_00, 0); + fn_1_E3C8(var_r31, object, 1); + } + break; + case 0xFA4: + if (lbl_1_bss_1A4->work[0] >= 0x3F2) { + var_r31->unk_150 = var_r31->unk_150 + 1; + var_r31->unk_00.unk_9C = 0.0f; + fn_1_A600(var_r31, object, object->work[0] == 0 ? "m450mex06-s2kuppa01" : "m450mex06-s2kuppa02", 5); + var_r31->unk_00.unk_6C.y = 1505.0f; + var_r31->unk_00.unk_3C |= 0x400; + fn_1_1D70(lbl_1_bss_1A0->model[0], "m450mex06-s2hook04", &var_r31->unk_D4, NULL); + var_r31->unk_D4.x += (-100.0f + (300.0f * (object->work[0] ^ 1))); + var_r31->unk_D4.z += (100.0f - (200.0f * (object->work[0] ^ 1))); + } + break; + case 0xFA5: + if (fn_1_A7CC(var_r31) != 0) { + var_r31->unk_D4.x = 1200.0f; + var_r31->unk_D4.z = 150.0f - (300.0f * (object->work[0] ^ 1)); + } + break; + case 0xFA6: + if (fn_1_A7CC(var_r31)) { + fn_1_E3C8(var_r31, object, 0); + } + break; + case 0xFA7: + if (lbl_1_bss_1A4->work[0] >= 0x3F7) { + var_r31->unk_150++; + var_r31->unk_E0 = 0.0f; + var_r31->unk_E8 = 360.0f * frandf(); + var_r31->unk_154 |= 2; + Hu3DModelAttrReset(object->model[4], 1); + Hu3DModelAttrReset(object->model[4], 0x40000002); + Hu3DModelHookSet(object->model[4], "g007i03-itemhook_M", object->model[0]); + var_r31->unk_00.unk_6C.x = 0.0f; + var_r31->unk_00.unk_6C.y = 3000.0f; + var_r31->unk_00.unk_6C.z = -300.0f + (600.0f * object->work[0]); + var_r31->unk_00.unk_9C = 270.0f; + fn_1_4ED8(&var_r31->unk_00, 0); + var_r31->unk_00.unk_3C |= 0x2020; + fn_1_E3C8(var_r31, object, 1); + } + break; + case 0xFA8: + fn_1_A828(var_r31, 120.0f, 3000.0f, 1605.0f); + if (lbl_1_bss_1A4->work[0] >= 0x3F9) { + var_r31->unk_150 = var_r31->unk_150 + 1; + var_r31->unk_E0 = 0.0f; + var_r31->unk_D4.x = 800.0f; + var_r31->unk_D4.y = var_r31->unk_00.unk_6C.y; + var_r31->unk_D4.z = -400.0f + (800.0f * object->work[0]); + } + break; + case 0xFA9: + fn_1_A828(var_r31, 60.0f, var_r31->unk_D4.y, 2055.0f); + if ((fn_1_A7CC(var_r31) != 0) && (lbl_1_bss_1A4->work[0] < 0x3FA)) { + lbl_1_bss_1A4->work[0] = 0x3FA; + lbl_1_bss_128 = 0.0f; + } + break; + case 0xFAA: + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 270.0f, 0.05f); + if (lbl_1_bss_1A4->work[0] >= 0x3FB) { + var_r31->unk_150++; + var_r31->unk_FC = 0; + var_r31->unk_100 = var_r31->unk_C4[var_r31->unk_FC].unk_00; + var_r31->unk_D4 = var_r31->unk_00.unk_6C; + Hu3DMotionShiftSet(object->model[0], object->motion[10], 0.0f, 8.0f, 0x40000001); + } + break; + case 0xFAB: + if (var_r31->unk_154 & 0x80) { + var_r31->unk_100 += 1.0f; + if ((Hu3DMotionShiftIDGet(object->model[0]) < 0) && (Hu3DMotionEndCheck(object->model[0]) != 0)) { + var_r31->unk_154 = var_r31->unk_154 & 0xFFFFFF7F; + Hu3DMotionShiftSet(object->model[0], object->motion[10], 0.0f, 8.0f, 0x40000001); + } + } + else if ((var_r31->unk_134 > lbl_1_data_A0C[0].unk_14) || (lbl_1_data_A0C[0].unk_14 <= 0)) { + var_r31->unk_100 += 1.0f; + if (lbl_1_data_A0C[0].unk_14 > 0) { + var_r31->unk_154 |= 0x80; + Hu3DMotionShiftSet(object->model[0], object->motion[11], 0.0f, 8.0f, 0); + } + else { + var_r31->unk_150 = 0xFB0; + Hu3DMotionShiftSet(object->model[0], object->motion[3], 0.0f, 8.0f, 0); + } + } + var_r31->unk_154 &= ~4; + var_r31->unk_100 -= 1.0f; + if ((var_r18->unk_154 & 4) && (0.0f > var_r31->unk_100)) { + var_r31->unk_FC++; + if (var_r31->unk_C4[var_r31->unk_FC].unk_00 == 0.0f) { + var_r31->unk_FC -= 2; + } + var_r31->unk_100 = var_r31->unk_C4[var_r31->unk_FC].unk_00; + if (var_r31->unk_C4[var_r31->unk_FC].unk_04) { + var_r31->unk_150 = 0xFAC; + fn_1_E478(var_r31, object); + Hu3DMotionShiftSet(object->model[0], object->motion[10], 0.0f, 8.0f, 0); + } + } + else if (fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D4) != 0) { + var_r31->unk_154 |= 4; + VECSubtract(&((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_00.unk_6C, &var_r31->unk_00.unk_6C, &spEC); + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, atan2d(spEC.x, spEC.z), 0.4f); + } + else { + fn_1_40C0(&var_r31->unk_00); + } + if (lbl_1_bss_1A4->work[0] >= 0x3FC) { + fn_1_EA50(var_r31, object); + } + break; + case 0xFAC: + var_r31->unk_154 &= ~0x84; + var_r31->unk_100 -= 1.0f; + if (0.0f > var_r31->unk_100) { + var_r31->unk_FC++; + if (var_r31->unk_C4[var_r31->unk_FC].unk_00 == 0.0f) { + var_r31->unk_FC -= 2; + } + var_r31->unk_100 = var_r31->unk_C4[var_r31->unk_FC].unk_00; + if (var_r31->unk_C4[var_r31->unk_FC].unk_04 == 0) { + var_r31->unk_150 = 0xFAB; + Hu3DMotionShiftSet(object->model[0], object->motion[10], 0.0f, 8.0f, 0x40000001); + var_r31->unk_D4.x = 800.0f; + if (0.0f > var_r18->unk_00.unk_6C.z) { + var_r31->unk_D4.z = 200.0f; + } + else { + var_r31->unk_D4.z = -200.0f; + } + var_r31->unk_D4.z += var_r31->unk_D4.z * frandf(); + } + } + else { + if (object->work[0] == 0) { + fn_1_E604(var_r31, object); + } + else { + fn_1_E918(var_r31, object); + } + if ((((var_r31->unk_154 & 0x10) == 0) || (var_r31->unk_154 & 0x20)) && (lbl_1_bss_1A4->work[0] == 0x3E8)) { + var_r31->unk_100 = 0.0f; + } + } + if (lbl_1_bss_1A4->work[0] >= 0x3FC) { + fn_1_EA50(var_r31, object); + } + break; + case 0xFAD: + if (lbl_1_bss_1A4->work[0] >= 0x3FD) { + if (fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D4) != 0) { + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 270.0f, 0.4f); + if ((object->work[0] + 0x3FE) == lbl_1_bss_1A4->work[0]) { + lbl_1_bss_1A4->work[0] += 1; + lbl_1_bss_128 = 0; + } + if (lbl_1_bss_1A4->work[0] > 0x3FF) { + fn_1_EB6C(var_r31, object); + } + } + fn_1_40C0(&var_r31->unk_00); + } + break; + case 0xFAE: + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 270.0f, 0.4f); + var_r31->unk_00.unk_6C.x += 0.1f * (var_r31->unk_D4.x - var_r31->unk_00.unk_6C.x); + var_r31->unk_00.unk_6C.z += 0.1f * (var_r31->unk_D4.z - var_r31->unk_00.unk_6C.z); + if (1505.0f < var_r31->unk_00.unk_6C.y) { + var_r31->unk_00.unk_6C.y += var_r31->unk_108; + var_r31->unk_108 = var_r31->unk_108 - 0.98f; + if (1505.0f >= var_r31->unk_00.unk_6C.y) { + var_r31->unk_00.unk_6C.y = 1505.0f; + Hu3DModelAttrReset(object->model[0], 0x40000002); + } + } + else if (((var_r31->unk_154 & 0x400) == 0) && (Hu3DMotionEndCheck(object->model[0]) != 0)) { + var_r31->unk_154 |= 0x400; + Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 8.0f, 0x40000001); + } + if (lbl_1_bss_1A4->work[0] >= 0x402) { + var_r31->unk_150 = var_r31->unk_150 + 1; + var_r31->unk_E0 = 0.0f; + var_r31->unk_00.unk_3C &= ~0x2020; + fn_1_A470(var_r31, object, object->work[0] == 0 ? "m450mex06-s3mini2" : "m450mex06-s3mini1", 5); + } + var_r31->unk_E0 += 1.0f; + if (var_r31->unk_E0 == 10.0f) { + Hu3DParManAttrSet(var_r31->unk_13C, 1); + } + break; + case 0xFAF: + if (lbl_1_bss_1A4->work[0] >= 0x403) { + var_r31->unk_150 = var_r31->unk_150 + 1; + Hu3DModelAttrSet(object->model[0], 1); + } + break; + case 0xFB0: + break; + default: + OSReport("*** minik mode error(%d)!!\n", var_r31->unk_150); + break; + } + + if ((var_r31->unk_154 & 0x100) && (Hu3DMotionShiftIDGet(object->model[0]) < 0) && (Hu3DMotionEndCheck(object->model[0]) != 0)) { + var_r31->unk_144 -= 1.0f; + if (0.0f > var_r31->unk_144) { + var_r31->unk_154 &= ~0x100; + var_r31->unk_148 = var_r31->unk_140; + Hu3DMotionShiftSet(object->model[0], object->motion[var_r31->unk_140], 0.0f, 8.0f, 0x40000001); + } + } + var_r31->unk_134 = lbl_1_data_A0C[0].unk_14; + var_r29 = &lbl_1_bss_34[object->work[0]]; + if (var_r31->unk_154 & 2) { + *var_r29 = var_r31->unk_00.unk_6C; + var_r29->y += 100.0f; + var_r31->unk_E8 += 4.0f; + if (360.0f <= var_r31->unk_E8) { + var_r31->unk_E8 -= 360.0f; + } + spDC = var_r31->unk_00.unk_6C.y + (8.0 * sind(var_r31->unk_E8)); + omSetTra(object, 0.0f, 0.0f, 0.0f); + omSetRot(object, 0.0f, 0.0f, 0.0f); + Hu3DModelPosSet(object->model[4], var_r31->unk_00.unk_6C.x, spDC, var_r31->unk_00.unk_6C.z); + Hu3DModelRotSet(object->model[4], 0.0f, var_r31->unk_00.unk_9C, 0.0f); + } + else if ((var_r31->unk_154 & 1) != 0) { + fn_1_1D70(lbl_1_bss_1A0->model[0], var_r31->unk_CC, var_r29, Hu3DData[object->model[0]].unk_F0); + } + else { + *var_r29 = var_r31->unk_00.unk_6C; + omSetTra(var_r31->unk_00.unk_00, var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, var_r31->unk_00.unk_6C.z); + omSetRot(var_r31->unk_00.unk_00, 0.0f, var_r31->unk_00.unk_9C, 0.0f); + } + fn_1_A3C4(object, var_r29, 5); + if (var_r31->unk_14C != 0) { + lbl_1_bss_D8++; + VECAdd(&lbl_1_bss_CC, &var_r31->unk_00.unk_6C, &lbl_1_bss_CC); + } +} + +void fn_1_11D5C(omObjData *object) +{ + Vec sp8; + + UnkM450Struct3 *var_r31; + s32 var_r29; + s32 var_r27; + s32 *var_r26; + + (void)var_r27; + (void)var_r27; + (void)var_r27; + (void)var_r27; + + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM450Struct3), MEMORY_DEFAULT_NUM); + var_r31 = object->data; + var_r31->unk_150 = 0xFA0; + var_r31->unk_154 = 0; + var_r31->unk_14C = 0; + var_r31->unk_13C = -1; + var_r31->unk_148 = 7; + sp8.x = -300.0f + (600.0f * object->work[0]); + sp8.y = 1500.0f; + sp8.z = -600.0f; + fn_1_2C1C(&var_r31->unk_00, object, 4, 8, lbl_1_data_1AC, 0, &sp8, 0.0f); + var_r31->unk_00.unk_3C |= 0x1000; + for (var_r29 = 0; var_r29 < 5; var_r29++) { + object->model[var_r29] = Hu3DModelCreateFile(lbl_1_data_100[var_r29]); + Hu3DModelAttrSet(object->model[var_r29], 0x4001); + Hu3DModelAttrSet(object->model[var_r29], 0x40000003); + Hu3DModelLayerSet(object->model[var_r29], 3); + Hu3DModelShadowSet(object->model[var_r29]); + } + var_r31->unk_F4 = 1.0f; + var_r31->unk_C4 = lbl_1_data_204; + var_r26 = lbl_1_data_150; + if (object->work[0] == 0) { + var_r31->unk_C4 = lbl_1_data_1DC; + var_r26 = lbl_1_data_114; + Hu3DModelHookSet(object->model[0], "g007m0-itemhook_r", object->model[1]); + } + for (var_r29 = 0; var_r29 < 0xF; var_r29++) { + object->motion[var_r29] = Hu3DJointMotionFile(object->model[0], var_r26[var_r29]); + } + Hu3DMotionSet(object->model[0], object->motion[7]); + Hu3DModelAttrReset(object->model[0], 0x40000002); + if (object->work[0] == 0) { + CharModelEffectNpcInit(object->model[0], object->motion[1], 0, 0xD); + CharModelEffectNpcInit(object->model[0], object->motion[2], 1, 0xD); + } + else { + CharModelEffectNpcInit(object->model[0], object->motion[1], 2, 0xD); + CharModelEffectNpcInit(object->model[0], object->motion[2], 3, 0xD); + } + omSetTra(var_r31->unk_00.unk_00, var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, var_r31->unk_00.unk_6C.z); + omSetRot(var_r31->unk_00.unk_00, 0.0f, var_r31->unk_00.unk_9C, 0.0f); + if (object->work[0] == 0) { + Hu3DModelAttrReset(object->model[1], 1); + } + Hu3DModelAttrReset(object->model[0], 1); + var_r31->unk_00.unk_3C &= ~0xC00; + object->func = (omObjFunc)fn_1_ED4C; +} + +Vec lbl_1_data_464 = { 7000.0f, 7000.0f, 7000.0f }; +Vec lbl_1_data_470 = { 0.0f, 1.0f, 0.0f }; +Vec lbl_1_data_47C = { 0.0f, 0.0f, 0.0f }; +Vec lbl_1_data_488 = { 0.0f, 2200.0f, 1500.0f }; +Vec lbl_1_data_494 = { 0.0f, 1800.0f, 0.0f }; +Vec lbl_1_data_4A0 = { 0.0f, 1800.f, 650.0f }; +Vec lbl_1_data_4AC = { 0.0f, 1700.0f, -650.0f }; +Vec lbl_1_data_4B8 = { 0.0f, 1850.0f, 450.0f }; +Vec lbl_1_data_4C4 = { 0.0f, 1775.0f, -50.0f }; +Vec lbl_1_data_4D0 = { 0.0f, 1850.0f, 550.0f }; +Vec lbl_1_data_4DC = { 0.0f, 1775.0f, -50.0f }; +Vec lbl_1_data_4E8 = { 0.0f, 3000.0f, 1000.0f }; +Vec lbl_1_data_4F4 = { 0.0f, -3.0f, -1.0f }; +GXColor lbl_1_data_500 = { 0xFF, 0xFF, 0xFF, 0xFF }; +Vec lbl_1_data_504 = { 0.0f, 8000.0f, 1000.0f }; +Vec lbl_1_data_510 = { 0.0f, 0.0f, 0.0f }; +Vec lbl_1_data_51C[4] = { + { 1500.0f, 700.0f, 300.0f }, + { 1500.0f, 1200.0f, 200.0f }, + { 2400.0f, 1400.0f, 400.0f }, + { 2500.0f, 800.0f, -200.0f }, +}; + +s32 lbl_1_data_9EC[8]; + +void fn_1_12234(void) +{ + UnkDataA0CStruct *var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + + lbl_1_data_A0C[0].unk_0C = lbl_1_data_9EC[GWPlayerCfg[lbl_1_bss_120].character]; + for (var_r31 = lbl_1_data_A0C, var_r29 = 0; var_r29 < 2; var_r29++, var_r31++) { + var_r27 = var_r31->unk_10 + 3; + var_r31->unk_18 = HuMemDirectMallocNum(HEAP_SYSTEM, var_r27 * 4, MEMORY_DEFAULT_NUM); + var_r31->unk_18[0] = espEntry(var_r31->unk_00, 0, 0); + var_r31->unk_18[1] = espEntry(var_r31->unk_04, 0, 0); + var_r31->unk_18[2] = espEntry(var_r31->unk_0C, 0, 0); + for (var_r30 = 3; var_r30 < var_r27; var_r30++) { + var_r31->unk_18[var_r30] = espEntry(var_r31->unk_08, 0, 0); + } + var_r28 = 0x30; + if (var_r29 != 0) { + var_r28 = 0x210; + } + for (var_r30 = 0; var_r30 < var_r27; var_r30++) { + espDrawNoSet(var_r31->unk_18[var_r30], 0); + espDispOff(var_r31->unk_18[var_r30]); + espAttrSet(var_r31->unk_18[var_r30], 1); + espBankSet(var_r31->unk_18[var_r30], 0); + espPriSet(var_r31->unk_18[var_r30], 0x80 - var_r29); + espPosSet(var_r31->unk_18[var_r30], var_r28, 225.0f); + } + espTPLvlSet(var_r31->unk_18[0], 0.5f); + espColorSet(var_r31->unk_18[0], 0, 0, 0); + espPosSet(var_r31->unk_18[2], var_r28 - 2, 83.0f); + for (var_r30 = 3; var_r30 < var_r27; var_r30++) { + espPosSet(var_r31->unk_18[var_r30], var_r28 - 1, ((var_r30 - 3) * 0x1A) + 0x7B); + } + } +} + +void fn_1_12540(s32 arg0) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < (lbl_1_data_A0C[arg0].unk_10 + 3); var_r31++) { + espDispOn(lbl_1_data_A0C[arg0].unk_18[var_r31]); + } +} + +s32 fn_1_125C0(s32 arg0, s32 arg1) +{ + UnkDataA0CStruct *var_r31; + s32 var_r30; + + var_r31 = &lbl_1_data_A0C[arg0]; + if (arg1 == 0) { + arg1 = var_r31->unk_10 + 1; + } + var_r31->unk_14 -= arg1; + arg1 = var_r31->unk_14; + if (var_r31->unk_14 < 0) { + var_r31->unk_14 = 0; + } + for (var_r30 = 0; var_r30 < var_r31->unk_10; var_r30++) { + if (var_r31->unk_14 <= var_r30) { + espBankSet(var_r31->unk_18[var_r30 + 3], 1); + } + } + return arg1; +} + +void fn_1_12688(omObjData *object) +{ + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + + CameraData *var_r30; + + var_f30 = 1.0f; + var_f31 = 1.0f; + if (lbl_1_bss_1A4->work[0] > 0x3EC) { + var_f30 = 0.8f; + var_f31 = 0.4f; + } + if (object->work[0] != 0) { + if (lbl_1_bss_1A4->work[0] <= 0x3EB) { + object->work[0] = object->work[0] - (3.0f - (lbl_1_bss_128 / 120.0f)); + if (object->work[0] > 0x258) { + object->work[0] = 1; + } + } + if (--object->work[0] == 0) { + var_r30 = Hu3DCamera; + VECSubtract(&var_r30->pos, &var_r30->target, &sp8); + var_f29 = (atan2d(sp8.x, sp8.z)) + ((90.0f * frandf()) - 45.0f); + omSetRot(object, 0.0f, var_f29, 0.0f); + omSetSca(object, var_f31, var_f30, var_f31); + Hu3DMotionTimeSet(object->model[0], 0.0f); + Hu3DModelAttrReset(object->model[0], 1); + Hu3DModelAttrReset(object->model[0], 0x40000002); + HuAudFXPlay(0x7C0); + } + } + else if (Hu3DMotionEndCheck(object->model[0]) != 0) { + object->work[0] = frandmod(0x258); + Hu3DModelAttrSet(object->model[0], 1); + Hu3DModelAttrSet(object->model[0], 0x40000002); + } +} + +void fn_1_1291C(omObjData *object) +{ + object->work[0] = frandmod(0x258); + omSetTra(object, 0.0f, 0.0f, 0.0f); + omSetRot(object, 0.0f, 0.0f, 0.0f); + object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M450, 0x22)); + Hu3DModelAttrSet(object->model[0], 0x4001); + Hu3DModelAttrSet(object->model[0], 0x40000002); + Hu3DModelAttrReset(object->model[0], 0x40000001); + Hu3DModelLayerSet(object->model[0], 1); + object->func = fn_1_12688; +} + +UnkData5CCStruct lbl_1_data_5CC[8] = { + { "c000m1-ske_head", 0x100, 1, 183.0f }, + { "c001m1-ske_head", 0x100, 1, 183.0f }, + { "c002m1-ske_head", 0x80, 0, 100.0f }, + { "c003m1-ske_head", 0x80, 0, 90.0f }, + { "c004m1-ske_head", 0x80, 0, 83.0f }, + { "c005m1-ske_head", 0x80, 0, 112.0f }, + { "c006m1-ske_head", 0x80, 0, 100.0f }, + { "c007m1-ske_head", 0x80, 0, 70.0f }, +}; +s32 lbl_1_data_64C[8][0x17] = { + { + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x02), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x03), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x05), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x06), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x08), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x0A), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x09), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x13), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x16), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x19), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x1A), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x36), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x6D), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x1F), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x1C), + DATA_MAKE_NUM(DATADIR_M450, 0x00), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x0D), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x0E), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x10), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x11), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x17), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0x7F), + }, + { + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x02), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x03), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x05), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x06), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x08), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x0A), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x09), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x13), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x16), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x19), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x1A), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x36), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x6D), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x1F), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x1C), + DATA_MAKE_NUM(DATADIR_M450, 0x01), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x0D), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x0E), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x10), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x11), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x17), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0x7F), + }, + { + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x00), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x02), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x03), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x05), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x06), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x08), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x0A), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x09), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x13), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x16), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x19), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x1A), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x36), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x6D), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x1F), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x1C), + DATA_MAKE_NUM(DATADIR_M450, 0x02), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x0D), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x0E), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x10), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x11), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x17), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0x7F), + }, + { + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x02), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x03), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x05), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x06), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x08), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x0A), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x09), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x13), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x16), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x19), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x1A), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x36), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x6D), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x1F), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x1C), + DATA_MAKE_NUM(DATADIR_M450, 0x03), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x0D), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x0E), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x10), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x11), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x17), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0x7F), + }, + { + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x02), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x03), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x05), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x06), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x08), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x0A), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x09), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x13), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x16), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x19), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x1A), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x36), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x6D), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x1F), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x1C), + DATA_MAKE_NUM(DATADIR_M450, 0x04), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x0D), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x0E), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x10), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x11), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x17), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0x7F), + }, + { + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x02), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x03), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x05), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x06), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x08), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x0A), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x09), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x13), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x16), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x19), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x1A), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x36), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x6D), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x1F), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x1C), + DATA_MAKE_NUM(DATADIR_M450, 0x05), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x0D), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x0E), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x10), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x11), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x17), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0x7F), + }, + { + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x00), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x02), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x03), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x05), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x06), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x08), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x0A), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x09), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x13), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x16), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x19), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x1A), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x36), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x6D), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x1F), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x1C), + DATA_MAKE_NUM(DATADIR_M450, 0x06), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x0D), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x0E), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x10), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x11), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x17), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0x7F), + }, + { + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x00), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x02), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x03), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x05), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x06), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x08), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x0A), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x09), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x13), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x16), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x19), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x1A), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x36), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x6D), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x1F), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x1C), + DATA_MAKE_NUM(DATADIR_M450, 0x07), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x0D), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x0E), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x10), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x11), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x17), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0x7F), + }, +}; +s32 lbl_1_data_92C[8] = { 0, 1, 2, 3, 4, 5, 6, 7 }; +UnkData94CStruct lbl_1_data_94C[8] = { + { 9, 1.0f, 8.0f, 0.0f, 0 }, + { 0xA, 1.0f, 0.0f, 0.0f, 0 }, + { 0xB, 2.5f, 8.0f, 0.0f, 0 }, + { 0xC, 1.0f, 8.0f, 61.0f, 0x40000002 }, + { -1, 1.0f, 0.0f, 0.0f, 0 }, + { 0xD, 1.0f, 8.0f, 0.0f, 0 }, + { 0, 1.0f, 16.0f, 0.0f, 0x40000001 }, + { -1, 1.0f, 0.0f, 0.0f, 0 }, +}; +s32 lbl_1_data_9EC[8] = { + 0x610000, + 0x610001, + 0x610002, + 0x610003, + 0x610004, + 0x610005, + 0x610006, + 0x610007, +}; +UnkDataA0CStruct lbl_1_data_A0C[2] = { + { 0x00510065, DATA_MAKE_NUM(DATADIR_M450, 0x64), DATA_MAKE_NUM(DATADIR_M450, 0x68), DATA_MAKE_NUM(DATADIR_M450, 0x6B), 0xA, 0xA, NULL }, + { 0x00510067, DATA_MAKE_NUM(DATADIR_M450, 0x66), DATA_MAKE_NUM(DATADIR_M450, 0x69), DATA_MAKE_NUM(DATADIR_M450, 0x6A), 5, 5, NULL }, +}; +UnkDataA80Struct lbl_1_data_A80[9] = { + { "m450mex06-s2hook01", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 135.0f, 0.6f, 350.0f }, -1, 0 }, + { "m450mex06-s2hook01", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 315.0f, 0.6f, 350.0f }, -2, 0 }, + { "m450mex06-s2hook02", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 45.0f, -0.6f, 350.0f }, -1, 0 }, + { "m450mex06-s2hook02", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 225.0f, -0.6f, 350.0f }, -2, 0 }, + { "m450mex06-s2hook03", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 0.0f, 0.6f, 350.0f }, -1, 0 }, + { "m450mex06-s2hook03", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 120.0f, 0.6f, 350.0f }, -2, 0 }, + { "m450mex06-s2hook03", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 240.0f, 0.6f, 350.0f }, -2, 0 }, + { "m450mex06-s2hook04", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 0.0f, 0.6f, 300.0f }, -1, 0 }, + { "m450mex06-s2hook04", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 180.0f, 0.6f, 300.0f }, -2, 0 }, +}; +UnkDataA80Struct lbl_1_data_C58[0xA] = { + { "m450mex06-s4hook01", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 60.0f, -0.6f, 300.0f }, -1, 0 }, + { "m450mex06-s4hook01", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 180.0f, -0.6f, 300.0f }, -2, 0 }, + { "m450mex06-s4hook01", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 300.0f, -0.6f, 300.0f }, -2, 0 }, + { "m450mex06-s4hook03", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 135.0f, -1.2f, 300.0f }, -1, 0 }, + { "m450mex06-s4hook03", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 315.0f, -1.2f, 300.0f }, -2, 0 }, + { "m450mex06-s4hook02", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 225.0f, -0.6f, 300.0f }, -1, 0 }, + { "m450mex06-s4hook02", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 45.0f, -0.6f, 300.0f }, -2, 0 }, + { "m450mex06-s4hook04", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 0.0f, 1.2f, 300.0f }, -1, 0 }, + { "m450mex06-s4hook04", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 120.0f, 1.2f, 300.0f }, -2, 0 }, + { "m450mex06-s4hook04", { 0.0f, 0.0f, 0.0f }, -1, 0.0f, { 240.0f, 1.2f, 300.0f }, -2, 0 }, +}; +char *lbl_1_data_E68[5] = { + "m450m01-from1to2", + "m450m01-from2to3", + "m450m01-from3to4", + "m450m01-from4to5", + "m450m01-from5to6", +}; +s32 lbl_1_data_E7C[0x21] = { + DATA_MAKE_NUM(DATADIR_M450, 0x10), + DATA_MAKE_NUM(DATADIR_M450, 0x11), + DATA_MAKE_NUM(DATADIR_M450, 0x12), + DATA_MAKE_NUM(DATADIR_M450, 0x13), + DATA_MAKE_NUM(DATADIR_M450, 0x14), + DATA_MAKE_NUM(DATADIR_M450, 0x15), + DATA_MAKE_NUM(DATADIR_M450, 0x16), + DATA_MAKE_NUM(DATADIR_M450, 0x16), + DATA_MAKE_NUM(DATADIR_M450, 0x17), + DATA_MAKE_NUM(DATADIR_M450, 0x18), + DATA_MAKE_NUM(DATADIR_M450, 0x19), + DATA_MAKE_NUM(DATADIR_M450, 0x1A), + DATA_MAKE_NUM(DATADIR_M450, 0x1B), + DATA_MAKE_NUM(DATADIR_M450, 0x1C), + DATA_MAKE_NUM(DATADIR_M450, 0x1D), + DATA_MAKE_NUM(DATADIR_M450, 0x1E), + DATA_MAKE_NUM(DATADIR_M450, 0x1F), + DATA_MAKE_NUM(DATADIR_M450, 0x16), + DATA_MAKE_NUM(DATADIR_M450, 0x16), + DATA_MAKE_NUM(DATADIR_M450, 0x20), + DATA_MAKE_NUM(DATADIR_M450, 0x21), + DATA_MAKE_NUM(DATADIR_M450, 0x21), + DATA_MAKE_NUM(DATADIR_M450, 0x21), + DATA_MAKE_NUM(DATADIR_M450, 0x21), + DATA_MAKE_NUM(DATADIR_M450, 0x21), + DATA_MAKE_NUM(DATADIR_M450, 0x28), + DATA_MAKE_NUM(DATADIR_M450, 0x28), + DATA_MAKE_NUM(DATADIR_M450, 0x28), + DATA_MAKE_NUM(DATADIR_M450, 0x29), + DATA_MAKE_NUM(DATADIR_M450, 0x2A), + DATA_MAKE_NUM(DATADIR_M450, 0x2A), + DATA_MAKE_NUM(DATADIR_M450, 0x2B), + DATA_MAKE_NUM(DATADIR_M450, 0x2B), +}; +s32 lbl_1_data_F00[0x17] = { + DATA_MAKE_NUM(DATADIR_M450, 0x08), + DATA_MAKE_NUM(DATADIR_M450, 0x09), + DATA_MAKE_NUM(DATADIR_M450, 0x0B), + DATA_MAKE_NUM(DATADIR_M450, 0x0C), + DATA_MAKE_NUM(DATADIR_M450, 0x0E), + DATA_MAKE_NUM(DATADIR_M450, 0x0A), + DATA_MAKE_NUM(DATADIR_M450, 0x0A), + DATA_MAKE_NUM(DATADIR_M450, 0x0A), + DATA_MAKE_NUM(DATADIR_M450, 0x0A), + DATA_MAKE_NUM(DATADIR_M450, 0x0D), + DATA_MAKE_NUM(DATADIR_M450, 0x0D), + DATA_MAKE_NUM(DATADIR_M450, 0x0D), + DATA_MAKE_NUM(DATADIR_M450, 0x0D), + DATA_MAKE_NUM(DATADIR_M450, 0x0D), + DATA_MAKE_NUM(DATADIR_M450, 0x0D), + DATA_MAKE_NUM(DATADIR_M450, 0x0D), + DATA_MAKE_NUM(DATADIR_M450, 0x0D), + DATA_MAKE_NUM(DATADIR_M450, 0x0D), + DATA_MAKE_NUM(DATADIR_M450, 0x0F), + DATA_MAKE_NUM(DATADIR_M450, 0x0F), + DATA_MAKE_NUM(DATADIR_M450, 0x0F), + DATA_MAKE_NUM(DATADIR_M450, 0x0F), + DATA_MAKE_NUM(DATADIR_M450, 0x0F), +}; +s32 lbl_1_data_F5C[4] = { DATA_MAKE_NUM(DATADIR_M450, 0x24), DATA_MAKE_NUM(DATADIR_M450, 0x25), DATA_MAKE_NUM(DATADIR_M450, 0x26), DATA_MAKE_NUM(DATADIR_M450, 0x27) }; +s32 lbl_1_data_F6C[6] = { 0, 0xE10, 0x4650, 0xE10, 0x4650, 0x4650 }; +float lbl_1_data_F84[5] = { 1200.0f, 1500.0f, 0.0f, 200.0f, 300.0f }; +float lbl_1_data_F98[5] = { 1200.0f, 1500.0f, 0.0f, 200.0f, 300.0f }; +float *lbl_1_data_FAC[6] = { NULL, lbl_1_data_F84, NULL, lbl_1_data_F98, NULL, NULL }; +s32 lbl_1_data_FC4[5] = { 5, 4, 3, 2, 0 }; +s32 lbl_1_data_FD8[5] = { 3, 4, 5, 2, 2 }; +s32 lbl_1_data_FEC[5] = { 3, 4, 2, 5, 3 }; +s32 lbl_1_data_1000[5] = { 4, 2, 3, 5, 3 }; +s32 lbl_1_data_1014[0xA] = { 9, 0x10, 0xA, 8, 0xC, 0xD, 0xB, 0xE, 0xF, 1 }; +s32 lbl_1_data_103C[0xA] = { 9, 0x10, 0xA, 8, 0xB, 0xC, 0xE, 0xF, 0xD, 1 }; +s32 lbl_1_data_1064[0xA] = { 8, 0xC, 9, 0xB, 0xA, 0x10, 0xE, 0xF, 0xD, 5 }; +s32 lbl_1_data_108C[0xA] = { 8, 0xC, 9, 0xB, 0xF, 0xA, 0x10, 0xE, 0xD, 6 }; +s32 lbl_1_data_10B4[0xA] = { 8, 0xA, 0x10, 0xC, 9, 0xD, 0xB, 0xE, 0xF, 2 }; +s32 lbl_1_data_10DC[0xA] = { 8, 0xA, 0xC, 0xB, 9, 0xD, 0xE, 0xF, 0x10, 8 }; +s32 lbl_1_data_1104[0xA] = { 8, 0xC, 9, 0x10, 0xF, 0xA, 0xB, 0xE, 0xD, 3 }; +s32 lbl_1_data_112C[0xA] = { 0xB, 8, 0xA, 9, 0xD, 0x10, 0xE, 0xC, 0xF, 5 }; +s32 lbl_1_data_1154[0xA] = { 9, 0xC, 0xA, 8, 0xD, 0x10, 0xB, 0xE, 0xF, 5 }; +s32 lbl_1_data_117C[0xA] = { 9, 0xB, 0xA, 8, 0xF, 0xC, 0x10, 0xE, 0xD, 6 }; +s32 lbl_1_data_11A4[0xA] = { 8, 9, 0x10, 0xE, 0xD, 0xA, 0xC, 0xB, 0xF, 2 }; +s32 lbl_1_data_11CC[0xA] = { 0xB, 8, 0xA, 0xE, 9, 0xD, 0xC, 0xF, 0x10, 8 }; +s32 *lbl_1_data_11F4[4] = { lbl_1_data_FC4, lbl_1_data_FD8, lbl_1_data_FEC, lbl_1_data_1000 }; +s32 *lbl_1_data_1204[3] = { lbl_1_data_1014, lbl_1_data_103C, lbl_1_data_1064 }; +s32 *lbl_1_data_1210[3] = { lbl_1_data_108C, lbl_1_data_10B4, lbl_1_data_10DC }; +s32 *lbl_1_data_121C[3] = { lbl_1_data_1104, lbl_1_data_112C, lbl_1_data_1154 }; +s32 *lbl_1_data_1228[3] = { lbl_1_data_117C, lbl_1_data_11A4, lbl_1_data_11CC }; +s32 lbl_1_data_1234[8] = { 0xFFFFFFFF, 0, 1, 0, 0, 0xFFFFFFFF, 0, 1 }; + +char *lbl_1_data_12A0[4] = { + "m450mex06-s3hook01", + "m450mex06-s3hook02", + "m450mex06-s3hook03", + "m450mex06-s3hook04", +}; + +char *lbl_1_data_135C[9] = { + "m450mex06-s5hook03", + "m450mex06-s5hook02", + "m450mex06-s5hook01", + "m450mex06-s5hook06", + "m450mex06-s5hook05", + "m450mex06-s5hook04", + "m450mex06-s5hook09", + "m450mex06-s5hook08", + "m450mex06-s5hook07", +}; +UnkData1380Struct lbl_1_data_1380 = { lbl_1_data_12A0, 300.0f, 4, 2, -1, 0, 1, 0, 2, NULL, NULL, NULL, NULL, NULL }; +UnkData1380Struct lbl_1_data_13B8 = { lbl_1_data_135C, 200.0f, 9, 3, -1, 0, 1, 0, 8, NULL, NULL, NULL, NULL, NULL }; +UnkData1450Struct lbl_1_data_1450[5] = { + { "m450mex06-s6hook01", { 0.0f, 0.0f, 0.0f }, 0.0f, 0.0f, 0, 0, 0 }, + { "m450mex06-s6hook02", { 0.0f, 0.0f, 0.0f }, 0.0f, 0.0f, 0, 0, 0 }, + { "m450mex06-s6hook03", { 0.0f, 0.0f, 0.0f }, 0.0f, 0.0f, 0, 0, 0 }, + { "m450mex06-s6hook04", { 0.0f, 0.0f, 0.0f }, 0.0f, 0.0f, 0, 0, 0 }, + { "m450mex06-s6hook05", { 0.0f, 0.0f, 0.0f }, 0.0f, 0.0f, 0, 0, 0 }, +}; + +HsfanimStruct00 lbl_1_data_1504 = { + 0x1E, + { 0, 0 }, + 1.0f, + 30.0f, + 360.0f, + { 0.0f, 0.1f, 0.0f }, + 1.0f, + 1.0f, + 50.0f, + 1.08f, + 1, + { + { 0xFF, 0xFF, 0xFF, 0xFF }, + { 0xFF, 0xFF, 0xFF, 0xFF }, + { 0xFF, 0xFF, 0xFF, 0xFF }, + { 0xFF, 0xFF, 0xFF, 0xFF }, + }, + { + { 0xFF, 0xFF, 0xFF, 0 }, + { 0xFF, 0xFF, 0xFF, 0 }, + { 0xFF, 0xFF, 0xFF, 0 }, + { 0xFF, 0xFF, 0xFF, 0 }, + }, +}; + +void fn_1_12A1C(omObjData *object) +{ + float var_f31; + float var_f30; + + if (object->work[0] != 0) { + if (lbl_1_bss_108 != 0) { + if (--object->work[0] == 0) { + var_f31 = (1500.0f * frandf()) - 750.0f; + var_f30 = (1500.0f * frandf()) - 750.0f; + omSetTra(object, var_f31, 1380.0f, var_f30); + Hu3DMotionTimeSet(object->model[0], 0.0f); + Hu3DModelAttrReset(object->model[0], 1); + Hu3DModelAttrReset(object->model[0], 0x40000002); + } + } + } + else if (Hu3DMotionEndCheck(object->model[0]) != 0) { + object->work[0] = frandmod(0xB4); + Hu3DModelAttrSet(object->model[0], 1); + Hu3DModelAttrSet(object->model[0], 0x40000002); + } +} + +void fn_1_12B80(omObjData *object) +{ + s32 var_r30; + s16 var_r29; + + object->work[0] = frandmod(0xB4); + omSetTra(object, 0.0f, 0.0f, 0.0f); + omSetRot(object, 0.0f, 0.0f, 0.0f); + + object->model[0] = fn_1_46C(DATA_MAKE_NUM(DATADIR_M450, 0x23)); + Hu3DModelAttrSet(object->model[0], 0x4001); + Hu3DModelAttrSet(object->model[0], 0x40000002); + Hu3DModelAttrReset(object->model[0], 0x40000001); + Hu3DModelLayerSet(object->model[0], 1); + object->func = fn_1_12A1C; +} + +void fn_1_12D78(omObjData *object) { } + +void fn_1_12D7C(omObjData *object) +{ + omSetTra(object, 0.0f, 0.0f, 0.0f); + omSetRot(object, 0.0f, 0.0f, 0.0f); + object->model[0] = Hu3DModelCreateFile(lbl_1_data_F00[object->work[0]]); + Hu3DModelAttrSet(object->model[0], 1); + Hu3DModelAttrSet(object->model[0], 0x40000002); + object->func = fn_1_12D78; +} + +void fn_1_12E5C(s32 var_r30, s32 var_r29, s32 var_r31) +{ + Vec sp8 = lbl_1_data_1450[var_r30].unk_04; + + VECAdd(&lbl_1_data_1450[var_r29].unk_04, &sp8, &sp8); + VECScale(&sp8, &sp8, 0.5f); + sp8.y = 1501.0f; + Hu3DModelPosSet(lbl_1_bss_1A0->model[var_r31], sp8.x, sp8.y, sp8.z); + Hu3DModelRotSet( + lbl_1_bss_1A0->model[var_r31], 0.0f, atan2d(lbl_1_data_1450[var_r30].unk_04.x - sp8.x, lbl_1_data_1450[var_r30].unk_04.z - sp8.z), 0.0f); + Hu3DModelScaleSet( + lbl_1_bss_1A0->model[var_r31], 1.0f, 1.0f, VECDistance(&lbl_1_data_1450[var_r30].unk_04, &lbl_1_data_1450[var_r29].unk_04) / 1000.0f); + Hu3DMotionTimeSet(lbl_1_bss_1A0->model[var_r31], 0.0f); + Hu3DModelAttrReset(lbl_1_bss_1A0->model[var_r31], 0x40000003); + Hu3DModelAttrReset(lbl_1_bss_1A0->model[var_r31], 1); +} + +void fn_1_130A4(Vec *arg0, s32 var_r30) +{ + Hu3DModelPosSet(lbl_1_bss_1A0->model[var_r30], arg0->x, arg0->y, arg0->z); + Hu3DMotionTimeSet(lbl_1_bss_1A0->model[var_r30], 0.0f); + Hu3DModelAttrReset(lbl_1_bss_1A0->model[var_r30], 0x40000003); + Hu3DModelAttrReset(lbl_1_bss_1A0->model[var_r30], 1); + HuAudFXPlay(0x7B7); +} + +void fn_1_13174(UnkData1380Struct *arg0) +{ + s32 var_r30; + s32 var_r27; + + if (arg0->unk_14 != 0) { + arg0->unk_14 = 0; + arg0->unk_18 = 0; + for (var_r30 = 0; var_r30 < arg0->unk_08; var_r30++) { + if (arg0->unk_24[var_r30] >= 0) { + var_r27 = lbl_1_bss_1A0->model[arg0->unk_24[var_r30]]; + MTXIdentity(Hu3DData[var_r27].unk_F0); + if (arg0->unk_08 == 4) { + Hu3DModelRotSet(lbl_1_bss_1A0->model[arg0->unk_24[var_r30]], 0.0f, 90.0f, 0.0f); + } + else { + Hu3DModelRotSet(lbl_1_bss_1A0->model[arg0->unk_24[var_r30]], 0.0f, -90.0f, 0.0f); + } + } + } + } + for (var_r30 = 0; var_r30 < arg0->unk_08; var_r30++) { + if (arg0->unk_18 != 0) { + if (arg0->unk_24[var_r30] < 0) { + fn_1_1D70(lbl_1_bss_1A0->model[0], arg0->unk_00[var_r30], &arg0->unk_30[var_r30], NULL); + } + else { + var_r27 = lbl_1_bss_1A0->model[arg0->unk_24[var_r30]]; + fn_1_1D70(lbl_1_bss_1A0->model[0], arg0->unk_00[var_r30], &arg0->unk_30[var_r30], Hu3DData[var_r27].unk_F0); + } + } + else if (arg0->unk_24[var_r30] >= 0) { + Hu3DModelPosSet(lbl_1_bss_1A0->model[arg0->unk_24[var_r30]], arg0->unk_30[var_r30].x, arg0->unk_30[var_r30].y, arg0->unk_30[var_r30].z); + } + } + for (var_r30 = 0; var_r30 < arg0->unk_08; var_r30++) { + if (arg0->unk_28[var_r30] >= 0) { + omSetTra(lbl_1_bss_144[arg0->unk_28[var_r30]], arg0->unk_30[var_r30].x, arg0->unk_30[var_r30].y, arg0->unk_30[var_r30].z); + } + } +} + +void fn_1_13560(UnkData1380Struct *arg0, s32 *arg1, s32 arg2) +{ + s32 var_r30; + Vec *var_r28; + + arg0->unk_30 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0->unk_08 * sizeof(Vec), MEMORY_DEFAULT_NUM); + arg0->unk_34 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0->unk_08 * sizeof(Vec), MEMORY_DEFAULT_NUM); + arg0->unk_24 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0->unk_08 * sizeof(s32), MEMORY_DEFAULT_NUM); + arg0->unk_28 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0->unk_08 * sizeof(s32), MEMORY_DEFAULT_NUM); + arg0->unk_2C = arg1; + for (var_r30 = 0; var_r30 < arg0->unk_08; var_r30++) { + arg0->unk_24[var_r30] = *arg1++; + arg0->unk_28[var_r30] = arg2++; + var_r28 = &arg0->unk_34[var_r30]; + var_r28->x = 0.0f; + var_r28->y = 0.0f; + var_r28->z = 0.0f; + } + arg0->unk_10 = arg0->unk_24[*arg1]; + arg0->unk_24[*arg1] = -1; + arg0->unk_28[*arg1] = -1; + fn_1_13174(arg0); + for (var_r30 = 0; var_r30 < arg0->unk_08; var_r30++) { + if (arg0->unk_24[var_r30] >= 0) { + Hu3DModelAttrReset(lbl_1_bss_1A0->model[arg0->unk_24[var_r30]], 1); + } + } +} + +void fn_1_13714(void) +{ + Vec sp8; + s32 var_r31; + s32 var_r30; + + if ((0 > lbl_1_bss_F8) || (NULL == lbl_1_bss_FC)) { + return; + } + VECSubtract(&lbl_1_bss_EC, &lbl_1_bss_FC->unk_30[lbl_1_bss_F8], &sp8); + if (10.0f < VECMag(&sp8)) { + VECNormalize(&sp8, &sp8); + VECScale(&sp8, &sp8, 10.0f); + } + lbl_1_bss_FC->unk_34[lbl_1_bss_F8] = sp8; + VECAdd(&sp8, &lbl_1_bss_FC->unk_30[lbl_1_bss_F8], &lbl_1_bss_FC->unk_30[lbl_1_bss_F8]); + if ((sp8.x == 0.0f) && (sp8.z == 0.0f)) { + for (var_r30 = lbl_1_bss_FC->unk_20, var_r31 = 0; var_r31 < lbl_1_bss_FC->unk_08; var_r31++, var_r30++) { + if ((lbl_1_bss_FC->unk_24[var_r31] >= 0) && (var_r30 != lbl_1_bss_FC->unk_24[var_r31])) { + break; + } + } + if (lbl_1_bss_FC->unk_08 == var_r31) { + lbl_1_bss_FC->unk_1C = 1; + } + lbl_1_bss_FC->unk_30[lbl_1_bss_F8] = lbl_1_bss_EC; + lbl_1_bss_F8 = -1; + lbl_1_bss_FC = NULL; + HuAudFXPlay(0x7B9); + } +} + +void fn_1_139B0(UnkData1380Struct *arg0, s32 arg1) +{ + s32 var_r30; + s32 var_r28; + + arg0->unk_18 = 1; + arg0->unk_24[arg0->unk_08 - 1] = arg1; + for (var_r30 = 0; var_r30 < arg0->unk_08; var_r30++) { + var_r28 = lbl_1_bss_1A0->model[arg0->unk_24[var_r30]]; + fn_1_1D70(lbl_1_bss_1A0->model[0], arg0->unk_00[var_r30], &arg0->unk_30[var_r30], Hu3DData[var_r28].unk_F0); + Hu3DModelPosSet(var_r28, 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(var_r28, 0.0f, 0.0f, 0.0f); + } +} + +void fn_1_13B4C(UnkData1380Struct *arg0) +{ + arg0->unk_14 = 1; +} + +void fn_1_13B58(s32 arg0) +{ + if (arg0 > GWMGTypeGet()) { + GWMGTypeSet(arg0); + } +} + +s32 fn_1_13B90(s32 arg0) +{ + if (arg0 > GWMGTypeGet()) { + return 0; + } + return 1; +} + +void fn_1_13BC4(s32 arg0) +{ + s32 var_r31; + UnkData1380Struct *var_r30; + s16 var_r29; + + nMap = 0; + lbl_1_bss_118 = arg0; + lbl_1_bss_F8 = -1; + lbl_1_bss_FC = NULL; + lbl_1_bss_110 = 1; + lbl_1_bss_304 = lbl_1_data_F6C[arg0]; + var_r30 = NULL; + switch (arg0) { + case 1: + MapObject[nMap++] = lbl_1_bss_144[0]; + break; + case 2: + lbl_1_bss_110 = 2; + var_r30 = &lbl_1_data_1380; + lbl_1_data_1380.unk_14 = 1; + MapObject[nMap++] = lbl_1_bss_144[1]; + break; + case 3: + MapObject[nMap++] = lbl_1_bss_144[2]; + break; + case 4: + lbl_1_bss_110 = 2; + var_r30 = &lbl_1_data_13B8; + lbl_1_data_13B8.unk_14 = 1; + MapObject[nMap++] = lbl_1_bss_144[3]; + break; + case 5: + lbl_1_bss_110 = 3; + MapObject[nMap++] = lbl_1_bss_144[4]; + for (var_r31 = 0; var_r31 < 5; var_r31++) { + MapObject[nMap++] = lbl_1_bss_144[var_r31 + 0x12]; + } + break; + } + fn_1_13B58(arg0); + if (NULL != var_r30) { + for (var_r31 = 0; var_r31 < var_r30->unk_08; var_r31++) { + if (var_r30->unk_28[var_r31] >= 0) { + MapObject[nMap++] = lbl_1_bss_144[var_r30->unk_28[var_r31]]; + } + } + } +} + +void fn_1_13F28(omObjData *object) +{ + Vec sp30; + float var_f31; + + UnkData1450Struct *var_r31; + s32 var_r29; + s32 var_r28; + Vec *var_r27; + Vec *var_r26; + + for (var_r29 = 0; var_r29 < lbl_1_data_1380.unk_08; var_r29++) { + var_r27 = &lbl_1_data_1380.unk_34[var_r29]; + var_r27->x = 0.0f; + var_r27->y = 0.0f; + var_r27->z = 0.0f; + } + for (var_r29 = 0; var_r29 < lbl_1_data_13B8.unk_08; var_r29++) { + var_r26 = &lbl_1_data_13B8.unk_34[var_r29]; + var_r26->x = 0.0f; + var_r26->y = 0.0f; + var_r26->z = 0.0f; + } + fn_1_13714(); + fn_1_13174(&lbl_1_data_1380); + fn_1_13174(&lbl_1_data_13B8); + var_r28 = object->model[6]; + fn_1_1D70(object->model[0], "m450mex06-s3hook06", &sp30, Hu3DData[var_r28].unk_F0); + var_r28 = object->model[7]; + fn_1_1D70(object->model[0], "m450mex06-s3hook05", &sp30, Hu3DData[var_r28].unk_F0); + var_r28 = object->model[17]; + fn_1_1D70(object->model[0], "m450mex06-s5hook11", &sp30, Hu3DData[var_r28].unk_F0); + var_r28 = object->model[18]; + fn_1_1D70(object->model[0], "m450mex06-s5hook10", &sp30, Hu3DData[var_r28].unk_F0); + var_r28 = object->model[19]; + fn_1_1D70(object->model[0], "m450m01-from5to6", &sp30, Hu3DData[var_r28].unk_F0); + for (var_r29 = 0; var_r29 < 5; var_r29++) { + var_r31 = &lbl_1_data_1450[var_r29]; + var_r31->unk_10 = var_r31->unk_04.y; + var_r28 = object->model[var_r29 + 0x14]; + fn_1_1D70(object->model[0], var_r31->unk_00, &var_r31->unk_04, Hu3DData[var_r28].unk_F0); + fn_1_1D18(object->model[var_r29 + 0x14], "m450_s6a1-s6a1hook", &sp30); + VECAdd(&sp30, &var_r31->unk_04, &var_r31->unk_04); + if (1560.0f > var_r31->unk_04.y) { + var_r31->unk_04.y = 1560.0f; + } + omSetTra(lbl_1_bss_144[var_r29 + 0x12], var_r31->unk_04.x, var_r31->unk_04.y, var_r31->unk_04.z); + var_r31->unk_10 = var_r31->unk_04.y - var_r31->unk_10; + if (var_r31->unk_18 != 0) { + if (var_r31->unk_1C != 0) { + var_f31 = Hu3DMotionTimeGet(object->model[var_r29 + 0x14]); + if ((10.0f <= var_f31) && (40.0f >= var_f31)) { + var_r31->unk_10 = 0.0f; + } + if (40.0f <= var_f31) { + Hu3DMotionTimeSet(object->model[var_r29 + 0x14], 10.0f); + if (var_r31->unk_20 != 0) { + var_r31->unk_20 = 0; + } + } + if (((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_10C < 3) { + var_r31->unk_14 += 1.0f; + if (1200.0f < var_r31->unk_14) { + var_r31->unk_1C = 0; + fn_1_1B510(var_r29); + } + } + } + else if (Hu3DMotionEndCheck(object->model[var_r29 + 0x14]) != 0) { + var_r31->unk_18 = 0; + } + } + } +} + +void fn_1_148B0(float arg8, s8 arg0) +{ + Mtx spC; + ModelData *var_r30; + s32 var_r31; + + if (lbl_1_bss_114 == 0) { + if (arg0 == 0x78) { + MTXRotRad(spC, 0x5A, 0.017453292f * arg8); + } + else { + MTXRotRad(spC, 0x58, 0.017453292f * arg8); + } + MTXConcat(spC, lbl_1_bss_88, spC); + for (var_r31 = 0; var_r31 <= 1; var_r31++) { + var_r30 = &Hu3DData[lbl_1_bss_1A0->model[var_r31]]; + MTXCopy(spC, var_r30->unk_F0); + } + fn_1_13F28(lbl_1_bss_1A0); + } +} + +void fn_1_149C0(s8 arg0) +{ + Mtx spC; + s32 var_r31; + ModelData *var_r30; + + lbl_1_bss_114 = 1; + if (arg0 == 0x78) { + MTXRotRad(spC, 0x5A, 1.5707964f); + } + else { + MTXRotRad(spC, 0x58, 1.5707964f); + } + MTXConcat(spC, lbl_1_bss_88, lbl_1_bss_88); + for (var_r31 = 0; var_r31 <= 1; var_r31++) { + var_r30 = &Hu3DData[lbl_1_bss_1A0->model[var_r31]]; + MTXCopy(lbl_1_bss_88, var_r30->unk_F0); + } + fn_1_13F28(lbl_1_bss_1A0); +} + +void fn_1_14AB8(void) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 5; var_r31++) { + fn_1_1D70(lbl_1_bss_1A0->model[0], lbl_1_data_E68[var_r31], &lbl_1_bss_4C[var_r31], NULL); + } +} + +void fn_1_14BC8(UnkDataA80Struct *arg0, s32 arg1) +{ + s32 var_r31; + + lbl_1_bss_104 = arg0; + lbl_1_bss_100 = arg1; + for (var_r31 = 0; var_r31 < lbl_1_bss_100; var_r31++, arg0++) { + arg0->unk_10 = -1; + arg0->unk_28 = 1; + } +} + +void fn_1_14C28(void) +{ + UnkDataA80Struct *var_r31; + s32 var_r30; + + if (NULL != lbl_1_bss_104) { + for (var_r31 = lbl_1_bss_104, var_r30 = 0; var_r30 < lbl_1_bss_100; var_r30++, var_r31++) { + if (var_r31->unk_10 >= 0) { + fn_1_66A0(var_r31->unk_10); + } + if (var_r31->unk_24 >= 0) { + HuAudFXStop(var_r31->unk_24); + var_r31->unk_24 = -2; + } + } + } +} + +void fn_1_14CE8(omObjData *object) +{ + UnkDataA80Struct *var_r31; + s32 var_r25; + s32 var_r22; + s32 var_r19; + s32 var_r18; + + if (NULL != lbl_1_bss_104) { + var_r19 = 1; + var_r18 = 1; + var_r25 = 0; + for (var_r31 = lbl_1_bss_104, var_r22 = 0; var_r22 < lbl_1_bss_100; var_r22++, var_r31++) { + if ((var_r18 != 0) && (var_r31->unk_28 != 0)) { + var_r25++; + var_r18 = 0; + var_r31->unk_28 = 0; + var_r31->unk_14 = var_r31->unk_18.x; + fn_1_1D70(lbl_1_bss_1A0->model[0], var_r31->unk_00, &var_r31->unk_04, NULL); + var_r31->unk_10 = fn_1_69F8(NULL, &var_r31->unk_14, 0x40); + } + else if (var_r31->unk_10 >= 0) { + var_r25++; + var_r31->unk_14 += var_r31->unk_18.y; + if (0.0f > var_r31->unk_14) { + var_r31->unk_14 += 360.0f; + } + if (360.0f <= var_r31->unk_14) { + var_r31->unk_14 -= 360.0f; + } + if ((lbl_1_bss_308 & 1) == 0) { + fn_1_6798(var_r31->unk_10, 1, &var_r31->unk_04, 0.0f, var_r31->unk_18.z, var_r31->unk_04.y); + if ((var_r19 != 0) && (var_r31->unk_24 < 0) && (var_r31->unk_24 > -2)) { + var_r19 = 0; + var_r31->unk_24 = HuAudFXEmiterPlay(var_r31->unk_18.z == 350.0f ? 0x7BF : 0x7AD, &var_r31->unk_04); + } + } + if (fn_1_66DC(var_r31->unk_10) != 0) { + var_r31->unk_10 = -1; + } + } + } + if (var_r25 == 0) { + lbl_1_bss_104 = NULL; + } + } + fn_1_13F28(object); + fn_1_186A8(); +} + +void fn_1_15308(omObjData *object) +{ + s32 var_r30; + s32 **var_r22; + + lbl_1_bss_104 = NULL; + MTXIdentity(lbl_1_bss_88); + omSetTra(object, 0.0f, 0.0f, 0.0f); + omSetRot(object, 0.0f, 0.0f, 0.0f); + for (var_r30 = 0; var_r30 < 0x21; var_r30++) { + object->model[var_r30] = Hu3DModelCreateFile(lbl_1_data_E7C[var_r30]); + Hu3DModelAttrSet(object->model[var_r30], 0x4001); + Hu3DModelAttrSet(object->model[var_r30], 0x40000001); + Hu3DModelAttrReset(object->model[var_r30], 0x40000002); + Hu3DModelLayerSet(object->model[var_r30], 0); + Hu3DModelPosSet(object->model[var_r30], 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(object->model[var_r30], 0.0f, 0.0f, 0.0f); + if (var_r30 != 1) { + Hu3DModelShadowMapSet(object->model[var_r30]); + } + } + Hu3DMotionSpeedSet(object->model[1], 0.1f); + switch (GWPlayerCfg[lbl_1_bss_120].diff) { + case 0: + var_r22 = lbl_1_data_1204; + break; + case 1: + var_r22 = lbl_1_data_1210; + break; + case 2: + var_r22 = lbl_1_data_121C; + break; + case 3: + default: + var_r22 = lbl_1_data_1228; + break; + } + fn_1_13560(&lbl_1_data_1380, lbl_1_data_11F4[frandmod(4)], 5); + fn_1_13560(&lbl_1_data_13B8, var_r22[frandmod(3)], 9); + fn_1_14AB8(); + + for (var_r30 = 0; var_r30 <= 1; var_r30++) { + Hu3DModelAttrReset(object->model[var_r30], 1); + } + Hu3DModelAttrReset(object->model[6], 1); + Hu3DModelAttrReset(object->model[17], 1); + Hu3DModelAttrReset(object->model[19], 1); + for (var_r30 = 0; var_r30 < 5; var_r30++) { + Hu3DModelAttrSet(object->model[var_r30 + 0x14], 0x40000002); + Hu3DModelAttrReset(object->model[var_r30 + 0x14], 0x40000001); + Hu3DModelAttrReset(object->model[var_r30 + 0x14], 1); + } + object->func = fn_1_14CE8; +} + +float fn_1_15B48(s32 arg0, float arg8, float arg9) +{ + return (arg9 + (arg8 * (arg0 - 1))) / arg0; +} + +void fn_1_15BAC(Vec *arg0, Vec *arg1, float arg8, s32 arg2, float *arg3, float *arg4) +{ + Vec sp14; + + VECSubtract(arg1, arg0, &sp14); + if (360.0f <= arg8) { + arg8 -= 360.0f; + } + else if (0.0f > arg8) { + arg8 += 360.0f; + } + if (360.0f <= arg8) { + arg8 -= 360.0f; + } + else if (0.0f > arg8) { + arg8 += 360.0f; + } + if (360.0f <= arg8) { + arg8 -= 360.0f; + } + else if (0.0f > arg8) { + arg8 += 360.0f; + } + *arg3 = (atan2d(sp14.z, sp14.x)) - 90.0; + *arg4 = atan2d(sp14.y, sqrtf((sp14.x * sp14.x) + (sp14.z * sp14.z))); + if (arg2 == 0) { + *arg3 *= -1.0f; + } + if (arg2 != 0) { + *arg3 += arg8; + } + else { + *arg3 -= arg8; + } + if (180.0f <= *arg3) { + *arg3 -= 360.0f; + } + else if (-180.0f > *arg3) { + *arg3 += 360.0f; + } + if (180.0f <= *arg3) { + *arg3 -= 360.0f; + } + else if (-180.0f > *arg3) { + *arg3 += 360.0f; + } + if (180.0f <= *arg3) { + *arg3 -= 360.0f; + } + else if (-180.0f > *arg3) { + *arg3 += 360.0f; + } + if (60.0f <= *arg3) { + *arg3 = 60.0f; + } + if (-60.0f >= *arg3) { + *arg3 = -60.0f; + } + if (45.0f <= *arg4) { + *arg4 = 45.0f; + } + if (-45.0f >= *arg4) { + *arg4 = -45.0f; + } +} + +void fn_1_160AC(UnkM450Struct5 *arg0, omObjData *object, Vec *arg2) +{ + float spC; + float sp8; + UnkData5CCStruct *var_r30; + + arg0->unk_FC |= 0x8000; + var_r30 = &lbl_1_data_5CC[arg0->unk_11C]; + if (NULL == arg2) { + spC = 0.0f; + sp8 = 0.0f; + } + else { + fn_1_15BAC(&arg0->unk_00.unk_6C, arg2, arg0->unk_00.unk_9C, var_r30->unk_08, &spC, &sp8); + } + arg0->unk_C8 = fn_1_15B48(10, arg0->unk_C8, spC); + arg0->unk_CC = fn_1_15B48(10, arg0->unk_CC, sp8); + Hu3DMotionForceSet(object->model[0], var_r30->unk_00, var_r30->unk_04, arg0->unk_C8); + Hu3DMotionForceSet(object->model[0], var_r30->unk_00, 0x200, var_r30->unk_0C - arg0->unk_CC); +} + +void fn_1_16280(UnkM450Struct5 *arg0, omObjData *object) +{ + UnkData5CCStruct *var_r31; + + if (arg0->unk_FC & 0x8000) { + arg0->unk_FC &= ~0x8000; + var_r31 = &lbl_1_data_5CC[arg0->unk_11C]; + Hu3DMotionNoMotReset(object->model[0], var_r31->unk_00, var_r31->unk_04); + Hu3DMotionNoMotReset(object->model[0], var_r31->unk_00, 0x200); + } +} + +Vec *fn_1_16314(s32 arg0) +{ + UnkData1380Struct *var_r31; + s32 var_r30; + + var_r31 = &lbl_1_data_1380; + for (var_r30 = 0; var_r30 < var_r31->unk_08; var_r30++) { + if (arg0 == var_r31->unk_24[var_r30]) { + return &var_r31->unk_30[var_r30]; + } + } + return var_r31->unk_30; +} + +void fn_1_16378(omObjData *object) +{ + Vec sp8; + float var_f31; + float var_f30; + float var_f29; + + UnkM450Struct4 *var_r31; + s32 var_r30; + + var_r31 = object->data; + var_r31->unk_48 += 0.98f; + if (1555.0f < var_r31->unk_00.y) { + var_r31->unk_00.y -= var_r31->unk_48; + } + if (1555.0f >= var_r31->unk_00.y) { + if (10.0f < var_r31->unk_48) { + var_r31->unk_48 = 10.0f; + } + var_r31->unk_00.y = 1555.0f; + if (0.0f > (var_r31->unk_48 / 1.5f)) { + var_f30 = -(var_r31->unk_48 / 1.5f); + } + else { + var_f30 = var_r31->unk_48 / 1.5f; + } + var_r31->unk_48 = -var_f30; + if (0.0f > var_r31->unk_48) { + var_f29 = -var_r31->unk_48; + } + else { + var_f29 = var_r31->unk_48; + } + if (1.0f < var_f29) { + var_r31->unk_00.y += 1.0f; + } + if (var_r31->unk_74 != 0) { + var_r31->unk_74 = 0; + omVibrate(lbl_1_bss_120, 0xC, 4, 2); + HuAudFXPlay(0x7AE); + } + } + if (Hu3DMotionEndCheck(object->model[0]) != 0) { + var_r31->unk_78 = 1; + } + if ((var_r31->unk_74 == 0) && (lbl_1_bss_1A4->work[0] > 0x3FB)) { + var_r31->unk_78 = 1; + } + if ((var_r31->unk_74 == 0) && (lbl_1_bss_1A4->work[0] == 0x3E8)) { + var_r31->unk_78 = 1; + } + if (var_r31->unk_78 != 0) { + var_r31->unk_50 = var_r31->unk_50 - 1.0f; + if ((lbl_1_bss_308 & 1) != 0) { + for (var_r30 = 0; var_r30 < 2; var_r30++) { + Hu3DModelAttrSet(object->model[var_r30], 1); + } + } + else { + for (var_r30 = 0; var_r30 < 2; var_r30++) { + Hu3DModelAttrReset(object->model[var_r30], 1); + } + } + if (0.0f > var_r31->unk_50) { + Hu3DModelShadowReset(object->model[0]); + for (var_r30 = 0; var_r30 < 2; var_r30++) { + Hu3DModelAttrSet(object->model[var_r30], 1); + } + fn_1_24(0x1000, object->model[0]); + fn_1_24(0x2000, object->model[1]); + omDelObjEx(lbl_1_bss_33C, object); + return; + } + } + if (var_r31->unk_78 == 0) { + for (var_r30 = 0; var_r30 < 1; var_r30++) { + if (NULL == lbl_1_bss_E8[var_r30]) { + lbl_1_bss_E8[var_r30] = var_r31; + break; + } + } + } + var_f31 = (var_r31->unk_00.y - 1555.0f) / 300.0f; + if (1.0f < var_f31) { + var_f31 = 1.0f; + } + var_f31 = 1.0f - var_f31; + var_f31 = 1.0f; + sp8 = *fn_1_16314(var_r31->unk_70); + VECAdd(&var_r31->unk_64, &sp8, &sp8); + var_r31->unk_00.x += var_f31 * (sp8.x - var_r31->unk_00.x); + var_r31->unk_00.z += var_f31 * (sp8.z - var_r31->unk_00.z); + omSetTra(object, var_r31->unk_00.x, var_r31->unk_00.y, var_r31->unk_00.z); + for (var_r30 = 0; var_r30 < 2; var_r30++) { + Hu3DModelPosSet(object->model[var_r30], var_r31->unk_00.x, var_r31->unk_00.y, var_r31->unk_00.z); + } +} + +void fn_1_16910(omObjData *object) +{ + UnkM450Struct4 *var_r30; + s32 var_r27; + s32 var_r26; + + var_r30 = object->data; + var_r30->unk_48 = 0.0f; + var_r30->unk_50 = 30.0f; + var_r26 = fn_1_AC(0x1000); + if (var_r26 < 0) { + object->model[0] = Hu3DModelLink(lbl_1_bss_2C[0]); + } + else { + object->model[0] = var_r26; + } + var_r26 = fn_1_AC(0x2000); + if (var_r26 < 0) { + object->model[1] = Hu3DModelLink(lbl_1_bss_2C[1]); + } + else { + object->model[1] = var_r26; + } + for (var_r27 = 0; var_r27 < 2; var_r27++) { + Hu3DModelAttrSet(object->model[var_r27], 1); + Hu3DModelAttrReset(object->model[var_r27], 0x40000003); + Hu3DModelLayerSet(object->model[var_r27], 4); + Hu3DMotionTimeSet(object->model[var_r27], 0.0f); + Hu3DModelPosSet(object->model[var_r27], var_r30->unk_00.x, var_r30->unk_00.y, var_r30->unk_00.z); + Hu3DModelRotSet(object->model[var_r27], 0.0f, 0.0f, 0.0f); + } + 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); + Hu3DModelShadowSet(object->model[0]); + Hu3DModelAttrReset(object->model[0], 1); + Hu3DModelAttrReset(object->model[1], 1); + object->func = fn_1_16378; +} + +void fn_1_16BC4(Vec *arg0, Vec *arg1, s32 arg2) +{ + UnkData1380Struct *spC; + + UnkM450Struct4 *var_r31; + s32 var_r30; + omObjData *var_r29; + + for (var_r30 = 0; var_r30 < 2; var_r30++) { + if (lbl_1_data_1CC[var_r30 * 2] == 0x3E) { + HuAudFXPlay(lbl_1_data_1CC[(var_r30 * 2) + 1]); + break; + } + } + var_r29 = omAddObjEx(lbl_1_bss_33C, 0x6A, 2, 0, -1, fn_1_16910); + var_r29->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM450Struct4), MEMORY_DEFAULT_NUM); + spC = &lbl_1_data_1380; + var_r31 = var_r29->data; + var_r31->unk_74 = 1; + var_r31->unk_78 = 0; + var_r31->unk_7C = 0; + var_r31->unk_70 = arg2; + var_r31->unk_00 = *arg0; + var_r31->unk_64 = *arg1; +} + +void fn_1_16CF4(omObjData *object) +{ + float spC; + float sp8; + + UnkM450Struct4 *var_r31 = object->data; + UnkM450Struct5 *var_r30 = lbl_1_bss_138->data; + spC = var_r30->unk_00.unk_6C.x - var_r31->unk_00.x; + sp8 = var_r30->unk_00.unk_6C.z - var_r31->unk_00.z; + var_r31->unk_00.y += (0.1f * (1505.0f - var_r31->unk_00.y)); + if ((lbl_1_bss_1A4->work[0] > 0x3FB) || (lbl_1_bss_1A4->work[0] == 0x3E8)) { + var_r31->unk_78 = 1; + } + if (var_r31->unk_78 != 0) { + var_r31->unk_40 = var_r31->unk_40 - 0.1f; + if (0.0f > var_r31->unk_40) { + Hu3DModelAttrSet(*object->model, 1); + fn_1_24(0x3000, object->model[0]); + omDelObjEx(lbl_1_bss_33C, object); + return; + } + } + else { + var_r31->unk_50 += 1.0f; + if (var_r31->unk_7C != 0) { + if (60.0f < var_r31->unk_50) { + var_r31->unk_78 = 1; + } + var_r31->unk_00.x += (0.1f * (var_r30->unk_00.unk_6C.x - var_r31->unk_00.x)); + var_r31->unk_00.z += (0.1f * (var_r30->unk_00.unk_6C.z - var_r31->unk_00.z)); + var_r31->unk_44 *= 1.01f; + } + else { + if (240.0f < var_r31->unk_50) { + var_r31->unk_78 = 1; + } + var_r31->unk_00.x += (11.0 * sind(var_r31->unk_3C)); + var_r31->unk_00.z += (11.0 * cosd(var_r31->unk_3C)); + var_r31->unk_3C = fn_1_1E20( + var_r31->unk_3C, atan2d(var_r30->unk_00.unk_6C.x - var_r31->unk_00.x, var_r30->unk_00.unk_6C.z - var_r31->unk_00.z), 0.05f); + } + } + if ((var_r31->unk_78 == 0) && (1605.0f > var_r31->unk_00.y)) { + s32 var_r27; + for (var_r27 = 0; var_r27 < 1; var_r27++) { + if (NULL == lbl_1_bss_E4[var_r27]) { + lbl_1_bss_E4[var_r27] = var_r31; + break; + } + } + } + Hu3DModelTPLvlSet(object->model[0], var_r31->unk_40); + omSetTra(object, var_r31->unk_00.x, var_r31->unk_00.y, var_r31->unk_00.z); + omSetSca(object, var_r31->unk_44, var_r31->unk_44, var_r31->unk_44); +} + +void fn_1_171C4(omObjData *object) +{ + UnkM450Struct4 *var_r29; + s16 var_r26; + + var_r29 = object->data; + var_r29->unk_40 = 1.0f; + var_r29->unk_44 = 1.0f; + var_r29->unk_50 = 0.0f; + var_r26 = fn_1_AC(0x3000); + if (var_r26 < 0) { + object->model[0] = Hu3DModelLink(lbl_1_bss_2C[2]); + } + else { + object->model[0] = var_r26; + } + Hu3DModelAttrSet(object->model[0], 1); + Hu3DModelAttrSet(object->model[0], 0x40000001); + Hu3DModelAttrReset(object->model[0], 0x40000002); + Hu3DModelLayerSet(object->model[0], 4); + omSetTra(object, var_r29->unk_00.x, var_r29->unk_00.y, var_r29->unk_00.z); + omSetRot(object, 0.0f, 0.0f, 0.0f); + Hu3DModelAttrReset(object->model[0], 1); + object->func = fn_1_16CF4; +} + +void fn_1_17360(Vec *arg0, float arg8) +{ + omObjData *var_r29; + s32 var_r30; + UnkM450Struct4 *var_r31; + + for (var_r30 = 0; var_r30 < 2; var_r30++) { + if (lbl_1_data_1CC[var_r30 * 2] == 0x3E) { + HuAudFXPlay(lbl_1_data_1CC[var_r30 * 2]); + break; + } + } + var_r29 = omAddObjEx(lbl_1_bss_33C, 0x6B, 1, 0, -1, fn_1_171C4); + var_r29->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM450Struct4), MEMORY_DEFAULT_NUM); + var_r31 = var_r29->data; + var_r31->unk_78 = 0; + var_r31->unk_7C = 0; + var_r31->unk_00 = *arg0; + var_r31->unk_3C = arg8; + HuAudFXPlay(0x7AF); +} + +void fn_1_17474(omObjData *object) +{ + Mtx spB0; + Mtx sp80; + Mtx sp50; + Vec sp14; + Vec sp8; + float var_f31; + + UnkM450Struct4 *var_r31 = object->data; + if (var_r31->unk_74 != 0) { + fn_1_1D18(var_r31->unk_54, "g000m0-itemhook_R", &sp8); + if (Hu3DMotionShiftIDGet(var_r31->unk_54) < 0) { + Hu3DModelAttrReset(object->model[0], 1); + if (165.0f <= Hu3DMotionTimeGet(var_r31->unk_54)) { + HuAudFXPlay(0x7B0); + var_r31->unk_74 = 0; + var_r31->unk_3C = 0.0f; + var_r31->unk_4C = VECDistance(&sp8, &var_r31->unk_0C); + Hu3DModelObjMtxGet(var_r31->unk_58, "g000i00-itemhook_A", sp80); + Hu3DModelObjMtxGet(var_r31->unk_54, "g000m0-itemhook_R", sp50); + MTXConcat(sp80, sp50, sp80); + var_r31->unk_00.x = sp80[0][3]; + var_r31->unk_00.y = sp80[1][3]; + var_r31->unk_00.z = sp80[2][3]; + Hu3DModelHookObjReset(var_r31->unk_54, "g000m0-itemhook_R"); + MTXIdentity(Hu3DData[object->model[0]].unk_F0); + Hu3DModelAttrReset(object->model[0], 0x8000); + } + } + var_r31->unk_0C = sp8; + } + if (var_r31->unk_74 == 0) { + if (lbl_1_bss_1A4->work[0] > 0x40D) { + var_r31->unk_40 = var_r31->unk_40 - 0.05f; + } + var_f31 = var_r31->unk_4C; + sp14.x = 0.0f; + sp14.y = 0.0f; + sp14.z = var_f31; + MTXRotRad(spB0, 0x59, 0.017453292f * (var_r31->unk_5C + var_r31->unk_60)); + MTXMultVec(spB0, &sp14, &sp14); + VECAdd(&var_r31->unk_00, &sp14, &var_r31->unk_00); + var_r31->unk_00.y += 0.1f * (1575.0f - var_r31->unk_00.y); + var_r31->unk_4C += 0.05f * (30.0f - var_r31->unk_4C); + var_r31->unk_3C += var_r31->unk_4C; + var_r31->unk_60 += 0.08f * var_r31->unk_4C; + if (360.0f <= var_r31->unk_60) { + var_r31->unk_60 = 360.0f; + } + sp14.x = 0.0f; + sp14.y = 1575.0f; + sp14.z = 0.0f; + if ((360.0f <= var_r31->unk_60) && (1500.0f < VECDistance(&sp14, &var_r31->unk_00))) { + var_r31->unk_40 = var_r31->unk_40 - 0.05f; + if (0.0f > var_r31->unk_40) { + Hu3DModelShadowReset(object->model[0]); + Hu3DModelAttrSet(object->model[0], 1); + fn_1_24(0x4000, object->model[0]); + omDelObjEx(lbl_1_bss_33C, object); + return; + } + } + if (1.0f <= var_r31->unk_40) { + s32 var_r28; + for (var_r28 = 0; var_r28 < 2; var_r28++) { + if (NULL == lbl_1_bss_DC[var_r28]) { + lbl_1_bss_DC[var_r28] = var_r31; + break; + } + } + } + omSetTra(object, var_r31->unk_00.x, var_r31->unk_00.y, var_r31->unk_00.z); + omSetRot(object, 0.0f, var_r31->unk_3C, 0.0f); + } + Hu3DModelShadowDispOn(object->model[0]); + Hu3DModelTPLvlSet(object->model[0], var_r31->unk_40); +} + +void fn_1_17970(s32 arg0, s32 arg1, float arg8) +{ + omObjData *var_r31; + UnkM450Struct4 *var_r30; + s16 var_r26; + + HuAudFXPlay(0x3A); + var_r31 = omAddObjEx(lbl_1_bss_33C, 0x6C, 1, 0, -1, fn_1_17474); + var_r31->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM450Struct4), MEMORY_DEFAULT_NUM); + var_r30 = var_r31->data; + var_r30->unk_40 = 1.0f; + var_r30->unk_50 = 0.0f; + var_r30->unk_74 = 1; + var_r30->unk_78 = 0; + var_r30->unk_7C = 0; + var_r30->unk_54 = arg0; + var_r30->unk_58 = arg1; + var_r30->unk_5C = arg8; + var_r30->unk_60 = 0.0f; + + var_r26 = fn_1_AC(0x4000); + if (var_r26 < 0) { + var_r31->model[0] = Hu3DModelLink(lbl_1_bss_2C[3]); + } + else { + var_r31->model[0] = var_r26; + } + Hu3DModelAttrSet(var_r31->model[0], 1); + Hu3DModelAttrSet(var_r31->model[0], 0x40000001); + Hu3DModelAttrReset(var_r31->model[0], 0x40000002); + Hu3DModelLayerSet(var_r31->model[0], 4); + omSetTra(var_r31, 0.0f, 0.0f, 0.0f); + omSetRot(var_r31, 0.0f, 0.0f, 0.0f); + Hu3DModelHookSet(var_r30->unk_54, "g000m0-itemhook_R", var_r31->model[0]); + Hu3DModelShadowSet(var_r31->model[0]); + Hu3DModelShadowDispOff(var_r31->model[0]); +} + +void fn_1_17BBC(omObjData *object) +{ + Mtx sp84; + Vec sp18; + Vec spC; + float sp8; + float var_f31; + float var_f30; + float var_f28; + + UnkM450Struct4 *var_r31; + s32 var_r27; + UnkM450Struct3 *var_r22; + + var_r31 = object->data; + var_r22 = lbl_1_bss_134->data; + if (var_r31->unk_74 != 0) { + fn_1_1D18(var_r31->unk_54, "g000m0-itemhook_R", &spC); + if ((Hu3DMotionShiftIDGet(var_r31->unk_54) < 0) && (165.0f <= Hu3DMotionTimeGet(var_r31->unk_54))) { + HuAudFXPlay(0x7B0); + var_r31->unk_74 = 0; + var_r31->unk_3C = 0.0f; + var_r31->unk_4C = VECDistance(&spC, &var_r31->unk_0C); + fn_1_1D18(var_r31->unk_54, "g000m0-itemhook_R", &var_r31->unk_00); + Hu3DModelHookObjReset(var_r31->unk_54, "g000m0-itemhook_R"); + MTXIdentity(Hu3DData[*object->model].unk_F0); + Hu3DModelAttrReset(*object->model, 0x8000); + var_f31 = var_r31->unk_00.x - var_r31->unk_24.x; + var_f30 = var_r31->unk_00.z - var_r31->unk_24.z; + var_r31->unk_30.x = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)) / 2; + var_r31->unk_30.z = 150.0f + var_r31->unk_00.y; + VECAdd(&var_r31->unk_00, &var_r31->unk_24, &var_r31->unk_24); + VECScale(&var_r31->unk_24, &var_r31->unk_24, 0.5f); + var_r31->unk_24.y = var_r31->unk_00.y; + var_r31->unk_30.y = atan2d(var_r31->unk_00.x - var_r31->unk_24.x, var_r31->unk_00.z - var_r31->unk_24.z); + } + var_r31->unk_0C = spC; + if ((var_r31->unk_74 != 0) && (var_r22->unk_150 >= 0xBCE)) { + Hu3DModelShadowReset(object->model[0]); + Hu3DModelAttrSet(object->model[0], 1); + Hu3DModelHookObjReset(var_r31->unk_54, "g000m0-itemhook_R"); + fn_1_24(0x4000, object->model[0]); + omDelObjEx(lbl_1_bss_33C, object); + return; + } + } + if (var_r31->unk_74 == 0) { + if (lbl_1_bss_1A4->work[0] > 0x415) { + var_r31->unk_40 = var_r31->unk_40 - 0.05f; + } + var_f28 = 1575.0f; + if (180.0f < var_r31->unk_60) { + var_f28 = var_r31->unk_30.z; + } + var_r31->unk_00.y += (0.05f * (var_f28 - var_r31->unk_00.y)); + var_r31->unk_4C += 0.05f * (30.0f - var_r31->unk_4C); + var_r31->unk_3C += var_r31->unk_4C; + var_r31->unk_60 += 0.08f * var_r31->unk_4C; + if (360.0f <= var_r31->unk_60) { + var_r31->unk_60 = 360.0f; + VECAdd(&var_r31->unk_18, &var_r31->unk_00, &var_r31->unk_00); + } + else { + spC = var_r31->unk_00; + sp18.x = (0.6666667f * var_r31->unk_30.x) * sind(var_r31->unk_60); + sp18.z = var_r31->unk_30.x * cosd(var_r31->unk_60); + MTXRotRad(sp84, 0x59, 0.017453292f * var_r31->unk_30.y); + MTXMultVec(sp84, &sp18, &sp18); + var_r31->unk_00.x = var_r31->unk_24.x + sp18.x; + var_r31->unk_00.z = var_r31->unk_24.z + sp18.z; + VECSubtract(&var_r31->unk_00, &spC, &var_r31->unk_18); + } + sp18.x = 0.0f; + sp18.y = 1575.0f; + sp18.z = 0.0f; + if ((360.0f <= var_r31->unk_60) && (1500.0f < VECDistance(&sp18, &var_r31->unk_00))) { + var_r31->unk_40 = var_r31->unk_40 - 0.05f; + if (0.0f > var_r31->unk_40) { + Hu3DModelShadowReset(*object->model); + Hu3DModelAttrSet(*object->model, 1); + fn_1_24(0x4000, object->model[0]); + omDelObjEx(lbl_1_bss_33C, object); + return; + } + } + if (1.0f <= var_r31->unk_40) { + for (var_r27 = 0; var_r27 < 2; var_r27++) { + if (NULL == lbl_1_bss_DC[var_r27]) { + lbl_1_bss_DC[var_r27] = var_r31; + break; + } + } + } + omSetTra(object, var_r31->unk_00.x, var_r31->unk_00.y, var_r31->unk_00.z); + omSetRot(object, 0.0f, var_r31->unk_3C, 0.0f); + omSetSca(object, 1.0f, 1.0f, 1.0f); + } + Hu3DModelShadowDispOn(object->model[0]); + Hu3DModelTPLvlSet(object->model[0], var_r31->unk_40); +} + +void fn_1_18424(s32 arg0, Vec *arg1) +{ + UnkBss358Struct *var_r27; + UnkBss358Struct *var_r28; + UnkBss358Struct *var_r29; + omObjData *var_r31; + s16 var_r24; + s16 var_r25; + s16 var_r26; + UnkM450Struct4 *var_r30; + + var_r31 = omAddObjEx(lbl_1_bss_33C, 0x6C, 1, 0, -1, fn_1_17BBC); + var_r31->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM450Struct4), MEMORY_DEFAULT_NUM); + var_r30 = var_r31->data; + var_r30->unk_54 = arg0; + var_r30->unk_40 = 1.0f; + var_r30->unk_50 = 0.0f; + var_r30->unk_74 = 1; + var_r30->unk_78 = 0; + var_r30->unk_7C = 0; + var_r30->unk_60 = 0.0f; + var_r30->unk_24 = *arg1; + + var_r26 = fn_1_AC(0x4000); + if (var_r26 < 0) { + var_r31->model[0] = Hu3DModelLink(lbl_1_bss_2C[3]); + } + else { + var_r31->model[0] = var_r26; + } + Hu3DModelAttrSet(var_r31->model[0], 1); + Hu3DModelAttrSet(var_r31->model[0], 0x40000001); + Hu3DModelAttrReset(var_r31->model[0], 0x40000002); + Hu3DModelLayerSet(var_r31->model[0], 4); + omSetTra(var_r31, 0.0f, 0.0f, 0.0f); + omSetRot(var_r31, 0.0f, 0.0f, 0.0f); + omSetSca(var_r31, 1.0f, 1.0f, 1.0f); + Hu3DModelHookSet(var_r30->unk_54, "g000m0-itemhook_R", var_r31->model[0]); + Hu3DModelAttrReset(var_r31->model[0], 1); + Hu3DModelShadowSet(var_r31->model[0]); + Hu3DModelShadowDispOff(var_r31->model[0]); +} + +void fn_1_186A8(void) +{ + Vec sp14[3]; + Vec sp8; + float var_f31; + + s32 var_r31; + UnkM450Struct5 *var_r30; + UnkM450Struct3 *var_r29; + HsfBuffer *var_r28; + s32 var_r27; + ModelData *var_r26; + HsfObject *var_r25; + + if (lbl_1_bss_C4 >= 0) { + var_r30 = lbl_1_bss_138->data; + var_r29 = lbl_1_bss_134->data; + switch (lbl_1_bss_C4) { + case 0x1388: + for (var_r31 = 0x19; var_r31 <= 0x1B; var_r31++) { + if (Hu3DMotionEndCheck(lbl_1_bss_1A0->model[var_r31]) == 0) { + return; + } + } + lbl_1_bss_C4++; + lbl_1_bss_C8 = 0.0f; + Hu3DModelPosSet(lbl_1_bss_1A0->model[28], 0.0f, 1501.0f, 0.0f); + Hu3DModelAttrReset(lbl_1_bss_1A0->model[28], 1); + Hu3DModelTPLvlSet(lbl_1_bss_1A0->model[28], 0.0f); + var_r26 = &Hu3DData[lbl_1_bss_1A0->model[28]]; + var_r25 = var_r26->hsfData->object; + var_r28 = var_r25->data.vertex; + for (var_r31 = 0; var_r31 < 3; var_r31++) { + ((Vec *)var_r28->data)[var_r31].x = lbl_1_data_1450[lbl_1_bss_B8[var_r31]].unk_04.x; + ((Vec *)var_r28->data)[var_r31].z = lbl_1_data_1450[lbl_1_bss_B8[var_r31]].unk_04.z; + DCFlushRange(&((Vec *)var_r28->data)[var_r31], sizeof(Vec)); + } + + break; + case 0x1389: + var_f31 = lbl_1_bss_C8 / 30.0f; + if (1.0f < var_f31) { + var_f31 = 1.0f; + } + Hu3DModelTPLvlSet(lbl_1_bss_1A0->model[28], var_f31); + lbl_1_bss_C8 += 1.0f; + if ((120.0f < lbl_1_bss_C8) && (var_r30->unk_00.unk_38 == 0)) { + lbl_1_bss_C4++; + lbl_1_bss_C8 = 0.0f; + var_r27 = 0; + for (var_r31 = 0; var_r31 < 3; var_r31++) { + sp14[var_r31] = lbl_1_data_1450[lbl_1_bss_B8[var_r31]].unk_04; + } + if ((fn_1_1C39C(var_r30) != 0) && (fn_1_1964C(&var_r30->unk_00.unk_6C, sp14) != 0)) { + var_r27++; + var_r30->unk_110 = 0x1D; + var_r30->unk_FC |= 0x20000; + fn_1_130A4(&var_r30->unk_00.unk_6C, 29); + } + if (fn_1_1964C(&var_r29->unk_00.unk_6C, sp14) != 0) { + var_r27++; + var_r29->unk_10C = 0x1E; + var_r29->unk_154 |= 0x8000; + fn_1_130A4(&var_r29->unk_00.unk_6C, 30); + } + if (var_r27 == 0) { + sp8.x = 0.0f; + sp8.y = 0.0f; + sp8.z = 0.0f; + for (var_r31 = 0; var_r31 < 3; var_r31++) { + VECAdd(&sp14[var_r31], &sp8, &sp8); + } + VECScale(&sp8, &sp8, 0.33333334f); + fn_1_130A4(&sp8, 29); + return; + } + } + break; + case 0x138A: + if (45.0f < lbl_1_bss_C8) { + var_f31 = (lbl_1_bss_C8 - 45.0f) / 15.0f; + if (1.0f < var_f31) { + var_f31 = 1.0f; + } + Hu3DModelTPLvlSet(lbl_1_bss_1A0->model[28], 1.0f - var_f31); + for (var_r31 = 0; var_r31 < 3; var_r31++) { + Hu3DModelTPLvlSet(lbl_1_bss_1A0->model[var_r31 + 0x19], 1.0f - var_f31); + } + } + lbl_1_bss_C8 += 1.0f; + if (60.0f <= lbl_1_bss_C8) { + lbl_1_bss_C4 = -1; + Hu3DModelAttrSet(lbl_1_bss_1A0->model[28], 1); + Hu3DModelTPLvlSet(lbl_1_bss_1A0->model[28], 1.0f); + Hu3DModelAttrSet(lbl_1_bss_1A0->model[29], 1); + Hu3DModelAttrSet(lbl_1_bss_1A0->model[30], 1); + for (var_r31 = 0; var_r31 < 3; var_r31++) { + lbl_1_data_1450[lbl_1_bss_B8[0]].unk_1C = 0; + fn_1_1B510(lbl_1_bss_B8[0]); + Hu3DModelAttrSet(lbl_1_bss_1A0->model[var_r31 + 0x19], 1); + Hu3DModelTPLvlSet(lbl_1_bss_1A0->model[var_r31 + 0x19], 1.0f); + } + fn_1_1B4C8(var_r30); + return; + } + break; + default: + OSReport("*** thunder attack mode error(%d)!!\n", lbl_1_bss_C4); + break; + } + } +} + +void fn_1_18F30(UnkM450Struct5 *arg0, Vec *arg1) +{ + Vec sp18; + Vec spC; + float var_f31; + float var_f30; + float var_f28; + float var_f27; + + if (NULL != arg1) { + sp18 = *arg1; + var_f27 = arg0->unk_00.unk_C0; + if ((arg0->unk_00.unk_38 == 3) || (arg0->unk_00.unk_38 == 4)) { + var_f27 *= 0.5f; + } + var_f31 = arg0->unk_00.unk_6C.x - sp18.x; + var_f30 = arg0->unk_00.unk_6C.z - sp18.z; + var_f28 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (((sp18.y - 50.0f) < (arg0->unk_00.unk_6C.y + var_f27)) && (arg0->unk_00.unk_BC > var_f28)) { + if (var_f28 == 0.0f) { + var_f31 = 0.0f; + var_f30 = -1.0f; + } + else { + var_f31 /= var_f28; + var_f30 /= var_f28; + } + arg0->unk_00.unk_6C.x = sp18.x + (var_f31 * arg0->unk_00.unk_BC); + arg0->unk_00.unk_6C.z = sp18.z + (var_f30 * arg0->unk_00.unk_BC); + } + if ((arg0->unk_FC & 0x220) == 0) { + spC = arg0->unk_00.unk_6C; + spC.y += var_f27 - arg0->unk_00.unk_BC; + var_f28 = VECDistance(&spC, &sp18); + if ((spC.y < sp18.y) && ((50.0f + arg0->unk_00.unk_BC) > var_f28)) { + arg0->unk_FC |= 0x200; + return; + } + spC = arg0->unk_00.unk_6C; + spC.y += arg0->unk_00.unk_BC; + var_f28 = VECDistance(&spC, &sp18); + if ((50.0f + arg0->unk_00.unk_BC) > var_f28) { + arg0->unk_FC |= 0x20; + } + } + } +} + +void fn_1_192AC(UnkM450Struct5 *arg0, UnkM450Struct4 *arg1) +{ + Vec sp8; + float var_f31; + + if ((NULL != arg1) && (arg0->unk_00.unk_38 == 0) && ((arg0->unk_FC & 0x2000) == 0)) { + sp8 = arg0->unk_00.unk_6C; + sp8.y += arg0->unk_00.unk_BC; + var_f31 = VECDistance(&sp8, &arg1->unk_00); + if ((50.0f + arg0->unk_00.unk_BC) > var_f31) { + arg0->unk_FC |= 0x2000; + arg1->unk_7C = 1; + arg1->unk_50 = 0.0f; + } + } +} + +void fn_1_19390(UnkM450Struct5 *var_r31, UnkM450Struct4 *var_r30) +{ + Vec sp8; + float var_f31; + + if ((NULL != var_r30) && ((var_r31->unk_FC & 0x20) == 0)) { + sp8 = var_r31->unk_00.unk_6C; + sp8.y += var_r31->unk_00.unk_BC; + var_f31 = VECDistance(&sp8, &var_r30->unk_00); + if ((70.0f + var_r31->unk_00.unk_BC) > var_f31) { + var_r31->unk_FC |= 0x20; + } + } +} + +void fn_1_19450(UnkM450Struct5 *var_r31) +{ + s32 var_r30; + + for (var_r30 = 0; var_r30 < 1; var_r30++) { + fn_1_18F30(var_r31, lbl_1_bss_E8[var_r30]); + } + for (var_r30 = 0; var_r30 < 1; var_r30++) { + fn_1_192AC(var_r31, lbl_1_bss_E4[var_r30]); + } + for (var_r30 = 0; var_r30 < 2; var_r30++) { + fn_1_19390(var_r31, lbl_1_bss_DC[var_r30]); + } +} + +s32 fn_1_1964C(Vec *arg0, Vec *arg1) +{ + Vec sp74; + Vec sp68; + Vec sp5C; + Vec sp50; + Vec sp44; + Vec sp38; + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + + VECSubtract(&arg1[1], &arg1[0], &sp74); + VECSubtract(&arg1[2], &arg1[1], &sp68); + VECSubtract(&arg1[0], &arg1[2], &sp5C); + VECCrossProduct(&sp74, &sp68, &sp50); + VECSubtract(arg0, &arg1[0], &sp44); + VECSubtract(arg0, &arg1[1], &sp38); + VECSubtract(arg0, &arg1[2], &sp2C); + VECCrossProduct(&sp74, &sp50, &sp20); + VECCrossProduct(&sp68, &sp50, &sp14); + VECCrossProduct(&sp5C, &sp50, &sp8); + if ((0.0f >= VECDotProduct(&sp20, &sp44)) && (0.0f >= VECDotProduct(&sp14, &sp38)) && (0.0f >= VECDotProduct(&sp8, &sp2C))) { + return 1; + } + return 0; +} + +s32 fn_1_19798(void) +{ + float sp8; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + + UnkM450Struct5 *var_r31 = lbl_1_bss_138->data; + UnkM450Struct3 *var_r30 = lbl_1_bss_134->data; + + var_f31 = var_r31->unk_00.unk_6C.x - var_r30->unk_00.unk_6C.x; + var_f30 = var_r31->unk_00.unk_6C.z - var_r30->unk_00.unk_6C.z; + var_f28 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if ((150.0f + var_r31->unk_00.unk_BC) > var_f28) { + if (var_f28 == 0.0f) { + var_f31 = 0.0f; + var_f30 = -1.0f; + } + else { + var_f31 /= var_f28; + var_f30 /= var_f28; + } + var_r31->unk_FC |= 0x200000; + if (var_r30->unk_150 != 0xBC9) { + var_r31->unk_FC |= 4; + } + var_r31->unk_00.unk_6C.x = var_r30->unk_00.unk_6C.x + (var_f31 * (150.0f + var_r31->unk_00.unk_BC)); + var_r31->unk_00.unk_6C.z = var_r30->unk_00.unk_6C.z + (var_f30 * (150.0f + var_r31->unk_00.unk_BC)); + return 1; + } + return 0; +} + +s32 fn_1_19A10(WorkPlayerOld *arg0, Vec *arg1) +{ + float var_f31; + float var_f30; + float var_f28; + + var_f31 = arg1->x - arg0->unk_6C.x; + var_f30 = arg1->z - arg0->unk_6C.z; + var_f28 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (10.0f <= var_f28) { + var_f31 /= var_f28; + var_f30 /= var_f28; + } + else { + var_f31 = 0.0f; + var_f30 = 0.0f; + return 1; + } + arg0->unk_20 = 72.0f * var_f31; + arg0->unk_24 = 72.0f * -var_f30; + return 0; +} + +void fn_1_19C18(omObjData *object) +{ + UnkM450Struct5 *var_r31 = object->data; + + if ((var_r31->unk_FC & 1) != 0) { + if (1250.0f < var_r31->unk_00.unk_6C.x) { + var_r31->unk_00.unk_6C.x = 1250.0f; + } + if (-1250.0f > var_r31->unk_00.unk_6C.x) { + var_r31->unk_00.unk_6C.x = -1250.0f; + } + if (1250.0f < var_r31->unk_00.unk_6C.z) { + var_r31->unk_00.unk_6C.z = 1250.0f; + } + if (-1250.0f > var_r31->unk_00.unk_6C.z) { + var_r31->unk_00.unk_6C.z = -1250.0f; + } + } +} + +void fn_1_19CE0(omObjData *object) +{ + UnkM450Struct5 *var_r31 = object->data; + + if (var_r31->unk_FC & 0x10) { + var_r31->unk_FC |= 0x42; + Hu3DMotionShiftSet(object->model[0], object->motion[10], 0.0f, 8.0f, 0x40000002); + } + if (var_r31->unk_FC & 0x100) { + var_r31->unk_FC |= 0x402; + Hu3DModelAttrReset(object->model[0], 0x40000001); + Hu3DModelAttrSet(object->model[0], 0x40000002); + Hu3DMotionSet(object->model[0], object->motion[14]); + Hu3DMotionTimeSet(object->model[0], 48.0f); + } + if (var_r31->unk_FC & 0x1000) { + var_r31->unk_FC |= 0x4002; + Hu3DMotionShiftSet(object->model[0], object->motion[9], 0.0f, 8.0f, 0); + } + if (var_r31->unk_FC & 0x10000) { + var_r31->unk_FC |= 0x40002; + Hu3DMotionShiftSet(object->model[0], object->motion[16], 0.0f, 8.0f, 0); + Hu3DModelPosSet( + lbl_1_bss_1A0->model[var_r31->unk_110 + 2], var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, 50.0f + var_r31->unk_00.unk_6C.z); + Hu3DMotionTimeSet(lbl_1_bss_1A0->model[var_r31->unk_110 + 2], 0.0f); + Hu3DModelAttrSet(lbl_1_bss_1A0->model[var_r31->unk_110 + 2], 0x40000001); + Hu3DModelAttrReset(lbl_1_bss_1A0->model[var_r31->unk_110 + 2], 0x40000002); + Hu3DModelAttrReset(lbl_1_bss_1A0->model[var_r31->unk_110 + 2], 1); + } + if (var_r31->unk_FC & 0x100000) { + var_r31->unk_FC |= 0x400002; + Hu3DMotionShiftSet(object->model[0], object->motion[9], 0.0f, 8.0f, 0); + } + var_r31->unk_FC &= ~0x30; + var_r31->unk_FC &= ~0x300; + var_r31->unk_FC &= ~0x3000; + var_r31->unk_FC &= ~0x30000; + var_r31->unk_FC &= ~0x300000; + var_r31->unk_100 = 0x78; + var_r31->unk_F8 = 0.0f; + var_r31->unk_00.unk_3C &= ~0x210; +} + +void fn_1_1A014(omObjData *arg0) +{ + UnkM450Struct5 *var_r31 = arg0->data; + + if (var_r31->unk_FC & 0x555550) { + var_r31->unk_FC &= ~0x800; + return; + } + var_r31->unk_FC |= 0x800; +} + +void fn_1_1A060(void) +{ + Vec sp8; + + Vec *var_r31; + UnkM450Struct5 *var_r30 = lbl_1_bss_138->data; + + sp8 = var_r30->unk_00.unk_6C; + if (lbl_1_bss_10C == 0) { + sp8.y = 1500.0f; + } + lbl_1_bss_324 = sp8; + lbl_1_bss_30C = sp8; + var_r31 = &lbl_1_data_51C[lbl_1_bss_110]; + lbl_1_bss_324.x += (var_r31->x * sind((180.0f + var_r30->unk_00.unk_9C))); + lbl_1_bss_324.z += (var_r31->x * cosd((180.0f + var_r30->unk_00.unk_9C))); + lbl_1_bss_324.y += var_r31->y; + lbl_1_bss_30C.y += var_r31->z; +} + +void fn_1_1A21C(float var_f30, float var_f31) +{ + Vec sp8; + Vec *var_r31; + UnkM450Struct5 *var_r30 = lbl_1_bss_138->data; + + sp8 = var_r30->unk_00.unk_6C; + if (lbl_1_bss_10C == 0) { + sp8.y = 1500.0f; + } + if (var_f31 != 0.0f) { + sp8.y = var_f31; + } + lbl_1_bss_324 = sp8; + lbl_1_bss_30C = sp8; + var_r31 = &lbl_1_data_51C[lbl_1_bss_110]; + lbl_1_bss_324.x += var_r31->x * sind(var_f30); + lbl_1_bss_324.z += var_r31->x * cosd(var_f30); + lbl_1_bss_324.y += var_r31->y; + lbl_1_bss_30C.y += var_r31->z; +} + +void fn_1_1A3F0(void) +{ + float var_f31; + float var_f30; + float var_f28; + UnkM450Struct5 *var_r31 = lbl_1_bss_138->data; + UnkM450Struct3 *var_r30 = lbl_1_bss_134->data; + + var_f31 = var_r31->unk_00.unk_6C.x - var_r30->unk_00.unk_6C.x; + var_f30 = var_r31->unk_00.unk_6C.z - var_r30->unk_00.unk_6C.z; + var_f28 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + var_f31 = 800.0f * (var_f31 / var_f28); + var_f30 = 800.0f * (var_f30 / var_f28); + lbl_1_bss_324 = var_r31->unk_00.unk_6C; + lbl_1_bss_30C = var_r31->unk_00.unk_6C; + lbl_1_bss_324.x += var_f31; + lbl_1_bss_324.y += 350.0f; + lbl_1_bss_324.z += var_f30; + lbl_1_bss_30C.y += 150.0f; +} + +#include "src/REL/executor.c" + +void fn_1_1A714(void) +{ + UnkM450Struct5 *var_r31; + + HuSysVWaitSet(1); + if (HuPadBtn[0] & PAD_BUTTON_X) { + lbl_1_bss_304 = -1; + } + print8(0x18, 0x20, 1.5f, "%d COUNT:%d MODE:%d MES:%d CAM:%d", GWMGTypeGet(), lbl_1_bss_308, lbl_1_bss_1A4->work[0], lbl_1_bss_2FE, lbl_1_bss_110); + print8(0x18, 0x30, 1.5f, "%f %f %f", lbl_1_bss_330.x, lbl_1_bss_330.y, lbl_1_bss_330.z); + print8(0x18, 0x40, 1.5f, "%f %f %f", lbl_1_bss_318.x, lbl_1_bss_318.y, lbl_1_bss_318.z); + print8(0x18, 0x50, 1.5f, "H:%x M:%x", HuMemHeapSizeGet(HEAP_SYSTEM) - HuMemUsedMallocSizeGet(HEAP_SYSTEM), + HuMemHeapSizeGet(HEAP_DATA) - HuMemUsedMallocSizeGet(HEAP_DATA)); + var_r31 = lbl_1_bss_138->data; + print8(0x18, 0x60, 1.5f, "%f (%f %f %f)", 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); + print8(0x18, 0x70, 1.5f, "%d %d", var_r31->unk_104, var_r31->unk_108); +} + +void fn_1_1A940(UnkM450Struct5 *var_r30, Vec *var_r31, s8 var_r27) +{ + Mtx spD0; + float var_f31; + + s32 var_r23; + + nMap = 0; + var_r23 = 1; + lbl_1_bss_10C = 1; + if (var_r30->unk_E8 == 0.0f) { + lbl_1_bss_114 = 0; + if (var_r27 == 0x78) { + if (var_r31->x > var_r30->unk_00.unk_6C.x) { + var_r23 = 0; + } + } + else if (var_r31->z < var_r30->unk_00.unk_6C.z) { + var_r23 = 0; + } + } + if (var_r23 != 0) { + CharModelEffectEnableSet(var_r30->unk_11C, 0); + var_r30->unk_E8 += 1.0f; + var_f31 = 0.0f > var_r31->x ? -var_r31->x : var_r31->x; + if (var_f31 < (0.0f > var_r31->y ? -var_r31->y : var_r31->y)) { + var_f31 = 0.0f > var_r31->y ? -var_r31->y : var_r31->y; + } + if (var_f31 < (0.0f > var_r31->z ? -var_r31->z : var_r31->z)) { + var_f31 = 0.0f > var_r31->z ? -var_r31->z : var_r31->z; + } + var_f31 = 1505.0f - var_f31; + if (var_r27 == 0x78) { + fn_1_148B0(var_r30->unk_E8, var_r27); + MTXRotRad(spD0, 0x5A, 0.017453292f * var_r30->unk_E8); + var_r30->unk_00.unk_6C.x = var_r31->x + ((var_f31 * (0.0f > var_r31->x ? -1 : 1)) * sind(var_r30->unk_E8)); + } + else { + fn_1_148B0(var_r30->unk_E8, var_r27); + MTXRotRad(spD0, 0x58, 0.017453292f * var_r30->unk_E8); + var_r30->unk_00.unk_6C.z = var_r31->z + ((var_f31 * (0.0f > var_r31->z ? -1 : 1)) * sind(var_r30->unk_E8)); + } + var_r30->unk_00.unk_6C.y = var_r31->y + (var_f31 * cosd(var_r30->unk_E8)); + MTXMultVec(&spD0[0], &var_r30->unk_00.unk_6C, &var_r30->unk_00.unk_6C); + } + else { + if (var_r27 == 0x78) { + var_r30->unk_00.unk_20 = 0x48; + } + else { + var_r30->unk_00.unk_24 = 0x48; + } + fn_1_40C0(&var_r30->unk_00); + } + if (90.0f <= var_r30->unk_E8) { + if (lbl_1_bss_114 == 0) { + fn_1_149C0(var_r27); + } + fn_1_14AB8(); + } +} + +s32 fn_1_1B0C4(float *arg0, UnkM450Struct5 *arg1) +{ + if (arg1->unk_00.unk_38 != 0) { + return 0; + } + if (((arg0[0] - arg0[3]) <= arg1->unk_00.unk_6C.x) && ((arg0[0] + arg0[3]) >= arg1->unk_00.unk_6C.x) + && ((arg0[2] - arg0[4]) <= arg1->unk_00.unk_6C.z) && ((arg0[2] + arg0[4]) >= arg1->unk_00.unk_6C.z)) { + return 1; + } + return 0; +} + +void fn_1_1B158(UnkM450Struct5 *arg0, UnkData1380Struct *arg1) +{ + s32 var_r31; + + arg0->unk_104 = -1; + if (NULL != arg1) { + if ((arg0->unk_00.unk_38 == 1) || (arg0->unk_00.unk_38 == 3)) { + return; + } + if ((!(1505.0f < arg0->unk_00.unk_6C.y) && !(1495.0f > arg0->unk_00.unk_6C.y)) || (arg0->unk_00.unk_38 == 1) || (arg0->unk_00.unk_38 == 3)) { + for (var_r31 = 0; var_r31 < arg1->unk_08; var_r31++) { + if ((0 <= arg1->unk_24[var_r31]) && ((arg1->unk_30[var_r31].x - arg1->unk_04) <= arg0->unk_00.unk_6C.x) + && ((arg1->unk_04 + arg1->unk_30[var_r31].x) >= arg0->unk_00.unk_6C.x) + && ((arg1->unk_30[var_r31].z - arg1->unk_04) <= arg0->unk_00.unk_6C.z) + && ((arg1->unk_04 + arg1->unk_30[var_r31].z) >= arg0->unk_00.unk_6C.z)) { + arg0->unk_104 = var_r31; + } + } + } + } +} + +void fn_1_1B2AC(UnkM450Struct5 *var_r30, UnkData1380Struct *var_r31) +{ + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + + if ((var_r30->unk_FC & 0x800) != 0) { + if ((NULL == var_r31) || (var_r30->unk_104 < 0) || (lbl_1_bss_F8 >= 0) || (var_r31->unk_1C != 0)) { + return; + } + var_r25 = var_r30->unk_104 % var_r31->unk_0C; + var_r24 = var_r30->unk_104 / var_r31->unk_0C; + for (var_r28 = 0; var_r28 < 4; var_r28++) { + var_r27 = var_r25 + lbl_1_data_1234[var_r28 * 2]; + var_r26 = var_r24 + lbl_1_data_1234[(var_r28 * 2) + 1]; + if ((var_r27 >= 0) && (var_r31->unk_0C > var_r27) && (var_r26 >= 0) && (var_r31->unk_0C > var_r26)) { + var_r29 = var_r27 + (var_r26 * var_r31->unk_0C); + if (var_r31->unk_24[var_r29] < 0) { + lbl_1_bss_FC = var_r31; + lbl_1_bss_F8 = var_r29; + var_r31->unk_24[var_r29] = var_r31->unk_24[var_r30->unk_104]; + var_r31->unk_24[var_r30->unk_104] = -1; + var_r31->unk_28[var_r29] = var_r31->unk_28[var_r30->unk_104]; + var_r31->unk_28[var_r30->unk_104] = -1; + lbl_1_bss_EC = var_r31->unk_30[var_r29]; + var_r31->unk_30[var_r29] = var_r31->unk_30[var_r30->unk_104]; + HuAudFXPlay(0x7B8); + return; + } + } + } + } +} + +s32 fn_1_1B4C8(UnkM450Struct5 *arg0) +{ + s32 var_r31; + + arg0->unk_10C = 0; + for (var_r31 = 0; var_r31 < 3; var_r31++) { + lbl_1_bss_B8[var_r31] = -1; + } +} + +void fn_1_1B510(s32 sp8) +{ + s32 var_r31; + s32 var_r30; + UnkM450Struct5 *var_r29 = lbl_1_bss_138->data; + + for (var_r30 = 0; var_r30 < 3; var_r30++) { + if (sp8 == lbl_1_bss_B8[var_r30]) { + var_r29->unk_10C--; + lbl_1_bss_B8[var_r30] = -1; + for (var_r31 = 0; var_r31 < 3; var_r31++) { + Hu3DModelAttrSet(lbl_1_bss_1A0->model[var_r31 + 0x19], 1); + } + for (var_r31 = var_r30; var_r31 < 2; var_r31++) { + lbl_1_bss_B8[var_r31] = lbl_1_bss_B8[var_r31 + 1]; + lbl_1_bss_B8[var_r31 + 1] = -1; + } + } + } +} + +void fn_1_1B644(UnkM450Struct5 *arg0) +{ + s32 var_r31; + + arg0->unk_108 = -1; + if (lbl_1_bss_118 == 5) { + if ((arg0->unk_00.unk_38 == 1) || (arg0->unk_00.unk_38 == 3)) { + return; + } + for (var_r31 = 0; var_r31 < 5; var_r31++) { + float var_f31; + float var_f30; + UnkData1450Struct *var_r30 = &lbl_1_data_1450[var_r31]; + var_f31 = arg0->unk_00.unk_6C.x - var_r30->unk_04.x; + var_f30 = arg0->unk_00.unk_6C.z - var_r30->unk_04.z; + if (100.0f > sqrtf((var_f31 * var_f31) + (var_f30 * var_f30))) { + arg0->unk_108 = var_r31; + } + } + } +} + +void fn_1_1B830(UnkM450Struct5 *arg0) +{ + s32 var_r30; + + if (arg0->unk_FC & 0x800) { + if ((lbl_1_bss_118 != 5) || (arg0->unk_108 < 0)) { + return; + } + if ((arg0->unk_10C < 3) && (lbl_1_data_1450[arg0->unk_108].unk_18 == 0)) { + for (var_r30 = 0; var_r30 < arg0->unk_10C; var_r30++) { + if (arg0->unk_108 == lbl_1_bss_B8[var_r30]) { + return; + } + } + lbl_1_data_1450[arg0->unk_108].unk_14 = 0.0f; + lbl_1_data_1450[arg0->unk_108].unk_18 = 1; + lbl_1_data_1450[arg0->unk_108].unk_1C = 1; + lbl_1_data_1450[arg0->unk_108].unk_20 = 1; + lbl_1_bss_B8[arg0->unk_10C++] = arg0->unk_108; + Hu3DMotionTimeSet(lbl_1_bss_1A0->model[arg0->unk_108 + 0x14], 0.0f); + Hu3DModelAttrReset(lbl_1_bss_1A0->model[arg0->unk_108 + 0x14], 0x40000003); + if (arg0->unk_10C == 2) { + fn_1_12E5C(lbl_1_bss_B8[0], lbl_1_bss_B8[1], 25); + HuAudFXPlay(0x7B4); + } + if (arg0->unk_10C == 3) { + lbl_1_bss_C8 = 0.0f; + lbl_1_bss_C4 = 0x1388; + fn_1_12E5C(lbl_1_bss_B8[0], lbl_1_bss_B8[2], 26); + fn_1_12E5C(lbl_1_bss_B8[1], lbl_1_bss_B8[2], 27); + HuAudFXPlay(0x7B5); + HuAudFXPlay(0x7B6); + } + } + } +} + +void fn_1_1C060(UnkM450Struct5 *arg0) +{ + UnkData1450Struct *var_r31; + + fn_1_1B644(arg0); + if (arg0->unk_108 >= 0) { + var_r31 = &lbl_1_data_1450[arg0->unk_108]; + if ((arg0->unk_00.unk_38 != 1) && (arg0->unk_00.unk_38 != 3) && (1560.0f > arg0->unk_00.unk_6C.y)) { + arg0->unk_00.unk_6C.y = 1565.0f; + arg0->unk_00.unk_78.y = 1565.0f; + } + if (0.0f != var_r31->unk_10) { + arg0->unk_00.unk_6C.y = 5.0f + var_r31->unk_04.y; + arg0->unk_00.unk_78.y = 5.0f + var_r31->unk_04.y; + } + } +} + +s32 fn_1_1C2D4(UnkM450Struct5 *arg0) +{ + if ((arg0->unk_FC & 0x50) != 0) { + return 0; + } + if ((arg0->unk_FC & 0x500) != 0) { + return 0; + } + if ((arg0->unk_FC & 0x5000) != 0) { + return 0; + } + if ((arg0->unk_FC & 0x50000) != 0) { + return 0; + } + if ((arg0->unk_FC & 0x500000) != 0) { + return 0; + } + if (lbl_1_data_A0C[0].unk_14 <= 0) { + return 0; + } + if ((arg0->unk_FC & 0x80000) != 0) { + return 0; + } + if (arg0->unk_00.unk_38 != 0) { + return 0; + } + return 1; +} + +s32 fn_1_1C39C(UnkM450Struct5 *arg0) +{ + if ((arg0->unk_FC & 0x50) != 0) { + return 0; + } + if ((arg0->unk_FC & 0x500) != 0) { + return 0; + } + if ((arg0->unk_FC & 0x5000) != 0) { + return 0; + } + if ((arg0->unk_FC & 0x50000) != 0) { + return 0; + } + if ((arg0->unk_FC & 0x500000) != 0) { + return 0; + } + if ((arg0->unk_FC & 2) != 0) { + return 0; + } + return 1; +} + +void fn_1_1C434(UnkM450Struct5 *arg0, omObjData *arg1) +{ + s32 var_r30; + + arg0->unk_118++; + lbl_1_bss_1A4->work[0] += 1; + lbl_1_bss_128 = 0.0f; + fn_1_4ED8(&arg0->unk_00, 0); + Hu3DModelAttrReset(arg1->model[0], 1); + arg1->func = fn_1_20170; +} + +void fn_1_1C6E4(void) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < 1; var_r31++) { + lbl_1_bss_E8[var_r31] = NULL; + } + for (var_r31 = 0; var_r31 < 1; var_r31++) { + lbl_1_bss_E4[var_r31] = NULL; + } + for (var_r31 = 0; var_r31 < 2; var_r31++) { + lbl_1_bss_DC[var_r31] = NULL; + } +} + +void fn_1_1C77C(UnkM450Struct5 *arg0) +{ + Mtx sp20; + Vec sp14; + Vec sp8; + UnkM450Struct3 *var_r30 = lbl_1_bss_134->data; + + sp14.x = 0.0f; + sp14.y = 0.0f; + sp14.z = 1.0f; + MTXRotRad(sp20, 0x59, 0.017453292f * arg0->unk_00.unk_9C); + MTXMultVec(sp20, &sp14, &sp14); + VECNormalize(&sp14, &sp14); + VECSubtract(&arg0->unk_00.unk_6C, &var_r30->unk_00.unk_6C, &arg0->unk_DC); + VECNormalize(&arg0->unk_DC, &arg0->unk_DC); + VECSubtract(&var_r30->unk_00.unk_6C, &arg0->unk_00.unk_6C, &sp8); + VECNormalize(&sp8, &sp8); + if (0.0f <= VECDotProduct(&sp14, &sp8)) { + arg0->unk_114 = 0x11; + return; + } + arg0->unk_114 = 0x13; +} + +s32 fn_1_1C898(UnkM450Struct5 *var_r31, omObjData *var_r30) +{ + s32 sp3C; + float var_f31; + + if (var_r31->unk_FC & 2) { + if (var_r31->unk_FC & 0x40) { + var_r31->unk_F8 += 1.0f; + if (var_r31->unk_F8 == 15.0f) { + Hu3DModelAttrReset(var_r30->model[0], 0x40000002); + } + if ((15.0f < var_r31->unk_F8) && (Hu3DMotionEndCheck(var_r30->model[0]) != 0)) { + var_r31->unk_FC &= ~0x40; + fn_1_4ED8(&var_r31->unk_00, 0); + } + return 0; + } + if (var_r31->unk_FC & 0x400) { + var_r31->unk_F8 += 1.0f; + if (var_r31->unk_F8 == 15.0f) { + Hu3DModelAttrReset(var_r30->model[0], 0x40000003); + } + if ((15.0f < var_r31->unk_F8) && (Hu3DMotionEndCheck(var_r30->model[0]) != 0)) { + var_r31->unk_FC &= ~0x400; + fn_1_4ED8(&var_r31->unk_00, 0); + } + return 0; + } + if (var_r31->unk_FC & 0x4000) { + var_r31->unk_F8 += 1.0f; + if (120.0f < var_r31->unk_F8) { + var_r31->unk_FC &= ~0x4000; + fn_1_4ED8(&var_r31->unk_00, 0); + } + return 0; + } + if (var_r31->unk_FC & 0x40000) { + var_r31->unk_F8 += 1.0f; + if (120.0f < var_r31->unk_F8) { + var_r31->unk_FC &= ~0x40000; + fn_1_4ED8(&var_r31->unk_00, 0); + Hu3DModelAttrSet(lbl_1_bss_1A0->model[var_r31->unk_110 + 2], 1); + } + return 0; + } + if (var_r31->unk_FC & 0x400000) { + if ((Hu3DMotionShiftIDGet(var_r30->model[0]) < 0) && (Hu3DMotionEndCheck(var_r30->model[0]) != 0)) { + if (var_r31->unk_F8 == 0.0f) { + var_r31->unk_F8 = 1.0f; + Hu3DMotionShiftSet(var_r30->model[0], var_r30->motion[var_r31->unk_114 + 1], 0.0f, 8.0f, 0); + } + else { + var_r31->unk_FC &= ~0x400000; + fn_1_4ED8(&var_r31->unk_00, 0); + } + } + return 0; + } + if ((var_r31->unk_100 & 1) == 0) { + Hu3DModelAttrSet(var_r30->model[0], 1); + } + else { + Hu3DModelAttrReset(var_r30->model[0], 1); + } + if (--var_r31->unk_100 < 0) { + var_r31->unk_FC &= ~0x70; + var_r31->unk_FC &= ~0x700; + var_r31->unk_FC &= ~0x7000; + var_r31->unk_FC &= ~0x70000; + var_r31->unk_FC &= ~0x700004; + var_r31->unk_FC &= ~0x2; + Hu3DModelAttrReset(var_r30->model[0], 1); + } + return 1; + } + if (var_r31->unk_FC & 0x110) { + fn_1_40C0(&var_r31->unk_00); + return 0; + } + if ((var_r31->unk_FC & 0x1000) != 0) { + if ((Hu3DMotionShiftIDGet(var_r30->model[0]) < 0) && (Hu3DMotionEndCheck(var_r30->model[0]) != 0)) { + var_r31->unk_00.unk_9C += (10.0 + (8.0 * sind((180.0f * (var_r31->unk_F8 / 60.0f))))); + if (360.0f <= var_r31->unk_00.unk_9C) { + var_r31->unk_00.unk_9C -= 360.0f; + } + var_r31->unk_F8 += 1.0f; + if (60.0f < var_r31->unk_F8) { + fn_1_19CE0(var_r30); + } + } + return 0; + } + if (var_r31->unk_FC & 0x10000) { + fn_1_19CE0(var_r30); + return 0; + } + if (var_r31->unk_FC & 0x100000) { + var_r31->unk_00.unk_20 = 72.0f * var_r31->unk_DC.x; + var_r31->unk_00.unk_24 = -(72.0f * var_r31->unk_DC.z); + fn_1_40C0(&var_r31->unk_00); + return 0; + } + if ((var_r31->unk_FC & 0x20) != 0) { + if (lbl_1_bss_118 < 4) { + omVibrate(lbl_1_bss_120, 0xC, 4, 2); + } + else { + omVibrate(lbl_1_bss_120, 0xC, 0xC, 0); + } + HuAudCharVoicePlay(var_r31->unk_11C, 0x123); + var_r31->unk_FC |= 0x10; + var_r31->unk_00.unk_3C |= 0x210; + var_r31->unk_00.unk_38 = 1; + var_r31->unk_00.unk_84.y = 48.179996f; + var_r31->unk_00.unk_A4 = 0.0f; + if (var_r31->unk_00.unk_3C & 2) { + var_r31->unk_00.unk_3C &= ~0x2; + } + Hu3DMotionShiftSet(var_r30->model[0], var_r30->motion[8], 0.0f, 8.0f, 0); + if (fn_1_125C0(0, 1) <= 0) { + var_r31->unk_FC |= 0x80000; + } + return 0; + } + if (var_r31->unk_FC & 0x200) { + omVibrate(lbl_1_bss_120, 0xC, 4, 2); + HuAudCharVoicePlay(var_r31->unk_11C, 0x123); + var_r31->unk_FC |= 0x100; + var_r31->unk_00.unk_3C |= 0x210; + var_r31->unk_00.unk_38 = 1; + var_r31->unk_00.unk_84.y = 0.0f; + var_r31->unk_00.unk_A4 = 0.0f; + if (var_r31->unk_00.unk_3C & 2) { + var_r31->unk_00.unk_3C &= ~0x2; + } + if (fn_1_125C0(0, 1) <= 0) { + var_r31->unk_FC |= 0x80000; + } + return 0; + } + if (var_r31->unk_FC & 0x2000) { + omVibrate(lbl_1_bss_120, 0xC, 4, 2); + HuAudCharVoicePlay(var_r31->unk_11C, 0x123); + var_r31->unk_F8 = 0.0f; + var_r31->unk_FC |= 0x1000; + var_r31->unk_00.unk_3C |= 0x10; + Hu3DMotionShiftSet(var_r30->model[0], var_r30->motion[15], 0.0f, 8.0f, 0); + if (fn_1_125C0(0, 1) <= 0) { + var_r31->unk_FC |= 0x80000; + } + return 0; + } + if (var_r31->unk_FC & 0x20000) { + omVibrate(lbl_1_bss_120, 0xC, 4, 2); + HuAudCharVoicePlay(var_r31->unk_11C, 0x123); + var_r31->unk_F8 = 0.0f; + var_r31->unk_FC |= 0x10000; + var_r31->unk_00.unk_3C |= 0x10; + if (fn_1_125C0(0, 1) <= 0) { + var_r31->unk_FC |= 0x80000; + } + return 0; + } + if ((var_r31->unk_FC & 0x200000) != 0) { + omVibrate(lbl_1_bss_120, 0xC, 0xC, 0); + HuAudCharVoicePlay(var_r31->unk_11C, 0x123); + var_r31->unk_F8 = 0.0f; + var_r31->unk_FC |= 0x100000; + var_r31->unk_00.unk_3C |= 0x200; + var_r31->unk_00.unk_3C &= ~0x10; + var_f31 = 40.15f; + if (var_r31->unk_FC & 4) { + var_f31 = var_f31 / 2; + } + fn_1_1C77C(var_r31); + fn_1_2BD0(&var_r31->unk_00, var_f31, 0.0f); + Hu3DMotionShiftSet(var_r30->model[0], var_r30->motion[var_r31->unk_114], 0.0f, 8.0f, 0); + sp3C = 1; + if ((var_r31->unk_FC & 4) != 0) { + sp3C = 1; + } + if (fn_1_125C0(0, sp3C) <= 0) { + var_r31->unk_FC |= 0x80000; + } + return 0; + } + return 1; +} + +void fn_1_1E150(omObjData *var_r29) +{ + s32 sp70; + float var_f20; + + UnkM450Struct5 *var_r31 = var_r29->data; + UnkData1380Struct *var_r30; + + var_r31->unk_FC |= 1; + var_r31->unk_FC &= 0xFFFFF7FF; + fn_1_1C060(var_r31); + sp70 = 1; + 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; + if (lbl_1_bss_118 == 5) { + fn_1_19798(); + } + sp70 = fn_1_1C898(var_r31, var_r29); + if (sp70 != 0) { + if (((var_r31->unk_FC & 0x80000) || (lbl_1_bss_304 < 0)) && (var_r31->unk_00.unk_38 == 0)) { + var_r31->unk_118 = 0x7EB; + Hu3DModelAttrReset(*var_r29->model, 0x40000003); + Hu3DMotionShiftSet(*var_r29->model, var_r29->motion[22], 0.0f, 8.0f, 0); + Hu3DModelAttrReset(*var_r29->model, 1); + var_r29->func = fn_1_20170; + return; + } + if (NULL != lbl_1_data_FAC[lbl_1_bss_118]) { + if (fn_1_1B0C4(lbl_1_data_FAC[lbl_1_bss_118], var_r31) != 0) { + if (fn_1_1C2D4(var_r31) != 0) { + fn_1_1C434(var_r31, var_r29); + return; + } + } + } + var_r31->unk_00.unk_20 = HuPadStkX[var_r31->unk_120]; + var_r31->unk_00.unk_24 = HuPadStkY[var_r31->unk_120]; + var_r31->unk_00.unk_28 = HuPadBtnDown[var_r31->unk_120]; + var_r31->unk_00.unk_2C = HuPadBtn[var_r31->unk_120]; + var_r31->unk_00.unk_30 = HuPadTrigL[var_r31->unk_120]; + var_r31->unk_00.unk_34 = HuPadTrigR[var_r31->unk_120]; + if ((lbl_1_bss_118 >= 2) && (lbl_1_bss_118 <= 4)) { + var_r31->unk_00.unk_20 = HuPadStkY[var_r31->unk_120]; + var_r31->unk_00.unk_24 = -HuPadStkX[var_r31->unk_120]; + } + fn_1_40C0(&var_r31->unk_00); + } + if ((1490.0f > var_r31->unk_00.unk_6C.y) && (var_r31->unk_00.unk_38 != 1) && (var_r31->unk_00.unk_38 != 3)) { + omVibrate(lbl_1_bss_120, 0xC, 4, 2); + HuAudCharVoicePlay(var_r31->unk_11C, 0x123); + var_r31->unk_FC |= 0x800000; + var_r31->unk_118 = 0x7EB; + var_r31->unk_00.unk_38 = 1; + var_r31->unk_00.unk_84.y = 53.533333f; + var_r31->unk_00.unk_A4 = 0.0f; + if (var_r31->unk_00.unk_3C & 2) { + var_r31->unk_00.unk_3C &= ~0x2; + } + Hu3DMotionSet(var_r29->model[0], var_r29->motion[8]); + Hu3DModelAttrReset(var_r29->model[0], 1); + fn_1_125C0(0, 0); + var_r29->func = fn_1_20170; + return; + } + fn_1_19450(var_r31); + + var_r30 = NULL; + if (lbl_1_bss_118 == 2) { + var_r30 = &lbl_1_data_1380; + } + if (lbl_1_bss_118 == 4) { + var_r30 = &lbl_1_data_13B8; + } + fn_1_1B158(var_r31, var_r30); + fn_1_1B2AC(var_r31, var_r30); + if (NULL != var_r30) { + if ((var_r31->unk_104 >= 0) && (((var_r30->unk_34[var_r31->unk_104].x) != 0.0f) || (var_r30->unk_34[var_r31->unk_104].z != 0.0f))) { + VECAdd(&var_r30->unk_34[var_r31->unk_104], &var_r31->unk_00.unk_6C, &var_r31->unk_00.unk_6C); + var_r31->unk_00.unk_78 = var_r31->unk_00.unk_6C; + } + if (var_r30->unk_1C != 0) { + if (fn_1_1C2D4(var_r31) != 0) { + fn_1_1C434(var_r31, var_r29); + return; + } + } + } + if ((lbl_1_bss_118 == 5) && (lbl_1_data_A0C[1].unk_14 <= 0)) { + if (fn_1_1C2D4(var_r31) != 0) { + lbl_1_bss_11C = lbl_1_bss_120; + fn_1_1C434(var_r31, var_r29); + fn_1_1F58(0x3E8); + return; + } + } + fn_1_1B644(var_r31); + fn_1_1B830(var_r31); + if (lbl_1_bss_118 < 5) { + var_f20 = 0.0; + if ((lbl_1_bss_118 >= 2) && (lbl_1_bss_118 <= 4)) { + var_f20 = 270.0f; + } + fn_1_1A21C(var_f20, 1500.0f); + fn_1_1710(0.5f, &lbl_1_data_470); + } + omSetTra(var_r31->unk_00.unk_00, var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, var_r31->unk_00.unk_6C.z); + omSetRot(var_r31->unk_00.unk_00, 0.0f, var_r31->unk_00.unk_9C, 0.0f); + fn_1_1C6E4(); +} + +void fn_1_200BC(UnkM450Struct5 *arg0, omObjData *object) +{ + s32 var_r31; + + arg0->unk_118++; + arg0->unk_FC &= ~0x802; + arg0->unk_FC &= ~0x70; + arg0->unk_FC &= ~0x700; + arg0->unk_FC &= ~0x7000; + arg0->unk_FC &= ~0x70000; + arg0->unk_FC &= ~0x700004; + fn_1_1B4C8(arg0); + object->func = fn_1_1E150; +} + +void fn_1_20170(omObjData *var_r30) +{ + Vec sp1CC; + float sp1C8; + float sp1C4; + float var_f31; + float var_f30; + + UnkM450Struct5 *var_r31; + UnkM450Struct5 *var_r29; + UnkData94CStruct *var_r28; + s32 var_r25; + + var_r31 = var_r30->data; + var_r31->unk_FC &= 0xFFFFFFFE; + 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; + CharModelEffectEnableSet(var_r31->unk_11C, 1); + lbl_1_bss_10C = 0; + switch (var_r31->unk_118) { + case 0x7D0: + if (lbl_1_bss_1A4->work[0] > 0x3EC) { + var_r31->unk_118++; + Hu3DModelShadowSet(var_r30->model[0]); + if (fn_1_13B90(0) != 0) { + var_r31->unk_00.unk_9C = 180.0f; + fn_1_4ED8(&var_r31->unk_00, 0); + } + else { + var_r31->unk_00.unk_9C = 0.0f; + fn_1_4ED8(&var_r31->unk_00, 5); + } + var_r31->unk_00.unk_3C |= 0x20; + } + break; + case 0x7D1: + fn_1_40C0(&var_r31->unk_00); + if (var_r31->unk_00.unk_38 == 2) { + var_r31->unk_118++; + var_r31->unk_F0 = 0; + var_r31->unk_F4 = -1; + var_r31->unk_C4 = lbl_1_data_94C; + var_r31->unk_EC = 360.0f; + omVibrate(lbl_1_bss_120, 0xC, 0xC, 0); + if (fn_1_13B90(0) != 0) { + var_r31->unk_118 = 0x7D4; + var_r31->unk_E8 = 0.0f; + fn_1_4ED8(&var_r31->unk_00, 0); + } + var_r31->unk_00.unk_3C &= ~0x20; + } + break; + case 0x7D2: + case 0x7DA: + if (var_r31->unk_EC != 360.0f) { + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, var_r31->unk_EC, 0.05f); + } + if (var_r31->unk_F4 < 0) { + var_r31->unk_F4 = var_r31->unk_F0; + var_r31->unk_F0++; + var_r28 = &var_r31->unk_C4[var_r31->unk_F4]; + if (var_r28->unk_08 == 0.0f) { + Hu3DMotionSet(var_r30->model[0], var_r30->motion[var_r28->unk_00]); + Hu3DMotionTimeSet(var_r30->model[0], var_r28->unk_0C); + } + else { + Hu3DMotionShiftSet( + var_r30->model[0], var_r30->motion[var_r28->unk_00], var_r28->unk_0C, var_r28->unk_08, var_r28->unk_10 & 0xBFFFFFFD); + } + Hu3DMotionSpeedSet(var_r30->model[0], var_r28->unk_04); + Hu3DMotionShiftSpeedSet(var_r30->model[0], var_r28->unk_04); + if (var_r28->unk_10 & 0x40000003) { + var_r31->unk_118++; + Hu3DMotionSpeedSet(var_r30->model[0], 1.0f); + Hu3DMotionShiftSpeedSet(var_r30->model[0], 1.0f); + } + } + else if ((Hu3DMotionShiftIDGet(var_r30->model[0]) < 0) && (Hu3DMotionEndCheck(var_r30->model[0]) != 0)) { + var_r31->unk_F4 = -1; + if (var_r31->unk_C4[var_r31->unk_F0].unk_00 < 0) { + var_r31->unk_118++; + Hu3DMotionSpeedSet(var_r30->model[0], 1.0f); + Hu3DMotionShiftSpeedSet(var_r30->model[0], 1.0f); + } + } + break; + case 0x7D3: + if (Hu3DMotionShiftIDGet(var_r30->model[0]) < 0) { + sp1C4 = Hu3DMotionTimeGet(var_r30->model[0]) / Hu3DMotionMaxTimeGet(var_r30->model[0]); + if (0.5f > sp1C4) { + sp1C4 = 0.5f; + } + var_r31->unk_00.unk_9C = 180.0f * (2.0f * (sp1C4 - 0.5f)); + if (Hu3DMotionEndCheck(var_r30->model[0]) != 0) { + var_r31->unk_118++; + var_r31->unk_E8 = 0.0f; + fn_1_4ED8(&var_r31->unk_00, 0); + Hu3DMotionShiftSet(var_r30->model[0], var_r30->motion[0], 0.0f, 8.0f, 0x40000001); + } + } + break; + case 0x7D4: + if ((lbl_1_bss_1A4->work[0] >= 0x3EF) && (120.0f < lbl_1_bss_128)) { + var_r31->unk_118++; + } + break; + case 0x7D5: + if (90.0f > var_r31->unk_E8) { + fn_1_1A940(var_r31, lbl_1_bss_4C, 0x7A); + } + else { + if (lbl_1_bss_1A4->work[0] < 0x3F0) { + lbl_1_bss_1A4->work[0] = 0x3F0; + lbl_1_bss_128 = 0.0f; + lbl_1_bss_324 = lbl_1_data_4B8; + lbl_1_bss_30C = lbl_1_data_4C4; + } + if ((lbl_1_bss_4C->z - 100.0f) < var_r31->unk_00.unk_6C.z) { + var_r31->unk_00.unk_24 = 0x48; + fn_1_40C0(&var_r31->unk_00); + } + else { + var_r31->unk_118++; + fn_1_4ED8(&var_r31->unk_00, 0); + } + } + break; + case 0x7D6: + if (lbl_1_bss_1A4->work[0] >= 0x3F3) { + fn_1_200BC(var_r31, var_r30); + } + break; + case 0x7D8: + var_r31->unk_D0.x = 1200.0f; + var_r31->unk_D0.z = 0.0f; + if (fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D0) != 0) { + if (lbl_1_bss_1A4->work[0] >= 0x3F5) { + var_r31->unk_118++; + var_r31->unk_E8 = 0.0f; + var_r31->unk_00.unk_6C.z = 0.0f; + } + else { + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 90.0f, 0.4f); + var_r31->unk_00.unk_6C.z = 0.0f; + } + } + fn_1_40C0(&var_r31->unk_00); + break; + case 0x7D9: + if (90.0f > var_r31->unk_E8) { + fn_1_1A940(var_r31, &lbl_1_bss_4C[1], 0x78); + } + else { + if ((-1000.0f < var_r31->unk_00.unk_6C.x) && (lbl_1_bss_1A4->work[0] < 0x3F6)) { + lbl_1_bss_1A4->work[0] = 0x3F6; + lbl_1_bss_128 = 0.0f; + } + if (lbl_1_bss_1A4->work[0] >= 0x3F7) { + var_r31->unk_118 = 0x7DB; + fn_1_4ED8(&var_r31->unk_00, 0); + } + if (lbl_1_data_1380.unk_24[2] >= 0) { + var_r31->unk_D0 = lbl_1_data_1380.unk_30[2]; + } + else { + var_r31->unk_D0 = lbl_1_data_1380.unk_30[3]; + } + var_r31->unk_D0.z *= 0.5f; + fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D0); + fn_1_40C0(&var_r31->unk_00); + } + break; + case 0x7DB: + if ((lbl_1_bss_1A4->work[0] <= 0x3F9) && (Hu3DMotionShiftIDGet(var_r30->model[0]) < 0) && (lbl_1_bss_D8 > 0)) { + VECScale(&lbl_1_bss_CC, &lbl_1_bss_CC, 1.0f / lbl_1_bss_D8); + fn_1_160AC(var_r31, var_r30, &lbl_1_bss_CC); + } + if (lbl_1_bss_1A4->work[0] >= 0x3FA) { + fn_1_160AC(var_r31, var_r30, NULL); + } + if (lbl_1_bss_1A4->work[0] >= 0x3FB) { + fn_1_16280(var_r31, var_r30); + fn_1_200BC(var_r31, var_r30); + } + break; + case 0x7DD: + var_r31->unk_D0.x = 300.0f; + var_r31->unk_D0.z = 0.0f; + if (lbl_1_bss_1A4->work[0] >= 0x3FD) { + if (fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D0) != 0) { + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 90.0f, 0.4f); + if (lbl_1_bss_1A4->work[0] <= 0x3FD) { + lbl_1_bss_1A4->work[0] += 1; + lbl_1_bss_128 = 0.0f; + } + if (lbl_1_bss_1A4->work[0] >= 0x402) { + var_r31->unk_118++; + var_r31->unk_E8 = 0.0f; + } + } + fn_1_40C0(&var_r31->unk_00); + } + break; + case 0x7DE: + if (90.0f > var_r31->unk_E8) { + fn_1_1A940(var_r31, &lbl_1_bss_4C[2], 0x78); + } + else if ((100.0f + lbl_1_bss_4C[2].x) > var_r31->unk_00.unk_6C.x) { + var_r31->unk_00.unk_20 = 0x48; + fn_1_40C0(&var_r31->unk_00); + } + else { + var_r31->unk_118++; + fn_1_4ED8(&var_r31->unk_00, 0); + lbl_1_bss_1A4->work[0] = 0x403; + lbl_1_bss_128 = 0.0f; + } + break; + case 0x7DF: + if (lbl_1_bss_1A4->work[0] >= 0x405) { + fn_1_200BC(var_r31, var_r30); + } + break; + case 0x7E1: + var_r31->unk_D0.x = 1200.0f; + var_r31->unk_D0.z = 0.0f; + if (fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D0) != 0) { + if (lbl_1_bss_1A4->work[0] >= 0x407) { + var_r31->unk_118++; + var_r31->unk_E8 = 0.0f; + var_r31->unk_00.unk_6C.z = 0.0f; + } + else { + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 90.0f, 0.4f); + var_r31->unk_00.unk_6C.z = 0.0f; + } + } + fn_1_40C0(&var_r31->unk_00); + break; + case 0x7E2: + if (90.0f > var_r31->unk_E8) { + fn_1_1A940(var_r31, &lbl_1_bss_4C[3], 0x78); + } + else { + if ((-1000.0f < var_r31->unk_00.unk_6C.x) && (lbl_1_bss_1A4->work[0] < 0x408)) { + lbl_1_bss_1A4->work[0] = 0x408; + lbl_1_bss_128 = 0.0f; + } + if (lbl_1_bss_1A4->work[0] >= 0x409) { + var_r31->unk_118++; + } + var_r31->unk_D0 = lbl_1_data_13B8.unk_30[7]; + + fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D0); + fn_1_40C0(&var_r31->unk_00); + } + break; + case 0x7E3: + if (lbl_1_bss_1A4->work[0] >= 0x40D) { + fn_1_200BC(var_r31, var_r30); + } + break; + case 0x7E5: + var_r31->unk_D0.x = 0.0f; + var_r31->unk_D0.z = -400.0f; + if (lbl_1_bss_1A4->work[0] >= 0x410) { + if (fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D0) != 0) { + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 180.0f, 0.4f); + if ((lbl_1_bss_1A4->work[0] <= 0x410) && (120.0f <= lbl_1_bss_128)) { + lbl_1_bss_1A4->work[0] += 1; + lbl_1_bss_128 = 0.0f; + var_r31->unk_118++; + var_r31->unk_E8 = 0.0f; + + fn_1_139B0(&lbl_1_data_13B8, 0x10); + fn_1_1F58(0x3E8); + } + } + fn_1_40C0(&var_r31->unk_00); + } + break; + case 0x7E6: + if (90.0f > var_r31->unk_E8) { + fn_1_1A940(var_r31, &lbl_1_bss_4C[4], 0x7A); + } + else { + if (lbl_1_bss_1A4->work[0] <= 0x411) { + lbl_1_bss_1A4->work[0] = 0x412; + lbl_1_bss_128 = 0.0f; + fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C); + lbl_1_bss_324 = lbl_1_data_4D0; + lbl_1_bss_30C = lbl_1_data_4DC; + } + var_r31->unk_D0.x = 0.0f; + var_r31->unk_D0.z = 600.0f; + if (fn_1_19A10(&var_r31->unk_00, &var_r31->unk_D0) != 0) { + ++var_r31->unk_118; + fn_1_4ED8(&var_r31->unk_00, 0); + } + else { + fn_1_40C0(&var_r31->unk_00); + } + } + break; + case 0x7E7: + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 180.0f, 0.4f); + if (lbl_1_bss_1A4->work[0] >= 0x415) { + fn_1_200BC(var_r31, var_r30); + } + break; + case 0x7E9: + if (lbl_1_bss_1A4->work[0] >= 0x417) { + if (100.0f < lbl_1_bss_128) { + var_r31->unk_118++; + GWPlayerCoinWinSet(lbl_1_bss_120, 10); + Hu3DMotionShiftSet(var_r30->model[0], var_r30->motion[21], 0.0f, 8.0f, 0); + lbl_1_bss_18 = HuAudSStreamPlay(0xD); + } + } + if ((lbl_1_bss_1A4->work[0] == 0x416) && (240.0f < lbl_1_bss_128)) { + lbl_1_bss_1A4->work[0] += 1; + lbl_1_bss_128 = 0.0f; + } + break; + case 0x7EA: + VECSubtract(&((UnkM450Struct3 *)lbl_1_bss_134->data)->unk_00.unk_6C, &var_r31->unk_00.unk_6C, &sp1CC); + var_r31->unk_00.unk_9C = fn_1_1E20(var_r31->unk_00.unk_9C, 180.0 + (atan2d(sp1CC.x, sp1CC.z)), 0.4f); + break; + case 0x7EB: + if (var_r31->unk_FC & 0x800000) { + // inline? + var_r29 = var_r31; + var_r29->unk_00.unk_84.y += -2.4333334f; + var_r29->unk_00.unk_6C.y += var_r29->unk_00.unk_84.y; + var_r29->unk_00.unk_A8 = MapPos( + var_r29->unk_00.unk_6C.x, var_r29->unk_00.unk_6C.y, var_r29->unk_00.unk_6C.z, var_r29->unk_00.unk_C0, &var_r29->unk_00.unk_AC); + if (var_r29->unk_00.unk_A8 > var_r29->unk_00.unk_6C.y) { + var_r31->unk_00.unk_38 = 1; + var_r31->unk_00.unk_84.y = 53.533333f; + var_r31->unk_00.unk_A4 = 0.0f; + if (var_r31->unk_00.unk_3C & 2) { + var_r31->unk_00.unk_3C &= ~2; + } + } + var_f31 = var_r29->unk_00.unk_6C.x; + var_f30 = var_r29->unk_00.unk_6C.z; + sp1C8 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (sp1C8 == 0.0f) { + var_f31 = 0.0f; + var_f30 = -1.0f; + } + else { + var_f31 /= sp1C8; + var_f30 /= sp1C8; + } + var_r29->unk_00.unk_84.x = 72.0f * var_f31 / 4; + var_r29->unk_00.unk_84.z = 72.0f * var_f30 / 4; + var_r29->unk_00.unk_6C.x += var_r29->unk_00.unk_84.x; + var_r29->unk_00.unk_6C.z += var_r29->unk_00.unk_84.z; + var_r29->unk_00.unk_9C = fn_1_1E20(var_r29->unk_00.unk_9C, atan2d(var_r29->unk_00.unk_84.x, var_r29->unk_00.unk_84.z), 0.4f); + } + break; + default: + OSReport("*** player mode error(%d)!!\n", var_r31->unk_118); + break; + } + if ((var_r31->unk_118 >= 0x7E9) && (var_r31->unk_118 <= 0x7EA)) { + fn_1_1C060(var_r31); + } + if (1495.0f > var_r31->unk_00.unk_6C.y) { + for (var_r25 = 0; var_r25 < 1; var_r25++) { + Hu3DModelShadowDispOff(var_r30->model[var_r25]); + } + } + else { + for (var_r25 = 0; var_r25 < 1; var_r25++) { + Hu3DModelShadowDispOn(var_r30->model[var_r25]); + } + } + omSetTra(var_r31->unk_00.unk_00, var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, var_r31->unk_00.unk_6C.z); + omSetRot(var_r31->unk_00.unk_00, 0.0f, var_r31->unk_00.unk_9C, 0.0f); +} + +void fn_1_23330(omObjData *object) +{ + Vec sp8; + UnkM450Struct5 *var_r31; + s32 var_r29; + s32 var_r27; + s32 var_r26; + + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM450Struct5), MEMORY_DEFAULT_NUM); + var_r31 = object->data; + var_r31->unk_FC = 0; + var_r31->unk_11C = GWPlayerCfg[lbl_1_bss_120].character; + var_r31->unk_120 = GWPlayerCfg[lbl_1_bss_120].pad_idx; + var_r31->unk_118 = 0x7D0; + var_r31->unk_C8 = 0.0f; + var_r31->unk_CC = 0.0f; + sp8.x = 0.0f; + sp8.y = 4000.0f; + sp8.z = 0.0f; + var_r26 = var_r31->unk_11C; + var_r27 = lbl_1_bss_120; + fn_1_2C1C(&var_r31->unk_00, object, var_r27, var_r26, lbl_1_data_92C, 0, &sp8, 0.0f); + var_r31->unk_00.unk_04 = fn_1_19C18; + var_r31->unk_00.unk_0C = fn_1_19CE0; + var_r31->unk_00.unk_10 = fn_1_1A014; + object->model[0] = CharModelCreate(lbl_1_data_0[var_r31->unk_11C], 2); + CharModelStepTypeSet(lbl_1_data_0[var_r31->unk_11C], 0); + for (var_r29 = 0; var_r29 < 0x17; var_r29++) { + object->motion[var_r29] = CharModelMotionCreate(lbl_1_data_0[var_r31->unk_11C], lbl_1_data_64C[var_r31->unk_11C][var_r29]); + CharModelMotionSet(lbl_1_data_0[var_r31->unk_11C], object->motion[var_r29]); + } + Hu3DModelAttrSet(object->model[0], 1); + Hu3DModelAttrSet(object->model[0], 0x40000001); + Hu3DModelLayerSet(object->model[0], 2); + Hu3DMotionSet(object->model[0], *object->motion); + omSetTra(var_r31->unk_00.unk_00, var_r31->unk_00.unk_6C.x, var_r31->unk_00.unk_6C.y, var_r31->unk_00.unk_6C.z); + omSetRot(var_r31->unk_00.unk_00, 0.0f, var_r31->unk_00.unk_9C, 0.0f); + Hu3DModelAttrReset(object->model[0], 1); + CharModelLayerSetAll2(6); + CharModelMotionDataClose(lbl_1_data_0[var_r31->unk_11C]); + object->func = fn_1_20170; +} + +void fn_1_23770(omObjData *object, s32 arg1) +{ + lbl_1_bss_108 = 1; + lbl_1_bss_128 += 1.0f; + if ((fn_1_13DC(lbl_1_bss_128 / 120.0f, &lbl_1_data_470) != 0) && (MGSeqStatGet(lbl_1_bss_2FE) == 0)) { + lbl_1_bss_2FE = -1; + object->work[0] += 1; + fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C); + fn_1_12540(0); + if (lbl_1_bss_118 == 5) { + fn_1_12540(1); + } + } + if ((arg1 >= 0) && (lbl_1_bss_2F8 < 0) && ((MGSeqStatGet(lbl_1_bss_2FE) & 0x10) != 0)) { + fn_1_1F24(arg1); + } +} + +void fn_1_23CA0(omObjData *arg0, float arg8, float arg9) +{ + lbl_1_bss_108 = 0; + lbl_1_bss_110 = 0; + if (lbl_1_bss_2FE < 0) { + nMap = 0; + fn_1_14C28(); + MGSeqParamSet(lbl_1_bss_2FC, 2, -1); + lbl_1_bss_128 = 0.0f; + lbl_1_bss_2FC = -1; + lbl_1_bss_2FE = MGSeqCreate(3, 1); + return; + } + lbl_1_bss_128 += 1.0f; + if (lbl_1_bss_118 < 5) { + fn_1_1A21C(arg8, 1500.0f); + } + else { + fn_1_1A3F0(); + } + fn_1_13DC(lbl_1_bss_128 / arg9, &lbl_1_data_470); + + if ((arg9 < lbl_1_bss_128) && (MGSeqStatGet(lbl_1_bss_2FE) == 0)) { + arg0->work[0] += 1; + lbl_1_bss_128 = 0.0f; + lbl_1_bss_124 = 0.0f; + lbl_1_bss_2FE = -1; + fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C); + } +} + +void fn_1_24620(omObjData *var_r31) +{ + Vec sp280; + s32 sp120; + s32 sp11C; + CameraData *sp118; + float var_f31; + UnkData1380Struct *var_r30; + + if (omSysExitReq != 0) { + fn_1_1F58(0x64); + WipeCreate(2, 0, 0x3C); + var_r31->func = fn_1_298EC; + } + lbl_1_bss_308++; + switch (var_r31->work[0]) { + case 0x3E8: + if (lbl_1_bss_2FE < 0) { + fn_1_1F58(0x64); + MGSeqParamSet(lbl_1_bss_2FC, 2, -1); + lbl_1_bss_2FC = -1; + lbl_1_bss_2FE = MGSeqCreate(3, 1); + lbl_1_bss_1C = -1; + } + else { + lbl_1_bss_128 += 1.0f; + sp11C = 0; + if (lbl_1_bss_1C < 0) { + if (120.0f < lbl_1_bss_128) { + lbl_1_bss_1C = HuAudSStreamPlay(3); + } + } + else if (HuAudSStreamStatGet(lbl_1_bss_1C) == 0) { + sp11C = 1; + } + if ((sp11C != 0) || (1200.0f < lbl_1_bss_128)) { + fn_1_1F58(0x64); + lbl_1_bss_2FE = -1; + WipeColorSet(0, 0, 0); + WipeCreate(2, 0, 0x3C); + var_r31->func = fn_1_298EC; + } + } + break; + case 0x3E9: + lbl_1_bss_128 += 1.0f; + if (60.0f < lbl_1_bss_128) { + var_r31->work[0] += 1; + WipeCreate(1, 0, 0x3C); + HuAudFXPlay(0x7B2); + } + break; + case 0x3EA: + if (WipeStatGet() == 0) { + var_r31->work[0] += 1; + lbl_1_bss_128 = 0.0f; + } + break; + case 0x3EB: + lbl_1_bss_128 += 1.0f; + if (120.0f < lbl_1_bss_128) { + var_r31->work[0] += 1; + lbl_1_bss_128 = 0.0f; + lbl_1_bss_324 = lbl_1_data_488; + lbl_1_bss_30C = lbl_1_data_494; + fn_1_1F24(0x41); + } + break; + case 0x3EC: + lbl_1_bss_128 += 1.0f; + if (fn_1_13DC(lbl_1_bss_128 / 120.0f, &lbl_1_data_470) != 0) { + var_r31->work[0] += 1; + lbl_1_bss_128 = 0; + fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C); + lbl_1_bss_324 = lbl_1_data_4A0; + lbl_1_bss_30C = lbl_1_data_4AC; + } + break; + case 0x3ED: + if (((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_118 >= 0x7D3) { + lbl_1_bss_128 += 1.0f; + if (fn_1_13DC(lbl_1_bss_128 / 120.0f, &lbl_1_data_470) != 0) { + var_r31->work[0] += 1; + fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C); + fn_1_6CB0(fn_1_8500, 0); + } + } + break; + case 0x3EE: + case 0x3F1: + case 0x3F8: + case 0x401: + case 0x40A: + case 0x413: + if (lbl_1_bss_10 == 0) { + var_r31->work[0] += 1; + lbl_1_bss_128 = 0.0f; + } + break; + case 0x3EF: + lbl_1_bss_128 += 1.0f; + if (120.0f < lbl_1_bss_128) { + fn_1_1A060(); + fn_1_1710((lbl_1_bss_128 - 120.0f) / 240.0f, &lbl_1_data_470); + } + break; + case 0x3F0: + lbl_1_bss_128 += 1.0f; + if (fn_1_13DC(lbl_1_bss_128 / 120.0f, &lbl_1_data_470) != 0) { + var_r31->work[0] += 1; + fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C); + fn_1_6CB0(fn_1_8BDC, 1); + } + if (fn_1_13B90(1) != 0) { + fn_1_1F58(0x3E8); + } + break; + case 0x3F2: + if (lbl_1_bss_2FE < 0) { + lbl_1_bss_128 = 0.0f; + lbl_1_bss_2FE = MGSeqCreate(3, 0); + fn_1_14BC8(&lbl_1_data_A80[0], 9); + fn_1_13BC4(1); + fn_1_1A060(); + } + else { + fn_1_23770(var_r31, 0x40); + } + break; + case 0x3F3: + case 0x3FB: + case 0x405: + case 0x40D: + case 0x415: + if (lbl_1_bss_2FC >= 0) { + MGSeqParamSet(lbl_1_bss_2FC, 1, (lbl_1_bss_304 + 0x3B) / 60); + } + else { + sp120 = 0; + if ((lbl_1_bss_118 == 2) || (lbl_1_bss_118 == 4) || (lbl_1_bss_118 == 5)) { + if (lbl_1_bss_304 < 0x708) { + sp120 = 1; + } + } + else { + sp120 = 1; + } + if (sp120 != 0) { + lbl_1_bss_2FC = MGSeqCreate(1, lbl_1_bss_304 / 60, -1, -1); + } + } + lbl_1_bss_304--; + if (((UnkM450Struct5 *)lbl_1_bss_138->data)->unk_118 >= 0x7EB) { + var_r31->work[0] = 0x3E8; + lbl_1_bss_128 = 0.0f; + } + break; + case 0x3F4: + fn_1_23CA0(var_r31, 270.0f, 120.0f); + break; + case 0x3F5: + lbl_1_bss_128 += 1.0f; + fn_1_1A21C(270.0f, 0.0f); + fn_1_13DC(1.0f, &lbl_1_data_470); + break; + case 0x3F6: + lbl_1_bss_128 += 1.0f; + if (90.0f < lbl_1_bss_128) { + var_r31->work[0] += 1; + lbl_1_bss_128 = 0.0f; + } + fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C); + lbl_1_bss_20 = -1; + break; + case 0x3F7: + if (lbl_1_bss_20 < 0) { + lbl_1_bss_20 = HuAudFXPlay(0x7B1); + } + omVibrate(lbl_1_bss_120, 0xC, 6, 6); + lbl_1_bss_128 += 1.0f; + Hu3DModelPosSet(lbl_1_bss_1A0->model[6], 0.0f, -(2.0f * lbl_1_bss_128), 0.0f); + if (120.0f < lbl_1_bss_128) { + var_r31->work[0] += 1; + fn_1_6CB0(fn_1_9074, 2); + HuAudFXPlay(0x7BB); + } + break; + case 0x3F9: + break; + case 0x3FA: + if (lbl_1_bss_2FE < 0) { + lbl_1_bss_128 = 0.0f; + lbl_1_bss_2FE = MGSeqCreate(3, 0); + fn_1_13BC4(2); + fn_1_1A21C(270.0f, 0.0f); + } + else { + fn_1_23770(var_r31, -1); + } + break; + case 0x3FC: + var_f31 = lbl_1_bss_128 / 120.0f; + if (1.0f < var_f31) { + var_f31 = 1.0f; + } + var_r30 = &lbl_1_data_1380; + Hu3DModelAttrReset(lbl_1_bss_1A0->model[5], 1); + Hu3DModelRotSet(lbl_1_bss_1A0->model[5], 0.0f, 90.0f, 0.0f); + Hu3DModelPosSet(lbl_1_bss_1A0->model[5], var_r30->unk_30[3].x, var_r30->unk_30[3].y, var_r30->unk_30[3].z); + Hu3DModelTPLvlSet(lbl_1_bss_1A0->model[5], var_f31); + fn_1_23CA0(var_r31, 270.0f, 120.0f); + break; + case 0x3FD: + case 0x3FE: + case 0x3FF: + lbl_1_bss_124 += 1.0f; + fn_1_1A21C(270.0f, 0.0f); + fn_1_1710(lbl_1_bss_124 / 120.0f, &lbl_1_data_470); + lbl_1_bss_20 = -1; + break; + case 0x400: + lbl_1_bss_124 += 1.0f; + fn_1_1A21C(270.0f, 0.0f); + fn_1_1710(lbl_1_bss_124 / 120.0f, &lbl_1_data_470); + if (lbl_1_bss_20 < 0) { + lbl_1_bss_20 = HuAudFXPlay(0x7B1); + } + omVibrate(lbl_1_bss_120, 0xC, 6, 6); + lbl_1_bss_128 += 1.0f; + Hu3DModelAttrReset(lbl_1_bss_1A0->model[7], 1); + Hu3DModelPosSet(lbl_1_bss_1A0->model[7], 0.0f, -(60.0f - (lbl_1_bss_128 / 2)), 0.0f); + if (120.0f < lbl_1_bss_128) { + var_r31->work[0] += 1; + lbl_1_bss_128 = 0; + fn_1_6CB0(fn_1_96C0, -1); + fn_1_139B0(&lbl_1_data_1380, 5); + fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C); + HuAudFXPlay(0x7BB); + } + break; + case 0x402: + lbl_1_bss_128 += 1.0f; + fn_1_1A21C(270.0f, 0.0f); + fn_1_13DC(1.0f, &lbl_1_data_470); + break; + case 0x403: + fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C); + break; + case 0x404: + if (lbl_1_bss_2FE < 0) { + lbl_1_bss_128 = 0.0f; + lbl_1_bss_2FE = MGSeqCreate(3, 0); + fn_1_14BC8(&lbl_1_data_C58[0], 10); + fn_1_13BC4(3); + fn_1_1A21C(270.0f, 0.0f); + } + else { + fn_1_23770(var_r31, -1); + } + break; + case 0x406: + fn_1_23CA0(var_r31, 270.0f, 120.0f); + break; + case 0x407: + lbl_1_bss_128 += 1.0f; + fn_1_1A21C(270.0f, 0.0f); + fn_1_13DC(1.0f, &lbl_1_data_470); + break; + case 0x408: + lbl_1_bss_128 += 1.0f; + if (90.0f < lbl_1_bss_128) { + var_r31->work[0] += 1; + lbl_1_bss_128 = 0.0f; + } + fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C); + lbl_1_bss_20 = -1; + break; + case 0x409: + if (lbl_1_bss_20 < 0) { + lbl_1_bss_20 = HuAudFXPlay(0x7B1); + } + omVibrate(lbl_1_bss_120, 0xC, 6, 6); + lbl_1_bss_128 += 1.0f; + Hu3DModelPosSet(lbl_1_bss_1A0->model[17], 0.0f, -(2.0f * lbl_1_bss_128), 0.0f); + if (120.0f < lbl_1_bss_128) { + var_r31->work[0] += 1; + fn_1_6CB0(fn_1_9824, 4); + HuAudFXPlay(0x7BB); + } + break; + case 0x40B: + break; + case 0x40C: + if (lbl_1_bss_2FE < 0) { + lbl_1_bss_128 = 0.0f; + lbl_1_bss_2FE = MGSeqCreate(3, 0); + fn_1_13BC4(4); + fn_1_1A21C(270.0f, 0.0f); + } + else { + fn_1_23770(var_r31, -1); + } + break; + case 0x40E: + var_f31 = lbl_1_bss_128 / 120.0f; + if (1.0f < var_f31) { + var_f31 = 1.0f; + } + var_r30 = &lbl_1_data_13B8; + Hu3DModelAttrReset(lbl_1_bss_1A0->model[16], 1); + Hu3DModelRotSet(lbl_1_bss_1A0->model[16], 0.0f, -90.0f, 0.0f); + Hu3DModelPosSet(lbl_1_bss_1A0->model[16], var_r30->unk_30[8].x, var_r30->unk_30[8].y, var_r30->unk_30[8].z); + Hu3DModelTPLvlSet(lbl_1_bss_1A0->model[16], var_f31); + fn_1_23CA0(var_r31, 270.0f, 120.0f); + break; + case 0x40F: + lbl_1_bss_20 = -1; + break; + case 0x410: + if (lbl_1_bss_20 < 0) { + lbl_1_bss_20 = HuAudFXPlay(0x7B1); + } + omVibrate(lbl_1_bss_120, 0xC, 6, 6); + lbl_1_bss_128 += 1.0f; + if (120.0f <= lbl_1_bss_128) { + lbl_1_bss_128 = 120.0f; + } + Hu3DModelAttrReset(lbl_1_bss_1A0->model[18], 1); + Hu3DModelPosSet(lbl_1_bss_1A0->model[18], 0.0f, -(60.0f - (lbl_1_bss_128 / 2)), 0.0f); + fn_1_1A21C(0.0f, 0.0f); + fn_1_1710(lbl_1_bss_128 / 120.0f, &lbl_1_data_470); + break; + case 0x411: + if (lbl_1_bss_20 >= 0) { + lbl_1_bss_20 = -1; + HuAudFXPlay(0x7BB); + } + lbl_1_bss_128 += 1.0f; + fn_1_1A060(); + fn_1_13DC(1.0f, &lbl_1_data_470); + break; + case 0x412: + lbl_1_bss_128 += 1.0f; + if (fn_1_13DC(lbl_1_bss_128 / 120.0f, &lbl_1_data_470) != 0) { + var_r31->work[0] += 1; + fn_1_1350(&lbl_1_bss_324, &lbl_1_data_470, &lbl_1_bss_30C); + fn_1_6CB0(fn_1_9BA4, 5); + Hu3DModelAttrSet(lbl_1_bss_1A0->model[19], 1); + } + break; + case 0x414: + if (lbl_1_bss_2FE < 0) { + lbl_1_bss_128 = 0.0f; + lbl_1_bss_2FE = MGSeqCreate(3, 0); + fn_1_13BC4(5); + fn_1_1A21C(0.0f, 2000.0f); + fn_1_1F24(0x42); + } + else { + fn_1_23770(var_r31, -1); + } + break; + case 0x416: + lbl_1_bss_128 += 1.0f; + break; + case 0x417: + fn_1_23CA0(var_r31, 0.0f, 120.0f); + break; + case 0x418: + lbl_1_bss_128 += 1.0f; + sp11C = 0; + if (HuAudSStreamStatGet(lbl_1_bss_18) == 0) { + sp11C = 1; + } + if ((sp11C != 0) || (1200.0f < lbl_1_bss_128)) { + fn_1_1F58(0x64); + lbl_1_bss_2FE = -1; + WipeCreate(2, 0, 0x3C); + var_r31->func = fn_1_298EC; + } + break; + default: + OSReport("*** main mode error(%d)!!\n", var_r31->work[0]); + break; + } + + sp118 = Hu3DCamera; + VECSubtract(&sp118->target, &sp118->pos, &sp280); + VECNormalize(&sp280, &sp280); + HuAudFXListnerUpdate(&sp118->pos, &sp280); + lbl_1_bss_D8 = 0; + lbl_1_bss_CC.x = 0.0f; + lbl_1_bss_CC.y = 0.0f; + lbl_1_bss_CC.z = 0.0f; +} + +void ObjectSetup(void) +{ + Vec sp14; + Vec sp8; + s32 var_r31; + s32 var_r29; + omObjData *var_r28; + s32 var_r27; + + OSReport("******* M450 ObjectSetup *********\n"); + lbl_1_bss_33C = omInitObjMan(0x3E8, 0x2000); + omGameSysInit(lbl_1_bss_33C); + nMap = 0; + nChar = 0; + lbl_1_bss_120 = 0; + lbl_1_bss_11C = -1; + lbl_1_bss_118 = 0; + lbl_1_bss_110 = 0; + lbl_1_bss_10C = 0; + lbl_1_bss_108 = 0; + lbl_1_bss_308 = 0; + lbl_1_bss_2FE = -1; + lbl_1_bss_2FC = -1; + lbl_1_bss_2F8 = -1; + lbl_1_bss_1C = -1; + lbl_1_bss_18 = -1; + lbl_1_bss_D8 = 0; + lbl_1_bss_F8 = -1; + lbl_1_bss_FC = NULL; + lbl_1_bss_C4 = -1; + fn_1_1C6E4(); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraPerspectiveSet(1, 30.0f, 20.0f, 30000.0f, 1.2f); + fn_1_1350(&lbl_1_data_464, &lbl_1_data_470, &lbl_1_data_47C); + VECSubtract(&lbl_1_data_47C, &lbl_1_data_464, &sp8); + VECNormalize(&sp8, &sp8); + HuAudFXListnerSetEX(&lbl_1_data_464, &sp8, 5800.0, 1000.0, 100.0, 300.0, 300.0); + var_r27 = Hu3DGLightCreateV(&lbl_1_data_4E8, &lbl_1_data_4F4, &lbl_1_data_500); + Hu3DGLightStaticSet(var_r27, 1); + Hu3DGLightInfinitytSet(var_r27); + Hu3DShadowCreate(30.0f, 20.0f, 30000.0f); + Hu3DShadowTPLvlSet(0.5f); + VECNormalize(&lbl_1_data_504, &sp14); + Hu3DShadowPosSet(&lbl_1_data_504, &sp14, &lbl_1_data_510); + fn_1_6C68(lbl_1_bss_120); + lbl_1_bss_14 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M450, 0x63), 0x10000000)); + HuSprAnimLock(lbl_1_bss_14); + fn_1_12234(); + for (var_r29 = 0; var_r29 < 0x20; var_r29++) { + lbl_1_bss_1B0[var_r29].unk00 = 0; + lbl_1_bss_1B0[var_r29].unk04 = -1; + } + lbl_1_bss_1A0 = omAddObjEx(lbl_1_bss_33C, 0x64, 0x21, 0, -1, fn_1_15308); + for (var_r31 = 0; var_r31 < 0x17; var_r31++) { + lbl_1_bss_144[var_r31] = omAddObjEx(lbl_1_bss_33C, 0x65, 1, 0, -1, fn_1_12D7C); + lbl_1_bss_144[var_r31]->work[0] = var_r31; + } + omMakeGroupEx(lbl_1_bss_33C, 0, 1); + lbl_1_bss_140 = omGetGroupMemberListEx(lbl_1_bss_33C, 0); + for (var_r31 = 0; var_r31 < 1; var_r31++) { + var_r28 = omAddObjEx(lbl_1_bss_33C, 0x66, 1, 0, 0, fn_1_1291C); + } + omMakeGroupEx(lbl_1_bss_33C, 1, 0xA); + lbl_1_bss_13C = omGetGroupMemberListEx(lbl_1_bss_33C, 1); + for (var_r31 = 0; var_r31 < 0xA; var_r31++) { + var_r28 = omAddObjEx(lbl_1_bss_33C, 0x67, 1, 0, 1, fn_1_12B80); + } + fn_1_2C00(NULL, 1505.0f); + lbl_1_bss_138 = omAddObjEx(lbl_1_bss_33C, 0x6D, 1, 0x17, -1, fn_1_23330); + lbl_1_bss_134 = omAddObjEx(lbl_1_bss_33C, 0x68, 2, 0x13, -1, fn_1_DBF0); + omMakeGroupEx(lbl_1_bss_33C, 2, 2); + lbl_1_bss_130 = omGetGroupMemberListEx(lbl_1_bss_33C, 2); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r28 = omAddObjEx(lbl_1_bss_33C, 0x69, 5, 0xF, 2, fn_1_11D5C); + var_r28->work[0] = var_r31; + } + lbl_1_bss_358.unk04 = NULL; + lbl_1_bss_358.unk08 = NULL; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_2C[var_r31] = Hu3DModelCreateFile(lbl_1_data_F5C[var_r31]); + Hu3DModelAttrSet(lbl_1_bss_2C[var_r31], 1); + Hu3DModelAttrSet(lbl_1_bss_2C[var_r31], 0x40000003); + } + lbl_1_bss_28 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M450, 0x6C)); + HuSprAnimLock(lbl_1_bss_28); + lbl_1_bss_24 = Hu3DParManCreate(lbl_1_bss_28, 0x14, &lbl_1_data_1504); + Hu3DParManAttrSet(lbl_1_bss_24, 1); + lbl_1_bss_1A4 = omAddObjEx(lbl_1_bss_33C, 0x6E, 0, 0, -1, fn_1_24620); + lbl_1_bss_1A4->work[0] = 0x3E9; + lbl_1_bss_128 = 0.0f; +} + +void fn_1_298EC(omObjData *object) +{ + s32 var_r31; + + if (WipeStatGet() == 0) { + if (lbl_1_bss_2FE >= 0) { + MGSeqKill(lbl_1_bss_2FE); + } + if (lbl_1_bss_2FC >= 0) { + MGSeqKill(lbl_1_bss_2FC); + } + MGSeqKillAll(); + HuAudAllStop(); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + CharModelKill(lbl_1_data_0[GWPlayerCfg[var_r31].character]); + } + omOvlReturnEx(1, 1); + } +}