From ff89a2176de2be62e9cfd9b575bd8d30c1bd1765 Mon Sep 17 00:00:00 2001 From: mrshigure Date: Sun, 19 Jan 2025 07:28:17 -0800 Subject: [PATCH] Matched mstory3Dll (US) --- config/GMPE01_00/rels/mstory3Dll/symbols.txt | 600 ++-- configure.py | 8 +- include/REL/mstory3Dll.h | 99 + include/game/gamework.h | 6 +- include/game/gamework_data.h | 5 + src/REL/mstory3Dll/main.c | 1044 +++++++ src/REL/mstory3Dll/result.c | 1617 ++++++++++ src/REL/mstory3Dll/result_seq.c | 2928 ++++++++++++++++++ src/REL/mstory3Dll/win_effect.c | 322 ++ src/game/gamework.c | 6 +- 10 files changed, 6325 insertions(+), 310 deletions(-) create mode 100755 include/REL/mstory3Dll.h create mode 100755 src/REL/mstory3Dll/main.c create mode 100755 src/REL/mstory3Dll/result.c create mode 100755 src/REL/mstory3Dll/result_seq.c create mode 100755 src/REL/mstory3Dll/win_effect.c diff --git a/config/GMPE01_00/rels/mstory3Dll/symbols.txt b/config/GMPE01_00/rels/mstory3Dll/symbols.txt index a6159435..4863cac3 100644 --- a/config/GMPE01_00/rels/mstory3Dll/symbols.txt +++ b/config/GMPE01_00/rels/mstory3Dll/symbols.txt @@ -4,7 +4,7 @@ fn_1_A4 = .text:0x000000A4; // type:function size:0x2C8 _prolog = .text:0x0000036C; // type:function size:0x54 scope:global _epilog = .text:0x000003C0; // type:function size:0x4C scope:global fn_1_40C = .text:0x0000040C; // type:function size:0xE4 -fn_1_4F0 = .text:0x000004F0; // type:function size:0xE4 +ObjectSetup = .text:0x000004F0; // type:function size:0xE4 fn_1_5D4 = .text:0x000005D4; // type:function size:0x28 fn_1_5FC = .text:0x000005FC; // type:function size:0x20 fn_1_61C = .text:0x0000061C; // type:function size:0xD8 @@ -202,315 +202,315 @@ fn_1_1E558 = .text:0x0001E558; // type:function size:0x2C8 fn_1_1E820 = .text:0x0001E820; // type:function size:0x8E0 _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:0x8 data:double -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_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_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double -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:0xC data:4byte -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0xC data:4byte -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0xC data:4byte -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_110 = .rodata:0x00000110; // type:object size:0x8 data:double -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x20 data:4byte -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:0x1 data:byte -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0xC data:4byte -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x20 data:4byte -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float -lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float -lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float -lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float -lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 data:double -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float -lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float -lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x8 data:4byte -lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float -lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float -lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x24 data:4byte -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float -lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float -lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x24 data:4byte -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float -lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x10 data:4byte -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float -lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float -lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x18 data:4byte -lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x78 -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x18 data:4byte -lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x8 data:double -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 data:double -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 data:double -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:float -lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 data:float -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 data:double -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float -lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x28 data:4byte -lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x8 data:double -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x1 data:byte -lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float -lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float -lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 data:float -lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float -lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 data:float -lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 data:float -lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 data:float -lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 data:float -lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 data:float -lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 data:float -lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 data:float -lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 data:float -lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 data:float -lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 data:float -lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 data:float -lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 data:float -lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x1C data:4byte -lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float -lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 data:double -lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x8 data:double -lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 data:float -lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 data:float -lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float -lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float -lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float -lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float -lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float -lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float -lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float -lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 data:float -lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 data:float -lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 data:float -lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 data:float -lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float -lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float -lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 data:float -lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float -lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 data:float -lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 data:float -lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float -lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 data:float -lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 data:float -lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float -lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 data:float -lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 data:float -lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 data:float -lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 data:float -lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 data:float -lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0x4 data:float -lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 data:float -lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 data:float -lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float -lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 data:float -lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 data:float -lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 data:float -lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x4 data:float -lbl_1_rodata_534 = .rodata:0x00000534; // type:object size:0x4 data:float -lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 data:float -lbl_1_rodata_53C = .rodata:0x0000053C; // type:object size:0x4 data:float -lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x4 data:float -lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x4 data:float -lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x4 data:float -lbl_1_rodata_54C = .rodata:0x0000054C; // type:object size:0x14 data:4byte -lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x3C data:4byte -lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x18 data:4byte -lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 data:float -lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x4 data:float -lbl_1_rodata_5BC = .rodata:0x000005BC; // type:object size:0x4 data:float -lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x4 data:float -lbl_1_rodata_5C4 = .rodata:0x000005C4; // type:object size:0x4 data:float -lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x4 data:float -lbl_1_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 data:float -lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 data:float -lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x8 data:double -lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 data:float -lbl_1_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 data:float -lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x8 data:double -lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x4 data:float -lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x8 data:double -lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 data:double -lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x8 data:double -lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x8 data:double -lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x4 data:float -lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x8 data:double -lbl_1_rodata_628 = .rodata:0x00000628; // type:object size:0x8 data:double -lbl_1_rodata_630 = .rodata:0x00000630; // type:object size:0x4 data:float -lbl_1_rodata_634 = .rodata:0x00000634; // type:object size:0x4 data:float -lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x8 data:double -lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C = .rodata:0x0000007C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +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_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +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:0xC scope:local data:4byte +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0xC scope:local data:4byte +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_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x20 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:byte +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0xC 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:0x20 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 scope:local data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x10 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x78 scope:local +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x28 scope:local data:4byte +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x8 scope:local data:double +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 scope:local data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 scope:local data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44C = .rodata:0x0000044C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x4 scope:local data:float +lbl_1_rodata_454 = .rodata:0x00000454; // type:object size:0x4 scope:local data:float +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x4 scope:local data:float +lbl_1_rodata_45C = .rodata:0x0000045C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 scope:local data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x1C scope:local data:4byte +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 scope:local data:double +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A4 = .rodata:0x000004A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 scope:local data:float +lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0x4 scope:local data:float +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 scope:local data:float +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x4 scope:local data:float +lbl_1_rodata_534 = .rodata:0x00000534; // type:object size:0x4 scope:local data:float +lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 scope:local data:float +lbl_1_rodata_53C = .rodata:0x0000053C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x4 scope:local data:float +lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x4 scope:local data:float +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54C = .rodata:0x0000054C; // type:object size:0x14 scope:local data:4byte +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x3C scope:local data:4byte +lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5BC = .rodata:0x000005BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C4 = .rodata:0x000005C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5CC = .rodata:0x000005CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 scope:local data:double +lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x8 scope:local data:double +lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x8 scope:local data:double +lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x4 scope:local data:float +lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x8 scope:local data:double +lbl_1_rodata_628 = .rodata:0x00000628; // type:object size:0x8 scope:local data:double +lbl_1_rodata_630 = .rodata:0x00000630; // type:object size:0x4 scope:local data:float +lbl_1_rodata_634 = .rodata:0x00000634; // type:object size:0x4 scope:local data:float +lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x8 scope:local data:double +lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x70 -lbl_1_data_70 = .data:0x00000070; // type:object size:0x25 data:string -lbl_1_data_95 = .data:0x00000095; // type:object size:0xD data:string +lbl_1_data_70 = .data:0x00000070; // type:object size:0x25 scope:local data:string +lbl_1_data_95 = .data:0x00000095; // type:object size:0xD scope:local data:string lbl_1_data_A4 = .data:0x000000A4; // type:object size:0x8 -lbl_1_data_AC = .data:0x000000AC; // type:object size:0x28 data:string -lbl_1_data_D4 = .data:0x000000D4; // type:object size:0x10 data:string -lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x3 data:string -lbl_1_data_E7 = .data:0x000000E7; // type:object size:0x1A data:string -lbl_1_data_101 = .data:0x00000101; // type:object size:0x1A data:string -lbl_1_data_11B = .data:0x0000011B; // type:object size:0xE data:string +lbl_1_data_AC = .data:0x000000AC; // type:object size:0x28 scope:local data:string +lbl_1_data_D4 = .data:0x000000D4; // type:object size:0x10 scope:local data:string +lbl_1_data_E4 = .data:0x000000E4; // type:object size:0x3 scope:local data:string +lbl_1_data_E7 = .data:0x000000E7; // type:object size:0x1A scope:local data:string +lbl_1_data_101 = .data:0x00000101; // type:object size:0x1A scope:local data:string +lbl_1_data_11B = .data:0x0000011B; // type:object size:0xE scope:local data:string lbl_1_data_130 = .data:0x00000130; // type:object size:0x30 data:float lbl_1_data_160 = .data:0x00000160; // type:object size:0x50 lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x50 lbl_1_data_200 = .data:0x00000200; // type:object size:0x50 -lbl_1_data_250 = .data:0x00000250; // type:object size:0x16 data:string -lbl_1_data_266 = .data:0x00000266; // type:object size:0x15 data:string -lbl_1_data_27B = .data:0x0000027B; // type:object size:0x16 data:string -lbl_1_data_291 = .data:0x00000291; // type:object size:0x15 data:string -lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x16 data:string -lbl_1_data_2BC = .data:0x000002BC; // type:object size:0x15 data:string -lbl_1_data_2D1 = .data:0x000002D1; // type:object size:0x17 data:string -lbl_1_data_2E8 = .data:0x000002E8; // type:object size:0x16 data:string -lbl_1_data_2FE = .data:0x000002FE; // type:object size:0xF data:string -lbl_1_data_30D = .data:0x0000030D; // type:object size:0x1C data:string -lbl_1_data_329 = .data:0x00000329; // type:object size:0x1D data:string -lbl_1_data_346 = .data:0x00000346; // type:object size:0x1C data:string -lbl_1_data_364 = .data:0x00000364; // type:object size:0x8 data:4byte -lbl_1_data_36C = .data:0x0000036C; // type:object size:0xC -lbl_1_data_378 = .data:0x00000378; // type:object size:0xF data:string -lbl_1_data_387 = .data:0x00000387; // type:object size:0x10 data:string +lbl_1_data_250 = .data:0x00000250; // type:object size:0x16 scope:local data:string +lbl_1_data_266 = .data:0x00000266; // type:object size:0x15 scope:local data:string +lbl_1_data_27B = .data:0x0000027B; // type:object size:0x16 scope:local data:string +lbl_1_data_291 = .data:0x00000291; // type:object size:0x15 scope:local data:string +lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x16 scope:local data:string +lbl_1_data_2BC = .data:0x000002BC; // type:object size:0x15 scope:local data:string +lbl_1_data_2D1 = .data:0x000002D1; // type:object size:0x17 scope:local data:string +lbl_1_data_2E8 = .data:0x000002E8; // type:object size:0x16 scope:local data:string +lbl_1_data_2FE = .data:0x000002FE; // type:object size:0xF scope:local data:string +lbl_1_data_30D = .data:0x0000030D; // type:object size:0x1C scope:local data:string +lbl_1_data_329 = .data:0x00000329; // type:object size:0x1D scope:local data:string +lbl_1_data_346 = .data:0x00000346; // type:object size:0x1C scope:local data:string +lbl_1_data_364 = .data:0x00000364; // type:object size:0x4 data:4byte +lbl_1_data_36C = .data:0x0000036C; // type:object size:0xC data:float +lbl_1_data_378 = .data:0x00000378; // type:object size:0xF scope:local data:string +lbl_1_data_387 = .data:0x00000387; // type:object size:0x10 scope:local data:string jumptable_1_data_398 = .data:0x00000398; // type:object size:0x30 scope:local -lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0x46 data:string -lbl_1_data_40E = .data:0x0000040E; // type:object size:0x30 data:string -lbl_1_data_43E = .data:0x0000043E; // type:object size:0x14 data:string -lbl_1_data_452 = .data:0x00000452; // type:object size:0x14 data:string -lbl_1_data_466 = .data:0x00000466; // type:object size:0x14 data:string -lbl_1_data_47A = .data:0x0000047A; // type:object size:0x14 data:string -lbl_1_data_48E = .data:0x0000048E; // type:object size:0x14 data:string -lbl_1_data_4A2 = .data:0x000004A2; // type:object size:0x10 data:string -lbl_1_data_4B2 = .data:0x000004B2; // type:object size:0x10 data:string -lbl_1_data_4C2 = .data:0x000004C2; // type:object size:0x10 data:string -lbl_1_data_4D2 = .data:0x000004D2; // type:object size:0x10 data:string -lbl_1_data_4E2 = .data:0x000004E2; // type:object size:0x10 data:string -lbl_1_data_4F2 = .data:0x000004F2; // type:object size:0x12 +lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0x46 scope:local data:string +lbl_1_data_40E = .data:0x0000040E; // type:object size:0x30 scope:local data:string +lbl_1_data_43E = .data:0x0000043E; // type:object size:0x14 scope:local data:string +lbl_1_data_452 = .data:0x00000452; // type:object size:0x14 scope:local data:string +lbl_1_data_466 = .data:0x00000466; // type:object size:0x14 scope:local data:string +lbl_1_data_47A = .data:0x0000047A; // type:object size:0x14 scope:local data:string +lbl_1_data_48E = .data:0x0000048E; // type:object size:0x14 scope:local data:string +lbl_1_data_4A2 = .data:0x000004A2; // type:object size:0x10 scope:local data:string +lbl_1_data_4B2 = .data:0x000004B2; // type:object size:0x10 scope:local data:string +lbl_1_data_4C2 = .data:0x000004C2; // type:object size:0x10 scope:local data:string +lbl_1_data_4D2 = .data:0x000004D2; // type:object size:0x10 scope:local data:string +lbl_1_data_4E2 = .data:0x000004E2; // type:object size:0x10 scope:local data:string +lbl_1_data_4F2 = .data:0x000004F2; // type:object size:0x10 scope:local data:string lbl_1_data_504 = .data:0x00000504; // type:object size:0x288 -lbl_1_data_78C = .data:0x0000078C; // type:object size:0x5 -lbl_1_data_7E0 = .data:0x000007E0; // type:object size:0x16 data:string -lbl_1_data_7F6 = .data:0x000007F6; // type:object size:0x15 data:string -lbl_1_data_80B = .data:0x0000080B; // type:object size:0x16 data:string -lbl_1_data_821 = .data:0x00000821; // type:object size:0x15 data:string -lbl_1_data_836 = .data:0x00000836; // type:object size:0x16 data:string -lbl_1_data_84C = .data:0x0000084C; // type:object size:0x15 data:string -lbl_1_data_861 = .data:0x00000861; // type:object size:0x17 data:string -lbl_1_data_878 = .data:0x00000878; // type:object size:0x16 data:string -lbl_1_data_88E = .data:0x0000088E; // type:object size:0xF data:string -lbl_1_data_89D = .data:0x0000089D; // type:object size:0x1C data:string -lbl_1_data_8B9 = .data:0x000008B9; // type:object size:0x1D data:string -lbl_1_data_8D6 = .data:0x000008D6; // type:object size:0x49 data:string -lbl_1_data_91F = .data:0x0000091F; // type:object size:0x48 data:string -lbl_1_data_967 = .data:0x00000967; // type:object size:0x48 data:string -lbl_1_data_9AF = .data:0x000009AF; // type:object size:0x52 data:string -lbl_1_data_A01 = .data:0x00000A01; // type:object size:0x30 data:string -lbl_1_data_A31 = .data:0x00000A31; // type:object size:0x2A data:string -lbl_1_data_A5B = .data:0x00000A5B; // type:object size:0x1A data:string -lbl_1_data_A75 = .data:0x00000A75; // type:object size:0x1B -lbl_1_data_A90 = .data:0x00000A90; // type:object size:0x13 data:string -lbl_1_data_AA3 = .data:0x00000AA3; // type:object size:0x8 data:string +lbl_1_data_78C = .data:0x0000078C; // type:object size:0x50 +lbl_1_data_7E0 = .data:0x000007E0; // type:object size:0x16 scope:local data:string +lbl_1_data_7F6 = .data:0x000007F6; // type:object size:0x15 scope:local data:string +lbl_1_data_80B = .data:0x0000080B; // type:object size:0x16 scope:local data:string +lbl_1_data_821 = .data:0x00000821; // type:object size:0x15 scope:local data:string +lbl_1_data_836 = .data:0x00000836; // type:object size:0x16 scope:local data:string +lbl_1_data_84C = .data:0x0000084C; // type:object size:0x15 scope:local data:string +lbl_1_data_861 = .data:0x00000861; // type:object size:0x17 scope:local data:string +lbl_1_data_878 = .data:0x00000878; // type:object size:0x16 scope:local data:string +lbl_1_data_88E = .data:0x0000088E; // type:object size:0xF scope:local data:string +lbl_1_data_89D = .data:0x0000089D; // type:object size:0x1C scope:local data:string +lbl_1_data_8B9 = .data:0x000008B9; // type:object size:0x1D scope:local data:string +lbl_1_data_8D6 = .data:0x000008D6; // type:object size:0x49 scope:local data:string +lbl_1_data_91F = .data:0x0000091F; // type:object size:0x48 scope:local data:string +lbl_1_data_967 = .data:0x00000967; // type:object size:0x48 scope:local data:string +lbl_1_data_9AF = .data:0x000009AF; // type:object size:0x52 scope:local data:string +lbl_1_data_A01 = .data:0x00000A01; // type:object size:0x30 scope:local data:string +lbl_1_data_A31 = .data:0x00000A31; // type:object size:0x2A scope:local data:string +lbl_1_data_A5B = .data:0x00000A5B; // type:object size:0x1A scope:local data:string +lbl_1_data_A75 = .data:0x00000A75; // type:object size:0x19 scope:local data:string +lbl_1_data_A90 = .data:0x00000A90; // type:object size:0x13 scope:local data:string +lbl_1_data_AA3 = .data:0x00000AA3; // type:object size:0x8 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x44 data:float lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x10 data:float -lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x10 data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 data:4byte lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x40 data:4byte lbl_1_bss_A8 = .bss:0x000000A8; // type:object size:0x4 data:4byte lbl_1_bss_AC = .bss:0x000000AC; // type:object size:0x4 data:float @@ -542,7 +542,7 @@ lbl_1_bss_18F4 = .bss:0x000018F4; // type:object size:0xA0 lbl_1_bss_1994 = .bss:0x00001994; // type:object size:0x28 data:4byte lbl_1_bss_19BC = .bss:0x000019BC; // type:object size:0x28 data:4byte lbl_1_bss_19E4 = .bss:0x000019E4; // type:object size:0x28 data:4byte -lbl_1_bss_1A0C = .bss:0x00001A0C; // type:object size:0x2DC data:float +lbl_1_bss_1A0C = .bss:0x00001A0C; // type:object size:0x2D8 data:float lbl_1_bss_1CE8 = .bss:0x00001CE8; // type:object size:0x2 data:2byte lbl_1_bss_1CEC = .bss:0x00001CEC; // type:object size:0x4 data:4byte lbl_1_bss_1CF0 = .bss:0x00001CF0; // type:object size:0x4 data:4byte diff --git a/configure.py b/configure.py index 691ad13d..abfd9d0f 100644 --- a/configure.py +++ b/configure.py @@ -1396,10 +1396,10 @@ config.libs = [ Rel( "mstory3Dll", objects={ - Object(NonMatching, "REL/mstory3Dll/main.c"), - Object(NonMatching, "REL/mstory3Dll/result_seq.c"), - Object(NonMatching, "REL/mstory3Dll/result.c"), - Object(NonMatching, "REL/mstory3Dll/win_effect.c"), + Object(MatchingFor("GMPE01_00"), "REL/mstory3Dll/main.c"), + Object(MatchingFor("GMPE01_00"), "REL/mstory3Dll/result_seq.c"), + Object(MatchingFor("GMPE01_00"), "REL/mstory3Dll/result.c"), + Object(MatchingFor("GMPE01_00"), "REL/mstory3Dll/win_effect.c"), }, ), Rel( diff --git a/include/REL/mstory3Dll.h b/include/REL/mstory3Dll.h new file mode 100755 index 00000000..8ca3ed77 --- /dev/null +++ b/include/REL/mstory3Dll.h @@ -0,0 +1,99 @@ +#ifndef MSTORY3DLL_H +#define MSTORY3DLL_H + +#include "game/object.h" +#include "game/process.h" + +#include "dolphin.h" + +// For future reference: seems to be identical to StructFn352C in mstoryDll. +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ s32 unk20; + /* 0x24 */ s32 unk24; + /* 0x28 */ s32 unk28; + /* 0x2C */ s32 unk2C; + /* 0x30 */ char unk30[4]; +} StructFn352C; // Size 0x34 + +// For future reference: seems to be identical to StructBss4 in mstoryDll. +typedef struct { + /* 0x00 */ void (*unk00)(void); + /* 0x04 */ void (*unk04)(void); + /* 0x08 */ Vec unk08; + /* 0x14 */ float unk14; + /* 0x18 */ float unk18; + /* 0x1C */ float unk1C; + /* 0x20 */ Vec unk20; + /* 0x2C */ float unk2C; + /* 0x30 */ float unk30; + /* 0x34 */ float unk34; + /* 0x38 */ float unk38; + /* 0x3C */ float unk3C; + /* 0x40 */ s32 unk40; +} StructBss4; // Size 0x44 + +typedef struct { + /* 0x00 */ omObjData* unk00; + /* 0x04 */ void (*unk04)(omObjData*, ...); + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ char unk20[8]; +} StructBss1530; // Size 0x28 + +// main.c +float fn_1_5D4(float arg8, float arg9, float argA, float argB); +float fn_1_5FC(float arg8, float arg9, float argA); +float fn_1_61C(float arg0, float arg1, float arg2, float arg3); +float fn_1_6F4(float arg0, float arg1, float arg2, float arg3); +float fn_1_7BC(float arg0, float arg1, float arg2, float arg3); +float fn_1_878(float arg0, float arg1, float arg2, float arg3); +void fn_1_938(void); +void fn_1_958(s32 arg0); +void fn_1_9A0(void); +void fn_1_9C4(void); +s32 fn_1_1624(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +s32 fn_1_1834(u32 arg0, s32 arg1); +void fn_1_1A24(s32 arg0); +void fn_1_1AB0(s32 arg0); +void fn_1_1B18(s32 arg0, s32 arg1); +void fn_1_1D44(s32 arg0, s32 arg1); +void fn_1_1E28(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_2280(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_2310(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_2420(s32 arg0, s32 arg1); +void fn_1_2834(void (*arg0)(void)); +void fn_1_290C(Process* arg0, void (*arg1)(void)); +void fn_1_2DD4(omObjData* arg0, s32 arg1, Vec arg2, float arg3, float arg4, float arg5); +void fn_1_35C8(s16 arg0); +void fn_1_3650(StructFn352C* arg0, s32 arg1); +s32 fn_1_36E4(void); +s32 fn_1_373C(void); +s32 fn_1_37C8(s32 arg0); +void fn_1_38B4(void); +void fn_1_39B4(StructBss4* arg0); +void fn_1_4400(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3, float arg4); +void fn_1_4CC0(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3); +void fn_1_514C(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3, float arg4); + +// result_seq.c +void fn_1_6E34(Process* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); + +// result.c +void fn_1_157F0(Process* arg0, s32 arg1, s32 arg2, s32 arg3); + +extern StructBss4 lbl_1_bss_4; +extern s32 lbl_1_data_0[][4]; + +#endif diff --git a/include/game/gamework.h b/include/game/gamework.h index 869cfad1..722ba147 100644 --- a/include/game/gamework.h +++ b/include/game/gamework.h @@ -15,10 +15,10 @@ void GWCharColorGet(s32 character, GXColor *color); void GWBoardPlayCountSet(s32 board, u8 value); void GWBoardPlayCountAdd(s32 board, u8 value); u8 GWBoardPlayCountGet(s32 board); -void GWBoardMaxStarsSet(s32 board, s32 value); -u16 GWBoardMaxStarsGet(s32 board); +void GWBoardMaxStarsSet(s32 board, s16 value); +s32 GWBoardMaxStarsGet(s32 board); void GWBoardMaxCoinsSet(s32 board, s32 value); -u16 GWBoardMaxCoinsGet(s32 board); +s32 GWBoardMaxCoinsGet(s32 board); s32 GWBoardWinCountInc(s32 character, s32 board); s32 GWBoardWinCountGet(s32 character, s32 board); void GWBoardWinCountSet(s32 character, s32 board, s32 value); diff --git a/include/game/gamework_data.h b/include/game/gamework_data.h index 0e2c8254..b3615e85 100644 --- a/include/game/gamework_data.h +++ b/include/game/gamework_data.h @@ -325,6 +325,11 @@ static inline s32 GWPlayerTeamGet(s32 player) return GWPlayer[player].team; } +static inline s32 GWPlayerHandicapGet(s32 player) +{ + return GWPlayer[player].handicap; +} + static inline s32 GWLuckyValueGet(void) { return GWSystem.lucky_value; diff --git a/src/REL/mstory3Dll/main.c b/src/REL/mstory3Dll/main.c new file mode 100755 index 00000000..c1e4f1bf --- /dev/null +++ b/src/REL/mstory3Dll/main.c @@ -0,0 +1,1044 @@ +#include "REL/mstory3Dll.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/window.h" +#include "game/wipe.h" + +#include "ext_math.h" + +u8 lbl_1_bss_48[0x10]; // unused +StructBss4 lbl_1_bss_4; +Process* lbl_1_bss_0; + +s32 lbl_1_data_0[][4] = { + { 0x37, 0x38, 0x36, 0x39 }, + { 0x43, 0x45, 0x44, 0x43 }, + { 0x40, 0x42, 0x41, 0x40 }, + { 0x4B, 0x4D, 0x4C, 0x4B }, + { 0x46, 0x48, 0x47, 0x46 }, + { 0x3E, 0x3F, 0x3E, 0x3E }, + { 0x3A, 0x3B, 0x3C, -1 } +}; + +char* lbl_1_data_A4[] = { + "S-1 : ALL STORY - BOARD RESULT EVENT", + "--- : RESULT" +}; + +void fn_1_0(omObjData* arg0) { + if (WipeStatGet() == 0) { + arg0->func = NULL; + omOvlReturnEx(1, 1); + } +} + +void fn_1_4C(omObjData* arg0) { + if (omSysExitReq != 0) { + arg0->func = fn_1_0; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + } +} + +void fn_1_A4(void) { + s32 sp14; + s32 sp10; + s32 spC; + s32 sp8; + s32 var_r29; + s32 var_r30; + s32 var_r31; + + sp14 = 0; + var_r30 = 0; + var_r31 = 0; + sp10 = 1; + spC = 1; + sp8 = 1; + omAddObjEx(lbl_1_bss_0, 0x2000, 0, 0, -1, fn_1_4C); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + while (TRUE) { + if (WipeStatGet() == 0) { + break; + } + fn_1_938(); + } + while (TRUE) { + if (HuPadBtnDown[0] & PAD_BUTTON_A) { + break; + } + if (HuPadBtnDown[0] & PAD_BUTTON_DOWN) { + var_r30++; + if (var_r30 >= 2) { + var_r30 = 0; + } + } + if (HuPadBtnDown[0] & PAD_BUTTON_UP) { + var_r30--; + if (var_r30 < 0) { + var_r30 = 1; + } + } + if (HuPadStkX[0] <= -30) { + var_r31++; + if (var_r31 > 6) { + var_r31 = 0; + } + } + if (HuPadStkX[0] >= 30) { + var_r31--; + if (var_r31 < 0) { + var_r31 = 5; + } + } + fontcolor = FONT_COLOR_WHITE; + print8(24, 100, 1.5f, ">>>>> MPGC STORY 3 - EVENT SELECT <<<<<"); + print8(24, 130, 1.5f, "MAP NUMBER : %d", var_r31 + 1); + for (var_r29 = 0; var_r29 < 2; var_r29++) { + fontcolor = FONT_COLOR_WHITE; + if (var_r30 == var_r29) { + fontcolor = FONT_COLOR_CYAN; + } + print8(24, 160 + var_r29 * 15, 1.5f, "%s", lbl_1_data_A4[var_r29]); + } + fn_1_938(); + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while (TRUE) { + if (WipeStatGet() == 0) { + break; + } + fn_1_938(); + } + GWSystem.board = var_r31; + switch (var_r30) { + case 0: + fn_1_6E34(lbl_1_bss_0, var_r31, 1, 0, 0); + break; + case 1: + fn_1_157F0(lbl_1_bss_0, var_r31, 0, 0); + break; + } + while (TRUE) { + fn_1_938(); + } +} + +#include "src/REL/executor.c" + +void fn_1_40C(void) { + lbl_1_bss_0 = omInitObjMan(62, 0x2000); + omGameSysInit(lbl_1_bss_0); + switch (omovlevtno) { + case 0: + fn_1_6E34(lbl_1_bss_0, GWSystem.board, GWSystem.bonus_star, GWSystem.party, 0); + break; + case 1: + fn_1_157F0(lbl_1_bss_0, GWSystem.board, GWSystem.party, 0); + break; + } +} + +void ObjectSetup(void) { + fn_1_40C(); +} + +float fn_1_5D4(float arg8, float arg9, float argA, float argB) { + if (argB <= argA) { + return arg9; + } + return arg8 + (argA / argB) * (arg9 - arg8); +} + +float fn_1_5FC(float arg8, float arg9, float argA) { + return (arg9 + arg8 * (argA - 1.0f)) / argA; +} + +float fn_1_61C(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg1; + } + return arg0 + (arg1 - arg0) * (1.0 - cosd((90.0f / arg3) * arg2)); +} + +float fn_1_6F4(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg1; + } + return arg0 + (arg1 - arg0) * sind((90.0f / arg3) * arg2); +} + +float fn_1_7BC(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg0; + } + return arg0 + (arg1 - arg0) * sind((180.0f / arg3) * arg2); +} + +float fn_1_878(float arg0, float arg1, float arg2, float arg3) { + if (arg2 >= arg3) { + return arg0; + } + return arg0 + (arg1 - arg0) * sind((360.0f / arg3) * arg2); +} + +void fn_1_934(void) { +} + +void fn_1_938(void) { + HuPrcVSleep(); +} + +void fn_1_958(s32 arg0) { + HuPrcSleep(arg0); +} + +void fn_1_980(void) { + HuPrcEnd(); +} + +void fn_1_9A0(void) { + HuWinInit(1); +} + +void fn_1_9C4(void) { + HuWinAllKill(); +} + +void fn_1_9E4(s32 arg0, float arg1, float arg2, s32 arg3) { + WindowData* temp_r29; + float temp_f29; + float temp_f28; + float temp_f25; + float temp_f24; + float temp_f31; + float temp_f27; + float temp_f30; + float temp_f26; + float var_f23; + float var_f22; + float var_f21; + float var_f20; + s32 i; + + temp_r29 = &winData[arg0]; + temp_f29 = temp_r29->pos_x; + temp_f28 = temp_r29->pos_y; + temp_f25 = temp_r29->w; + temp_f24 = temp_r29->h; + temp_f31 = temp_f29 + temp_f25 * arg1; + temp_f27 = 4.0f / temp_f25; + if (temp_f31 + 4.0f - (temp_f29 + temp_f25) >= 0.0f) { + temp_f31 = (temp_f29 + temp_f25) - 4.0f; + } else if (temp_f29 - (temp_f31 - 2.0f) >= 0.0f) { + temp_f31 = temp_f29; + } else { + temp_f31 -= 2.0f; + } + temp_f30 = temp_f28 + temp_f24 * arg2; + temp_f26 = 4.0f / temp_f24; + if (temp_f30 + 4.0f - (temp_f28 + temp_f24) >= 0.0f) { + temp_f30 = (temp_f28 + temp_f24) - 4.0f; + } else if (temp_f28 - (temp_f30 - 2.0f) >= 0.0f) { + temp_f30 = temp_f28; + } else { + temp_f30 -= 2.0f; + } + if (arg3 != 0) { + HuWinPosSet(arg0, temp_f31, temp_f30); + HuWinScaleSet(arg0, temp_f27, temp_f26); + var_f23 = temp_f31; + var_f21 = temp_f27; + var_f22 = temp_f30; + var_f20 = temp_f26; + } else { + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + var_f23 = temp_f29; + var_f21 = 1.0f; + var_f22 = temp_f28; + var_f20 = 1.0f; + } + HuWinDispOn(arg0); + for (i = 0; i <= 15; i++) { + HuPrcVSleep(); + if (arg3 != 0) { + if (i <= 10) { + var_f23 = fn_1_6F4(temp_f31, temp_f29, i, 10.0f); + var_f21 = fn_1_6F4(temp_f27, 1.0f, i, 10.0f);; + } else { + var_f22 = fn_1_6F4(temp_f30, temp_f28, i - 10, 5.0f); + var_f20 = fn_1_6F4(temp_f26, 1.0f, i - 10, 5.0f); + } + } else { + if (i <= 10) { + var_f22 = fn_1_6F4(temp_f28, temp_f30, i, 10.0f); + var_f20 = fn_1_6F4(1.0f, temp_f26, i, 10.0f); + } else { + var_f23 = fn_1_6F4(temp_f29, temp_f31, i - 10, 5.0f); + var_f21 = fn_1_6F4(1.0f, temp_f27, i - 10, 5.0f); + } + } + HuWinPosSet(arg0, var_f23, var_f22); + HuWinScaleSet(arg0, var_f21, var_f20); + } + if (arg3 != 0) { + HuWinPosSet(arg0, temp_f29, temp_f28); + HuWinScaleSet(arg0, 1.0f, 1.0f); + } else { + HuWinPosSet(arg0, temp_f31, temp_f30); + HuWinScaleSet(arg0, temp_f27, temp_f26); + } + HuPrcVSleep(); +} + +s32 fn_1_142C(s32 arg0, s32 arg1, s32 arg2, s32 arg3, float arg8, float arg9, s32 arg4) { + s32 temp_r3; + + arg2 = arg2 * 21 + 16; + arg3 = arg3 * 26 + 16; + if (arg0 == 0) { + arg0 = 550 - arg2; + } else { + arg0 = 1.0f + (576.0f - arg2) / 2; + } + if (arg1 == 0) { + arg1 = 430 - arg3; + } else { + arg1 = 445 - arg3; + } + temp_r3 = HuWinExCreateStyled(arg0, arg1, arg2, arg3, -1, 1); + HuWinMesPalSet(temp_r3, 7, 0, 0, 0); + if (arg4 != -1) { + if (GWSystem.party != 1) { + winData[temp_r3].active_pad = 1; + } else { + winData[temp_r3].active_pad = 0xF; + } + } else { + winData[temp_r3].active_pad = 0xFF; + } + fn_1_9E4(temp_r3, arg8, arg9, 1); + if (arg1 != 0) { + HuWinPriSet(temp_r3, 50); + } + return temp_r3; +} + +s32 fn_1_1624(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + return fn_1_142C(arg0, arg1, arg2, arg3, 0.5f, 0.5f, arg4); +} + +s32 fn_1_1834(u32 arg0, s32 arg1) { + float sp8[2]; + float var_f31; + float var_f30; + float var_f29; + float var_f28; + s32 temp_r3; + + if (arg1 == 0) { + HuWinMesMaxSizeGet(1, sp8, arg0); + } + var_f31 = sp8[0]; + var_f30 = sp8[1]; + var_f29 = (576.0f - var_f31) / 2; + var_f28 = 445.0f - var_f30; + if (arg1 != 0) { + var_f31 = 352.0f; + var_f30 = 94.0f; + var_f29 = 550.0f - var_f31; + var_f28 = 445.0f - var_f30; + } + temp_r3 = HuWinExCreateStyled(var_f29, var_f28, var_f31, var_f30, -1, 1); + HuWinMesPalSet(temp_r3, 7, 0, 0, 0); + if (arg1 == 0) { + HuWinBGTPLvlSet(temp_r3, 0.0f); + HuWinMesSet(temp_r3, arg0); + HuWinMesSpeedSet(temp_r3, 0); + HuWinDispOn(temp_r3); + HuWinMesPalSet(temp_r3, 7, 0xFF, 0xFF, 0xFF); + } else { + HuWinPriSet(temp_r3, 50); + fn_1_9E4(temp_r3, 0.5f, 0.5f, 1); + HuWinMesSpeedSet(temp_r3, 0); + } + return temp_r3; +} + +void fn_1_1A24(s32 arg0) { + HuWinExCleanup(arg0); +} + +void fn_1_1A50(s32 arg0, float arg1, float arg2) { + HuWinMesSet(arg0, MAKE_MESSID(37, 4)); + HuPrcVSleep(); + fn_1_9E4(arg0, arg1, arg2, 0); + HuWinExCleanup(arg0); +} + +void fn_1_1AB0(s32 arg0) { + fn_1_1A50(arg0, 0.5f, 0.5f); +} + +void fn_1_1B18(s32 arg0, s32 arg1) { + s32 i; + + if (arg1 > 0) { + HuPrcSleep(arg1); + return; + } + HuWinComKeyReset(); + if (winData[arg0].active_pad == 0xFF) { + for (i = 0; i < 10; i++) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, GWMessDelayGet()); + } + } + HuWinMesWait(arg0); + HuWinComKeyReset(); +} + +s32 fn_1_1BC4(s32 arg0, s32 arg1) { + s32 spC; + s32 temp_r31; + s32 var_r30; + + spC = 0; + HuWinComKeyReset(); + if (winData[arg0].active_pad == 0xFF) { + for (var_r30 = 0; var_r30 < 10; var_r30++) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, GWMessDelayGet()); + } + } + temp_r31 = HuWinChoiceGet(arg0, arg1); + HuWinComKeyReset(); + if (temp_r31 != 0) { + temp_r31 = 0; + } else { + temp_r31 = 1; + } + return temp_r31; +} + +s32 fn_1_1C88(s32 arg0) { + return fn_1_1BC4(arg0, 0); +} + +void fn_1_1D44(s32 arg0, s32 arg1) { + HuWinMesSet(arg0, arg1); +} + +void fn_1_1D78(s32 arg0, s32 arg1, s32 arg2) { + HuWinInsertMesSet(arg0, arg1, arg2); +} + +void fn_1_1DB8(s16 arg0) { + ModelData* var_r28; + HsfMaterial* var_r31; + HsfData* temp_r30; + s16 var_r27; + s32 i; + + var_r28 = &Hu3DData[arg0]; + temp_r30 = var_r28->hsfData; + var_r27 = temp_r30->materialCnt; + var_r31 = temp_r30->material; + for (i = 0; i < var_r27; var_r31++, i++) { + var_r31->vtxMode = 1; + } +} + +void fn_1_1E28(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + switch (arg4) { + case 0: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, HU3D_MOTATTR_NONE); + break; + case 1: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, HU3D_MOTATTR_LOOP); + break; + case 2: + Hu3DMotionShiftSet(arg0->model[arg1], arg0->motion[arg2], 0.0f, arg3, HU3D_MOTATTR_PAUSE); + break; + } +} + +void fn_1_1FA0(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + if (arg0->motion[arg2] == Hu3DMotionIDGet(arg0->model[arg1])) { + return; + } + if (arg0->motion[arg2] == Hu3DMotionShiftIDGet(arg0->model[arg1])) { + return; + } + fn_1_1FA0(arg0, arg1, arg2, arg3, arg4); +} + +void fn_1_2280(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3) { + HuPrcSleep(arg3 + 1); + do { + HuPrcVSleep(); + } while (arg0->motion[arg2] != Hu3DMotionIDGet(arg0->model[arg1]) || !Hu3DMotionEndCheck(arg0->model[arg1])); +} + +void fn_1_2310(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3) { + HuPrcSleep(arg3 + 1); + do { + HuPrcVSleep(); + } while (arg0->motion[arg2] != Hu3DMotionIDGet(arg0->model[arg1]) || !(Hu3DMotionMaxTimeGet(arg0->model[arg1]) - 20.0f <= Hu3DMotionTimeGet(arg0->model[arg1]))); +} + +s32 fn_1_23D8(s32 arg0) { + s32 i; + + for (i = 0; i < 4; i++) { + if (arg0 == GWPlayerCfg[i].group) { + break; + } + } + return i; +} + +void fn_1_2420(s32 arg0, s32 arg1) { + while (TRUE) { + if (arg1 & HuPadBtnDown[arg0]) { + break; + } + HuPrcVSleep(); + } +} + +void fn_1_2474(void) { + StructBss4* var_r31; + + var_r31 = &lbl_1_bss_4; + if (HuPadBtn[0] & PAD_BUTTON_B) { + if (HuPadBtn[0] & PAD_TRIGGER_R) { + var_r31->unk08.z -= HuPadStkY[0] / 10.0f; + } else { + var_r31->unk08.x += HuPadStkX[0] / 10.0f; + var_r31->unk08.y += HuPadStkY[0] / 10.0f; + } + } + if (HuPadBtn[0] & PAD_BUTTON_Y) { + var_r31->unk20.x -= HuPadStkY[0] / 100.0f; + var_r31->unk20.y += HuPadStkX[0] / 100.0f; + if (var_r31->unk20.x < 0.0f) { + var_r31->unk20.x += 360.0f; + } + if (var_r31->unk20.x >= 360.0f) { + var_r31->unk20.x -= 360.0f; + } + if (var_r31->unk20.y < 0.0f) { + var_r31->unk20.y += 360.0f; + } + if (var_r31->unk20.y >= 360.0f) { + var_r31->unk20.y -= 360.0f; + } + } + if (HuPadBtn[0] & PAD_BUTTON_X) { + var_r31->unk38 -= HuPadStkY[0] / 10.0f; + } + print8(24, 40, 1.5f, "CENTER : %.2f, %.2f, %.2f", var_r31->unk08.x, var_r31->unk08.y, var_r31->unk08.z); + print8(24, 55, 1.5f, "ROT : %.2f, %.2f, %.2f", var_r31->unk20.x, var_r31->unk20.y, var_r31->unk20.z); + print8(24, 70, 1.5f, "ZOOM : %.2f", var_r31->unk38); +} + +void fn_1_2834(void (*arg0)(void)) { + lbl_1_bss_4.unk00 = arg0; +} + +void fn_1_2844(void (*arg0)(void)) { + lbl_1_bss_4.unk04 = arg0; +} + +void fn_1_2854(omObjData* arg0) { + StructBss4* var_r31; + + var_r31 = &lbl_1_bss_4; + if (var_r31->unk00 != NULL) { + var_r31->unk00(); + } + Center.x = var_r31->unk08.x; + Center.y = var_r31->unk08.y; + Center.z = var_r31->unk08.z; + CRot.x = var_r31->unk20.x; + CRot.y = var_r31->unk20.y; + CRot.z = var_r31->unk20.z; + CZoom = var_r31->unk38; +} + +void fn_1_290C(Process* arg0, void (*arg1)(void)) { + Hu3DCameraCreate(1); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraPerspectiveSet(1, 42.0f, 1.0f, 2000.0f, 1.2f); + lbl_1_bss_4.unk00 = arg1; + lbl_1_bss_4.unk04 = fn_1_2474; + omAddObjEx(arg0, 0x7FDA, 0, 0, -1, omOutView); + omAddObjEx(arg0, 0x7FD9, 0, 0, -1, fn_1_2854); +} + +void fn_1_2A2C(omObjData* arg0, s32 arg1, Vec arg2, float arg3, float arg4, float arg5) { + Vec sp4C; + Vec sp40; + Vec sp34; + Vec sp28; + float sp24; + float sp20; + float sp1C; + s32 sp18; + s32 sp14; + float var_f31; + + sp40.x = Hu3DData[arg0->model[arg1]].pos.x; + sp4C.y = sp40.y = Hu3DData[arg0->model[arg1]].pos.y; + sp40.z = Hu3DData[arg0->model[arg1]].pos.z; + sp34.x = arg2.x; + sp34.y = arg2.y; + sp34.z = arg2.z; + sp18 = arg4; + sp28.x = Hu3DData[arg0->model[arg1]].rot.x; + sp28.y = Hu3DData[arg0->model[arg1]].rot.y; + sp28.z = Hu3DData[arg0->model[arg1]].rot.z; + sp1C = 0.0f; + sp20 = arg3; + sp24 = 0.0f; + sp14 = arg5; + var_f31 = -1.1025f; + Hu3DMotionShiftSet(arg0->model[1], arg0->motion[3], 0.0f, 5.0f, 0U); + HuPrcSleep(10); + while (TRUE) { + if (var_f31 >= 1.7f) { + var_f31 = 1.7f; + } + sp4C.y += var_f31 * var_f31 * (var_f31 >= 0.0f ? -17.5f : 17.5f); + if (sp4C.y <= 0.0f && var_f31 > 0.0f) { + sp4C.y = 0.0f; + } + sp4C.x = sp40.x += 6.0 * sind(sp28.y); + sp4C.z = sp40.z += 6.0 * cosd(sp28.y); + Hu3DModelPosSet(arg0->model[1], sp4C.x, sp4C.y, sp4C.z); + Hu3DModelRotSet(arg0->model[1], sp28.x, sp28.y, sp28.z); + HuPrcVSleep(); + if (sp4C.y <= arg2.y && var_f31 > 0.0f) { + break; + } + var_f31 += 0.11f; + } +} + +void fn_1_2DD4(omObjData* arg0, s32 arg1, Vec arg2, float arg3, float arg4, float arg5) { + Vec sp54; + Vec sp48; + Vec sp3C; + Vec sp30; + Vec sp24; + Vec sp18; + s32 sp14; + s32 temp_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + s32 i; + + var_r26 = 0; + var_r25 = 0; + sp48.x = Hu3DData[arg0->model[arg1]].pos.x; + sp48.y = Hu3DData[arg0->model[arg1]].pos.y; + sp48.z = Hu3DData[arg0->model[arg1]].pos.z; + sp3C.x = arg2.x; + sp3C.y = arg2.y; + sp3C.z = arg2.z; + sp14 = arg4; + sp24.x = Hu3DData[arg0->model[arg1]].rot.x; + sp24.y = Hu3DData[arg0->model[arg1]].rot.y; + sp24.z = Hu3DData[arg0->model[arg1]].rot.z; + sp18.x = 0.0f; + sp18.y = arg3; + sp18.z = 0.0f; + if (sp3C.x - sp48.x >= 0.0f) { + var_r24 = 1; + } else { + var_r24 = 0; + } + if (sp3C.z - sp48.z >= 0.0f) { + var_r23 = 1; + } else { + var_r23 = 0; + } + temp_r27 = arg5; + do { + sp30.y = -(atan2d(sp3C.z - sp48.z, sp3C.x - sp48.x) - 90.0); + if (sp30.y < 0.0f) { + sp30.y += 360.0f; + } else if (sp30.y >= 360.0f) { + sp30.y -= 360.0f; + } + if (sp30.y >= 180.0f) { + if (sp24.y - sp30.y >= 180.0f) { + sp24.y -= 360.0f; + } + if (sp24.y - sp30.y < -180.0f) { + sp24.y += 360.0f; + } + } else { + if (sp24.y - sp30.y > 180.0f) { + sp24.y -= 360.0f; + } + if (sp24.y - sp30.y <= -180.0f) { + sp24.y += 360.0f; + } + } + sp54.x = sp48.x += 6.0 * sind(sp30.y); + sp54.z = sp48.z += 6.0 * cosd(sp30.y); + if (var_r24 != 0) { + if (sp48.x >= sp3C.x) { + sp54.x = sp48.x = sp3C.x; + var_r26 = 1; + } + } else { + if (sp48.x <= sp3C.x) { + sp54.x = sp48.x = sp3C.x; + var_r26 = 1; + } + } + if (var_r23 != 0) { + if (sp48.z >= sp3C.z) { + sp54.z = sp48.z = sp3C.z; + var_r25 = 1; + } + } else { + if (sp48.z <= sp3C.z) { + sp54.z = sp48.z = sp3C.z; + var_r25 = 1; + } + } + sp24.y = fn_1_5FC(sp24.y, sp30.y, 10.0f); + Hu3DModelPosSet(arg0->model[1], sp54.x, sp48.y, sp54.z); + Hu3DModelRotSet(arg0->model[1], sp24.x, sp24.y, sp24.z); + HuPrcVSleep(); + } while (var_r25 != 1 || var_r26 != 1); + sp24.y = Hu3DData[arg0->model[arg1]].rot.y; + for (i = 0; i <= temp_r27; i++) { + if (sp18.y >= 180.0f) { + if (sp24.y - sp18.y >= 180.0f) { + sp24.y -= 360.0f; + } + if (sp24.y - sp18.y < -180.0f) { + sp24.y += 360.0f; + } + } else { + if (sp24.y - sp18.y > 180.0f) { + sp24.y -= 360.0f; + } + if (sp24.y - sp18.y <= -180.0f) { + sp24.y += 360.0f; + } + } + sp24.y = fn_1_5D4(sp24.y, sp18.y, i, temp_r27); + Hu3DModelRotSet(arg0->model[1], sp24.x, sp24.y, sp24.z); + HuPrcVSleep(); + } +} + +void fn_1_35C8(s16 arg0) { + ModelData* var_r28; + HsfData* temp_r30; + HsfMaterial* var_r31; + s16 var_r27; + s32 i; + + var_r28 = &Hu3DData[arg0]; + temp_r30 = var_r28->hsfData; + var_r27 = temp_r30->materialCnt; + var_r31 = temp_r30->material; + for (i = 0; i < var_r27; var_r31++, i++) { + var_r31->vtxMode = 1; + var_r31->litColor[0] = 0xFF; + var_r31->litColor[1] = 0xFF; + var_r31->litColor[2] = 0xFF; + } +} + +void fn_1_3650(StructFn352C* arg0, s32 arg1) { + arg0->unk00 = arg1; + arg0->unk04 = GWPlayerCfg[arg0->unk00].group; + arg0->unk08 = GWPlayerCfg[arg0->unk00].iscom; + arg0->unk0C = GWPlayerCfg[arg0->unk00].diff; + arg0->unk10 = GWPlayerCfg[arg0->unk00].character; + arg0->unk14 = GWPlayerCfg[arg0->unk00].pad_idx; +} + +s32 fn_1_36E4(void) { + s32 i; + + for (i = 0; i < 4; i++) { + if (!GWPlayerCfg[i].iscom) { + break; + } + } + if (i == 4) { + return -1; + } + return i; +} + +s32 fn_1_373C(void) { + s32 var_r30; + s32 var_r31; + + var_r30 = 0; + do { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (var_r30 == GWPlayerCfg[var_r31].pad_idx) { + break; + } + } + if (!GWPlayerCfg[var_r31].iscom) { + break; + } + var_r30++; + } while (var_r30 != 5); + if (var_r30 == 5) { + return -1; + } + return var_r31; +} + +s32 fn_1_37C8(s32 arg0) { + s32 temp_r3 = 0; + + temp_r3 = Hu3DGLightCreate(0.0f, 700.0f, 1200.0f, 0.0f, -1.0f, 0.0f, arg0, arg0, arg0); + Hu3DGLightPosAimSet(temp_r3, 0.0f, 700.0f, 1200.0f, 0.0f, 0.0f, 640.0f); + Hu3DGLightInfinitytSet(temp_r3); + return temp_r3; +} + +void fn_1_38B4(void) { + Vec sp20 = { 0.0f, 3000.0f, 800.0f }; + Vec sp14 = { 0.0f, 0.0f, 640.0f }; + Vec sp8 = { 0.0f, 1.0f, 0.0f }; + + Hu3DShadowCreate(45.0f, 2000.0f, 25000.0f); + Hu3DShadowTPLvlSet(0.8f); + Hu3DShadowPosSet(&sp20, &sp8, &sp14); +} + +void fn_1_3978(StructBss4* arg0) { + arg0->unk08.x = arg0->unk14; + arg0->unk08.y = arg0->unk18; + arg0->unk08.z = arg0->unk1C; + arg0->unk20.x = arg0->unk2C; + arg0->unk20.y = arg0->unk30; + arg0->unk20.z = arg0->unk34; + arg0->unk38 = arg0->unk3C; +} + +void fn_1_39B4(StructBss4* arg0) { + arg0->unk40 = 0; + arg0->unk14 = arg0->unk08.x; + arg0->unk18 = arg0->unk08.y; + arg0->unk1C = arg0->unk08.z; + arg0->unk2C = arg0->unk20.x; + arg0->unk30 = arg0->unk20.y; + arg0->unk34 = arg0->unk20.z; + arg0->unk3C = arg0->unk38; +} + +void fn_1_39F8(StructBss4* arg0, StructBss4* arg1, float arg2) { + arg0->unk08.x = fn_1_5FC(arg0->unk08.x, arg1->unk14, arg2); + arg0->unk08.y = fn_1_5FC(arg0->unk08.y, arg1->unk18, arg2); + arg0->unk08.z = fn_1_5FC(arg0->unk08.z, arg1->unk1C, arg2); + arg0->unk20.x = fn_1_5FC(arg0->unk20.x, arg1->unk2C, arg2); + arg0->unk20.y = fn_1_5FC(arg0->unk20.y, arg1->unk30, arg2); + arg0->unk20.z = fn_1_5FC(arg0->unk20.z, arg1->unk34, arg2); + arg0->unk38 = fn_1_5FC(arg0->unk38, arg1->unk3C, arg2); +} + +void fn_1_3C64(StructBss4* arg0, float arg1) { + fn_1_39F8(arg0, arg0, arg1); +} + +void fn_1_3ED0(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3) { + arg1->unk14 = fn_1_5D4(arg0->unk14, arg1->unk08.x, arg2, arg3); + arg1->unk18 = fn_1_5D4(arg0->unk18, arg1->unk08.y, arg2, arg3); + arg1->unk1C = fn_1_5D4(arg0->unk1C, arg1->unk08.z, arg2, arg3); + arg1->unk2C = fn_1_5D4(arg0->unk2C, arg1->unk20.x, arg2, arg3); + arg1->unk30 = fn_1_5D4(arg0->unk30, arg1->unk20.y, arg2, arg3); + arg1->unk34 = fn_1_5D4(arg0->unk34, arg1->unk20.z, arg2, arg3); + arg1->unk3C = fn_1_5D4(arg0->unk3C, arg1->unk38, arg2, arg3); +} + +void fn_1_414C(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3) { + fn_1_3ED0(arg0, arg1, arg2, arg3); + arg0->unk08.x = arg1->unk14; + arg0->unk08.y = arg1->unk18; + arg0->unk08.z = arg1->unk1C; + arg0->unk20.x = arg1->unk2C; + arg0->unk20.y = arg1->unk30; + arg0->unk20.z = arg1->unk34; + arg0->unk38 = arg1->unk3C; +} + +void fn_1_4400(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3, float arg4) { + fn_1_3ED0(arg0, arg1, arg2, arg3); + fn_1_39F8(arg0, arg1, arg4); +} + +void fn_1_486C(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3) { + arg1->unk14 = fn_1_6F4(arg0->unk14, arg1->unk08.x, arg2, arg3); + arg1->unk18 = fn_1_6F4(arg0->unk18, arg1->unk08.y, arg2, arg3); + arg1->unk1C = fn_1_6F4(arg0->unk1C, arg1->unk08.z, arg2, arg3); + arg1->unk2C = fn_1_6F4(arg0->unk2C, arg1->unk20.x, arg2, arg3); + arg1->unk30 = fn_1_6F4(arg0->unk30, arg1->unk20.y, arg2, arg3); + arg1->unk34 = fn_1_6F4(arg0->unk34, arg1->unk20.z, arg2, arg3); + arg1->unk3C = fn_1_6F4(arg0->unk3C, arg1->unk38, arg2, arg3); +} + +void fn_1_4CC0(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3) { + fn_1_486C(arg0, arg1, arg2, arg3); + arg0->unk08.x = arg1->unk14; + arg0->unk08.y = arg1->unk18; + arg0->unk08.z = arg1->unk1C; + arg0->unk20.x = arg1->unk2C; + arg0->unk20.y = arg1->unk30; + arg0->unk20.z = arg1->unk34; + arg0->unk38 = arg1->unk3C; +} + +void fn_1_514C(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3, float arg4) { + fn_1_486C(arg0, arg1, arg2, arg3); + fn_1_39F8(arg0, arg1, arg4); +} + +void fn_1_57A4(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3) { + arg1->unk14 = fn_1_61C(arg0->unk14, arg1->unk08.x, arg2, arg3); + arg1->unk18 = fn_1_61C(arg0->unk18, arg1->unk08.y, arg2, arg3); + arg1->unk1C = fn_1_61C(arg0->unk1C, arg1->unk08.z, arg2, arg3); + arg1->unk2C = fn_1_61C(arg0->unk2C, arg1->unk20.x, arg2, arg3); + arg1->unk30 = fn_1_61C(arg0->unk30, arg1->unk20.y, arg2, arg3); + arg1->unk34 = fn_1_61C(arg0->unk34, arg1->unk20.z, arg2, arg3); + arg1->unk3C = fn_1_61C(arg0->unk3C, arg1->unk38, arg2, arg3); +} + +void fn_1_5C68(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3) { + fn_1_57A4(arg0, arg1, arg2, arg3); + arg0->unk08.x = arg1->unk14; + arg0->unk08.y = arg1->unk18; + arg0->unk08.z = arg1->unk1C; + arg0->unk20.x = arg1->unk2C; + arg0->unk20.y = arg1->unk30; + arg0->unk20.z = arg1->unk34; + arg0->unk38 = arg1->unk3C; +} + +void fn_1_6164(StructBss4* arg0, StructBss4* arg1, float arg2, float arg3, float arg4) { + fn_1_57A4(arg0, arg1, arg2, arg3); + fn_1_39F8(arg0, arg1, arg4); +} + +void fn_1_682C(omObjData* arg0) { + s32 var_r30; + + if (arg0->work[0] == 0) { + return; + } + if (arg0->work[2] != 0) { + arg0->work[2]--; + return; + } + if (arg0->work[2] == 0 && Hu3DMotionEndCheck(arg0->model[1])) { + var_r30 = arg0->work[1]; + Hu3DMotionShiftSet(arg0->model[1], arg0->motion[var_r30], 0.0f, 15.0f, HU3D_MOTATTR_LOOP); + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; + } +} + +void fn_1_68F0(omObjData* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + fn_1_1E28(arg0, 1, arg1, arg3, arg4); + if (arg4 == 0) { + arg0->work[0] = 1; + arg0->work[1] = arg2; + arg0->work[2] = arg3 + 1; + } +} + +void fn_1_6A78(s32 arg0, s32 arg1) { + HuWinMesSet(arg0, arg1); +} + +void fn_1_6AAC(s32 arg0, s32 arg1, s32 arg2) { + HuWinInsertMesSet(arg0, arg1, arg2); +} + +void fn_1_6AEC(s32 arg0, s32 arg1) { + fn_1_1B18(arg0, arg1); +} + +void fn_1_6B98(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { + s32 temp_r28 = 0; + s32 var_r29 = 0; + s32 i; + + temp_r28 = HuWinKeyWaitNumGet(arg1); + if (arg2 == -1 || arg2 >= temp_r28 - 1) { + arg2 = temp_r28 - 1; + } + HuWinComKeyReset(); + if (winData[arg0].active_pad == 0xFF) { + for (i = 0; i < 10; i++) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, GWMessDelayGet()); + } + } + HuWinMesSet(arg0, arg1); + for (i = 0; i < temp_r28; i++) { + var_r29 = 0; + do { + HuPrcVSleep(); + } while (HuWinStatGet(arg0) != 1); + if (i == arg2) { + HuWinAttrSet(arg0, 0x400); + var_r29 = 1; + } + while (TRUE) { + HuPrcVSleep(); + if (var_r29 != 0) { + if (var_r29 == 1 && HuWinStatGet(arg0) != 1) { + var_r29 = 2; + } else if (var_r29 == 2) { + HuPrcSleep(arg3); + HuWinAttrReset(arg0, 0x400); + HuWinKeyWaitEntry(arg0); + break; + } + } else if (HuWinStatGet(arg0) != 1) { + break; + } + } + } + fn_1_6AEC(arg0, 0); + HuWinMesSet(arg0, MAKE_MESSID(37, 4)); + HuWinComKeyReset(); +} + +BOOL fn_1_6D80(s32 arg0) { + s32 var_r31; + s32 i; + + HuWinComKeyReset(); + if (winData[arg0].active_pad == 0xFF) { + for (i = 0; i < 10; i++) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, GWMessDelayGet()); + } + } + var_r31 = HuWinChoiceGet(arg0, 0); + HuWinComKeyReset(); + if (var_r31 != 0) { + var_r31 = FALSE; + } else { + var_r31 = TRUE; + } + return var_r31; +} diff --git a/src/REL/mstory3Dll/result.c b/src/REL/mstory3Dll/result.c new file mode 100755 index 00000000..f9fb785b --- /dev/null +++ b/src/REL/mstory3Dll/result.c @@ -0,0 +1,1617 @@ +#include "REL/mstory3Dll.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/esprite.h" +#include "game/flag.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/saveload.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ char unk1C[0x18]; + /* 0x34 */ s32 unk34[4][2]; + /* 0x54 */ s32 unk54; + /* 0x58 */ char unk58[4]; + /* 0x5C */ s32 unk5C; + /* 0x60 */ char unk60[4]; + /* 0x64 */ s32 unk64; + /* 0x68 */ char unk68[4]; + /* 0x6C */ s32 unk6C; + /* 0x70 */ char unk70[4]; + /* 0x74 */ s32 unk74; + /* 0x78 */ char unk78[4]; + /* 0x7C */ s32 unk7C; + /* 0x80 */ char unk80[4]; + /* 0x84 */ s32 unk84; + /* 0x88 */ char unk88[4]; + /* 0x8C */ s32 unk8C; + /* 0x90 */ char unk90[4]; +} StructUnk38Bss1A0C; // Size 0x94 + +typedef struct { + /* 0x000 */ s32 unk00; + /* 0x004 */ s32 unk04; + /* 0x008 */ s32 unk08; + /* 0x00C */ s32 unk0C; + /* 0x010 */ s32 unk10; + /* 0x014 */ s32 unk14; + /* 0x018 */ s32 unk18; + /* 0x01C */ char unk1C[8]; + /* 0x024 */ s32 unk24; + /* 0x028 */ char unk28[0x10]; + /* 0x038 */ StructUnk38Bss1A0C unk38[4]; + /* 0x288 */ Vec unk288[5]; + /* 0x2C4 */ s32 unk2C4; + /* 0x2C8 */ s32 unk2C8; + /* 0x2CC */ s32 unk2CC; + /* 0x2D0 */ s32 unk2D0; + /* 0x2D4 */ s32 unk2D4; +} StructBss1A0C; // Size 0x2D8 + +void fn_1_15C0C(void); +void fn_1_16ED4(void); +void fn_1_18080(void); +void fn_1_184E8(void); +void fn_1_18558(void); +void fn_1_18F98(void); +void fn_1_19144(void); +void fn_1_19214(void); +void fn_1_194A0(void); +void fn_1_197B4(s32 arg0); +void fn_1_1C2F4(void); +void fn_1_1C460(void); +void fn_1_1CA98(void); +void fn_1_1CB7C(void); +void fn_1_1CC5C(void); +void fn_1_1CD60(void); +void fn_1_1D63C(void); +void fn_1_1D77C(void); +void fn_1_1D964(void); +void fn_1_1DA64(void); +void fn_1_1DAAC(void); +void fn_1_1DE4C(void); + +StructBss1A0C lbl_1_bss_1A0C; +StructBss1530 lbl_1_bss_19E4; +StructBss1530 lbl_1_bss_19BC; +StructBss1530 lbl_1_bss_1994; +StructBss1530 lbl_1_bss_18F4[4]; +AnimData* lbl_1_bss_18EC[2]; +AnimData* lbl_1_bss_18E4[2]; +AnimData* lbl_1_bss_18D8[3]; +s32 lbl_1_bss_18D4; +Process* lbl_1_bss_18D0; + +void fn_1_157F0(Process* arg0, s32 arg1, s32 arg2, s32 arg3) { + s32 var_r31; + + lbl_1_bss_18D0 = arg0; + lbl_1_bss_1A0C.unk00 = arg1; + lbl_1_bss_1A0C.unk08 = GWSystem.max_turn; + arg3 = lbl_1_bss_1A0C.unk14 = fn_1_373C(); + lbl_1_bss_1A0C.unk2D4 = arg2; + lbl_1_bss_1A0C.unk2CC = GWSystem.team; + if (_CheckFlag(FLAG_ID_MAKE(1, 29))) { + lbl_1_bss_1A0C.unk2D0 = 0; + } else { + lbl_1_bss_1A0C.unk2D0 = 1; + } + fn_1_9A0(); + fn_1_37C8(0xFF); + fn_1_290C(lbl_1_bss_18D0, fn_1_1DE4C); + fn_1_15C0C(); + fn_1_197B4(arg3); + fn_1_194A0(); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuPrcChildCreate(fn_1_1CC5C, 100, 0x2000, 0, HuPrcCurrentGet()); + } + HuPrcChildCreate(fn_1_19214, 100, 0x2000, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_1DAAC, 100, 0x2000, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_18080, 90, 0x2000, 0, HuPrcCurrentGet()); +} + +void fn_1_159A4(void) { + s32 var_r29; + s32 var_r30; + s32 i; + + for (i = 0; i < 4; i++) { + var_r29 = GWPlayer[i].stars - GWPlayerHandicapGet(i); + if (var_r29 <= 0) { + var_r29 = 0; + } + GWTotalStarsAdd(var_r29); + } + GWBoardPlayCountAdd(lbl_1_bss_1A0C.unk00, 1); + if (lbl_1_bss_1A0C.unk2CC == 1) { + if (lbl_1_bss_1A0C.unk38[0].unk08 == 0) { + GWBoardWinCountInc(lbl_1_bss_1A0C.unk38[0].unk10, lbl_1_bss_1A0C.unk00); + } + if (lbl_1_bss_1A0C.unk38[1].unk08 == 0) { + GWBoardWinCountInc(lbl_1_bss_1A0C.unk38[1].unk10, lbl_1_bss_1A0C.unk00); + } + } else if (lbl_1_bss_1A0C.unk38[0].unk08 == 0) { + GWBoardWinCountInc(lbl_1_bss_1A0C.unk38[0].unk10, lbl_1_bss_1A0C.unk00); + } + for (i = 0; i < 4; i++) { + var_r30 = GWPlayer[i].stars_max - GWPlayerHandicapGet(i); + if (var_r30 <= 0) { + var_r30 = 0; + } + if (GWBoardMaxStarsGet(lbl_1_bss_1A0C.unk00) <= var_r30 && !GWPlayer[i].com) { + GWBoardMaxStarsSet(lbl_1_bss_1A0C.unk00, var_r30); + } + } + for (i = 0; i < 4; i++) { + if (GWBoardMaxCoinsGet(lbl_1_bss_1A0C.unk00) <= GWPlayer[i].coins_max && !GWPlayer[i].com) { + GWBoardMaxCoinsSet(lbl_1_bss_1A0C.unk00, GWPlayer[i].coins_max); + } + } +} + +void fn_1_15C0C(void) { + lbl_1_bss_18EC[0] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 95), MEMORY_DEFAULT_NUM)); + lbl_1_bss_18EC[1] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 96), MEMORY_DEFAULT_NUM)); + lbl_1_bss_18D8[0] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 93), MEMORY_DEFAULT_NUM)); + lbl_1_bss_18D8[1] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 94), MEMORY_DEFAULT_NUM)); + lbl_1_bss_18D8[2] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 97), MEMORY_DEFAULT_NUM)); + lbl_1_bss_18E4[0] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 136), MEMORY_DEFAULT_NUM)); + lbl_1_bss_18E4[1] = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 137), MEMORY_DEFAULT_NUM)); +} + +void fn_1_15D08(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5) { + HuSprPosSet(arg0, arg1, arg2 + arg4 / 2, arg3 + arg5 / 2); +} + +void fn_1_15DC8(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7) { + s32 var_r31; + s32 temp_r28; + + var_r31 = 0; + if (arg7 < 2) { + if ((temp_r28 = arg2 / 100) == 0) { + if (arg7 != 0) { + var_r31++; + } + HuSprBankSet(arg0, arg1, temp_r28); + fn_1_15D08(arg0, arg1, -1000, -1000, arg5, arg6); + } else { + HuSprBankSet(arg0, arg1, temp_r28); + fn_1_15D08(arg0, arg1, arg3 + arg5 * var_r31, arg4, arg5, arg6); + var_r31++; + } + } else { + arg1--; + } + if ((temp_r28 = (arg2 % 100) / 10) == 0 && arg2 / 100 == 0) { + if (arg7 != 0) { + var_r31++; + } + HuSprBankSet(arg0, arg1 + 1, temp_r28); + fn_1_15D08(arg0, arg1 + 1, -1000, -1000, arg5, arg6); + } else { + HuSprBankSet(arg0, arg1 + 1, temp_r28); + fn_1_15D08(arg0, arg1 + 1, arg3 + arg5 * var_r31, arg4, arg5, arg6); + var_r31++; + } + temp_r28 = arg2 % 10; + HuSprBankSet(arg0, arg1 + 2, temp_r28); + fn_1_15D08(arg0, arg1 + 2, arg3 + arg5 * var_r31, arg4, arg5, arg6); + var_r31++; +} + +void fn_1_161B8(void) { + s32 var_r30 = 16; + s32 var_r29 = 40; + s32 var_r28 = 0; + GXColor sp10 = { 0x00, 0x00, 0x80, 0x80 }; + s32 i; + + while (TRUE) { + fn_1_938(); + if (HuPadBtnDown[0] & PAD_TRIGGER_R) { + var_r28++; + var_r28 %= 2; + } + if (var_r28 == 0) { + continue; + } + printWin(var_r30, var_r29, 220, 150, &sp10); + if (lbl_1_bss_19E4.unk04 == NULL) { + print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> FALSE"); + } else { + print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> TRUE"); + } + if (lbl_1_bss_19BC.unk04 == NULL) { + print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> FALSE"); + } else { + print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> TRUE"); + } + if (lbl_1_bss_1994.unk04 == NULL) { + print8(var_r30, var_r29 + 20, 1.0f, "PROC_SUB -> FALSE"); + } else { + print8(var_r30, var_r29 + 20, 1.0f, "PROC_SUB -> TRUE"); + } + for (i = 0; i < 4; i++) { + if (lbl_1_bss_18F4[i].unk04 == NULL) { + print8(var_r30, var_r29 + 30 + i * 10, 1.0f, "PROC_PLAYER%d -> FALSE", i); + } else { + print8(var_r30, var_r29 + 30 + i * 10, 1.0f, "PROC_PLAYER%d -> TRUE", i); + } + } + print8(var_r30, var_r29 + 80, 1.0f, "M:%d P:%d W:%d", lbl_1_bss_1A0C.unk00, lbl_1_bss_1A0C.unk04, lbl_1_bss_1A0C.unk14); + print8(var_r30, var_r29 + 100, 1.0f, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for (i = 0; i < 4; i++) { + print8(var_r30, var_r29 + 110 + i * 10, 1.0f, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", i, + lbl_1_bss_1A0C.unk38[i].unk00, lbl_1_bss_1A0C.unk38[i].unk04, lbl_1_bss_1A0C.unk38[i].unk08, + lbl_1_bss_1A0C.unk38[i].unk0C, lbl_1_bss_1A0C.unk38[i].unk14, lbl_1_bss_1A0C.unk38[i].unk10); + } + } +} + +void fn_1_16574(void) { + fn_1_958(30); + fn_1_16ED4(); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + do { + fn_1_938(); + } while (WipeStatGet() != 0); + fn_1_958(60); +} + +void fn_1_165C8(void) { + s32 sp8[5]; + s32 i; + + for (i = 0; i < 5; i++) { + sp8[i] = 0; + fn_1_1E28(lbl_1_bss_1994.unk00, i * 3 + 1, i * 3 + 2, 0, 1); + Hu3DData[lbl_1_bss_1994.unk00->model[i * 3 + 1]].rot.y = -90.0f; + } + do { + fn_1_938(); + for (i = 0; i < 5; i++) { + if (sp8[i] == 0) { + lbl_1_bss_1A0C.unk288[i].x -= 5.0f; + if (i == 0) { + if (lbl_1_bss_1A0C.unk288[i].x <= -175.0f) { + sp8[i] = 1; + lbl_1_bss_1A0C.unk288[i].x = -175.0f; + fn_1_1E28(lbl_1_bss_1994.unk00, i * 3 + 1, i * 3 + 1, 15, 1); + } + } else { + if (lbl_1_bss_1A0C.unk288[i].x <= -240.0f) { + sp8[i] = 1; + lbl_1_bss_1A0C.unk288[i].x = -240.0f; + fn_1_1E28(lbl_1_bss_1994.unk00, i * 3 + 1, i * 3 + 1, 15, 1); + } + } + } else if (sp8[i] == 1) { + Hu3DData[lbl_1_bss_1994.unk00->model[i * 3 + 1]].rot.y = fn_1_5FC(Hu3DData[lbl_1_bss_1994.unk00->model[i * 3 + 1]].rot.y, 17.5f, 10.0f); + if (Hu3DData[lbl_1_bss_1994.unk00->model[i * 3 + 1]].rot.y >= 14.9f) { + sp8[i] = 2; + } + } + } + for (i = 0; i < 5; i++) { + if (sp8[i] != 2) { + break; + } + } + } while (i != 5); + lbl_1_bss_1A0C.unk0C = fn_1_1834(MAKE_MESSID(38, 12), 0); +} + +s32 fn_1_16924(void) { + s32 var_r31; + s32 var_r30; + + var_r31 = 0; + var_r30 = 0; + while (TRUE) { + fn_1_938(); + if (lbl_1_bss_1A0C.unk14 != -1) { + if (HuPadBtnDown[lbl_1_bss_1A0C.unk38[lbl_1_bss_1A0C.unk04].unk14] & PAD_BUTTON_A) { + HuAudFXPlay(0x1C); + break; + } else if (HuPadBtnDown[lbl_1_bss_1A0C.unk38[lbl_1_bss_1A0C.unk04].unk14] & PAD_BUTTON_MENU) { + HuAudFXPlay(1); + var_r31 = 1; + break; + } + } else if (var_r30++ >= 300) { + var_r31 = 1; + break; + } + } + if (var_r31 == 0) { + WipeColorSet(0xFF, 0xFF, 0xFF); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_CROSS, 1); + while (TRUE) { + if (WipeStatGet() == 0) { + break; + } + fn_1_938(); + } + fn_1_1A24(lbl_1_bss_1A0C.unk0C); + fn_1_1C460(); + fn_1_1CA98(); + fn_1_18558(); + fn_1_18F98(); + fn_1_1D77C(); + fn_1_1D964(); + WipeColorSet(0xFF, 0xFF, 0xFF); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_CROSS, -1); + while (TRUE) { + if (WipeStatGet() == 0) { + break; + } + fn_1_938(); + } + lbl_1_bss_1A0C.unk10 = fn_1_1834(-1, 1); + } +} + +void fn_1_16AD4(void) { + lbl_1_bss_1A0C.unk24 = 1; + fn_1_1D44(lbl_1_bss_1A0C.unk10, MAKE_MESSID(38, lbl_1_bss_1A0C.unk2C8)); + while (TRUE) { + fn_1_938(); + if (lbl_1_bss_1A0C.unk24++ > 5 && (HuPadBtnDown[lbl_1_bss_1A0C.unk38[lbl_1_bss_1A0C.unk04].unk14] & PAD_BUTTON_B)) { + HuAudFXPlay(3); + break; + } + if (HuPadStkX[lbl_1_bss_1A0C.unk38[lbl_1_bss_1A0C.unk04].unk14] >= 5 || (HuPadBtn[lbl_1_bss_1A0C.unk38[lbl_1_bss_1A0C.unk04].unk14] & PAD_BUTTON_RIGHT)) { + if (lbl_1_bss_1A0C.unk2C8 != 11) { + lbl_1_bss_1A0C.unk24 = 0; + } + lbl_1_bss_1A0C.unk2C4++; + if (lbl_1_bss_1A0C.unk2C4 >= 6) { + lbl_1_bss_1A0C.unk2C4 = 5; + } + lbl_1_bss_1A0C.unk2C8++; + if (lbl_1_bss_1A0C.unk2C8 >= 12) { + lbl_1_bss_1A0C.unk2C8 = 11; + } else { + fn_1_1CD60(); + fn_1_1D44(lbl_1_bss_1A0C.unk10, MAKE_MESSID(38, lbl_1_bss_1A0C.unk2C8)); + HuAudFXPlay(0); + fn_1_958(10); + } + } + if (HuPadStkX[lbl_1_bss_1A0C.unk38[lbl_1_bss_1A0C.unk04].unk14] <= -5 || (HuPadBtn[lbl_1_bss_1A0C.unk38[lbl_1_bss_1A0C.unk04].unk14] & PAD_BUTTON_LEFT)) { + if (lbl_1_bss_1A0C.unk2C8 != 0) { + lbl_1_bss_1A0C.unk24 = 0; + } + lbl_1_bss_1A0C.unk2C4--; + if (lbl_1_bss_1A0C.unk2C4 < 0) { + lbl_1_bss_1A0C.unk2C4 = 0; + } + lbl_1_bss_1A0C.unk2C8--; + if (lbl_1_bss_1A0C.unk2C8 < 0) { + lbl_1_bss_1A0C.unk2C8 = 0; + } else { + fn_1_1CD60(); + fn_1_1D44(lbl_1_bss_1A0C.unk10, MAKE_MESSID(38, lbl_1_bss_1A0C.unk2C8)); + HuAudFXPlay(0); + fn_1_958(10); + } + } + } + WipeColorSet(0xFF, 0xFF, 0xFF); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_CROSS, 1); + while (TRUE) { + if (WipeStatGet() == 0) { + break; + } + fn_1_938(); + } + fn_1_1A24(lbl_1_bss_1A0C.unk10); + fn_1_1CB7C(); + fn_1_1C2F4(); + fn_1_19144(); + fn_1_184E8(); + fn_1_1DA64(); + fn_1_1D63C(); + WipeColorSet(0xFF, 0xFF, 0xFF); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_CROSS, -1); + while (TRUE) { + if (WipeStatGet() == 0) { + break; + } + fn_1_938(); + } + lbl_1_bss_1A0C.unk0C = fn_1_1834(MAKE_MESSID(38, 12), 0); +} + +void fn_1_16ED4(void) { + s32 var_r30; + s32 i; + + for (i = 0; i < 5; i++) { + if (i == 0) { + lbl_1_bss_1A0C.unk288[i].x = 1800.0f; + lbl_1_bss_1A0C.unk288[i].y = 157.5f; + } else if (lbl_1_bss_1A0C.unk2CC == 1) { + if (i <= 2) { + var_r30 = 0; + } else { + var_r30 = 2; + } + lbl_1_bss_1A0C.unk288[i].x = 900.0f - 100.0f * var_r30; + lbl_1_bss_1A0C.unk288[i].y = 75.0f - 82.5f * (i - 1); + } else { + lbl_1_bss_1A0C.unk288[i].x = 900.0f - 100.0f * i; + lbl_1_bss_1A0C.unk288[i].y = 75.0f - 82.5f * (i - 1); + } + } + lbl_1_bss_1A0C.unk2C4 = 0; + lbl_1_bss_1A0C.unk2C8 = 0; + fn_1_1CB7C(); + fn_1_1C2F4(); + fn_1_19144(); + fn_1_184E8(); + fn_1_1DA64(); + fn_1_1D63C(); +} + +void fn_1_1712C(void) { + s32 temp_r3; + + Hu3DAllKill(); + HuSprClose(); + HuSprInit(); + if (SLSaveFlagGet() == 0) { + saveExecF = 0; + lbl_1_bss_18D4 = 1; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } + } + espInit(); + HuPrcVSleep(); + temp_r3 = espEntry(DATA_MAKE_NUM(DATADIR_WIN, 32), 5000, 0); + espPosSet(temp_r3, 288.0f, 240.0f); + espAttrReset(temp_r3, 4); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + fn_1_159A4(); + if (saveExecF == 1) { + GWGameStat.party_continue = 0; + } + SLCommonSet(); + if (SLSaveFlagGet() == 1) { + SLSave(); + } + saveExecF = 0; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + lbl_1_bss_18D4 = 1; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_1728C(void) { + float sp8[2]; + s32 temp_r30 = 1; + s32 var_r29; + s32 var_r31; + + Hu3DAllKill(); + HuSprClose(); + HuSprInit(); + if (SLSaveFlagGet() == 0) { + lbl_1_bss_18D4 = 1; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } + } + espInit(); + HuPrcVSleep(); + espPosSet(var_r29 = espEntry(DATA_MAKE_NUM(DATADIR_WIN, 32), 5000, 0), 288.0f, 240.0f); + espAttrReset(var_r29, HUSPR_ATTR_DISPOFF); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + if (SLSaveFlagGet() == 1) { + HuWinInit(1); + HuWinMesMaxSizeGet(1, sp8, MAKE_MESSID(30, 22)); + var_r31 = HuWinExCreateStyled(-10000.0f, 150.0f, sp8[0], sp8[1], -1, 2); + winData[var_r31].active_pad = 1; + HuWinAttrSet(var_r31, 0x10); + HuWinExAnimIn(var_r31); + HuWinMesSet(var_r31, MAKE_MESSID(30, 22)); + temp_r30 = HuWinChoiceGet(var_r31, 0); + HuWinExAnimOut(var_r31); + HuWinExCleanup(var_r31); + if (SLSaveFlagGet() == 1 && temp_r30 == 0) { + SLCommonSet(); + SLSaveBoardStory(); + SLSave(); + } + } + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 20); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + lbl_1_bss_18D4 = 1; + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +s32 fn_1_17484(s32 arg0) { + if (arg0 == 0 && _CheckFlag(FLAG_ID_MAKE(0, 2))) { + return 1; + } + if (arg0 == 1 && _CheckFlag(FLAG_ID_MAKE(0, 3))) { + return 1; + } + if (arg0 == 2 && _CheckFlag(FLAG_ID_MAKE(0, 4))) { + return 1; + } + if (arg0 == 3 && _CheckFlag(FLAG_ID_MAKE(0, 5))) { + return 1; + } + if (arg0 == 4 && _CheckFlag(FLAG_ID_MAKE(0, 6))) { + return 1; + } + if (arg0 == 5 && _CheckFlag(FLAG_ID_MAKE(0, 7))) { + return 1; + } + return 0; +} + +void fn_1_17570(void) { + s32 var_r30; + s32 i; + + var_r30 = 0; + WipeColorSet(0, 0, 0); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + do { + fn_1_938(); + } while (WipeStatGet() != 0); + CharModelKill(-1); + HuAudSeqAllFadeOut(1000); + HuAudSStreamAllFadeOut(1000); + lbl_1_bss_19E4.unk04 = NULL; + lbl_1_bss_19BC.unk04 = NULL; + lbl_1_bss_1994.unk04 = NULL; + for (i = 0; i < 4; i++) { + lbl_1_bss_18F4[i].unk04 = NULL; + } + if (GWPartyGet() == 1) { + HuPrcChildCreate(fn_1_1712C, 100, 0x2000, 0, HuPrcCurrentGet()); + do { + fn_1_938(); + } while (lbl_1_bss_18D4 != 1); + fn_1_958(30); + omOvlReturnEx(1, 1); + } else { + fn_1_159A4(); + for (i = 0; i < 4; i++) { + if (lbl_1_bss_1A0C.unk38[i].unk10 != GWUnkB1Get()) { + continue; + } + _SetFlag(9); + switch (lbl_1_bss_1A0C.unk00) { + case 0: + if (_CheckFlag(2) == 0) { + _SetFlag(2); + var_r30 = 1; + } + break; + case 1: + if (_CheckFlag(3) == 0) { + _SetFlag(3); + var_r30 = 1; + } + break; + case 2: + if (_CheckFlag(4) == 0) { + _SetFlag(4); + var_r30 = 1; + } + break; + case 3: + if (_CheckFlag(5) == 0) { + _SetFlag(5); + var_r30 = 1; + } + break; + case 4: + if (_CheckFlag(6) == 0) { + _SetFlag(6); + var_r30 = 1; + } + break; + case 5: + if (_CheckFlag(7) == 0) { + _SetFlag(7); + var_r30 = 1; + } + break; + } + if (var_r30 == 1) { + if (lbl_1_bss_1A0C.unk38[i].unk18 == 0) { + if (lbl_1_bss_1A0C.unk00 == 5) { + GWGameStat.open_w06 = 1; + } + _ClearFlag(9); + OSReport("########## Next to BoardClear Event 10 -> MapNo:%d, MapFlg:%d, MgFlg:%d\n", GWSystem.board, _CheckFlag(2), _CheckFlag(9)); + fn_1_958(120); + HuPrcChildCreate(fn_1_1728C, 100, 0x2000, 0, HuPrcCurrentGet()); + do { + fn_1_938(); + } while (lbl_1_bss_18D4 != 1); + if (lbl_1_bss_1A0C.unk00 != 5) { + omOvlGotoEx(OVL_MSTORY, 1, 0, 0); + } else { + omOvlGotoEx(OVL_MSTORY2, 1, 1, 0); + } + } else { + switch (lbl_1_bss_1A0C.unk00) { + case 0: + _ClearFlag(2); + break; + case 1: + _ClearFlag(3); + break; + case 2: + _ClearFlag(4); + break; + case 3: + _ClearFlag(5); + break; + case 4: + _ClearFlag(6); + break; + case 5: + _ClearFlag(7); + break; + } + OSReport("########## Next to BoardMiss Event 01 -> MapNo:%d, MapFlg:%d, MgFlg:%d\n", GWSystem.board, fn_1_17484(GWSystem.board), _CheckFlag(9)); + fn_1_958(120); + HuPrcChildCreate(fn_1_1728C, 100, 0x2000, 0, HuPrcCurrentGet()); + do { + fn_1_938(); + } while (lbl_1_bss_18D4 != 1); + if (lbl_1_bss_1A0C.unk00 != 5) { + omOvlGotoEx(OVL_MSTORY, 1, 1, 0); + } else { + omOvlGotoEx(OVL_MSTORY2, 1, 2, 0); + } + } + } else { + GWPlayerCfg->group = 0; + GWPlayerCfg->character = lbl_1_bss_1A0C.unk38[lbl_1_bss_1A0C.unk04].unk10; + GWPlayerCfg->pad_idx = lbl_1_bss_1A0C.unk38[lbl_1_bss_1A0C.unk04].unk14; + GWPlayerCfg->iscom = 0; + for (i = 0; i < 4; i++) { + GWPlayer[i].character = GWPlayerCfg[i].character; + GWPlayer[i].port = GWPlayerCfg[i].pad_idx; + GWPlayer[i].com = GWPlayerCfg[i].iscom; + GWPlayer[i].team = GWPlayerCfg[i].group; + } + OSReport("########## Next to MapSelect Event 11 -> MapNo:%d, MapFlg:%d, MgFlg:%d\n", GWSystem.board, fn_1_17484(GWSystem.board), _CheckFlag(9)); + fn_1_958(120); + HuPrcChildCreate(fn_1_1728C, 100, 0x2000, 0, HuPrcCurrentGet()); + do { + fn_1_938(); + } while (lbl_1_bss_18D4 != 1); + omOvlGotoEx(OVL_MENT, 1, 10, 0); + } + } + } + while (TRUE) { + fn_1_938(); + } +} + +void fn_1_17DC0(omObjData* arg0, StructBss1530* arg1) { + fn_1_16574(); + fn_1_165C8(); + while (TRUE) { + fn_1_938(); + if (fn_1_16924() != 0) { + break; + } + fn_1_16AD4(); + } + fn_1_17570(); + arg1->unk04 = 0; +} + +void fn_1_18080(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_18D0, 0x100, 0x10, 0x10, -1, NULL); + lbl_1_bss_19E4.unk00 = temp_r3; + lbl_1_bss_19E4.unk04 = (void*) fn_1_17DC0; + while (TRUE) { + fn_1_938(); + if (lbl_1_bss_19E4.unk04 != NULL) { + lbl_1_bss_19E4.unk04(temp_r3, &lbl_1_bss_19E4); + } + } +} + +void fn_1_1811C(omObjData* arg0, s32 arg1) { + s32 var_r29; + s32 i; + + arg0->work[0] = HuSprGrpCreate(1); + var_r29 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 75) + arg1, MEMORY_DEFAULT_NUM)), 1000, 0); + HuSprGrpMemberSet(arg0->work[0], 0, var_r29); + // TODO: figure out the actual args of this fn_1_15D08 call. + // It will match as long as the values (arg2 + arg4 / 2) and (arg3 + arg5 / 2) are preserved. + fn_1_15D08(arg0->work[0], 0, 288, 240, 0, 0); + HuSprGrpPosSet(arg0->work[0], 0.0f, 0.0f); + HuSprGrpDrawNoSet(arg0->work[0], 0x7F); + { + s32 spC[] = { + DATA_MAKE_NUM(DATADIR_MSTORY3, 104), + DATA_MAKE_NUM(DATADIR_MSTORY3, 105), + DATA_MAKE_NUM(DATADIR_MSTORY3, 106), + DATA_MAKE_NUM(DATADIR_MSTORY3, 107), + DATA_MAKE_NUM(DATADIR_MSTORY3, 108), + DATA_MAKE_NUM(DATADIR_MSTORY3, 109), + DATA_MAKE_NUM(DATADIR_MSTORY3, 106) + }; + + for (i = 0; i < 7; i++) { + arg0->model[i + 1] = Hu3DModelCreateFile(spC[i]); + Hu3DModelPosSet(arg0->model[i + 1], -122.5 + 42.5 * i, 185.0f, -10.0f); + Hu3DModelRotSet(arg0->model[i + 1], 0.0f, 1980.0f, 0.0f); + } + } +} + +void fn_1_18334(omObjData* arg0, s32* arg1) { + s32 sp8 = 0; + s32 i; + + for (i = 0; i < 7; i++) { + if (arg1[2] == 0 && Hu3DData[arg0->model[i + 1]].pos.x >= lbl_1_bss_1A0C.unk288[0].x) { + Hu3DData[arg0->model[i + 1]].rot.y = fn_1_5FC(Hu3DData[arg0->model[i + 1]].rot.y, 0.0f, 20.0f); + } else if (arg1[2] == 1 && Hu3DData[arg0->model[i + 1]].pos.x <= lbl_1_bss_1A0C.unk288[0].x) { + Hu3DData[arg0->model[i + 1]].rot.y = fn_1_5FC(Hu3DData[arg0->model[i + 1]].rot.y, 1980.0f, 20.0f); + } + } +} + +void fn_1_184E8(void) { + s32 i; + + for (i = 0; i < 7; i++) { + Hu3DModelAttrReset(lbl_1_bss_19BC.unk00->model[i + 1], HU3D_ATTR_DISPOFF); + } + lbl_1_bss_19BC.unk04 = (void*) fn_1_18334; +} + +void fn_1_18558(void) { + s32 i; + + for (i = 0; i < 7; i++) { + Hu3DModelAttrSet(lbl_1_bss_19BC.unk00->model[i + 1], HU3D_ATTR_DISPOFF); + } + for (i = 0; i < 7; i++) { + if (lbl_1_bss_19BC.unk08 != 0) { + Hu3DData[lbl_1_bss_19BC.unk00->model[i + 1]].rot.y = 1980.0f; + } else { + Hu3DData[lbl_1_bss_19BC.unk00->model[i + 1]].rot.y = 0.0f; + } + } + lbl_1_bss_19BC.unk04 = NULL; +} + +void fn_1_18668(omObjData* arg0, s32 arg1) { + s32 var_r30; + s32 i; + + // TODO: figure out the actual args of fn_1_15D08 calls. + // It will match as long as the values (arg2 + arg4 / 2) and (arg3 + arg5 / 2) are preserved. + arg0->work[1] = HuSprGrpCreate(8); + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 116), MEMORY_DEFAULT_NUM)), 900, 0); + HuSprGrpMemberSet(arg0->work[1], 0, var_r30); + fn_1_15D08(arg0->work[1], 0, 368, 171, 0, 0); + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 117), MEMORY_DEFAULT_NUM)), 600, 0); + HuSprGrpMemberSet(arg0->work[1], 1, var_r30); + fn_1_15D08(arg0->work[1], 1, 292, 168, 0, 0); + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 118), MEMORY_DEFAULT_NUM)), 500, 0); + HuSprGrpMemberSet(arg0->work[1], 2, var_r30); + fn_1_15D08(arg0->work[1], 2, 292, 168, 0, 0); + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 119), MEMORY_DEFAULT_NUM)), 500, 0); + HuSprGrpMemberSet(arg0->work[1], 3, var_r30); + fn_1_15D08(arg0->work[1], 3, 292, 168, 0, 0); + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(arg1 + DATA_MAKE_NUM(DATADIR_MSTORY3, 110), MEMORY_DEFAULT_NUM)), 500, 0); + HuSprGrpMemberSet(arg0->work[1], 4, var_r30); + fn_1_15D08(arg0->work[1], 4, 96, 53, 0, 0); + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 138), MEMORY_DEFAULT_NUM)), 500, 0); + HuSprGrpMemberSet(arg0->work[1], 5, var_r30); + fn_1_15D08(arg0->work[1], 5, 407, 37, 0, 0); + for (i = 0; i < 2; i++) { + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 139), MEMORY_DEFAULT_NUM)), 500, 0); + HuSprGrpMemberSet(arg0->work[1], i + 6, var_r30); + } + // TODO: figure out the actual value of arg7. It will match as long as arg7 >= 2. + fn_1_15DC8(arg0->work[1], 6, lbl_1_bss_1A0C.unk08, 293, 19, 36, 36, 2); + arg0->work[2] = HuSprGrpCreate(2); + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 120), MEMORY_DEFAULT_NUM)), 800, 0); + HuSprGrpMemberSet(arg0->work[2], 0, var_r30); + fn_1_15D08(arg0->work[2], 0, 34, 119, 0, 0); + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 121), MEMORY_DEFAULT_NUM)), 400, 0); + HuSprGrpMemberSet(arg0->work[2], 1, var_r30); + fn_1_15D08(arg0->work[2], 1, 36, 121, 0, 0); + arg0->work[3] = HuSprGrpCreate(12); + for (i = 0; i < 12; i++) { + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(i + DATA_MAKE_NUM(DATADIR_MSTORY3, 124), MEMORY_DEFAULT_NUM)), 700, 0); + HuSprGrpMemberSet(arg0->work[3], i, var_r30); + fn_1_15D08(arg0->work[3], i, i * 66, 16, 58, 0); + } + HuSprGrpPosSet(arg0->work[2], 164 + lbl_1_bss_1A0C.unk2C4 * 66, 78.0f); + HuSprGrpDrawNoSet(arg0->work[1], 0x7F); + HuSprGrpDrawNoSet(arg0->work[2], 0x7F); + HuSprGrpDrawNoSet(arg0->work[3], 0x7F); +} + +void fn_1_18CFC(omObjData* arg0) { + float temp_f31; + float var_f30; + s32 var_r29; + s32 var_r28; + s32 var_r30; + + var_r28 = lbl_1_bss_1A0C.unk2C8 - lbl_1_bss_1A0C.unk2C4; + if (var_r28 < 0) { + var_r28 = 0; + } + temp_f31 = HuSprGrpData[arg0->work[2]].x; + var_f30 = 164 + lbl_1_bss_1A0C.unk2C4 * 66; + temp_f31 = fn_1_5FC(temp_f31, var_f30, 2.0f); + HuSprGrpPosSet(arg0->work[1], -5.0f, 25.0f); + HuSprGrpPosSet(arg0->work[2], temp_f31, 78.0f); + HuSprGrpPosSet(arg0->work[3], 169 - var_r28 * 66, 82.0f); + for (var_r30 = 0; var_r30 < 12; var_r30++) { + if (var_r30 < var_r28 || var_r30 > var_r28 + 5) { + HuSprAttrSet(arg0->work[3], var_r30, HUSPR_ATTR_DISPOFF); + } else { + HuSprAttrReset(arg0->work[3], var_r30, HUSPR_ATTR_DISPOFF); + } + } + var_r29 = lbl_1_bss_1A0C.unk2C8 - lbl_1_bss_1A0C.unk2C4; + if (var_r29 < 0) { + var_r29 = 0; + } + if (var_r29 == 0) { + HuSprBankSet(lbl_1_bss_19BC.unk00->work[1], 2, 2); + } else if (var_r29 == 1) { + HuSprBankSet(lbl_1_bss_19BC.unk00->work[1], 2, 0); + } + if (var_r29 == 6) { + HuSprBankSet(lbl_1_bss_19BC.unk00->work[1], 3, 2); + } else if (var_r29 == 5) { + HuSprBankSet(lbl_1_bss_19BC.unk00->work[1], 3, 0); + } +} + +void fn_1_18F98(void) { + s32 var_r30; + s32 i; + + for (i = 0; i < 8; i++) { + HuSprAttrReset(lbl_1_bss_19BC.unk00->work[1], i, HUSPR_ATTR_DISPOFF); + } + for (i = 0; i < 2; i++) { + HuSprAttrReset(lbl_1_bss_19BC.unk00->work[2], i, HUSPR_ATTR_DISPOFF); + } + for (i = 0; i < 12; i++) { + HuSprAttrReset(lbl_1_bss_19BC.unk00->work[3], i, HUSPR_ATTR_DISPOFF); + } + var_r30 = lbl_1_bss_1A0C.unk2C8 - lbl_1_bss_1A0C.unk2C4; + if (var_r30 < 0) { + var_r30 = 0; + } + if (var_r30 == 0) { + HuSprBankSet(lbl_1_bss_19BC.unk00->work[1], 2, 2); + } else if (var_r30 == 1) { + HuSprBankSet(lbl_1_bss_19BC.unk00->work[1], 2, 0); + } + if (var_r30 == 6) { + HuSprBankSet(lbl_1_bss_19BC.unk00->work[1], 3, 2); + } else if (var_r30 == 5) { + HuSprBankSet(lbl_1_bss_19BC.unk00->work[1], 3, 0); + } + lbl_1_bss_19BC.unk04 = (void*) fn_1_18CFC; +} + +void fn_1_19144(void) { + s32 i; + + for (i = 0; i < 8; i++) { + HuSprAttrSet(lbl_1_bss_19BC.unk00->work[1], i, HUSPR_ATTR_DISPOFF); + } + for (i = 0; i < 2; i++) { + HuSprAttrSet(lbl_1_bss_19BC.unk00->work[2], i, HUSPR_ATTR_DISPOFF); + } + for (i = 0; i < 12; i++) { + HuSprAttrSet(lbl_1_bss_19BC.unk00->work[3], i, HUSPR_ATTR_DISPOFF); + } + lbl_1_bss_19BC.unk04 = NULL; +} + +void fn_1_19214(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_18D0, 0x100, 0x10, 0x10, -1, NULL); + lbl_1_bss_19BC.unk00 = temp_r3; + lbl_1_bss_19BC.unk04 = NULL; + fn_1_1811C(temp_r3, lbl_1_bss_1A0C.unk00); + fn_1_18668(temp_r3, lbl_1_bss_1A0C.unk00); + while (TRUE) { + fn_1_938(); + if (lbl_1_bss_19BC.unk04 != NULL) { + lbl_1_bss_19BC.unk04(temp_r3, &lbl_1_bss_19BC); + } + } +} + +void fn_1_194A0(void) { + s32 var_r29; + s32 i; + s32 j; + + for (i = 0; i < 12; i++) { + var_r29 = 0; + for (j = 0; j < 4; j++) { + if (var_r29 <= lbl_1_bss_1A0C.unk38[j].unk34[i][0]) { + var_r29 = lbl_1_bss_1A0C.unk38[j].unk34[i][0]; + } + } + if (var_r29 > 0) { + for (j = 0; j < 4; j++) { + if (var_r29 == lbl_1_bss_1A0C.unk38[j].unk34[i][0]) { + lbl_1_bss_1A0C.unk38[j].unk34[i][1] = 1; + } + } + } + } +} + +void fn_1_19590(StructUnk38Bss1A0C* arg0, s32 arg1, s32 arg2) { + arg0->unk00 = arg1; + arg0->unk04 = GWPlayerCfg[arg0->unk00].group; + arg0->unk08 = GWPlayerCfg[arg0->unk00].iscom; + arg0->unk0C = GWPlayerCfg[arg0->unk00].diff; + arg0->unk10 = GWPlayerCfg[arg0->unk00].character; + arg0->unk14 = GWPlayerCfg[arg0->unk00].pad_idx; + arg0->unk18 = GWPlayer[arg0->unk00].rank; + arg0->unk34[0][0] = GWPlayer[arg0->unk00].stars; + arg0->unk34[1][0] = GWPlayer[arg0->unk00].coins; + arg0->unk34[2][0] = GWPlayer[arg0->unk00].coins_mg; + arg0->unk34[3][0] = GWPlayer[arg0->unk00].coins_max; + arg0->unk54 = GWPlayer[arg0->unk00].blue_count; + arg0->unk5C = GWPlayer[arg0->unk00].red_count; + arg0->unk64 = GWPlayer[arg0->unk00].question_count; + arg0->unk6C = GWPlayer[arg0->unk00].fortune_count; + arg0->unk74 = GWPlayer[arg0->unk00].bowser_count; + arg0->unk7C = GWPlayer[arg0->unk00].battle_count; + arg0->unk84 = GWPlayer[arg0->unk00].mushroom_count; + arg0->unk8C = GWPlayer[arg0->unk00].warp_count; +} + +void fn_1_197B4(s32 arg0) { + s32 sp74[4][2]; + s32 sp54[4][2]; + s32 sp44[4]; + s32 sp34[4]; + s32 sp24[4]; + s32 var_r28; + s32 var_r29; + s32 j; + s32 i; + + var_r28 = 0; + sp44[0] = 0; + for (i = 1; i < 4; i++) { + sp44[i] = sp44[i - 1] + 1; + if (sp44[i] >= 4) { + sp44[i] = 0; + } + } + for (i = 0; i < 4; i++) { + sp34[i] = GWPlayer[sp44[i]].rank; + } + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + if (i == sp34[j]) { + sp74[var_r28][0] = sp44[j]; + sp74[var_r28][1] = sp34[j]; + var_r28++; + } + } + } + if (lbl_1_bss_1A0C.unk2CC == 1) { + var_r29 = lbl_1_bss_1A0C.unk2D0; + for (i = 0; i < 4; i++) { + sp24[0] = GWPlayer[sp74[0][0]].team; + sp24[1] = GWPlayer[sp74[1][0]].team; + sp24[2] = GWPlayer[sp74[2][0]].team; + sp24[3] = GWPlayer[sp74[3][0]].team; + sp54[i][0] = sp74[i][0]; + sp54[i][1] = sp74[i][1]; + } + OSReport("########## Sort Start WIN:%d IDX (%d,%d,%d), (%d,%d,%d), (%d,%d,%d), (%d,%d,%d)\n", var_r29, + sp24[0], sp74[0][0], sp74[0][1], sp24[1], sp74[1][0], sp74[1][1], + sp24[2], sp74[2][0], sp74[2][1], sp24[3], sp74[3][0], sp74[3][1]); + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + if (sp24[j] != -1 && var_r29 == sp24[j]) { + sp24[j] = -1; + sp74[i][0] = sp54[j][0]; + sp74[i][1] = sp54[j][1]; + break; + } + } + if (i == 1) { + var_r29++; + var_r29 %= 2; + } + } + OSReport("########## Sort End WIN:%d IDX %d, %d, %d, %d\n", var_r29, sp74[0][0], sp74[1][0], sp74[2][0], sp74[3][0]); + OSReport("########## Sort End RANK %d, %d, %d, %d,\n", sp74[0][1], sp74[1][1], sp74[2][1], sp74[3][1]); + } + for (i = 0; i < 4; i++) { + fn_1_19590(&lbl_1_bss_1A0C.unk38[i], sp74[i][0], sp74[i][1]); + if (arg0 == sp74[i][0]) { + lbl_1_bss_1A0C.unk04 = i; + } + } +} + +void fn_1_1A008(omObjData* arg0, s32 arg1) { + s32 spDC; + s32 spD8; + s32 spD4; + s32 spD0; + s32 spCC; + s32 spC8; + StructUnk38Bss1A0C* temp_r27; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + // TODO: figure out the actual args of fn_1_15D08 calls. + // It will match as long as the values (arg2 + arg4 / 2) and (arg3 + arg5 / 2) are preserved. + temp_r27 = &lbl_1_bss_1A0C.unk38[arg1]; + if (lbl_1_bss_1A0C.unk2CC == 1) { + spD4 = lbl_1_bss_1A0C.unk2D0; + if (arg1 > 1) { + spD4++; + spD4 %= 2; + } + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 140) + spD4); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 142) + spD4); + arg0->motion[2] = Hu3DMotionIDGet(arg0->model[2]); + if (arg1 <= 1) { + spD4 = 0; + } else { + spD4 = 1; + } + arg0->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 100) + spD4); + Hu3DModelHookSet(arg0->model[1], "results_flag04-hook_cubes", arg0->model[3]); + } else { + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 98)); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 99)); + arg0->motion[2] = Hu3DMotionIDGet(arg0->model[2]); + arg0->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 100) + temp_r27->unk18); + Hu3DModelHookSet(arg0->model[1], "results_flag04-hook_cubes", arg0->model[3]); + } + arg0->work[0] = HuSprGrpCreate(12); + if (lbl_1_bss_1A0C.unk2CC == 1) { + spD0 = 35; + spCC = 10; + spC8 = 65; + if (arg1 <= 1) { + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 81), MEMORY_DEFAULT_NUM)), 900, 0); + } else { + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 82), MEMORY_DEFAULT_NUM)), 900, 0); + } + HuSprGrpMemberSet(arg0->work[0], 0, var_r30); + fn_1_15D08(arg0->work[0], 0, 40, spD0 + 36, 0, 0); + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 85) + temp_r27->unk10, MEMORY_DEFAULT_NUM)), 900, 0); + HuSprGrpMemberSet(arg0->work[0], 1, var_r30); + if (arg1 % 2 == 0) { + fn_1_15D08(arg0->work[0], 1, 119, spD0 + 34, 0, 0); + } else { + fn_1_15D08(arg0->work[0], 1, 189, -spD0 + 24, 0, 0); + } + var_r30 = HuSprCreate(lbl_1_bss_18D8[0], 900, 0); + HuSprGrpMemberSet(arg0->work[0], 2, var_r30); + fn_1_15D08(arg0->work[0], 2, 262, spCC + 29, 0, 0); + var_r30 = HuSprCreate(lbl_1_bss_18D8[2], 900, 0); + HuSprGrpMemberSet(arg0->work[0], 3, var_r30); + fn_1_15D08(arg0->work[0], 3, 312, spCC + 29, 0, 0); + for (var_r28 = 0; var_r28 < 3; var_r28++) { + spDC = lbl_1_bss_1A0C.unk38[0].unk34[0][0] + lbl_1_bss_1A0C.unk38[1].unk34[0][0]; + spD8 = lbl_1_bss_1A0C.unk38[2].unk34[0][0] + lbl_1_bss_1A0C.unk38[3].unk34[0][0]; + if (arg1 <= 1) { + if (spDC >= spD8) { + var_r30 = HuSprCreate(lbl_1_bss_18EC[1], 900, 0); + } else { + var_r30 = HuSprCreate(lbl_1_bss_18EC[0], 900, 0); + } + } else { + if (spDC <= spD8) { + var_r30 = HuSprCreate(lbl_1_bss_18EC[1], 900, 0); + } else { + var_r30 = HuSprCreate(lbl_1_bss_18EC[0], 900, 0); + } + } + HuSprGrpMemberSet(arg0->work[0], var_r28 + 4, var_r30); + } + if (arg1 <= 1) { + var_r29 = lbl_1_bss_1A0C.unk38[0].unk34[0][0] + lbl_1_bss_1A0C.unk38[1].unk34[0][0]; + if (var_r29 >= 999) { + var_r29 = 999; + } + fn_1_15DC8(arg0->work[0], 4, var_r29, 340, spCC + 11, 26, 36, 0); + } else { + var_r29 = lbl_1_bss_1A0C.unk38[2].unk34[0][0] + lbl_1_bss_1A0C.unk38[3].unk34[0][0]; + if (var_r29 >= 999) { + var_r29 = 999; + } + fn_1_15DC8(arg0->work[0], 4, var_r29, 340, spCC + 11, 26, 36, 0); + } + var_r30 = HuSprCreate(lbl_1_bss_18D8[1], 900, 0); + HuSprGrpMemberSet(arg0->work[0], 7, var_r30); + fn_1_15D08(arg0->work[0], 7, 262, spC8 + 29, 0, 0); + var_r30 = HuSprCreate(lbl_1_bss_18D8[2], 900, 0); + HuSprGrpMemberSet(arg0->work[0], 8, var_r30); + fn_1_15D08(arg0->work[0], 8, 312, spC8 + 29, 0, 0); + for (var_r28 = 0; var_r28 < 3; var_r28++) { + spDC = lbl_1_bss_1A0C.unk38[0].unk34[1][0] + lbl_1_bss_1A0C.unk38[1].unk34[1][0]; + spD8 = lbl_1_bss_1A0C.unk38[2].unk34[1][0] + lbl_1_bss_1A0C.unk38[3].unk34[1][0]; + if (arg1 <= 1) { + if (spDC >= spD8) { + var_r30 = HuSprCreate(lbl_1_bss_18EC[1], 900, 0); + } else { + var_r30 = HuSprCreate(lbl_1_bss_18EC[0], 900, 0); + } + } else { + if (spDC <= spD8) { + var_r30 = HuSprCreate(lbl_1_bss_18EC[1], 900, 0); + } else { + var_r30 = HuSprCreate(lbl_1_bss_18EC[0], 900, 0); + } + } + HuSprGrpMemberSet(arg0->work[0], var_r28 + 9, var_r30); + } + if (arg1 <= 1) { + var_r29 = lbl_1_bss_1A0C.unk38[0].unk34[1][0] + lbl_1_bss_1A0C.unk38[1].unk34[1][0]; + if (var_r29 >= 999) { + var_r29 = 999; + } + fn_1_15DC8(arg0->work[0], 9, var_r29, 340, spC8 + 11, 26, 36, 0); + } else { + var_r29 = lbl_1_bss_1A0C.unk38[2].unk34[1][0] + lbl_1_bss_1A0C.unk38[3].unk34[1][0]; + if (var_r29 >= 999) { + var_r29 = 999; + } + fn_1_15DC8(arg0->work[0], 9, var_r29, 340, spC8 + 11, 26, 36, 0); + } + } else { + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 81) + temp_r27->unk18, MEMORY_DEFAULT_NUM)), 900, 0); + HuSprGrpMemberSet(arg0->work[0], 0, var_r30); + fn_1_15D08(arg0->work[0], 0, 25, 37, 0, 0); + var_r30 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 85) + temp_r27->unk10, MEMORY_DEFAULT_NUM)), 900, 0); + HuSprGrpMemberSet(arg0->work[0], 1, var_r30); + fn_1_15D08(arg0->work[0], 1, 87, 29, 0, 0); + var_r30 = HuSprCreate(lbl_1_bss_18D8[0], 900, 0); + HuSprGrpMemberSet(arg0->work[0], 2, var_r30); + fn_1_15D08(arg0->work[0], 2, 144, 29, 0, 0); + var_r30 = HuSprCreate(lbl_1_bss_18D8[2], 900, 0); + HuSprGrpMemberSet(arg0->work[0], 3, var_r30); + fn_1_15D08(arg0->work[0], 3, 178, 29, 0, 0); + for (var_r28 = 0; var_r28 < 3; var_r28++) { + var_r30 = HuSprCreate(lbl_1_bss_18EC[temp_r27->unk34[0][1]], 900, 0); + HuSprGrpMemberSet(arg0->work[0], (var_r28 + 4), var_r30); + } + fn_1_15DC8(arg0->work[0], 4, temp_r27->unk34[0][0], 190, 11, 26, 36, 0); + var_r30 = HuSprCreate(lbl_1_bss_18D8[1], 900, 0); + HuSprGrpMemberSet(arg0->work[0], 7, var_r30); + fn_1_15D08(arg0->work[0], 7, 304, 29, 0, 0); + var_r30 = HuSprCreate(lbl_1_bss_18D8[2], 900, 0); + HuSprGrpMemberSet(arg0->work[0], 8, var_r30); + fn_1_15D08(arg0->work[0], 8, 338, 29, 0, 0); + for (var_r28 = 0; var_r28 < 3; var_r28++) { + var_r30 = HuSprCreate(lbl_1_bss_18EC[temp_r27->unk34[1][1]], 900, 0); + HuSprGrpMemberSet(arg0->work[0], var_r28 + 9, var_r30); + } + fn_1_15DC8(arg0->work[0], 9, temp_r27->unk34[1][0], 350, 11, 26, 36, 0); + } + lbl_1_bss_18F4[var_r28].unk14 = 1000 + rand8() * 5; +} + +void fn_1_1BEFC(omObjData* arg0, StructBss1530* arg1) { + Mtx sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + s32 var_r29; + + if (lbl_1_bss_1A0C.unk2CC == 1) { + if (arg1->unk08 % 2 == 1) { + Hu3DModelAttrSet(arg0->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->model[3], HU3D_ATTR_DISPOFF); + for (var_r29 = 0; var_r29 < 12; var_r29++) { + HuSprAttrSet(arg0->work[0], var_r29, 4); + } + } + HuSprAttrReset(arg0->work[0], 1, HUSPR_ATTR_DISPOFF); + Hu3DModelPosSet(arg0->model[1], lbl_1_bss_1A0C.unk288[arg1->unk08 + 1].x + 15.0f, lbl_1_bss_1A0C.unk288[arg1->unk08 + 1].y + 25.0f - 35.0f, lbl_1_bss_1A0C.unk288[arg1->unk08 + 1].z); + } else { + Hu3DModelPosSet(arg0->model[1], lbl_1_bss_1A0C.unk288[arg1->unk08 + 1].x + 15.0f, lbl_1_bss_1A0C.unk288[arg1->unk08 + 1].y + 25.0f, lbl_1_bss_1A0C.unk288[arg1->unk08 + 1].z); + } + if (Hu3DData[arg0->model[1]].pos.x <= -195.0f) { + Hu3DData[arg0->model[1]].pos.x = -195.0f; + } + Hu3DModelObjMtxGet(arg0->model[1], "results_flag04-hook_flag", sp2C); + Hu3DModelPosSet(arg0->model[2], sp2C[0][3], sp2C[1][3], sp2C[2][3]); + if (arg1->unk0C++ >= arg1->unk14) { + arg1->unk0C = 0; + arg1->unk14 = rand8() * 5 + 1000; + fn_1_1E28(arg0, 2, 2, 0, 0); + } + Hu3DModelRotSet(arg0->model[3], 0.0f, arg1->unk10 += 3, 0.0f); + if (arg1->unk10 >= 360) { + arg1->unk10 -= 360; + } + sp8.x = Hu3DData[arg0->model[1]].pos.x; + sp8.y = lbl_1_bss_1A0C.unk288[arg1->unk08 + 1].y + 25.0f; + sp8.z = Hu3DData[arg0->model[1]].pos.z; + sp20.x = sp8.x + 24.0f; + sp20.y = sp8.y + 40.0f; + sp20.z = sp8.z; + Hu3D3Dto2D(&sp20, 1, &sp14); + HuSprGrpPosSet(arg0->work[0], sp14.x, sp14.y); +} + +void fn_1_1C2F4(void) { + s32 var_r30; + s32 var_r31; + + for (var_r30 = 0; var_r30 < 4; var_r30++) { + for (var_r31 = 0; var_r31 < 3; var_r31++) { + Hu3DModelAttrReset(lbl_1_bss_18F4[var_r30].unk00->model[var_r31 + 1], HU3D_ATTR_DISPOFF); + } + if (lbl_1_bss_1A0C.unk2CC == 1) { + if (var_r30 % 2 == 0) { + for (var_r31 = 0; var_r31 < 12; var_r31++) { + HuSprAttrReset(lbl_1_bss_18F4[var_r30].unk00->work[0], var_r31, HUSPR_ATTR_DISPOFF); + } + } + HuSprAttrReset(lbl_1_bss_18F4[var_r30].unk00->work[0], 1, HUSPR_ATTR_DISPOFF); + } else { + for (var_r31 = 0; var_r31 < 12; var_r31++) { + HuSprAttrReset(lbl_1_bss_18F4[var_r30].unk00->work[0], var_r31, HUSPR_ATTR_DISPOFF); + } + } + lbl_1_bss_18F4[var_r30].unk04 = (void*) fn_1_1BEFC; + } +} + +void fn_1_1C460(void) { + s32 var_r30; + s32 var_r31; + + for (var_r30 = 0; var_r30 < 4; var_r30++) { + for (var_r31 = 0; var_r31 < 3; var_r31++) { + Hu3DModelAttrSet(lbl_1_bss_18F4[var_r30].unk00->model[var_r31 + 1], HU3D_ATTR_DISPOFF); + } + for (var_r31 = 0; var_r31 < 12; var_r31++) { + HuSprAttrSet(lbl_1_bss_18F4[var_r30].unk00->work[0], var_r31, HUSPR_ATTR_DISPOFF); + } + lbl_1_bss_18F4[var_r30].unk04 = NULL; + } +} + +void fn_1_1C534(omObjData* arg0, s32 arg1) { + StructUnk38Bss1A0C* temp_r25; + s32 var_r22; + s32 i; + s32 j; + + temp_r25 = &lbl_1_bss_1A0C.unk38[arg1]; + arg0->work[1] = HuSprGrpCreate(1); + var_r22 = HuSprCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MSTORY3, 122), MEMORY_DEFAULT_NUM)), 700, 0); + HuSprGrpMemberSet(arg0->work[1], 0, var_r22); + HuSprBankSet(arg0->work[1], 0, temp_r25->unk10); + // TODO: figure out the actual args of this fn_1_15D08 call. + // It will match as long as the values (arg2 + arg4 / 2) and (arg3 + arg5 / 2) are preserved. + fn_1_15D08(arg0->work[1], 0, 66, 21, 0, 0); + arg0->work[2] = HuSprGrpCreate(0x24); + for (i = 0; i < 12; i++) { + for (j = 0; j < 3; j++) { + var_r22 = HuSprCreate(lbl_1_bss_18E4[temp_r25->unk34[i][1]], 700, 0); + HuSprGrpMemberSet(arg0->work[2], j + i * 3, var_r22); + } + fn_1_15DC8(arg0->work[2], i * 3, temp_r25->unk34[i][0], i * 66, 0, 20, 32, 1); + } + HuSprGrpDrawNoSet(arg0->work[1], 0x7F); + HuSprGrpDrawNoSet(arg0->work[2], 0x7F); +} + +void fn_1_1C914(omObjData* arg0, StructBss1530* arg1) { + s32 i; + s32 j; + s32 var_r28; + + var_r28 = lbl_1_bss_1A0C.unk2C8 - lbl_1_bss_1A0C.unk2C4; + if (var_r28 < 0) { + var_r28 = 0; + } + HuSprGrpPosSet(arg0->work[1], 17.0f, arg1->unk08 * 48 + 118); + HuSprGrpPosSet(arg0->work[2], 169 - var_r28 * 66, arg1->unk08 * 48 + 123); + for (i = 0; i < 12; i++) { + for (j = 0; j < 3; j++) { + if (i < var_r28 || i > var_r28 + 5) { + HuSprAttrSet(arg0->work[2], j + i * 3, HUSPR_ATTR_DISPOFF); + } else { + HuSprAttrReset(arg0->work[2], j + i * 3, HUSPR_ATTR_DISPOFF); + } + } + } +} + +void fn_1_1CA98(void) { + s32 i, j, k; + + for (i = 0; i < 4; i++) { + HuSprAttrReset(lbl_1_bss_18F4[i].unk00->work[1], 0, HUSPR_ATTR_DISPOFF); + for (j = 0; j < 12; j++) { + for (k = 0; k < 3; k++) { + HuSprAttrReset(lbl_1_bss_18F4[i].unk00->work[2], k + j * 3, HUSPR_ATTR_DISPOFF); + } + } + lbl_1_bss_18F4[i].unk04 = (void*) fn_1_1C914; + } +} + +void fn_1_1CB7C(void) { + s32 i, j, k; + + for (i = 0; i < 4; i++) { + HuSprAttrSet(lbl_1_bss_18F4[i].unk00->work[1], 0, HUSPR_ATTR_DISPOFF); + for (j = 0; j < 12; j++) { + for (k = 0; k < 3; k++) { + HuSprAttrSet(lbl_1_bss_18F4[i].unk00->work[2], k + j * 3, HUSPR_ATTR_DISPOFF); + } + } + lbl_1_bss_18F4[i].unk04 = NULL; + } +} + +void fn_1_1CC5C(void) { + omObjData* temp_r3; + s32 temp_r31; + + temp_r31 = lbl_1_bss_1A0C.unk18++; + temp_r3 = omAddObjEx(lbl_1_bss_18D0, 0x100, 0x10, 0x10, -1, NULL); + lbl_1_bss_18F4[temp_r31].unk00 = temp_r3; + lbl_1_bss_18F4[temp_r31].unk04 = NULL; + lbl_1_bss_18F4[temp_r31].unk08 = temp_r31; + fn_1_1A008(temp_r3, temp_r31); + fn_1_1C534(temp_r3, temp_r31); + while (TRUE) { + fn_1_938(); + if (lbl_1_bss_18F4[temp_r31].unk04 != NULL) { + lbl_1_bss_18F4[temp_r31].unk04(temp_r3, &lbl_1_bss_18F4[temp_r31]); + } + } +} + +void fn_1_1CD60(void) { + if (lbl_1_bss_1994.unk00->work[0] != 1) { + fn_1_1E28(lbl_1_bss_1994.unk00, 4, 6, 15, 0); + lbl_1_bss_1994.unk00->work[0] = 1; + lbl_1_bss_1994.unk00->work[1] = 4; + lbl_1_bss_1994.unk00->work[2] = 16; + } +} + +void fn_1_1CDF0(omObjData* arg0) { + s32 sp20[] = { + DATA_MAKE_NUM(DATADIR_MSTORY3, 46), + DATA_MAKE_NUM(DATADIR_MSTORY3, 40), + DATA_MAKE_NUM(DATADIR_MSTORY3, 52), + DATA_MAKE_NUM(DATADIR_MSTORY3, 58), + DATA_MAKE_NUM(DATADIR_MSTORY3, 64) + }; + s32 sp34[][3] = { + { DATA_MAKE_NUM(DATADIR_MSTORY3, 47), DATA_MAKE_NUM(DATADIR_MSTORY3, 48), DATA_MAKE_NUM(DATADIR_MSTORY3, 49) }, + { DATA_MAKE_NUM(DATADIR_MSTORY3, 41), DATA_MAKE_NUM(DATADIR_MSTORY3, 42), DATA_MAKE_NUM(DATADIR_MSTORY3, 43) }, + { DATA_MAKE_NUM(DATADIR_MSTORY3, 53), DATA_MAKE_NUM(DATADIR_MSTORY3, 54), DATA_MAKE_NUM(DATADIR_MSTORY3, 55) }, + { DATA_MAKE_NUM(DATADIR_MSTORY3, 59), DATA_MAKE_NUM(DATADIR_MSTORY3, 60), DATA_MAKE_NUM(DATADIR_MSTORY3, 61) }, + { DATA_MAKE_NUM(DATADIR_MSTORY3, 65), DATA_MAKE_NUM(DATADIR_MSTORY3, 66), DATA_MAKE_NUM(DATADIR_MSTORY3, 67) } + }; + s32 i; + + for (i = 0; i < 5; i++) { + arg0->model[i * 3 + 1] = Hu3DModelCreateFile(sp20[i]); + arg0->motion[i * 3 + 1] = Hu3DJointMotionFile(arg0->model[i * 3 + 1], sp34[i][0]); + arg0->motion[i * 3 + 2] = Hu3DJointMotionFile(arg0->model[i * 3 + 1], sp34[i][1]); + arg0->motion[i * 3 + 3] = Hu3DJointMotionFile(arg0->model[i * 3 + 1], sp34[i][2]); + Hu3DModelRotSet(arg0->model[i * 3 + 1], 17.5f, 0.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[i * 3 + 1], 0.575f, 0.575f, 0.575f); + fn_1_1E28(arg0, i * 3 + 1, i * 3 + 1, 0, 1); + { + s32 sp8[] = { 9, 14, 10, 11, 12, 13 }; + + if (i != 3) { + CharModelEffectNpcInit(arg0->model[i * 3 + 1], arg0->motion[i * 3 + 2], 1, sp8[i]); + CharModelEffectEnableSet(sp8[i], 0); + } + } + } +} + +void fn_1_1D124(omObjData* arg0, StructBss1530* arg1) { + s32 i; + + for (i = 0; i < 5; i++) { + Hu3DModelPosSet(arg0->model[i * 3 + 1], lbl_1_bss_1A0C.unk288[i].x, lbl_1_bss_1A0C.unk288[i].y, lbl_1_bss_1A0C.unk288[i].z); + if (i == 3) { + Hu3DData[arg0->model[i * 3 + 1]].pos.y += 20.0f; + } + } + if (arg1->unk08++ >= 3000) { + arg1->unk08 = 0; + arg1->unk0C = 1; + lbl_1_bss_19BC.unk08++; + lbl_1_bss_19BC.unk08 %= 2; + fn_1_1E28(lbl_1_bss_1994.unk00, 1, 2, 15, 1); + } + if (arg1->unk0C == 1) { + lbl_1_bss_1A0C.unk288[0].x += -5.0f + 10.0f * lbl_1_bss_19BC.unk08; + if (lbl_1_bss_19BC.unk08 != 0) { + Hu3DData[lbl_1_bss_1994.unk00->model[1]].rot.y = fn_1_5FC(Hu3DData[lbl_1_bss_1994.unk00->model[1]].rot.y, 90.0f, 5.0f); + if (lbl_1_bss_1A0C.unk288[0].x >= 185.0f) { + arg1->unk0C = 2; + lbl_1_bss_1A0C.unk288[0].x = 185.0f; + fn_1_1E28(lbl_1_bss_1994.unk00, 1, 1, 15, 1); + } + } else { + Hu3DData[lbl_1_bss_1994.unk00->model[1]].rot.y = fn_1_5FC(Hu3DData[lbl_1_bss_1994.unk00->model[1]].rot.y, -90.0f, 5.0f); + if (lbl_1_bss_1A0C.unk288[0].x <= -175.0f) { + arg1->unk0C = 2; + lbl_1_bss_1A0C.unk288[0].x = -175.0f; + fn_1_1E28(lbl_1_bss_1994.unk00, 1, 1, 15, 1); + } + } + } else if (arg1->unk0C == 2) { + if (lbl_1_bss_19BC.unk08 != 0) { + Hu3DData[lbl_1_bss_1994.unk00->model[1]].rot.y = fn_1_5FC(Hu3DData[lbl_1_bss_1994.unk00->model[1]].rot.y, -15.0f, 15.0f); + if (Hu3DData[lbl_1_bss_1994.unk00->model[1]].rot.y <= -14.9f) { + arg1->unk0C = 0; + } + } else { + Hu3DData[lbl_1_bss_1994.unk00->model[1]].rot.y = fn_1_5FC(Hu3DData[lbl_1_bss_1994.unk00->model[1]].rot.y, 15.0f, 15.0f); + if (Hu3DData[lbl_1_bss_1994.unk00->model[1]].rot.y >= 14.9f) { + arg1->unk0C = 0; + } + } + } +} + +void fn_1_1D63C(void) { + s32 i; + + for (i = 0; i < 5; i++) { + Hu3DModelAttrReset(lbl_1_bss_1994.unk00->model[(i * 3) + 1], HU3D_ATTR_DISPOFF); + } + Hu3DModelRotSet(lbl_1_bss_1994.unk00->model[4], 17.5f, 15.0f, 0.0f); + Hu3DModelScaleSet(lbl_1_bss_1994.unk00->model[4], 0.575f, 0.575f, 0.575f); + fn_1_1E28(lbl_1_bss_1994.unk00, 4, 4, 0, 1); + lbl_1_bss_1994.unk00->work[0] = lbl_1_bss_1994.unk00->work[1] = lbl_1_bss_1994.unk00->work[2] = 0; + lbl_1_bss_1994.unk04 = (void*) fn_1_1D124; +} + +void fn_1_1D77C(void) { + s32 i; + + for (i = 0; i < 5; i++) { + Hu3DModelAttrSet(lbl_1_bss_1994.unk00->model[i * 3 + 1], HU3D_ATTR_DISPOFF); + } + fn_1_1E28(lbl_1_bss_1994.unk00, 1, 1, 0, 1); + if (lbl_1_bss_19BC.unk08 != 0) { + lbl_1_bss_1A0C.unk288[0].x = 185.0f; + Hu3DData[lbl_1_bss_1994.unk00->model[1]].rot.y = -15.0f; + } else { + lbl_1_bss_1A0C.unk288[0].x = -175.0f; + Hu3DData[lbl_1_bss_1994.unk00->model[1]].rot.y = 15.0f; + } + lbl_1_bss_1994.unk0C = 0; + lbl_1_bss_1994.unk04 = NULL; +} + +void fn_1_1D8CC(omObjData* arg0, StructBss1530* arg1) { + if (arg0->work[0] != 0) { + if (arg0->work[2] != 0) { + arg0->work[2]--; + return; + } + if (arg0->work[2] == 0 && Hu3DMotionEndCheck(arg0->model[4])) { + fn_1_1E28(arg0, 4, arg0->work[1], 15, 1); + arg0->work[0] = arg0->work[1] = arg0->work[2] = 0; + } + } +} + +void fn_1_1D964(void) { + Hu3DModelAttrReset(lbl_1_bss_1994.unk00->model[4], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(lbl_1_bss_1994.unk00->model[4], -185.0f, -225.0f, 0.0f); + Hu3DModelRotSet(lbl_1_bss_1994.unk00->model[4], 0.0f, 15.0f, 0.0f); + Hu3DModelScaleSet(lbl_1_bss_1994.unk00->model[4], 1.0f, 1.0f, 1.0f); + lbl_1_bss_1994.unk04 = (void*) fn_1_1D8CC; +} + +void fn_1_1DA64(void) { + Hu3DModelAttrSet(lbl_1_bss_1994.unk00->model[4], HU3D_ATTR_DISPOFF); + lbl_1_bss_1994.unk04 = NULL; +} + +void fn_1_1DAAC(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_18D0, 0x100, 0x10, 0x10, -1, NULL); + lbl_1_bss_1994.unk00 = temp_r3; + lbl_1_bss_1994.unk04 = NULL; + fn_1_1CDF0(temp_r3); + while (TRUE) { + fn_1_938(); + if (lbl_1_bss_1994.unk04 != NULL) { + lbl_1_bss_1994.unk04(temp_r3, &lbl_1_bss_1994); + } + } +} + +void fn_1_1DE4C(void) { + StructBss4* var_r31; + + var_r31 = &lbl_1_bss_4; + var_r31->unk08.x = 0.0f; + var_r31->unk08.y = 0.0f; + var_r31->unk08.z = 0.0f; + var_r31->unk20.x = 0.0f; + var_r31->unk20.y = 0.0f; + var_r31->unk20.z = 0.0f; + var_r31->unk38 = 650.0f; +} diff --git a/src/REL/mstory3Dll/result_seq.c b/src/REL/mstory3Dll/result_seq.c new file mode 100755 index 00000000..b4aa06c9 --- /dev/null +++ b/src/REL/mstory3Dll/result_seq.c @@ -0,0 +1,2928 @@ +#include "REL/mstory3Dll.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/esprite.h" +#include "game/flag.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "msm/msmse.h" + +#include "ext_math.h" + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ char unk08[0xC]; +} StructUnk24Bss1580; // Size 0x14 + +typedef struct { + /* 0x00 */ StructFn352C unk00; + /* 0x34 */ char unk34[0x60]; +} StructUnkC4Bss1580; // Size 0x94 + +typedef struct { + /* 0x000 */ s32 unk00; + /* 0x004 */ s32 unk04; + /* 0x008 */ s32 unk08; + /* 0x00C */ s32 unk0C; + /* 0x010 */ s32 unk10; + /* 0x014 */ s32 unk14; + /* 0x018 */ s32 unk18; + /* 0x01C */ s32 unk1C; + /* 0x020 */ s32 unk20; + /* 0x024 */ StructUnk24Bss1580 unk24[4]; + /* 0x074 */ char unk74[0x50]; + /* 0x0C4 */ StructUnkC4Bss1580 unkC4[4]; + /* 0x314 */ s32 unk314; + /* 0x318 */ char unk318[0xC]; + /* 0x324 */ s32 unk324; + /* 0x328 */ char unk328[0xC]; + /* 0x334 */ s32 unk334[1]; // array length unknown + /* 0x338 */ char unk338[0xC]; + /* 0x344 */ s32 unk344; + /* 0x348 */ s32 unk348; + /* 0x34C */ char unk34C[4]; +} StructBss1580; // Size 0x350 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ char unk0C[4]; + /* 0x10 */ float unk10; + /* 0x14 */ float unk14; + /* 0x18 */ float unk18; + /* 0x1C */ char unk1C[4]; + /* 0x20 */ float unk20; + /* 0x24 */ float unk24; + /* 0x28 */ float unk28; + /* 0x2C */ float unk2C; + /* 0x30 */ float unk30; + /* 0x34 */ float unk34; +} StructBssC8; // Size 0x38 + +void fn_1_7E88(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4); +void fn_1_82E0(void); +s32 fn_1_B670(void); +void fn_1_D48C(void); +void fn_1_D718(omObjData* arg0); +void fn_1_D7D8(omObjData* arg0); +void fn_1_FE80(void); +void fn_1_FF7C(s32 arg0); +void fn_1_1036C(omObjData* arg0); +void fn_1_10D74(omObjData* arg0); +void fn_1_11794(omObjData* arg0); +void fn_1_11834(omObjData* arg0); +void fn_1_123D8(omObjData* arg0); +void fn_1_1241C(omObjData* arg0); +void fn_1_12420(omObjData* arg0); +void fn_1_12A98(s32 arg0); +void fn_1_12C08(s32 arg0); +void fn_1_12DAC(void); +void fn_1_13908(void); +void fn_1_130A8(void); +void fn_1_1317C(void); +void fn_1_13A38(omObjData* arg0); +void fn_1_13A3C(s32 arg0, s32 arg1, s32 arg2, s32 arg3); +void fn_1_13C78(s32 arg0, s32 arg1, s32 arg2); +void fn_1_13D38(s32 arg0, s32 arg1, s32 arg2); +void fn_1_140A0(void); +void fn_1_15450(s32 arg0); + +StructBss1580 lbl_1_bss_1580; +StructBss1530 lbl_1_bss_1558; +StructBss1530 lbl_1_bss_1530; +StructBss1530 lbl_1_bss_1490[4]; +StructBss1530 lbl_1_bss_1468; +s32 lbl_1_bss_1458[4]; +s32 lbl_1_bss_1448[4]; +s32 lbl_1_bss_1438[4]; +s32 lbl_1_bss_1428[4]; +float lbl_1_bss_1424; +s32 lbl_1_bss_1420; +float lbl_1_bss_1408[3][2]; +StructBssC8 lbl_1_bss_C8[88]; +float lbl_1_bss_C4; +float lbl_1_bss_C0; +float lbl_1_bss_BC; +s32 lbl_1_bss_B8; +s32 lbl_1_bss_B4; +float lbl_1_bss_B0; +float lbl_1_bss_AC; +Process* lbl_1_bss_A8; +s32 lbl_1_bss_68[16]; +u8 lbl_1_bss_5C[0xC]; // unused +s32 lbl_1_bss_58; + +Vec lbl_1_data_130[] = { + { -300.0f, 0.0f, 460.0f }, + { -100.0f, 0.0f, 460.0f }, + { 100.0f, 0.0f, 460.0f }, + { 300.0f, 0.0f, 460.0f } +}; + +HsfanimStruct00 lbl_1_data_160 = { + 60, { 0, 0 }, + 1000.0f, 0.0f, 180.0f, + { 0.0f, -0.009f, 0.0f }, + 30.0f, 0.9f, 20.0f, 0.99f, 4, + { + { 0xFF, 0xFF, 0x00, 0xFF }, + { 0xFF, 0xFF, 0x20, 0xFF }, + { 0xFF, 0xFF, 0x80, 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_1B0 = { + 60, { 0, 0 }, + 1000.0f, 0.0f, 180.0f, + { 0.0f, -0.009f, 0.0f }, + 30.0f, 0.9f, 20.0f, 0.99f, 4, + { + { 0xFF, 0xFF, 0x00, 0xFF }, + { 0xFF, 0xFF, 0x20, 0xFF }, + { 0xFF, 0xFF, 0x80, 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_200 = { + 500, { 0, 0 }, + 0.25f, 0.0f, 30.0f, + { 0.0f, -0.009f, 0.001f }, + 30.0f, 0.9f, 20.0f, 0.999f, 4, + { + { 0xFF, 0xFF, 0x00, 0xFF }, + { 0xFF, 0xFF, 0x20, 0xFF }, + { 0xFF, 0xFF, 0x80, 0xFF }, + { 0xFF, 0xFF, 0xFF, 0xFF } + }, + { + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 } + } +}; + +void fn_1_6E34(Process* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + s32 var_r31; + + lbl_1_bss_A8 = arg0; + lbl_1_bss_1580.unk00 = arg1; + lbl_1_bss_1580.unk04 = arg2; + if (arg3 == 1) { + lbl_1_bss_1580.unk08 = 0; + } else { + lbl_1_bss_1580.unk08 = 1; + lbl_1_bss_1580.unk04 = 1; + } + lbl_1_bss_1580.unk14 = fn_1_36E4(); + lbl_1_bss_1580.unk344 = GWSystem.team; + _ClearFlag(FLAG_ID_MAKE(1, 29)); + lbl_1_bss_1580.unk348 = -1; + fn_1_9A0(); + fn_1_290C(lbl_1_bss_A8, fn_1_82E0); + lbl_1_bss_1580.unk1C = fn_1_37C8(lbl_1_bss_1580.unk20 = 0xFF); + fn_1_FF7C(arg4); + fn_1_38B4(); + fn_1_12DAC(); + HuPrcChildCreate(fn_1_FE80, 100, 0x2000, 0, HuPrcCurrentGet()); + HuPrcChildCreate(fn_1_140A0, 100, 0x2000, 0, HuPrcCurrentGet()); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuPrcChildCreate(fn_1_13908, 200, 0x2000, 0, HuPrcCurrentGet()); + } + HuPrcChildCreate(fn_1_D48C, 100, 0x2000, 0, HuPrcCurrentGet()); +} + +void fn_1_7004(s32 arg0, s32 arg1, s32 arg2) { + s32 sp1C[4]; + s32 spC[4]; + s32 temp_r27; + s32 var_r26; + s32 var_r30; + s32 var_r31; + + temp_r27 = lbl_1_bss_1580.unk20; + var_r26 = arg0; + lbl_1_bss_1530.unk04 = (void*) fn_1_D718; + for (var_r30 = 0; var_r30 < 4; var_r30++) { + lbl_1_bss_1490[var_r30].unk04 = (void*) fn_1_1241C; + } + lbl_1_bss_1468.unk04 = (void*) fn_1_13A38; + if (arg2 != 0) { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + sp1C[var_r31] = lbl_1_bss_1490[var_r31].unk00->work[0]; + spC[var_r31] = 0xFF; + } + } + for (var_r30 = 0; var_r30 < arg1; var_r30++) { + fn_1_938(); + lbl_1_bss_1580.unk20 = fn_1_5D4(temp_r27, var_r26, var_r30, arg1); + Hu3DGLightColorSet(lbl_1_bss_1580.unk1C, lbl_1_bss_1580.unk20, lbl_1_bss_1580.unk20, lbl_1_bss_1580.unk20, 0xFF); + if (arg2 != 0) { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + fn_1_7E88(sp1C[var_r31], spC[var_r31], var_r30, arg1, var_r31); + } + } + } + if (arg2 != 0) { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_1490[var_r31].unk00->work[0] = 0; + lbl_1_bss_1490[var_r31].unk00->work[1] = 0; + Hu3DModelAttrSet(lbl_1_bss_1490[var_r31].unk00->model[6], 1); + Hu3DLLightColorSet(lbl_1_bss_1490[var_r31].unk00->model[1], lbl_1_bss_1580.unk24[var_r31].unk00, 0, 0, 0, 0xFF); + Hu3DLLightColorSet(lbl_1_bss_1490[var_r31].unk00->model[2], lbl_1_bss_1580.unk24[var_r31].unk04, 0, 0, 0, 0xFF); + } + } + lbl_1_bss_1530.unk04 = NULL; + for (var_r30 = 0; var_r30 < 4; var_r30++) { + lbl_1_bss_1490[var_r30].unk04 = NULL; + } + lbl_1_bss_1468.unk04 = NULL; +} + +void fn_1_7398(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { + float temp_f31; + float temp_f30; + s32 sp10; + s32 spC; + s32 temp_r29; + s32 var_r28; + + sp10 = lbl_1_bss_1490[arg2].unk00->work[0]; + spC = arg0; + Hu3DModelPosSet(lbl_1_bss_1490[arg2].unk00->model[6], lbl_1_data_130[arg2].x, 500.0f + lbl_1_data_130[arg2].y + lbl_1_bss_AC, lbl_1_data_130[arg2].z + 0.1f * lbl_1_bss_AC); + Hu3DModelScaleSet(lbl_1_bss_1490[arg2].unk00->model[6], 0.0f, 1.25f, 0.0f); + Hu3DModelTPLvlSet(lbl_1_bss_1490[arg2].unk00->model[6], 0.0f); + Hu3DModelAttrReset(lbl_1_bss_1490[arg2].unk00->model[6], 1); + Hu3DModelPosSet(lbl_1_bss_1490[arg3].unk00->model[6], lbl_1_data_130[arg3].x, 500.0f + lbl_1_data_130[arg3].y + lbl_1_bss_AC, lbl_1_data_130[arg3].z + 0.1f * lbl_1_bss_AC); + Hu3DModelScaleSet(lbl_1_bss_1490[arg3].unk00->model[6], 0.0f, 1.25f, 0.0f); + Hu3DModelTPLvlSet(lbl_1_bss_1490[arg3].unk00->model[6], 0.0f); + Hu3DModelAttrReset(lbl_1_bss_1490[arg3].unk00->model[6], 1); + for (var_r28 = 0; var_r28 <= arg1; var_r28++) { + fn_1_938(); + temp_f31 = fn_1_6F4(0.0f, 1.5f, var_r28, arg1); + temp_f30 = fn_1_6F4(0.0f, 0.5f, var_r28, arg1); + temp_r29 = fn_1_6F4(0.0f, 128.0f, var_r28, arg1); + Hu3DModelScaleSet(lbl_1_bss_1490[arg2].unk00->model[6], temp_f31, 1.25f, temp_f31); + Hu3DModelTPLvlSet(lbl_1_bss_1490[arg2].unk00->model[6], temp_f30); + Hu3DModelScaleSet(lbl_1_bss_1490[arg3].unk00->model[6], temp_f31, 1.25f, temp_f31); + Hu3DModelTPLvlSet(lbl_1_bss_1490[arg3].unk00->model[6], temp_f30); + Hu3DLLightColorSet(lbl_1_bss_1490[arg2].unk00->model[1], lbl_1_bss_1580.unk24[arg2].unk00, temp_r29, temp_r29, temp_r29, 0xFF); + Hu3DLLightColorSet(lbl_1_bss_1490[arg2].unk00->model[2], lbl_1_bss_1580.unk24[arg2].unk04, temp_r29, temp_r29, temp_r29, 0xFF); + Hu3DLLightColorSet(lbl_1_bss_1490[arg3].unk00->model[1], lbl_1_bss_1580.unk24[arg3].unk00, temp_r29, temp_r29, temp_r29, 0xFF); + Hu3DLLightColorSet(lbl_1_bss_1490[arg3].unk00->model[2], lbl_1_bss_1580.unk24[arg3].unk04, temp_r29, temp_r29, temp_r29, 0xFF); + } + lbl_1_bss_1490[arg2].unk00->work[1] = 1; + lbl_1_bss_1490[arg3].unk00->work[1] = 1; +} + +void fn_1_79D8(s32 arg0, s32 arg1, s32 arg2) { + float temp_f31; + float temp_f30; + s32 temp_r27; + s32 var_r26; + s32 temp_r29; + s32 var_r30; + + temp_r27 = lbl_1_bss_1490[arg2].unk00->work[0]; + var_r26 = arg0; + Hu3DModelPosSet(lbl_1_bss_1490[arg2].unk00->model[6], lbl_1_data_130[arg2].x, 500.0f + lbl_1_data_130[arg2].y + lbl_1_bss_AC, lbl_1_data_130[arg2].z + 0.1f * lbl_1_bss_AC); + Hu3DModelScaleSet(lbl_1_bss_1490[arg2].unk00->model[6], 0.0f, 1.25f, 0.0f); + Hu3DModelTPLvlSet(lbl_1_bss_1490[arg2].unk00->model[6], 0.0f); + Hu3DModelAttrReset(lbl_1_bss_1490[arg2].unk00->model[6], 1); + for (var_r30 = 0; var_r30 <= arg1; var_r30++) { + fn_1_938(); + lbl_1_bss_1490[arg2].unk00->work[0] = fn_1_6F4(temp_r27, var_r26, var_r30, arg1); + temp_f31 = fn_1_6F4(0.0f, 1.5f, var_r30, arg1); + temp_f30 = fn_1_6F4(0.0f, 0.5f, var_r30, arg1); + temp_r29 = fn_1_6F4(0.0f, 128.0f, var_r30, arg1); + Hu3DModelScaleSet(lbl_1_bss_1490[arg2].unk00->model[6], temp_f31, 1.25f, temp_f31); + Hu3DModelTPLvlSet(lbl_1_bss_1490[arg2].unk00->model[6], temp_f30); + Hu3DLLightColorSet(lbl_1_bss_1490[arg2].unk00->model[1], lbl_1_bss_1580.unk24[arg2].unk00, temp_r29, temp_r29, temp_r29, 0xFF); + Hu3DLLightColorSet(lbl_1_bss_1490[arg2].unk00->model[2], lbl_1_bss_1580.unk24[arg2].unk04, temp_r29, temp_r29, temp_r29, 0xFF); + } + lbl_1_bss_1490[arg2].unk00->work[1] = 1; +} + +void fn_1_7E88(s32 arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4) { + float var_f31; + s32 temp_r31; + + if (lbl_1_bss_1490[arg4].unk00->work[1] != 0) { + lbl_1_bss_1490[arg4].unk00->work[0] = fn_1_5D4(arg0, arg1, arg2, arg3); + var_f31 = fn_1_5D4(0.5f, 0.0f, arg2, arg3); + Hu3DModelTPLvlSet(lbl_1_bss_1490[arg4].unk00->model[6], var_f31); + temp_r31 = fn_1_5D4(128.0f, 0.0f, arg2, arg3); + Hu3DLLightColorSet(lbl_1_bss_1490[arg4].unk00->model[1], lbl_1_bss_1580.unk24[arg4].unk00, temp_r31, temp_r31, temp_r31, 0xFF); + Hu3DLLightColorSet(lbl_1_bss_1490[arg4].unk00->model[2], lbl_1_bss_1580.unk24[arg4].unk04, temp_r31, temp_r31, temp_r31, 0xFF); + } +} + +s32 fn_1_814C(s32 arg0) { + s32 var_r31; + + if (arg0 == 0) { + var_r31 = Hu3DParManCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_EFFECT, 1)), 100, &lbl_1_data_160); + } else if (arg0 == 1) { + var_r31 = Hu3DParManCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_EFFECT, 1)), 500, &lbl_1_data_1B0); + } else if (arg0 == 2) { + var_r31 = Hu3DParManCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_EFFECT, 1)), 250, &lbl_1_data_200); + } + if (arg0 != 2) { + Hu3DParManTimeLimitSet(var_r31, 60); + Hu3DParManAttrSet(var_r31, 4 | 0x40); + Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(var_r31), 1); + } else { + Hu3DParManAttrSet(var_r31, 4 | 0x40); + } + return var_r31; +} + +s32 fn_1_8264(void) { + return fn_1_814C(0); +} + +void fn_1_82E0(void) { + StructBss4* var_r31; + + var_r31 = &lbl_1_bss_4; + var_r31->unk08.x = 0.0f; + var_r31->unk08.y = 125.0f; + var_r31->unk08.z = 0.0f; + var_r31->unk20.x = -5.0f; + var_r31->unk20.y = 0.0f; + var_r31->unk20.z = 0.0f; + var_r31->unk38 = 1750.0f; +} + +void fn_1_836C(void) { + StructBss4* var_r31; + StructBss4 sp8; + + var_r31 = &lbl_1_bss_4; + sp8.unk08.x = 0.0f; + sp8.unk08.y = 170.0f; + sp8.unk08.z = 0.0f; + sp8.unk20.x = -5.0f; + sp8.unk20.y = 0.0f; + sp8.unk20.z = 0.0f; + sp8.unk38 = 1700.0f; + fn_1_514C(var_r31, &sp8, var_r31->unk40++, 60.0f, 30.0f); +} + +void fn_1_845C(void) { + StructBss4* var_r31 = &lbl_1_bss_4; + StructBss4 sp28; + float sp8[] = { + 530.0f, 530.0f, 540.0f, 530.0f, + 530.0f, 580.0f, 540.0f, 630.0f + }; + + if (lbl_1_bss_1580.unk344 == 1) { + if (lbl_1_bss_1580.unk348 == 0) { + sp28.unk08.x = 100.0f + Hu3DData[lbl_1_bss_1490[0].unk00->model[1]].pos.x; + } else { + sp28.unk08.x = 100.0f + Hu3DData[lbl_1_bss_1490[2].unk00->model[1]].pos.x; + } + } else { + sp28.unk08.x = Hu3DData[lbl_1_bss_1490[lbl_1_bss_1458[1]].unk00->model[1]].pos.x; + lbl_1_bss_B4 = lbl_1_bss_1580.unkC4[lbl_1_bss_1458[1]].unk00.unk10; + } + if (lbl_1_bss_1580.unk344 == 1) { + sp28.unk08.y = 570.0f; + sp28.unk08.z = -700.0f; + sp28.unk20.x = 15.0f; + sp28.unk20.y = 0.0f; + sp28.unk20.z = 0.0f; + sp28.unk38 = 1750.0f; + fn_1_4CC0(var_r31, &sp28, var_r31->unk40++, 120.0f); + } else { + sp28.unk08.y = sp8[lbl_1_bss_B4]; + sp28.unk08.z = -700.0f; + sp28.unk20.x = 15.0f; + sp28.unk20.y = 0.0f; + sp28.unk20.z = 0.0f; + sp28.unk38 = 1600.0f; + fn_1_4CC0(var_r31, &sp28, var_r31->unk40++, 120.0f); + } +} + +void fn_1_8758(void) { + StructBss4* var_r31; + StructBss4 sp8; + + var_r31 = &lbl_1_bss_4; + sp8.unk08.x = lbl_1_bss_1424; + sp8.unk08.y = 125.0f; + sp8.unk08.z = 0.0f; + sp8.unk20.x = -5.0f; + sp8.unk20.y = 0.0f; + sp8.unk20.z = 0.0f; + sp8.unk38 = 1250.0f; + sp8.unk38 = 1350.0f; + fn_1_514C(var_r31, &sp8, var_r31->unk40++, 10.0f, 5.0f); +} + +void fn_1_8858(void) { + StructBss4* var_r31; + StructBss4 sp8; + + var_r31 = &lbl_1_bss_4; + sp8.unk08.x = 0.0f; + sp8.unk08.y = 170.0f; + sp8.unk08.z = 0.0f; + sp8.unk20.x = -5.0f; + sp8.unk20.y = 0.0f; + sp8.unk20.z = 0.0f; + sp8.unk38 = 1700.0f; + fn_1_514C(var_r31, &sp8, var_r31->unk40++, 30.0f, 10.0f); +} + +void fn_1_8948(void) { + StructBss4* var_r31; + StructBss4 sp8; + + var_r31 = &lbl_1_bss_4; + sp8.unk08.x = 300.0f; + sp8.unk08.y = 100.0f; + sp8.unk08.z = 0.0f; + sp8.unk20.x = -5.0f; + sp8.unk20.y = 0.0f; + sp8.unk20.z = 0.0f; + sp8.unk38 = 1000.0f; + fn_1_4400(var_r31, &sp8, var_r31->unk40++, 60.0f, 10.0f); +} + +void fn_1_8A38(void) { + StructBss4* var_r31; + StructBss4 sp8; + + var_r31 = &lbl_1_bss_4; + sp8.unk08.x = -300.0f; + sp8.unk08.y = 100.0f; + sp8.unk08.z = 0.0f; + sp8.unk20.x = -5.0f; + sp8.unk20.y = 0.0f; + sp8.unk20.z = 0.0f; + sp8.unk38 = 1000.0f; + fn_1_4400(var_r31, &sp8, var_r31->unk40++, 180.0f, 10.0f); +} + +void fn_1_8B28(void) { + StructBss4* var_r31; + StructBss4 sp8; + + var_r31 = &lbl_1_bss_4; + sp8.unk08.x = 0.0f; + sp8.unk08.y = 170.0f; + sp8.unk08.z = 0.0f; + sp8.unk20.x = -5.0f; + sp8.unk20.y = 0.0f; + sp8.unk20.z = 0.0f; + sp8.unk38 = 1700.0f; + fn_1_4400(var_r31, &sp8, var_r31->unk40++, 120.0f, 10.0f); +} + +void fn_1_8C18(void) { + fn_1_39B4(&lbl_1_bss_4); + fn_1_2834(fn_1_8948); + fn_1_958(120); + fn_1_39B4(&lbl_1_bss_4); + fn_1_2834(fn_1_8A38); + fn_1_958(210); + fn_1_39B4(&lbl_1_bss_4); + fn_1_2834(fn_1_8B28); + fn_1_958(120); +} + +void fn_1_8C94(void) { + s32 var_r30 = 16; + s32 var_r29 = 40; + s32 var_r28 = 0; + GXColor sp10 = { 0x00, 0x00, 0x80, 0x80 }; + s32 var_r31; + + while (TRUE) { + fn_1_938(); + if (HuPadBtnDown[0] & PAD_TRIGGER_R) { + var_r28++; + var_r28 %= 2; + } + if (var_r28 == 0) { + continue; + } + printWin(var_r30, var_r29, 220, 200, &sp10); + if (lbl_1_bss_1558.unk04 == NULL) { + print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> FALSE"); + } else { + print8(var_r30, var_r29, 1.0f, "PROC_MAIN -> TRUE"); + } + if (lbl_1_bss_1530.unk04 == NULL) { + print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> FALSE"); + } else { + print8(var_r30, var_r29 + 10, 1.0f, "PROC_MAP -> TRUE"); + } + if (lbl_1_bss_1468.unk04 == NULL) { + print8(var_r30, var_r29 + 20, 1.0f, "PROC_SUB -> FALSE"); + } else { + print8(var_r30, var_r29 + 20, 1.0f, "PROC_SUB -> TRUE"); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_1490[var_r31].unk04 == NULL) { + print8(var_r30, var_r29 + 30 + var_r31 * 10, 1.0f, "PROC_PLAYER%d -> FALSE", var_r31); + } else { + print8(var_r30, var_r29 + 30 + var_r31 * 10, 1.0f, "PROC_PLAYER%d -> TRUE", var_r31); + } + } + print8(var_r30, var_r29 + 80, 1.0f, "M:%d P:%d W:%d", lbl_1_bss_1580.unk00, lbl_1_bss_1580.unk0C, lbl_1_bss_1580.unk14); + print8(var_r30, var_r29 + 100, 1.0f, "NO) IDX:GRP:COM:DIF:PAD:CHR"); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + print8(var_r30, var_r29 + 110 + var_r31 * 10, 1.0f, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", var_r31, + lbl_1_bss_1580.unkC4[var_r31].unk00.unk00, lbl_1_bss_1580.unkC4[var_r31].unk00.unk04, lbl_1_bss_1580.unkC4[var_r31].unk00.unk08, + lbl_1_bss_1580.unkC4[var_r31].unk00.unk0C, lbl_1_bss_1580.unkC4[var_r31].unk00.unk14, lbl_1_bss_1580.unkC4[var_r31].unk00.unk10); + } + print8(var_r30, var_r29 + 150, 1.0f, "NO) RNK:STA:COI:MGS:COS:HAS"); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + print8(var_r30, var_r29 + 160 + var_r31 * 10, 1.0f, "%2d) %3d:%3d:%3d:%3d:%3d:%3d", var_r31, + lbl_1_bss_1580.unkC4[var_r31].unk00.unk18, lbl_1_bss_1580.unkC4[var_r31].unk00.unk20, lbl_1_bss_1580.unkC4[var_r31].unk00.unk1C, + lbl_1_bss_1580.unkC4[var_r31].unk00.unk24, lbl_1_bss_1580.unkC4[var_r31].unk00.unk28, lbl_1_bss_1580.unkC4[var_r31].unk00.unk2C); + } + } +} + +void fn_1_9140(void) { + WipeColorSet(0xFF, 0xFF, 0xFF); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + while (TRUE) { + if (WipeStatGet() == 0) { + break; + } + fn_1_938(); + } + fn_1_9C4(); + CharModelKill(-1); + MGSeqKillAll(); + HuAudSStreamAllStop(); + msmSeStopAll(0, 1000); + omOvlGotoEx(OVL_MSTORY3, 1, 1, 0); +} + +void fn_1_91C8(void) { + lbl_1_bss_58 = HuAudSeqPlay(0x31); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + while (TRUE) { + if (WipeStatGet() == 0) { + break; + } + fn_1_938(); + } +} + +void fn_1_9220(void) { + Vec sp14 = { -320.0f, 0.0f, 910.0f }; + + fn_1_958(60); + lbl_1_bss_1580.unk10 = fn_1_1624(1, 0, 21, 2, lbl_1_bss_1580.unk14); + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1580.unk00][0]); + fn_1_13C78(lbl_1_bss_1580.unk10, 0, 3); + fn_1_1AB0(lbl_1_bss_1580.unk10); + fn_1_39B4(&lbl_1_bss_4); + fn_1_2834(fn_1_836C); + fn_1_1E28(lbl_1_bss_1530.unk00, 2, 2, 0, 0); + fn_1_1E28(lbl_1_bss_1468.unk00, 1, 2, 15, 1); + fn_1_2DD4(lbl_1_bss_1468.unk00, 1, sp14, 30.0f, 60.0f, 10.0f); + fn_1_1E28(lbl_1_bss_1468.unk00, 1, 1, 15, 1); + fn_1_2280(lbl_1_bss_1530.unk00, 2, 2, 0); +} + +void fn_1_93D0(omObjData* arg0) { + StructBss1530* temp_r31; + + temp_r31 = arg0->data; + lbl_1_bss_1580.unk10 = fn_1_1624(0, 0, 21, 2, lbl_1_bss_1580.unk14); + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1580.unk00][2]); + fn_1_13A3C(lbl_1_bss_1580.unk10, 1, -1, 3); + fn_1_1AB0(lbl_1_bss_1580.unk10); + temp_r31->unk04 = 0; +} + +void fn_1_9488(void) { + s32 var_r31; + + lbl_1_bss_1530.unk04 = (void*) fn_1_93D0; + do { + fn_1_938(); + } while (lbl_1_bss_1580.unk18 != 99); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_1490[var_r31].unk04 = (void*) fn_1_1036C; + lbl_1_bss_1490[var_r31].unk18 = lbl_1_bss_1490[var_r31].unk1C = 0; + } + fn_1_12A98(0); + for (var_r31 = 0; var_r31 < lbl_1_bss_1458[0]; var_r31++) { + if (lbl_1_bss_1580.unkC4[lbl_1_bss_1448[var_r31]].unk00.unk20 != 0) { + lbl_1_bss_1490[lbl_1_bss_1448[var_r31]].unk1C = 1; + } + } + HuAudFXPlay(0xB9); + do { + fn_1_938(); + } while (lbl_1_bss_1530.unk04 != NULL); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_1490[var_r31].unk18 = 1; + } + do { + fn_1_938(); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_1490[var_r31].unk18 != 2) { + break; + } + } + } while (var_r31 < 4); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_1490[var_r31].unk18 = 3; + } + do { + fn_1_938(); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_1490[var_r31].unk04 != NULL) { + break; + } + } + } while (var_r31 < 4); +} + +void fn_1_96B0(omObjData* arg0) { + StructBss1530* temp_r31; + + temp_r31 = arg0->data; + lbl_1_bss_1580.unk10 = fn_1_1624(0, 0, 21, 2, lbl_1_bss_1580.unk14); + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1580.unk00][2]); + fn_1_13A3C(lbl_1_bss_1580.unk10, 2, -1, 3); + fn_1_1AB0(lbl_1_bss_1580.unk10); + temp_r31->unk04 = 0; +} + +void fn_1_9768(void) { + s32 var_r31; + + lbl_1_bss_1530.unk04 = (void*) fn_1_96B0; + do { + fn_1_938(); + } while (lbl_1_bss_1580.unk18 != 99); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_1490[var_r31].unk04 = (void*) fn_1_10D74; + lbl_1_bss_1490[var_r31].unk18 = lbl_1_bss_1490[var_r31].unk1C = 0; + } + fn_1_12A98(1); + for (var_r31 = 0; var_r31 < lbl_1_bss_1458[0]; var_r31++) { + if (lbl_1_bss_1580.unkC4[lbl_1_bss_1448[var_r31]].unk00.unk1C != 0) { + lbl_1_bss_1490[lbl_1_bss_1448[var_r31]].unk1C = 1; + } + } + HuAudFXPlay(0xB8); + do { + fn_1_938(); + } while (lbl_1_bss_1530.unk04 != NULL); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_1490[var_r31].unk18 = 1; + } + do { + fn_1_938(); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_1490[var_r31].unk18 != 2) { + break; + } + } + } while (var_r31 < 4); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_1490[var_r31].unk18 = 3; + } + do { + fn_1_938(); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_1490[var_r31].unk04 != NULL) { + break; + } + } + } while (var_r31 < 4); +} + +void fn_1_9990(omObjData* arg0) { + StructBss1530* temp_r31; + + temp_r31 = arg0->data; + HuAudFXPlay(0x9A); + fn_1_13A3C(lbl_1_bss_1580.unk10, lbl_1_bss_1420, -1, 4); + fn_1_1AB0(lbl_1_bss_1580.unk10); + temp_r31->unk04 = 0; +} + +void fn_1_9A08(omObjData* arg0) { + StructBss1530* temp_r31; + + temp_r31 = arg0->data; + fn_1_958(60); + HuAudSeqPause(lbl_1_bss_58, 0, 1000); + temp_r31->unk04 = 0; +} + +void fn_1_9A64(s32 arg0) { + s32 var_r28; + s32 var_r27; + s32 var_r30; + s32 var_r31; + + var_r28 = 9999; + var_r27 = -1; + lbl_1_bss_1420 = arg0; + lbl_1_bss_1580.unk10 = fn_1_1624(0, 0, 21, 2, lbl_1_bss_1580.unk14); + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1580.unk00][2]); + fn_1_13C78(lbl_1_bss_1580.unk10, arg0 * 3 + 3, 3); + fn_1_12C08(arg0); + lbl_1_bss_1424 = 0.0f; + switch (lbl_1_bss_1458[0]) { + case 1: + lbl_1_bss_1424 = lbl_1_data_130[lbl_1_bss_1448[0]].x; + break; + case 2: + lbl_1_bss_1424 = (lbl_1_data_130[lbl_1_bss_1448[0]].x + lbl_1_data_130[lbl_1_bss_1448[1]].x) / 2; + fn_1_13C78(lbl_1_bss_1580.unk10, arg0 * 3 + 4, 3); + break; + case 3: + for (var_r31 = 0; var_r31 < 3; var_r31++) { + if (var_r28 >= lbl_1_bss_1448[var_r31]) { + var_r28 = lbl_1_bss_1448[var_r31]; + } + if (var_r27 <= lbl_1_bss_1448[var_r31]) { + var_r27 = lbl_1_bss_1448[var_r31]; + } + } + lbl_1_bss_1424 = (lbl_1_data_130[var_r27].x + lbl_1_data_130[var_r28].x) / 2; + fn_1_13C78(lbl_1_bss_1580.unk10, arg0 * 3 + 5, 3); + break; + case 4: + break; + } + fn_1_1AB0(lbl_1_bss_1580.unk10); + HuAudSeqPause(lbl_1_bss_58, 1, 1000); + lbl_1_bss_68[0] = HuAudFXPlay(0x9E); + fn_1_7004(0x40, 30, 0); + fn_1_958(60); + if (lbl_1_bss_1458[0] < 4) { + fn_1_39B4(&lbl_1_bss_4); + fn_1_2834(fn_1_8758); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + for (var_r30 = 0; var_r30 < 4; var_r30++) { + if (var_r31 == lbl_1_bss_1448[var_r30]) { + lbl_1_bss_1490[var_r31].unk04 = (void*) fn_1_11834; + lbl_1_bss_1490[var_r31].unk18 = 0; + break; + } + } + if (var_r30 == 4) { + lbl_1_bss_1490[var_r31].unk04 = (void*) fn_1_11794; + lbl_1_bss_1490[var_r31].unk18 = 0; + } + } + } else { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_1490[var_r31].unk04 = (void*) fn_1_11794; + lbl_1_bss_1490[var_r31].unk18 = 0; + } + } + if (lbl_1_bss_1458[0] != 4) { + lbl_1_bss_1580.unk10 = fn_1_1624(1, 0, 21, 2, lbl_1_bss_1580.unk14); + } else { + lbl_1_bss_1580.unk10 = fn_1_1624(0, 0, 21, 2, lbl_1_bss_1580.unk14); + } + if (lbl_1_bss_1458[0] <= 3) { + HuAudFXPlay(0x9F); + } + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1580.unk00][2]); + switch (lbl_1_bss_1458[0]) { + case 1: + fn_1_13D38(lbl_1_bss_1580.unk10, lbl_1_bss_1448[0], 0); + lbl_1_bss_1420 = 12; + lbl_1_bss_1530.unk04 = (void*) fn_1_9990; + lbl_1_bss_1468.unk04 = (void*) fn_1_9A08; + break; + case 2: + fn_1_13D38(lbl_1_bss_1580.unk10, lbl_1_bss_1448[0], 0); + fn_1_13D38(lbl_1_bss_1580.unk10, lbl_1_bss_1448[1], 1); + lbl_1_bss_1420 = 13; + lbl_1_bss_1530.unk04 = (void*) fn_1_9990; + lbl_1_bss_1468.unk04 = (void*) fn_1_9A08; + break; + case 3: + fn_1_13D38(lbl_1_bss_1580.unk10, lbl_1_bss_1448[0], 0); + fn_1_13D38(lbl_1_bss_1580.unk10, lbl_1_bss_1448[1], 1); + fn_1_13D38(lbl_1_bss_1580.unk10, lbl_1_bss_1448[2], 2); + lbl_1_bss_1420 = 14; + lbl_1_bss_1530.unk04 = (void*) fn_1_9990; + lbl_1_bss_1468.unk04 = (void*) fn_1_9A08; + break; + case 4: + HuAudFXFadeOut(lbl_1_bss_68[0], 500); + lbl_1_bss_1468.unk04 = (void*) fn_1_9A08; + if (lbl_1_bss_1580.unkC4[lbl_1_bss_1448[0]].unk00.unk2C == 0 && arg0 == 2) { + fn_1_13C78(lbl_1_bss_1580.unk10, 26, 3); + } else { + fn_1_13C78(lbl_1_bss_1580.unk10, 15, 3); + } + fn_1_1AB0(lbl_1_bss_1580.unk10); + break; + } + for (var_r31 = 0; var_r31 < lbl_1_bss_1458[0]; var_r31++) { + lbl_1_bss_1490[lbl_1_bss_1448[var_r31]].unk18 = 1; + } + do { + fn_1_938(); + for (var_r31 = 0; var_r31 < lbl_1_bss_1458[0]; var_r31++) { + if (lbl_1_bss_1490[lbl_1_bss_1448[var_r31]].unk04 != NULL) { + break; + } + } + } while (var_r31 < lbl_1_bss_1458[0]); + lbl_1_bss_1580.unk18 = 1; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + Hu3DModelAttrReset(lbl_1_bss_1490[var_r31].unk00->model[1], HU3D_MOTATTR_PAUSE); + } + fn_1_958(10); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + fn_1_1E28(lbl_1_bss_1490[var_r31].unk00, 1, 1, 15, 1); + } + do { + fn_1_938(); + } while (lbl_1_bss_1530.unk04 != NULL); + fn_1_12DAC(); + HuAudSeqPause(lbl_1_bss_58, 0, 1000); + fn_1_39B4(&lbl_1_bss_4); + fn_1_2834(fn_1_8858); + fn_1_7004(0xFF, 30, 1); + fn_1_958(60); +} + +s32 fn_1_A314(void) { + s32 var_r31 = 0; + + lbl_1_bss_1580.unk10 = fn_1_1624(0, 0, 21, 2, lbl_1_bss_1580.unk14); + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1580.unk00][2]); + fn_1_13C78(lbl_1_bss_1580.unk10, 0x10, 3); + fn_1_1AB0(lbl_1_bss_1580.unk10); + fn_1_12DAC(); + fn_1_130A8(); + if (lbl_1_bss_1580.unk344 == 1) { + var_r31 = fn_1_B670(); + } + if (var_r31 != -1 && lbl_1_bss_1458[0] <= 1) { + HuAudSeqFadeOut(lbl_1_bss_58, 1000); + } else { + HuAudSeqPause(lbl_1_bss_58, 1, 1000); + } + lbl_1_bss_68[0] = HuAudFXPlay(0x9E); + lbl_1_bss_B0 = 1.0f; + lbl_1_bss_1530.unk04 = (void*) fn_1_D7D8; + fn_1_7004(0x40, 30, 0); + fn_1_8C18(); + lbl_1_bss_AC = 125.0f; + return var_r31; +} + +void fn_1_A4F0(void) { + s32 var_r31; + + HuAudSeqPause(lbl_1_bss_58, 0, 1000); + HuAudFXFadeOut(lbl_1_bss_68[0], 1000); + lbl_1_bss_B0 = 0.0f; + fn_1_7004(0xFF, 30, 1); + fn_1_958(60); + lbl_1_bss_1580.unk10 = fn_1_1624(0, 0, 21, 2, lbl_1_bss_1580.unk14); + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1580.unk00][1]); + fn_1_13C78(lbl_1_bss_1580.unk10, 0x11, 3); + switch (lbl_1_bss_1458[0]) { + case 1: + break; + case 2: + fn_1_13D38(lbl_1_bss_1580.unk10, lbl_1_bss_1448[0], 0); + fn_1_13D38(lbl_1_bss_1580.unk10, lbl_1_bss_1448[1], 1); + fn_1_13C78(lbl_1_bss_1580.unk10, 13, 3); + break; + case 3: + fn_1_13D38(lbl_1_bss_1580.unk10, lbl_1_bss_1448[0], 0); + fn_1_13D38(lbl_1_bss_1580.unk10, lbl_1_bss_1448[1], 1); + fn_1_13D38(lbl_1_bss_1580.unk10, lbl_1_bss_1448[2], 2); + fn_1_13C78(lbl_1_bss_1580.unk10, 14, 3); + break; + case 4: + fn_1_13C78(lbl_1_bss_1580.unk10, 0x12, 3); + break; + } + fn_1_13C78(lbl_1_bss_1580.unk10, 0x13, 3); + fn_1_1AB0(lbl_1_bss_1580.unk10); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_1438[var_r31] = lbl_1_bss_1428[var_r31] = -1; + } + for (var_r31 = 0; var_r31 < lbl_1_bss_1458[0]; var_r31++) { + lbl_1_bss_1490[lbl_1_bss_1448[var_r31]].unk04 = (void*) fn_1_123D8; + lbl_1_bss_1490[lbl_1_bss_1448[var_r31]].unk18 = 0; + } + do { + fn_1_938(); + for (var_r31 = 0; var_r31 < lbl_1_bss_1458[0]; var_r31++) { + if (lbl_1_bss_1490[lbl_1_bss_1448[var_r31]].unk18 != 1) { + break; + } + } + } while (var_r31 < lbl_1_bss_1458[0]); + for (var_r31 = 0; var_r31 < lbl_1_bss_1458[0]; var_r31++) { + lbl_1_bss_1490[lbl_1_bss_1448[var_r31]].unk18 = 2; + } + fn_1_958(0x96); + fn_1_1317C(); + lbl_1_bss_1580.unk10 = fn_1_1624(0, 0, 21, 2, lbl_1_bss_1580.unk14); + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1580.unk00][2]); + fn_1_13D38(lbl_1_bss_1580.unk10, lbl_1_bss_1458[1], 0); + fn_1_13C78(lbl_1_bss_1580.unk10, 0x14, 3); + fn_1_1AB0(lbl_1_bss_1580.unk10); + for (var_r31 = 0; var_r31 < lbl_1_bss_1458[0]; var_r31++) { + if (lbl_1_bss_1458[1] == lbl_1_bss_1448[var_r31]) { + fn_1_1E28(lbl_1_bss_1490[lbl_1_bss_1448[var_r31]].unk00, 1, 14, 15, 0); + } else { + fn_1_1E28(lbl_1_bss_1490[lbl_1_bss_1448[var_r31]].unk00, 1, 15, 15, 0); + } + } + fn_1_958(0x23); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + fn_1_1E28(lbl_1_bss_1490[var_r31].unk00, 1, 1, 15, 1); + } + fn_1_958(0x55); + lbl_1_bss_1580.unk10 = fn_1_1624(0, 0, 21, 2, lbl_1_bss_1580.unk14); + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1580.unk00][3]); + fn_1_13C78(lbl_1_bss_1580.unk10, 0x15, 3); + fn_1_1AB0(lbl_1_bss_1580.unk10); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + fn_1_1E28(lbl_1_bss_1490[var_r31].unk00, 1, 1, 15, 1); + } + HuAudSeqFadeOut(lbl_1_bss_58, 1000); + lbl_1_bss_68[0] = HuAudFXPlay(0x9E); + lbl_1_bss_B0 = 1.0f; + fn_1_7004(0x40, 30, 0); + fn_1_8C18(); +} + +void fn_1_ABAC(void) { + s32 var_r31; + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_1490[var_r31].unk04 = (void*) fn_1_12420; + } + do { + fn_1_938(); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_1490[var_r31].unk04 != NULL) { + break; + } + } + } while (var_r31 < 4); + lbl_1_bss_B0 = 0.0f; + fn_1_958(15); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_1580.unkC4[var_r31].unk00.unk18 == 1) { + break; + } + } + if (lbl_1_bss_1580.unk344 == 1) { + if (lbl_1_bss_1580.unk348 == 0) { + fn_1_7398(0xFF, 5, 0, 1); + } else { + fn_1_7398(0xFF, 5, 2, 3); + } + } else { + fn_1_79D8(0xFF, 5.0f, var_r31); + } + HuAudFXPlay(0x9F); + HuAudSeqPlay(0x32); + fn_1_958(30); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (lbl_1_bss_1580.unk344 == 1) { + if (lbl_1_bss_1580.unk348 == 0) { + CharModelVoiceEnableSet(lbl_1_bss_1580.unkC4[0].unk00.unk10, lbl_1_bss_1490[0].unk00->motion[3], 0); + CharModelVoiceEnableSet(lbl_1_bss_1580.unkC4[1].unk00.unk10, lbl_1_bss_1490[1].unk00->motion[3], 0); + CharModelVoiceEnableSet(lbl_1_bss_1580.unkC4[2].unk00.unk10, lbl_1_bss_1490[2].unk00->motion[4], 0); + CharModelVoiceEnableSet(lbl_1_bss_1580.unkC4[3].unk00.unk10, lbl_1_bss_1490[3].unk00->motion[4], 0); + fn_1_1E28(lbl_1_bss_1490[0].unk00, 1, 3, 15, 0); + fn_1_1E28(lbl_1_bss_1490[1].unk00, 1, 3, 15, 0); + fn_1_1E28(lbl_1_bss_1490[2].unk00, 1, 4, 15, 0); + fn_1_1E28(lbl_1_bss_1490[3].unk00, 1, 4, 15, 0); + lbl_1_bss_1580.unk0C = 0; + } else { + CharModelVoiceEnableSet(lbl_1_bss_1580.unkC4[0].unk00.unk10, lbl_1_bss_1490[0].unk00->motion[4], 0); + CharModelVoiceEnableSet(lbl_1_bss_1580.unkC4[1].unk00.unk10, lbl_1_bss_1490[1].unk00->motion[4], 0); + CharModelVoiceEnableSet(lbl_1_bss_1580.unkC4[2].unk00.unk10, lbl_1_bss_1490[2].unk00->motion[3], 0); + CharModelVoiceEnableSet(lbl_1_bss_1580.unkC4[3].unk00.unk10, lbl_1_bss_1490[3].unk00->motion[3], 0); + fn_1_1E28(lbl_1_bss_1490[0].unk00, 1, 4, 15, 0); + fn_1_1E28(lbl_1_bss_1490[1].unk00, 1, 4, 15, 0); + fn_1_1E28(lbl_1_bss_1490[2].unk00, 1, 3, 15, 0); + fn_1_1E28(lbl_1_bss_1490[3].unk00, 1, 3, 15, 0); + lbl_1_bss_1580.unk0C = 2; + } + } else if (lbl_1_bss_1580.unkC4[var_r31].unk00.unk18 == 1) { + CharModelVoiceEnableSet(lbl_1_bss_1580.unkC4[var_r31].unk00.unk10, lbl_1_bss_1490[var_r31].unk00->motion[3], 0); + fn_1_1E28(lbl_1_bss_1490[var_r31].unk00, 1, 3, 15, 0); + lbl_1_bss_1580.unk0C = var_r31; + } else { + CharModelVoiceEnableSet(lbl_1_bss_1580.unkC4[var_r31].unk00.unk10, lbl_1_bss_1490[var_r31].unk00->motion[4], 0); + fn_1_1E28(lbl_1_bss_1490[var_r31].unk00, 1, 4, 15, 0); + } + GWPlayer[lbl_1_bss_1580.unkC4[var_r31].unk00.unk00].rank = lbl_1_bss_1580.unkC4[var_r31].unk00.unk18 - 1; + } + lbl_1_bss_1580.unk10 = fn_1_1624(0, 0, 21, 2, lbl_1_bss_1580.unk14); + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1580.unk00][2]); + if (lbl_1_bss_1580.unk344 == 1) { + if (lbl_1_bss_1580.unk348 == 0) { + fn_1_13D38(lbl_1_bss_1580.unk10, 0, 0); + fn_1_13D38(lbl_1_bss_1580.unk10, 1, 1); + _SetFlag(FLAG_ID_MAKE(1, 29)); + } else { + fn_1_13D38(lbl_1_bss_1580.unk10, 2, 0); + fn_1_13D38(lbl_1_bss_1580.unk10, 3, 1); + } + fn_1_13C78(lbl_1_bss_1580.unk10, 0x19, 5); + } else { + fn_1_13D38(lbl_1_bss_1580.unk10, lbl_1_bss_1458[1], 0); + fn_1_13C78(lbl_1_bss_1580.unk10, 0x16, 5); + } + fn_1_1AB0(lbl_1_bss_1580.unk10); +} + +s32 fn_1_B670(void) { + s32 var_r31; + s32 temp_r30; + s32 temp_r29; + s32 temp_r28; + s32 temp_r27; + + var_r31 = 1; + temp_r30 = lbl_1_bss_1580.unkC4[0].unk00.unk20 + lbl_1_bss_1580.unkC4[1].unk00.unk20; + temp_r29 = lbl_1_bss_1580.unkC4[2].unk00.unk20 + lbl_1_bss_1580.unkC4[3].unk00.unk20; + temp_r28 = lbl_1_bss_1580.unkC4[0].unk00.unk1C + lbl_1_bss_1580.unkC4[1].unk00.unk1C; + temp_r27 = lbl_1_bss_1580.unkC4[2].unk00.unk1C + lbl_1_bss_1580.unkC4[3].unk00.unk1C; + if (temp_r30 > temp_r29) { + lbl_1_bss_1580.unk348 = 0; + } else if (temp_r30 < temp_r29) { + lbl_1_bss_1580.unk348 = 1; + } else if (temp_r28 > temp_r27) { + lbl_1_bss_1580.unk348 = 0; + } else if (temp_r28 < temp_r27) { + lbl_1_bss_1580.unk348 = 1; + } else { + var_r31 = -1; + } + return var_r31; +} + +void fn_1_B788(void) { + s32 var_r31; + + HuAudSeqPause(lbl_1_bss_58, 0, 1000); + HuAudFXFadeOut(lbl_1_bss_68[0], 1000); + lbl_1_bss_B0 = 0.0f; + fn_1_7004(0xFF, 30, 1); + fn_1_958(60); + lbl_1_bss_1580.unk10 = fn_1_1624(0, 0, 21, 2, lbl_1_bss_1580.unk14); + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1580.unk00][1]); + fn_1_13C78(lbl_1_bss_1580.unk10, 0x17, 3); + fn_1_13C78(lbl_1_bss_1580.unk10, 0x13, 3); + fn_1_1AB0(lbl_1_bss_1580.unk10); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + lbl_1_bss_1438[var_r31] = lbl_1_bss_1428[var_r31] = -1; + } + lbl_1_bss_1458[0] = 2; + lbl_1_bss_1448[0] = 0; + lbl_1_bss_1448[1] = 2; + for (var_r31 = 0; var_r31 < lbl_1_bss_1458[0]; var_r31++) { + lbl_1_bss_1490[lbl_1_bss_1448[var_r31]].unk04 = (void*) fn_1_123D8; + lbl_1_bss_1490[lbl_1_bss_1448[var_r31]].unk18 = 0; + } + do { + fn_1_938(); + for (var_r31 = 0; var_r31 < lbl_1_bss_1458[0]; var_r31++) { + if (lbl_1_bss_1490[lbl_1_bss_1448[var_r31]].unk18 != 1) { + break; + } + } + } while (var_r31 < lbl_1_bss_1458[0]); + for (var_r31 = 0; var_r31 < lbl_1_bss_1458[0]; var_r31++) { + lbl_1_bss_1490[lbl_1_bss_1448[var_r31]].unk18 = 2; + } + fn_1_958(150); + if (lbl_1_bss_1428[0] > lbl_1_bss_1428[2]) { + lbl_1_bss_1580.unk348 = 0; + } else { + lbl_1_bss_1580.unk348 = 1; + } + lbl_1_bss_1580.unk10 = fn_1_1624(0, 0, 21, 2, lbl_1_bss_1580.unk14); + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1580.unk00][2]); + if (lbl_1_bss_1580.unk348 == 0) { + fn_1_13D38(lbl_1_bss_1580.unk10, 0, 0); + fn_1_13D38(lbl_1_bss_1580.unk10, 1, 1); + } else { + fn_1_13D38(lbl_1_bss_1580.unk10, 2, 0); + fn_1_13D38(lbl_1_bss_1580.unk10, 3, 1); + } + fn_1_13C78(lbl_1_bss_1580.unk10, 0x18, 3); + fn_1_1AB0(lbl_1_bss_1580.unk10); + for (var_r31 = 0; var_r31 < lbl_1_bss_1458[0]; var_r31++) { + if (lbl_1_bss_1580.unk348 == 0) { + fn_1_1E28(lbl_1_bss_1490[0].unk00, 1, 14, 15, 0); + fn_1_1E28(lbl_1_bss_1490[1].unk00, 1, 14, 15, 0); + fn_1_1E28(lbl_1_bss_1490[2].unk00, 1, 15, 15, 0); + fn_1_1E28(lbl_1_bss_1490[3].unk00, 1, 15, 15, 0); + } else { + fn_1_1E28(lbl_1_bss_1490[0].unk00, 1, 15, 15, 0); + fn_1_1E28(lbl_1_bss_1490[1].unk00, 1, 15, 15, 0); + fn_1_1E28(lbl_1_bss_1490[2].unk00, 1, 14, 15, 0); + fn_1_1E28(lbl_1_bss_1490[3].unk00, 1, 14, 15, 0); + } + } + fn_1_958(35); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + fn_1_1E28(lbl_1_bss_1490[var_r31].unk00, 1, 1, 15, 1); + } + fn_1_958(85); + lbl_1_bss_1580.unk10 = fn_1_1624(0, 0, 21, 2, lbl_1_bss_1580.unk14); + HuAudFXPlay(lbl_1_data_0[lbl_1_bss_1580.unk00][3]); + fn_1_13C78(lbl_1_bss_1580.unk10, 0x15, 3); + fn_1_1AB0(lbl_1_bss_1580.unk10); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + fn_1_1E28(lbl_1_bss_1490[var_r31].unk00, 1, 1, 15, 1); + } + HuAudSeqFadeOut(lbl_1_bss_58, 1000); + lbl_1_bss_68[0] = HuAudFXPlay(0x9E); + lbl_1_bss_B0 = 1.0f; + fn_1_7004(0x40, 30, 0); + fn_1_8C18(); +} + +void fn_1_BE5C(void) { + float var_f31; + + var_f31 = fn_1_878(0.0f, 0.1f, lbl_1_bss_B8, 180.0f); + Hu3DData[lbl_1_bss_1530.unk00->model[20]].pos.y += var_f31; + lbl_1_bss_B8++; + if (lbl_1_bss_B8 >= 180) { + lbl_1_bss_B8 -= 180; + } +} + +void fn_1_BF60(void) { + float temp_f1; + + temp_f1 = fn_1_878(1.0f, 1.1f, lbl_1_bss_B8, 60.0f); + Hu3DModelScaleSet(lbl_1_bss_1530.unk00->model[23], temp_f1, temp_f1, 1.0f); + lbl_1_bss_B8++; + if (lbl_1_bss_B8 >= 60) { + lbl_1_bss_B8 -= 60; + } +} + +s32 lbl_1_data_364 = -1; +s32 lbl_1_data_368 = -1; // unused + +void fn_1_C060(float arg8) { + float sp20[] = { + 50.0f, 50.0f, 60.0f, 50.0f, + 50.0f, 80.0f, 60.0f, 120.0f + }; + Vec sp14; + Vec sp8; + float var_f31; + float var_f30; + float temp_f29; + float var_f28; + float temp_f27; + float var_f26; + s32 var_r31; + + lbl_1_bss_BC = arg8; + fn_1_938(); + var_f31 = arg8; + var_f30 = 0.0f; + temp_f29 = 3600.0f; + Hu3DModelPosSet(lbl_1_bss_1530.unk00->model[20], var_f31, 1000.0f, 460.0f); + Hu3DModelScaleSet(lbl_1_bss_1530.unk00->model[20], 0.5f, 0.5f, 0.5f); + Hu3DModelAttrReset(lbl_1_bss_1530.unk00->model[20], HU3D_ATTR_DISPOFF); + fn_1_1E28(lbl_1_bss_1530.unk00, 20, 20, 0, 2); + Hu3DModelPosSet(lbl_1_bss_1530.unk00->model[21], var_f31, 1000.0f, 460.0f); + Hu3DModelScaleSet(lbl_1_bss_1530.unk00->model[21], 0.5f, 0.5f, 0.5f); + fn_1_1E28(lbl_1_bss_1530.unk00, 21, 21, 0, 2); + Hu3DModelPosSet(lbl_1_bss_1530.unk00->model[22], var_f31, 1000.0f, 460.0f); + Hu3DModelScaleSet(lbl_1_bss_1530.unk00->model[22], 0.5f, 0.5f, 0.5f); + Hu3DMotionShapeSpeedSet(lbl_1_bss_1530.unk00->model[22], 2.0f); + Hu3DMotionSpeedSet(lbl_1_bss_1530.unk00->model[22], 2.0f); + Hu3DMotionShiftSpeedSet(lbl_1_bss_1530.unk00->model[22], 2.0f); + fn_1_1E28(lbl_1_bss_1530.unk00, 22, 22, 0, 2); + Hu3DModelScaleSet(lbl_1_bss_1530.unk00->model[23], 0.0f, 0.0f, 1.0f); + Hu3DModelAttrSet(lbl_1_bss_1530.unk00->model[23], HU3D_ATTR_DISPOFF); + fn_1_958(60); + fn_1_39B4(&lbl_1_bss_4); + fn_1_2834(fn_1_845C); + for (var_r31 = 0; var_r31 <= 120; var_r31++) { + fn_1_938(); + if (lbl_1_bss_1580.unk344 == 0) { + var_f30 = fn_1_6F4(1000.0f, 250.0f + sp20[lbl_1_bss_1580.unkC4[lbl_1_bss_1458[1]].unk00.unk10], var_r31, 120.0f); + } else { + var_f30 = fn_1_6F4(1000.0f, 350.0f, var_r31, 120.0f); + } + temp_f29 = fn_1_6F4(1800.0f, 0.0f, var_r31, 120.0f); + var_f28 = fn_1_6F4(1.0f, 0.0f, var_r31, 120.0f); + Hu3DModelPosSet(lbl_1_bss_1530.unk00->model[20], var_f31, var_f30, 460.0f); + Hu3DModelRotSet(lbl_1_bss_1530.unk00->model[20], 0.0f, temp_f29, 0.0f); + } + lbl_1_bss_1530.unk04 = (void*) fn_1_BE5C; + fn_1_958(30); + fn_1_1E28(lbl_1_bss_1530.unk00, 20, 20, 0, 0); + fn_1_958(30); + HuAudFXPlay(0x33B); + fn_1_958(30); + Hu3DModelPosSet(lbl_1_bss_1530.unk00->model[22], var_f31, Hu3DData[lbl_1_bss_1530.unk00->model[20]].pos.y - 10.0f, 460.0f); + Hu3DModelAttrReset(lbl_1_bss_1530.unk00->model[22], HU3D_ATTR_DISPOFF); + fn_1_1E28(lbl_1_bss_1530.unk00, 22, 22, 0, 0); + sp14.x = var_f31; + sp14.y = Hu3DData[lbl_1_bss_1530.unk00->model[20]].pos.y; + sp14.z = 460.0f; + sp8.x = 288.0f; + sp8.y = 100.0f; + sp8.z = 500.0f; + fn_1_1DED8(DATA_MAKE_NUM(DATADIR_MSTORY3, 0), &sp14, &sp8, 100); + fn_1_1E0F4(); + fn_1_958(15); + if (lbl_1_bss_1580.unk344 == 1) { + if (lbl_1_bss_1580.unk348 == 0) { + HuAudCharVoicePlay(lbl_1_bss_1580.unkC4[0].unk00.unk10, 0x12B); + HuAudCharVoicePlay(lbl_1_bss_1580.unkC4[1].unk00.unk10, 0x12B); + } else { + HuAudCharVoicePlay(lbl_1_bss_1580.unkC4[2].unk00.unk10, 0x12B); + HuAudCharVoicePlay(lbl_1_bss_1580.unkC4[3].unk00.unk10, 0x12B); + } + } else { + HuAudCharVoicePlay(lbl_1_bss_1580.unkC4[lbl_1_bss_1458[1]].unk00.unk10, 0x12B); + } + HuAudFXPlay(0xBA); + HuAudFXPlay(0x9A); + Hu3DModelPosSet(lbl_1_bss_1530.unk00->model[21], var_f31, Hu3DData[lbl_1_bss_1530.unk00->model[20]].pos.y, 510.0f); + Hu3DModelAttrReset(lbl_1_bss_1530.unk00->model[21], HU3D_ATTR_DISPOFF); + fn_1_1E28(lbl_1_bss_1530.unk00, 21, 21, 0, 0); + fn_1_958(5); + lbl_1_data_364 = fn_1_814C(1); + Hu3DParManPosSet(lbl_1_data_364, var_f31, Hu3DData[lbl_1_bss_1530.unk00->model[21]].pos.y, 510.0f); + Hu3DModelAttrSet(lbl_1_bss_1530.unk00->model[20], HU3D_ATTR_DISPOFF); + lbl_1_bss_C0 = 1.0f; + for (var_r31 = 0; var_r31 <= 30; var_r31++) { + fn_1_938(); + temp_f27 = fn_1_5D4(0.0f, 1.0f, var_r31, 30.0f); + var_f30 = fn_1_5D4(0.0f, 75.0f, var_r31, 30.0f); + var_f26 = fn_1_5D4(550.0f, 640.0f, var_r31, 30.0f); + Hu3DModelPosSet(lbl_1_bss_1530.unk00->model[23], var_f31, Hu3DData[lbl_1_bss_1530.unk00->model[20]].pos.y - var_f30, var_f26); + Hu3DModelScaleSet(lbl_1_bss_1530.unk00->model[23], temp_f27, temp_f27, 1.0f); + var_f28 = fn_1_5D4(1.0f, 0.0f, var_r31, 30.0f); + Hu3DModelTPLvlSet(lbl_1_bss_1530.unk00->model[22], var_f28); + } + lbl_1_bss_B8 = 0; + lbl_1_bss_1530.unk04 = (void*) fn_1_BF60; + fn_1_958(30); + Hu3DParManKill(lbl_1_data_364); + lbl_1_data_364 = -1; + fn_1_958(240); + fn_1_1834(MAKE_MESSID(36, 7), 0); + if (lbl_1_bss_1580.unk344 == 1) { + if (lbl_1_bss_1580.unk348 == 0) { + if (lbl_1_bss_1580.unkC4[0].unk00.unk08 == 1 && lbl_1_bss_1580.unkC4[1].unk00.unk08 == 1) { + fn_1_958(30); + } else { + while (TRUE) { + fn_1_938(); + if (lbl_1_bss_1580.unkC4[0].unk00.unk08 == 0 && (HuPadBtnDown[lbl_1_bss_1580.unkC4[0].unk00.unk14] & PAD_BUTTON_A)) { + break; + } + if (lbl_1_bss_1580.unkC4[1].unk00.unk08 == 0 && (HuPadBtnDown[lbl_1_bss_1580.unkC4[1].unk00.unk14] & PAD_BUTTON_A)) { + break; + } + } + } + } else { + if (lbl_1_bss_1580.unkC4[2].unk00.unk08 == 1 && lbl_1_bss_1580.unkC4[3].unk00.unk08 == 1) { + fn_1_958(30); + } else { + while (TRUE) { + fn_1_938(); + if (lbl_1_bss_1580.unkC4[0].unk00.unk08 == 0 && (HuPadBtnDown[lbl_1_bss_1580.unkC4[0].unk00.unk14] & PAD_BUTTON_A)) { + break; + } + if (lbl_1_bss_1580.unkC4[1].unk00.unk08 == 0 && (HuPadBtnDown[lbl_1_bss_1580.unkC4[1].unk00.unk14] & PAD_BUTTON_A)) { + break; + } + } + } + } + } else if (lbl_1_bss_1580.unk08 == 0) { + if (lbl_1_bss_1580.unkC4[lbl_1_bss_1580.unk0C].unk00.unk08 != 1) { + fn_1_2420(lbl_1_bss_1580.unkC4[lbl_1_bss_1580.unk0C].unk00.unk14, PAD_BUTTON_A); + } else { + fn_1_958(30); + } + } else { + fn_1_2420(0, PAD_BUTTON_A); + } + HuAudFXPlay(0x1C); +} + +void fn_1_CE6C(omObjData* arg0) { + StructBss1530* sp8 = arg0->data; + s32 var_r31; + + fn_1_91C8(); + fn_1_9220(); + fn_1_9488(); + fn_1_9768(); + if (lbl_1_bss_1580.unk04 != 0) { + fn_1_9A64(0); + fn_1_9A64(1); + fn_1_9A64(2); + } + var_r31 = fn_1_A314(); + if (lbl_1_bss_1580.unk344 == 1) { + if (var_r31 == -1) { + fn_1_B788(); + } + } else if (lbl_1_bss_1458[0] > 1) { + fn_1_A4F0(); + } + fn_1_ABAC(); + if (lbl_1_bss_1580.unk344 == 1) { + if (lbl_1_bss_1580.unk348 == 0) { + fn_1_C060(lbl_1_data_130[0].x + 100.0f); + } else { + fn_1_C060(lbl_1_data_130[2].x + 100.0f); + } + } else { + fn_1_C060(lbl_1_data_130[lbl_1_bss_1458[1]].x); + } + fn_1_958(60); + fn_1_9140(); +} + +void fn_1_D48C(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_A8, 0x100, 16, 16, -1, NULL); + lbl_1_bss_1558.unk00 = temp_r3; + lbl_1_bss_1558.unk04 = (void*) fn_1_CE6C; + lbl_1_bss_1558.unk00->data = &lbl_1_bss_1558; + while (TRUE) { + fn_1_938(); + if (lbl_1_bss_1558.unk04 != NULL) { + lbl_1_bss_1558.unk04(temp_r3); + } + } +} + +void fn_1_D538(omObjData* arg0) { + float sp8; + float var_f30; + float var_f31; + StructBss1530* temp_r31; + s32 var_r30; + s32 var_r29; + + temp_r31 = arg0->data; + var_f31 = 1.75f; + sp8 = 0.5f; + var_r29 = 0; + HuAudFXPlay(0xBA); + HuAudFXPlay(0x9A); + lbl_1_bss_1580.unk324 = 1; + espDispOn(temp_r31->unk14); + espScaleSet(temp_r31->unk14, 0.0f, 0.0f); + for (var_r30 = 0; var_r30 < 120; var_r30++) { + fn_1_938(); + if (var_r30 < 60) { + var_f30 = fn_1_6F4(0.0f, 1.75f, var_r30, 60.0f); + } else { + var_f30 = fn_1_7BC(var_f31, 1.0f, var_r29, 15.0f); + var_r29++; + if (var_r29 == 15) { + if (var_f31 > 1.25f) { + var_f31 -= 0.1f; + } + var_r29 = 0; + } + } + espScaleSet(temp_r31->unk14, var_f30, var_f30); + } + temp_r31->unk04 = 0; +} + +void fn_1_D718(omObjData* arg0) { + float temp_f31; + + temp_f31 = lbl_1_bss_1580.unk20 / 255.0f; + Hu3DModelAmbSet(arg0->model[1], temp_f31, temp_f31, temp_f31); + Hu3DModelAmbSet(arg0->model[2], temp_f31, temp_f31, temp_f31); + Hu3DModelAmbSet(arg0->model[3], temp_f31, temp_f31, temp_f31); +} + +float lbl_1_data_36C[] = { 0.0f, 120.0f, 240.0f }; + +void fn_1_D7D8(omObjData* arg0) { + s32 var_r30; + + if (lbl_1_bss_B0 == 1.0f) { + Hu3DModelAttrReset(arg0->model[4], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(arg0->model[5], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(arg0->model[6], HU3D_ATTR_DISPOFF); + lbl_1_bss_C4 += 0.033333335f; + if (lbl_1_bss_C4 >= 0.5f) { + lbl_1_bss_C4 = 0.5f; + } + } else { + if (lbl_1_bss_B0 == 0.0f) { + lbl_1_bss_C4 -= 0.033333335f; + if (lbl_1_bss_C4 <= 0.0f) { + lbl_1_bss_C4 = 0.0f; + Hu3DModelAttrSet(arg0->model[4], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->model[5], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->model[6], HU3D_ATTR_DISPOFF); + return; + } + } else { + Hu3DModelAttrSet(arg0->model[4], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->model[5], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(arg0->model[6], HU3D_ATTR_DISPOFF); + return; + } + } + for (var_r30 = 0; var_r30 < 3; var_r30++) { + Hu3DModelTPLvlSet(arg0->model[var_r30 + 4], lbl_1_bss_C4); + Hu3DModelRotSet(arg0->model[var_r30 + 4], 0.0f, 0.0f, lbl_1_bss_1408[var_r30][1]); + lbl_1_bss_1408[var_r30][0] = 10.0 * cosd(11.0f * lbl_1_data_36C[var_r30]); + lbl_1_bss_1408[var_r30][1] = 30.0 * sind(8.0f * lbl_1_data_36C[var_r30]); + if ((lbl_1_data_36C[var_r30] += 0.4f) >= 360.0f) { + lbl_1_data_36C[var_r30] -= 360.0f; + } + } +} + +void fn_1_DB68(omObjData* arg0, s32 arg1, s32 arg2) { + s32 sp8[] = { DATA_MAKE_NUM(DATADIR_MSTORY3, 6), DATA_MAKE_NUM(DATADIR_MSTORY3, 5) }; + s32 var_r30; + + if (arg2 < 5) { + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 4)); + arg0->motion[0] = Hu3DMotionIDGet(arg0->model[1]); + fn_1_1E28(arg0, 1, 0, 0, 2); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 8)); + arg0->model[3] = Hu3DModelCreateFile(sp8[arg1]); + arg0->motion[3] = Hu3DMotionIDGet(arg0->model[3]); + fn_1_1E28(arg0, 3, 3, 0, 1); + Hu3DModelShadowMapObjSet(arg0->model[1], "base_fix9-base"); + } else { + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 7)); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 8)); + arg0->model[3] = Hu3DModelCreateFile(sp8[arg1]); + Hu3DModelAttrSet(arg0->model[3], HU3D_ATTR_DISPOFF); + arg0->motion[3] = Hu3DMotionIDGet(arg0->model[1]); + fn_1_1E28(arg0, 1, 3, 0, 1); + Hu3DModelShadowMapObjSet(arg0->model[1], "base_story-base"); + } + for (var_r30 = 4; var_r30 < 7; var_r30++) { + arg0->model[var_r30] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 11)); + Hu3DModelTPLvlSet(arg0->model[var_r30], 0.0f); + Hu3DModelPosSet(arg0->model[var_r30], -200.0f + 200.0f * (var_r30 - 4), 750.0f, 500.0f); + Hu3DModelScaleSet(arg0->model[var_r30], 1.25f, 2.0f, 1.25f); + Hu3DModelAttrSet(arg0->model[var_r30], HU3D_ATTR_DISPOFF); + } + arg0->motion[1] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY3, 9)); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[2], DATA_MAKE_NUM(DATADIR_MSTORY3, 10)); + lbl_1_bss_1530.unk14 = espEntry(DATA_MAKE_NUM(DATADIR_MSTORY3, 30), 0, 0); + espPosSet(lbl_1_bss_1530.unk14, 288.0f, 110.0f); + espDispOff(lbl_1_bss_1530.unk14); + fn_1_1E28(arg0, 2, 2, 0, 2); + fn_1_35C8(arg0->model[1]); + fn_1_35C8(arg0->model[2]); + fn_1_35C8(arg0->model[3]); + arg0->model[20] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 31) + arg2); + arg0->motion[20] = Hu3DMotionIDGet(arg0->model[20]); + Hu3DModelPosSet(arg0->model[20], 0.0f, 0.0f, 0.0f); + Hu3DModelAttrSet(arg0->model[20], HU3D_ATTR_DISPOFF); + fn_1_1E28(arg0, 20, 20, 0, 2); + arg0->model[21] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 37)); + arg0->motion[21] = Hu3DMotionIDGet(arg0->model[21]); + Hu3DModelPosSet(arg0->model[21], 0.0f, 0.0f, 0.0f); + Hu3DModelAttrSet(arg0->model[21], HU3D_ATTR_DISPOFF); + fn_1_1E28(arg0, 21, 21, 0, 2); + arg0->model[22] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 38)); + arg0->motion[22] = Hu3DMotionIDGet(arg0->model[22]); + Hu3DModelPosSet(arg0->model[22], 0.0f, 0.0f, 0.0f); + Hu3DModelAttrSet(arg0->model[22], HU3D_ATTR_DISPOFF); + fn_1_1E28(arg0, 22, 22, 0, 2); + arg0->model[23] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 39)); + Hu3DModelPosSet(arg0->model[23], 0.0f, 0.0f, 0.0f); + Hu3DModelAttrSet(arg0->model[23], HU3D_ATTR_DISPOFF); +} + +void fn_1_E160(omObjData* arg0) { + s32 var_r28; + s32 var_r29; + s32 var_r31; + + if (lbl_1_bss_C0 == 0.0f) { + return; + } + Hu3DGLightColorSet(lbl_1_bss_1580.unk1C, lbl_1_bss_1580.unk20, lbl_1_bss_1580.unk20, lbl_1_bss_1580.unk20, 0xFF); + lbl_1_bss_1580.unk20++; + if (lbl_1_bss_1580.unk20 >= 128) { + lbl_1_bss_1580.unk20 = 128; + } + for (var_r31 = 1; var_r31 < 80; var_r31++) { + switch (lbl_1_bss_C8[var_r31].unk00) { + case 0: + lbl_1_bss_C8[var_r31].unk30 = Hu3DData[arg0->model[var_r31]].pos.y = 450.0f + rand8() % 150; + lbl_1_bss_C8[var_r31].unk00 = 1; + break; + case 3: + lbl_1_bss_C8[var_r31].unk30 = Hu3DData[arg0->model[var_r31]].pos.y = 500.0f; + /* fallthrough */ + case 1: + if (var_r31 % 3 != 0) { + var_r28 = rand8() % 4; + } else { + var_r28 = 5; + } + switch (var_r28) { + case 0: + Hu3DModelAmbSet(arg0->model[var_r31], 1.0f, 1.0f, 1.0f); + break; + case 1: + Hu3DModelAmbSet(arg0->model[var_r31], 1.0f, 0.0f, 0.0f); + break; + case 2: + Hu3DModelAmbSet(arg0->model[var_r31], 0.0f, 1.0f, 0.0f); + break; + case 3: + Hu3DModelAmbSet(arg0->model[var_r31], 0.0f, 0.0f, 1.0f); + break; + case 5: + break; + } + Hu3DModelAttrReset(arg0->model[var_r31], HU3D_ATTR_DISPOFF); + if (lbl_1_bss_1580.unk344 == 0) { + lbl_1_bss_C8[var_r31].unk2C = Hu3DData[arg0->model[var_r31]].pos.x = -50.0f + lbl_1_bss_BC + rand8() % 100; + } else { + lbl_1_bss_C8[var_r31].unk2C = Hu3DData[arg0->model[var_r31]].pos.x = -100.0f + lbl_1_bss_BC + rand8() % 200; + } + lbl_1_bss_C8[var_r31].unk34 = Hu3DData[arg0->model[var_r31]].pos.z = 460.0f; + Hu3DData[arg0->model[var_r31]].rot.x = rand8(); + Hu3DData[arg0->model[var_r31]].rot.y = rand8(); + Hu3DData[arg0->model[var_r31]].rot.z = rand8(); + lbl_1_bss_C8[var_r31].unk20 = (rand8() % 50 + -1.0f) / 100.0f; + if (var_r31 % 2 == 0) { + lbl_1_bss_C8[var_r31].unk20 *= -1.0f; + } + lbl_1_bss_C8[var_r31].unk24 = ((rand8() % 100 + 100) / 100.0f) * -1.0f; + lbl_1_bss_C8[var_r31].unk28 = (rand8() % 100 - 1) / 100; + lbl_1_bss_C8[var_r31].unk10 = (rand8() % 100 - 50) / 5; + lbl_1_bss_C8[var_r31].unk14 = (rand8() % 100 - 50) / 5; + lbl_1_bss_C8[var_r31].unk18 = (rand8() % 100 - 50) / 5; + lbl_1_bss_C8[var_r31].unk00 = 2; + break; + case 2: + if (lbl_1_bss_C8[var_r31].unk04-- <= 0) { + lbl_1_bss_C8[var_r31].unk04 = rand8() % 30 + 30; + lbl_1_bss_C8[var_r31].unk20 = (rand8() % 50 + -1.0f) / 100.0f; + if (var_r31 % 2 == 0) { + lbl_1_bss_C8[var_r31].unk20 *= -1.0f; + } + lbl_1_bss_C8[var_r31].unk24 = ((rand8() % 100 + 100) / 100.0f) *-1.0f; + lbl_1_bss_C8[var_r31].unk28 = (rand8() % 100 - 1) / 100; + lbl_1_bss_C8[var_r31].unk10 = (rand8() % 100 - 50) / 5; + lbl_1_bss_C8[var_r31].unk14 = (rand8() % 100 - 50) / 5; + lbl_1_bss_C8[var_r31].unk18 = (rand8() % 100 - 50) / 5; + } + lbl_1_bss_C8[var_r31].unk2C += lbl_1_bss_C8[var_r31].unk20; + lbl_1_bss_C8[var_r31].unk30 += lbl_1_bss_C8[var_r31].unk24; + lbl_1_bss_C8[var_r31].unk34 += lbl_1_bss_C8[var_r31].unk28; + Hu3DData[arg0->model[var_r31]].rot.x += lbl_1_bss_C8[var_r31].unk10; + Hu3DData[arg0->model[var_r31]].rot.y += lbl_1_bss_C8[var_r31].unk14; + Hu3DData[arg0->model[var_r31]].rot.z += lbl_1_bss_C8[var_r31].unk18; + if (Hu3DData[arg0->model[var_r31]].pos.y <= 0.0f) { + lbl_1_bss_C8[var_r31].unk00 = 3; + } + break; + case 10: + Hu3DModelAttrReset(arg0->model[var_r31], HU3D_ATTR_DISPOFF); + if (var_r31 % 3 != 0) { + var_r28 = rand8() % 4; + } else { + var_r28 = 5; + } + switch (var_r28) { + case 0: + Hu3DModelAmbSet(arg0->model[var_r31], 1.0f, 1.0f, 1.0f); + break; + case 1: + Hu3DModelAmbSet(arg0->model[var_r31], 1.0f, 0.0f, 0.0f); + break; + case 2: + Hu3DModelAmbSet(arg0->model[var_r31], 0.0f, 1.0f, 0.0f); + break; + case 3: + Hu3DModelAmbSet(arg0->model[var_r31], 0.0f, 0.0f, 1.0f); + break; + case 5: + break; + } + lbl_1_bss_C8[var_r31].unk2C = Hu3DData[arg0->model[var_r31]].pos.x = lbl_1_bss_BC; + lbl_1_bss_C8[var_r31].unk30 = Hu3DData[arg0->model[var_r31]].pos.y = 375.0f; + lbl_1_bss_C8[var_r31].unk34 = Hu3DData[arg0->model[var_r31]].pos.z = 460.0f; + var_r29 = rand8(); + if (rand8() % 2 == 0) { + var_r29 *= -1; + } + lbl_1_bss_C8[var_r31].unk2C += var_r29; + var_r29 = rand8(); + if (rand8() % 2 == 0) { + var_r29 *= -1; + } + lbl_1_bss_C8[var_r31].unk30 += var_r29; + var_r29 = rand8() % 50; + if (rand8() % 2 == 0) { + var_r29 *= -1; + } + lbl_1_bss_C8[var_r31].unk34 += var_r29; + lbl_1_bss_C8[var_r31].unk20 = (rand8() % 50 + -1.0f) / 100.0f; + if (var_r31 % 2 == 0) { + lbl_1_bss_C8[var_r31].unk20 *= -1.0f; + } + lbl_1_bss_C8[var_r31].unk24 = ((rand8() % 100 + 100) / 100.0f) * -1.0f; + lbl_1_bss_C8[var_r31].unk28 = (rand8() % 100 - 1) / 100; + lbl_1_bss_C8[var_r31].unk10 = (rand8() % 100 - 50) / 5; + lbl_1_bss_C8[var_r31].unk14 = (rand8() % 100 - 50) / 5; + lbl_1_bss_C8[var_r31].unk18 = (rand8() % 100 - 50) / 5; + lbl_1_bss_C8[var_r31].unk08 = 0; + lbl_1_bss_C8[var_r31].unk04 = rand8() % 30 + 30; + lbl_1_bss_C8[var_r31].unk00 = 11; + break; + case 11: + if (lbl_1_bss_C8[var_r31].unk04-- <= 0) { + lbl_1_bss_C8[var_r31].unk04 = rand8() % 30 + 30; + lbl_1_bss_C8[var_r31].unk20 = (rand8() % 50 + -1.0f) / 100.0f; + if (var_r31 % 2 == 0) { + lbl_1_bss_C8[var_r31].unk20 *= -1.0f; + } + lbl_1_bss_C8[var_r31].unk24 = ((rand8() % 100 + 100) / 100.0f) * -1.0f; + lbl_1_bss_C8[var_r31].unk28 = (rand8() % 100 - 1) / 100; + lbl_1_bss_C8[var_r31].unk10 = (rand8() % 100 - 50) / 5; + lbl_1_bss_C8[var_r31].unk14 = (rand8() % 100 - 50) / 5; + lbl_1_bss_C8[var_r31].unk18 = (rand8() % 100 - 50) / 5; + } + lbl_1_bss_C8[var_r31].unk2C += lbl_1_bss_C8[var_r31].unk20; + lbl_1_bss_C8[var_r31].unk30 += lbl_1_bss_C8[var_r31].unk24 / 2; + lbl_1_bss_C8[var_r31].unk34 += lbl_1_bss_C8[var_r31].unk28; + Hu3DData[arg0->model[var_r31]].rot.x += lbl_1_bss_C8[var_r31].unk10; + Hu3DData[arg0->model[var_r31]].rot.y += lbl_1_bss_C8[var_r31].unk14; + Hu3DData[arg0->model[var_r31]].rot.z += lbl_1_bss_C8[var_r31].unk18; + if (lbl_1_bss_C8[var_r31].unk08++ >= 50) { + lbl_1_bss_C8[var_r31].unk00 = 2; + } + break; + } + Hu3DData[arg0->model[var_r31]].pos.x = fn_1_5FC(Hu3DData[arg0->model[var_r31]].pos.x, lbl_1_bss_C8[var_r31].unk2C, 30.0f); + Hu3DData[arg0->model[var_r31]].pos.y = fn_1_5FC(Hu3DData[arg0->model[var_r31]].pos.y, lbl_1_bss_C8[var_r31].unk30, 30.0f); + Hu3DData[arg0->model[var_r31]].pos.z = fn_1_5FC(Hu3DData[arg0->model[var_r31]].pos.z, lbl_1_bss_C8[var_r31].unk34, 30.0f); + } +} + +void fn_1_FD30(omObjData* arg0) { + s32 var_r30; + + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 17)); + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 18)); + Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF); + for (var_r30 = 2; var_r30 < 80; var_r30++) { + if (var_r30 % 3 == 0) { + arg0->model[var_r30] = Hu3DModelLink(arg0->model[1]); + } else { + arg0->model[var_r30] = Hu3DModelLink(arg0->model[0]); + } + Hu3DModelAttrSet(arg0->model[var_r30], HU3D_ATTR_DISPOFF); + lbl_1_bss_C8[var_r30].unk04 = lbl_1_bss_C8[var_r30].unk08 = 0; + lbl_1_bss_C8[var_r30].unk00 = 10; + } + arg0->func = fn_1_E160; +} + +void fn_1_FE80(void) { + omObjData* temp_r31; + omObjData* sp8; + + temp_r31 = omAddObjEx(lbl_1_bss_A8, 0x100, 0x20, 0x20, -1, NULL); + sp8 = omAddObjEx(lbl_1_bss_A8, 0x100, 0x80, 0, -1, fn_1_FD30); + lbl_1_bss_1530.unk00 = temp_r31; + lbl_1_bss_1530.unk04 = NULL; + lbl_1_bss_1530.unk00->data = &lbl_1_bss_1530; + fn_1_DB68(temp_r31, lbl_1_bss_1580.unk08, lbl_1_bss_1580.unk00); + while (TRUE) { + fn_1_938(); + if (lbl_1_bss_1530.unk04 != NULL) { + lbl_1_bss_1530.unk04(temp_r31); + } + fn_1_D7D8(temp_r31); + } +} + +void fn_1_FF7C(s32 arg0) { + s32 sp30[4]; + s32 sp20[4]; + s32 sp10[4]; + s32 i, j; + s32 var_r29; + + sp30[0] = 0; + for (i = 1; i < 4; i++) { + sp30[i] = sp30[i - 1] + 1; + if (sp30[i] >= 4) { + sp30[i] = 0; + } + if (arg0 == sp30[i]) { + lbl_1_bss_1580.unk0C = i; + } + } + if (lbl_1_bss_1580.unk08 != 0) { + lbl_1_bss_1580.unk14 = arg0; + } + if (lbl_1_bss_1580.unk344 == 1) { + var_r29 = 0; + for (i = 0; i < 4; i++) { + sp10[0] = GWPlayer[sp30[0]].team; + sp10[1] = GWPlayer[sp30[1]].team; + sp10[2] = GWPlayer[sp30[2]].team; + sp10[3] = GWPlayer[sp30[3]].team; + sp20[i] = sp30[i]; + } + OSReport("########## Sort Start WIN:%d IDX (%d,%d), (%d,%d), (%d,%d), (%d,%d)\n", + var_r29, sp10[0], sp30[0], sp10[1], sp30[1], sp10[2], sp30[2], sp10[3], sp30[3]); + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + if (sp10[j] != -1 && var_r29 == sp10[j]) { + sp10[j] = -1; + sp30[i] = sp20[j]; + break; + } + } + if (i == 1) { + var_r29++; + var_r29 %= 2; + } + } + OSReport("########## Sort End WIN:%d IDX %d, %d, %d, %d\n", var_r29, sp30[0], sp30[1], sp30[2], sp30[3]); + } + for (i = 0; i < 4; i++) { + fn_1_3650(&lbl_1_bss_1580.unkC4[i].unk00, sp30[i]); + } + for (i = 0; i < 4; i++) { + lbl_1_bss_1580.unkC4[i].unk00.unk1C = GWPlayer[sp30[i]].coins; + lbl_1_bss_1580.unkC4[i].unk00.unk20 = GWPlayer[sp30[i]].stars; + lbl_1_bss_1580.unkC4[i].unk00.unk24 = GWPlayer[sp30[i]].coins_mg; + lbl_1_bss_1580.unkC4[i].unk00.unk28 = GWPlayer[sp30[i]].coins_max; + lbl_1_bss_1580.unkC4[i].unk00.unk2C = GWPlayer[sp30[i]].question_count; + } +} + +void fn_1_1036C(omObjData* arg0) { + float var_f29; + float var_f30; + float temp_f31; + s32 temp_r25; + s32 var_r26; + s32 var_r27 = 3; + StructBss1530* temp_r30 = arg0->data; + char* sp98[][3] = { + { "submit07-star_null3", "submit07-star_null1", "submit07-star_null1" }, + { "submit07-star_null4", "submit07-star_null2", "submit07-star_null1" }, + { "submit07-star_null5", "submit07-star_null3", "submit07-star_null1" } + }; + Mtx sp68; + Mtx sp38; + Mtx sp8; + s32 var_r28; + s32 var_r29; + + Hu3DModelPosSet(arg0->model[3], lbl_1_data_130[temp_r30->unk08].x, 100.0f, lbl_1_data_130[temp_r30->unk08].z - 20.0f); + Hu3DModelRotSet(arg0->model[3], 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[3], 0.0f, 0.0f, 0.0f); + if ((temp_r25 = lbl_1_bss_1580.unkC4[temp_r30->unk08].unk00.unk20 / 100) == 0) { + var_r27 = 2; + } else { + Hu3DMotionTimeSet(arg0->model[9], (temp_r25 + 1) % 10); + } + if ((temp_r25 = (lbl_1_bss_1580.unkC4[temp_r30->unk08].unk00.unk20 % 100) / 10) == 0 && var_r27 == 2) { + var_r27 = 1; + } else { + Hu3DMotionTimeSet(arg0->model[8], (temp_r25 + 1) % 10); + } + temp_r25 = lbl_1_bss_1580.unkC4[temp_r30->unk08].unk00.unk20 % 10; + Hu3DMotionTimeSet(arg0->model[7], (temp_r25 + 1) % 10); + Hu3DModelAttrReset(arg0->model[3], HU3D_ATTR_DISPOFF); + for (var_r28 = 0; var_r28 < 90; var_r28++) { + fn_1_938(); + var_f29 = fn_1_6F4(100.0f, 300.0f, var_r28, 90.0f); + var_f30 = fn_1_6F4(0.0f, 1080.0f, var_r28, 90.0f); + temp_f31 = fn_1_6F4(0.0f, 0.75f, var_r28, 90.0f); + Hu3DModelPosSet(arg0->model[3], lbl_1_data_130[temp_r30->unk08].x, var_f29, lbl_1_data_130[temp_r30->unk08].z - 20.0f); + Hu3DModelRotSet(arg0->model[3], 0.0f, var_f30, 0.0f); + Hu3DModelScaleSet(arg0->model[3], temp_f31, temp_f31, temp_f31); + for (var_r29 = 0; var_r29 < var_r27; var_r29++) { + if (var_f30 >= 900.0f) { + Hu3DModelAttrReset(arg0->model[var_r29 + 7], HU3D_ATTR_DISPOFF); + } + Hu3DModelObjMtxGet(arg0->model[3], sp98[var_r27 - 1][var_r29], sp68); + Hu3DModelPosSet(arg0->model[var_r29 + 7], sp68[0][3], sp68[1][3], sp68[2][3]); + Hu3DModelRotSet(arg0->model[var_r29 + 7], 0.0f, var_f30, 0.0f); + Hu3DModelScaleSet(arg0->model[var_r29 + 7], temp_f31, temp_f31, temp_f31); + } + } + var_r28 = var_r29 = var_r26 = 0; + if (temp_r30->unk1C == 1) { + fn_1_1E28(arg0, 1, 14, 5, 0); + } else { + fn_1_1E28(arg0, 1, 15, 5, 0); + } + do { + fn_1_938(); + if (temp_r30->unk1C == 1) { + temp_f31 = fn_1_878(0.75f, 1.0f, var_r26, 30.0f); + if (var_r26++ >= 29) { + var_r26 = 0; + } + Hu3DModelScaleSet(arg0->model[3], temp_f31, temp_f31, temp_f31); + for (var_r29 = 0; var_r29 < var_r27; var_r29++) { + Hu3DModelObjMtxGet(arg0->model[3], sp98[var_r27 - 1][var_r29], sp38); + Hu3DModelPosSet(arg0->model[var_r29 + 7], sp38[0][3], sp38[1][3], sp38[2][3]); + Hu3DModelRotSet(arg0->model[var_r29 + 7], 0.0f, var_f30, 0.0f); + Hu3DModelScaleSet(arg0->model[var_r29 + 7], temp_f31, temp_f31, temp_f31); + } + } + if (var_r28 == 60) { + fn_1_1E28(arg0, 1, 1, 15, 1); + } + if (var_r28 == 120) { + lbl_1_bss_1580.unk18 = 1; + } + if (var_r28++ >= 120 && (var_r26 == 0 || var_r26 == 15) && temp_r30->unk18 == 1) { + temp_r30->unk18 = 2; + } + } while (temp_r30->unk18 != 3); + HuAudFXPlay(0xBB); + for (var_r28 = 0; var_r28 < 60; var_r28++) { + fn_1_938(); + if (var_r28 > 30) { + var_f29 = fn_1_61C(300.0f, 600.0f, var_r28 - 30, 30.0f); + } + var_f30 = fn_1_61C(0.0f, 360.0f, var_r28, 60.0f); + Hu3DModelPosSet(arg0->model[3], lbl_1_data_130[temp_r30->unk08].x, var_f29, lbl_1_data_130[temp_r30->unk08].z - 20.0f); + Hu3DModelRotSet(arg0->model[3], 0.0f, var_f30, 0.0f); + for (var_r29 = 0; var_r29 < var_r27; var_r29++) { + if (var_f30 >= 180.0f) { + Hu3DModelAttrSet(arg0->model[var_r29 + 7], HU3D_ATTR_DISPOFF); + } + Hu3DModelObjMtxGet(arg0->model[3], sp98[var_r27 - 1][var_r29], sp8); + Hu3DModelPosSet(arg0->model[var_r29 + 7], sp8[0][3], sp8[1][3], sp8[2][3]); + Hu3DModelRotSet(arg0->model[var_r29 + 7], 0.0f, var_f30, 0.0f); + } + } + Hu3DModelAttrSet(arg0->model[3], HU3D_ATTR_DISPOFF); + for (var_r28 = 0; var_r28 < 3; var_r28++) { + Hu3DModelAttrSet(arg0->model[var_r28 + 7], HU3D_ATTR_DISPOFF); + } + temp_r30->unk04 = 0; +} + +void fn_1_10D74(omObjData* arg0) { + float var_f29; + float var_f30; + float temp_f31; + s32 temp_r25; + s32 var_r26; + s32 var_r27 = 3; + StructBss1530* temp_r30 = arg0->data; + char* sp98[][3] = { + { "coin-coin-null3", "coin-coin_null1", "coin-coin-null1" }, + { "coin-coin-null4", "coin-coin-null2", "coin-coin-null1" }, + { "coin-coin-null5", "coin-coin-null3", "coin-coin-null1" } + }; + Mtx sp68; + Mtx sp38; + Mtx sp8; + s32 var_r28; + s32 var_r29; + + Hu3DModelPosSet(arg0->model[4], lbl_1_data_130[temp_r30->unk08].x, 100.0f, lbl_1_data_130[temp_r30->unk08].z - 20.0f); + Hu3DModelRotSet(arg0->model[4], 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[4], 0.0f, 0.0f, 0.0f); + if ((temp_r25 = lbl_1_bss_1580.unkC4[temp_r30->unk08].unk00.unk1C / 100) == 0) { + var_r27 = 2; + } else { + Hu3DMotionTimeSet(arg0->model[9], (temp_r25 + 1) % 10); + } + if ((temp_r25 = (lbl_1_bss_1580.unkC4[temp_r30->unk08].unk00.unk1C % 100) / 10) == 0 && var_r27 == 2) { + var_r27 = 1; + } else { + Hu3DMotionTimeSet(arg0->model[8], (temp_r25 + 1) % 10); + } + temp_r25 = lbl_1_bss_1580.unkC4[temp_r30->unk08].unk00.unk1C % 10; + Hu3DMotionTimeSet(arg0->model[7], (temp_r25 + 1) % 10); + Hu3DModelAttrReset(arg0->model[4], HU3D_ATTR_DISPOFF); + for (var_r28 = 0; var_r28 < 90; var_r28++) { + fn_1_938(); + var_f29 = fn_1_6F4(100.0f, 300.0f, var_r28, 90.0f); + var_f30 = fn_1_6F4(0.0f, 1080.0f, var_r28, 90.0f); + temp_f31 = fn_1_6F4(0.0f, 0.75f, var_r28, 90.0f); + Hu3DModelPosSet(arg0->model[4], lbl_1_data_130[temp_r30->unk08].x, var_f29, lbl_1_data_130[temp_r30->unk08].z - 20.0f); + Hu3DModelRotSet(arg0->model[4], 0.0f, var_f30, 0.0f); + Hu3DModelScaleSet(arg0->model[4], temp_f31, temp_f31, temp_f31); + for (var_r29 = 0; var_r29 < var_r27; var_r29++) { + if (var_f30 >= 900.0f) { + Hu3DModelAttrReset(arg0->model[var_r29 + 7], HU3D_ATTR_DISPOFF); + } + Hu3DModelObjMtxGet(arg0->model[4], sp98[var_r27 - 1][var_r29], sp68); + Hu3DModelPosSet(arg0->model[var_r29 + 7], sp68[0][3], sp68[1][3], sp68[2][3]); + Hu3DModelRotSet(arg0->model[var_r29 + 7], 0.0f, var_f30, 0.0f); + Hu3DModelScaleSet(arg0->model[var_r29 + 7], temp_f31, temp_f31, temp_f31); + } + } + var_r28 = var_r29 = var_r26 = 0; + if (temp_r30->unk1C == 1) { + fn_1_1E28(arg0, 1, 14, 5, 0); + } else { + fn_1_1E28(arg0, 1, 15, 5, 0); + } + do { + fn_1_938(); + if (temp_r30->unk1C == 1) { + temp_f31 = fn_1_878(0.75f, 1.0f, var_r26, 30.0f); + if (var_r26++ >= 29) { + var_r26 = 0; + } + Hu3DModelScaleSet(arg0->model[4], temp_f31, temp_f31, temp_f31); + for (var_r29 = 0; var_r29 < var_r27; var_r29++) { + Hu3DModelObjMtxGet(arg0->model[4], sp98[var_r27 - 1][var_r29], sp38); + Hu3DModelPosSet(arg0->model[var_r29 + 7], sp38[0][3], sp38[1][3], sp38[2][3]); + Hu3DModelRotSet(arg0->model[var_r29 + 7], 0.0f, var_f30, 0.0f); + Hu3DModelScaleSet(arg0->model[var_r29 + 7], temp_f31, temp_f31, temp_f31); + } + } + if (var_r28 == 60) { + fn_1_1E28(arg0, 1, 1, 15, 1); + } + if (var_r28 == 120) { + lbl_1_bss_1580.unk18 = 1; + } + if (var_r28++ >= 120 && (var_r26 == 0 || var_r26 == 15) && temp_r30->unk18 == 1) { + temp_r30->unk18 = 2; + } + } while (temp_r30->unk18 != 3); + fn_1_1E28(arg0, 1, 1, 15, 1); + HuAudFXPlay(0xBC); + for (var_r28 = 0; var_r28 < 60; var_r28++) { + fn_1_938(); + if (var_r28 > 30) { + var_f29 = fn_1_61C(300.0f, 600.0f, var_r28 - 30, 30.0f); + } + var_f30 = fn_1_61C(0.0f, 360.0f, var_r28, 60.0f); + Hu3DModelPosSet(arg0->model[4], lbl_1_data_130[temp_r30->unk08].x, var_f29, lbl_1_data_130[temp_r30->unk08].z - 20.0f); + Hu3DModelRotSet(arg0->model[4], 0.0f, var_f30, 0.0f); + for (var_r29 = 0; var_r29 < var_r27; var_r29++) { + if (var_f30 >= 180.0f) { + Hu3DModelAttrSet(arg0->model[var_r29 + 7], HU3D_ATTR_DISPOFF); + } + Hu3DModelObjMtxGet(arg0->model[4], sp98[var_r27 - 1][var_r29], sp8); + Hu3DModelPosSet(arg0->model[var_r29 + 7], sp8[0][3], sp8[1][3], sp8[2][3]); + Hu3DModelRotSet(arg0->model[var_r29 + 7], 0.0f, var_f30, 0.0f); + } + } + Hu3DModelAttrSet(arg0->model[4], HU3D_ATTR_DISPOFF); + for (var_r28 = 0; var_r28 < 3; var_r28++) { + Hu3DModelAttrSet(arg0->model[var_r28 + 7], HU3D_ATTR_DISPOFF); + } + temp_r30->unk04 = 0; +} + +void fn_1_11794(omObjData* arg0) { + StructBss1530* temp_r30; + + temp_r30 = arg0->data; + fn_1_958(25); + fn_1_1E28(arg0, 1, 15, 5, 0); + fn_1_958(10); + while (TRUE) { + fn_1_938(); + if (Hu3DMotionTimeGet(arg0->model[1]) >= 40.0f) { + break; + } + } + Hu3DModelAttrSet(arg0->model[1], HU3D_MOTATTR_PAUSE); + temp_r30->unk04 = 0; +} + +void fn_1_11834(omObjData* arg0) { + float var_f31; + float var_f30; + float temp_f26; + float temp_f27; + float temp_f25; + float temp_f29; + float temp_f28; + StructBss1530* temp_r31; + s32 temp_r29; + s32 var_r24; + s32 temp_r23; + s32 var_r27; + s32 temp_r25; + s32 var_r28; + + var_f30 = 0.0f; + temp_r31 = arg0->data; + temp_r29 = temp_r31->unk08; + temp_r23 = lbl_1_bss_1490[temp_r29].unk00->work[0]; + var_r24 = 0xFF; + Hu3DModelPosSet(lbl_1_bss_1490[temp_r29].unk00->model[6], lbl_1_data_130[temp_r29].x, 500.0f + lbl_1_data_130[temp_r29].y + lbl_1_bss_AC, lbl_1_data_130[temp_r29].z + 0.1f * lbl_1_bss_AC); + Hu3DModelScaleSet(lbl_1_bss_1490[temp_r29].unk00->model[6], 0.0f, 1.25f, 0.0f); + Hu3DModelTPLvlSet(lbl_1_bss_1490[temp_r29].unk00->model[6], 0.0f); + Hu3DModelAttrReset(lbl_1_bss_1490[temp_r29].unk00->model[6], HU3D_ATTR_DISPOFF); + for (var_r27 = 0; var_r27 <= 5; var_r27++) { + fn_1_938(); + lbl_1_bss_1490[temp_r29].unk00->work[0] = fn_1_6F4(temp_r23, var_r24, var_r27, 5.0f); + temp_f27 = fn_1_6F4(0.0f, 1.5f, var_r27, 5.0f); + temp_f25 = fn_1_6F4(0.0f, 0.5f, var_r27, 5.0f); + temp_r25 = fn_1_6F4(0.0f, 128.0f, var_r27, 5.0f); + Hu3DModelScaleSet(lbl_1_bss_1490[temp_r29].unk00->model[6], temp_f27, 1.25f, temp_f27); + Hu3DModelTPLvlSet(lbl_1_bss_1490[temp_r29].unk00->model[6], temp_f25); + Hu3DLLightColorSet(lbl_1_bss_1490[temp_r29].unk00->model[1], lbl_1_bss_1580.unk24[temp_r29].unk00, temp_r25, temp_r25, temp_r25, 0xFF); + Hu3DLLightColorSet(lbl_1_bss_1490[temp_r29].unk00->model[2], lbl_1_bss_1580.unk24[temp_r29].unk04, temp_r25, temp_r25, temp_r25, 0xFF); + } + lbl_1_bss_1490[temp_r29].unk00->work[1] = 1; + fn_1_958(20); + fn_1_1E28(arg0, 1, 3, 15, 0); + fn_1_2310(arg0, 1, 3, 15); + do { + fn_1_938(); + } while (temp_r31->unk18 == 0); + Hu3DModelPosSet(arg0->model[5], lbl_1_data_130[temp_r31->unk08].x, 300.0f, lbl_1_data_130[temp_r31->unk08].z - 50.0f); + Hu3DModelRotSet(arg0->model[5], 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[5], 0.0f, 0.0f, 0.0f); + Hu3DModelAttrReset(arg0->model[5], HU3D_ATTR_DISPOFF); + HuAudFXPlay(0x338); + for (var_r28 = 0; var_r28 < 60; var_r28++) { + fn_1_938(); + temp_f29 = 10.0 + 10.0 * sind(var_f30); + temp_f28 = 10.0 * sind(2.0f * var_f30); + if (var_r28 < 10) { + var_f31 = fn_1_61C(0.0f, 1.0f, var_r28, 10.0f); + } else { + var_f31 = fn_1_61C(1.0f, 0.5f, var_r28 - 10, 5.0f); + } + if (var_r28 == 10) { + lbl_1_bss_1580.unk334[temp_r31->unk08] = fn_1_8264(); + Hu3DParManPosSet(lbl_1_bss_1580.unk334[temp_r31->unk08], lbl_1_data_130[temp_r31->unk08].x, 300.0f + temp_f29, lbl_1_data_130[temp_r31->unk08].z); + } + if ((var_f30 += 2.0f) >= 360.0f) { + var_f30 -= 360.0f; + } + Hu3DModelPosSet(arg0->model[5], lbl_1_data_130[temp_r31->unk08].x, 300.0f + temp_f29, lbl_1_data_130[temp_r31->unk08].z - 50.0f); + Hu3DModelRotSet(arg0->model[5], 0.0f, temp_f28, 0.0f); + Hu3DModelScaleSet(arg0->model[5], var_f31, var_f31, var_f31); + } + Hu3DParManKill(lbl_1_bss_1580.unk334[temp_r31->unk08]); + lbl_1_bss_1580.unk334[temp_r31->unk08] = -1; + temp_f29 = Hu3DData[arg0->model[5]].pos.y; + temp_f26 = temp_f29; + temp_f28 = Hu3DData[arg0->model[5]].rot.y; + var_f31 = 0.5f; + var_f30 = 0.0f; + for (var_r28 = 0; var_r28 < 90; var_r28++) { + fn_1_938(); + if (var_r28 == 45) { + HuAudFXPlay(0x339); + } + if (var_r28 > 45) { + temp_f29 = fn_1_61C(temp_f26, 100.0f, var_r28 - 45, 45.0f); + var_f31 = fn_1_61C(0.5f, 0.0f, var_r28 - 45, 45.0f); + } + temp_f28 += var_f30 += 0.25f; + Hu3DModelPosSet(arg0->model[5], lbl_1_data_130[temp_r31->unk08].x, temp_f29, lbl_1_data_130[temp_r31->unk08].z - 50.0f); + Hu3DModelRotSet(arg0->model[5], 0.0f, temp_f28, 0.0f); + Hu3DModelScaleSet(arg0->model[5], var_f31, var_f31, var_f31); + } + Hu3DModelAttrSet(arg0->model[5], HU3D_ATTR_DISPOFF); + HuAudFXPlay(8); + lbl_1_bss_1580.unkC4[temp_r31->unk08].unk00.unk20++; + GWPlayer[lbl_1_bss_1580.unkC4[temp_r31->unk08].unk00.unk00].stars++; + if (GWPlayer[lbl_1_bss_1580.unkC4[temp_r31->unk08].unk00.unk00].stars >= 999) { + GWPlayer[lbl_1_bss_1580.unkC4[temp_r31->unk08].unk00.unk00].stars = 999; + } + temp_r31->unk04 = 0; +} + +void fn_1_123D8(omObjData* arg0) { + StructBss1530* temp_r31; + + temp_r31 = arg0->data; + fn_1_15450(temp_r31->unk08); + temp_r31->unk04 = 0; +} + +void fn_1_1241C(omObjData* arg0) { +} + +void fn_1_12420(omObjData* arg0) { + float sp8[] = { 0.0f, -30.0f, -60.0f, -90.0f }; + float temp_f31; + StructBss1530* temp_r31; + s32 var_r27; + s32 var_r29; + s32 var_r28; + + temp_r31 = arg0->data; + if (lbl_1_bss_1580.unk344 == 1) { + var_r27 = 0; + if (lbl_1_bss_1580.unk348 == 1) { + var_r27 = 2; + } + if ((lbl_1_bss_1580.unk348 == 0 && temp_r31->unk08 <= 1) || (lbl_1_bss_1580.unk348 == 1 && temp_r31->unk08 >= 2)) { + Hu3DModelPosSet(arg0->model[2], 100.0f + lbl_1_data_130[temp_r31->unk08].x, -90.0f, lbl_1_data_130[temp_r31->unk08].z); + fn_1_958(90); + if (temp_r31->unk08 == var_r27) { + Hu3DModelAttrReset(arg0->model[2], HU3D_ATTR_DISPOFF); + } + if (arg0->work[0] == 0) { + HuAudFXPlay(0xA8); + } + for (var_r28 = 0; var_r28 <= 30; var_r28++) { + fn_1_938(); + temp_f31 = fn_1_6F4(-90.0f, 0.0f, var_r28, 30.0f); + Hu3DModelPosSet(arg0->model[1], lbl_1_data_130[temp_r31->unk08].x, 90.0f + temp_f31, lbl_1_data_130[temp_r31->unk08].z - 20.0f); + Hu3DModelPosSet(arg0->model[2], 100.0f + lbl_1_data_130[temp_r31->unk08].x, temp_f31, lbl_1_data_130[temp_r31->unk08].z - 20.0f); + } + } + } else { + Hu3DModelPosSet(arg0->model[2], lbl_1_data_130[temp_r31->unk08].x, -90.0f, lbl_1_data_130[temp_r31->unk08].z); + if (lbl_1_bss_1580.unkC4[temp_r31->unk08].unk00.unk18 != 4) { + } + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (arg0->work[0] == 0 && var_r29 >= 1) { + HuAudFXPlay(0xA5 + var_r29); + } + if (var_r29 != 3) { + for (var_r28 = 0; var_r28 < 30; var_r28++) { + fn_1_938(); + if (sp8[lbl_1_bss_1580.unkC4[temp_r31->unk08].unk00.unk18 - 1] >= sp8[3 - var_r29] && 4 - var_r29 < 4) { + temp_f31 = fn_1_6F4(sp8[4 - var_r29], sp8[3 - var_r29], var_r28, 30.0f); + if (var_r29 == 1) { + Hu3DModelAttrReset(arg0->model[2], HU3D_ATTR_DISPOFF); + } + Hu3DModelPosSet(arg0->model[1], lbl_1_data_130[temp_r31->unk08].x, 90.0f + temp_f31, lbl_1_data_130[temp_r31->unk08].z - 20.0f); + Hu3DModelPosSet(arg0->model[2], lbl_1_data_130[temp_r31->unk08].x, temp_f31, lbl_1_data_130[temp_r31->unk08].z - 20.0f); + } + } + } else { + for (var_r28 = 0; var_r28 < 10; var_r28++) { + fn_1_938(); + if ((sp8[lbl_1_bss_1580.unkC4[temp_r31->unk08].unk00.unk18 - 1] >= sp8[3 - var_r29]) && ((4 - var_r29) < 4)) { + temp_f31 = fn_1_6F4(sp8[4 - var_r29], sp8[3 - var_r29], var_r28, 10.0f); + if (var_r29 == 1) { + Hu3DModelAttrReset(arg0->model[2], HU3D_ATTR_DISPOFF); + } + Hu3DModelPosSet(arg0->model[1], lbl_1_data_130[temp_r31->unk08].x, 90.0f + temp_f31, lbl_1_data_130[temp_r31->unk08].z - 20.0f); + Hu3DModelPosSet(arg0->model[2], lbl_1_data_130[temp_r31->unk08].x, temp_f31, lbl_1_data_130[temp_r31->unk08].z - 20.0f); + } + } + } + if (var_r29 == 2) { + fn_1_958(120); + } else if (var_r29 != 3) { + fn_1_958(60); + } + } + } + temp_r31->unk04 = 0; +} + +void fn_1_12A98(s32 arg0) { + s32 sp8[4]; + s32 var_r29; + s32 var_r30; + s32 i; + + var_r29 = 0; + var_r30 = -1; + for (i = 0; i < 4; i++) { + lbl_1_bss_1458[i] = lbl_1_bss_1448[i] = 0; + } + for (i = 0; i < 4; i++) { + switch (arg0) { + case 0: + sp8[i] = lbl_1_bss_1580.unkC4[i].unk00.unk20; + break; + case 1: + sp8[i] = lbl_1_bss_1580.unkC4[i].unk00.unk1C; + break; + } + } + for (i = 0; i < 4; i++) { + if (var_r30 <= sp8[i]) { + var_r30 = sp8[i]; + } + } + for (i = 0; i < 4; i++) { + if (var_r30 == sp8[i]) { + lbl_1_bss_1458[0]++; + lbl_1_bss_1448[var_r29++] = i; + } + } +} + +void fn_1_12C08(s32 arg0) { + s32 sp8[4]; + s32 var_r29; + s32 var_r30; + s32 i; + + var_r29 = 0; + var_r30 = -1; + for (i = 0; i < 4; i++) { + lbl_1_bss_1458[i] = 0; + lbl_1_bss_1448[i] = -1; + } + for (i = 0; i < 4; i++) { + switch (arg0) { + case 0: + sp8[i] = lbl_1_bss_1580.unkC4[i].unk00.unk24; + break; + case 1: + sp8[i] = lbl_1_bss_1580.unkC4[i].unk00.unk28; + break; + case 2: + sp8[i] = lbl_1_bss_1580.unkC4[i].unk00.unk2C; + break; + } + } + for (i = 0; i < 4; i++) { + if (var_r30 <= sp8[i]) { + var_r30 = sp8[i]; + } + } + for (i = 0; i < 4; i++) { + if (var_r30 == sp8[i]) { + lbl_1_bss_1458[0]++; + lbl_1_bss_1448[var_r29++] = i; + } + } +} + +void fn_1_12DAC(void) { + s32 sp8[4]; + s32 var_r29; + s32 i; + s32 j; + + for (i = 0; i < 4; i++) { + sp8[i] = i; + } + for (i = 0; i < 4; i++) { + for (j = i; j < 4; j++) { + if (lbl_1_bss_1580.unkC4[sp8[j]].unk00.unk20 >= lbl_1_bss_1580.unkC4[sp8[i]].unk00.unk20) { + var_r29 = sp8[i]; + sp8[i] = sp8[j]; + sp8[j] = var_r29; + } + } + } + for (i = 0; i < 4; i++) { + for (j = i; j < 4; j++) { + if ((lbl_1_bss_1580.unkC4[sp8[j]].unk00.unk20 == lbl_1_bss_1580.unkC4[sp8[i]].unk00.unk20) && (lbl_1_bss_1580.unkC4[sp8[j]].unk00.unk1C >= lbl_1_bss_1580.unkC4[sp8[i]].unk00.unk1C)) { + var_r29 = sp8[i]; + sp8[i] = sp8[j]; + sp8[j] = var_r29; + } + } + } + lbl_1_bss_1580.unkC4[sp8[0]].unk00.unk18 = j = 1; + for (i = 1; i < 4; i++) { + j++; + lbl_1_bss_1580.unkC4[sp8[i]].unk00.unk18 = j; + if ((lbl_1_bss_1580.unkC4[sp8[i]].unk00.unk20 == lbl_1_bss_1580.unkC4[sp8[i - 1]].unk00.unk20) && (lbl_1_bss_1580.unkC4[sp8[i]].unk00.unk1C == lbl_1_bss_1580.unkC4[sp8[i - 1]].unk00.unk1C)) { + lbl_1_bss_1580.unkC4[sp8[i]].unk00.unk18 = lbl_1_bss_1580.unkC4[sp8[i - 1]].unk00.unk18; + } + } +} + +void fn_1_130A8(void) { + s32 var_r30; + s32 i; + + var_r30 = 0; + for (i = 0; i < 4; i++) { + lbl_1_bss_1458[i] = lbl_1_bss_1448[i] = 0; + } + for (i = 0; i < 4; i++) { + if (lbl_1_bss_1580.unkC4[i].unk00.unk18 == 1) { + lbl_1_bss_1458[0]++; + lbl_1_bss_1448[var_r30++] = i; + lbl_1_bss_1458[1] = i; + } + } +} + +void fn_1_1317C(void) { + s32 sp8[4]; + s32 var_r30; + s32 i; + + var_r30 = -1; + for (i = 0; i < 4; i++) { + sp8[i] = lbl_1_bss_1428[i]; + } + for (i = 0; i < 4; i++) { + if (var_r30 <= sp8[i]) { + var_r30 = sp8[i]; + } + } + for (i = 0; i < 4; i++) { + if (var_r30 == sp8[i]) { + lbl_1_bss_1458[1] = i; + } + } + for (i = 0; i < lbl_1_bss_1458[0]; i++) { + if (lbl_1_bss_1458[1] != lbl_1_bss_1448[i]) { + lbl_1_bss_1580.unkC4[lbl_1_bss_1448[i]].unk00.unk18 = 2; + } + } +} + +void fn_1_132AC(omObjData* arg0, s32 arg1) { + StructFn352C* temp_r30; + s32 var_r28; + + temp_r30 = &lbl_1_bss_1580.unkC4[arg1].unk00; + arg0->model[1] = CharModelCreate(temp_r30->unk10, 4); + arg0->motion[1] = CharModelMotionCreate(temp_r30->unk10, DATA_MAKE_NUM(DATADIR_MARIOMOT, 0)); + arg0->motion[2] = CharModelMotionCreate(temp_r30->unk10, DATA_MAKE_NUM(DATADIR_MARIOMOT, 72)); + arg0->motion[5] = CharModelMotionCreate(temp_r30->unk10, DATA_MAKE_NUM(DATADIR_MARIOMOT, 47)); + arg0->motion[3] = CharModelMotionCreate(temp_r30->unk10, DATA_MAKE_NUM(DATADIR_MARIOMOT, 23)); + arg0->motion[4] = CharModelMotionCreate(temp_r30->unk10, DATA_MAKE_NUM(DATADIR_MARIOMOT, 24)); + arg0->motion[14] = CharModelMotionCreate(temp_r30->unk10, DATA_MAKE_NUM(DATADIR_MARIOMOT, 72)); + arg0->motion[15] = CharModelMotionCreate(temp_r30->unk10, DATA_MAKE_NUM(DATADIR_MARIOMOT, 73)); + CharModelMotionDataClose(temp_r30->unk10); + Hu3DModelPosSet(arg0->model[1], lbl_1_data_130[arg1].x, lbl_1_data_130[arg1].y, lbl_1_data_130[arg1].z - 20.0f); + Hu3DModelRotSet(arg0->model[1], 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f); + Hu3DModelShadowSet(arg0->model[1]); + fn_1_1E28(arg0, 1, 1, 0, 1); + if (lbl_1_bss_1580.unk344 == 1) { + var_r28 = 0; + if (arg1 > 1) { + var_r28 = 1; + } + arg0->model[2] = Hu3DModelCreateFile(var_r28 + DATA_MAKE_NUM(DATADIR_MSTORY3, 144)); + Hu3DModelAttrSet(arg0->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelScaleSet(arg0->model[2], 1.25f, 1.0f, 1.5f); + Hu3DModelShadowMapSet(arg0->model[2]); + } else { + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 12)); + Hu3DModelScaleSet(arg0->model[2], 1.5f, 1.0f, 1.5f); + Hu3DModelAttrSet(arg0->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelShadowMapSet(arg0->model[2]); + } + arg0->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 14)); + Hu3DModelAttrSet(arg0->model[3], HU3D_ATTR_DISPOFF); + arg0->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 15)); + Hu3DModelAttrSet(arg0->model[4], HU3D_ATTR_DISPOFF); + arg0->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 13)); + Hu3DModelAttrSet(arg0->model[5], HU3D_ATTR_DISPOFF); + arg0->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 11)); + Hu3DModelAttrSet(arg0->model[6], HU3D_ATTR_DISPOFF); + for (arg1 = 0; arg1 < 3; arg1++) { + arg0->model[arg1 + 7] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 16)); + Hu3DModelAttrSet(arg0->model[arg1 + 7], HU3D_ATTR_DISPOFF); + Hu3DMotionSpeedSet(arg0->model[arg1 + 7], 0.0f); + } + lbl_1_bss_1580.unk24[arg1].unk00 = Hu3DLLightCreate(arg0->model[1], 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0); + Hu3DLLightInfinitytSet(arg0->model[1], lbl_1_bss_1580.unk24[arg1].unk00); + Hu3DLLightPosAimSet(arg0->model[1], lbl_1_bss_1580.unk24[arg1].unk00, 0.0f, 700.0f, 1200.0f, 0.0f, 0.0f, 640.0f); + lbl_1_bss_1580.unk24[arg1].unk04 = Hu3DLLightCreate(arg0->model[2], 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0, 0, 0); + Hu3DLLightInfinitytSet(arg0->model[2], lbl_1_bss_1580.unk24[arg1].unk04); + Hu3DLLightPosAimSet(arg0->model[2], lbl_1_bss_1580.unk24[arg1].unk04, 0.0f, 700.0f, 1200.0f, 0.0f, 0.0f, 640.0f); +} + +void fn_1_13908(void) { + omObjData* var_r30; + s32 temp_r31; + + temp_r31 = lbl_1_bss_1580.unk314++; + var_r30 = omAddObjEx(lbl_1_bss_A8, 0x100, 0x10, 0x10, -1, NULL); + lbl_1_bss_1490[temp_r31].unk00 = var_r30; + lbl_1_bss_1490[temp_r31].unk04 = NULL; + lbl_1_bss_1490[temp_r31].unk08 = temp_r31; + lbl_1_bss_1490[temp_r31].unk00->data = &lbl_1_bss_1490[temp_r31]; + fn_1_132AC(lbl_1_bss_1490[temp_r31].unk00, temp_r31); + while (TRUE) { + fn_1_938(); + if (lbl_1_bss_1490[temp_r31].unk04 != NULL) { + lbl_1_bss_1490[temp_r31].unk04(lbl_1_bss_1490[temp_r31].unk00); + } + } +} + +void fn_1_13A38(omObjData* arg0) { +} + +s32 lbl_1_data_504[][27] = { + { + MAKE_MESSID(37, 0x00), MAKE_MESSID(37, 0x01), MAKE_MESSID(37, 0x02), + MAKE_MESSID(37, 0x03), MAKE_MESSID(37, 0x05), MAKE_MESSID(37, 0x06), + MAKE_MESSID(37, 0x0B), MAKE_MESSID(37, 0x0C), MAKE_MESSID(37, 0x0D), + MAKE_MESSID(37, 0x0E), MAKE_MESSID(37, 0x0F), MAKE_MESSID(37, 0x10), + MAKE_MESSID(37, 0x07), MAKE_MESSID(37, 0x08), MAKE_MESSID(37, 0x09), + MAKE_MESSID(37, 0x0A), MAKE_MESSID(37, 0x11), MAKE_MESSID(37, 0x12), + MAKE_MESSID(37, 0x13), MAKE_MESSID(37, 0x14), MAKE_MESSID(37, 0x15), + MAKE_MESSID(37, 0x16), MAKE_MESSID(37, 0x17), MAKE_MESSID(37, 0x8C), + MAKE_MESSID(37, 0x8D), MAKE_MESSID(37, 0x8E), MAKE_MESSID(37, 0x9E) + }, + { + MAKE_MESSID(37, 0x19), MAKE_MESSID(37, 0x1A), MAKE_MESSID(37, 0x1B), + MAKE_MESSID(37, 0x1C), MAKE_MESSID(37, 0x1D), MAKE_MESSID(37, 0x1E), + MAKE_MESSID(37, 0x23), MAKE_MESSID(37, 0x24), MAKE_MESSID(37, 0x25), + MAKE_MESSID(37, 0x26), MAKE_MESSID(37, 0x27), MAKE_MESSID(37, 0x28), + MAKE_MESSID(37, 0x1F), MAKE_MESSID(37, 0x20), MAKE_MESSID(37, 0x21), + MAKE_MESSID(37, 0x22), MAKE_MESSID(37, 0x29), MAKE_MESSID(37, 0x2A), + MAKE_MESSID(37, 0x2B), MAKE_MESSID(37, 0x2C), MAKE_MESSID(37, 0x2D), + MAKE_MESSID(37, 0x2E), MAKE_MESSID(37, 0x2F), MAKE_MESSID(37, 0x8F), + MAKE_MESSID(37, 0x90), MAKE_MESSID(37, 0x91), MAKE_MESSID(37, 0x9F) + }, + { + MAKE_MESSID(37, 0x30), MAKE_MESSID(37, 0x31), MAKE_MESSID(37, 0x32), + MAKE_MESSID(37, 0x33), MAKE_MESSID(37, 0x34), MAKE_MESSID(37, 0x35), + MAKE_MESSID(37, 0x3A), MAKE_MESSID(37, 0x3B), MAKE_MESSID(37, 0x3C), + MAKE_MESSID(37, 0x3D), MAKE_MESSID(37, 0x3E), MAKE_MESSID(37, 0x3F), + MAKE_MESSID(37, 0x36), MAKE_MESSID(37, 0x37), MAKE_MESSID(37, 0x38), + MAKE_MESSID(37, 0x39), MAKE_MESSID(37, 0x40), MAKE_MESSID(37, 0x41), + MAKE_MESSID(37, 0x42), MAKE_MESSID(37, 0x43), MAKE_MESSID(37, 0x44), + MAKE_MESSID(37, 0x45), MAKE_MESSID(37, 0x46), MAKE_MESSID(37, 0x92), + MAKE_MESSID(37, 0x93), MAKE_MESSID(37, 0x94), MAKE_MESSID(37, 0xA0) + }, + { + MAKE_MESSID(37, 0x47), MAKE_MESSID(37, 0x48), MAKE_MESSID(37, 0x49), + MAKE_MESSID(37, 0x4A), MAKE_MESSID(37, 0x4B), MAKE_MESSID(37, 0x4C), + MAKE_MESSID(37, 0x51), MAKE_MESSID(37, 0x52), MAKE_MESSID(37, 0x53), + MAKE_MESSID(37, 0x54), MAKE_MESSID(37, 0x55), MAKE_MESSID(37, 0x56), + MAKE_MESSID(37, 0x4D), MAKE_MESSID(37, 0x4E), MAKE_MESSID(37, 0x4F), + MAKE_MESSID(37, 0x50), MAKE_MESSID(37, 0x57), MAKE_MESSID(37, 0x58), + MAKE_MESSID(37, 0x59), MAKE_MESSID(37, 0x5A), MAKE_MESSID(37, 0x5B), + MAKE_MESSID(37, 0x5C), MAKE_MESSID(37, 0x5D), MAKE_MESSID(37, 0x95), + MAKE_MESSID(37, 0x96), MAKE_MESSID(37, 0x97), MAKE_MESSID(37, 0xA1) + }, + { + MAKE_MESSID(37, 0x5E), MAKE_MESSID(37, 0x5F), MAKE_MESSID(37, 0x60), + MAKE_MESSID(37, 0x61), MAKE_MESSID(37, 0x62), MAKE_MESSID(37, 0x63), + MAKE_MESSID(37, 0x68), MAKE_MESSID(37, 0x69), MAKE_MESSID(37, 0x6A), + MAKE_MESSID(37, 0x6B), MAKE_MESSID(37, 0x6C), MAKE_MESSID(37, 0x6D), + MAKE_MESSID(37, 0x64), MAKE_MESSID(37, 0x65), MAKE_MESSID(37, 0x66), + MAKE_MESSID(37, 0x67), MAKE_MESSID(37, 0x6E), MAKE_MESSID(37, 0x6F), + MAKE_MESSID(37, 0x70), MAKE_MESSID(37, 0x71), MAKE_MESSID(37, 0x72), + MAKE_MESSID(37, 0x73), MAKE_MESSID(37, 0x74), MAKE_MESSID(37, 0x98), + MAKE_MESSID(37, 0x99), MAKE_MESSID(37, 0x9A), MAKE_MESSID(37, 0xA2) + }, + { + MAKE_MESSID(37, 0x75), MAKE_MESSID(37, 0x76), MAKE_MESSID(37, 0x77), + MAKE_MESSID(37, 0x78), MAKE_MESSID(37, 0x79), MAKE_MESSID(37, 0x7A), + MAKE_MESSID(37, 0x7F), MAKE_MESSID(37, 0x80), MAKE_MESSID(37, 0x81), + MAKE_MESSID(37, 0x82), MAKE_MESSID(37, 0x83), MAKE_MESSID(37, 0x84), + MAKE_MESSID(37, 0x7B), MAKE_MESSID(37, 0x7C), MAKE_MESSID(37, 0x7D), + MAKE_MESSID(37, 0x7E), MAKE_MESSID(37, 0x85), MAKE_MESSID(37, 0x86), + MAKE_MESSID(37, 0x87), MAKE_MESSID(37, 0x88), MAKE_MESSID(37, 0x89), + MAKE_MESSID(37, 0x8A), MAKE_MESSID(37, 0x8B), MAKE_MESSID(37, 0x9B), + MAKE_MESSID(37, 0x9C), MAKE_MESSID(37, 0x9D), MAKE_MESSID(37, 0xA3) + } +}; + +void fn_1_13A3C(s32 arg0, s32 arg1, s32 arg2, s32 arg3) { + s32 var_r29 = 0; + s32 temp_r28 = 0; + s32 i; + + lbl_1_bss_1580.unk18 = 0; + fn_1_1E28(lbl_1_bss_1468.unk00, 1, arg3, 15, 1); + temp_r28 = (s16) HuWinKeyWaitNumGet(lbl_1_data_504[lbl_1_bss_1580.unk00][arg1]); + if (arg2 == -1) { + arg2 = temp_r28 - 1; + } + HuWinComKeyReset(); + if (lbl_1_bss_1580.unk14 == -1) { + for (i = 0; i < 10; i++) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, GWMessDelayGet()); + } + } + HuWinMesSet(arg0, lbl_1_data_504[lbl_1_bss_1580.unk00][arg1]); + for (i = 0; i < temp_r28; i++) { + var_r29 = 0; + do { + HuPrcVSleep(); + } while (HuWinStatGet(arg0) != 1); + if (i == arg2) { + HuWinAttrSet(arg0, 0x400); + var_r29 = 1; + lbl_1_bss_1580.unk18 = 99; + } + while (TRUE) { + HuPrcVSleep(); + if (var_r29 != 0) { + if (var_r29 == 1) { + if (HuWinStatGet(arg0) != 1) { + var_r29 = 2; + continue; + } + } + if (var_r29 == 2) { + do { + fn_1_938(); + } while (lbl_1_bss_1580.unk18 != 1); + HuWinAttrReset(arg0, 0x400); + HuWinKeyWaitEntry(arg0); + break; + } + } else if (HuWinStatGet(arg0) != 1) { + break; + } + } + } + fn_1_1B18(arg0, -1); + fn_1_1D44(arg0, MAKE_MESSID(37, 4)); + HuWinComKeyReset(); + fn_1_1E28(lbl_1_bss_1468.unk00, 1, 1, 15, 1); +} + +void fn_1_13C78(s32 arg0, s32 arg1, s32 arg2) { + fn_1_1E28(lbl_1_bss_1468.unk00, 1, arg2, 15, 1); + fn_1_1D44(arg0, lbl_1_data_504[lbl_1_bss_1580.unk00][arg1]); + fn_1_1B18(arg0, -1); + fn_1_1D44(arg0, MAKE_MESSID(37, 4)); + fn_1_1E28(lbl_1_bss_1468.unk00, 1, 1, 15, 1); +} + +void fn_1_13D38(s32 arg0, s32 arg1, s32 arg2) { + s32 var_r31; + + var_r31 = lbl_1_bss_1580.unkC4[arg1].unk00.unk10; + HuWinInsertMesSet(arg0, var_r31, arg2); +} + +void fn_1_13D98(omObjData* arg0, s32 arg1) { + s32 sp20[] = { + DATA_MAKE_NUM(DATADIR_MSTORY3, 40), + DATA_MAKE_NUM(DATADIR_MSTORY3, 46), + DATA_MAKE_NUM(DATADIR_MSTORY3, 52), + DATA_MAKE_NUM(DATADIR_MSTORY3, 58), + DATA_MAKE_NUM(DATADIR_MSTORY3, 64), + DATA_MAKE_NUM(DATADIR_MSTORY3, 70) + }; + s32 sp38[][5] = { + { DATA_MAKE_NUM(DATADIR_MSTORY3, 0x29), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x2A), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x2B), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x2C), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x2D) }, + { DATA_MAKE_NUM(DATADIR_MSTORY3, 0x2F), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x30), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x31), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x32), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x33) }, + { DATA_MAKE_NUM(DATADIR_MSTORY3, 0x35), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x36), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x37), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x38), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x39) }, + { DATA_MAKE_NUM(DATADIR_MSTORY3, 0x3B), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x3C), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x3D), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x3E), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x3F) }, + { DATA_MAKE_NUM(DATADIR_MSTORY3, 0x41), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x42), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x43), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x44), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x45) }, + { DATA_MAKE_NUM(DATADIR_MSTORY3, 0x47), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x48), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x49), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x4A), DATA_MAKE_NUM(DATADIR_MSTORY3, 0x4A) } + }; + + arg0->model[1] = Hu3DModelCreateFile(sp20[arg1]); + arg0->motion[1] = Hu3DJointMotionFile(arg0->model[1], sp38[arg1][0]); + arg0->motion[2] = Hu3DJointMotionFile(arg0->model[1], sp38[arg1][1]); + arg0->motion[3] = Hu3DJointMotionFile(arg0->model[1], sp38[arg1][2]); + arg0->motion[4] = Hu3DJointMotionFile(arg0->model[1], sp38[arg1][3]); + arg0->motion[5] = Hu3DJointMotionFile(arg0->model[1], sp38[arg1][4]); + Hu3DModelPosSet(arg0->model[1], 0.0f, 0.0f, 670.0f); + Hu3DModelRotSet(arg0->model[1], 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f); + if (arg1 == 3) { + Hu3DData[arg0->model[1]].pos.y = 50.0f; + } + Hu3DModelShadowSet(arg0->model[1]); + fn_1_1E28(arg0, 1, 1, 0, 1); + { + s32 sp8[] = { 9, 14, 10, 11, 12, 13 }; + + if (arg1 != 3) { + CharModelEffectNpcInit(arg0->model[1], arg0->motion[2], 1, sp8[arg1]); + } + } +} + +void fn_1_140A0(void) { + omObjData* temp_r3; + + temp_r3 = omAddObjEx(lbl_1_bss_A8, 0x100, 0x10, 0x10, -1, NULL); + lbl_1_bss_1468.unk00 = temp_r3; + lbl_1_bss_1468.unk04 = NULL; + lbl_1_bss_1468.unk00->data = &lbl_1_bss_1468; + fn_1_13D98(temp_r3, lbl_1_bss_1580.unk00); + while (TRUE) { + fn_1_938(); + if (lbl_1_bss_1468.unk04 != NULL) { + lbl_1_bss_1468.unk04(temp_r3); + } + } +} + +void fn_1_1442C(s32 arg0) { + s32 var_r31; + + var_r31 = -1; + if (GWPlayerCfg[lbl_1_bss_1580.unkC4[arg0].unk00.unk00].iscom) { + var_r31 = rand8() % 120 + 60; + } + do { + fn_1_938(); + if (!GWPlayerCfg[lbl_1_bss_1580.unkC4[arg0].unk00.unk00].iscom && (HuPadBtnDown[GWPlayerCfg[lbl_1_bss_1580.unkC4[arg0].unk00.unk00].pad_idx] & PAD_BUTTON_A)) { + break; + } + } while (var_r31-- != 0); + fn_1_1E28(lbl_1_bss_1490[arg0].unk00, 1, 5, 15, 0); +} + +void fn_1_1456C(s32 arg0) { + while (TRUE) { + fn_1_938(); + if (lbl_1_bss_1490[arg0].unk00->motion[5] != Hu3DMotionShiftIDGet(lbl_1_bss_1490[arg0].unk00->model[1]) + && lbl_1_bss_1490[arg0].unk00->motion[5] == Hu3DMotionIDGet(lbl_1_bss_1490[arg0].unk00->model[1]) + && Hu3DMotionTimeGet(lbl_1_bss_1490[arg0].unk00->model[1]) >= 27.0f) + { + break; + } + } + HuAudFXStop(lbl_1_bss_68[arg0 + 1]); + HuAudFXPlay(0x303); +} + +HsfanimStruct00 lbl_1_data_78C = { + 60, { 0, 0 }, + 1000.0f, 0.0f, 180.0f, + { 0.0f, 0.0f, 0.0f }, + 50.0f, 0.9f, 20.0f, 0.99f, 4, + { + { 0xFF, 0xFF, 0x00, 0xFF }, + { 0xFF, 0xFF, 0x20, 0xFF }, + { 0xFF, 0xFF, 0x80, 0xFF }, + { 0xFF, 0xFF, 0xFF, 0xFF } + }, + { + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 } + } +}; + +s32 fn_1_14684(void) { + s32 temp_r3; + + temp_r3 = Hu3DParManCreate(HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_EFFECT, 1)), 250, &lbl_1_data_78C); + Hu3DParManTimeLimitSet(temp_r3, 60); + Hu3DParManAttrSet(temp_r3, 4 | 0x40); + Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(temp_r3), 1); + return temp_r3; +} + +void fn_1_14700(omObjData* arg0) { + Hu3DModelKill(arg0->model[0]); + omDelObjEx(lbl_1_bss_A8, arg0); +} + +void fn_1_14748(omObjData* arg0) { + float temp_f31; + s32 sp8[3]; + s32 temp_r27; + s32 var_r26; + s32 var_r30; + s32 temp_r25; + s32 var_r29; + + switch (arg0->work[1]) { + case 0: + if (arg0->work[2] >= 1080) { + arg0->work[1] = 1; + arg0->rot.y = 0.0f; + arg0->scale.x = arg0->scale.y = arg0->scale.z = 1.0f; + arg0->work[2] = arg0->work[3] = 0; + lbl_1_bss_68[arg0->work[0] + 1] = HuAudFXPlay(0x300); + } else { + arg0->rot.y = arg0->work[2] % 360; + arg0->work[2] += 25; + if (arg0->work[3] < 180) { + arg0->scale.x = sind(arg0->work[3] % 180); + arg0->work[3] += 6; + } else { + arg0->scale.x = 1.0 + 0.5 * sind(arg0->work[3] % 180); + arg0->work[3] += 18; + } + arg0->scale.y = arg0->scale.z = arg0->scale.x; + if (arg0->work[3] > 360) { + arg0->work[3] = 360; + } + } + break; + case 1: + if (arg0->work[2] >= 40) { + arg0->work[1] = 2; + } + /* fallthrough */ + case 2: + arg0->trans.y += 0.2f * sind(arg0->work[2]); + if ((arg0->work[2] += 4) > 360) { + arg0->work[2] -= 360; + } + break; + case 3: + if (arg0->work[3]++ >= 8) { + arg0->work[1] = 4; + arg0->work[3] = 0; + Hu3DModelAttrSet(arg0->model[0], 1); + } else { + temp_f31 = fn_1_5D4(1.0f, 0.0f, arg0->work[3], 8.0f); + if (arg0->work[3] == 1) { + arg0->work[2] = fn_1_14684(); + Hu3DParManPosSet(arg0->work[2], arg0->trans.x, 275.0f, arg0->trans.z); + } + arg0->trans.y = 250.0f + fn_1_5D4(0.0f, 25.0f, arg0->work[3], 4.0f); + arg0->scale.x = 1.0f + 0.5f * (1.0f - temp_f31); + arg0->scale.y = arg0->scale.z = arg0->scale.x; + Hu3DModelTPLvlSet(arg0->model[0], temp_f31); + } + break; + case 4: + if (arg0->work[3]++ >= 60) { + Hu3DParManKill(arg0->work[2]); + arg0->work[2] = -1; + arg0->func = NULL; + } + break; + } + if (arg0->work[1] >= 3) { + var_r26 = 0; + if (lbl_1_bss_1428[arg0->work[0]] == -1) { + var_r30 = lbl_1_bss_1438[arg0->work[0]]; + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (var_r29 != arg0->work[0]) { + sp8[var_r26++] = lbl_1_bss_1428[var_r29]; + } + } + while (TRUE) { + if (var_r30 != sp8[0] && var_r30 != sp8[1] && var_r30 != sp8[2]) { + lbl_1_bss_1428[arg0->work[0]] = var_r30; + break; + } + var_r30 = rand8() % 10 + 1; + } + Hu3DMotionTimeSet(arg0->model[0], lbl_1_bss_1428[arg0->work[0]] - 1 + 0.5f); + } + } else { + temp_r25 = lbl_1_bss_1438[arg0->work[0]] - 1; + do { + temp_r27 = rand8() % 10; + } while (temp_r25 == temp_r27); + lbl_1_bss_1438[arg0->work[0]] = temp_r27 + 1; + Hu3DMotionTimeSet(arg0->model[0], temp_r27 + 0.5f); + } +} + +void fn_1_14E6C(omObjData* arg0) { + s32 temp_r30; + + temp_r30 = arg0->work[0]; + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_MSTORY3, 19)); + omSetTra(arg0, lbl_1_data_130[temp_r30].x, 250.0f, lbl_1_data_130[temp_r30].z); + omSetRot(arg0, 0.0f, 0.0f, 0.0f); + omSetSca(arg0, 0.0f, 0.0f, 0.0f); + Hu3DMotionSpeedSet(arg0->model[0], 0.0f); + HuAudFXPlay(0x302); + arg0->func = fn_1_14748; +} + +void fn_1_14F80(omObjData* arg0) { + Hu3DModelKill(arg0->model[1]); + Hu3DModelKill(arg0->model[2]); + omDelObjEx(lbl_1_bss_A8, arg0); +} + +void fn_1_14FD4(omObjData* arg0) { + s32 temp_r29; + s32 var_r30; + + temp_r29 = arg0->work[0]; + for (var_r30 = 1; var_r30 < 3; var_r30++) { + if (arg0->work[3] <= 40) { + Hu3DData[arg0->model[var_r30]].rot.y = fn_1_6F4(0.0f, 360.0f, arg0->work[3], 40.0f); + } else { + Hu3DData[arg0->model[var_r30]].rot.y = fn_1_61C(360.0f, 0.0f, arg0->work[3] - 40, 20.0f); + } + if (arg0->work[1] / 10 == 0) { + Hu3DData[arg0->model[var_r30]].pos.x = lbl_1_data_130[temp_r29].x; + } else { + Hu3DData[arg0->model[var_r30]].pos.x = lbl_1_data_130[temp_r29].x + fn_1_5D4(0.0f, 40.0f + -80.0f * (var_r30 - 1), arg0->work[3], 20.0f); + } + Hu3DData[arg0->model[var_r30]].pos.y = 275.0f + fn_1_5D4(0.0f, 50.0f, arg0->work[3], 20.0f); + Hu3DData[arg0->model[var_r30]].pos.z = lbl_1_data_130[temp_r29].z; + } + if (arg0->work[3]++ >= 60) { + arg0->func = NULL; + } +} + +void fn_1_152F0(omObjData* arg0) { + s32 sp8[] = { + DATA_MAKE_NUM(DATADIR_MSTORY3, 20), + DATA_MAKE_NUM(DATADIR_MSTORY3, 21), + DATA_MAKE_NUM(DATADIR_MSTORY3, 22), + DATA_MAKE_NUM(DATADIR_MSTORY3, 23), + DATA_MAKE_NUM(DATADIR_MSTORY3, 24), + DATA_MAKE_NUM(DATADIR_MSTORY3, 25), + DATA_MAKE_NUM(DATADIR_MSTORY3, 26), + DATA_MAKE_NUM(DATADIR_MSTORY3, 27), + DATA_MAKE_NUM(DATADIR_MSTORY3, 28), + DATA_MAKE_NUM(DATADIR_MSTORY3, 29) + }; + + arg0->model[1] = Hu3DModelCreateFile(sp8[arg0->work[1] % 10]); + arg0->model[2] = Hu3DModelCreateFile(sp8[arg0->work[1] / 10]); + Hu3DMotionSpeedSet(arg0->model[1], 0.0f); + Hu3DMotionSpeedSet(arg0->model[2], 0.0f); + if (arg0->work[1] / 10 == 0) { + Hu3DModelAttrSet(arg0->model[2], HU3D_ATTR_DISPOFF); + } + arg0->func = fn_1_14FD4; +} + +void fn_1_15450(s32 arg0) { + omObjData* temp_r3; + omObjData* temp_r3_2; + + temp_r3 = omAddObjEx(lbl_1_bss_A8, 0x2000, 0x10, 0x10, -1, fn_1_14E6C); + temp_r3->work[0] = arg0; + do { + fn_1_938(); + } while (temp_r3->work[1] != 2); + fn_1_1442C(arg0); + fn_1_1456C(arg0); + temp_r3->work[1] = 3; + fn_1_938(); + temp_r3_2 = omAddObjEx(lbl_1_bss_A8, 0x2000, 0x10, 0x10, -1, fn_1_152F0); + temp_r3_2->work[0] = arg0; + temp_r3_2->work[1] = lbl_1_bss_1428[arg0]; + fn_1_958(10); + fn_1_1E28(lbl_1_bss_1490[arg0].unk00, 1, 1, 15, 1); + do { + fn_1_938(); + } while (temp_r3_2->func); + lbl_1_bss_1490[arg0].unk18 = 1; + do { + fn_1_938(); + } while (lbl_1_bss_1490[arg0].unk18 != 2); + fn_1_958(150); + fn_1_14700(temp_r3); + fn_1_14F80(temp_r3_2); +} diff --git a/src/REL/mstory3Dll/win_effect.c b/src/REL/mstory3Dll/win_effect.c new file mode 100755 index 00000000..48590c1b --- /dev/null +++ b/src/REL/mstory3Dll/win_effect.c @@ -0,0 +1,322 @@ +#include "REL/mstory3Dll.h" +#include "game/data.h" +#include "game/hsfanim.h" +#include "game/hsfex.h" +#include "game/hsfman.h" +#include "game/memory.h" +#include "game/sprite.h" + +#include "ext_math.h" + +#define frand5() (((s32)frand() & 0x1F)) +#define frand8() (((s32)frand() & 0xFF)) + +typedef struct { + /* 0x00 */ Vec* unk00; + /* 0x04 */ Vec unk04; + /* 0x10 */ Vec unk10; + /* 0x1C */ u16 unk1C; + /* 0x1E */ u16 unk1E; + /* 0x20 */ u16 unk20; + /* 0x22 */ s16 unk22; + /* 0x24 */ float unk24; + /* 0x28 */ AnimData* unk28; +} StructBss1CF8; // Size 0x2C + +typedef struct { + /* 0x00 */ s16 unk00; + /* 0x02 */ char unk02[0x1A]; + /* 0x1C */ StructBss1CF8* unk1C; +} StructFn1E13C; // Size unknown + +void fn_1_1E13C(s32 arg0, s32 arg1, StructBss1CF8* arg2, Vec* arg3); +void fn_1_1E558(void); +void fn_1_1E820(ModelData* model, ParticleData* particle, Mtx matrix); + +StructBss1CF8 lbl_1_bss_1CF8[2]; +s32 lbl_1_bss_1CF4; +s32 lbl_1_bss_1CF0; +s32 lbl_1_bss_1CEC; +s16 lbl_1_bss_1CE8; + +void fn_1_1DED8(s32 arg0, Vec* arg1, Vec* arg2, s16 arg3) { + AnimData* temp_r28; + s16 var_r27; + + fn_1_1E13C(arg0 + 1, arg0 + 3, &lbl_1_bss_1CF8[0], arg2); + lbl_1_bss_1CF8[0].unk04 = *arg1; + lbl_1_bss_1CF8[0].unk24 = arg3 - 20; + fn_1_1E13C(arg0 + 2, arg0 + 3, &lbl_1_bss_1CF8[1], arg2); + lbl_1_bss_1CF8[1].unk04 = *arg1; + lbl_1_bss_1CF8[1].unk24 = arg3 - 20; + temp_r28 = HuSprAnimReadFile(arg0); + lbl_1_bss_1CE8 = HuSprGrpCreate(1); + var_r27 = HuSprCreate(temp_r28, 0, 0); + HuSprGrpMemberSet(lbl_1_bss_1CE8, 0, var_r27); + HuSprPosSet(lbl_1_bss_1CE8, 0, arg2->x, arg2->y); + HuSprTPLvlSet(lbl_1_bss_1CE8, 0, 0.0f); + HuSprAttrSet(lbl_1_bss_1CE8, 0, 8); + HuPrcChildCreate(fn_1_1E558, 100, 0x2000, 0, HuPrcCurrentGet()); + lbl_1_bss_1CF4 = 0; + lbl_1_bss_1CF0 = 0; + lbl_1_bss_1CEC = 0; +} + +void fn_1_1E0F4(void) { + lbl_1_bss_1CF4 = 1; +} + +s32 fn_1_1E108(void) { + return lbl_1_bss_1CF0; +} + +void fn_1_1E118(void) { + lbl_1_bss_1CEC = 1; +} + +s32 fn_1_1E12C(void) { + return lbl_1_bss_1CE8; +} + +void fn_1_1E13C(s32 arg0, s32 arg1, StructBss1CF8* arg2, Vec* arg3) { + Vec sp14; + AnimBmpData* temp_r31; + s32 sp10; + s32 var_r27; + s32 var_r26; + u16* var_r25; + AnimData* var_r24; + Vec* var_r22; + StructFn1E13C* temp_r23; + s16 var_r29; + s16 var_r28; + + var_r24 = HuSprAnimReadFile(arg0); + arg2->unk28 = var_r24; + temp_r31 = var_r24->bmp; + sp10 = temp_r31->sizeX * temp_r31->sizeY; + var_r25 = temp_r31->data; + for (var_r28 = var_r26 = 0; var_r28 < temp_r31->sizeY; var_r28 += 2) { + for (var_r29 = 0; var_r29 < temp_r31->sizeX; var_r29 += 2) { + var_r25 = (u16*) temp_r31->data + ((var_r28 % 4) * 4 + (var_r28 / 4) * temp_r31->sizeX * 4 + (var_r29 / 4) * 16 + var_r29 % 4); + if (*var_r25 != 0x8000) { + var_r26++; + } + } + } + arg2->unk20 = var_r26; + var_r22 = arg2->unk00 = HuMemDirectMallocNum(HEAP_SYSTEM, var_r26 * sizeof(*var_r22), MEMORY_DEFAULT_NUM); + arg2->unk1C = temp_r31->sizeX; + arg2->unk1E = temp_r31->sizeY; + Hu3D2Dto3D(arg3, 1, &arg2->unk10); + for (var_r28 = 0; var_r28 < temp_r31->sizeY; var_r28 += 2) { + for (var_r29 = 0; var_r29 < temp_r31->sizeX; var_r29 += 2) { + var_r25 = (u16*) temp_r31->data + ((var_r28 % 4) * 4 + (var_r28 / 4) * temp_r31->sizeX * 4 + (var_r29 / 4) * 16 + var_r29 % 4); + if (*var_r25 != 0x8000) { + sp14 = *arg3; + sp14.x = sp14.x + var_r29 - temp_r31->sizeX / 2; + sp14.y = sp14.y + var_r28 - temp_r31->sizeY / 2; + Hu3D2Dto3D(&sp14, 1, var_r22); + var_r22++; + } + } + } + HuSprAnimKill(var_r24); + var_r24 = HuSprAnimRead(HuDataRead(arg1)); + var_r27 = Hu3DParticleCreate(var_r24, var_r26); + arg2->unk22 = var_r27; + Hu3DModelPosSet(var_r27, 0.0f, 0.0f, 0.0f); + Hu3DModelLayerSet(var_r27, 1); + Hu3DParticleColSet(var_r27, 0xFF, 0xFF, 0xA); + Hu3DParticleScaleSet(var_r27, 20.0f); + Hu3DParticleHookSet(var_r27, fn_1_1E820); + Hu3DParticleBlendModeSet(var_r27, 1); + Hu3DParticleAttrSet(var_r27, 2); + temp_r23 = Hu3DData[var_r27].unk_120; + temp_r23->unk1C = arg2; + temp_r23->unk00 = 0; + OSReport("Particle Count %d\n", var_r26); +} + +void fn_1_1E558(void) { + float var_f31; + float var_f30; + float temp_f29; + s16* temp_r30; + s16* temp_r29; + s16 i; + + var_f31 = 0.0f; + var_f30 = 0.0f; + while (lbl_1_bss_1CF4 == 0) { + HuPrcVSleep(); + } + Hu3DParticleAttrReset(lbl_1_bss_1CF8->unk22, 2); + HuPrcSleep(20); + Hu3DParticleAttrReset(lbl_1_bss_1CF8[1].unk22, 2); + temp_r30 = Hu3DData[lbl_1_bss_1CF8[0].unk22].unk_120; + temp_r29 = Hu3DData[lbl_1_bss_1CF8[1].unk22].unk_120; + while (*temp_r30 == 0 || *temp_r29 == 0) { + HuPrcVSleep(); + } + for (i = 0; i <= 20; i++) { + temp_f29 = i / 20.0f; + HuSprTPLvlSet(lbl_1_bss_1CE8, 0, temp_f29); + HuPrcVSleep(); + } + OSReport("Finish\n"); + for (i = 0; i < 2; i++) { + Hu3DModelKill(lbl_1_bss_1CF8[i].unk22); + HuSprAnimKill(lbl_1_bss_1CF8[i].unk28); + } + lbl_1_bss_1CF0 = 1; + while (TRUE) { + if (lbl_1_bss_1CEC != 0) { + break; + } + var_f31 += var_f30; + if (var_f31 > 360.0f) { + var_f31 -= 360.0f; + } + var_f30 += 0.5; + if (var_f30 > 10.0f) { + var_f30 = 10.0f; + } + temp_f29 = 1.0 + 0.25 * sind(var_f31); + HuSprScaleSet(lbl_1_bss_1CE8, 0, temp_f29, temp_f29); + HuPrcVSleep(); + } + HuSprGrpKill(lbl_1_bss_1CE8); + HuPrcEnd(); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_1E820(ModelData* model, ParticleData* particle, Mtx matrix) { + Vec sp8; + float temp_f30; + float temp_f31; + s16 var_r22; + s16 var_r29; + StructBss1CF8* temp_r28; + HsfanimStruct01* var_r31; + s16 var_r27; + s16 temp_r25; + s16 temp_r24; + s16 temp_r21; + s16 temp_r26; + s16 temp_r20; + s16 var_r23; + + temp_r28 = particle->unk_1C; + if (particle->unk_34 == 0) { + var_r31 = particle->unk_48; + for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + var_r31->unk2C = 0.0f; + } + } + if (particle->unk_2D & 2) { + return; + } + temp_r21 = temp_r28->unk24 - (temp_r28->unk24 / 5.0f); + temp_r26 = temp_r21 / 2; + temp_r20 = temp_r21 - temp_r26; + PSVECSubtract(&temp_r28->unk04, &temp_r28->unk10, &sp8); + temp_f31 = PSVECMag(&sp8) / temp_r20; + for (var_r22 = 0; var_r22 < particle->unk_30 / (temp_r28->unk24 / 5.0f); var_r22++) { + var_r31 = particle->unk_48; + for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + if (!var_r31->unk2C) { + break; + } + } + if (var_r29 == particle->unk_30) { + break; + } + var_r31->unk34 = temp_r28->unk04; + var_r27 = (frand8() * 360) >> 8; + temp_f30 = 0.2 * frand5(); + var_r31->unk08.x = temp_f30 * sind(var_r27); + var_r31->unk08.y = 0.1 * (frand5() + 100); + var_r31->unk08.z = temp_f30 * cosd(var_r27); + var_r31->unk40.r = 0xF0; + var_r31->unk40.g = 0x80; + var_r31->unk40.b = 0x60; + var_r31->unk2C = 10.0f; + var_r31->unk00 = 0; + var_r31->unk02 = 0; + var_r31->unk14.x = frandmod(360); + } + var_r31 = particle->unk_48; + for (var_r29 = var_r23 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + if (!var_r31->unk2C) { + continue; + } + if (var_r31->unk00_s16 == 0) { + PSVECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); + var_r31->unk08.x *= 0.999f; + var_r31->unk08.y -= 0.5f; + var_r31->unk08.z *= 0.999f; + if (var_r31->unk02 > temp_r26 - (temp_r26 / 5.0)) { + PSVECScale(&var_r31->unk08, &var_r31->unk08, 1.0 - ((var_r31->unk02 - (temp_r26 - temp_r26 / 5.0)) / (temp_r26 / 5.0))); + } + if (var_r31->unk02 == temp_r26) { + var_r31->unk00_s16++; + } + if (var_r31->unk34.y <= 0.0f) { + var_r31->unk08.y = 0.5f * -var_r31->unk08.y; + var_r31->unk34.y = 0.0f; + } + } else if (var_r31->unk00_s16 == 1) { + sp8 = temp_r28->unk00[var_r29]; + PSVECSubtract(&sp8, &var_r31->unk34, &sp8); + if (PSVECMag(&sp8) <= 1.0 + temp_f31) { + var_r23++; + var_r31->unk34 = temp_r28->unk00[var_r29]; + var_r31->unk00_s16++; + continue; + } + PSVECNormalize(&sp8, &sp8); + var_r31->unk08.x = sp8.x * temp_f31 + sind(var_r31->unk14.x); + var_r31->unk08.y = sp8.y * temp_f31; + var_r31->unk08.z = sp8.z * temp_f31; + PSVECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); + var_r31->unk14.x += 20.0f; + } else { + var_r23++; + } + if (var_r31->unk00_s16 >= 1) { + var_r27 = var_r31->unk40.r; + var_r27 += (var_r27 - 0xFF) / 20; + if (var_r27 > 0xFF) { + var_r31->unk40.r = 0xFF; + } else { + var_r31->unk40.r = var_r27; + } + temp_r25 = var_r31->unk40.g; + temp_r25 += (temp_r25 - 0xFF) / 20; + if (temp_r25 > 0xFF) { + var_r31->unk40.g = 0xFF; + } else { + var_r31->unk40.g = temp_r25; + } + temp_r24 = var_r31->unk40.b; + temp_r24 += (temp_r24 - 0x80) / 20; + if (temp_r24 > 0x80) { + var_r31->unk40.b = 0x80; + } else { + var_r31->unk40.b = temp_r24; + } + } + var_r31->unk2C -= 0.2f; + if (var_r31->unk2C < 5.0f) { + var_r31->unk2C = 5.0f; + } + var_r31->unk02++; + } + DCStoreRange(particle->unk_48, particle->unk_30 * sizeof(HsfanimStruct01)); + if (var_r23 >= particle->unk_30) { + particle->unk_00++; + } +} diff --git a/src/game/gamework.c b/src/game/gamework.c index 68c1783c..887d977b 100644 --- a/src/game/gamework.c +++ b/src/game/gamework.c @@ -212,12 +212,12 @@ u8 GWBoardPlayCountGet(s32 board) return GWGameStat.board_play_count[board]; } -void GWBoardMaxStarsSet(s32 board, s32 value) +void GWBoardMaxStarsSet(s32 board, s16 value) { GWGameStat.board_max_stars[board] = value; } -u16 GWBoardMaxStarsGet(s32 board) +s32 GWBoardMaxStarsGet(s32 board) { return GWGameStat.board_max_stars[board]; } @@ -227,7 +227,7 @@ void GWBoardMaxCoinsSet(s32 board, s32 value) GWGameStat.board_max_coins[board] = value; } -u16 GWBoardMaxCoinsGet(s32 board) +s32 GWBoardMaxCoinsGet(s32 board) { return GWGameStat.board_max_coins[board]; }