From 66ba618452d13a55e2b64b66ef26d91392e8bbd1 Mon Sep 17 00:00:00 2001 From: mrshigure Date: Wed, 15 May 2024 18:56:45 -0700 Subject: [PATCH] Matched REL/m405 + some code cleanup --- config/GMPE01_00/rels/m405Dll/symbols.txt | 268 +-- configure.py | 2 +- include/REL/present.h | 2 +- include/REL/w03Dll.h | 2 +- include/REL/w10Dll.h | 4 +- include/ext_math.h | 4 +- include/game/chrman.h | 2 +- include/game/hsfformat.h | 2 +- include/game/hsfman.h | 14 +- src/REL/E3setupDLL/mgselect.c | 3 +- src/REL/m404Dll/main.c | 10 +- src/REL/m405Dll/main.c | 2465 +++++++++++++++++++++ src/REL/m407dll/main.c | 4 +- src/REL/messDll/main.c | 2 +- src/REL/modeltestDll/main.c | 2 +- src/REL/modeltestDll/modeltest00.c | 2 +- src/REL/option/scene.c | 6 +- src/REL/option/state.c | 2 +- src/REL/present/init.c | 2 +- src/REL/present/present.c | 2 +- src/REL/subchrselDll/main.c | 6 +- src/REL/w03Dll/condor.c | 8 +- src/REL/w03Dll/statue.c | 11 +- src/REL/w05Dll/hotel.c | 8 +- src/game/THPDraw.c | 2 +- src/game/board/battle.c | 4 +- src/game/board/boo.c | 2 +- src/game/board/mg_setup.c | 4 +- src/game/board/view.c | 4 +- src/game/board/warp.c | 4 +- src/game/chrman.c | 2 +- src/game/hsfanim.c | 4 +- src/game/hsfdraw.c | 36 +- src/game/window.c | 4 +- 34 files changed, 2683 insertions(+), 216 deletions(-) create mode 100755 src/REL/m405Dll/main.c diff --git a/config/GMPE01_00/rels/m405Dll/symbols.txt b/config/GMPE01_00/rels/m405Dll/symbols.txt index d64b7049..9fbc2081 100644 --- a/config/GMPE01_00/rels/m405Dll/symbols.txt +++ b/config/GMPE01_00/rels/m405Dll/symbols.txt @@ -55,137 +55,137 @@ fn_1_81B4 = .text:0x000081B4; // type:function size:0x93C fn_1_8AF0 = .text:0x00008AF0; // type:function size:0x798 fn_1_9288 = .text:0x00009288; // type:function size:0x1A88 fn_1_AD10 = .text:0x0000AD10; // type:function size:0x3CC -fn_1_B0DC = .text:0x0000B0DC; // type:function size:0x4EC +ModuleProlog = .text:0x0000B0DC; // type:function size:0x4EC fn_1_B5C8 = .text:0x0000B5C8; // type:function size:0x16C _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size: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:0x1 data:byte -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x1 data:byte -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x1 data:byte -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float -lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float -lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float -lbl_1_data_0 = .data:0x00000000; // type:object size:0x10 +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:byte +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 scope:local data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_164 = .rodata:0x00000164; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x10 data:2byte lbl_1_data_10 = .data:0x00000010; // type:object size:0x30 data:2byte -lbl_1_data_40 = .data:0x00000040; // type:object size:0x60 -lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x48 -lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x1 data:byte -lbl_1_data_EC = .data:0x000000EC; // type:object size:0x14 -lbl_1_data_100 = .data:0x00000100; // type:object size:0xC -lbl_1_data_10C = .data:0x0000010C; // type:object size:0xC data:4byte -lbl_1_data_118 = .data:0x00000118; // type:object size:0xC data:4byte -lbl_1_data_124 = .data:0x00000124; // type:object size:0xC data:4byte -lbl_1_data_130 = .data:0x00000130; // type:object size:0xC data:4byte -lbl_1_data_13C = .data:0x0000013C; // type:object size:0xC data:4byte -lbl_1_data_148 = .data:0x00000148; // type:object size:0xC data:4byte -lbl_1_data_154 = .data:0x00000154; // type:object size:0xC -lbl_1_data_160 = .data:0x00000160; // type:object size:0xC +lbl_1_data_40 = .data:0x00000040; // type:object size:0x60 data:float +lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x40 data:float +lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x4 data:byte +lbl_1_data_EC = .data:0x000000EC; // type:object size:0x12 scope:local data:string +lbl_1_data_100 = .data:0x00000100; // type:object size:0xC data:float +lbl_1_data_10C = .data:0x0000010C; // type:object size:0xC data:float +lbl_1_data_118 = .data:0x00000118; // type:object size:0xC data:float +lbl_1_data_124 = .data:0x00000124; // type:object size:0xC data:float +lbl_1_data_130 = .data:0x00000130; // type:object size:0xC data:float +lbl_1_data_13C = .data:0x0000013C; // type:object size:0xC data:float +lbl_1_data_148 = .data:0x00000148; // type:object size:0xC data:float +lbl_1_data_154 = .data:0x00000154; // type:object size:0xC data:float +lbl_1_data_160 = .data:0x00000160; // type:object size:0xC data:float lbl_1_data_16C = .data:0x0000016C; // type:object size:0x4 -lbl_1_data_170 = .data:0x00000170; // type:object size:0xC -lbl_1_data_17C = .data:0x0000017C; // type:object size:0xC +lbl_1_data_170 = .data:0x00000170; // type:object size:0xC data:float +lbl_1_data_17C = .data:0x0000017C; // type:object size:0xC data:float lbl_1_data_188 = .data:0x00000188; // type:object size:0x100 lbl_1_data_288 = .data:0x00000288; // type:object size:0x8 lbl_1_data_290 = .data:0x00000290; // type:object size:0x20 @@ -193,20 +193,20 @@ lbl_1_data_2B0 = .data:0x000002B0; // type:object size:0x10 lbl_1_data_2C0 = .data:0x000002C0; // type:object size:0x50 lbl_1_data_310 = .data:0x00000310; // type:object size:0x18 data:4byte lbl_1_data_328 = .data:0x00000328; // type:object size:0x14 -lbl_1_data_33C = .data:0x0000033C; // type:object size:0xA -lbl_1_data_346 = .data:0x00000346; // type:object size:0xA +lbl_1_data_33C = .data:0x0000033C; // type:object size:0xA data:byte +lbl_1_data_346 = .data:0x00000346; // type:object size:0xA data:2byte lbl_1_data_350 = .data:0x00000350; // type:object size:0x8 lbl_1_data_358 = .data:0x00000358; // type:object size:0x8 lbl_1_data_360 = .data:0x00000360; // type:object size:0x8 lbl_1_data_368 = .data:0x00000368; // type:object size:0x8 lbl_1_data_370 = .data:0x00000370; // type:object size:0x50 lbl_1_data_3C0 = .data:0x000003C0; // type:object size:0x50 -lbl_1_data_410 = .data:0x00000410; // type:object size:0xC data:string -lbl_1_data_41C = .data:0x0000041C; // type:object size:0x16 data:string -lbl_1_data_432 = .data:0x00000432; // type:object size:0x1D data:string -lbl_1_data_44F = .data:0x0000044F; // type:object size:0x1D +lbl_1_data_410 = .data:0x00000410; // type:object size:0xC scope:local data:string +lbl_1_data_41C = .data:0x0000041C; // type:object size:0x16 scope:local data:string +lbl_1_data_432 = .data:0x00000432; // type:object size:0x1D scope:local data:string +lbl_1_data_44F = .data:0x0000044F; // type:object size:0x1B scope:local data:string jumptable_1_data_46C = .data:0x0000046C; // type:object size:0x24 scope:local -lbl_1_data_490 = .data:0x00000490; // type:object size:0x24 data:string +lbl_1_data_490 = .data:0x00000490; // type:object size:0x24 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x18 data:float lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x18 data:4byte lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x18 data:float @@ -223,7 +223,7 @@ lbl_1_bss_80 = .bss:0x00000080; // type:object size:0x4 data:float lbl_1_bss_84 = .bss:0x00000084; // type:object size:0x2 data:2byte lbl_1_bss_88 = .bss:0x00000088; // type:object size:0x4 data:4byte lbl_1_bss_8C = .bss:0x0000008C; // type:object size:0x2 data:2byte -lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x8 data:4byte +lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x4 data:4byte lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x4 data:4byte lbl_1_bss_9C = .bss:0x0000009C; // type:object size:0x4 data:4byte lbl_1_bss_A0 = .bss:0x000000A0; // type:object size:0x4 data:4byte diff --git a/configure.py b/configure.py index 9a835e91..881991ca 100644 --- a/configure.py +++ b/configure.py @@ -820,7 +820,7 @@ config.libs = [ ), Rel('m405Dll', objects = { - Object(NonMatching, "REL/m405Dll/main.c"), + Object(Matching, "REL/m405Dll/main.c"), } ), Rel('m406Dll', diff --git a/include/REL/present.h b/include/REL/present.h index af9b3a01..12706b86 100644 --- a/include/REL/present.h +++ b/include/REL/present.h @@ -133,7 +133,7 @@ typedef struct UnkPresentNestedInnerStruct { typedef struct UnkPresentNestedOuterStruct { /* 0x00 */ s32 unk00; - /* 0x04 */ UnkPresentNestedInnerStruct unk_04[11]; + /* 0x04 */ UnkPresentNestedInnerStruct unk_04[11]; } UnkPresentNestedOuterStruct; typedef struct UnkPresentStruct7 { diff --git a/include/REL/w03Dll.h b/include/REL/w03Dll.h index bce4bba4..36e741d7 100644 --- a/include/REL/w03Dll.h +++ b/include/REL/w03Dll.h @@ -8,7 +8,7 @@ #define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0])) enum { - MAPOBJ_MAX = 12 + MAPOBJ_MAX = 12 }; typedef struct w03UnkStruct2{ diff --git a/include/REL/w10Dll.h b/include/REL/w10Dll.h index c2730003..f5144a93 100644 --- a/include/REL/w10Dll.h +++ b/include/REL/w10Dll.h @@ -5,8 +5,8 @@ #include "game/window.h" enum { - MAPOBJ_MELON = 0, - MAPOBJ_MAX, + MAPOBJ_MELON = 0, + MAPOBJ_MAX, }; typedef struct w10_board_work { diff --git a/include/ext_math.h b/include/ext_math.h index b9f396c8..ac88df13 100644 --- a/include/ext_math.h +++ b/include/ext_math.h @@ -5,8 +5,8 @@ #include "dolphin/mtx.h" typedef struct vec2f { - float x; - float y; + float x; + float y; } Vec2f; #define ABS(x) (((x) < 0) ? -(x) : (x)) diff --git a/include/game/chrman.h b/include/game/chrman.h index d305e3a6..60021a15 100755 --- a/include/game/chrman.h +++ b/include/game/chrman.h @@ -42,6 +42,6 @@ void fn_8004F52C(s16 character, s32 arg1); void CharModelEffectEnableSet(s16 character, s32 arg1); s32 CharModelEffectNpcInit(s16 arg0, s16 arg1, s16 arg2, s16 arg3); s32 CharModelEffectNpcInitSilent(s16 arg0, s16 arg1, s16 arg2); -s32 CharModelStepTypeSet(s16 character, s32 arg1); +void CharModelStepTypeSet(s16 character, s32 arg1); #endif diff --git a/include/game/hsfformat.h b/include/game/hsfformat.h index 56c35fcb..8b804b06 100644 --- a/include/game/hsfformat.h +++ b/include/game/hsfformat.h @@ -150,7 +150,7 @@ typedef struct hsf_face { s16 mat; union { struct { - s16 indices[3][4]; + s16 indices[3][4]; u32 count; s16 *data; } strip; diff --git a/include/game/hsfman.h b/include/game/hsfman.h index f90b11db..704648c6 100644 --- a/include/game/hsfman.h +++ b/include/game/hsfman.h @@ -38,9 +38,9 @@ typedef struct model_data { u32 motion_attr; Point3d unk_58; f32 unk_64; - f32 unk_68; - f32 unk_6C; - f32 unk_70; + f32 unk_68; + f32 unk_6C; + f32 unk_70; f32 unk_74; f32 unk_78; f32 unk_7C; @@ -55,10 +55,10 @@ typedef struct model_data { f32 unk_A0; f32 unk_A4[4]; f32 unk_B4[4]; - union { - HsfData *hsfData; - ModelHookFunc hook; - }; + union { + HsfData *hsfData; + ModelHookFunc hook; + }; HsfData *unk_C8; Vec pos; Vec rot; diff --git a/src/REL/E3setupDLL/mgselect.c b/src/REL/E3setupDLL/mgselect.c index 1c9213b4..ba636a75 100644 --- a/src/REL/E3setupDLL/mgselect.c +++ b/src/REL/E3setupDLL/mgselect.c @@ -5,6 +5,7 @@ #include "game/objsub.h" #include "game/sprite.h" #include "game/window.h" +#include "game/wipe.h" #include "rel_sqrt_consts.h" #include "REL/E3SetupDLL.h" @@ -69,7 +70,7 @@ void E3MGSelectInit() mgPicObj = omAddObjEx(var_r31, 31, 0, 0, -1, CreateMGPic); mgPicObj->work[0] = mgDefault; E3LightInit(); - WipeCreate(1, 0, -1); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); } s16 lbl_2_data_36[] = { 0x0023, 0x0026, 0x0029, 0x002C }; diff --git a/src/REL/m404Dll/main.c b/src/REL/m404Dll/main.c index f86f6e35..e5d8f8ba 100644 --- a/src/REL/m404Dll/main.c +++ b/src/REL/m404Dll/main.c @@ -281,7 +281,7 @@ void fn_1_39C(omObjData *object) { fn_1_37C(0); lbl_1_bss_24 = 60; - WipeCreate(1, 0, 60); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); object->func = fn_1_400; } @@ -326,7 +326,7 @@ void fn_1_400(omObjData *object) if (!MGSeqStatGet(lbl_1_bss_C)) { fn_1_37C(5); WipeColorSet(255, 255, 255); - WipeCreate(2, 0, 30); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); lbl_1_bss_24 = 60; } case 5: @@ -334,7 +334,7 @@ void fn_1_400(omObjData *object) break; } fn_1_37C(6); - WipeCreate(1, 0, 60); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); break; case 6: if (WipeStatGet()) { @@ -362,14 +362,14 @@ void fn_1_400(omObjData *object) if (--lbl_1_bss_24) { break; } - WipeCreate(2, 0, 60); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); object->func = fn_1_784; break; default: break; } if (omSysExitReq && !WipeStatGet()) { - WipeCreate(2, 0, 60); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); object->func = fn_1_784; } } diff --git a/src/REL/m405Dll/main.c b/src/REL/m405Dll/main.c new file mode 100755 index 00000000..41783a22 --- /dev/null +++ b/src/REL/m405Dll/main.c @@ -0,0 +1,2465 @@ +#include "REL/executor.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/esprite.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/flag.h" +#include "game/frand.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/process.h" +#include "game/sprite.h" +#include "game/wipe.h" + +#include "dolphin.h" +#include "ext_math.h" +#include "rel_sqrt_consts.h" + +#undef ABS +#define ABS(x) ((0 > (x)) ? -(x) : (x)) + +typedef struct unk_bss_790_struct { + /* 0x00 */ u16 unk00; + /* 0x02 */ s16 unk02; + /* 0x04 */ struct unk_bss_790_struct *unk04; + /* 0x08 */ struct unk_bss_790_struct *unk08; +} UnkBss790Struct; // Size 0xC + +typedef struct unk_bss_778_struct { + /* 0x00 */ HsfanimStruct00 *unk00; + /* 0x04 */ s32 *unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ struct unk_bss_778_struct *unk10; + /* 0x14 */ struct unk_bss_778_struct *unk14; +} UnkBss778Struct; // Size 0x18 + +typedef struct { + /* 0x00 */ u32 unk00; + /* 0x04 */ s16 unk04; + /* 0x06 */ char unk06[2]; // padding? +} UnkBss5E8Struct; // Size 8 + +typedef struct { + /* 0x00 */ Vec unk00; + /* 0x0C */ Vec unk0C; + /* 0x18 */ float unk18; + /* 0x1C */ float unk1C; + /* 0x20 */ float unk20; + /* 0x24 */ float unk24; + /* 0x28 */ s32 unk28; + /* 0x2C */ u8 unk2C; + /* 0x2D */ u8 unk2D; + /* 0x2E */ char unk2E[2]; + /* 0x30 */ float *unk30; + /* 0x34 */ u16 *unk34; +} UnkFn2480Struct; // Size 0x38 + +typedef struct { + /* 0x00 */ Vec unk00; + /* 0x0C */ float unk0C; +} UnkBssACStruct; // Size 0x10 + +typedef struct { + /* 0x00 */ Vec *unk00; + /* 0x04 */ Vec *unk04; + /* 0x08 */ u8 (*unk08)[0xC]; // Vec? + /* 0x0C */ u16 (*unk0C)[4]; + /* 0x10 */ UnkFn2480Struct *unk10; + /* 0x14 */ Vec *unk14; + /* 0x18 */ Vec *unk18; + /* 0x1C */ GXColor *unk1C; + /* 0x20 */ float (*unk20)[2]; + /* 0x24 */ void *unk24; + /* 0x28 */ u32 unk28; +} UnkBss5ACStruct; // Size unknown + +typedef struct { + /* 0x00 */ void *unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ u16 unk08; + /* 0x0A */ u16 unk0A; + /* 0x0C */ GXBool unk0C; + /* 0x0D */ char unk0D[3]; // padding? +} UnkBss10Struct; // Size 0x10 + +typedef struct { + /* 0x00 */ float unk00; + /* 0x04 */ s32 unk04; +} UnkBssA4InnerStruct; // Size 8 + +typedef struct { + /* 0x000 */ UnkBssA4InnerStruct *unk00; + /* 0x004 */ s32 unk04; + /* 0x008 */ s32 unk08; + /* 0x00C */ s32 unk0C[10]; + /* 0x034 */ float unk34; + /* 0x038 */ float unk38; + /* 0x03C */ float unk3C; + /* 0x040 */ float unk40; + /* 0x044 */ s32 unk44; + /* 0x048 */ s32 unk48; + /* 0x04C */ Vec unk4C; + /* 0x058 */ float unk58; + /* 0x05C */ float unk5C; + /* 0x060 */ float unk60; + /* 0x064 */ float unk64; + /* 0x068 */ float unk68; + /* 0x06C */ float unk6C; + /* 0x070 */ float unk70; + /* 0x074 */ float unk74; + /* 0x078 */ u16 unk78; + /* 0x07A */ char unk7A[2]; + /* 0x07C */ s32 unk7C; + /* 0x080 */ s32 unk80; + /* 0x084 */ s32 unk84; + /* 0x088 */ s32 unk88; + /* 0x08C */ s32 unk8C; + /* 0x090 */ s32 unk90; + /* 0x094 */ s32 unk94; + /* 0x098 */ s32 unk98; + /* 0x09C */ s32 unk9C; + /* 0x0A0 */ Vec unkA0[5]; + /* 0x0DC */ s32 unkDC[5]; + /* 0x0F0 */ s16 unkF0[5]; + /* 0x0FA */ char unkFA[2]; + /* 0x0FC */ float unkFC; + /* 0x100 */ s32 unk100; + /* 0x104 */ s32 unk104; + /* 0x108 */ s32 unk108; + /* 0x10C */ s32 unk10C; + /* 0x110 */ s32 unk110; +} UnkBssA4Data; // Size 0x114 + +// Functions fn_1_0..fn_1_1FC4 are identical to the ones in m402Dll. +// lbl_1_bss_790..lbl_1_bss_5E8 seems to be the same as well. + +void fn_1_0(void); +void fn_1_24(u16 arg0, s16 arg1); +s16 fn_1_AC(s16 arg0); +void fn_1_150(void); +void fn_1_174(s16 arg0, HsfanimStruct00 *arg1, s32 arg2, s32 arg3, s32 arg4, Vec *arg5, u8 arg6); +void fn_1_2D8(void); +void fn_1_414(void); +s16 fn_1_46C(s32 arg0); +void fn_1_580(s32 *arg0, s32 arg1, s32 arg2); +void fn_1_798(s32 arg0); +void fn_1_9EC(void); +void fn_1_A40(void); +void fn_1_B4C(float arg0, s32 arg1); +void fn_1_11F4(float arg0, Vec *arg1, Vec *arg2, Vec *arg3); +void fn_1_1350(Vec *arg0, Vec *arg1, Vec *arg2); +s32 fn_1_13DC(float arg0, Vec *arg1); +void fn_1_1710(float arg0, Vec *arg1); +void fn_1_1A60(Vec *arg0, s16 arg1, Vec *arg2); +void fn_1_1D18(s16 arg0, char *arg1, Vec *arg2); +void fn_1_1D70(s16 arg0, char *arg1, Vec *arg2, Mtx arg3); +float fn_1_1E20(float arg0, float arg1, float arg2); +void fn_1_1F24(s32 arg0); +void fn_1_1F58(s32 arg0); +void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3); +s32 fn_1_23B4(Vec *arg0); +void fn_1_2480(UnkFn2480Struct *arg0, float arg1, float arg2); +void fn_1_2508(UnkFn2480Struct *arg0); +void fn_1_2714(u8 arg0, s32 arg1); +void fn_1_280C(omObjData *arg0); +void fn_1_2AAC(omObjData *arg0); +void fn_1_37A4(ModelData *arg0, Mtx arg1); +void fn_1_3F1C(ModelData *arg0, Mtx arg1); +void fn_1_3F40(ModelData *arg0, Mtx arg1); +void fn_1_4024(ModelData *arg0, Mtx arg1); +void fn_1_4700(ModelData *arg0, Mtx arg1); +void fn_1_4F28(omObjData *arg0); +void fn_1_5404(omObjData *arg0); +void fn_1_5530(Vec *arg0, s32 arg1); +void fn_1_557C(Vec *arg0, float arg1, s32 arg2, s32 arg3); +float fn_1_5664(Vec *arg0); +void fn_1_57FC(void); +void fn_1_58A0(omObjData *arg0); +void fn_1_5B28(omObjData *arg0); +void fn_1_5D3C(UnkBssA4Data *arg0, Vec *arg1); +void fn_1_5DCC(UnkBssA4Data *arg0); +void fn_1_6040(UnkBssA4Data *arg0, omObjData *arg1); +void fn_1_65BC(UnkBssA4Data *arg0); +void fn_1_6828(UnkBssA4Data *arg0); +u16 fn_1_68CC(UnkBssA4Data *arg0); +void fn_1_6BFC(omObjData *arg0); +void fn_1_798C(omObjData *arg0); +void fn_1_81B4(omObjData *arg0); +void fn_1_8AF0(void); +void fn_1_9288(omObjData *arg0); +void fn_1_AD10(omObjData *arg0); +void fn_1_B5C8(omObjData *arg0); + +UnkBss790Struct lbl_1_bss_790; +UnkBss778Struct lbl_1_bss_778; +Process *lbl_1_bss_774; +Vec lbl_1_bss_768; +Vec lbl_1_bss_75C; +Vec lbl_1_bss_750; +Vec lbl_1_bss_744; +u32 lbl_1_bss_740; +s32 lbl_1_bss_73C; +u32 lbl_1_bss_738; +s16 lbl_1_bss_736; +s16 lbl_1_bss_734; +s32 lbl_1_bss_730; +s32 lbl_1_bss_72C; +float lbl_1_bss_728; +s32 lbl_1_bss_6E8[16]; +UnkBss5E8Struct lbl_1_bss_5E8[32]; +AnimData *lbl_1_bss_5E4; +AnimData *lbl_1_bss_5E0; +AnimData *lbl_1_bss_5DC; +AnimData *lbl_1_bss_5D8; +UnkBss5ACStruct lbl_1_bss_5AC; +UnkBssACStruct lbl_1_bss_AC[80]; +u8 lbl_1_bss_A8; +omObjData **lbl_1_bss_A4; +omObjData *lbl_1_bss_A0; +omObjData *lbl_1_bss_9C; +omObjData *lbl_1_bss_98; +u8 lbl_1_bss_94_unused[4]; +AnimData *lbl_1_bss_90; +s16 lbl_1_bss_8C; +AnimData *lbl_1_bss_88; +s16 lbl_1_bss_84; +float lbl_1_bss_80; +s32 lbl_1_bss_7C; +s32 lbl_1_bss_78; +s32 lbl_1_bss_74; +float lbl_1_bss_70; +float lbl_1_bss_6C; +s32 lbl_1_bss_68; +s32 lbl_1_bss_64; +s32 lbl_1_bss_60; +Vec lbl_1_bss_48[2]; +Vec lbl_1_bss_30[2]; +Vec lbl_1_bss_18[2]; +Vec lbl_1_bss_0[2]; + +s16 lbl_1_data_0[] = { 0, 1, 2, 3, 4, 5, 6, 7 }; + +UnkBss10Struct lbl_1_data_10[] = { + { NULL, 0, 640, 480, GX_FALSE }, + { NULL, 0, 640, 480, GX_FALSE }, + { NULL, 0, 320, 240, GX_TRUE } +}; + +Vec lbl_1_data_40[] = { + { -450.0f, 0.0f, 0.0f }, + { -450.0f, 0.0f, 0.0f }, + { -150.0f, 0.0f, 0.0f }, + { -150.0f, 0.0f, 0.0f }, + { 150.0f, 0.0f, 0.0f }, + { 150.0f, 0.0f, 0.0f }, + { 450.0f, 0.0f, 0.0f }, + { 450.0f, 0.0f, 0.0f } +}; + +float lbl_1_data_A0[] = { + -600.0f, 300.0f, + -600.0f, 300.0f, + -300.0f, 300.0f, + -300.0f, 300.0f, + 0.0f, 300.0f, + 0.0f, 300.0f, + 300.0f, 300.0f, + 300.0f, 300.0f +}; + +u8 lbl_1_data_E0_unused[] = { + 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0x08, 0x08, 0xFF +}; + +GXColor lbl_1_data_E8 = { 0xD8, 0xE2, 0xE5, 0x10 }; + +void fn_1_0(void) { + lbl_1_bss_790.unk04 = NULL; + lbl_1_bss_790.unk08 = NULL; +} + +void fn_1_24(u16 arg0, s16 arg1) { + UnkBss790Struct *temp_r31; + UnkBss790Struct *temp_r30; + UnkBss790Struct *temp_r29; + + temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r31), MEMORY_DEFAULT_NUM); + temp_r31->unk00 = arg0; + temp_r31->unk02 = arg1; + temp_r30 = &lbl_1_bss_790; + temp_r29 = temp_r30->unk08; + temp_r30->unk08 = temp_r31; + if (NULL != temp_r29) { + temp_r29->unk04 = temp_r31; + } + temp_r31->unk04 = temp_r30; + temp_r31->unk08 = temp_r29; +} + +s16 fn_1_AC(s16 arg0) { + UnkBss790Struct *var_r31; + UnkBss790Struct *temp_r29; + UnkBss790Struct *temp_r30; + s16 temp_r28; + + var_r31 = lbl_1_bss_790.unk08; + while (NULL != var_r31) { + if (arg0 == var_r31->unk00) { + temp_r28 = var_r31->unk02; + temp_r29 = var_r31->unk04; + temp_r30 = var_r31->unk08; + temp_r29->unk08 = temp_r30; + if (NULL != temp_r30) { + temp_r30->unk04 = temp_r29; + } + HuMemDirectFree(var_r31); + return temp_r28; + } + var_r31 = var_r31->unk08; + } + return -1; +} + +void fn_1_150(void) { + lbl_1_bss_778.unk10 = NULL; + lbl_1_bss_778.unk14 = NULL; +} + +void fn_1_174(s16 arg0, HsfanimStruct00 *arg1, s32 arg2, s32 arg3, s32 arg4, Vec *arg5, u8 arg6) { + UnkBss778Struct *temp_r27; + UnkBss778Struct *var_r31; + UnkBss778Struct *temp_r28; + s32 i; + + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*var_r31), MEMORY_DEFAULT_NUM); + var_r31->unk00 = arg1; + var_r31->unk08 = arg3; + var_r31->unk0C = arg4; + var_r31->unk04 = HuMemDirectMallocNum(HEAP_SYSTEM, arg4 * sizeof(*var_r31->unk04), MEMORY_DEFAULT_NUM); + for (i = 0; i < arg4; i++, arg5++) { + var_r31->unk04[i] = Hu3DParManLink(arg0, arg1); + if (var_r31->unk04[i] >= 0) { + Hu3DParManAttrReset(var_r31->unk04[i], 1); + Hu3DParManPosSet(var_r31->unk04[i], arg5->x, arg5->y, arg5->z); + Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(var_r31->unk04[i]), arg6); + Hu3DModelLayerSet(Hu3DParManModelIDGet(var_r31->unk04[i]), arg2); + } + } + temp_r28 = &lbl_1_bss_778; + temp_r27 = temp_r28->unk14; + temp_r28->unk14 = var_r31; + if (NULL != temp_r27) { + temp_r27->unk10 = var_r31; + } + var_r31->unk10 = temp_r28; + var_r31->unk14 = temp_r27; +} + +void fn_1_2D8(void) { + UnkBss778Struct *var_r31; + UnkBss778Struct *temp_r28; + UnkBss778Struct *temp_r29; + s32 i; + + var_r31 = lbl_1_bss_778.unk14; + while (NULL != var_r31) { + var_r31->unk08--; + if (var_r31->unk08 == 0) { + for (i = 0; i < var_r31->unk0C; i++) { + if (var_r31->unk04[i] >= 0) { + Hu3DParManAttrSet(var_r31->unk04[i], 1); + } + } + } + temp_r28 = var_r31->unk10; + temp_r29 = var_r31->unk14; + if (-var_r31->unk00->unk00 > var_r31->unk08) { + for (i = 0; i < var_r31->unk0C; i++) { + if (var_r31->unk04[i] >= 0) { + Hu3DParManKill(var_r31->unk04[i]); + } + } + temp_r28->unk14 = temp_r29; + if (NULL != temp_r29) { + temp_r29->unk10 = temp_r28; + } + HuMemDirectFree(var_r31->unk04); + HuMemDirectFree(var_r31); + } + var_r31 = temp_r29; + } +} + +void fn_1_414(void) { + s32 i; + + for (i = 0; i < 32; i++) { + lbl_1_bss_5E8[i].unk00 = 0; + lbl_1_bss_5E8[i].unk04 = -1; + } +} + +s16 fn_1_46C(s32 arg0) { + s32 i; + + for (i = 0; i < 32; i++) { + if (arg0 == lbl_1_bss_5E8[i].unk00) { + return Hu3DModelLink(lbl_1_bss_5E8[i].unk04); + } + } + for (i = 0; i < 32; i++) { + if (lbl_1_bss_5E8[i].unk00 == 0) { + lbl_1_bss_5E8[i].unk00 = arg0; + lbl_1_bss_5E8[i].unk04 = Hu3DModelCreateFile(arg0); + return lbl_1_bss_5E8[i].unk04; + } + } + return Hu3DModelCreateFile(arg0); +} + +void fn_1_580(s32 *arg0, s32 arg1, s32 arg2) { + s32 var_r30; + + espBankSet(arg0[arg1 + 1], 10); + espBankSet(arg0[arg1 + 4], 11); + if (36000 <= arg2) { + arg2 = 35999; + } + var_r30 = arg2 / 3600; + arg2 -= var_r30 * 3600; + if (var_r30 > 9) { + var_r30 = 9; + } + espBankSet(arg0[arg1], var_r30); + var_r30 = arg2 / 60; + arg2 -= var_r30 * 60; + espBankSet(arg0[arg1 + 2], var_r30 / 10); + espBankSet(arg0[arg1 + 3], var_r30 % 10); + var_r30 = 101.5f * arg2 / 60.0f; + espBankSet(arg0[arg1 + 5], var_r30 / 10); + espBankSet(arg0[arg1 + 6], var_r30 % 10); +} + +void fn_1_798(s32 arg0) { + lbl_1_bss_728 = 0.0f; + lbl_1_bss_738 = lbl_1_bss_73C; + GWMGRecordSet(arg0, lbl_1_bss_738); + fn_1_580(lbl_1_bss_6E8, 7, lbl_1_bss_73C); +} + +void fn_1_9EC(void) { + s32 i; + + for (i = 0; i < 16; i++) { + espDispOn(lbl_1_bss_6E8[i]); + } +} + +void fn_1_A40(void) { + float temp_f31; + s32 i; + + if (0.0f <= lbl_1_bss_728) { + lbl_1_bss_728 += 16.0f; + temp_f31 = 1.0 + 0.2f * sind(lbl_1_bss_728); + for (i = 7; i <= 14; i++) { + espScaleSet(lbl_1_bss_6E8[i], temp_f31, temp_f31); + } + } +} + +void fn_1_B4C(float arg0, s32 arg1) { + float temp_f30; + float temp_f31; + s32 i; + + temp_f31 = 288.0f; + temp_f30 = arg0; + lbl_1_bss_6E8[15] = espEntry(arg1, 0, 0); + espTPLvlSet(lbl_1_bss_6E8[15], 0.5f); + espColorSet(lbl_1_bss_6E8[15], 0, 0, 0); + espPosSet(lbl_1_bss_6E8[15], temp_f31, temp_f30); + temp_f31 = 248.0f; + temp_f30 = arg0 - 8.0f; + lbl_1_bss_6E8[14] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 55), 0, 0); + espPosSet(lbl_1_bss_6E8[14], temp_f31 - 18.0f, temp_f30); + for (i = 7; i <= 13; i++) { + lbl_1_bss_6E8[i] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 48), 0, 0); + espPosSet(lbl_1_bss_6E8[i], temp_f31, temp_f30); + temp_f31 += 16.0f; + } + fn_1_580(lbl_1_bss_6E8, 7, lbl_1_bss_738); + temp_f31 = 248.0f; + temp_f30 = arg0 + 8.0f; + for (i = 0; i <= 6; i++) { + lbl_1_bss_6E8[i] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 49), 0, 0); + espPosSet(lbl_1_bss_6E8[i], temp_f31, temp_f30); + temp_f31 += 16.0f; + } + fn_1_580(lbl_1_bss_6E8, 0, 0); + for (i = 0; i < 16; i++) { + espDrawNoSet(lbl_1_bss_6E8[i], 0); + espDispOff(lbl_1_bss_6E8[i]); + espAttrSet(lbl_1_bss_6E8[i], HUSPR_ATTR_NOANIM); + espPriSet(lbl_1_bss_6E8[i], 0x80 + i); + } +} + +void fn_1_11F4(float arg0, Vec *arg1, Vec *arg2, Vec *arg3) { + float temp_f31; + + if (1.0f < arg0) { + arg0 = 1.0f; + } + temp_f31 = sind(90.0f * arg0) * sind(90.0f * arg0); + arg3->x = arg1->x + temp_f31 * (arg2->x - arg1->x); + arg3->y = arg1->y + temp_f31 * (arg2->y - arg1->y); + arg3->z = arg1->z + temp_f31 * (arg2->z - arg1->z); +} + +void fn_1_1350(Vec *arg0, Vec *arg1, Vec *arg2) { + Hu3DCameraPosSetV(1, arg0, arg1, arg2); + lbl_1_bss_768 = *arg0; + lbl_1_bss_750 = *arg2; +} + +s32 fn_1_13DC(float arg0, Vec *arg1) { + Vec sp18; + Vec spC; + + fn_1_11F4(arg0, &lbl_1_bss_768, &lbl_1_bss_75C, &sp18); + fn_1_11F4(arg0, &lbl_1_bss_750, &lbl_1_bss_744, &spC); + Hu3DCameraPosSetV(1, &sp18, arg1, &spC); + if (1.0f <= arg0) { + return 1; + } else { + lbl_1_bss_72C = 1; + return 0; + } +} + +void fn_1_1710(float arg0, Vec *arg1) { + Vec sp18; + Vec spC; + + fn_1_11F4(arg0, &lbl_1_bss_768, &lbl_1_bss_75C, &sp18); + fn_1_11F4(arg0, &lbl_1_bss_750, &lbl_1_bss_744, &spC); + fn_1_1350(&sp18, arg1, &spC); + lbl_1_bss_72C = 1; +} + +void fn_1_1A60(Vec *arg0, s16 arg1, Vec *arg2) { + Mtx sp1C; + Vec sp10; + float temp_f30; + float temp_f29; + float temp_f28; + float temp_f31; + CameraData *temp_r31; + s32 i; + + for (i = 0; i < 16; i++) { + if (arg1 & (1 << i)) { + break; + } + } + temp_r31 = &Hu3DCamera[i]; + C_MTXLookAt(sp1C, &temp_r31->pos, &temp_r31->up, &temp_r31->target); + PSMTXMultVec(sp1C, arg0, &sp10); + temp_f30 = sp10.z * (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2)) * temp_r31->aspect; + temp_f29 = sp10.z * (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2)); + temp_f28 = 0.9f * temp_r31->viewport_x; + temp_f31 = 0.9f * temp_r31->viewport_w; + arg2->x = temp_f31 / 2 + sp10.x * ((temp_f31 / 2) / -temp_f30) + temp_f28; + arg2->y = temp_r31->viewport_h / 2 + sp10.y * ((temp_r31->viewport_h / 2) / temp_f29) + temp_r31->viewport_y; + arg2->z = 0.0f; +} + +void fn_1_1D18(s16 arg0, char *arg1, Vec *arg2) { + Mtx sp10; + + Hu3DModelObjMtxGet(arg0, arg1, sp10); + arg2->x = sp10[0][3]; + arg2->y = sp10[1][3]; + arg2->z = sp10[2][3]; +} + +void fn_1_1D70(s16 arg0, char *arg1, Vec *arg2, Mtx arg3) { + Mtx spC; + ModelData *var_r30; + + var_r30 = &Hu3DData[arg0]; + Hu3DModelObjMtxGet(arg0, arg1, spC); + PSMTXConcat(var_r30->unk_F0, spC, spC); + if (NULL != arg3) { + PSMTXCopy(spC, arg3); + } + arg2->x = spC[0][3]; + arg2->y = spC[1][3]; + arg2->z = spC[2][3]; +} + +float fn_1_1E20(float arg0, float arg1, float arg2) { + float var_f31; + float var_f30; + + var_f31 = fmod(arg1 - arg0, 360.0); + if (0.0f > var_f31) { + var_f31 += 360.0f; + } + if (180.0f < var_f31) { + var_f31 -= 360.0f; + } + var_f30 = fmod(arg0 + var_f31 * arg2, 360.0); + if (0.0f > var_f30) { + var_f30 += 360.0f; + } + return var_f30; +} + +void fn_1_1F24(s32 arg0) { + lbl_1_bss_730 = HuAudSeqPlay(arg0); +} + +void fn_1_1F58(s32 arg0) { + if (lbl_1_bss_730 >= 0) { + if (arg0 < 0) { + arg0 = 1000; + } + HuAudSeqFadeOut(lbl_1_bss_730, arg0); + } + lbl_1_bss_730 = -1; +} + +void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3) { + Vec sp18; + float var_f28; + s32 var_r30; + + sp18.x = 0.0f; + sp18.y = 0.0f; + sp18.z = 0.0f; + sp18.x = arg2 / 4.0f; + sp18.z = -(float) arg3 / 4.0f; + var_r30 = 0; + var_f28 = VECMagXZ(&sp18); + if (0.5f <= var_f28) { + if (10.0f <= var_f28) { + sp18.x /= var_f28; + sp18.z /= var_f28; + var_f28 = 10.0f; + sp18.x = 10.0f * sp18.x; + sp18.z = 10.0f * sp18.z; + } + *arg1 = fn_1_1E20(*arg1, atan2d(sp18.x, sp18.z), 0.4f); + if (8.0f <= var_f28) { + var_r30 = 2; + } else { + var_r30 = 1; + } + } + PSVECAdd((Vec*) &arg0, &sp18, (Vec*) &arg0); +} + +s32 fn_1_23B4(Vec *arg0) { + float var_f31; + float var_f30; + s32 var_r31; + s32 var_r30; + + var_f31 = 41.37931f; + var_f30 = 86.206894f; + var_r31 = (arg0->x + var_f31 / 2 + 600.0f) / var_f31; + var_r30 = (arg0->z + var_f30 / 2 + 1250.0f) / var_f30; + return var_r31 + var_r30 * 30; +} + +void fn_1_2480(UnkFn2480Struct *arg0, float arg1, float arg2) { + Vec *var_r31; + s32 i; + + arg0->unk28 = 0; + var_r31 = lbl_1_bss_5AC.unk00; + for (i = 0; i < 900; i++, var_r31++) { + if (arg1 <= var_r31->x && arg2 >= var_r31->x) { + arg0->unk34[arg0->unk28] = i; + arg0->unk28++; + } + } +} + +void fn_1_2508(UnkFn2480Struct *arg0) { + Vec spC; + Vec *temp_r29; + float* var_r30; + u16 *var_r28; + u32 i; + + if (arg0->unk2D == 3) { + return; + } + if (arg0->unk2D == 2) { + arg0->unk2D = 3; + } + var_r28 = arg0->unk34; + var_r30 = arg0->unk30; + for (i = 0; i < arg0->unk28; i++, var_r28++, var_r30++) { + temp_r29 = &lbl_1_bss_5AC.unk00[*var_r28]; + PSVECSubtract(temp_r29, &arg0->unk0C, &spC); + *var_r30 = VECMagXZ(&spC); + if (arg0->unk2D == 0 && arg0->unk0C.z > temp_r29->z) { + *var_r30 *= -1.0f; + } + if (arg0->unk2D == 1 && arg0->unk0C.z < temp_r29->z) { + *var_r30 *= -1.0f; + } + } +} + +void fn_1_2714(u8 arg0, s32 arg1) { + GXColor sp14 = { 0x1E, 0x66, 0xA2, 0xFF }; + UnkBss10Struct *temp_r31; + + temp_r31 = &lbl_1_data_10[arg0]; + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_TRUE); + GXSetTexCopySrc(0, 0, 640, 480); + GXSetTexCopyDst(temp_r31->unk08, temp_r31->unk0A, GX_TF_RGB565, temp_r31->unk0C); + GXSetCopyClear(sp14, 0xFFFFFF); + GXCopyTex(temp_r31->unk00, arg1); + DCFlushRange(temp_r31->unk00, temp_r31->unk04); +} + +void fn_1_280C(omObjData *arg0) { + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + Vec *var_r27; + Vec *var_r26; + Vec *var_r25; + Vec *temp_r28; + Vec *var_r30; + u16 (*var_r31)[4]; + s32 i; + + var_r27 = lbl_1_bss_5AC.unk00; + var_r26 = lbl_1_bss_5AC.unk04; + var_r25 = lbl_1_bss_5AC.unk14; + for (i = 0; i < 900; i++) { + PSVECAdd(var_r27, var_r26, var_r25); + var_r27++; + var_r26++; + var_r25++; + } + temp_r28 = lbl_1_bss_5AC.unk14; + var_r31 = lbl_1_bss_5AC.unk0C; + var_r30 = lbl_1_bss_5AC.unk18; + memset(lbl_1_bss_5AC.unk18, 0, 900 * sizeof(*lbl_1_bss_5AC.unk18)); + for (i = 0; i < 841; i++) { + PSVECSubtract(&temp_r28[(*var_r31)[1]], &temp_r28[(*var_r31)[0]], &sp2C); + PSVECSubtract(&temp_r28[(*var_r31)[3]], &temp_r28[(*var_r31)[0]], &sp20); + PSVECSubtract(&temp_r28[(*var_r31)[2]], &temp_r28[(*var_r31)[0]], &sp14); + PSVECCrossProduct(&sp2C, &sp20, &sp8); + PSVECNormalize(&sp8, &sp8); + PSVECAdd(&sp8, &var_r30[(*var_r31)[0]], &var_r30[(*var_r31)[0]]); + PSVECAdd(&sp8, &var_r30[(*var_r31)[1]], &var_r30[(*var_r31)[1]]); + PSVECAdd(&sp8, &var_r30[(*var_r31)[3]], &var_r30[(*var_r31)[3]]); + PSVECCrossProduct(&sp20, &sp14, &sp8); + PSVECNormalize(&sp8, &sp8); + PSVECAdd(&sp8, &var_r30[(*var_r31)[0]], &var_r30[(*var_r31)[0]]); + PSVECAdd(&sp8, &var_r30[(*var_r31)[3]], &var_r30[(*var_r31)[3]]); + PSVECAdd(&sp8, &var_r30[(*var_r31)[2]], &var_r30[(*var_r31)[2]]); + var_r31++; + } + for (i = 0; i < 900; i++, var_r30++) { + PSVECNormalize(var_r30, var_r30); + } + DCStoreRangeNoSync(lbl_1_bss_5AC.unk14, 900 * sizeof(*lbl_1_bss_5AC.unk14)); + DCStoreRangeNoSync(lbl_1_bss_5AC.unk18, 900 * sizeof(*lbl_1_bss_5AC.unk18)); + DCStoreRangeNoSync(lbl_1_bss_5AC.unk1C, 900 * sizeof(*lbl_1_bss_5AC.unk1C)); + DCStoreRangeNoSync(lbl_1_bss_5AC.unk20, 900 * sizeof(*lbl_1_bss_5AC.unk20)); +} + +void fn_1_2AAC(omObjData *arg0) { + Vec sp28; + Vec *var_r25; + UnkBss10Struct *temp_r26; + UnkFn2480Struct *var_r31; + u16 (*var_r28)[4]; + s32 temp_r27; + s32 i; + s32 j; + + lbl_1_bss_5E4 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M405, 58)); + lbl_1_bss_5E0 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M405, 59)); + lbl_1_bss_5DC = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M405, 60)); + lbl_1_bss_5D8 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M405, 61)); + lbl_1_bss_5AC.unk00 = HuMemDirectMallocNum(HEAP_SYSTEM, 900 * sizeof(*lbl_1_bss_5AC.unk00), MEMORY_DEFAULT_NUM); + lbl_1_bss_5AC.unk04 = HuMemDirectMallocNum(HEAP_SYSTEM, 900 * sizeof(*lbl_1_bss_5AC.unk04), MEMORY_DEFAULT_NUM); + lbl_1_bss_5AC.unk08 = HuMemDirectMallocNum(HEAP_SYSTEM, 900 * sizeof(*lbl_1_bss_5AC.unk08), MEMORY_DEFAULT_NUM); + lbl_1_bss_5AC.unk14 = HuMemDirectMallocNum(HEAP_SYSTEM, 900 * sizeof(*lbl_1_bss_5AC.unk14), MEMORY_DEFAULT_NUM); + lbl_1_bss_5AC.unk18 = HuMemDirectMallocNum(HEAP_SYSTEM, 900 * sizeof(*lbl_1_bss_5AC.unk18), MEMORY_DEFAULT_NUM); + lbl_1_bss_5AC.unk1C = HuMemDirectMallocNum(HEAP_SYSTEM, 900 * sizeof(*lbl_1_bss_5AC.unk1C), MEMORY_DEFAULT_NUM); + lbl_1_bss_5AC.unk20 = HuMemDirectMallocNum(HEAP_SYSTEM, 900 * sizeof(*lbl_1_bss_5AC.unk20), MEMORY_DEFAULT_NUM); + lbl_1_bss_5AC.unk0C = HuMemDirectMallocNum(HEAP_SYSTEM, 841 * sizeof(*lbl_1_bss_5AC.unk0C), MEMORY_DEFAULT_NUM); + lbl_1_bss_5AC.unk10 = HuMemDirectMallocNum(HEAP_SYSTEM, 8 * sizeof(*lbl_1_bss_5AC.unk10), MEMORY_DEFAULT_NUM); + for (i = 0; i < 8; i++) { + lbl_1_bss_5AC.unk10[i].unk30 = HuMemDirectMallocNum(HEAP_SYSTEM, 900 * sizeof(*lbl_1_bss_5AC.unk10[i].unk30), MEMORY_DEFAULT_NUM); + lbl_1_bss_5AC.unk10[i].unk34 = HuMemDirectMallocNum(HEAP_SYSTEM, 900 * sizeof(*lbl_1_bss_5AC.unk10[i].unk34), MEMORY_DEFAULT_NUM); + } + lbl_1_bss_5AC.unk28 = 0x10000; + lbl_1_bss_5AC.unk24 = HuMemDirectMallocNum(HEAP_SYSTEM, lbl_1_bss_5AC.unk28, MEMORY_DEFAULT_NUM); + DCFlushRange(lbl_1_bss_5AC.unk24, lbl_1_bss_5AC.unk28); + var_r25 = lbl_1_bss_5AC.unk00; + for (i = 0; i < 30; i++) { + for (j = 0; j < 30; var_r25++, j++) { + var_r25->x = 41.37931f * j - 600.0f; + var_r25->y = 0.0f; + var_r25->z = 86.206894f * i - 1250.0f; + } + } + memset(lbl_1_bss_5AC.unk04, 0, 900 * sizeof(*lbl_1_bss_5AC.unk04)); + var_r28 = lbl_1_bss_5AC.unk0C; + for (i = 0; i < 29; i++) { + for (j = 0; j < 29; j++) { + if (!(i & 1)) { + temp_r27 = j + i * 30; + (*var_r28)[0] = temp_r27; + (*var_r28)[1] = temp_r27 + 30; + (*var_r28)[2] = temp_r27 + 1; + (*var_r28)[3] = temp_r27 + 31; + } else { + temp_r27 = j + i * 30; + (*var_r28)[1] = temp_r27; + (*var_r28)[3] = temp_r27 + 30; + (*var_r28)[0] = temp_r27 + 1; + (*var_r28)[2] = temp_r27 + 31; + } + var_r28++; + } + } + var_r31 = lbl_1_bss_5AC.unk10; + for (i = 0; i < 8; i++, var_r31++) { + var_r31->unk00 = lbl_1_data_40[i]; + var_r31->unk0C = lbl_1_data_40[i]; + var_r31->unk18 = 1.0f; + var_r31->unk1C = 1.0f; + var_r31->unk20 = 0.0f; + var_r31->unk24 = 3.6f; + var_r31->unk28 = 0; + var_r31->unk2C = 0; + var_r31->unk2D = 2; + var_r31->unk00.z = 900.0f * ((i & 1) ? -1.0f : 1.0f); + var_r31->unk0C.z = 900.0f * ((i & 1) ? -1.0f : 1.0f); + var_r31->unk00 = lbl_1_bss_5AC.unk00[fn_1_23B4(&var_r31->unk00)]; + var_r31->unk0C = lbl_1_bss_5AC.unk00[fn_1_23B4(&var_r31->unk0C)]; + fn_1_2480(var_r31, lbl_1_data_A0[i * 2], lbl_1_data_A0[i * 2] + lbl_1_data_A0[i * 2 + 1]); + fn_1_2508(var_r31); + } + memcpy(lbl_1_bss_5AC.unk14, lbl_1_bss_5AC.unk00, 900 * sizeof(*lbl_1_bss_5AC.unk14)); + for (i = 0; i < 900; i++) { + lbl_1_bss_5AC.unk1C[i].r = 0xF0; + lbl_1_bss_5AC.unk1C[i].g = 0xFA; + lbl_1_bss_5AC.unk1C[i].b = 0xFF; + lbl_1_bss_5AC.unk1C[i].a = 0xC0; + } + for (i = 0; i < 30; i++) { + for (j = 0; j < 30; j++) { + temp_r27 = j + i * 30; + lbl_1_bss_5AC.unk20[temp_r27][0] = 0.00083333335f * lbl_1_bss_5AC.unk00[temp_r27].x; + lbl_1_bss_5AC.unk20[temp_r27][1] = 0.0004f * lbl_1_bss_5AC.unk00[temp_r27].z; + lbl_1_bss_5AC.unk20[temp_r27][0] *= 3.0f; + lbl_1_bss_5AC.unk20[temp_r27][1] *= 3.0f; + } + } + for (i = 0; i < 80; i++) { + lbl_1_bss_AC[i].unk0C = 0.0f; + } + for (i = 0; i < 3; i++) { + temp_r26 = &lbl_1_data_10[i]; + temp_r26->unk04 = GXGetTexBufferSize(temp_r26->unk08, temp_r26->unk0A, 4, 0, 0); + temp_r26->unk00 = HuMemDirectMallocNum(HEAP_DATA, temp_r26->unk04, MEMORY_DEFAULT_NUM); + } + fn_1_280C(arg0); + GXBeginDisplayList(lbl_1_bss_5AC.unk24, lbl_1_bss_5AC.unk28); + for (i = 0; i < 29; i++) { + GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 0x3C); + for (j = 0; j < 30; j++) { + GXPosition1x16(j + (i + 1) * 30); + GXPosition1x16(j + i * 30); + } + GXEnd(); + } + lbl_1_bss_5AC.unk28 = GXEndDisplayList(); + if (lbl_1_bss_5AC.unk28 == 0) { + OSReport("DL buffer over!!\n"); + } +} + +void fn_1_37A4(ModelData *arg0, Mtx arg1) { + Mtx spEC; + Mtx spBC; + Mtx sp8C; + Mtx sp5C; + Mtx sp2C; + float var_f31; + GXTexObj spC; + UnkBss10Struct *temp_r31; + + GXLoadPosMtxImm(arg1, GX_PNMTX0); + PSMTXInvXpose(arg1, spEC); + GXLoadNrmMtxImm(spEC, GX_PNMTX0); + temp_r31 = &lbl_1_data_10[2]; + GXInitTexObj(&spC, temp_r31->unk00, temp_r31->unk08, temp_r31->unk0A, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXInitTexObjLOD(&spC, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); + GXLoadTexObj(&spC, GX_TEXMAP0); + HuSprTexLoad(lbl_1_bss_5D8, 0, 1, GX_REPEAT, GX_REPEAT, GX_LINEAR); + HuSprTexLoad(lbl_1_bss_5E0, 0, 2, GX_CLAMP, GX_CLAMP, GX_LINEAR); + temp_r31 = &lbl_1_data_10[0]; + GXInitTexObj(&spC, temp_r31->unk00, temp_r31->unk08, temp_r31->unk0A, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXLoadTexObj(&spC, GX_TEXMAP3); + GXSetNumTexGens(4); + C_MTXLightPerspective(sp2C, 30.0f, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); + PSMTXInverse(Hu3DCameraMtx, spEC); + PSMTXConcat(spEC, arg1, spEC); + PSMTXConcat(sp2C, Hu3DCameraMtx, spBC); + PSMTXConcat(spBC, spEC, spBC); + GXLoadTexMtxImm(spBC, GX_TEXMTX0, GX_MTX3x4); + C_MTXLightPerspective(sp2C, 30.0f, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); + PSMTXInverse(Hu3DCameraMtx, spEC); + PSMTXConcat(spEC, arg1, spEC); + PSMTXConcat(sp2C, Hu3DCameraMtx, spBC); + PSMTXConcat(spBC, spEC, spBC); + GXLoadTexMtxImm(spBC, GX_TEXMTX1, GX_MTX3x4); + PSMTXRotRad(spEC, 'X', MTXDegToRad(-90)); + var_f31 = 0.0004f; + PSMTXScale(sp8C, 0.00083333335f, var_f31, 0.0004f); + PSMTXConcat(sp8C, spEC, sp5C); + PSMTXTrans(spBC, 0.5f, 0.5f, 0.5f); + PSMTXConcat(spBC, sp5C, sp5C); + sp5C[0][1] = -0.01f; + GXLoadTexMtxImm(sp5C, GX_TEXMTX2, GX_MTX2x4); + PSMTXRotRad(spEC, 'X', MTXDegToRad(-90)); + var_f31 = 0.0004f; + PSMTXScale(sp8C, var_f31, var_f31, var_f31); + PSMTXConcat(sp8C, spEC, sp5C); + PSMTXTrans(spBC, 0.5f, 0.5f, 0.0f); + PSMTXConcat(spBC, sp5C, sp5C); + GXLoadTexMtxImm(sp5C, GX_TEXMTX3, GX_MTX2x4); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0, GX_FALSE, GX_PTIDENTITY); + GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX1, GX_FALSE, GX_PTIDENTITY); + GXSetTexCoordGen2(GX_TEXCOORD2, GX_TG_MTX2x4, GX_TG_POS, GX_TEXMTX2, GX_FALSE, GX_PTIDENTITY); + GXSetTexCoordGen2(GX_TEXCOORD3, GX_TG_MTX2x4, GX_TG_POS, GX_TEXMTX3, GX_FALSE, GX_PTIDENTITY); + GXSetNumIndStages(2); + GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD2, GX_TEXMAP2); + GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1); + PSMTXScale(spBC, -0.2f, -0.2f, 0.2f); + GXSetIndTexMtx(GX_ITM_0, (float (*)[3]) spBC, -2); + GXSetTevIndWarp(GX_TEVSTAGE0, GX_INDTEXSTAGE0, GX_TRUE, GX_FALSE, GX_ITM_0); + GXSetIndTexOrder(GX_INDTEXSTAGE1, GX_TEXCOORD3, GX_TEXMAP3); + GXSetIndTexCoordScale(GX_INDTEXSTAGE1, GX_ITS_1, GX_ITS_1); + PSMTXScale(spBC, 0.5f, 0.5f, 0.5f); + GXSetIndTexMtx(GX_ITM_1, (float (*)[3]) spBC, 0); + GXSetTevIndWarp(GX_TEVSTAGE1, GX_INDTEXSTAGE1, GX_TRUE, GX_FALSE, GX_ITM_1); + GXSetNumTevStages(2); + lbl_1_data_E8.a = lbl_1_bss_A8; + GXSetTevColor(GX_TEVREG0, lbl_1_data_E8); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_CPREV, GX_CC_TEXC, GX_CC_A0, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + GXSetTevAlphaOp(GX_TEVSTAGE1, 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); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + GXSetBlendMode(GX_BM_NONE, GX_BL_ONE, GX_BL_ZERO, GX_LO_SET); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_RGBA6, 0); + GXSetArray(GX_VA_POS, lbl_1_bss_5AC.unk14, 0xC); + GXSetCullMode(GX_CULL_BACK); + GXCallDisplayList(lbl_1_bss_5AC.unk24, lbl_1_bss_5AC.unk28); + GXSetNumIndStages(0); + GXSetTevDirect(GX_TEVSTAGE0); + GXSetTevDirect(GX_TEVSTAGE1); +} + +void fn_1_3F1C(ModelData *arg0, Mtx arg1) { + fn_1_280C(NULL); +} + +void fn_1_3F40(ModelData *arg0, Mtx arg1) { + fn_1_2714(2, GX_FALSE); +} + +void fn_1_4024(ModelData *arg0, Mtx arg1) { + Mtx sp98; + Mtx sp68; + Mtx sp38; + GXTexObj sp18; + UnkBss10Struct *temp_r31; + + fn_1_2714(1, GX_FALSE); + GXLoadPosMtxImm(arg1, GX_PNMTX0); + C_MTXLightPerspective(sp98, 30.0f, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); + PSMTXInverse(Hu3DCameraMtx, sp68); + PSMTXConcat(sp68, arg1, sp68); + PSMTXConcat(sp98, Hu3DCameraMtx, sp38); + PSMTXConcat(sp38, sp68, sp68); + GXLoadTexMtxImm(sp68, GX_TEXMTX0, GX_MTX3x4); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0, GX_FALSE, GX_PTIDENTITY); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetNumTexGens(1); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0, GX_FALSE, GX_PTIDENTITY); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0); + GXSetNumTevStages(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); + temp_r31 = &lbl_1_data_10[2]; + GXInitTexObj(&sp18, temp_r31->unk00, temp_r31->unk08, temp_r31->unk0A, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXLoadTexObj(&sp18, GX_TEXMAP0); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_RGBA6, 0); + GXSetZMode(GX_TRUE, GX_GREATER, GX_FALSE); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(-600.0f, -2.0f, -1250.0f); + GXPosition3f32(600.0f, -2.0f, -1250.0f); + GXPosition3f32(600.0f, -2.0f, 1250.0f); + GXPosition3f32(-600.0f, -2.0f, 1250.0f); + GXEnd(); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(-600.0f, -100.0f, -1250.0f); + GXPosition3f32(600.0f, -100.0f, -1250.0f); + GXPosition3f32(600.0f, -100.0f, 1250.0f); + GXPosition3f32(-600.0f, -100.0f, 1250.0f); + GXEnd(); + fn_1_2714(2, GX_FALSE); + temp_r31 = &lbl_1_data_10[1]; + GXInitTexObj(&sp18, temp_r31->unk00, temp_r31->unk08, temp_r31->unk0A, GX_TF_RGB565, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXLoadTexObj(&sp18, GX_TEXMAP0); + GXSetZMode(GX_TRUE, GX_GREATER, GX_FALSE); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(-600.0f, -2.0f, -1250.0f); + GXPosition3f32(600.0f, -2.0f, -1250.0f); + GXPosition3f32(600.0f, -2.0f, 1250.0f); + GXPosition3f32(-600.0f, -2.0f, 1250.0f); + GXEnd(); +} + +void fn_1_4700(ModelData *arg0, Mtx arg1) { + Mtx sp60; + Mtx44 sp20; + float temp_f31; + GXColor sp1C = { 0x00, 0x00, 0x00, 0xFF }; + GXColor sp18 = { 0xFF, 0xFF, 0xFF, 0x20 }; + UnkBssACStruct *var_r31; + s16 temp_r28; + s16 temp_r27; + s16 temp_r26; + s16 temp_r25; + s16 var_r24; + s16 i; + + C_MTXOrtho(sp20, 0.0f, 480.0f, 0.0f, 640.0f, 0.0f, 100.0f); + GXSetProjection(sp20, GX_ORTHOGRAPHIC); + PSMTXIdentity(sp60); + GXLoadPosMtxImm(sp60, GX_PNMTX0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetChanMatColor(GX_COLOR0A0, sp1C); + GXSetNumTexGens(0); + HuSprTexLoad(lbl_1_bss_5DC, 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0); + GXSetNumTevStages(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); + GXSetScissor(0, 0, lbl_1_data_10->unk08, lbl_1_data_10->unk0A); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_RGBX8, 0); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition2u16(0, 0); + GXPosition2u16(lbl_1_data_10->unk08, 0); + GXPosition2u16(lbl_1_data_10->unk08, lbl_1_data_10->unk0A); + GXPosition2u16(0, lbl_1_data_10->unk0A); + GXEnd(); + GXSetNumTexGens(1); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); + GXSetNumTevStages(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOp(GX_TEVSTAGE0, GX_REPLACE); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXClearVtxDesc(); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_RGBA4, 0); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + var_r31 = lbl_1_bss_AC; + var_r24 = 0; + for (i = 0; i < 80; i++, var_r31++) { + if (0.1f >= var_r31->unk0C) { + continue; + } + var_r24 = 1; + temp_f31 = 200.0f * (1.0f - var_r31->unk0C); + sp18.a = 255.0f * var_r31->unk0C; + GXSetChanMatColor(GX_COLOR0A0, sp18); + temp_r28 = lbl_1_data_10->unk08 * (1250.0f + var_r31->unk00.x - temp_f31) / 2500.0f; + temp_r27 = lbl_1_data_10->unk0A * (1250.0f + var_r31->unk00.z - temp_f31) / 2500.0f; + temp_r26 = lbl_1_data_10->unk08 * (1250.0f + var_r31->unk00.x + temp_f31) / 2500.0f; + temp_r25 = lbl_1_data_10->unk0A * (1250.0f + var_r31->unk00.z + temp_f31) / 2500.0f; + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition2s16(temp_r28, temp_r27); + GXTexCoord2f32(0.0f, 0.0f); + GXPosition2s16(temp_r26, temp_r27); + GXTexCoord2f32(1.0f, 0.0f); + GXPosition2s16(temp_r26, temp_r25); + GXTexCoord2f32(1.0f, 1.0f); + GXPosition2s16(temp_r28, temp_r25); + GXTexCoord2f32(0.0f, 1.0f); + GXEnd(); + } + if (var_r24 != 0 && lbl_1_bss_A8 < 24) { + lbl_1_bss_A8++; + } + fn_1_2714(0, GX_TRUE); +} + +void fn_1_4F28(omObjData *arg0) { + Vec spC; + float temp_f27; + float var_f29; + float *var_r30; + UnkBssACStruct *var_r27; + UnkFn2480Struct *var_r31; + u16 *var_r25; + s32 i; + u32 j; + + memset(lbl_1_bss_5AC.unk04, 0, 900 * sizeof(*lbl_1_bss_5AC.unk04)); + var_r27 = lbl_1_bss_AC; + for (i = 0; i < 80; i++, var_r27++) { + if (0.1f >= var_r27->unk0C) { + continue; + } + var_r27->unk0C *= 0.95f; + } + var_r31 = lbl_1_bss_5AC.unk10; + for (i = 0; i < 8; i++, var_r31++) { + var_r31->unk20 += var_r31->unk24 - var_r31->unk24 * frandf() / 2; + if (360.0f <= var_r31->unk20) { + var_r31->unk20 -= 360.0f; + } + if (0.0f > var_r31->unk20) { + var_r31->unk20 += 360.0f; + } + var_r31->unk18 *= 0.99f; + var_r31->unk1C += 0.01f * (var_r31->unk18 - var_r31->unk1C); + var_r31->unk0C.z += 0.02f * (var_r31->unk00.z - var_r31->unk0C.z); + if (5.0f > var_r31->unk1C) { + var_r31->unk1C = 5.0f; + } + fn_1_2508(var_r31); + temp_f27 = var_r31->unk20; + var_r25 = var_r31->unk34; + var_r30 = var_r31->unk30; + for (j = 0; j < var_r31->unk28; j++, var_r25++, var_r30++) { + if (0.0f > *var_r30) { + continue; + } + var_f29 = 1.0f - *var_r30 / 625.0f; + if (0.2f > var_f29) { + var_f29 = 0.2f; + } + lbl_1_bss_5AC.unk04[*var_r25].y += var_r31->unk1C * var_f29 * var_f29 * sind(temp_f27 + *var_r30 * var_f29 * 3.6f); + } + } +} + +void fn_1_5404(omObjData *arg0) { + lbl_1_bss_A8 = 0; + omSetTra(arg0, 0.0f, 0.0f, 0.0f); + fn_1_2AAC(arg0); + arg0->model[0] = Hu3DHookFuncCreate(fn_1_4700); + Hu3DModelLayerSet(arg0->model[0], 0); + arg0->model[1] = Hu3DHookFuncCreate(fn_1_3F40); + Hu3DModelLayerSet(arg0->model[1], 2); + arg0->model[2] = Hu3DHookFuncCreate(fn_1_4024); + Hu3DModelLayerSet(arg0->model[2], 4); + arg0->model[3] = Hu3DHookFuncCreate(fn_1_37A4); + Hu3DModelLayerSet(arg0->model[3], 6); + arg0->model[4] = Hu3DHookFuncCreate(fn_1_3F1C); + Hu3DModelLayerSet(arg0->model[4], 7); + arg0->func = fn_1_4F28; +} + +void fn_1_5530(Vec *arg0, s32 arg1) { + UnkBssACStruct *temp_r31; + + temp_r31 = &lbl_1_bss_AC[arg1]; + temp_r31->unk00 = *arg0; + temp_r31->unk0C = 1.0f; +} + +void fn_1_557C(Vec *arg0, float arg1, s32 arg2, s32 arg3) { + UnkFn2480Struct *temp_r31; + + temp_r31 = &lbl_1_bss_5AC.unk10[arg2 + (arg3 ^ 1)]; + temp_r31->unk2C = 0; + temp_r31->unk2D = 2; + temp_r31 = &lbl_1_bss_5AC.unk10[arg2 + arg3]; + temp_r31->unk2D = arg3; + temp_r31->unk18 = arg1; + temp_r31->unk24 = 10.8f; + temp_r31->unk00.x = arg0->x; + temp_r31->unk00.y = 0.0f; + temp_r31->unk00.z = arg0->z; + if (1.0f > temp_r31->unk1C) { + temp_r31->unk20 = 270.0f; + } + if (temp_r31->unk2C == 0) { + temp_r31->unk2C = 1; + temp_r31->unk0C = temp_r31->unk00; + } +} + +float fn_1_5664(Vec *arg0) { + return lbl_1_bss_5AC.unk04[fn_1_23B4(arg0)].y; +} + +#include "src/REL/executor.c" + +Vec lbl_1_data_100 = { 0.0f, 1.0f, 0.0f }; +Vec lbl_1_data_10C = { 450.0f, 300.0f, 500.0f }; +Vec lbl_1_data_118 = { 450.0f, 150.0f, 1300.0f }; +Vec lbl_1_data_124 = { 0.0f, 800.0f, -3000.0f }; +Vec lbl_1_data_130 = { 0.0f, 0.0f, -500.0f }; +Vec lbl_1_data_13C = { -2400.0f, 3500.0f, 0.0f }; +Vec lbl_1_data_148 = { 0.0f, 0.0f, 0.0f }; +Vec lbl_1_data_154 = { 0.0f, 5000.0f, 1000.0f }; +Vec lbl_1_data_160 = { 0.0f, -5.0f, -1.0f }; +GXColor lbl_1_data_16C = { 0xFF, 0xFF, 0xFF, 0xFF }; +Vec lbl_1_data_170 = { 0.0f, 8000.0f, 1000.0f }; +Vec lbl_1_data_17C = { 0.0f, 0.0f, 0.0f }; + +s32 lbl_1_data_188[8][8] = { + { + DATA_MAKE_NUM(DATADIR_MARIOMOT, 42), + DATA_MAKE_NUM(DATADIR_M405, 0), + DATA_MAKE_NUM(DATADIR_M405, 8), + DATA_MAKE_NUM(DATADIR_M405, 16), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 43), + DATA_MAKE_NUM(DATADIR_M405, 24), + DATA_MAKE_NUM(DATADIR_M405, 32), + DATA_MAKE_NUM(DATADIR_M405, 40) + }, + { + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 42), + DATA_MAKE_NUM(DATADIR_M405, 1), + DATA_MAKE_NUM(DATADIR_M405, 9), + DATA_MAKE_NUM(DATADIR_M405, 17), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 43), + DATA_MAKE_NUM(DATADIR_M405, 25), + DATA_MAKE_NUM(DATADIR_M405, 33), + DATA_MAKE_NUM(DATADIR_M405, 41) + }, + { + DATA_MAKE_NUM(DATADIR_PEACHMOT, 42), + DATA_MAKE_NUM(DATADIR_M405, 2), + DATA_MAKE_NUM(DATADIR_M405, 10), + DATA_MAKE_NUM(DATADIR_M405, 18), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 43), + DATA_MAKE_NUM(DATADIR_M405, 26), + DATA_MAKE_NUM(DATADIR_M405, 34), + DATA_MAKE_NUM(DATADIR_M405, 42) + }, + { + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 42), + DATA_MAKE_NUM(DATADIR_M405, 3), + DATA_MAKE_NUM(DATADIR_M405, 11), + DATA_MAKE_NUM(DATADIR_M405, 19), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 43), + DATA_MAKE_NUM(DATADIR_M405, 27), + DATA_MAKE_NUM(DATADIR_M405, 35), + DATA_MAKE_NUM(DATADIR_M405, 43) + }, + { + DATA_MAKE_NUM(DATADIR_WARIOMOT, 42), + DATA_MAKE_NUM(DATADIR_M405, 4), + DATA_MAKE_NUM(DATADIR_M405, 12), + DATA_MAKE_NUM(DATADIR_M405, 20), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 43), + DATA_MAKE_NUM(DATADIR_M405, 28), + DATA_MAKE_NUM(DATADIR_M405, 36), + DATA_MAKE_NUM(DATADIR_M405, 44) + }, + { + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 42), + DATA_MAKE_NUM(DATADIR_M405, 5), + DATA_MAKE_NUM(DATADIR_M405, 13), + DATA_MAKE_NUM(DATADIR_M405, 21), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 43), + DATA_MAKE_NUM(DATADIR_M405, 29), + DATA_MAKE_NUM(DATADIR_M405, 37), + DATA_MAKE_NUM(DATADIR_M405, 45) + }, + { + DATA_MAKE_NUM(DATADIR_DAISYMOT, 42), + DATA_MAKE_NUM(DATADIR_M405, 6), + DATA_MAKE_NUM(DATADIR_M405, 14), + DATA_MAKE_NUM(DATADIR_M405, 22), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 43), + DATA_MAKE_NUM(DATADIR_M405, 30), + DATA_MAKE_NUM(DATADIR_M405, 38), + DATA_MAKE_NUM(DATADIR_M405, 46) + }, + { + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 42), + DATA_MAKE_NUM(DATADIR_M405, 7), + DATA_MAKE_NUM(DATADIR_M405, 15), + DATA_MAKE_NUM(DATADIR_M405, 23), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 43), + DATA_MAKE_NUM(DATADIR_M405, 31), + DATA_MAKE_NUM(DATADIR_M405, 39), + DATA_MAKE_NUM(DATADIR_M405, 47) + } +}; + +s32 lbl_1_data_288[] = { + DATA_MAKE_NUM(DATADIR_M405, 55), + DATA_MAKE_NUM(DATADIR_M405, 56) +}; + +s32 lbl_1_data_290[] = { + DATA_MAKE_NUM(DATADIR_MGCONST, 0), + DATA_MAKE_NUM(DATADIR_MGCONST, 1), + DATA_MAKE_NUM(DATADIR_MGCONST, 2), + DATA_MAKE_NUM(DATADIR_MGCONST, 3), + DATA_MAKE_NUM(DATADIR_MGCONST, 4), + DATA_MAKE_NUM(DATADIR_MGCONST, 5), + DATA_MAKE_NUM(DATADIR_MGCONST, 6), + DATA_MAKE_NUM(DATADIR_MGCONST, 7) +}; + +s32 lbl_1_data_2B0[] = { -224, -128, 128, 224 }; + +s32 lbl_1_data_2C0[] = { + 0, 0, + 0, 0, + -20, -18, + 19, -18, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0, + 0, 0 +}; + +s32 lbl_1_data_310[] = { -24, 17, 24, 17, 0, 17 }; +s32 lbl_1_data_328[] = { 1, 0, 3, 2, 4 }; + +u8 lbl_1_data_33C[][3] = { + { 1, 0, 1 }, + { 2, 3, 0 }, + { 1, 0, 0 } +}; + +u16 lbl_1_data_346[] = { + 0x0100, 0x0200, 0x0040, 0x0020, 0x0000 +}; + +UnkBssA4InnerStruct lbl_1_data_350 = { 3570.0f, 2 }; +UnkBssA4InnerStruct lbl_1_data_358 = { 3330.0f, 2 }; +UnkBssA4InnerStruct lbl_1_data_360 = { 3180.0f, 2 }; +UnkBssA4InnerStruct lbl_1_data_368 = { 3060.0f, 6 }; + +HsfanimStruct00 lbl_1_data_370 = { + 0x0014, + { 0x00, 0x00 }, // padding? + 1.0f, + 30.0f, + 0.0f, + { 0.0f, 0.05f, 0.0f }, + 1.0f, + 0.999f, + 30.0f, + 1.03f, + 0x0004, + { + { 0xFF, 0xFF, 0xFF, 0xFF }, + { 0xFF, 0xFF, 0xFF, 0xFF }, + { 0xFF, 0xFF, 0xFF, 0xFF }, + { 0xFF, 0xFF, 0xFF, 0xFF } + }, + { + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 } + } +}; + +HsfanimStruct00 lbl_1_data_3C0 = { + 0x0014, + { 0x00, 0x00 }, // padding? + 1.0f, + 10.0f, + 360.0f, + { 0.0f, 0.1f, 0.0f }, + 1.0f, + 1.0f, + 50.0f, + 1.05f, + 0x0001, + { + { 0xFF, 0xFF, 0xFF, 0xFF }, + { 0xFF, 0xFF, 0xFF, 0xFF }, + { 0xFF, 0xFF, 0xFF, 0xFF }, + { 0xFF, 0xFF, 0xFF, 0xFF } + }, + { + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 } + } +}; + +void fn_1_57FC(void) { + UnkBssA4Data *temp_r31; + s32 i; + + fontcolor = 0; + for (i = 0; i < 4; i++) { + temp_r31 = lbl_1_bss_A4[i]->data; + print8(24, i * 16 + 132, 1.5f, "%d %f %f %f", temp_r31->unk108, temp_r31->unk34, temp_r31->unk38, temp_r31->unk3C); + } +} + +void fn_1_58A0(omObjData *arg0) { + Vec sp8; + s16 var_r30; + + switch (arg0->work[0]) { + case 0: + if (lbl_1_bss_98->work[0] >= 1004 && 60.0f < lbl_1_bss_80) { + arg0->work[0]++; + lbl_1_bss_6C = 0.0f; + Hu3DMotionSet(arg0->model[0], arg0->motion[1]); + Hu3DModelAttrReset(arg0->model[0], 0x40000003); + Hu3DModelAttrReset(arg0->model[1], 0x40000003); + } + break; + case 1: + lbl_1_bss_6C += 1.0f; + var_r30 = arg0->model[0]; + fn_1_1D18(var_r30, "g001m1_021-itemhook_r", &sp8); + Hu3DParManAttrSet(lbl_1_bss_84, 1); + if (50.0f == lbl_1_bss_6C) { + HuAudFXPlay(0xD); + } + if (50.0f <= lbl_1_bss_6C && 60.0f > lbl_1_bss_6C) { + Hu3DParManPosSet(lbl_1_bss_84, sp8.x - 10.0f, sp8.y + 35.0f, sp8.z - 20.0f); + Hu3DParManAttrReset(lbl_1_bss_84, 1); + } + if (Hu3DMotionEndCheck(arg0->model[0]) != 0) { + arg0->work[0]++; + Hu3DMotionSet(arg0->model[0], arg0->motion[0]); + Hu3DModelAttrReset(arg0->model[0], 0x40000002); + Hu3DModelAttrSet(arg0->model[0], 0x40000001); + } + break; + case 2: + break; + } +} + +void fn_1_5B28(omObjData *arg0) { + s32 i; + + arg0->work[0] = 0; + omSetTra(arg0, 850.0f, 30.0f, 1350.0f); + omSetRot(arg0, 0.0f, -90.0f, 0.0f); + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M405, 53)); + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M405, 54)); + for (i = 0; i < 2; i++) { + arg0->motion[i] = Hu3DJointMotionFile(arg0->model[0], lbl_1_data_288[i]); + } + for (i = 0; i < 2; i++) { + Hu3DModelAttrSet(arg0->model[i], 1); + Hu3DModelAttrSet(arg0->model[i], 0x40000003); + Hu3DModelLayerSet(arg0->model[i], 5); + Hu3DModelShadowSet(arg0->model[i]); + } + Hu3DMotionSet(arg0->model[0], *arg0->motion); + Hu3DModelAttrReset(arg0->model[0], 0x40000002); + Hu3DModelHookSet(arg0->model[0], "g001m1_021-itemhook_r", arg0->model[1]); + Hu3DMotionTimeSet(arg0->model[1], 1.0f); + for (i = 0; i < 2; i++) { + Hu3DModelAttrReset(arg0->model[i], 1); + } + arg0->func = fn_1_58A0; +} + +void fn_1_5D3C(UnkBssA4Data *arg0, Vec *arg1) { + fn_1_5530(arg1, arg0->unk98 + arg0->unk108 * 20); + arg0->unk98 = (arg0->unk98 + 1) % 20; +} + +void fn_1_5DCC(UnkBssA4Data *arg0) { + Vec sp8; + float var_f31; + UnkFn2480Struct *temp_r31; + + var_f31 = 30.0f; + if (arg0->unk104 == 2) { + var_f31 = 20.0f; + } + if (arg0->unk104 == 4) { + var_f31 = 40.0f; + } + sp8 = arg0->unk4C; + sp8.z -= 70.0f * (arg0->unk94 == 1 ? 1.0f : -1.0f); + if (1250.0f < ABS(sp8.z)) { + sp8.z = 1250.0f * (0.0f > sp8.z ? -1 : 1); + } + fn_1_557C(&sp8, var_f31, (3 - arg0->unk108) * 2, arg0->unk94 & 1); +} + +void fn_1_6040(UnkBssA4Data *arg0, omObjData *arg1) { + Vec sp44[5]; + s32 var_r27; + s32 var_r26; + s32 i; + + var_r27 = 0; + var_r26 = 0; + for (i = 0; i < 5; i++) { + sp44[i] = arg0->unkA0[i]; + if (lbl_1_bss_740 % 5 == i) { + fn_1_1D18(arg1->model[0], CharModelHookNameGet(arg0->unk10C, 4, lbl_1_data_328[i]), &arg0->unkA0[i]); + } + if ((0.0f <= sp44[i].y && 0.0f > arg0->unkA0[i].y) || (0.0f >= sp44[i].y && 0.0f < arg0->unkA0[i].y)) { + var_r26++; + arg0->unkDC[i] = 10; + if (i < 2) { + var_r27++; + fn_1_5D3C(arg0, &arg0->unkA0[i]); + } + } + Hu3DParManPosSet(arg0->unkF0[i], arg0->unkA0[i].x, arg0->unkA0[i].y, arg0->unkA0[i].z); + if (--arg0->unkDC[i] <= 0) { + Hu3DParManAttrSet(arg0->unkF0[i], 1); + } else { + Hu3DParManAttrReset(arg0->unkF0[i], 1); + } + } + if (var_r27 > 0) { + HuAudFXPlay(0x535); + } + if (var_r26 > 0) { + fn_1_5DCC(arg0); + if (arg0->unk9C != 0) { + arg0->unk9C = 0; + omVibrate(arg0->unk108, 12, 4, 2); + HuAudFXPlay(0x536); + } + } +} + +void fn_1_65BC(UnkBssA4Data *arg0) { + u8 *temp_r30; + s32 i; + + temp_r30 = lbl_1_data_33C[arg0->unk94]; + for (i = 4; i < 10; i++) { + espDispOff(arg0->unk0C[i]); + } + espPosSet(arg0->unk0C[temp_r30[0] + 6], arg0->unk04 + lbl_1_data_310[0], arg0->unk08 + lbl_1_data_310[1]); + espDispOn(arg0->unk0C[temp_r30[0] + 6]); + espPosSet(arg0->unk0C[temp_r30[1] + 6], arg0->unk04 + lbl_1_data_310[2], arg0->unk08 + lbl_1_data_310[3]); + espDispOn(arg0->unk0C[temp_r30[1] + 6]); + espPosSet(arg0->unk0C[temp_r30[2] + 4], arg0->unk04 + lbl_1_data_310[4], arg0->unk08 + lbl_1_data_310[5]); + espDispOn(arg0->unk0C[temp_r30[2] + 4]); +} + +void fn_1_6828(UnkBssA4Data *arg0) { + s32 temp_r30; + + temp_r30 = (113.0f - arg0->unk68) / 10.0f - 1.0f; + if (temp_r30 > 9) { + espDispOff(arg0->unk0C[3]); + } else { + espDispOn(arg0->unk0C[3]); + espBankSet(arg0->unk0C[3], temp_r30); + } +} + +u16 fn_1_68CC(UnkBssA4Data *arg0) { + u16 var_r29; + u8 *temp_r30; + + var_r29 = 0; + arg0->unk34 -= 1.0f; + if (6.0f > arg0->unk34) { + arg0->unk34 = 6.0f; + } + if (50.0f > arg0->unk38) { + arg0->unk38 = 50.0f; + } + arg0->unk3C -= 1.0f; + if (0.0f > arg0->unk3C) { + arg0->unk3C = arg0->unk34 / (arg0->unk38 / 30.0f); + if (6.0f > arg0->unk3C) { + arg0->unk3C = 6.0f; + } + if (420.0f < arg0->unk34 && 60.0f > arg0->unk68 && arg0->unk88 < 10) { + arg0->unk40 = 20.0f; + } + if (arg0->unk44 >= 2 && 70.0f < arg0->unk68) { + arg0->unk3C = 8.0f; + } else if (0.0f != arg0->unk40) { + arg0->unk3C = arg0->unk40; + } else if (arg0->unk48 > 0) { + if ((arg0->unk48 & 1) == 1) { + arg0->unk38 += 40.0f * (arg0->unk44 + 1); + arg0->unk3C = 8.0f; + arg0->unk48--; + } else if (frandmod(10) == 0) { + arg0->unk3C = 8.0f; + arg0->unk48--; + } + } + temp_r30 = lbl_1_data_33C[arg0->unk94]; + var_r29 = lbl_1_data_346[temp_r30[0]] | lbl_1_data_346[temp_r30[1]]; + } + if (0.0f != arg0->unk40) { + if (30.0f < arg0->unk68) { + arg0->unk40 = 0.0f; + } + } else if (10.0f > arg0->unk68) { + arg0->unk40 = 20.0f; + } + return var_r29; +} + +void fn_1_6BFC(omObjData *arg0) { + float var_f31; + float var_f30; + UnkBssA4Data *temp_r31; + u8 *temp_r28; + u16 var_r24; + s32 temp_r20; + s32 var_r27; + s32 i; + + temp_r31 = arg0->data; + if (lbl_1_bss_98->work[0] == 1006) { + temp_r31->unk100 = 2005; + temp_r31->unk104 = 0; + Hu3DModelAttrReset(arg0->model[0], 0x40000002); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[temp_r31->unk104], 0.0f, 8.0f, 0x40000001); + Hu3DMotionSpeedSet(arg0->model[0], 1.0f); + for (i = 0; i < 5; i++) { + Hu3DParManAttrSet(temp_r31->unkF0[i], 1); + } + if (lbl_1_bss_7C == temp_r31->unk108) { + temp_r20 = temp_r31->unk108; + if (!_CheckFlag(FLAG_ID_MAKE(1, 12))) { + GWPlayer[temp_r20].coin_win = 10; + } + } + arg0->func = fn_1_798C; + return; + } + if (GWPlayerCfg[temp_r31->unk108].iscom) { + temp_r31->unk78 = fn_1_68CC(temp_r31); + } else { + temp_r31->unk78 |= HuPadBtnDown[temp_r31->unk110]; + } + var_r27 = temp_r31->unk104; + switch (temp_r31->unk100) { + case 2003: + temp_r28 = lbl_1_data_33C[temp_r31->unk94]; + if (temp_r28[2] == 1) { + var_r24 = lbl_1_data_346[temp_r28[0]] | lbl_1_data_346[temp_r28[1]]; + } else { + var_r24 = lbl_1_data_346[temp_r28[temp_r31->unk90 & 1]]; + } + temp_r31->unk6C += 1.0f; + if (20.0f <= temp_r31->unk6C) { + temp_r31->unk68 += temp_r31->unk74; + if (0.0f == temp_r31->unk70) { + if (5.0f < temp_r31->unk74) { + temp_r31->unk74 -= 1.0f; + } + } else { + temp_r31->unk74 = 7.0f; + } + temp_r31->unk6C = 0.0f; + temp_r31->unk70 = 0.0f; + if (100.0f <= temp_r31->unk68) { + temp_r31->unk68 = 100.0f; + } + } + temp_r31->unk88++; + if (1.0f <= temp_r31->unk68 && var_r24 == (temp_r31->unk78 & var_r24)) { + temp_r31->unk78 = 0; + temp_r31->unk8C = 0; + temp_r31->unk84++; + if (temp_r31->unk80 == 0) { + temp_r31->unk80 = 1; + } + if (temp_r31->unk84 < 10) { + temp_r31->unk90 ^= 1; + var_f31 = 30.0f; + if (temp_r31->unk88 < 10) { + var_f31 = 35.0f; + } + if (temp_r31->unk94 == 1) { + var_f30 = 1.0f; + } else { + var_f30 = -1.0f; + } + temp_r31->unk5C += var_f31 * var_f30; + temp_r31->unk68 -= 5.0f; + temp_r31->unk70 += 5.0f; + if (0.0f >= temp_r31->unk68) { + temp_r31->unk68 = 0.0f; + temp_r31->unk5C = temp_r31->unk4C.z; + } + } + temp_r31->unk88 = 0; + } + if (temp_r31->unk80 > 0) { + if (++temp_r31->unk80 > 60) { + temp_r31->unk80 = 0; + temp_r31->unk84 = 0; + } + } + if (temp_r28[2] == 1) { + if (temp_r31->unk78 != 0) { + if (++temp_r31->unk8C >= 2) { + temp_r31->unk78 = 0; + temp_r31->unk8C = 0; + } + } + } else { + temp_r31->unk78 = 0; + } + if (1.0f > ABS(temp_r31->unk5C - temp_r31->unk4C.z)) { + temp_r31->unk7C++; + if (30.0f == temp_r31->unk7C) { + var_r27 = 0; + } + } else { + temp_r31->unk7C = 0; + var_r27 = temp_r31->unk94 + 2; + var_f31 = 0.1f * (temp_r31->unk5C - temp_r31->unk4C.z); + temp_r31->unk4C.z += var_f31; + temp_r31->unk38 -= ABS(var_f31); + temp_r31->unk64 = (temp_r31->unk64 + ABS(var_f31)) / 2; + if (temp_r31->unk94 >= 2) { + if (1150.0f < ABS(temp_r31->unk4C.z)) { + temp_r31->unk4C.z = 1150.0f * (0.0f > temp_r31->unk4C.z ? -1 : 1); + if (lbl_1_bss_7C < 0) { + lbl_1_bss_7C = temp_r31->unk108; + } else if (frandmod(100) > 50) { + lbl_1_bss_7C = temp_r31->unk108; + } + } + } else { + if (1150.0f < ABS(temp_r31->unk4C.z)) { + temp_r31->unk100 = 2004; + temp_r31->unkFC = 10.0f; + temp_r31->unk4C.z = 1150.0f * (0.0f > temp_r31->unk4C.z ? -1 : 1); + temp_r31->unk5C = temp_r31->unk4C.z; + var_r27 = temp_r31->unk94 + 5; + temp_r31->unk104 = var_r27; + Hu3DModelAttrReset(arg0->model[0], 0x40000003); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[temp_r31->unk104], 0.0f, 8.0f, 0); + temp_r31->unk94++; + if (temp_r31->unk94 > lbl_1_bss_78) { + lbl_1_bss_78 = temp_r31->unk94; + } + fn_1_65BC(temp_r31); + omVibrate(temp_r31->unk108, 12, 6, 6); + } + } + } + break; + case 2004: + temp_r31->unkFC -= 1.0f; + if (0.0f > temp_r31->unkFC && Hu3DMotionEndCheck(arg0->model[0])) { + temp_r31->unk100 = 2003; + temp_r31->unk8C = 0; + temp_r31->unk78 = 0; + temp_r31->unk80 = 0; + temp_r31->unk84 = 0; + temp_r31->unk88 = 0; + temp_r31->unk7C = 0; + var_r27 = temp_r31->unk94 + 2; + } + break; + default: + OSReport("*** player mode error(%d)!!\n", temp_r31->unk100); + break; + } + if (var_r27 != temp_r31->unk104) { + temp_r31->unk104 = var_r27; + Hu3DModelAttrReset(arg0->model[0], 0x40000002); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[temp_r31->unk104], 0.0f, 30.0f, 0x40000001); + } + if (temp_r31->unk104 >= 2 && temp_r31->unk104 <= 4) { + temp_r31->unk60 = 0.5f * temp_r31->unk64; + if (1.0f > temp_r31->unk60) { + temp_r31->unk60 = 1.0f; + } + if (2.0f < temp_r31->unk60) { + temp_r31->unk60 = 2.0f; + } + } else { + temp_r31->unk60 = 1.0f; + temp_r31->unk64 = 0.0f; + } + Hu3DMotionSpeedSet(arg0->model[0], temp_r31->unk60); + fn_1_6040(temp_r31, arg0); + fn_1_6828(temp_r31); + omSetTra(arg0, temp_r31->unk4C.x, temp_r31->unk4C.y, temp_r31->unk4C.z); + omSetRot(arg0, 0.0f, temp_r31->unk58, 0.0f); +} + +void fn_1_798C(omObjData *arg0) { + UnkBssA4Data *temp_r31; + s32 i; + + temp_r31 = arg0->data; + switch (temp_r31->unk100) { + case 2000: + if (lbl_1_bss_98->work[0] >= 1003) { + temp_r31->unk100++; + Hu3DModelAttrReset(arg0->model[0], 0x40000003); + } + break; + case 2001: + if (lbl_1_bss_98->work[0] >= 1005) { + temp_r31->unk100++; + Hu3DModelAttrReset(arg0->model[0], 0x40000003); + for (i = 0; i <= 3; i++) { + espDispOn(temp_r31->unk0C[i]); + } + fn_1_65BC(temp_r31); + } else if (30.0f == Hu3DMotionTimeGet(arg0->model[0])) { + Hu3DModelAttrSet(arg0->model[0], 0x40000002); + } + break; + case 2002: + if (Hu3DMotionEndCheck(arg0->model[0])) { + temp_r31->unk100++; + temp_r31->unk4C.z = 900.0f; + temp_r31->unk5C = temp_r31->unk4C.z; + temp_r31->unk104 = 2; + Hu3DModelAttrSet(arg0->model[0], 0x40000001); + Hu3DModelAttrReset(arg0->model[0], 0x40000002); + Hu3DMotionSet(arg0->model[0], arg0->motion[temp_r31->unk104]); + Hu3DMotionCalc(arg0->model[0]); + arg0->func = fn_1_6BFC; + } + break; + case 2005: + if (frandmod(60) == 0) { + fn_1_5D3C(temp_r31, &temp_r31->unk4C); + } + if (lbl_1_bss_7C == temp_r31->unk108) { + temp_r31->unk58 = fn_1_1E20(temp_r31->unk58, 0.0f, 0.1f); + } + if (lbl_1_bss_98->work[0] >= 1008 && temp_r31->unk104 == 0 && lbl_1_bss_7C == temp_r31->unk108 && 1.0f == Hu3DMotionTimeGet(arg0->model[0])) { + temp_r31->unk104 = 7; + Hu3DMotionOverlaySet(arg0->model[0], arg0->motion[temp_r31->unk104]); + Hu3DMotionOverlayTimeSet(arg0->model[0], 0.0f); + Hu3DModelAttrReset(arg0->model[0], 0x40000400); + HuAudCharVoicePlay(temp_r31->unk10C, 0x124); + } + if (temp_r31->unk104 == 7 && 73.0f <= Hu3DMotionOverlayTimeGet(arg0->model[0])) { + Hu3DMotionOverlayTimeSet(arg0->model[0], 35.0f); + Hu3DModelAttrReset(arg0->model[0], 0x40000400); + } + temp_r31->unk4C.y = -62.0f + 4.0f * fn_1_5664(&temp_r31->unk4C); + break; + default: + OSReport("*** player mode error(%d)!!\n", temp_r31->unk100); + break; + } + if (temp_r31->unk100 < 2005) { + fn_1_6040(temp_r31, arg0); + } + omSetTra(arg0, temp_r31->unk4C.x, temp_r31->unk4C.y, temp_r31->unk4C.z); + omSetRot(arg0, 0.0f, temp_r31->unk58, 0.0f); +} + +void fn_1_81B4(omObjData *arg0) { + float var_f31; + UnkBssA4Data *temp_r31; + s32 i; + + temp_r31 = arg0->data; + temp_r31->unk00 = NULL; + temp_r31->unk108 = arg0->work[0]; + temp_r31->unk10C = GWPlayerCfg[temp_r31->unk108].character; + temp_r31->unk110 = GWPlayerCfg[temp_r31->unk108].pad_idx; + temp_r31->unk68 = 100.0f; + temp_r31->unk6C = 0.0f; + temp_r31->unk70 = 0.0f; + temp_r31->unk74 = 7.0f; + temp_r31->unk7C = 0; + temp_r31->unk80 = 0; + temp_r31->unk84 = 0; + temp_r31->unk88 = 0; + temp_r31->unk78 = 0; + temp_r31->unk8C = 0; + temp_r31->unk90 = 0; + temp_r31->unk94 = 0; + temp_r31->unk98 = 0; + temp_r31->unk9C = 1; + temp_r31->unk104 = 1; + temp_r31->unk100 = 2000; + temp_r31->unkFC = 0.0f; + temp_r31->unk60 = 1.0f; + temp_r31->unk64 = 0.0f; + arg0->model[0] = CharModelCreate(lbl_1_data_0[temp_r31->unk10C], 4); + CharModelStepTypeSet(lbl_1_data_0[temp_r31->unk10C], 0); + for (i = 0; i < 8; i++) { + arg0->motion[i] = CharModelMotionCreate(lbl_1_data_0[temp_r31->unk10C], lbl_1_data_188[temp_r31->unk10C][i]); + CharModelMotionSet(lbl_1_data_0[temp_r31->unk10C], arg0->motion[i]); + } + Hu3DModelAttrSet(arg0->model[0], 1); + Hu3DModelAttrReset(arg0->model[0], 0x40000001); + Hu3DModelAttrSet(arg0->model[0], 0x40000002); + Hu3DModelLayerSet(arg0->model[0], 3); + Hu3DMotionSet(arg0->model[0], arg0->motion[1]); + Hu3DMotionTimeSet(arg0->model[0], 1.0f); + CharModelVoiceEnableSet(temp_r31->unk10C, arg0->motion[0], 0); + temp_r31->unk4C.x = 450.0f - 300.0f * arg0->work[0]; + temp_r31->unk4C.y = -32.0f; + temp_r31->unk4C.z = 1328.7f; + temp_r31->unk58 = 180.0f; + omSetTra(arg0, temp_r31->unk4C.x, temp_r31->unk4C.y, temp_r31->unk4C.z); + omSetRot(arg0, 0.0f, temp_r31->unk58, 0.0f); + for (i = 0; i < 1; i++) { + Hu3DModelAttrReset(arg0->model[i], 1); + } + temp_r31->unk04 = 288.0f + lbl_1_data_2B0[temp_r31->unk108]; + temp_r31->unk08 = 80; + temp_r31->unk0C[0] = espEntry(DATA_MAKE_NUM(DATADIR_M405, 64), 0, 0); + espTPLvlSet(temp_r31->unk0C[0], 0.5f); + espColorSet(temp_r31->unk0C[0], 0, 0, 0); + temp_r31->unk0C[1] = espEntry(DATA_MAKE_NUM(DATADIR_M405, 63), 0, 0); + temp_r31->unk0C[2] = espEntry(lbl_1_data_290[temp_r31->unk10C], 0, 0); + temp_r31->unk0C[3] = espEntry(DATA_MAKE_NUM(DATADIR_M405, 65), 0, 0); + temp_r31->unk0C[4] = espEntry(DATA_MAKE_NUM(DATADIR_M405, 66), 0, 0); + temp_r31->unk0C[5] = espEntry(DATA_MAKE_NUM(DATADIR_M405, 67), 0, 0); + temp_r31->unk0C[6] = espEntry(DATA_MAKE_NUM(DATADIR_M405, 68), 0, 0); + temp_r31->unk0C[7] = espEntry(DATA_MAKE_NUM(DATADIR_M405, 69), 0, 0); + temp_r31->unk0C[8] = espEntry(DATA_MAKE_NUM(DATADIR_M405, 70), 0, 0); + temp_r31->unk0C[9] = espEntry(DATA_MAKE_NUM(DATADIR_M405, 71), 0, 0); + for (i = 0; i < 10; i++) { + espDrawNoSet(temp_r31->unk0C[i], 0); + espDispOff(temp_r31->unk0C[i]); + espAttrSet(temp_r31->unk0C[i], 1); + espBankSet(temp_r31->unk0C[i], 0); + espPriSet(temp_r31->unk0C[i], 128 - i); + espPosSet(temp_r31->unk0C[i], temp_r31->unk04 + lbl_1_data_2C0[i * 2], temp_r31->unk08 + lbl_1_data_2C0[i * 2 + 1]); + } + for (i = 0; i < 5; i++) { + temp_r31->unkF0[i] = Hu3DParManLink(lbl_1_bss_8C, &lbl_1_data_370); + Hu3DParManAttrSet(temp_r31->unkF0[i], 1); + Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(temp_r31->unkF0[i]), 1); + Hu3DModelLayerSet(Hu3DParManModelIDGet(temp_r31->unkF0[i]), 7); + temp_r31->unkDC[i] = 0; + fn_1_1D18(arg0->model[0], CharModelHookNameGet(temp_r31->unk10C, 4, lbl_1_data_328[i]), &temp_r31->unkA0[i]); + } + temp_r31->unk34 = 0.0f; + temp_r31->unk48 = 0; + temp_r31->unk38 = 0.0f; + temp_r31->unk3C = 0.0f; + temp_r31->unk40 = 0.0f; + if (GWPlayerCfg[temp_r31->unk108].iscom) { + temp_r31->unk44 = GWPlayerCfg[temp_r31->unk108].diff; + switch (GWPlayerCfg[temp_r31->unk108].diff) { + case 0: + temp_r31->unk00 = &lbl_1_data_350; + var_f31 = 0.1f; + break; + case 1: + temp_r31->unk00 = &lbl_1_data_358; + var_f31 = 0.1f; + break; + case 2: + temp_r31->unk00 = &lbl_1_data_360; + var_f31 = 0.1f; + break; + case 3: + default: + temp_r31->unk44 = 3; + temp_r31->unk00 = &lbl_1_data_368; + var_f31 = 0.05f; + break; + } + temp_r31->unk34 = temp_r31->unk00->unk00 + temp_r31->unk00->unk00 * var_f31 * frandf(); + temp_r31->unk48 = temp_r31->unk00->unk04; + temp_r31->unk38 = 6700.0f; + temp_r31->unk3C = 0.0f; + temp_r31->unk40 = 0.0f; + } + CharModelMotionDataClose(lbl_1_data_0[temp_r31->unk10C]); + arg0->func = fn_1_798C; +} + +void fn_1_8AF0(void) { + Vec sp20; + Vec sp14; + Vec sp8; + float var_f26; + float var_f27; + float var_f28; + float var_f29; + float var_f30; + float var_f31; + UnkBssA4Data *var_r30; + s32 i; + + var_f29 = 576.0f; + var_f30 = 0.0f; + var_f26 = 480.0f; + var_f27 = 0.0f; + for (i = 0; i < 4; i++) { + var_r30 = lbl_1_bss_A4[i]->data; + Hu3D3Dto2D(&var_r30->unkA0[4], 1, &sp20); + if (var_f29 > sp20.x) { + var_f29 = sp20.x; + } + if (var_f30 < sp20.x) { + var_f30 = sp20.x; + } + if (var_f26 > sp20.y) { + var_f26 = sp20.y; + } + if (var_f27 < sp20.y) { + var_f27 = sp20.y; + } + } + sp14 = lbl_1_bss_768; + sp8 = lbl_1_bss_750; + switch (lbl_1_bss_78) { + case 0: + if (1.0f < ABS(sp14.z - sp8.z) && sp14.z < sp8.z) { + var_f31 = 0.05f * (288.0f - (var_f29 + var_f30) / 2); + if (0.0f < var_f31) { + lbl_1_bss_70 -= var_f31; + } + sp8.x += 0.02f * -sp8.x; + sp8.y += 0.02f * -sp8.y; + sp8.z += 0.02f * (lbl_1_bss_70 - sp8.z); + sp14.x += 0.02f * (-1500.0f - sp14.x); + sp14.y += 0.02f * (700.0f - sp14.y); + sp14.z += 0.04f * (sp8.z - sp14.z); + } else { + var_f31 = 0.05f * (288.0f - (var_f29 + var_f30) / 2); + if (0.0f < var_f31) { + sp14.z -= var_f31; + sp8.z -= var_f31; + sp14.z = sp8.z; + var_f28 = ABS(var_f30 - var_f29) / 288.0f; + if (1.0f < var_f28) { + var_f28 = 1.0f; + } + var_f31 = 0.1f * (100.0f - var_f29) * var_f28; + if (var_f31 < var_f30 - 520.0f) { + var_f31 = 0.1f * (var_f30 - 520.0f) * var_f28; + } + if (0.0f < var_f31) { + sp14.y += 2.0f * var_f31; + sp14.x -= var_f31; + sp8.x += 0.01f * var_f31; + } + } + } + break; + case 1: + var_f31 = 0.05f * (340.0f - var_f27); + sp14.z += var_f31; + sp8.z += var_f31; + break; + case 2: + var_f31 = 0.05f * (288.0f - (var_f29 + var_f30) / 2); + sp14.z -= var_f31; + sp8.z -= var_f31; + var_f28 = ABS(var_f30 - var_f29) / 261.81818f; + if (1.0f < var_f28) { + var_f28 = 1.0f; + } + var_f31 = 0.1f * (100.0f - var_f29) * var_f28; + if (var_f31 < var_f30 - 480.0f) { + var_f31 = 0.1f * (var_f30 - 480.0f) * var_f28; + } + if (0.0f > var_f31) { + if (360.0f > var_f27 && 1500.0f <= sp14.y) { + sp14.y += var_f31; + sp14.x -= 0.2f * var_f31; + sp8.x += 0.01f * var_f31; + } + } else { + sp14.y += 2.0f * var_f31; + sp14.x -= 0.5f * var_f31; + sp8.x += 0.01f * var_f31; + } + break; + } + fn_1_1350(&sp14, &lbl_1_data_100, &sp8); +} + +static inline void fn_1_9288_InlineFunc(Vec *arg0, float arg1, float arg2, float arg3) { + arg0->x = arg1; + arg0->y = arg2; + arg0->z = arg3; +} + +void fn_1_9288(omObjData *arg0) { + Vec sp18; + Vec spC; + float var_f27; + UnkBssA4Data *temp_r25; + s32 var_r30; + + if (omSysExitReq != 0) { + fn_1_1F58(-1); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_B5C8; + } + lbl_1_bss_740++; + switch (arg0->work[0]) { + case 1000: + if (WipeStatGet() == 0) { + arg0->work[0]++; + lbl_1_bss_80 = 0.0f; + lbl_1_bss_48[1] = lbl_1_data_10C; + lbl_1_bss_18[1] = lbl_1_data_118; + fn_1_9288_InlineFunc(&lbl_1_bss_30[1], -450.0f, lbl_1_bss_48[1].y, lbl_1_bss_48[1].z); + fn_1_9288_InlineFunc(&lbl_1_bss_0[1], -450.0f, lbl_1_bss_18[1].y, lbl_1_bss_18[1].z); + lbl_1_bss_48[0] = lbl_1_bss_30[1]; + lbl_1_bss_18[0] = lbl_1_bss_0[1]; + fn_1_9288_InlineFunc(&lbl_1_bss_30[0], -1100.0f, 200.0f + lbl_1_bss_48[0].y, -200.0f); + lbl_1_bss_0[0].x = 0.0f; + lbl_1_bss_0[0].y = 0.0f; + lbl_1_bss_0[0].z = 1300.0f; + } + break; + case 1001: + lbl_1_bss_80 += 1.0f; + if (90.0f >= lbl_1_bss_80) { + var_r30 = 1; + var_f27 = lbl_1_bss_80; + } else { + var_r30 = 0; + var_f27 = lbl_1_bss_80 - 90.0f; + } + fn_1_11F4(var_f27 / 90.0f, &lbl_1_bss_48[var_r30], &lbl_1_bss_30[var_r30], &sp18); + fn_1_11F4(var_f27 / 90.0f, &lbl_1_bss_18[var_r30], &lbl_1_bss_0[var_r30], &spC); + fn_1_1350(&sp18, &lbl_1_data_100, &spC); + if (180.0f <= lbl_1_bss_80) { + arg0->work[0]++; + lbl_1_bss_80 = 0.0f; + } + break; + case 1002: + lbl_1_bss_80 += 1.0f; + if (10.0f < lbl_1_bss_80) { + arg0->work[0]++; + lbl_1_bss_80 = 0.0f; + } + break; + case 1003: + lbl_1_bss_80 += 1.0f; + if (80.0f < lbl_1_bss_80) { + arg0->work[0]++; + lbl_1_bss_80 = 0.0f; + } + break; + case 1004: + lbl_1_bss_80 += 1.0f; + if (lbl_1_bss_736 < 0) { + lbl_1_bss_736 = MGSeqStartCreate(); + break; + } + if (lbl_1_bss_730 < 0 && (MGSeqStatGet(lbl_1_bss_736) & 0x10)) { + lbl_1_bss_730 = HuAudSeqPlay(0x47); + } + if (MGSeqStatGet(lbl_1_bss_736) == 0) { + arg0->work[0]++; + lbl_1_bss_73C = 0; + lbl_1_bss_736 = -1; + lbl_1_bss_80 = 0.0f; + lbl_1_bss_64 = HuAudFXPlay(0x538); + } + break; + case 1005: + lbl_1_bss_73C++; + if (lbl_1_bss_734 >= 0) { + MGSeqParamSet(lbl_1_bss_734, 1, (18059 - lbl_1_bss_73C) / 60); + } else if (lbl_1_bss_73C > 16200) { + lbl_1_bss_734 = MGSeqTimerCreate((18059 - lbl_1_bss_73C) / 60); + MGSeqPosSet(lbl_1_bss_734, 288.0f, 400.0f); + } + fn_1_580(lbl_1_bss_6E8, 0, lbl_1_bss_73C); + if (lbl_1_bss_73C >= 18000 || lbl_1_bss_7C >= 0) { + arg0->work[0]++; + lbl_1_bss_80 = 0.0f; + if (lbl_1_bss_7C >= 0) { + temp_r25 = lbl_1_bss_A4[lbl_1_bss_7C]->data; + lbl_1_bss_48[0] = lbl_1_bss_768; + lbl_1_bss_30[0] = temp_r25->unk4C; + lbl_1_bss_30[0].y += 100.0f; + lbl_1_bss_30[0].z += 500.0f; + lbl_1_bss_18[0] = lbl_1_bss_750; + lbl_1_bss_0[0] = temp_r25->unk4C; + lbl_1_bss_0[0].y += 75.0f; + lbl_1_bss_0[0].z += 50.0f; + } + } + if (lbl_1_bss_74 != lbl_1_bss_78) { + if (lbl_1_bss_78 == 1) { + fn_1_1350(&lbl_1_data_124, &lbl_1_data_100, &lbl_1_data_130); + } + if (lbl_1_bss_78 == 2) { + fn_1_1350(&lbl_1_data_13C, &lbl_1_data_100, &lbl_1_data_148); + } + } else { + fn_1_8AF0(); + } + lbl_1_bss_74 = lbl_1_bss_78; + break; + case 1006: + if (lbl_1_bss_736 < 0) { + if (lbl_1_bss_734 >= 0) { + MGSeqParamSet(lbl_1_bss_734, 2, -1); + } + lbl_1_bss_734 = -1; + lbl_1_bss_736 = MGSeqFinishCreate(); + fn_1_1F58(100); + if (lbl_1_bss_7C >= 0) { + lbl_1_bss_60 = HuAudFXPlay(0x538); + } + } else { + lbl_1_bss_80 += 1.0f; + if (lbl_1_bss_7C >= 0) { + fn_1_11F4(lbl_1_bss_80 / 60.0f, &lbl_1_bss_48[0], &lbl_1_bss_30[0], &sp18); + fn_1_11F4(lbl_1_bss_80 / 60.0f, &lbl_1_bss_18[0], &lbl_1_bss_0[0], &spC); + fn_1_1350(&sp18, &lbl_1_data_100, &spC); + } + if (60.0f < lbl_1_bss_80 && MGSeqStatGet(lbl_1_bss_736) == 0) { + arg0->work[0] = 1008; + if (lbl_1_bss_7C >= 0 && !GWPlayerCfg[lbl_1_bss_7C].iscom && lbl_1_bss_73C < 3600) { + GWGameStat.present[53] = 1; + } + if (lbl_1_bss_7C >= 0 && !GWPlayerCfg[lbl_1_bss_7C].iscom && lbl_1_bss_738 > lbl_1_bss_73C) { + arg0->work[0] = 1007; + lbl_1_bss_728 = 0.0f; + lbl_1_bss_738 = lbl_1_bss_73C; + GWMGRecordSet(0, lbl_1_bss_738); + fn_1_580(lbl_1_bss_6E8, 7, lbl_1_bss_73C); + } + lbl_1_bss_736 = -1; + lbl_1_bss_80 = 0.0f; + } + } + break; + case 1007: + if (lbl_1_bss_736 < 0) { + lbl_1_bss_736 = MGSeqRecordCreate(lbl_1_bss_738); + break; + } + if (MGSeqStatGet(lbl_1_bss_736) == 0) { + arg0->work[0]++; + lbl_1_bss_80 = 0.0f; + lbl_1_bss_736 = -1; + } + break; + case 1008: + if (lbl_1_bss_736 < 0) { + if (lbl_1_bss_7C < 0) { + lbl_1_bss_736 = MGSeqDrawCreate(); + HuAudSStreamPlay(4); + } else { + lbl_1_bss_736 = MGSeqWinCreate(GWPlayerCfg[lbl_1_bss_7C].character, -1, -1, -1); + HuAudSStreamPlay(1); + } + } else { + lbl_1_bss_80 += 1.0f; + 0 <= lbl_1_bss_7C; + if (210.0f < lbl_1_bss_80 && MGSeqStatGet(lbl_1_bss_736) == 0) { + fn_1_1F58(-1); + lbl_1_bss_736 = -1; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_B5C8; + } + } + break; + default: + OSReport("*** main mode error(%d)!!\n", arg0->work[0]); + break; + } + fn_1_A40(); +} + +void fn_1_AD10(omObjData *arg0) { + s32 i; + + arg0->work[0] = 1000; + lbl_1_bss_78 = 0; + lbl_1_bss_74 = 0; + lbl_1_bss_70 = 900.0f; + omSetTra(arg0, 0.0f, 0.0f, 0.0f); + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M405, 48)); + Hu3DModelAttrSet(arg0->model[0], 0x4001); + Hu3DModelAttrSet(arg0->model[0], 0x40000002); + Hu3DModelLayerSet(arg0->model[0], 5); + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M405, 49)); + Hu3DModelAttrSet(arg0->model[1], 0x4001); + Hu3DModelAttrSet(arg0->model[1], 0x40000002); + Hu3DModelLayerSet(arg0->model[1], 6); + Hu3DModelPosSet(arg0->model[1], 0.0f, 0.0f, 0.0f); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M405, 50)); + Hu3DModelAttrSet(arg0->model[2], 1); + Hu3DModelAttrSet(arg0->model[2], 0x40000002); + Hu3DModelLayerSet(arg0->model[2], 1); + Hu3DModelPosSet(arg0->model[2], 0.0f, 0.0f, 0.0f); + Hu3DModelShadowMapSet(arg0->model[2]); + arg0->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M405, 51)); + Hu3DModelAttrSet(arg0->model[3], 1); + Hu3DModelAttrSet(arg0->model[3], 0x40000002); + Hu3DModelLayerSet(arg0->model[3], 1); + Hu3DModelPosSet(arg0->model[3], 0.0f, -4.0f, 0.0f); + Hu3DModelTPLvlSet(arg0->model[3], 0.4f); + arg0->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M405, 52)); + Hu3DModelAttrSet(arg0->model[4], 0x4001); + Hu3DModelAttrSet(arg0->model[4], 0x40000002); + Hu3DModelLayerSet(arg0->model[4], 6); + Hu3DModelPosSet(arg0->model[4], 0.0f, 0.0f, 0.0f); + fn_1_B4C(80.0f, DATA_MAKE_NUM(DATADIR_M405, 72)); + fn_1_9EC(); + for (i = 0; i < 5; i++) { + Hu3DModelAttrReset(arg0->model[i], 1); + } + lbl_1_bss_68 = HuAudFXPlay(0x537); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_9288; +} + +void ModuleProlog(void) { + Vec sp8; + s32 temp_r29; + s32 i; + omObjData *temp_r30; + + OSReport("******* M405 ObjectSetup *********\n"); + lbl_1_bss_774 = omInitObjMan(100, 0x2000); + omGameSysInit(lbl_1_bss_774); + lbl_1_bss_740 = 0; + lbl_1_bss_736 = -1; + lbl_1_bss_734 = -1; + lbl_1_bss_7C = -1; + lbl_1_bss_68 = -1; + lbl_1_bss_64 = -1; + lbl_1_bss_60 = -1; + lbl_1_bss_730 = -1; + lbl_1_bss_728 = -1.0f; + lbl_1_bss_738 = GWMGRecordGet(0); + if (lbl_1_bss_738 == 0) { + lbl_1_bss_738 = 18000; + } + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraPerspectiveSet(1, 30.0f, 20.0f, 20000.0f, 1.2f); + fn_1_1350(&lbl_1_data_10C, &lbl_1_data_100, &lbl_1_data_118); + temp_r29 = Hu3DGLightCreateV(&lbl_1_data_154, &lbl_1_data_160, &lbl_1_data_16C); + Hu3DGLightStaticSet(temp_r29, 1); + Hu3DGLightInfinitytSet(temp_r29); + Hu3DShadowCreate(30.0f, 20.0f, 20000.0f); + Hu3DShadowTPLvlSet(0.8f); + PSVECNormalize(&lbl_1_data_170, &sp8); + Hu3DShadowPosSet(&lbl_1_data_170, &sp8, &lbl_1_data_17C); + lbl_1_bss_90 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M405, 57)); + HuSprAnimLock(lbl_1_bss_90); + lbl_1_bss_8C = Hu3DParManCreate(lbl_1_bss_90, 500, &lbl_1_data_370); + Hu3DParManAttrSet(lbl_1_bss_8C, 1); + lbl_1_bss_88 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M405, 62)); + HuSprAnimLock(lbl_1_bss_88); + lbl_1_bss_84 = Hu3DParManCreate(lbl_1_bss_88, 2, &lbl_1_data_3C0); + Hu3DParManAttrSet(lbl_1_bss_84, 1); + Hu3DModelLayerSet(Hu3DParManModelIDGet(lbl_1_bss_84), 7); + omMakeGroupEx(lbl_1_bss_774, 0, 4); + lbl_1_bss_A4 = omGetGroupMemberListEx(lbl_1_bss_774, 0); + for (i = 0; i < 4; i++) { + temp_r30 = omAddObjEx(lbl_1_bss_774, 100, 1, 8, 0, fn_1_81B4); + temp_r30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkBssA4Data), MEMORY_DEFAULT_NUM); + temp_r30->work[0] = i; + } + lbl_1_bss_A0 = omAddObjEx(lbl_1_bss_774, 101, 2, 2, -1, fn_1_5B28); + lbl_1_bss_9C = omAddObjEx(lbl_1_bss_774, 103, 5, 0, -1, fn_1_5404); + lbl_1_bss_98 = omAddObjEx(lbl_1_bss_774, 104, 5, 0, -1, fn_1_AD10); +} + +void fn_1_B5C8(omObjData *arg0) { + s32 i; + + if (lbl_1_bss_68 >= 0) { + lbl_1_bss_68 = -1; + HuAudFXStop(lbl_1_bss_68); + } + if (lbl_1_bss_64 >= 0) { + lbl_1_bss_64 = -1; + HuAudFXStop(lbl_1_bss_64); + } + if (lbl_1_bss_60 >= 0) { + lbl_1_bss_60 = -1; + HuAudFXStop(lbl_1_bss_60); + } + if (WipeStatGet() == 0) { + if (lbl_1_bss_736 >= 0) { + MGSeqKill(lbl_1_bss_736); + } + if (lbl_1_bss_734 >= 0) { + MGSeqKill(lbl_1_bss_734); + } + MGSeqKillAll(); + HuAudAllStop(); + for (i = 0; i < 4; i++) { + CharModelKill(lbl_1_data_0[GWPlayerCfg[i].character]); + } + omOvlReturnEx(1, 1); + } +} diff --git a/src/REL/m407dll/main.c b/src/REL/m407dll/main.c index 7be29e78..a3b4c1d7 100644 --- a/src/REL/m407dll/main.c +++ b/src/REL/m407dll/main.c @@ -109,7 +109,7 @@ void fn_1_4980(Process* arg0) { fn_1_3AC8(lbl_1_bss_3980); fn_1_41CC(lbl_1_bss_3980); fn_1_5C5C(lbl_1_bss_3980, lbl_1_bss_3978); - WipeCreate(1, 0, 0x3C); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); temp_r31->unk_06 = -1; temp_r31->unk_08 = -1; temp_r31->unk_24 = 0; @@ -127,7 +127,7 @@ void fn_1_4B7C(void) { temp_r31 = lbl_1_bss_397C->data; if (temp_r31->unk_04 == 0) { - WipeCreate(2, 0, 60); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); temp_r31->unk_04++; } if (WipeStatGet() == 0) { diff --git a/src/REL/messDll/main.c b/src/REL/messDll/main.c index 38c846f0..8b6fc4f3 100755 --- a/src/REL/messDll/main.c +++ b/src/REL/messDll/main.c @@ -47,7 +47,7 @@ void ModuleProlog(void) { } static void fn_1_2BC(omObjData *arg0) { - WipeCreate(1, 0, 10); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10); arg0->func = fn_1_300; } diff --git a/src/REL/modeltestDll/main.c b/src/REL/modeltestDll/main.c index c2609edb..8b7de1cb 100644 --- a/src/REL/modeltestDll/main.c +++ b/src/REL/modeltestDll/main.c @@ -59,7 +59,7 @@ void ModuleProlog(void) lbl_1_bss_9A0 = omAddObjEx(prc, 0x7FDA, 0, 0, -1, omOutView); Hu3DBGColorSet(0x20U, 0x80U, 0x80U); - WipeCreate(1, 0, 0x1E); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); } // -------------------------------------------------------------------------- // diff --git a/src/REL/modeltestDll/modeltest00.c b/src/REL/modeltestDll/modeltest00.c index f3407ed4..cb6e51fc 100644 --- a/src/REL/modeltestDll/modeltest00.c +++ b/src/REL/modeltestDll/modeltest00.c @@ -46,7 +46,7 @@ void fn_1_34B0() lbl_1_bss_9A8 = HuPrcCreate(fn_1_46F0, 0x64U, 0x2000U, 0); Hu3DBGColorSet(0x20U, 0x80U, 0x80U); - WipeCreate(1, 0, 0x1E); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); } // -------------------------------------------------------------------------- // diff --git a/src/REL/option/scene.c b/src/REL/option/scene.c index e8cf097b..6713e5fe 100755 --- a/src/REL/option/scene.c +++ b/src/REL/option/scene.c @@ -159,7 +159,7 @@ static void fn_1_5EC(omObjData *arg0) { arg0->unk10 = 2; /* fallthrough */ case 2: - WipeCreate(2, 0, 0x3C); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); HuAudFadeOut(1000); arg0->unk10 = 3; /* fallthrough */ @@ -191,7 +191,7 @@ static void fn_1_6E8(void) { espPosSet(temp_r31, 288.0f, 240.0f); espAttrReset(temp_r31, 4); Hu3DBGColorSet(0, 0, 0); - WipeCreate(1, 0, 0xA); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 10); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -199,7 +199,7 @@ static void fn_1_6E8(void) { if (SLSave() == 0) { GWSaveModeSet(1); } - WipeCreate(2, 0, 0x14); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); while (WipeStatGet() != 0) { HuPrcVSleep(); } diff --git a/src/REL/option/state.c b/src/REL/option/state.c index b9714e13..2b952b61 100755 --- a/src/REL/option/state.c +++ b/src/REL/option/state.c @@ -73,7 +73,7 @@ static void fn_1_2FB0(omObjData *arg0) { arg0->unk10 = 1; /* fallthrough */ case 1: - WipeCreate(1, -1, 0x3C); + WipeCreate(WIPE_MODE_IN, -1, 60); arg0->unk10 = 2; break; case 2: diff --git a/src/REL/present/init.c b/src/REL/present/init.c index fabc34fa..81c7a28d 100644 --- a/src/REL/present/init.c +++ b/src/REL/present/init.c @@ -160,7 +160,7 @@ void fn_1_5EC(omObjData *object) } object->unk10 = 2; case 2: - WipeCreate(2, 0, 60); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); HuAudFadeOut(1000); object->unk10 = 3; break; diff --git a/src/REL/present/present.c b/src/REL/present/present.c index 458235f4..51e47269 100644 --- a/src/REL/present/present.c +++ b/src/REL/present/present.c @@ -816,7 +816,7 @@ void fn_1_33AC(omObjData *object) var_r31->unk_254 = 1.0f / 360.0f; object->unk10 = 1; case 1: - WipeCreate(1, 0, 120); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 120); object->unk10 = 2; case 2: var_f31 = sind(90.0f * var_r31->unk_24C); diff --git a/src/REL/subchrselDll/main.c b/src/REL/subchrselDll/main.c index ebb065d2..78372e04 100644 --- a/src/REL/subchrselDll/main.c +++ b/src/REL/subchrselDll/main.c @@ -44,7 +44,7 @@ void ModuleProlog(void) Process *sp8 = omInitObjMan(0x32, 0x2000); Hu3DBGColorSet(0, 0, 0); HuPrcChildCreate(SubchrMain, 4096, 12288, 0, HuPrcCurrentGet()); - WipeCreate(1, 0, -1); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); } static u16 GetBtns(void) @@ -97,7 +97,7 @@ static void SubchrMain() } } HuAudFadeOut(30); - WipeCreate(2, 0, -1); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); HuPrcSleep(wipeData.duration+1.0f); MGSeqKillAll(); omOvlGotoEx(OVL_M433, 1, 0, 0); @@ -149,7 +149,7 @@ static void SubchrMain() } if(GetBtns() & PAD_BUTTON_B) { HuAudFadeOut(30); - WipeCreate(2, 0, -1); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); HuPrcSleep(wipeData.duration+1.0f); MGSeqKillAll(); omOvlReturnEx(1, 1); diff --git a/src/REL/w03Dll/condor.c b/src/REL/w03Dll/condor.c index 983d3752..4a937672 100644 --- a/src/REL/w03Dll/condor.c +++ b/src/REL/w03Dll/condor.c @@ -398,7 +398,7 @@ void fn_1_3968(s32 arg0) { if (var_r28 == 0) { if (sp8 == 0x78U) { WipeColorSet(0, 0, 0); - WipeCreate(2, 0, -1); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); var_r28 = 1; } } else if (WipeStatGet() == 0) { @@ -415,7 +415,7 @@ void fn_1_3E88(s32 arg0) { lbl_1_bss_7D = 1; BoardStatusShowSetForce(arg0); BoardStatusShowSet(arg0, 1); - WipeCreate(1, 0, 0x15); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); @@ -495,7 +495,7 @@ void fn_1_3F5C(s32 arg0) { BoardStatusItemSet(0); HuPrcSleep(2); BoardStatusItemSet(1); - WipeCreate(1, 0, 0x15); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); @@ -1019,7 +1019,7 @@ void fn_1_5C5C(omObjData* arg0, w03UnkStruct5* arg1) { if ((BoardModelMotionTimeGet(lbl_1_data_314) >= 410.0f) && (arg1->unk00_bit3) == 0) { WipeColorSet(0, 0, 0); - WipeCreate(2, 0, -1); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); arg1->unk00_bit3 = 1; BoardAudSeqFadeOut(1, 0x3E8); } diff --git a/src/REL/w03Dll/statue.c b/src/REL/w03Dll/statue.c index a26deec9..91374679 100644 --- a/src/REL/w03Dll/statue.c +++ b/src/REL/w03Dll/statue.c @@ -662,19 +662,20 @@ void fn_1_2B44(void) { GXSetBlendMode(GX_BM_BLEND, GX_BL_INVDSTCLR, GX_BL_SRCALPHA, GX_LO_NOOP); GXSetVtxDesc(GX_VA_POS, GX_DIRECT); GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_S, GX_RGBX8, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_RGBX8, 0); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); GXSetZMode(1, GX_LEQUAL, 0); GXSetAlphaUpdate(1); GXSetColorUpdate(1); GXBegin(GX_QUADS, GX_VTXFMT0, 4); GXPosition2u16(temp_f28, temp_f27); - GXPosition2f32(0.0f, 0.0f); + GXTexCoord2f32(0.0f, 0.0f); GXPosition2u16(temp_f30, temp_f27); - GXPosition2f32(1.0f, 0.0f); + GXTexCoord2f32(1.0f, 0.0f); GXPosition2u16(temp_f30, temp_f29); - GXPosition2f32(1.0f, 1.0f); + GXTexCoord2f32(1.0f, 1.0f); GXPosition2u16(temp_f28, temp_f29); - GXPosition2f32(0.0f, 1.0f); + GXTexCoord2f32(0.0f, 1.0f); + GXEnd(); GXSetChanMatColor(GX_COLOR0A0, sp1C); } diff --git a/src/REL/w05Dll/hotel.c b/src/REL/w05Dll/hotel.c index 313ba6ed..30043d10 100644 --- a/src/REL/w05Dll/hotel.c +++ b/src/REL/w05Dll/hotel.c @@ -147,21 +147,21 @@ void fn_1_155C(void) { BoardCameraTargetModelSet(lbl_1_data_164); BoardCameraOffsetSet(0.0f, 200.0f, 0.0f); BoardCameraMotionWait(); - HuPrcSleep(0x3C); + HuPrcSleep(60); WipeColorSet(0, 0, 0); - WipeCreate(2, 0, 0x30); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 48); while (WipeStatGet() != 0) { HuPrcVSleep(); } fn_1_14D0(); fn_1_13D4(); - WipeCreate(1, 0, 0x30); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 48); while (WipeStatGet() != 0) { HuPrcVSleep(); } - HuPrcSleep(0x3C); + HuPrcSleep(60); BoardCameraTargetPlayerSet(lbl_1_bss_28); BoardCameraMotionWait(); } diff --git a/src/game/THPDraw.c b/src/game/THPDraw.c index 79eb5554..8290c4ee 100755 --- a/src/game/THPDraw.c +++ b/src/game/THPDraw.c @@ -37,7 +37,7 @@ void THPGXYuv2RgbSetup(GXRenderModeObj *obj, GXColor *arg1, Mtx arg2) { GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_DIRECT); GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT7, GX_VA_POS, GX_TEX_ST, GX_RGBA4, 0); + GXSetVtxAttrFmt(GX_VTXFMT7, GX_VA_POS, GX_POS_XYZ, GX_RGBA4, 0); GXSetVtxAttrFmt(GX_VTXFMT7, GX_VA_TEX0, GX_TEX_ST, GX_RGBX8, 0); GXSetNumTevStages(5); GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR_NULL); diff --git a/src/game/board/battle.c b/src/game/board/battle.c index 5713695d..81a47c66 100755 --- a/src/game/board/battle.c +++ b/src/game/board/battle.c @@ -197,7 +197,7 @@ static void ExecBattle(void) { } if (_CheckFlag(0x10004)) { BoardStatusItemSet(1); - WipeCreate(1, 0, -1); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -296,7 +296,7 @@ static void ExecBattle(void) { } _SetFlag(0x1000E); WipeColorSet(0xFF, 0xFF, 0xFF); - WipeCreate(2, 0, -1); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); while (WipeStatGet() != 0) { HuPrcVSleep(); } diff --git a/src/game/board/boo.c b/src/game/board/boo.c index b4d2a436..f8323694 100755 --- a/src/game/board/boo.c +++ b/src/game/board/boo.c @@ -683,7 +683,7 @@ static void BallRenderHook(void) { GXSetScissor(0, 0, 160, 160); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_RGBA6, 0); sp10.r = 0; sp10.g = 0; sp10.b = 0; diff --git a/src/game/board/mg_setup.c b/src/game/board/mg_setup.c index 2f9eb753..38227773 100644 --- a/src/game/board/mg_setup.c +++ b/src/game/board/mg_setup.c @@ -177,7 +177,7 @@ static void ExecMGSetup(void) { sp54.z = 0.0f; BoardCameraMotionStartEx(-1, NULL, &sp54, 1300.0f, -1.0f, 21); BoardCameraMotionWait(); - WipeCreate(1, 0, 0x15); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); @@ -268,7 +268,7 @@ static void ExecMGSetup(void) { BoardAudSeqFadeOut(0, 0x3E8U); _SetFlag(0x1000EU); WipeColorSet(0xFFU, 0xFFU, 0xFFU); - WipeCreate(2, 0, -1); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); while (WipeStatGet() != 0) { HuPrcVSleep(); } diff --git a/src/game/board/view.c b/src/game/board/view.c index edbe9ccb..0d5ea2d5 100755 --- a/src/game/board/view.c +++ b/src/game/board/view.c @@ -103,7 +103,7 @@ void BoardViewOverheadExec(s32 arg0) { } _SetFlag(0x1001C); WipeColorSet(0xFF, 0xFF, 0xFF); - WipeCreate(2, 1, 1); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_CROSS, 1); while (WipeStatGet() != 0) { HuPrcVSleep(); } @@ -314,7 +314,7 @@ static void ExecOverheadView(void) { HuPrcVSleep(); SetTargetView(); WipeColorSet(0xFF, 0xFF, 0xFF); - WipeCreate(1, 1, 0xA); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_CROSS, 10); while (WipeStatGet() != 0) { HuPrcVSleep(); } diff --git a/src/game/board/warp.c b/src/game/board/warp.c index 3bd2db5a..06656cdb 100644 --- a/src/game/board/warp.c +++ b/src/game/board/warp.c @@ -148,7 +148,7 @@ static void WarpLaunch(s32 player) { BoardPlayerPosSetV(player, &warpPos); if (!(warpPos.y < warpYFloor)) { WipeColorSet(0U, 0U, 0U); - WipeCreate(2, 0, 21); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); @@ -182,7 +182,7 @@ static void WarpStartImpact(s32 player) { BoardCameraMoveSet(0); BoardCameraTargetSpaceSet(warpSpace); HuPrcSleep(1); - WipeCreate(1, 0, 0x15); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 21); while (WipeStatGet() != 0) { HuPrcVSleep(); } diff --git a/src/game/chrman.c b/src/game/chrman.c index 34edc463..0a0db6d1 100755 --- a/src/game/chrman.c +++ b/src/game/chrman.c @@ -2051,7 +2051,7 @@ static void UpdateNpcEffect(void) { } } -s32 CharModelStepTypeSet(s16 character, s32 arg1) { +void CharModelStepTypeSet(s16 character, s32 arg1) { UnkCharInstanceStruct *temp_r31 = &charInstance[character]; temp_r31->unkB0 = arg1; diff --git a/src/game/hsfanim.c b/src/game/hsfanim.c index 4c8592c2..bede6b2d 100755 --- a/src/game/hsfanim.c +++ b/src/game/hsfanim.c @@ -823,10 +823,10 @@ static void _Hu3DParticleAttrReset(ModelData *arg0, Mtx arg1) { } GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_RGBA6, 0); GXSetArray(GX_VA_POS, temp_r31->unk_4C, 0xC); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); GXSetArray(GX_VA_CLR0, (u8*) temp_r31->unk_48 + 0x40, 0x44); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); diff --git a/src/game/hsfdraw.c b/src/game/hsfdraw.c index 4730c4b2..cca2d8bf 100755 --- a/src/game/hsfdraw.c +++ b/src/game/hsfdraw.c @@ -503,19 +503,19 @@ static void FaceDraw(HsfdrawStruct00 *arg0, HsfFace *arg1) { vtxModeBak = var_r22; GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_RGBA6, 0); GXSetArray(GX_VA_POS, temp_r28->data.vertex->data, 0xC); GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); if (temp_r29->hsfData->cenvCnt == 0) { - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_TEX_S, GX_RGB8, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_RGB8, 0); GXSetArray(GX_VA_NRM, temp_r28->data.normal->data, 3); } else { - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_TEX_S, GX_RGBA6, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_RGBA6, 0); GXSetArray(GX_VA_NRM, temp_r28->data.normal->data, 0xC); } if (var_r22 & 4) { GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); GXSetArray(GX_VA_CLR0, temp_r28->data.color->data, 4); } GXSetZCompLoc(1); @@ -576,18 +576,18 @@ static void FaceDraw(HsfdrawStruct00 *arg0, HsfFace *arg1) { vtxModeBak = var_r22; GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_RGBA6, 0); GXSetArray(GX_VA_POS, temp_r28->data.vertex->data, 0xC); if (var_r22 & 2) { GXSetVtxDesc(GX_VA_NBT, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NBT, GX_TEX_ST, GX_RGBA4, 8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NBT, GX_NRM_NBT, GX_RGBA4, 8); } else { GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); if (temp_r29->hsfData->cenvCnt == 0) { - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_TEX_S, GX_RGB8, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_RGB8, 0); GXSetArray(GX_VA_NRM, temp_r28->data.normal->data, 3); } else { - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_TEX_S, GX_RGBA6, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_RGBA6, 0); GXSetArray(GX_VA_NRM, temp_r28->data.normal->data, 0xC); } } @@ -596,7 +596,7 @@ static void FaceDraw(HsfdrawStruct00 *arg0, HsfFace *arg1) { GXSetArray(GX_VA_TEX0, temp_r28->data.st->data, 8); if (var_r22 & 4) { GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); GXSetArray(GX_VA_CLR0, temp_r28->data.color->data, 4); } GXSetZCompLoc(0); @@ -1668,19 +1668,19 @@ static void FaceDrawShadow(HsfdrawStruct00 *arg0, HsfFace *arg1) { vtxModeBak = var_r30; GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_RGBA6, 0); GXSetArray(GX_VA_POS, temp_r31->data.vertex->data, 0xC); GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); if (temp_r28->hsfData->cenvCnt == 0) { - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_TEX_S, GX_RGB8, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_RGB8, 0); GXSetArray(GX_VA_NRM, temp_r31->data.normal->data, 3); } else { - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_TEX_S, GX_RGBA6, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_RGBA6, 0); GXSetArray(GX_VA_NRM, temp_r31->data.normal->data, 0xC); } if (var_r30 & 4) { GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); GXSetArray(GX_VA_CLR0, temp_r31->data.color->data, 4); } GXSetZCompLoc(1); @@ -1701,18 +1701,18 @@ static void FaceDrawShadow(HsfdrawStruct00 *arg0, HsfFace *arg1) { vtxModeBak = var_r30; GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_RGBA6, 0); GXSetArray(GX_VA_POS, temp_r31->data.vertex->data, 0xC); if (var_r30 & 2) { GXSetVtxDesc(GX_VA_NBT, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NBT, GX_TEX_ST, GX_RGBA4, 8); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NBT, GX_NRM_NBT, GX_RGBA4, 8); } else { GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); if (temp_r28->hsfData->cenvCnt == 0) { - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_TEX_S, GX_RGB8, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_RGB8, 0); GXSetArray(GX_VA_NRM, temp_r31->data.normal->data, 3); } else { - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_TEX_S, GX_RGBA6, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_RGBA6, 0); GXSetArray(GX_VA_NRM, temp_r31->data.normal->data, 0xC); } } @@ -1721,7 +1721,7 @@ static void FaceDrawShadow(HsfdrawStruct00 *arg0, HsfFace *arg1) { GXSetArray(GX_VA_TEX0, temp_r31->data.st->data, 8); if (var_r30 & 4) { GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_ST, GX_RGBA8, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); GXSetArray(GX_VA_CLR0, temp_r31->data.color->data, 4); } GXSetZCompLoc(0); diff --git a/src/game/window.c b/src/game/window.c index 114e5f4e..29f63d17 100644 --- a/src/game/window.c +++ b/src/game/window.c @@ -433,9 +433,9 @@ static void MesDispFunc(HuSprite *sprite) { GXSetVtxDesc(GX_VA_POS, GX_DIRECT); GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_RGBA6, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_RGBA6, 0); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_TEX_S, GX_RGBA8, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGB, GX_RGBA8, 0); GXSetCullMode(GX_CULL_NONE); GXSetNumTexGens(1); GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY);