From f9636fe567e3c69718acb9401d55cd02870ee96e Mon Sep 17 00:00:00 2001 From: mrshigure Date: Sun, 5 May 2024 00:47:51 -0700 Subject: [PATCH] Matched most of REL/m402 + applying ext_math macros --- config/GMPE01_00/rels/m402Dll/symbols.txt | 398 ++--- include/game/chrman.h | 2 +- src/REL/m402Dll/main.c | 1966 +++++++++++++++++++++ src/REL/messDll/main.c | 32 +- src/game/board/boo.c | 54 +- src/game/board/boo_house.c | 12 +- src/game/board/char_wheel.c | 8 +- src/game/board/com.c | 4 +- src/game/board/item.c | 58 +- src/game/board/roll.c | 8 +- src/game/board/shop.c | 14 +- src/game/board/star.c | 6 +- src/game/window.c | 20 +- 13 files changed, 2277 insertions(+), 305 deletions(-) create mode 100755 src/REL/m402Dll/main.c diff --git a/config/GMPE01_00/rels/m402Dll/symbols.txt b/config/GMPE01_00/rels/m402Dll/symbols.txt index 5fa3679a..7976e2db 100644 --- a/config/GMPE01_00/rels/m402Dll/symbols.txt +++ b/config/GMPE01_00/rels/m402Dll/symbols.txt @@ -1,204 +1,204 @@ -fn_1_0 = .text:0x00000000; // type:function size:0x24 -fn_1_24 = .text:0x00000024; // type:function size:0x88 -fn_1_AC = .text:0x000000AC; // type:function size:0xA4 -fn_1_150 = .text:0x00000150; // type:function size:0x24 -fn_1_174 = .text:0x00000174; // type:function size:0x164 -fn_1_2D8 = .text:0x000002D8; // type:function size:0x13C -fn_1_414 = .text:0x00000414; // type:function size:0x58 -fn_1_46C = .text:0x0000046C; // type:function size:0x114 -fn_1_580 = .text:0x00000580; // type:function size:0x218 -fn_1_798 = .text:0x00000798; // type:function size:0x254 -fn_1_9EC = .text:0x000009EC; // type:function size:0x54 -fn_1_A40 = .text:0x00000A40; // type:function size:0x10C -fn_1_B4C = .text:0x00000B4C; // type:function size:0x6A8 -fn_1_11F4 = .text:0x000011F4; // type:function size:0x15C -fn_1_1350 = .text:0x00001350; // type:function size:0x8C -fn_1_13DC = .text:0x000013DC; // type:function size:0x334 -fn_1_1710 = .text:0x00001710; // type:function size:0x350 -fn_1_1A60 = .text:0x00001A60; // type:function size:0x2B8 -fn_1_1D18 = .text:0x00001D18; // type:function size:0x58 -fn_1_1D70 = .text:0x00001D70; // type:function size:0xB0 -fn_1_1E20 = .text:0x00001E20; // type:function size:0x104 -fn_1_1F24 = .text:0x00001F24; // type:function size:0x34 -fn_1_1F58 = .text:0x00001F58; // type:function size:0x6C -fn_1_1FC4 = .text:0x00001FC4; // type:function size:0x3F0 +fn_1_0 = .text:0x00000000; // type:function size:0x24 scope:local +fn_1_24 = .text:0x00000024; // type:function size:0x88 scope:local +fn_1_AC = .text:0x000000AC; // type:function size:0xA4 scope:local +fn_1_150 = .text:0x00000150; // type:function size:0x24 scope:local +fn_1_174 = .text:0x00000174; // type:function size:0x164 scope:local +fn_1_2D8 = .text:0x000002D8; // type:function size:0x13C scope:local +fn_1_414 = .text:0x00000414; // type:function size:0x58 scope:local +fn_1_46C = .text:0x0000046C; // type:function size:0x114 scope:local +fn_1_580 = .text:0x00000580; // type:function size:0x218 scope:local +fn_1_798 = .text:0x00000798; // type:function size:0x254 scope:local +fn_1_9EC = .text:0x000009EC; // type:function size:0x54 scope:local +fn_1_A40 = .text:0x00000A40; // type:function size:0x10C scope:local +fn_1_B4C = .text:0x00000B4C; // type:function size:0x6A8 scope:local +fn_1_11F4 = .text:0x000011F4; // type:function size:0x15C scope:local +fn_1_1350 = .text:0x00001350; // type:function size:0x8C scope:local +fn_1_13DC = .text:0x000013DC; // type:function size:0x334 scope:local +fn_1_1710 = .text:0x00001710; // type:function size:0x350 scope:local +fn_1_1A60 = .text:0x00001A60; // type:function size:0x2B8 scope:local +fn_1_1D18 = .text:0x00001D18; // type:function size:0x58 scope:local +fn_1_1D70 = .text:0x00001D70; // type:function size:0xB0 scope:local +fn_1_1E20 = .text:0x00001E20; // type:function size:0x104 scope:local +fn_1_1F24 = .text:0x00001F24; // type:function size:0x34 scope:local +fn_1_1F58 = .text:0x00001F58; // type:function size:0x6C scope:local +fn_1_1FC4 = .text:0x00001FC4; // type:function size:0x3F0 scope:local _prolog = .text:0x000023B4; // type:function size:0x54 scope:global _epilog = .text:0x00002408; // type:function size:0x4C scope:global -fn_1_2454 = .text:0x00002454; // type:function size:0x2F0 -fn_1_2744 = .text:0x00002744; // type:function size:0x64 -fn_1_27A8 = .text:0x000027A8; // type:function size:0xD8 -fn_1_2880 = .text:0x00002880; // type:function size:0xF0 -fn_1_2970 = .text:0x00002970; // type:function size:0x1C0 -fn_1_2B30 = .text:0x00002B30; // type:function size:0x28C -fn_1_2DBC = .text:0x00002DBC; // type:function size:0x380 -fn_1_313C = .text:0x0000313C; // type:function size:0xC8 -fn_1_3204 = .text:0x00003204; // type:function size:0xF8C -fn_1_4190 = .text:0x00004190; // type:function size:0xF4 -fn_1_4284 = .text:0x00004284; // type:function size:0x154 -fn_1_43D8 = .text:0x000043D8; // type:function size:0x1FF0 -fn_1_63C8 = .text:0x000063C8; // type:function size:0x490 -fn_1_6858 = .text:0x00006858; // type:function size:0x4 -fn_1_685C = .text:0x0000685C; // type:function size:0x258 -fn_1_6AB4 = .text:0x00006AB4; // type:function size:0x3B0 -fn_1_6E64 = .text:0x00006E64; // type:function size:0x1BC -fn_1_7020 = .text:0x00007020; // type:function size:0xC4 -fn_1_70E4 = .text:0x000070E4; // type:function size:0x86C -fn_1_7950 = .text:0x00007950; // type:function size:0x19C -fn_1_7AEC = .text:0x00007AEC; // type:function size:0x25C -fn_1_7D48 = .text:0x00007D48; // type:function size:0x4 -fn_1_7D4C = .text:0x00007D4C; // type:function size:0x134 -fn_1_7E80 = .text:0x00007E80; // type:function size:0x4 -fn_1_7E84 = .text:0x00007E84; // type:function size:0x1C4 -fn_1_8048 = .text:0x00008048; // type:function size:0x1D0 -fn_1_8218 = .text:0x00008218; // type:function size:0xE40 -fn_1_9058 = .text:0x00009058; // type:function size:0x1EC -fn_1_9244 = .text:0x00009244; // type:function size:0x8B0 -fn_1_9AF4 = .text:0x00009AF4; // type:function size:0xD0 +fn_1_2454 = .text:0x00002454; // type:function size:0x2F0 scope:local +fn_1_2744 = .text:0x00002744; // type:function size:0x64 scope:local +fn_1_27A8 = .text:0x000027A8; // type:function size:0xD8 scope:local +fn_1_2880 = .text:0x00002880; // type:function size:0xF0 scope:local +fn_1_2970 = .text:0x00002970; // type:function size:0x1C0 scope:local +fn_1_2B30 = .text:0x00002B30; // type:function size:0x28C scope:local +fn_1_2DBC = .text:0x00002DBC; // type:function size:0x380 scope:local +fn_1_313C = .text:0x0000313C; // type:function size:0xC8 scope:local +fn_1_3204 = .text:0x00003204; // type:function size:0xF8C scope:local +fn_1_4190 = .text:0x00004190; // type:function size:0xF4 scope:local +fn_1_4284 = .text:0x00004284; // type:function size:0x154 scope:local +fn_1_43D8 = .text:0x000043D8; // type:function size:0x1FF0 scope:local +fn_1_63C8 = .text:0x000063C8; // type:function size:0x490 scope:local +fn_1_6858 = .text:0x00006858; // type:function size:0x4 scope:local +fn_1_685C = .text:0x0000685C; // type:function size:0x258 scope:local +fn_1_6AB4 = .text:0x00006AB4; // type:function size:0x3B0 scope:local +fn_1_6E64 = .text:0x00006E64; // type:function size:0x1BC scope:local +fn_1_7020 = .text:0x00007020; // type:function size:0xC4 scope:local +fn_1_70E4 = .text:0x000070E4; // type:function size:0x86C scope:local +fn_1_7950 = .text:0x00007950; // type:function size:0x19C scope:local +fn_1_7AEC = .text:0x00007AEC; // type:function size:0x25C scope:local +fn_1_7D48 = .text:0x00007D48; // type:function size:0x4 scope:local +fn_1_7D4C = .text:0x00007D4C; // type:function size:0x134 scope:local +fn_1_7E80 = .text:0x00007E80; // type:function size:0x4 scope:local +fn_1_7E84 = .text:0x00007E84; // type:function size:0x1C4 scope:local +fn_1_8048 = .text:0x00008048; // type:function size:0x1D0 scope:local +fn_1_8218 = .text:0x00008218; // type:function size:0xE40 scope:local +fn_1_9058 = .text:0x00009058; // type:function size:0x1EC scope:local +ModuleProlog = .text:0x00009244; // type:function size:0x8B0 +fn_1_9AF4 = .text:0x00009AF4; // type:function size:0xD0 scope:local _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:double -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 data:double -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float -lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 data:float -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 data:float -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_data_0 = .data:0x00000000; // type:object size:0x10 -lbl_1_data_10 = .data:0x00000010; // type:object size:0xC data:4byte -lbl_1_data_1C = .data:0x0000001C; // type:object size:0xC -lbl_1_data_28 = .data:0x00000028; // type:object size:0xC data:4byte -lbl_1_data_34 = .data:0x00000034; // type:object size:0xC -lbl_1_data_40 = .data:0x00000040; // type:object size:0xC -lbl_1_data_4C = .data:0x0000004C; // type:object size:0x14 -lbl_1_data_60 = .data:0x00000060; // type:object size:0xC -lbl_1_data_6C = .data:0x0000006C; // type:object size:0xC -lbl_1_data_78 = .data:0x00000078; // type:object size:0x160 -lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x10 -lbl_1_data_1E8 = .data:0x000001E8; // type:object size:0xC -lbl_1_data_1F4 = .data:0x000001F4; // type:object size:0x4 data:4byte -lbl_1_data_1F8 = .data:0x000001F8; // type:object size:0x8 -lbl_1_data_200 = .data:0x00000200; // type:object size:0x18 -lbl_1_data_218 = .data:0x00000218; // type:object size:0x1C -lbl_1_data_234 = .data:0x00000234; // type:object size:0x190 -lbl_1_data_3C4 = .data:0x000003C4; // type:object size:0x14 -lbl_1_data_3D8 = .data:0x000003D8; // type:object size:0x1A data:string -lbl_1_data_3F2 = .data:0x000003F2; // type:object size:0x9 data:string -lbl_1_data_3FB = .data:0x000003FB; // type:object size:0x6 data:string -lbl_1_data_401 = .data:0x00000401; // type:object size:0x10 data:string -lbl_1_data_411 = .data:0x00000411; // type:object size:0x1F +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 scope:local data:double +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_144 = .rodata:0x00000144; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_154 = .rodata:0x00000154; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 scope:local data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x4 scope:local data:float +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_17C = .rodata:0x0000017C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_data_0 = .data:0x00000000; // type:object size:0x10 scope:local data:2byte +lbl_1_data_10 = .data:0x00000010; // type:object size:0xC scope:local data:float +lbl_1_data_1C = .data:0x0000001C; // type:object size:0xC scope:local data:float +lbl_1_data_28 = .data:0x00000028; // type:object size:0xC scope:local data:float +lbl_1_data_34 = .data:0x00000034; // type:object size:0xC scope:local data:float +lbl_1_data_40 = .data:0x00000040; // type:object size:0xC scope:local data:float +lbl_1_data_4C = .data:0x0000004C; // type:object size:0x4 scope:local +lbl_1_data_60 = .data:0x00000060; // type:object size:0xC scope:local data:float +lbl_1_data_6C = .data:0x0000006C; // type:object size:0xC scope:local data:float +lbl_1_data_78 = .data:0x00000078; // type:object size:0x160 scope:local +lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x10 scope:local +lbl_1_data_1E8 = .data:0x000001E8; // type:object size:0xC scope:local +lbl_1_data_1F4 = .data:0x000001F4; // type:object size:0x4 scope:local data:4byte +lbl_1_data_1F8 = .data:0x000001F8; // type:object size:0x8 scope:local +lbl_1_data_200 = .data:0x00000200; // type:object size:0x18 scope:local data:float +lbl_1_data_218 = .data:0x00000218; // type:object size:0x1C scope:local +lbl_1_data_234 = .data:0x00000234; // type:object size:0x190 scope:local +lbl_1_data_3C4 = .data:0x000003C4; // type:object size:0x14 scope:local +lbl_1_data_3D8 = .data:0x000003D8; // type:object size:0x1A scope:local data:string +lbl_1_data_3F2 = .data:0x000003F2; // type:object size:0x9 scope:local data:string +lbl_1_data_3FB = .data:0x000003FB; // type:object size:0x6 scope:local data:string +lbl_1_data_401 = .data:0x00000401; // type:object size:0x10 scope:local data:string +lbl_1_data_411 = .data:0x00000411; // type:object size:0x1D scope:local data:string jumptable_1_data_430 = .data:0x00000430; // type:object size:0x40 scope:local -lbl_1_data_470 = .data:0x00000470; // type:object size:0x17 data:string -lbl_1_data_487 = .data:0x00000487; // type:object size:0x1B data:string -lbl_1_data_4A2 = .data:0x000004A2; // type:object size:0x24 data:string -lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:float -lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:float -lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:float -lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte -lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x2 data:2byte -lbl_1_bss_16 = .bss:0x00000016; // type:object size:0xE -lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x2 data:2byte -lbl_1_bss_26 = .bss:0x00000026; // type:object size:0x2 data:2byte -lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:float -lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:float -lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:float -lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:float -lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x8 data:float -lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte -lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte -lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte -lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte -lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte -lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte -lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 data:4byte -lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x100 -lbl_1_bss_15C = .bss:0x0000015C; // type:object size:0x40 data:4byte -lbl_1_bss_19C = .bss:0x0000019C; // type:object size:0x4 data:float -lbl_1_bss_1A0 = .bss:0x000001A0; // type:object size:0x4 data:4byte -lbl_1_bss_1A4 = .bss:0x000001A4; // type:object size:0x4 data:4byte -lbl_1_bss_1A8 = .bss:0x000001A8; // type:object size:0x2 data:2byte -lbl_1_bss_1AA = .bss:0x000001AA; // type:object size:0x2 data:2byte -lbl_1_bss_1AC = .bss:0x000001AC; // type:object size:0x4 data:4byte -lbl_1_bss_1B0 = .bss:0x000001B0; // type:object size:0x4 data:4byte -lbl_1_bss_1B4 = .bss:0x000001B4; // type:object size:0x4 data:4byte -lbl_1_bss_1B8 = .bss:0x000001B8; // type:object size:0xC data:4byte -lbl_1_bss_1C4 = .bss:0x000001C4; // type:object size:0xC data:4byte -lbl_1_bss_1D0 = .bss:0x000001D0; // type:object size:0xC data:4byte -lbl_1_bss_1DC = .bss:0x000001DC; // type:object size:0xC data:4byte -lbl_1_bss_1E8 = .bss:0x000001E8; // type:object size:0x4 data:4byte -lbl_1_bss_1EC = .bss:0x000001EC; // type:object size:0x18 data:4byte -lbl_1_bss_204 = .bss:0x00000204; // type:object size:0xC data:4byte +lbl_1_data_470 = .data:0x00000470; // type:object size:0x17 scope:local data:string +lbl_1_data_487 = .data:0x00000487; // type:object size:0x1B scope:local data:string +lbl_1_data_4A2 = .data:0x000004A2; // type:object size:0x24 scope:local data:string +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 scope:local data:float +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 scope:local data:float +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 scope:local data:float +lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_16 = .bss:0x00000016; // type:object size:0xE scope:local +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_26 = .bss:0x00000026; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x100 scope:local +lbl_1_bss_15C = .bss:0x0000015C; // type:object size:0x40 scope:local data:4byte +lbl_1_bss_19C = .bss:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_bss_1A0 = .bss:0x000001A0; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_1A4 = .bss:0x000001A4; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_1A8 = .bss:0x000001A8; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_1AA = .bss:0x000001AA; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_1AC = .bss:0x000001AC; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_1B0 = .bss:0x000001B0; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_1B4 = .bss:0x000001B4; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_1B8 = .bss:0x000001B8; // type:object size:0xC scope:local data:4byte +lbl_1_bss_1C4 = .bss:0x000001C4; // type:object size:0xC scope:local data:4byte +lbl_1_bss_1D0 = .bss:0x000001D0; // type:object size:0xC scope:local data:4byte +lbl_1_bss_1DC = .bss:0x000001DC; // type:object size:0xC scope:local data:4byte +lbl_1_bss_1E8 = .bss:0x000001E8; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_1EC = .bss:0x000001EC; // type:object size:0x18 scope:local data:4byte +lbl_1_bss_204 = .bss:0x00000204; // type:object size:0xC scope:local data:4byte diff --git a/include/game/chrman.h b/include/game/chrman.h index 0dd38dc2..d305e3a6 100755 --- a/include/game/chrman.h +++ b/include/game/chrman.h @@ -10,7 +10,7 @@ void CharARAMClose(s16 character); void CharKill(s16 arg0); void CharKillAll(void); s16 CharModelCreate(s16 character, s16 lod); -s16 CharModelMotionCreate(s16 character, s32 arg1); +s16 CharModelMotionCreate(s16 character, s32 data_num); void CharModelMotionIndexSet(s16 character, s16 arg1, s32 arg2); void CharModelMotionKill(s16 character, u32 motion); void CharModelMotionDataClose(s16 character); diff --git a/src/REL/m402Dll/main.c b/src/REL/m402Dll/main.c new file mode 100755 index 00000000..1d1995e8 --- /dev/null +++ b/src/REL/m402Dll/main.c @@ -0,0 +1,1966 @@ +#include "REL/executor.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/esprite.h" +#include "game/flag.h" +#include "game/frand.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/process.h" +#include "game/sprite.h" +#include "game/wipe.h" + +#include "dolphin.h" +#include "ext_math.h" +#include "rel_sqrt_consts.h" + +#undef ABS +#define ABS(x) ((0 > (x)) ? -(x) : (x)) + +typedef struct unk_bss_204_struct { + /* 0x00 */ u16 unk00; + /* 0x02 */ s16 unk02; + /* 0x04 */ struct unk_bss_204_struct *unk04; + /* 0x08 */ struct unk_bss_204_struct *unk08; +} UnkBss204Struct; // Size 0xC + +typedef struct unk_bss_1ec_struct { + /* 0x00 */ HsfanimStruct00 *unk00; + /* 0x04 */ s32 *unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ struct unk_bss_1ec_struct *unk10; + /* 0x14 */ struct unk_bss_1ec_struct *unk14; +} UnkBss1ECStruct; // Size 0x18 + +typedef struct { + /* 0x00 */ u32 unk00; + /* 0x04 */ s16 unk04; + /* 0x06 */ char unk06[2]; // padding? +} UnkBss5CStruct; // Size 8 + +typedef struct { + /* 0x00 */ float unk00; + /* 0x04 */ float unk04; + /* 0x08 */ float unk08; + /* 0x0C */ float unk0C; + /* 0x10 */ float unk10; + /* 0x14 */ float unk14; + /* 0x18 */ float unk18; + /* 0x1C */ float unk1C; + /* 0x20 */ float unk20; + /* 0x24 */ float unk24; + /* 0x28 */ float unk28; + /* 0x2C */ float unk2C; + /* 0x30 */ float unk30; + /* 0x34 */ s32 unk34; + /* 0x38 */ s32 unk38; + /* 0x3C */ s32 unk3C; + /* 0x40 */ s32 unk40; + /* 0x44 */ s32 unk44; + /* 0x48 */ s32 unk48; + /* 0x4C */ s32 unk4C; + /* 0x50 */ s32 unk50; + /* 0x54 */ s32 unk54; + /* 0x58 */ s32 unk58; + /* 0x5C */ s32 unk5C; + /* 0x60 */ s32 unk60; +} UnkFn27A8Struct; // Size 0x64 + +typedef struct { + /* 0x00 */ float unk00; + /* 0x04 */ float unk04; + /* 0x08 */ float unk08; + /* 0x0C */ float unk0C; + /* 0x10 */ s32 unk10; +} UnkData234Struct; // Size 0x14 + +typedef struct { + /* 0x00 */ float unk00; + /* 0x04 */ float unk04; + /* 0x08 */ float unk08; + /* 0x0C */ float unk0C; + /* 0x10 */ float unk10; + /* 0x14 */ float unk14; + /* 0x18 */ s32 unk18; +} UnkFn6AB4Struct; // Size 0x1C + +typedef struct { + /* 0x00 */ Vec unk00; + /* 0x0C */ float unk0C; + /* 0x10 */ float unk10; + /* 0x14 */ float unk14; + /* 0x18 */ float unk18; + /* 0x1C */ float unk1C; + /* 0x20 */ float unk20; + /* 0x24 */ Vec unk24; + /* 0x30 */ float unk30; + /* 0x34 */ float unk34; + /* 0x38 */ s32 unk38; +} UnkFn70E4Struct; // Size 0x3C + +static void fn_1_0(void); +static void fn_1_24(u16 arg0, s16 arg1); +static s16 fn_1_AC(s16 arg0); +static void fn_1_150(void); +static void fn_1_174(s16 arg0, HsfanimStruct00 *arg1, s32 arg2, s32 arg3, s32 arg4, Vec *arg5, u8 arg6); +static void fn_1_2D8(void); +static void fn_1_414(void); +static s16 fn_1_46C(s32 arg0); +static void fn_1_580(s32 *arg0, s32 arg1, s32 arg2); +static void fn_1_798(s32 arg0); +static void fn_1_9EC(void); +static void fn_1_A40(void); +static void fn_1_B4C(float arg0, s32 arg1); +static void fn_1_11F4(float arg0, Vec *arg1, Vec *arg2, Vec *arg3); +static void fn_1_1350(Vec *arg0, Vec *arg1, Vec *arg2); +static s32 fn_1_13DC(float arg0, Vec *arg1); +static void fn_1_1710(float arg0, Vec *arg1); +static void fn_1_1A60(Vec *arg0, s16 arg1, Vec *arg2); +static void fn_1_1D18(s16 arg0, char *arg1, Vec *arg2); +static void fn_1_1D70(s16 arg0, char *arg1, Vec *arg2, Mtx arg3); +static float fn_1_1E20(float arg0, float arg1, float arg2); +static void fn_1_1F24(s32 arg0); +static void fn_1_1F58(s32 arg0); +static void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3); +static void fn_1_2454(void); +static void fn_1_2744(s16 arg0, GXColor *arg1); +static u16 fn_1_27A8(UnkFn27A8Struct *arg0); +static void fn_1_2880(UnkFn27A8Struct *arg0, omObjData *arg1); +static void fn_1_2970(UnkFn27A8Struct *arg0, omObjData *arg1, u8 arg2); +static void fn_1_2B30(UnkFn27A8Struct *arg0, omObjData *arg1, omObjData *arg2); +static u8 fn_1_2DBC(UnkFn27A8Struct *arg0, omObjData *arg1); +static void fn_1_313C(UnkFn27A8Struct *arg0, omObjData *arg1); +static void fn_1_3204(omObjData *arg0); +static void fn_1_4190(float arg0); +static void fn_1_4284(float arg0); +static void fn_1_43D8(omObjData *arg0); +static void fn_1_63C8(omObjData *arg0); +static void fn_1_6858(omObjData *arg0); +static void fn_1_685C(omObjData *arg0); +static void fn_1_6AB4(omObjData *arg0); +static void fn_1_6E64(omObjData *arg0); +static void fn_1_7020(omObjData *arg0); +static void fn_1_70E4(omObjData *arg0); +static void fn_1_7950(omObjData *arg0); +static void fn_1_7AEC(s32 arg0, Vec *arg1, Vec *arg2); +static void fn_1_7D48(omObjData *arg0); +static void fn_1_7D4C(omObjData *arg0); +static void fn_1_7E80(omObjData *arg0); +static void fn_1_7E84(omObjData *arg0); +static void fn_1_8048(void); +static void fn_1_8218(omObjData *arg0); +static void fn_1_9058(omObjData *arg0); +static void fn_1_9AF4(omObjData *arg0); + +static UnkBss204Struct lbl_1_bss_204; +static UnkBss1ECStruct lbl_1_bss_1EC; +static Process *lbl_1_bss_1E8; +static Vec lbl_1_bss_1DC; +static Vec lbl_1_bss_1D0; +static Vec lbl_1_bss_1C4; +static Vec lbl_1_bss_1B8; +static u32 lbl_1_bss_1B4; +static s32 lbl_1_bss_1B0; +static s32 lbl_1_bss_1AC; +static s16 lbl_1_bss_1AA; +static s16 lbl_1_bss_1A8; +static s32 lbl_1_bss_1A4; +static s32 lbl_1_bss_1A0; +static float lbl_1_bss_19C; +static s32 lbl_1_bss_15C[16]; +static UnkBss5CStruct lbl_1_bss_5C[32]; +static omObjData *lbl_1_bss_58; +static omObjData **lbl_1_bss_54; +static omObjData **lbl_1_bss_50; +static omObjData **lbl_1_bss_4C; +static omObjData **lbl_1_bss_48; +static omObjData **lbl_1_bss_44; +static omObjData **lbl_1_bss_40; +static u8 lbl_1_bss_3C_unused[4]; +static float lbl_1_bss_38; +static float lbl_1_bss_34; +static float lbl_1_bss_30; +static float lbl_1_bss_2C; +static float lbl_1_bss_28; +static s16 lbl_1_bss_26; +static s16 lbl_1_bss_24; +static s16 lbl_1_bss_16[7]; +static s16 lbl_1_bss_14; +static s32 lbl_1_bss_10; +static float lbl_1_bss_C; +static float lbl_1_bss_8; +static float lbl_1_bss_4; +static u8 lbl_1_bss_0[4]; + +static s16 lbl_1_data_0[] = { + 0, 1, 2, 3, 4, 5, 6, 7 +}; + +static Vec lbl_1_data_10 = { 0.0f, 2500.0f, 2200.0f }; +static Vec lbl_1_data_1C = { 0.0f, 1.0f, 0.0f }; +static Vec lbl_1_data_28 = { 0.0f, 388.0f, 0.0f }; +static Vec lbl_1_data_34 = { 0.0f, 2000.0f, 1000.0f }; +static Vec lbl_1_data_40 = { 0.0f, -2.0f, -1.0f }; +static GXColor lbl_1_data_4C = { 0xFF, 0xFF, 0xFF, 0xFF }; + +static Vec lbl_1_data_50_unused = { 0.0f, -1.0f, 0.0f }; +static u8 lbl_1_data_5C_unused[] = { 0xFF, 0xFF, 0xFF, 0xFF }; + +static Vec lbl_1_data_60 = { 0.0f, 4000.0f, 1000.0f }; +static Vec lbl_1_data_6C = { 0.0f, 0.0f, 0.0f }; + +static s32 lbl_1_data_78[8][11] = { + { + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 2), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 28), + DATA_MAKE_NUM(DATADIR_M402, 16), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 62), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 3), + DATA_MAKE_NUM(DATADIR_M402, 8), + DATA_MAKE_NUM(DATADIR_M402, 0), + DATA_MAKE_NUM(DATADIR_M402, 24), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 117), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 76) + }, + { + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 0), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 2), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 28), + DATA_MAKE_NUM(DATADIR_M402, 17), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 62), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 3), + DATA_MAKE_NUM(DATADIR_M402, 9), + DATA_MAKE_NUM(DATADIR_M402, 1), + DATA_MAKE_NUM(DATADIR_M402, 25), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 117), + DATA_MAKE_NUM(DATADIR_LUIGIMOT, 76) + }, + { + DATA_MAKE_NUM(DATADIR_PEACHMOT, 0), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 2), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 28), + DATA_MAKE_NUM(DATADIR_M402, 18), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 62), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 3), + DATA_MAKE_NUM(DATADIR_M402, 10), + DATA_MAKE_NUM(DATADIR_M402, 2), + DATA_MAKE_NUM(DATADIR_M402, 26), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 117), + DATA_MAKE_NUM(DATADIR_PEACHMOT, 76) + }, + { + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 0), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 2), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 28), + DATA_MAKE_NUM(DATADIR_M402, 19), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 62), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 3), + DATA_MAKE_NUM(DATADIR_M402, 11), + DATA_MAKE_NUM(DATADIR_M402, 3), + DATA_MAKE_NUM(DATADIR_M402, 27), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 117), + DATA_MAKE_NUM(DATADIR_YOSHIMOT, 76) + }, + { + DATA_MAKE_NUM(DATADIR_WARIOMOT, 0), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 2), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 28), + DATA_MAKE_NUM(DATADIR_M402, 20), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 62), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 3), + DATA_MAKE_NUM(DATADIR_M402, 12), + DATA_MAKE_NUM(DATADIR_M402, 4), + DATA_MAKE_NUM(DATADIR_M402, 28), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 117), + DATA_MAKE_NUM(DATADIR_WARIOMOT, 76) + }, + { + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 0), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 2), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 28), + DATA_MAKE_NUM(DATADIR_M402, 21), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 62), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 3), + DATA_MAKE_NUM(DATADIR_M402, 13), + DATA_MAKE_NUM(DATADIR_M402, 5), + DATA_MAKE_NUM(DATADIR_M402, 29), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 117), + DATA_MAKE_NUM(DATADIR_DONKEYMOT, 76) + }, + { + DATA_MAKE_NUM(DATADIR_DAISYMOT, 0), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 2), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 28), + DATA_MAKE_NUM(DATADIR_M402, 22), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 62), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 3), + DATA_MAKE_NUM(DATADIR_M402, 14), + DATA_MAKE_NUM(DATADIR_M402, 6), + DATA_MAKE_NUM(DATADIR_M402, 30), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 117), + DATA_MAKE_NUM(DATADIR_DAISYMOT, 76) + }, + { + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 0), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 2), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 28), + DATA_MAKE_NUM(DATADIR_M402, 23), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 62), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 3), + DATA_MAKE_NUM(DATADIR_M402, 15), + DATA_MAKE_NUM(DATADIR_M402, 7), + DATA_MAKE_NUM(DATADIR_M402, 31), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 117), + DATA_MAKE_NUM(DATADIR_WALUIGIMOT, 76) + } +}; + +static s32 lbl_1_data_1D8[] = { + DATA_MAKE_NUM(DATADIR_M402, 38), + DATA_MAKE_NUM(DATADIR_M402, 40), + DATA_MAKE_NUM(DATADIR_M402, 37), + DATA_MAKE_NUM(DATADIR_M402, 39) +}; + +static s32 lbl_1_data_1E8[] = { + DATA_MAKE_NUM(DATADIR_M402, 41), + DATA_MAKE_NUM(DATADIR_M402, 42), + DATA_MAKE_NUM(DATADIR_M402, 43) +}; + +static s32 lbl_1_data_1F4 = DATA_MAKE_NUM(DATADIR_M402, 44); + +static s32 lbl_1_data_1F8[] = { + DATA_MAKE_NUM(DATADIR_M402, 45), + DATA_MAKE_NUM(DATADIR_M402, 46) +}; + +static Vec lbl_1_data_200[] = { + { 450.0f, 290.0f, 0.0f }, + { -450.0f, 290.0f, 0.0f } +}; + +static s32 lbl_1_data_218[] = { + DATA_MAKE_NUM(DATADIR_M402, 48), + DATA_MAKE_NUM(DATADIR_M402, 50), + DATA_MAKE_NUM(DATADIR_M402, 47), + DATA_MAKE_NUM(DATADIR_M402, 49), + DATA_MAKE_NUM(DATADIR_M402, 51), + DATA_MAKE_NUM(DATADIR_M402, 52), + DATA_MAKE_NUM(DATADIR_M402, 53) +}; + +static UnkData234Struct lbl_1_data_234[] = { + { 0.0f, 0.0f, 0.0f, 0.0f, -1 }, + { 2.0f, 2.0f, 0.1f, 0.125f, 0x514 }, + { 2.0f, 2.0f, 0.2f, 0.25f, -1 }, + { 3.0f, 4.0f, 0.3f, 0.35f, 0x515 }, + { 3.0f, 4.0f, 0.4f, 0.45f, -1 }, + { 3.0f, 6.0f, 0.45f, 0.5125f, 0x516 }, + { 3.0f, 6.0f, 0.5f, 0.575f, -1 }, + { 3.0f, 6.0f, 0.55f, 0.6375f, -1 }, + { 3.0f, 6.0f, 0.6f, 0.7f, -1 }, + { 4.0f, 8.0f, 0.65f, 0.75f, 0x517 }, + { 4.0f, 8.0f, 0.7f, 0.8f, -1 }, + { 4.0f, 8.0f, 0.75f, 0.85f, -1 }, + { 4.0f, 8.0f, 0.8f, 0.9f, -1 }, + { 4.0f, 10.0f, 0.83f, 0.9166f, 0x518 }, + { 4.0f, 10.0f, 0.86f, 0.9333f, -1 }, + { 4.0f, 10.0f, 0.9f, 0.95f, -1 }, + { 4.0f, 10.0f, 0.93f, 0.9666f, -1 }, + { 4.0f, 10.0f, 0.96f, 0.9833f, -1 }, + { 4.0f, 10.0f, 1.0f, 1.0f, -1 }, + { 1.0f, 10.0f, 1.0f, 1.0f, -1 } +}; + +static s32 lbl_1_data_3C4[] = { + 0x00000514, + 0x00000515, + 0x00000516, + 0x00000517, + 0x00000518 +}; + +static void fn_1_0(void) { + lbl_1_bss_204.unk04 = NULL; + lbl_1_bss_204.unk08 = NULL; +} + +static void fn_1_24(u16 arg0, s16 arg1) { + UnkBss204Struct *temp_r31; + UnkBss204Struct *temp_r30; + UnkBss204Struct *temp_r29; + + temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r31), MEMORY_DEFAULT_NUM); + temp_r31->unk00 = arg0; + temp_r31->unk02 = arg1; + temp_r30 = &lbl_1_bss_204; + temp_r29 = temp_r30->unk08; + temp_r30->unk08 = temp_r31; + if (NULL != temp_r29) { + temp_r29->unk04 = temp_r31; + } + temp_r31->unk04 = temp_r30; + temp_r31->unk08 = temp_r29; +} + +static s16 fn_1_AC(s16 arg0) { + UnkBss204Struct *var_r31; + UnkBss204Struct *temp_r29; + UnkBss204Struct *temp_r30; + s16 temp_r28; + + var_r31 = lbl_1_bss_204.unk08; + while (NULL != var_r31) { + if (arg0 == var_r31->unk00) { + temp_r28 = var_r31->unk02; + temp_r29 = var_r31->unk04; + temp_r30 = var_r31->unk08; + temp_r29->unk08 = temp_r30; + if (NULL != temp_r30) { + temp_r30->unk04 = temp_r29; + } + HuMemDirectFree(var_r31); + return temp_r28; + } + var_r31 = var_r31->unk08; + } + return -1; +} + +static void fn_1_150(void) { + lbl_1_bss_1EC.unk10 = NULL; + lbl_1_bss_1EC.unk14 = NULL; +} + +static void fn_1_174(s16 arg0, HsfanimStruct00 *arg1, s32 arg2, s32 arg3, s32 arg4, Vec *arg5, u8 arg6) { + UnkBss1ECStruct *temp_r27; + UnkBss1ECStruct *var_r31; + UnkBss1ECStruct *temp_r28; + s32 i; + + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*var_r31), MEMORY_DEFAULT_NUM); + var_r31->unk00 = arg1; + var_r31->unk08 = arg3; + var_r31->unk0C = arg4; + var_r31->unk04 = HuMemDirectMallocNum(HEAP_SYSTEM, arg4 * sizeof(*var_r31->unk04), MEMORY_DEFAULT_NUM); + for (i = 0; i < arg4; i++, arg5++) { + var_r31->unk04[i] = Hu3DParManLink(arg0, arg1); + if (var_r31->unk04[i] >= 0) { + Hu3DParManAttrReset(var_r31->unk04[i], 1); + Hu3DParManPosSet(var_r31->unk04[i], arg5->x, arg5->y, arg5->z); + Hu3DParticleBlendModeSet(Hu3DParManModelIDGet(var_r31->unk04[i]), arg6); + Hu3DModelLayerSet(Hu3DParManModelIDGet(var_r31->unk04[i]), arg2); + } + } + temp_r28 = &lbl_1_bss_1EC; + temp_r27 = temp_r28->unk14; + temp_r28->unk14 = var_r31; + if (NULL != temp_r27) { + temp_r27->unk10 = var_r31; + } + var_r31->unk10 = temp_r28; + var_r31->unk14 = temp_r27; +} + +static void fn_1_2D8(void) { + UnkBss1ECStruct *var_r31; + UnkBss1ECStruct *temp_r28; + UnkBss1ECStruct *temp_r29; + s32 i; + + var_r31 = lbl_1_bss_1EC.unk14; + while (NULL != var_r31) { + var_r31->unk08--; + if (var_r31->unk08 == 0) { + for (i = 0; i < var_r31->unk0C; i++) { + if (var_r31->unk04[i] >= 0) { + Hu3DParManAttrSet(var_r31->unk04[i], 1); + } + } + } + temp_r28 = var_r31->unk10; + temp_r29 = var_r31->unk14; + if (-var_r31->unk00->unk00 > var_r31->unk08) { + for (i = 0; i < var_r31->unk0C; i++) { + if (var_r31->unk04[i] >= 0) { + Hu3DParManKill(var_r31->unk04[i]); + } + } + temp_r28->unk14 = temp_r29; + if (NULL != temp_r29) { + temp_r29->unk10 = temp_r28; + } + HuMemDirectFree(var_r31->unk04); + HuMemDirectFree(var_r31); + } + var_r31 = temp_r29; + } +} + +static void fn_1_414(void) { + s32 i; + + for (i = 0; i < 32; i++) { + lbl_1_bss_5C[i].unk00 = 0; + lbl_1_bss_5C[i].unk04 = -1; + } +} + +static s16 fn_1_46C(s32 arg0) { + s32 i; + + for (i = 0; i < 32; i++) { + if (arg0 == lbl_1_bss_5C[i].unk00) { + return Hu3DModelLink(lbl_1_bss_5C[i].unk04); + } + } + for (i = 0; i < 32; i++) { + if (lbl_1_bss_5C[i].unk00 == 0) { + lbl_1_bss_5C[i].unk00 = arg0; + lbl_1_bss_5C[i].unk04 = Hu3DModelCreateFile(arg0); + return lbl_1_bss_5C[i].unk04; + } + } + return Hu3DModelCreateFile(arg0); +} + +static void fn_1_580(s32 *arg0, s32 arg1, s32 arg2) { + s32 var_r30; + + espBankSet(arg0[arg1 + 1], 10); + espBankSet(arg0[arg1 + 4], 11); + if (36000 <= arg2) { // TODO: not matching. + arg2 = 35999; + } + var_r30 = arg2 / 3600; + arg2 -= var_r30 * 3600; + if (var_r30 > 9) { + var_r30 = 9; + } + espBankSet(arg0[arg1], var_r30); + var_r30 = arg2 / 60; + arg2 -= var_r30 * 60; + espBankSet(arg0[arg1 + 2], var_r30 / 10); + espBankSet(arg0[arg1 + 3], var_r30 % 10); + var_r30 = 101.5f * arg2 / 60.0f; + espBankSet(arg0[arg1 + 5], var_r30 / 10); + espBankSet(arg0[arg1 + 6], var_r30 % 10); +} + +static void fn_1_798(s32 arg0) { + lbl_1_bss_19C = 0.0f; + lbl_1_bss_1AC = lbl_1_bss_1B0; + GWMGRecordSet(arg0, lbl_1_bss_1AC); + fn_1_580(lbl_1_bss_15C, 7, lbl_1_bss_1B0); +} + +static void fn_1_9EC(void) { + s32 i; + + for (i = 0; i < 16; i++) { + espDispOn(lbl_1_bss_15C[i]); + } +} + +static void fn_1_A40(void) { + float temp_f31; + s32 i; + + if (0.0f <= lbl_1_bss_19C) { + lbl_1_bss_19C += 16.0f; + temp_f31 = 1.0 + 0.2f * sind(lbl_1_bss_19C); + for (i = 7; i <= 14; i++) { + espScaleSet(lbl_1_bss_15C[i], temp_f31, temp_f31); + } + } +} + +static void fn_1_B4C(float arg0, s32 arg1) { + float temp_f30; + float temp_f31; + s32 i; + + temp_f31 = 288.0f; + temp_f30 = arg0; + lbl_1_bss_15C[15] = espEntry(arg1, 0, 0); + espTPLvlSet(lbl_1_bss_15C[15], 0.5f); + espColorSet(lbl_1_bss_15C[15], 0, 0, 0); + espPosSet(lbl_1_bss_15C[15], temp_f31, temp_f30); + temp_f31 = 248.0f; + temp_f30 = arg0 - 8.0f; + lbl_1_bss_15C[14] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 55), 0, 0); + espPosSet(lbl_1_bss_15C[14], temp_f31 - 18.0f, temp_f30); + for (i = 7; i <= 13; i++) { + lbl_1_bss_15C[i] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 48), 0, 0); + espPosSet(lbl_1_bss_15C[i], temp_f31, temp_f30); + temp_f31 += 16.0f; + } + fn_1_580(lbl_1_bss_15C, 7, lbl_1_bss_1AC); + temp_f31 = 248.0f; + temp_f30 = arg0 + 8.0f; + for (i = 0; i <= 6; i++) { + lbl_1_bss_15C[i] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 49), 0, 0); + espPosSet(lbl_1_bss_15C[i], temp_f31, temp_f30); + temp_f31 += 16.0f; + } + fn_1_580(lbl_1_bss_15C, 0, 0); + for (i = 0; i < 16; i++) { + espDrawNoSet(lbl_1_bss_15C[i], 0); + espDispOff(lbl_1_bss_15C[i]); + espAttrSet(lbl_1_bss_15C[i], HUSPR_ATTR_NOANIM); + espPriSet(lbl_1_bss_15C[i], 0x80 + i); + } +} + +static void fn_1_11F4(float arg0, Vec *arg1, Vec *arg2, Vec *arg3) { + float temp_f31; + + if (1.0f < arg0) { + arg0 = 1.0f; + } + temp_f31 = sind(90.0f * arg0) * sind(90.0f * arg0); + arg3->x = arg1->x + temp_f31 * (arg2->x - arg1->x); + arg3->y = arg1->y + temp_f31 * (arg2->y - arg1->y); + arg3->z = arg1->z + temp_f31 * (arg2->z - arg1->z); +} + +static void fn_1_1350(Vec *arg0, Vec *arg1, Vec *arg2) { + Hu3DCameraPosSetV(1, arg0, arg1, arg2); + lbl_1_bss_1DC = *arg0; + lbl_1_bss_1C4 = *arg2; +} + +static s32 fn_1_13DC(float arg0, Vec *arg1) { + Vec sp18; + Vec spC; + + fn_1_11F4(arg0, &lbl_1_bss_1DC, &lbl_1_bss_1D0, &sp18); + fn_1_11F4(arg0, &lbl_1_bss_1C4, &lbl_1_bss_1B8, &spC); + Hu3DCameraPosSetV(1, &sp18, arg1, &spC); + if (1.0f <= arg0) { + return 1; + } else { + lbl_1_bss_1A0 = 1; + return 0; + } +} + +static void fn_1_1710(float arg0, Vec *arg1) { + Vec sp18; + Vec spC; + + fn_1_11F4(arg0, &lbl_1_bss_1DC, &lbl_1_bss_1D0, &sp18); + fn_1_11F4(arg0, &lbl_1_bss_1C4, &lbl_1_bss_1B8, &spC); + fn_1_1350(&sp18, arg1, &spC); + lbl_1_bss_1A0 = 1; +} + +static void fn_1_1A60(Vec *arg0, s16 arg1, Vec *arg2) { + Mtx sp1C; + Vec sp10; + float temp_f30; + float temp_f29; + float temp_f28; + float temp_f31; + CameraData *temp_r31; + s32 i; + + for (i = 0; i < 16; i++) { + if (arg1 & (1 << i)) { + break; + } + } + temp_r31 = &Hu3DCamera[i]; + C_MTXLookAt(sp1C, &temp_r31->pos, &temp_r31->up, &temp_r31->target); + PSMTXMultVec(sp1C, arg0, &sp10); + temp_f30 = sp10.z * (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2)) * temp_r31->aspect; + temp_f29 = sp10.z * (sind(temp_r31->fov / 2) / cosd(temp_r31->fov / 2)); + temp_f28 = 0.9f * temp_r31->viewport_x; + temp_f31 = 0.9f * temp_r31->viewport_w; + arg2->x = temp_f31 / 2 + sp10.x * ((temp_f31 / 2) / -temp_f30) + temp_f28; + arg2->y = temp_r31->viewport_h / 2 + sp10.y * ((temp_r31->viewport_h / 2) / temp_f29) + temp_r31->viewport_y; + arg2->z = 0.0f; +} + +static void fn_1_1D18(s16 arg0, char *arg1, Vec *arg2) { + Mtx sp10; + + Hu3DModelObjMtxGet(arg0, arg1, sp10); + arg2->x = sp10[0][3]; + arg2->y = sp10[1][3]; + arg2->z = sp10[2][3]; +} + +static void fn_1_1D70(s16 arg0, char *arg1, Vec *arg2, Mtx arg3) { + Mtx spC; + ModelData *var_r30; + + var_r30 = &Hu3DData[arg0]; + Hu3DModelObjMtxGet(arg0, arg1, spC); + PSMTXConcat(var_r30->unk_F0, spC, spC); + if (NULL != arg3) { + PSMTXCopy(spC, arg3); + } + arg2->x = spC[0][3]; + arg2->y = spC[1][3]; + arg2->z = spC[2][3]; +} + +static float fn_1_1E20(float arg0, float arg1, float arg2) { + float var_f31; + float var_f30; + + var_f31 = fmod(arg1 - arg0, 360.0); + if (0.0f > var_f31) { + var_f31 += 360.0f; + } + if (180.0f < var_f31) { + var_f31 -= 360.0f; + } + var_f30 = fmod(arg0 + var_f31 * arg2, 360.0); + if (0.0f > var_f30) { + var_f30 += 360.0f; + } + return var_f30; +} + +static void fn_1_1F24(s32 arg0) { + lbl_1_bss_1A4 = HuAudSeqPlay(arg0); +} + +static void fn_1_1F58(s32 arg0) { + if (lbl_1_bss_1A4 >= 0) { + if (arg0 < 0) { + arg0 = 1000; + } + HuAudSeqFadeOut(lbl_1_bss_1A4, arg0); + } + lbl_1_bss_1A4 = -1; +} + +static inline float fn_1_1FC4InlineFunc(float arg0, float arg1, float arg2) { + float var_f29; + float var_f27; + + var_f29 = fmod(arg1 - arg0, 360.0); + if (0.0f > var_f29) { + var_f29 += 360.0f; + } + if (180.0f < var_f29) { + var_f29 -= 360.0f; + } + var_f27 = fmod(arg0 + var_f29 * arg2, 360.0); + if (0.0f > var_f27) { + var_f27 += 360.0f; + } + return var_f27; +} + +static void fn_1_1FC4(Vec *arg0, float *arg1, s32 arg2, s32 arg3) { + Vec sp18; + float var_f28; + s32 var_r30; + + sp18.x = 0.0f; + sp18.y = 0.0f; + sp18.z = 0.0f; + sp18.x = arg2 / 4.0f; + sp18.z = -(float) arg3 / 4.0f; + var_r30 = 0; + var_f28 = VECMagXZ(&sp18); + if (0.5f <= var_f28) { + if (10.0f <= var_f28) { + sp18.x /= var_f28; + sp18.z /= var_f28; + var_f28 = 10.0f; + sp18.x = 10.0f * sp18.x; + sp18.z = 10.0f * sp18.z; + } + *arg1 = fn_1_1FC4InlineFunc(*arg1, atan2d(sp18.x, sp18.z), 0.4f); + if (8.0f <= var_f28) { + var_r30 = 2; + } else { + var_r30 = 1; + } + } + PSVECAdd((Vec*) &arg0, &sp18, (Vec*) &arg0); +} + +#include "src/REL/executor.c" + +static void fn_1_2454(void) { + HuSysVWaitSet(1); + if (HuPadBtnDown[0] & 0x400) { + lbl_1_bss_1B0 = -1; + } + print8(24, 32, 1.5f, "%f COUNT:%d MES:%d WIN:%d", lbl_1_bss_38, lbl_1_bss_1B4, lbl_1_bss_1AA, lbl_1_bss_26); + print8(24, 48, 1.5f, "%f %f %f", lbl_1_bss_4, lbl_1_bss_C, lbl_1_bss_8); + print8(24, 64, 1.5f, "%x %x", HuMemHeapSizeGet(HEAP_SYSTEM) - HuMemUsedMallocSizeGet(HEAP_SYSTEM), HuMemHeapSizeGet(HEAP_DATA) - HuMemUsedMallocSizeGet(HEAP_DATA)); + lbl_1_bss_8 -= HuPadSubStkX[0] / 59.0f; + lbl_1_bss_C -= (HuPadSubStkY[0] / 59.0f) * 4.0f; + lbl_1_bss_4 -= (HuPadTrigL[0] / 150.0f) * 4.0f; + lbl_1_bss_4 += (HuPadTrigR[0] / 150.0f) * 4.0f; +} + +static void fn_1_2744(s16 arg0, GXColor *arg1) { + s16 var_r30; + + var_r30 = Hu3DLLightCreateV(arg0, &lbl_1_data_34, &lbl_1_data_40, arg1); + Hu3DLLightStaticSet(arg0, var_r30, 1); +} + +static u16 fn_1_27A8(UnkFn27A8Struct *arg0) { + u16 var_r30; + + var_r30 = 0; + if (frandmod(arg0->unk34) == 0) { + var_r30 = 0x100; + } + if (--arg0->unk38 < 0) { + arg0->unk34 -= frandmod(3); + if (arg0->unk34 < 2) { + arg0->unk34 = 2; + } + arg0->unk38 = (arg0->unk3C >> 1) + frandmod(arg0->unk3C); + } + if (var_r30 == 0) { + if (++arg0->unk40 > 60) { + arg0->unk40 = 0; + var_r30 = 0x100; + } + } else { + arg0->unk40 = 0; + } + return var_r30; +} + +static void fn_1_2880(UnkFn27A8Struct *arg0, omObjData *arg1) { + arg0->unk4C = 2016; + arg0->unk60 = 0; + arg0->unk2C = 0.0f; + arg0->unk30 = 0.0f; + arg0->unk1C = 670.0f; + arg0->unk20 = 0.0f; + arg0->unk24 = arg0->unk1C; + arg0->unk08 = 0.0f; + arg0->unk0C = 0.0f; + arg0->unk10 = arg0->unk0C; + Hu3DModelAttrReset(arg1->model[0], 0x40000002); + Hu3DModelAttrSet(arg1->model[0], 0x40000001); + Hu3DMotionSet(arg1->model[0], arg1->motion[0]); +} + +static void fn_1_2970(UnkFn27A8Struct *arg0, omObjData *arg1, u8 arg2) { + Vec sp18; + Vec spC; + float temp_f31; + s32 i; + + fn_1_1D18(arg1->model[0], "motionC-stretch", &sp18); + for (i = 0; i < 8; i++) { + temp_f31 = arg0->unk1C + 50.0f; + spC.x = 20.0f * frandf() - 10.0f; + spC.y = arg0->unk18; + spC.z = 20.0f; + if (arg2 != 0) { + spC.y += 180.0f; + spC.z = 10.0f; + } + temp_f31 = 3.0f * (30.0f * frandf() - 15.0f); + spC.y += temp_f31 + 10.0f * (0.0f > temp_f31 ? -1 : 1); + fn_1_7AEC(arg0->unk54, &sp18, &spC); + } +} + +static void fn_1_2B30(UnkFn27A8Struct *arg0, omObjData *arg1, omObjData *arg2) { + arg0->unk50 = 0; + arg0->unk20 = (770.0f - arg0->unk1C) / 18.0f; + arg0->unk0C = Hu3DMotionTimeGet(arg2->model[0]); + Hu3DMotionTimeSet(lbl_1_bss_54[arg0->unk54]->model[0], 0.0f); + Hu3DMotionSpeedSet(arg1->model[0], 1.0f); + Hu3DModelAttrReset(arg1->model[0], 0x40000003); + Hu3DMotionShiftSet(arg1->model[0], arg1->motion[7], 0.0f, 8.0f, 0); + fn_1_2970(arg0, arg2, 1); + HuAudCharVoicePlay(arg0->unk58, 0x123); +} + +static u8 fn_1_2DBC(UnkFn27A8Struct *arg0, omObjData *arg1) { + Vec sp20; + float var_f30; + float var_f29; + + arg0->unk50++; + var_f30 = 90.0f * (arg0->unk50 / 18.0f); + var_f29 = arg0->unk0C * (1.0 - sind(var_f30)); + Hu3DMotionTimeSet(arg1->model[0], var_f29); + fn_1_1D18(arg1->model[0], "motionC-stretch", &sp20); + arg0->unk28 = sp20.y - arg0->unk14 + 388.0f; + arg0->unk1C += arg0->unk20; + if (18.0f < arg0->unk50) { + arg0->unk20 = (670.0f - arg0->unk1C) / 20.0f; + Hu3DModelAttrReset(arg1->model[0], 0x40000003); + Hu3DMotionSet(arg1->model[0], arg1->motion[2]); + Hu3DMotionTimeSet(arg1->model[0], 20.0f); + omVibrate(arg0->unk54, 12, 4, 2); + HuAudFXPlay(0x50F); + fn_1_2970(arg0, arg1, 0); + return 1; + } + return 0; +} + +static void fn_1_313C(UnkFn27A8Struct *arg0, omObjData *arg1) { + Vec sp8; + + arg0->unk1C += arg0->unk20; + if (670.0f > arg0->unk1C) { + arg0->unk1C = 670.0f; + } + fn_1_1D18(arg1->model[0], "motionC-stretch", &sp8); + arg0->unk28 = sp8.y - arg0->unk14 + 388.0f; +} + +static void fn_1_3204(omObjData *arg0) { + Vec sp48; + Vec sp3C; + Vec sp24; + Vec spC; + float temp_f31; + UnkFn27A8Struct *temp_r31; + omObjData *temp_r29; + UnkData234Struct *temp_r28; + u16 var_r26; + s32 temp_r20; + + temp_r31 = arg0->data; + if (lbl_1_bss_58->work[0] == 1007) { + switch (temp_r31->unk4C) { + case 2017: + temp_r31->unk4C = 2014; + break; + case 2018: + temp_r31->unk4C = 2015; + break; + default: + temp_r31->unk4C = 2010; + break; + } + Hu3DMotionSpeedSet(arg0->model[0], 1.0f); + if (lbl_1_bss_26 == temp_r31->unk54) { + temp_r20 = temp_r31->unk54; + if (!_CheckFlag(FLAG_ID_MAKE(1, 12))) { + GWPlayer[temp_r20].coin_win = 10; + } + } + arg0->func = fn_1_43D8; + return; + } + if (lbl_1_bss_58->work[0] == 1006) { + temp_r29 = lbl_1_bss_48[temp_r31->unk54]; + if (temp_r31->unk60 < 19) { + if (GWPlayerCfg[temp_r31->unk54].iscom) { + var_r26 = fn_1_27A8(temp_r31); + } else { + var_r26 = HuPadBtnDown[temp_r31->unk5C]; + } + if (temp_r31->unk60 == 0) { + if (var_r26 & 0x100) { + temp_r31->unk60 = 1; + temp_r31->unk2C = 0.0f; + temp_r31->unk30 = 0.0f; + temp_r31->unk08 = 0.0f; + temp_r31->unk0C = 0.0f; + temp_r31->unk10 = temp_r31->unk0C; + temp_r31->unk20 = 0.0f; + temp_r31->unk24 = temp_r31->unk1C; + HuAudFXPlay(0x50E); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[5], 0.0f, 2.0f, 0x40000001); + } + } else { + temp_r31->unk30 += 1.0f; + } + switch (temp_r31->unk4C) { + case 2016: + if (var_r26 & 0x100) { + temp_r28 = &lbl_1_data_234[temp_r31->unk60]; + if (temp_r28->unk10 >= 0 && 0.0f == temp_r31->unk2C) { + HuAudFXPlay(temp_r28->unk10); + } + temp_r31->unk2C += 1.0f; + Hu3DMotionTimeSet(lbl_1_bss_54[temp_r31->unk54]->model[0], temp_r28->unk04); + temp_f31 = temp_r28->unk08 - temp_r28[-1].unk08; + temp_f31 *= 1.0f - temp_r31->unk2C / temp_r28->unk00; + temp_r31->unk24 = 670.0f - 450.0f * (temp_r28->unk08 - temp_f31); + temp_f31 = temp_r28->unk0C - temp_r28[-1].unk0C; + temp_f31 *= 1.0f - temp_r31->unk2C / temp_r28->unk00; + temp_r31->unk10 = (temp_r28->unk0C - temp_f31) * Hu3DMotionMaxTimeGet(temp_r29->model[0]); + temp_f31 = temp_r31->unk60 / 20.0f; + temp_r31->unk20 = temp_f31 * (temp_r31->unk24 - temp_r31->unk1C); + temp_r31->unk08 = temp_f31 * (temp_r31->unk10 - temp_r31->unk0C); + if (temp_r28->unk00 <= temp_r31->unk2C) { + temp_r31->unk60++; + if (temp_r31->unk60 == 3) { + Hu3DMotionSpeedSet(arg0->model[0], 0.83f); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[6], 0.0f, 4.0f, 0x40000001); + } + if (temp_r31->unk60 == 9) { + Hu3DMotionSpeedSet(arg0->model[0], 1.0f); + } + temp_r31->unk2C = 0.0f; + temp_r31->unk30 = 0.0f; + if (temp_r31->unk60 >= 19) { + temp_r31->unk1C = temp_r31->unk24; + temp_r31->unk20 = 0.0f; + temp_r31->unk0C = temp_r31->unk10; + temp_r31->unk08 = 0.0f; + if (lbl_1_bss_26 < 0) { + lbl_1_bss_26 = temp_r31->unk54; + } else if (frandmod(100) > 50) { + lbl_1_bss_26 = temp_r31->unk54; + } + } + } + } + if (60.0f <= temp_r31->unk30) { + temp_r31->unk4C = 2017; + fn_1_2B30(temp_r31, arg0, temp_r29); + } else { + if (temp_r31->unk1C > temp_r31->unk24) { + temp_r31->unk1C += temp_r31->unk20; + if (temp_r31->unk1C <= temp_r31->unk24) { + temp_r31->unk1C = temp_r31->unk24; + } + } + if (temp_r31->unk0C < temp_r31->unk10) { + temp_r31->unk0C += temp_r31->unk08; + if (temp_r31->unk0C >= temp_r31->unk10) { + temp_r31->unk0C = temp_r31->unk10; + } + } + Hu3DMotionTimeSet(temp_r29->model[0], temp_r31->unk0C); + } + break; + case 2017: + if (fn_1_2DBC(temp_r31, temp_r29) != 0) { + temp_r31->unk4C = 2018; + temp_r31->unk50 = 120; + } + break; + case 2018: + fn_1_313C(temp_r31, temp_r29); + temp_r31->unk50 -= 1.0f; + if (temp_r31->unk50 == 32) { + Hu3DMotionSet(arg0->model[0], arg0->motion[9]); + Hu3DMotionShiftSet(temp_r29->model[0], temp_r29->motion[1], 0.0f, 20.0f, 0x40000002); + } + if (0.0f > temp_r31->unk50) { + fn_1_2880(temp_r31, arg0); + } + break; + default: + OSReport("*** player mode error(%d)!!\n", temp_r31->unk4C); + break; + } + if (lbl_1_bss_28 < temp_r31->unk1C) { + lbl_1_bss_28 = temp_r31->unk1C; + } + omSetTra(arg0, temp_r31->unk1C * sind(180.0f + temp_r31->unk18), temp_r31->unk28, temp_r31->unk1C * cosd(180.0f + temp_r31->unk18)); + } + } +} + +static void fn_1_4190(float arg0) { + Vec sp8; + s32 i; + + for (i = 0; i < 4; i++) { + sp8.x = 155.5 * sind(arg0); + sp8.y = 588.0f; + sp8.z = 155.5 * cosd(arg0); + fn_1_7AEC(5, &sp8, NULL); + arg0 += 90.0f; + } +} + +static void fn_1_4284(float arg0) { + Vec sp8; + s32 i; + + for (i = 0; i < 4; i++) { + sp8.x = 155.5 * sind(arg0); + sp8.y = 388.0f; + sp8.z = 155.5 * cosd(arg0); + sp8.x += 40.0f * frandf() - 20.0f; + sp8.z += 40.0f * frandf() - 20.0f; + fn_1_7AEC(4, &sp8, NULL); + arg0 += 90.0f; + } +} + +static void fn_1_43D8(omObjData *arg0) { + Vec spE8; + float temp_f31; + float temp_f23; + UnkFn27A8Struct *temp_r31; + omObjData *temp_r30; + s32 temp_r28; + + temp_r31 = arg0->data; + temp_r30 = lbl_1_bss_48[temp_r31->unk54]; + switch (temp_r31->unk4C) { + case 2000: + if (lbl_1_bss_58->work[0] == 1001) { + temp_r31->unk4C++; + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[1], 0.0f, 10.0f, 0); + } + break; + case 2001: + temp_r31->unk1C -= 1.0f; + if (Hu3DMotionEndCheck(arg0->model[0])) { + temp_r31->unk4C++; + temp_r31->unk08 = 0.0f; + temp_r31->unk04 = 2000.0f; + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[2], 0.0f, 10.0f, 0); + Hu3DMotionSet(temp_r30->model[0], temp_r30->motion[0]); + Hu3DModelAttrSet(temp_r30->model[0], 0x40000002); + Hu3DModelAttrReset(temp_r30->model[0], 0x40000001); + Hu3DModelAttrReset(temp_r30->model[0], 1); + } + break; + case 2002: + temp_r31->unk08 += 0.4f; + temp_r31->unk04 -= temp_r31->unk08; + if (temp_r31->unk48 != 0 && Hu3DMotionEndCheck(arg0->model[0])) { + temp_r31->unk48 = 0; + HuAudCharVoicePlay(temp_r31->unk58, 0x128); + } + if (786.0f > temp_r31->unk04) { + temp_r31->unk4C++; + if (temp_r31->unk54 == 0) { + HuAudFXPlay(0x50D); + } + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[3], 0.0f, 10.0f, 0); + } + break; + case 2003: + temp_r31->unk08 += 0.4f; + temp_r31->unk04 -= temp_r31->unk08; + if (536.0f > temp_r31->unk04) { + temp_r31->unk4C++; + temp_r31->unk50 = 0; + temp_r31->unk04 = 536.0f; + Hu3DModelAttrReset(temp_r30->model[0], 0x40000002); + spE8.x = temp_r31->unk00 * sind(180.0f + temp_r31->unk18); + spE8.y = temp_r31->unk04; + spE8.z = temp_r31->unk00 * cosd(180.0f + temp_r31->unk18); + fn_1_7AEC(6, &spE8, NULL); + omVibrate(temp_r31->unk54, 12, 0xC, 0); + } + break; + case 2004: + temp_r31->unk50++; + if (70.0f < temp_r31->unk50) { + temp_r31->unk4C++; + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[4], 0.0f, 10.0f, 0); + } + break; + case 2005: + temp_r31->unk50++; + if (130.0f == temp_r31->unk50) { + if (lbl_1_bss_10 != 0) { + lbl_1_bss_10 = 0; + HuAudFXPlay(0x510); + } + fn_1_2970(temp_r31, temp_r30, 0); + } + if (!Hu3DMotionEndCheck(arg0->model[0])) { + temp_r31->unk1C -= 2.3f; + } + if (Hu3DMotionEndCheck(temp_r30->model[0])) { + temp_r31->unk4C++; + temp_r31->unk50 = 0; + temp_r31->unk0C = 0.0f; + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[5], 0.0f, 10.0f, 0x40000001); + Hu3DMotionShiftSet(temp_r30->model[0], temp_r30->motion[1], 0.0f, 10.0f, 0x40000002); + } + break; + case 2006: + if (temp_r31->unk50++ > 10) { + temp_r31->unk4C++; + } + fn_1_1D18(temp_r30->model[0], "motionC-stretch", &spE8); + temp_r31->unk14 = spE8.y; + break; + case 2007: + temp_r31->unk1C -= 5.0f; + if (670.0f > temp_r31->unk1C) { + temp_f31 = (670.0f - temp_r31->unk1C) / 450.0f; + Hu3DMotionTimeSet(lbl_1_bss_54[temp_r31->unk54]->model[0], 10.0f * temp_f31); + temp_r28 = (s32) (10.0f * temp_f31) >> 1; + if (temp_r28 < 5 && temp_r31->unk44 != lbl_1_data_3C4[temp_r28]) { + temp_r31->unk44 = lbl_1_data_3C4[temp_r28]; + HuAudFXPlay(temp_r31->unk44); + } + } + if (470.0f > temp_r31->unk1C) { + temp_r31->unk4C++; + temp_r31->unk1C = 470.0f; + fn_1_2B30(temp_r31, arg0, temp_r30); + } else { + temp_r31->unk0C += 0.7f; + Hu3DMotionTimeSet(temp_r30->model[0], temp_r31->unk0C); + } + break; + case 2008: + if (fn_1_2DBC(temp_r31, temp_r30) != 0) { + temp_r31->unk4C++; + temp_r31->unk50 = 120; + } + break; + case 2009: + fn_1_313C(temp_r31, temp_r30); + temp_r31->unk50 -= 1.0f; + if (temp_r31->unk50 == 32) { + Hu3DMotionSet(arg0->model[0], arg0->motion[9]); + Hu3DMotionShiftSet(temp_r30->model[0], temp_r30->motion[1], 0.0f, 20.0f, 0x40000002); + } + if (0.0f > temp_r31->unk50) { + lbl_1_bss_58->work[0]++; + fn_1_2880(temp_r31, arg0); + arg0->func = fn_1_3204; + } + break; + case 2011: + if (temp_r31->unk54 == lbl_1_bss_26) { + temp_r31->unk4C = 2012; + temp_r31->unk20 = 10.5f; + Hu3DModelAttrReset(arg0->model[0], 0x40000003); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[8], 0.0f, 20.0f, 0); + Hu3DModelAttrReset(temp_r30->model[0], 0x40000003); + Hu3DMotionShiftSet(temp_r30->model[0], temp_r30->motion[2], 20.0f, 20.0f, 0); + HuAudFXPlay(0x513); + fn_1_4190(temp_r31->unk18); + } else { + temp_r31->unk4C = 2014; + fn_1_2B30(temp_r31, arg0, temp_r30); + } + break; + case 2012: + temp_r31->unk1C -= temp_r31->unk20; + if (0.0f > temp_r31->unk1C) { + temp_r31->unk1C = 0.0f; + } + temp_r31->unk20 -= 0.25f; + if (0.0f > temp_r31->unk20) { + temp_r31->unk4C++; + temp_r31->unk50 = 0; + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[9], 0.0f, 20.0f, 0); + } + if (4.5f <= temp_r31->unk20) { + fn_1_4284(temp_r31->unk18); + } + break; + case 2013: + temp_r31->unk50++; + temp_f23 = 90.0f * (temp_r31->unk50 / 20.0f); + temp_f31 = sind(temp_f23) * sind(temp_f23); + if (180.0f > temp_r31->unk18) { + temp_r31->unk24 = temp_r31->unk18 + -temp_r31->unk18 * temp_f31; + } else { + temp_r31->unk24 = temp_r31->unk18 + (360.0f - temp_r31->unk18) * temp_f31; + } + omSetRot(arg0, 0.0f, temp_r31->unk24, 0.0f); + if (20.0f <= temp_r31->unk50) { + temp_r31->unk4C = 2011; + } + break; + case 0x7DE: + if (fn_1_2DBC(temp_r31, temp_r30) != 0) { + temp_r31->unk4C++; + temp_r31->unk50 = 120; + } + break; + case 0x7DF: + fn_1_313C(temp_r31, temp_r30); + temp_r31->unk50 -= 1.0f; + if (temp_r31->unk50 == 32) { + Hu3DMotionSet(arg0->model[0], arg0->motion[9]); + Hu3DMotionShiftSet(temp_r30->model[0], temp_r30->motion[1], 0.0f, 20.0f, 0x40000002); + } + if (0.0f > temp_r31->unk50) { + temp_r31->unk4C = 2011; + } + break; + default: + OSReport("*** player mode error(%d)!!\n", temp_r31->unk4C); + break; + } + omSetTra(arg0, temp_r31->unk1C * sind(180.0f + temp_r31->unk18), temp_r31->unk28, temp_r31->unk1C * cosd(180.0f + temp_r31->unk18)); + omSetTra(temp_r30, temp_r31->unk00 * sind(180.0f + temp_r31->unk18), temp_r31->unk04, temp_r31->unk00 * cosd(180.0f + temp_r31->unk18)); + if (lbl_1_bss_58->work[0] < 1008 && temp_r31->unk54 == lbl_1_bss_26) { + lbl_1_bss_1B8.x = temp_r31->unk1C * sind(180.0f + temp_r31->unk18); + lbl_1_bss_1B8.y = 508.0f; + lbl_1_bss_1B8.z = temp_r31->unk1C * cosd(180.0f + temp_r31->unk18); + lbl_1_bss_1D0.x = lbl_1_bss_1B8.x; + lbl_1_bss_1D0.y = lbl_1_bss_1B8.y + 270.0f; + lbl_1_bss_1D0.z = lbl_1_bss_1B8.z + 850.0f; + } +} + +static void fn_1_63C8(omObjData *arg0) { + UnkFn27A8Struct *temp_r31; + s16 temp_r28; + s16 var_r27; + s32 i; + + temp_r31 = arg0->data; + temp_r31->unk54 = arg0->work[0]; + temp_r31->unk58 = GWPlayerCfg[temp_r31->unk54].character; + temp_r31->unk5C = GWPlayerCfg[temp_r31->unk54].pad_idx; + temp_r31->unk4C = 2000; + temp_r31->unk60 = 0; + temp_r31->unk28 = 388.0f; + temp_r31->unk2C = 0.0f; + temp_r31->unk30 = 0.0f; + temp_r31->unk0C = 0.0f; + temp_r31->unk00 = 895.0f; + temp_r31->unk04 = 536.0f; + temp_r31->unk44 = -1; + temp_r31->unk48 = 1; + temp_r31->unk34 = 10; + temp_r31->unk38 = 10; + temp_r31->unk3C = 10; + temp_r31->unk40 = 60; + arg0->model[0] = CharModelCreate(lbl_1_data_0[temp_r31->unk58], 4); + CharModelStepTypeSet(lbl_1_data_0[temp_r31->unk58], 0); + for (i = 0; i < 11; i++) { + arg0->motion[i] = CharModelMotionCreate(lbl_1_data_0[temp_r31->unk58], lbl_1_data_78[temp_r31->unk58][i]); + CharModelMotionSet(lbl_1_data_0[temp_r31->unk58], arg0->motion[i]); + } + temp_r28 = arg0->model[0]; + var_r27 = Hu3DLLightCreateV(temp_r28, &lbl_1_data_34, &lbl_1_data_40, &lbl_1_data_4C); + Hu3DLLightStaticSet(temp_r28, var_r27, 1); + Hu3DModelAttrSet(arg0->model[0], 1); + Hu3DModelAttrSet(arg0->model[0], 0x40000001); + Hu3DModelLayerSet(arg0->model[0], 3); + Hu3DMotionSet(arg0->model[0], arg0->motion[0]); + temp_r31->unk18 = 135.0f + 90.0f * temp_r31->unk54; + temp_r31->unk1C = 895.0f; + omSetTra(arg0, temp_r31->unk1C * sind(180.0f + temp_r31->unk18), temp_r31->unk28, temp_r31->unk1C * cosd(180.0f + temp_r31->unk18)); + omSetRot(arg0, 0.0f, temp_r31->unk18, 0.0f); + Hu3DModelShadowSet(arg0->model[0]); + Hu3DModelAttrReset(arg0->model[0], 1); + if (GWPlayerCfg[temp_r31->unk54].iscom) { + switch (GWPlayerCfg[temp_r31->unk54].diff) { + case 0: + temp_r31->unk34 = 26; + temp_r31->unk3C = 90; + break; + case 1: + temp_r31->unk34 = 24; + temp_r31->unk3C = 80; + break; + case 2: + temp_r31->unk34 = 22; + temp_r31->unk3C = 70; + break; + case 3: + default: + temp_r31->unk34 = 18; + temp_r31->unk3C = 40; + break; + } + temp_r31->unk38 = (temp_r31->unk3C >> 1) + frandmod(temp_r31->unk3C); + } + CharModelMotionDataClose(lbl_1_data_0[temp_r31->unk58]); + arg0->func = fn_1_43D8; +} + +static void fn_1_6858(omObjData *arg0) { +} + +static void fn_1_685C(omObjData *arg0) { + float temp_f31; + float temp_f29; + float temp_f30; + s32 temp_r29; + s32 i; + + temp_r29 = arg0->work[0]; + arg0->model[0] = Hu3DModelCreateFile(lbl_1_data_1D8[temp_r29]); + for (i = 0; i < 3; i++) { + arg0->motion[i] = Hu3DJointMotionFile(arg0->model[0], lbl_1_data_1E8[i]); + } + Hu3DModelAttrSet(arg0->model[0], 1); + Hu3DModelAttrSet(arg0->model[0], 0x40000002); + Hu3DModelLayerSet(arg0->model[0], 4); + Hu3DMotionSet(arg0->model[0], arg0->motion[0]); + temp_f31 = ((UnkFn27A8Struct*) lbl_1_bss_4C[temp_r29]->data)->unk18; + temp_f29 = ((UnkFn27A8Struct*) lbl_1_bss_4C[temp_r29]->data)->unk04; + temp_f30 = ((UnkFn27A8Struct*) lbl_1_bss_4C[temp_r29]->data)->unk00; + omSetTra(arg0, temp_f30 * sind(180.0f + temp_f31), temp_f29, temp_f30 * cosd(180.0f + temp_f31)); + omSetRot(arg0, 0.0f, temp_f31, 0.0f); + Hu3DModelShadowSet(arg0->model[0]); + arg0->func = fn_1_6858; +} + +static void fn_1_6AB4(omObjData *arg0) { + Vec *temp_r29; + UnkFn6AB4Struct *temp_r31; + float temp_f31; + + temp_r29 = &lbl_1_data_200[arg0->work[0]]; + temp_r31 = arg0->data; + switch (temp_r31->unk18) { + case 3000: + temp_r31->unk14 -= 1.0f; + if (0.0f > temp_r31->unk14 && frandmod(20) == 0) { + temp_r31->unk18 = 3001; + temp_r31->unk0C = 360.0f * frandf(); + temp_r31->unk10 = 10.0f; + HuAudFXPlay(0x512); + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[0], 0.0f, 20.0f, 0); + } + break; + case 3001: + temp_r31->unk00 += sind(temp_r31->unk0C); + temp_r31->unk08 += cosd(temp_r31->unk0C); + temp_f31 = temp_r31->unk00 - temp_r29->x; + if (50.0f < ABS(temp_f31)) { + temp_r31->unk00 = temp_r29->x + 50.0f * (0.0f > temp_f31 ? -1 : 1); + } + temp_f31 = temp_r31->unk08 - temp_r29->z; + if (50.0f < ABS(temp_f31)) { + temp_r31->unk08 = temp_r29->z + 50.0f * (0.0f > temp_f31 ? -1 : 1); + } + temp_r31->unk04 += temp_r31->unk10; + temp_r31->unk10 -= 0.5f; + if (temp_r29->y > temp_r31->unk04) { + temp_r31->unk18 = 3000; + temp_r31->unk14 = 20.0f; + temp_r31->unk04 = temp_r29->y; + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[1], 0.0f, 20.0f, 0); + } + break; + } + omSetTra(arg0, temp_r31->unk00, temp_r31->unk04, temp_r31->unk08); + omSetRot(arg0, 0.0f, temp_r31->unk0C, 0.0f); +} + +static void fn_1_6E64(omObjData *arg0) { + Vec *temp_r29; + UnkFn6AB4Struct *temp_r30; + s32 i; + + temp_r29 = &lbl_1_data_200[arg0->work[0]]; + temp_r30 = arg0->data; + arg0->model[0] = Hu3DModelCreateFile(lbl_1_data_1F4); + for (i = 0; i < 2; i++) { + arg0->motion[i] = Hu3DJointMotionFile(arg0->model[0], lbl_1_data_1F8[i]); + } + Hu3DModelAttrSet(arg0->model[0], 1); + Hu3DModelLayerSet(arg0->model[0], 5); + Hu3DMotionSet(arg0->model[0], arg0->motion[1]); + temp_r30->unk18 = 3000; + temp_r30->unk14 = 0.0f; + temp_r30->unk00 = temp_r29->x; + temp_r30->unk04 = temp_r29->y; + temp_r30->unk08 = temp_r29->z; + temp_r30->unk0C = 360.0f * frandf(); + omSetTra(arg0, temp_r30->unk00, temp_r30->unk04, temp_r30->unk08); + omSetRot(arg0, 0.0f, temp_r30->unk0C, 0.0f); + Hu3DModelShadowSet(arg0->model[0]); + Hu3DModelAttrReset(arg0->model[0], 0x40000002); + Hu3DModelAttrReset(arg0->model[0], 1); + arg0->func = fn_1_6AB4; +} + +static void fn_1_7020(omObjData *arg0) { + Hu3DModelAttrSet(arg0->model[0], 1); + fn_1_24(arg0->work[0], arg0->model[0]); + omDelObjEx(lbl_1_bss_1E8, arg0); + lbl_1_bss_24--; +} + +static void fn_1_70E4(omObjData *arg0) { + Mtx sp18; + Vec spC; + float var_f27; + float temp_f26; + float temp_f30; + float temp_f31; + UnkFn70E4Struct *temp_r31; + + temp_r31 = arg0->data; + switch (arg0->work[0]) { + case 0: + case 1: + case 2: + case 3: + var_f27 = temp_r31->unk24.z; + spC.x = 0.0f; + spC.y = 0.0f; + spC.z = var_f27; + temp_r31->unk24.z *= 0.92f; + PSMTXIdentity(sp18); + mtxRot(sp18, temp_r31->unk24.x, temp_r31->unk24.y, 0.0f); + PSMTXMultVec(sp18, &spC, &spC); + PSVECAdd(&spC, &temp_r31->unk00, &temp_r31->unk00); + omSetTra(arg0, temp_r31->unk00.x, temp_r31->unk00.y, temp_r31->unk00.z); + Hu3DModelTPLvlSet(arg0->model[0], temp_r31->unk30); + temp_r31->unk30 -= 0.02f; + if (0.1f > temp_r31->unk30) { + fn_1_7020(arg0); + } + break; + case 4: + temp_r31->unk00.y += temp_r31->unk30; + if (390.0f >= temp_r31->unk00.y) { + temp_r31->unk00.y = 390.0f; + } + omSetTra(arg0, temp_r31->unk00.x, temp_r31->unk00.y, temp_r31->unk00.z); + if (390.0f >= temp_r31->unk00.y) { + break; + } + temp_r31->unk0C += 8.0f + frandmod(8); + temp_r31->unk10 += 8.0f + frandmod(8); + temp_r31->unk14 += 8.0f + frandmod(8); + omSetRot(arg0, temp_r31->unk0C, temp_r31->unk10, temp_r31->unk14); + if (0.0f < temp_r31->unk30) { + temp_r31->unk30 -= 0.3f; + break; + } + if (0.0f == temp_r31->unk34) { + temp_r31->unk34 = 0.003f + 0.006f * frandf(); + } + temp_r31->unk30 -= temp_r31->unk34; + temp_r31->unk00.x += temp_r31->unk24.x; + temp_r31->unk00.z += temp_r31->unk24.z; + if (!(lbl_1_bss_1B4 & 3)) { + temp_r31->unk24.x = 6.0f * frandf() - 3.0f; + temp_r31->unk24.z = 6.0f * frandf() - 3.0f; + } + break; + case 5: + if (Hu3DMotionEndCheck(arg0->model[0])) { + fn_1_7020(arg0); + } + break; + case 6: + spC = lbl_1_data_10; + temp_f26 = Hu3DMotionMaxTimeGet(arg0->model[0]); + temp_f31 = 1.0f - Hu3DMotionTimeGet(arg0->model[0]) / temp_f26; + spC.x += 100.0f * temp_f31 * frandf() * (frandmod(100) > 50 ? 1.0f : -1.0f); + spC.z += 100.0f * temp_f31 * frandf() * (frandmod(100) > 50 ? 1.0f : -1.0f); + Hu3DCameraPosSetV(1, &spC, &lbl_1_data_1C, &lbl_1_data_28); + lbl_1_bss_1DC = spC; + lbl_1_bss_1C4 = lbl_1_data_28; + temp_f30 = 0.5f * Hu3DMotionMaxTimeGet(arg0->model[0]); + if (temp_f30 < Hu3DMotionTimeGet(arg0->model[0])) { + temp_f31 = 1.0f - (Hu3DMotionTimeGet(arg0->model[0]) - temp_f30) / temp_f30; + Hu3DModelTPLvlSet(arg0->model[0], temp_f31); + temp_f31 = 1.0f - temp_f31; + omSetSca(arg0, temp_r31->unk18 + temp_f31, temp_r31->unk1C + temp_f31, temp_r31->unk20 + temp_f31); + } + if (Hu3DMotionEndCheck(arg0->model[0])) { + Hu3DCameraPosSetV(1, &lbl_1_data_10, &lbl_1_data_1C, &lbl_1_data_28); + lbl_1_bss_1DC = lbl_1_data_10; + lbl_1_bss_1C4 = lbl_1_data_28; + fn_1_7020(arg0); + } + break; + default: + OSReport("effect id error!!(%d)\n", arg0->work[0]); + break; + } +} + +static void fn_1_7950(omObjData *arg0) { + UnkFn70E4Struct *temp_r30; + s16 var_r25; + + temp_r30 = arg0->data; + temp_r30->unk38--; + if (temp_r30->unk38 <= 0) { + var_r25 = fn_1_AC(arg0->work[0]); + if (var_r25 < 0) { + arg0->model[0] = Hu3DModelLink(lbl_1_bss_16[arg0->work[0]]); + } else { + arg0->model[0] = var_r25; + } + Hu3DMotionTimeSet(arg0->model[0], 0.0f); + Hu3DModelAttrSet(arg0->model[0], 1); + Hu3DModelLayerSet(arg0->model[0], 2); + omSetTra(arg0, temp_r30->unk00.x, temp_r30->unk00.y, temp_r30->unk00.z); + omSetRot(arg0, temp_r30->unk0C, temp_r30->unk10, temp_r30->unk14); + omSetSca(arg0, temp_r30->unk18, temp_r30->unk1C, temp_r30->unk20); + Hu3DModelAttrReset(arg0->model[0], 0x40000003); + Hu3DModelAttrReset(arg0->model[0], 1); + arg0->func = fn_1_70E4; + } +} + +static void fn_1_7AEC(s32 arg0, Vec *arg1, Vec *arg2) { + omObjData *temp_r3; + UnkFn70E4Struct *temp_r31; + + if (lbl_1_bss_24 < 300) { + lbl_1_bss_24++; + temp_r3 = omAddObjEx(lbl_1_bss_1E8, 105, 1, 1, 5, fn_1_7950); + temp_r3->work[0] = arg0; + temp_r3->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r31), MEMORY_DEFAULT_NUM); + temp_r31 = temp_r3->data; + temp_r31->unk0C = 0.0f; + temp_r31->unk10 = 0.0f; + temp_r31->unk14 = 0.0f; + temp_r31->unk18 = 1.0f; + temp_r31->unk1C = 1.0f; + temp_r31->unk20 = 1.0f; + temp_r31->unk24.x = 0.0f; + temp_r31->unk24.y = 0.0f; + temp_r31->unk24.z = 0.0f; + temp_r31->unk00 = *arg1; + if (NULL != arg2) { + temp_r31->unk24 = *arg2; + } + temp_r31->unk38 = frandmod(10); + switch (arg0) { + case 0: + case 1: + case 2: + case 3: + temp_r31->unk30 = 1.0f; + break; + case 4: + temp_r31->unk30 = 12.0f + 2.0f * frandf(); + temp_r31->unk34 = 0.0f; + temp_r31->unk18 = 8.0f; + temp_r31->unk1C = 8.0f; + temp_r31->unk20 = 8.0f; + break; + case 5: + temp_r31->unk18 = 4.0f; + temp_r31->unk1C = 4.0f; + temp_r31->unk20 = 4.0f; + break; + } + } +} + +static void fn_1_7D48(omObjData *arg0) { +} + +static void fn_1_7D4C(omObjData *arg0) { + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M402, 35)); + Hu3DModelAttrSet(arg0->model[0], 1); + Hu3DModelAttrSet(arg0->model[0], 0x40000002); + Hu3DModelLayerSet(arg0->model[0], 0); + omSetTra(arg0, 0.0f, 0.0f, 0.0f); + omSetRot(arg0, 0.0f, 270.0f + 90.0f * arg0->work[0], 0.0f); + Hu3DModelShadowMapSet(arg0->model[0]); + Hu3DModelAttrReset(arg0->model[0], 1); + arg0->func = fn_1_7D48; +} + +static void fn_1_7E80(omObjData *arg0) { +} + +static void fn_1_7E84(omObjData *arg0) { + float temp_f31; + + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M402, 36)); + Hu3DModelAttrSet(arg0->model[0], 1); + Hu3DModelAttrSet(arg0->model[0], 0x40000001); + Hu3DModelAttrReset(arg0->model[0], 0x40000002); + Hu3DModelLayerSet(arg0->model[0], 1); + temp_f31 = 135.0f + 90.0f * arg0->work[0]; + omSetTra(arg0, 155.5 * sind(temp_f31), 0.0f, 155.5 * cosd(temp_f31)); + omSetRot(arg0, 0.0f, 0.0f, 0.0f); + Hu3DModelAttrReset(arg0->model[0], 1); + arg0->func = fn_1_7E80; +} + +static inline void fn_1_8048InlineFunc(Vec *arg0, float arg1, float arg2, float arg3) { + arg0->x = arg1; + arg0->y = arg2; + arg0->z = arg3; +} + +static void fn_1_8048(void) { + Vec sp14; + Vec sp8; + + lbl_1_bss_38 += lbl_1_bss_34; + if (360.0f < lbl_1_bss_38) { + lbl_1_bss_34 -= 0.2f; + if (0.0f > lbl_1_bss_34) { + lbl_1_bss_34 = 0.0f; + } + } + sp14.x = 2000.0 * cosd(lbl_1_bss_38); + sp14.y = 2000.0 * sind(lbl_1_bss_38); + sp14.z = 0.0f; + fn_1_8048InlineFunc(&sp8, -sp14.x, -sp14.y, -sp14.z); + Hu3DGLightPosSetV(lbl_1_bss_14, &sp14, &sp8); +} + +static void fn_1_8218(omObjData *arg0) { + Vec sp38; + float temp_f26; + omObjData *temp_r30; + + if (omSysExitReq != 0) { + fn_1_1F58(-1); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_9AF4; + } + lbl_1_bss_1B4++; + switch (arg0->work[0]) { + case 1000: + if (WipeStatGet() == 0) { + arg0->work[0]++; + } + break; + case 1001: + case 1002: + case 1003: + case 1004: + break; + case 1005: + if (lbl_1_bss_1AA < 0) { + lbl_1_bss_1AA = MGSeqCreate(3, 0); + } else { + if (lbl_1_bss_1A4 < 0 && (MGSeqStatGet(lbl_1_bss_1AA) & 0x10)) { + lbl_1_bss_1A4 = HuAudSeqPlay(0x46); + } + if (MGSeqStatGet(lbl_1_bss_1AA) == 0) { + arg0->work[0]++; + lbl_1_bss_1B0 = 1800; + lbl_1_bss_1A8 = MGSeqCreate(1, lbl_1_bss_1B0 / 60, -1, -1); + lbl_1_bss_1AA = -1; + } + } + break; + case 1006: + MGSeqParamSet(lbl_1_bss_1A8, 1, (lbl_1_bss_1B0 + 59) / 60); + lbl_1_bss_1B0--; + if (lbl_1_bss_1B0 < 0 || lbl_1_bss_26 >= 0) { + lbl_1_bss_1B0 = 1800; + lbl_1_bss_2C = 0.0f; + arg0->work[0] = 1007; + } + if (670.0f <= lbl_1_bss_28) { + lbl_1_bss_28 = 670.0f; + } + temp_f26 = 2.5f * (670.0f - lbl_1_bss_28); + sp38 = lbl_1_data_10; + sp38.y = lbl_1_bss_1DC.y + (lbl_1_data_10.y - temp_f26 - lbl_1_bss_1DC.y) / 3.0f; + sp38.z = lbl_1_bss_1DC.z + (lbl_1_data_10.z - temp_f26 - lbl_1_bss_1DC.z) / 3.0f; + fn_1_1350(&sp38, &lbl_1_data_1C, &lbl_1_data_28); + lbl_1_bss_28 = 0.0f; + break; + case 1007: + if (lbl_1_bss_1AA < 0) { + MGSeqParamSet(lbl_1_bss_1A8, 2, -1); + lbl_1_bss_1A8 = -1; + lbl_1_bss_1AA = MGSeqCreate(3, 1); + fn_1_1F58(100); + } else { + lbl_1_bss_2C += 1.0f; + if (90.0f >= lbl_1_bss_2C) { + fn_1_13DC(lbl_1_bss_2C / 90.0f, &lbl_1_data_1C); + } + if (MGSeqStatGet(lbl_1_bss_1AA) == 0) { + arg0->work[0]++; + lbl_1_bss_1AA = -1; + lbl_1_bss_2C = 0.0f; + } + } + break; + case 1008: + if (lbl_1_bss_1AA < 0) { + if (lbl_1_bss_26 < 0) { + lbl_1_bss_1AA = MGSeqCreate(3, 2); + HuAudSStreamPlay(4); + } else { + lbl_1_bss_1AA = MGSeqCreate(5, 3, GWPlayerCfg[lbl_1_bss_26].character, -1, -1, -1); + temp_r30 = lbl_1_bss_4C[lbl_1_bss_26]; + Hu3DMotionShiftSet(temp_r30->model[0], temp_r30->motion[10], 0.0f, 20.0f, 0); + HuAudSStreamPlay(1); + } + } else { + lbl_1_bss_2C += 1.0f; + if (lbl_1_bss_26 >= 0 && 110.0f == lbl_1_bss_2C) { + Hu3DModelAttrSet(arg0->model[1], 1); + Hu3DModelAttrReset(arg0->model[2], 0x40000002); + Hu3DModelAttrReset(arg0->model[2], 1); + Hu3DMotionTimeSet(arg0->model[2], 0.0f); + Hu3DMotionSpeedSet(arg0->model[2], 3.0f); + } + if (210.0f < lbl_1_bss_2C && MGSeqStatGet(lbl_1_bss_1AA) == 0) { + fn_1_1F58(-1); + lbl_1_bss_1AA = -1; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_9AF4; + } + } + break; + default: + OSReport("*** main mode error(%d)!!\n", arg0->work[0]); + break; + } + lbl_1_bss_30 -= 1.0f; + if (0.0f == lbl_1_bss_30) { + Hu3DModelAttrSet(arg0->model[1], 1); + Hu3DModelAttrReset(arg0->model[2], 0x40000002); + Hu3DModelAttrReset(arg0->model[2], 1); + Hu3DMotionTimeSet(arg0->model[2], 0.0f); + Hu3DMotionSpeedSet(arg0->model[2], 3.0f); + } + if (0.0f > lbl_1_bss_30) { + lbl_1_bss_30 = -1.0f; + fn_1_8048(); + if (Hu3DMotionEndCheck(arg0->model[2])) { + Hu3DModelAttrReset(arg0->model[1], 1); + Hu3DModelAttrSet(arg0->model[2], 1); + } + } +} + +static void fn_1_9058(omObjData *arg0) { + s16 temp_r29; + s16 temp_r28; + s32 i; + + arg0->work[0] = 1000; + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M402, 32)); + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M402, 33)); + arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M402, 34)); + for (i = 0; i < 3; i++) { + Hu3DModelAttrSet(arg0->model[i], 1); + Hu3DModelAttrSet(arg0->model[i], 0x40000002); + Hu3DModelLayerSet(arg0->model[i], 0); + Hu3DModelPosSet(arg0->model[i], 0.0f, 0.0f, 0.0f); + } + Hu3DModelReflectTypeSet(arg0->model[0], 3); + Hu3DModelReflectTypeSet(arg0->model[1], 3); + Hu3DModelReflectTypeSet(arg0->model[2], 3); + temp_r29 = arg0->model[0]; + temp_r28 = Hu3DLLightCreateV(temp_r29, &lbl_1_data_34, &lbl_1_data_40, &lbl_1_data_4C); + Hu3DLLightStaticSet(temp_r29, temp_r28, 1); + Hu3DModelAttrReset(arg0->model[0], 1); + Hu3DModelAttrReset(arg0->model[1], 1); + Hu3DModelShadowMapSet(arg0->model[0]); + HuAudFXPlay(0x519); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_8218; +} + +void ModuleProlog(void) { + Vec sp20; + omObjData *temp_r30; + s32 i; + + OSReport("******* M402 ObjectSetup *********\n"); + lbl_1_bss_1E8 = omInitObjMan(400, 0x2000); + omGameSysInit(lbl_1_bss_1E8); + lbl_1_bss_1B4 = 0; + lbl_1_bss_1AA = -1; + lbl_1_bss_1A8 = -1; + lbl_1_bss_26 = -1; + lbl_1_bss_1A4 = -1; + lbl_1_bss_10 = 1; + lbl_1_bss_8 = 0.0f; + lbl_1_bss_C = 2200.0f; + lbl_1_bss_4 = 2500.0f; + lbl_1_bss_1D0 = lbl_1_data_10; + lbl_1_bss_1B8 = lbl_1_data_28; + Hu3DReflectNoSet(0); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraPerspectiveSet(1, 30.0f, 20.0f, 20000.0f, 1.2f); + fn_1_1350(&lbl_1_data_10, &lbl_1_data_1C, &lbl_1_data_28); + lbl_1_bss_38 = 180.0f; + lbl_1_bss_34 = 4.0f; + lbl_1_bss_30 = 60.0f; + lbl_1_bss_14 = Hu3DGLightCreateV(&lbl_1_data_34, &lbl_1_data_40, &lbl_1_data_4C); + Hu3DGLightStaticSet(lbl_1_bss_14, 1); + fn_1_8048(); + Hu3DShadowCreate(30.0f, 20.0f, 20000.0f); + Hu3DShadowTPLvlSet(0.5f); + PSVECNormalize(&lbl_1_data_60, &sp20); + Hu3DShadowPosSet(&lbl_1_data_60, &sp20, &lbl_1_data_6C); + omMakeGroupEx(lbl_1_bss_1E8, 0, 4); + lbl_1_bss_54 = omGetGroupMemberListEx(lbl_1_bss_1E8, 0); + for (i = 0; i < 4; i++) { + temp_r30 = omAddObjEx(lbl_1_bss_1E8, 100, 1, 0, 0, fn_1_7D4C); + temp_r30->work[0] = i; + } + omMakeGroupEx(lbl_1_bss_1E8, 1, 4); + lbl_1_bss_50 = omGetGroupMemberListEx(lbl_1_bss_1E8, 1); + for (i = 0; i < 4; i++) { + temp_r30 = omAddObjEx(lbl_1_bss_1E8, 101, 1, 0, 1, fn_1_7E84); + temp_r30->work[0] = i; + } + omMakeGroupEx(lbl_1_bss_1E8, 2, 4); + lbl_1_bss_4C = omGetGroupMemberListEx(lbl_1_bss_1E8, 2); + for (i = 0; i < 4; i++) { + temp_r30 = omAddObjEx(lbl_1_bss_1E8, 102, 1, 11, 2, fn_1_63C8); + temp_r30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkFn27A8Struct), MEMORY_DEFAULT_NUM); + temp_r30->work[0] = i; + } + omMakeGroupEx(lbl_1_bss_1E8, 3, 4); + lbl_1_bss_48 = omGetGroupMemberListEx(lbl_1_bss_1E8, 3); + for (i = 0; i < 4; i++) { + temp_r30 = omAddObjEx(lbl_1_bss_1E8, 103, 1, 3, 3, fn_1_685C); + temp_r30->work[0] = i; + } + omMakeGroupEx(lbl_1_bss_1E8, 4, 2); + lbl_1_bss_44 = omGetGroupMemberListEx(lbl_1_bss_1E8, 4); + for (i = 0; i < 2; i++) { + temp_r30 = omAddObjEx(lbl_1_bss_1E8, 104, 1, 2, 4, fn_1_6E64); + temp_r30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkFn6AB4Struct), MEMORY_DEFAULT_NUM); + temp_r30->work[0] = i; + } + fn_1_0(); + lbl_1_bss_24 = 0; + omMakeGroupEx(lbl_1_bss_1E8, 5, 300); + lbl_1_bss_40 = omGetGroupMemberListEx(lbl_1_bss_1E8, 5); + for (i = 0; i < 7; i++) { + lbl_1_bss_16[i] = Hu3DModelCreateFile(lbl_1_data_218[i]); + Hu3DModelAttrSet(lbl_1_bss_16[i], 1); + Hu3DModelAttrSet(lbl_1_bss_16[i], 0x40000002); + } + lbl_1_bss_58 = omAddObjEx(lbl_1_bss_1E8, 106, 3, 1, -1, fn_1_9058); +} + +static void fn_1_9AF4(omObjData *arg0) { + s32 i; + + if (WipeStatGet() == 0) { + if (lbl_1_bss_1AA >= 0) { + MGSeqKill(lbl_1_bss_1AA); + } + if (lbl_1_bss_1A8 >= 0) { + MGSeqKill(lbl_1_bss_1A8); + } + MGSeqKillAll(); + HuAudAllStop(); + for (i = 0; i < 4; i++) { + CharModelKill(lbl_1_data_0[GWPlayerCfg[i].character]); + } + omOvlReturnEx(1, 1); + } +} diff --git a/src/REL/messDll/main.c b/src/REL/messDll/main.c index 5ef28622..38c846f0 100755 --- a/src/REL/messDll/main.c +++ b/src/REL/messDll/main.c @@ -8,7 +8,7 @@ #include "game/wipe.h" #include "dolphin.h" -#include "math.h" +#include "ext_math.h" #include "rel_sqrt_consts.h" extern s32 sprintf(char*, const char*, s32); @@ -68,25 +68,25 @@ static void fn_1_300(omObjData *arg0) { CRot.y += HuPadSubStkX[0] / 20; CZoom += HuPadTrigL[0] / 2; CZoom -= HuPadTrigR[0] / 2; - sp2C.x = Center.x + CZoom * (sin(CRot.y * M_PI / 180.0) * cos(CRot.x * M_PI / 180.0)); - sp2C.y = Center.y + CZoom * -sin(CRot.x * M_PI / 180.0); - sp2C.z = Center.z + CZoom * (cos(CRot.y * M_PI / 180.0) * cos(CRot.x * M_PI / 180.0)); + sp2C.x = Center.x + CZoom * (sind(CRot.y) * cosd(CRot.x)); + sp2C.y = Center.y + CZoom * -sind(CRot.x); + sp2C.z = Center.z + CZoom * (cosd(CRot.y) * cosd(CRot.x)); sp20.x = Center.x - sp2C.x; sp20.y = Center.y - sp2C.y; sp20.z = Center.z - sp2C.z; - sp14.x = sin(CRot.y * M_PI / 180.0) * sin(CRot.x * M_PI / 180.0); - sp14.y = cos(CRot.x * M_PI / 180.0); - sp14.z = cos(CRot.y * M_PI / 180.0) * sin(CRot.x * M_PI / 180.0); + sp14.x = sind(CRot.y) * sind(CRot.x); + sp14.y = cosd(CRot.x); + sp14.z = cosd(CRot.y) * sind(CRot.x); temp_f31 = CRot.z; - sp8.x = sp14.x * (sp20.x * sp20.x + (1.0f - sp20.x * sp20.x) * cos(temp_f31 * M_PI / 180.0)) - + sp14.y * (sp20.x * sp20.y * (1.0 - cos(temp_f31 * M_PI / 180.0)) - sp20.z * sin(temp_f31 * M_PI / 180.0)) - + sp14.z * (sp20.x * sp20.z * (1.0 - cos(temp_f31 * M_PI / 180.0)) + sp20.y * sin(temp_f31 * M_PI / 180.0)); - sp8.y = sp14.x * (sp20.x * sp20.y * (1.0 - cos(temp_f31 * M_PI / 180.0)) + sp20.z * sin(temp_f31 * M_PI / 180.0)) - + sp14.y * (sp20.y * sp20.y + (1.0f - sp20.y * sp20.y) * cos(temp_f31 * M_PI / 180.0)) - + sp14.z * (sp20.y * sp20.z * (1.0 - cos(temp_f31 * M_PI / 180.0)) - sp20.x * sin(temp_f31 * M_PI / 180.0)); - sp8.z = sp14.x * (sp20.x * sp20.z * (1.0 - cos(temp_f31 * M_PI / 180.0)) - sp20.y * sin(temp_f31 * M_PI / 180.0)) - + sp14.y * (sp20.y * sp20.z * (1.0 - cos(temp_f31 * M_PI / 180.0)) + sp20.x * sin(temp_f31 * M_PI / 180.0)) - + sp14.z * (sp20.z * sp20.z + (1.0f - sp20.z * sp20.z) * cos(temp_f31 * M_PI / 180.0)); + sp8.x = sp14.x * (sp20.x * sp20.x + (1.0f - sp20.x * sp20.x) * cosd(temp_f31)) + + sp14.y * (sp20.x * sp20.y * (1.0 - cosd(temp_f31)) - sp20.z * sind(temp_f31)) + + sp14.z * (sp20.x * sp20.z * (1.0 - cosd(temp_f31)) + sp20.y * sind(temp_f31)); + sp8.y = sp14.x * (sp20.x * sp20.y * (1.0 - cosd(temp_f31)) + sp20.z * sind(temp_f31)) + + sp14.y * (sp20.y * sp20.y + (1.0f - sp20.y * sp20.y) * cosd(temp_f31)) + + sp14.z * (sp20.y * sp20.z * (1.0 - cosd(temp_f31)) - sp20.x * sind(temp_f31)); + sp8.z = sp14.x * (sp20.x * sp20.z * (1.0 - cosd(temp_f31)) - sp20.y * sind(temp_f31)) + + sp14.y * (sp20.y * sp20.z * (1.0 - cosd(temp_f31)) + sp20.x * sind(temp_f31)) + + sp14.z * (sp20.z * sp20.z + (1.0f - sp20.z * sp20.z) * cosd(temp_f31)); PSVECCrossProduct(&sp14, &sp20, &sp20); PSVECNormalize(&sp20, &sp20); temp_r31 = HuPadSubStkX[0] & 0xF8; diff --git a/src/game/board/boo.c b/src/game/board/boo.c index 2042ae27..b4d2a436 100755 --- a/src/game/board/boo.c +++ b/src/game/board/boo.c @@ -17,7 +17,7 @@ #include "game/board/space.h" #include "game/board/window.h" -#include "math.h" +#include "ext_math.h" typedef struct { struct { @@ -635,12 +635,12 @@ static void BallMain(omObjData *arg0) { temp_f30 = 240.0f; BoardCameraRotGet(&sp20); BoardCameraTargetGet(&sp2C); - sp8.x = sp2C.x + sin(sp20.y * M_PI / 180.0) * cos(sp20.x * M_PI / 180.0) * temp_f30; - sp8.y = sp2C.y + -sin(sp20.x * M_PI / 180.0) * temp_f30; - sp8.z = sp2C.z + cos(sp20.y * M_PI / 180.0) * cos(sp20.x * M_PI / 180.0) * temp_f30; - sp14.x = sin(sp20.y * M_PI / 180.0) * sin(sp20.x * M_PI / 180.0); - sp14.y = cos(sp20.x * M_PI / 180.0); - sp14.z = cos(sp20.y * M_PI / 180.0) * sin(sp20.x * M_PI / 180.0); + sp8.x = sp2C.x + sind(sp20.y) * cosd(sp20.x) * temp_f30; + sp8.y = sp2C.y + -sind(sp20.x) * temp_f30; + sp8.z = sp2C.z + cosd(sp20.y) * cosd(sp20.x) * temp_f30; + sp14.x = sind(sp20.y) * sind(sp20.x); + sp14.y = cosd(sp20.x); + sp14.z = cosd(sp20.y) * sind(sp20.x); if (temp_r30->unk01 != 0) { temp_r30->unk02 += temp_r30->unk01; if (temp_r30->unk02 > 255) { @@ -711,8 +711,8 @@ static void BallRenderHook(void) { sp20.z = 0.0f; C_MTXLookAt(sp38, &sp2C, &sp20, &sp14); GXLoadPosMtxImm(sp38, GX_PNMTX0); - sp2C.x = sin(5 * M_PI / 72) * 20000.0 * 1.2f; - sp2C.y = sin(5 * M_PI / 72) * 20000.0 * 0.8333333f; + sp2C.x = sind(12.5) * 20000.0 * 1.2f; + sp2C.y = sind(12.5) * 20000.0 * 0.8333333f; sp2C.z = -9000.0f; GXBegin(GX_QUADS, GX_VTXFMT0, 4); GXPosition3f32(-sp2C.x, -sp2C.y, sp2C.z); @@ -754,12 +754,12 @@ static void UpdateBallCamera(omObjData *arg0) { sp20.x = arg0->trans.x; sp20.y = arg0->trans.y + arg0->rot.y; sp20.z = arg0->trans.z; - sp14.x = sp20.x + sin(0.0) * cos(arg0->rot.x * M_PI / 180.0) * arg0->rot.z; - sp14.y = sp20.y + -sin(arg0->rot.x * M_PI / 180.0) * arg0->rot.z; - sp14.z = sp20.z + cos(0.0) * cos(arg0->rot.x * M_PI / 180.0) * arg0->rot.z; - sp8.x = sin(0.0) * sin(arg0->rot.x * M_PI / 180.0); - sp8.y = cos(arg0->rot.x * M_PI / 180.0); - sp8.z = cos(0.0) * sin(arg0->rot.x * M_PI / 180.0); + sp14.x = sp20.x + sin(0.0) * cosd(arg0->rot.x) * arg0->rot.z; + sp14.y = sp20.y + -sind(arg0->rot.x) * arg0->rot.z; + sp14.z = sp20.z + cos(0.0) * cosd(arg0->rot.x) * arg0->rot.z; + sp8.x = sin(0.0) * sind(arg0->rot.x); + sp8.y = cosd(arg0->rot.x); + sp8.z = cos(0.0) * sind(arg0->rot.x); Hu3DCameraPosSetV(var_r30->unk02, &sp14, &sp8, &sp20); } @@ -909,9 +909,9 @@ static void BallPlayerZoomOut(omObjData *arg0, BallPlayerWork *arg1) { sp14.x = arg0->trans.x; sp14.y = arg0->trans.y; sp14.z = arg0->trans.z; - sp8.x = sp14.x + 120.0 * sin(-M_PI / 2); + sp8.x = sp14.x + 120.0 * sind(-90); sp8.y = sp14.y; - sp8.z = sp14.z + 120.0 * cos(-M_PI / 2); + sp8.z = sp14.z + 120.0 * cosd(-90); BoardPlayerPosLerpStart(stealTarget, &sp14, &sp8, 20); var_r29 = GWPlayer[stealTarget].character; HuAudFXPlay(booSfxTbl[0][var_r29]); @@ -1082,9 +1082,9 @@ static void BallBooCreate(void) { BoardModelCameraSet(temp_r31->unk04, 1); temp_f31 = BoardPlayerRotYGet(stealTarget); BoardPlayerPosGet(stealTarget, &sp14); - ballBooObj->trans.x = sp14.x + 240.0 * sin(-temp_f31 * M_PI / 180.0); + ballBooObj->trans.x = sp14.x + 240.0 * sind(-temp_f31); ballBooObj->trans.y = sp14.y + 160.0f; - ballBooObj->trans.z = sp14.z + 240.0 * cos(-temp_f31 * M_PI / 180.0); + ballBooObj->trans.z = sp14.z + 240.0 * cosd(-temp_f31); BoardModelPosSet(temp_r31->unk04, ballBooObj->trans.x, ballBooObj->trans.y, ballBooObj->trans.z); if (stealType == 2) { var_f30 = 126.0f; @@ -1093,9 +1093,9 @@ static void BallBooCreate(void) { var_f30 = 90.0f; var_f29 = 100.0f; } - sp8.x = sp14.x + var_f30 * sin(-temp_f31 * M_PI / 180.0); + sp8.x = sp14.x + var_f30 * sind(-temp_f31); sp8.y = sp14.y + var_f29; - sp8.z = sp14.z + var_f30 * cos(-temp_f31 * M_PI / 180.0); + sp8.z = sp14.z + var_f30 * cosd(-temp_f31); ballBooObj->rot.x = (sp8.x - ballBooObj->trans.x) / 60.0f; ballBooObj->rot.y = (sp8.y - ballBooObj->trans.y) / 60.0f; ballBooObj->rot.z = (sp8.z - ballBooObj->trans.z) / 60.0f; @@ -1104,7 +1104,7 @@ static void BallBooCreate(void) { ballBooObj->scale.z = 1.0f; sp8.x = sp14.x - ballBooObj->trans.x; sp8.z = sp14.z - ballBooObj->trans.z; - ballBooObj->scale.y = 180.0 * (atan2(sp8.x, sp8.z) / M_PI); + ballBooObj->scale.y = atan2d(sp8.x, sp8.z); BoardModelRotYSet(temp_r31->unk04, ballBooObj->scale.y); BoardModelMotionStart(temp_r31->unk04, 1, 0x40000001); } @@ -1246,7 +1246,7 @@ static void BallBooAttack(omObjData *arg0, BallBooWork *arg1) { } } OSu8tof32(&arg1->unk02, &var_f29); - arg0->scale.z = 1.0 + sin(var_f29 * M_PI / 180.0); + arg0->scale.z = 1.0 + sind(var_f29); } static void BallBooFlash(omObjData *arg0, BallBooWork *arg1) { @@ -1258,9 +1258,9 @@ static void BallBooFlash(omObjData *arg0, BallBooWork *arg1) { BoardModelMotionShiftSet(arg1->unk04, 3, 0.0f, 10.0f, 0x40000001); temp_f31 = BoardPlayerRotYGet(stealTarget); BoardPlayerPosGet(stealTarget, &sp8); - sp8.x += 500.0 * sin(-temp_f31 * M_PI / 180.0); + sp8.x += 500.0 * sind(-temp_f31); sp8.y = sp8.y + 160.0f; - sp8.z += 500.0 * cos(-temp_f31 * M_PI / 180.0); + sp8.z += 500.0 * cosd(-temp_f31); arg0->rot.x = (sp8.x - arg0->trans.x) / 72.0f; arg0->rot.y = (sp8.y - arg0->trans.y) / 72.0f; arg0->rot.z = (sp8.z - arg0->trans.z) / 72.0f; @@ -1365,8 +1365,8 @@ void TakeBallStar(void) { ballTakeCoinObj->trans.y = sp8.y + 150.0f; ballTakeCoinObj->trans.z = sp8.z; temp_r31->unk04 = sp8.y; - ballTakeCoinObj->rot.x = 3.0 * sin(4 * M_PI / 9); - ballTakeCoinObj->rot.z = 3.0 * cos(4 * M_PI / 9); + ballTakeCoinObj->rot.x = 3.0 * sind(80); + ballTakeCoinObj->rot.z = 3.0 * cosd(80); ballTakeCoinObj->rot.y = 0.0f; BoardModelPosSet(temp_r31->unk02, ballTakeCoinObj->trans.x, ballTakeCoinObj->trans.y, ballTakeCoinObj->trans.z); BoardModelVisibilitySet(temp_r31->unk02, 1); diff --git a/src/game/board/boo_house.c b/src/game/board/boo_house.c index 3d8cf829..05e5b246 100644 --- a/src/game/board/boo_house.c +++ b/src/game/board/boo_house.c @@ -15,6 +15,8 @@ #include "game/board/player.h" #include "game/board/window.h" +#include "ext_math.h" + // bss static s16 houseMdl[6]; @@ -134,7 +136,7 @@ static void ExecBooHouse(void) { Vec sp20; Vec sp14; Vec sp8; - f32 temp_f31; + float temp_f31; s16 temp_r29; s32 var_r31; s16 var_r30; @@ -187,7 +189,7 @@ static void ExecBooHouse(void) { BoardSpacePosGet(0, temp_r29, &sp2C); PSVECSubtract(&sp2C, &sp38, &sp20); PSVECNormalize(&sp20, &sp20); - temp_f31 = (180.0 * (atan2(-sp20.x, -sp20.z) / M_PI)); + temp_f31 = atan2d(-sp20.x, -sp20.z); sp14.x = -15.0f; sp14.y = temp_f31; sp14.z = 0.0f; @@ -577,7 +579,7 @@ void ApplySteal(void) { s32 temp_r30; s32 temp_r6; s32 var_r31; - f32 var_f31; + float var_f31; BoardModelHookSet(houseMdl[0], "yoko8", booMdl); BoardModelVisibilitySet(booMdl, 1); @@ -749,7 +751,7 @@ void BoardBooHouseTutorialExec(void) { Vec sp20; Vec sp14; Vec sp8; - f32 temp_f31; + float temp_f31; s16 temp_r28; s16 temp_r29; s32 temp_r27; @@ -765,7 +767,7 @@ void BoardBooHouseTutorialExec(void) { BoardSpacePosGet(0, temp_r28, &sp2C); PSVECSubtract(&sp2C, &sp38, &sp20); PSVECNormalize(&sp20, &sp20); - temp_f31 = (180.0 * (atan2(-sp20.x, -sp20.z) / M_PI)); + temp_f31 = atan2d(-sp20.x, -sp20.z); sp14.x = -15.0f; sp14.y = temp_f31; sp14.z = 0.0f; diff --git a/src/game/board/char_wheel.c b/src/game/board/char_wheel.c index a3d53557..e155fa5f 100755 --- a/src/game/board/char_wheel.c +++ b/src/game/board/char_wheel.c @@ -10,7 +10,7 @@ #include "game/board/tutorial.h" #include "game/board/ui.h" -#include "math.h" +#include "ext_math.h" typedef struct { struct { @@ -374,7 +374,7 @@ static void GrowCharWheel(CharWheelWork *arg0) { if (arg0->unk02 < 90) { arg0->unk02 += 3; } else { - if (_CheckFlag(0x1000B)) { + if (_CheckFlag(FLAG_ID_MAKE(1, 11))) { BoardTutorialHookExec(0x14, 0); } arg0->unk02 = 90; @@ -382,7 +382,7 @@ static void GrowCharWheel(CharWheelWork *arg0) { wheelFXStat = HuAudFXPlay(0x30A); } OSs8tof32(&arg0->unk02, &temp_f30); - HuSprGrpScaleSet(wheelSprGrp, sin(temp_f30 * M_PI / 180.0), sin(temp_f30 * M_PI / 180.0)); + HuSprGrpScaleSet(wheelSprGrp, sind(temp_f30), sind(temp_f30)); } static void ShrinkCharWheel(CharWheelWork *arg0) { @@ -397,7 +397,7 @@ static void ShrinkCharWheel(CharWheelWork *arg0) { targetF = 0; } OSs8tof32(&arg0->unk02, &temp_f30); - HuSprGrpScaleSet(wheelSprGrp, sin(temp_f30 * M_PI / 180.0), sin(temp_f30 * M_PI / 180.0)); + HuSprGrpScaleSet(wheelSprGrp, sind(temp_f30), sind(temp_f30)); } static void KillCharWheelSpr(void) { diff --git a/src/game/board/com.c b/src/game/board/com.c index 3f6cc4bf..d98c4bb7 100755 --- a/src/game/board/com.c +++ b/src/game/board/com.c @@ -9,7 +9,7 @@ #include "game/board/window.h" #include "game/board/boo.h" -#include "math.h" +#include "ext_math.h" typedef BOOL (*UseCheckFunc)(s32 player, s32 item); @@ -625,7 +625,7 @@ s32 BoardComJunctionInputGet(s32 item, Vec *input, s32 num_dirs, float *dirs) { BoardSpacePosGet(0, space, &pos_junction); BoardSpacePosGet(0, space_next, &pos_next); PSVECSubtract(&pos_next, &pos_junction, &dir); - angle = BoardDAngleCalc(90.0 - 180.0 * (atan2(dir.z, dir.x) / M_PI)); + angle = BoardDAngleCalc(90.0 - atan2d(dir.z, dir.x)); if (angle < 0.0f) { angle += 360.0f; } diff --git a/src/game/board/item.c b/src/game/board/item.c index b7b40ddf..949e4983 100755 --- a/src/game/board/item.c +++ b/src/game/board/item.c @@ -26,6 +26,8 @@ #include "game/board/view.h" #include "game/frand.h" +#include "ext_math.h" + typedef struct { /* 0x00 */ s16 unk00; /* 0x02 */ s16 unk02; @@ -285,7 +287,7 @@ static void ItemSizeShowAnim(void) { BoardModelRotSetV(suitMdl, &spC); BoardModelPosSetV(suitMdl, &sp24); for (i = 0; i < 120; i++) { - sp24.y += 3.0 * sin(var_f31 * M_PI / 180.0); + sp24.y += 3.0 * sind(var_f31); BoardModelPosSetV(suitMdl, &sp24); var_f31 += 9.0f; if (var_f31 >= 360.0f) { @@ -318,7 +320,7 @@ static void ItemRotProc(void) { while (1) { if (temp_r31->unk00 == 0) { sp14 = sp20; - sp14.y += temp_r31->unk04 * sin(temp_r31->unk0C * M_PI / 180.0); + sp14.y += temp_r31->unk04 * sind(temp_r31->unk0C); BoardModelPosSetV(temp_r31->unk02, &sp14); temp_r31->unk0C += temp_r31->unk08; if (temp_r31->unk0C >= 360.0f) { @@ -489,8 +491,8 @@ static Process *ItemShowProc(UnkItemShowProcStruct *arg0, Vec *arg1) { if (arg0 == NULL || arg0->unk1C != 0) { CharModelLayerSetAll(3); sp20.y += 35.0f; - sp20.z += 50.0 * cos(sp14.y * M_PI / 180.0); - sp20.x += 50.0 * sin(sp14.y * M_PI / 180.0); + sp20.z += 50.0 * cosd(sp14.y); + sp20.x += 50.0 * sind(sp14.y); CharModelEffectCreate(1, &sp20); HuPrcSleep(10); } @@ -1124,12 +1126,12 @@ static void ExecItemSwap(void) { for (var_r31 = 0; var_r31 < 60; var_r31++) { for (var_r30 = 0; var_r30 < var_r28 / 2; var_r30++) { sp6C = sp1A4[var_r30]; - sp6C.x += 3.0 * sin((frandmods(360)) * M_PI / 180.0); - sp6C.y += 3.0 * sin((frandmods(360)) * M_PI / 180.0); + sp6C.x += 3.0 * sind(frandmods(360)); + sp6C.y += 3.0 * sind(frandmods(360)); BoardModelPosSetV(sp54[var_r30], &sp6C); sp6C = sp180[var_r30]; - sp6C.x += 3.0 * sin((frandmods(360)) * M_PI / 180.0); - sp6C.y += 3.0 * sin((frandmods(360)) * M_PI / 180.0); + sp6C.x += 3.0 * sind(frandmods(360)); + sp6C.y += 3.0 * sind(frandmods(360)); BoardModelPosSetV(sp54[var_r30 + 3], &sp6C); } HuPrcSleep(2); @@ -1263,8 +1265,8 @@ static void ExecItemSpark(void) { BoardSpaceRotGet(0, GWPlayer[currItemRestore].space_curr, &sp20); BoardModelRotSetV(suitMdl, &sp20); BoardModelPosGet(suitMdl, &sp2C); - sp2C.z += 106.0 * sin(sp20.x * M_PI / 180.0); - sp2C.x -= 106.0 * sin(sp20.z * M_PI / 180.0); + sp2C.z += 106.0 * sind(sp20.x); + sp2C.x -= 106.0 * sind(sp20.z); BoardModelPosSetV(suitMdl, &sp2C); HuAudFXPlay(0x31B); BoardModelMotionStart(suitMdl, 1, 0); @@ -1369,9 +1371,9 @@ static void ExecItemWhistle(void) { temp_r17 = BoardModelMotionCreate(sp20[var_r31], DATA_MAKE_NUM(DATADIR_BGUEST, 40)); BoardModelMotionStart(sp20[var_r31], temp_r17, 0x40000001); sp28[var_r31] = 120.0f; - spF0[var_r31].x = spB4.x + 120.0 * sin(var_f31 * M_PI / 180.0); + spF0[var_r31].x = spB4.x + 120.0 * sind(var_f31); spF0[var_r31].y = 1000.0f + spB4.y + 100.0f * var_r31; - spF0[var_r31].z = spB4.z + 120.0 * cos(var_f31 * M_PI / 180.0); + spF0[var_r31].z = spB4.z + 120.0 * cosd(var_f31); spC0[var_r31].x = spC0[var_r31].z = 0.0f; spC0[var_r31].y = var_f31 + 90.0f; if (spC0[var_r31].y >= 360.0f) { @@ -1490,8 +1492,8 @@ static void ExecItemWhistle(void) { if (spC0[var_r31].y >= 360.0f) { spC0[var_r31].y -= 360.0f; } - spF0[var_r31].x = spB4.x + 120.0 * sin(sp38[var_r31] * M_PI / 180.0); - spF0[var_r31].z = spB4.z + 120.0 * cos(sp38[var_r31] * M_PI / 180.0); + spF0[var_r31].x = spB4.x + 120.0 * sind(sp38[var_r31]); + spF0[var_r31].z = spB4.z + 120.0 * cosd(sp38[var_r31]); BoardModelPosSetV(sp20[var_r31], &spF0[var_r31]); BoardModelRotSetV(sp20[var_r31], &spC0[var_r31]); } @@ -1523,8 +1525,8 @@ static void ExecItemWhistle(void) { spF0[var_r31].y = spB4.y; sp48[var_r31] = -1.0f; } - spF0[var_r31].x = spB4.x + sp28[var_r31] * sin(sp38[var_r31] * M_PI / 180.0); - spF0[var_r31].z = spB4.z + sp28[var_r31] * cos(sp38[var_r31] * M_PI / 180.0); + spF0[var_r31].x = spB4.x + sp28[var_r31] * sind(sp38[var_r31]); + spF0[var_r31].z = spB4.z + sp28[var_r31] * cosd(sp38[var_r31]); BoardModelPosSetV(sp20[var_r31], &spF0[var_r31]); } } @@ -1955,12 +1957,12 @@ static void LampParticleUpdate(ModelData *model, ParticleData *particle, Mtx mat } } if (j != particle->unk_30) { - var_r31->unk34.x = 60.0 * sin((spC.y - 90.0f) * M_PI / 180.0); + var_r31->unk34.x = 60.0 * sind(spC.y - 90.0f); var_r31->unk34.y = 30.0f; - var_r31->unk34.z = 60.0 * cos((spC.y - 90.0f) * M_PI / 180.0); + var_r31->unk34.z = 60.0 * cosd(spC.y - 90.0f); sp8 = 12.0f; - var_r31->unk08.x = 12.0 * cos((i * 110.0f + 35.0f) * M_PI / 180.0); - var_r31->unk08.y = 12.0 * sin((i * 110.0f + 35.0f) * M_PI / 180.0); + var_r31->unk08.x = 12.0 * cosd(i * 110.0f + 35.0f); + var_r31->unk08.y = 12.0 * sind(i * 110.0f + 35.0f); var_r31->unk08.z = 3.0f + frand8() * 5.0f * 0.003921569f; var_r31->unk14.y = 255.0f; var_r31->unk2C = 25.0f; @@ -1983,9 +1985,9 @@ static void LampParticleUpdate(ModelData *model, ParticleData *particle, Mtx mat if (var_r31->unk14.y <= 120.0f) { var_r31->unk14.y = 200.0f; temp_f31 = frand8() * 180.0f * 0.003921569f; - var_r31->unk08.x = 6.0 * cos(temp_f31 * M_PI / 180.0); + var_r31->unk08.x = 6.0 * cosd(temp_f31); var_r31->unk08.y = -4.0f; - var_r31->unk08.z = 6.0 * sin(temp_f31 * M_PI / 180.0); + var_r31->unk08.z = 6.0 * sind(temp_f31); var_r31->unk00_s16 = 1; } var_r31->unk40.a = var_r31->unk14.y; @@ -2017,11 +2019,11 @@ static void GenieParticleUpdate(ModelData *model, ParticleData *particle, Mtx ma var_r31->unk34.y = -50.0f + frand8() * 100.0f * 0.003921569f; var_r31->unk34.z = -10.0f + frand8() * 20.0f * 0.003921569f; temp_f31 = 0.5f + frand8() * 3.0f * 0.003921569f; - var_r31->unk08.x = temp_f31 * cos((i * 110.0f + 35.0f) * M_PI / 180.0); - var_r31->unk08.y = temp_f31 * sin((i * 110.0f + 35.0f) * M_PI / 180.0); + var_r31->unk08.x = temp_f31 * cosd(i * 110.0f + 35.0f); + var_r31->unk08.y = temp_f31 * sind(i * 110.0f + 35.0f); var_r31->unk08.z = 0.0f; var_r31->unk14.y = 255.0f; - temp_f30 = 125.0f + frand8() * 0x64 * 0.003921569f; + temp_f30 = 125.0f + frand8() * 100 * 0.003921569f; var_r31->unk40.r = var_r31->unk40.g = var_r31->unk40.b = temp_f30; var_r31->unk00 = 0; var_r31->unk2C = 80.0f + frand8() * 60.0f * 0.003921569f; @@ -2288,9 +2290,9 @@ static void GenieSceneExec(void) { booCamUp.x = sp38.x + (sp50.x - sp38.x) * 0.7f; booCamUp.y = sp38.y + 400.0f; booCamUp.z = sp38.z + (sp50.z - sp38.z) * 0.7f; - booCamPos.x = booCamUp.x + sin(-5 * M_PI / 9) * 1100.0; + booCamPos.x = booCamUp.x + sind(-100) * 1100.0; booCamPos.y = booCamUp.y + 950.0f; - booCamPos.z = booCamUp.z + cos(-5 * M_PI / 9) * 1100.0; + booCamPos.z = booCamUp.z + cosd(-100) * 1100.0; HuAudFXPlay(0x356); BoardWinCreate(2, MAKE_MESSID(18, 27), -1); BoardWinWait(); @@ -2565,7 +2567,7 @@ static void ExecItemBagShow(void) { break; } sp8 = sp14; - sp8.y += 15.0 * sin(var_f31 * M_PI / 180.0); + sp8.y += 15.0 * sind(var_f31); BoardModelPosSetV(suitMdl, &sp8); var_f31 += 36.0f; HuPrcVSleep(); diff --git a/src/game/board/roll.c b/src/game/board/roll.c index 643c4925..918fae5e 100755 --- a/src/game/board/roll.c +++ b/src/game/board/roll.c @@ -12,6 +12,8 @@ #include "game/board/player.h" #include "game/board/tutorial.h" +#include "ext_math.h" + typedef struct { struct { u8 unk00_field0 : 1; @@ -481,7 +483,7 @@ static void DiceMain(omObjData *arg0) { var_f27 = 1.0f; var_f28 = 0.5f; } - arg0->scale.x = var_f27 + var_f28 * sin((float) (temp_r29->unk04 % 180) * M_PI / 180.0); + arg0->scale.x = var_f27 + var_f28 * sind((float) (temp_r29->unk04 % 180)); arg0->scale.y = arg0->scale.x; arg0->scale.z = arg0->scale.x; if (temp_r29->unk04 <= 360) { @@ -502,7 +504,7 @@ static void DiceMain(omObjData *arg0) { temp_r29->unk04 -= 360; } OSs16tof32(&temp_r29->unk04, &temp_f29); - arg0->trans.y += 0.20000000298023224 * sin(temp_f29 * M_PI / 180.0); + arg0->trans.y += 0.2f * sind(temp_f29); break; case 2: temp_r29->unk04++; @@ -523,7 +525,7 @@ static void DiceMain(omObjData *arg0) { OSs16tof32(&temp_r29->unk04, &temp_f29); if (temp_r29->unk04 < 4) { arg0->trans.y += 10.0f + (0.5f * temp_f29); - arg0->scale.x = (arg0->scale.x + (0.10000000149011612 * sin((M_PI * (4.0f * temp_f29)) / 180.0))); + arg0->scale.x += 0.1f * sind(4.0f * temp_f29); arg0->scale.y = arg0->scale.x; arg0->scale.z = arg0->scale.x; } else { diff --git a/src/game/board/shop.c b/src/game/board/shop.c index 71cc0b2f..20608ce6 100755 --- a/src/game/board/shop.c +++ b/src/game/board/shop.c @@ -21,7 +21,7 @@ #include "game/board/window.h" #include "dolphin.h" -#include "math.h" +#include "ext_math.h" typedef struct { struct { @@ -262,7 +262,7 @@ static void ExecShop(void) { BoardSpacePosGet(0, temp_r25, &sp2C); PSVECSubtract(&sp2C, &sp38, &sp20); PSVECNormalize(&sp20, &sp20); - temp_f31 = 180.0 * (atan2(-sp20.x, -sp20.z) / M_PI); + temp_f31 = atan2d(-sp20.x, -sp20.z); sp14.x = -10.0f; sp14.y = temp_f31; sp14.z = 0.0f; @@ -535,7 +535,7 @@ static void UpdateShopWin(omObjData *arg0) { temp_r28->unk04 = 90; } OSs8tof32(&temp_r28->unk04, &var_f28); - arg0->scale.x = arg0->scale.y = arg0->scale.z = 0.25 * sin(var_f28 * M_PI / 180.0); + arg0->scale.x = arg0->scale.y = arg0->scale.z = 0.25 * sind(var_f28); } if (temp_r28->unk00_field1 == 5) { var_f29 = -12.5f; @@ -575,7 +575,7 @@ static void SetShopWinItem(ShopWinWork *arg0, omObjData *arg1) { BoardModelMotionSpeedSet(itemMdl, 0.033333335f); } BoardCameraDirGet(&spC); - arg1->rot.y = BoardDAngleCalc(180.0 * (atan2(-spC.x, -spC.z) / M_PI)); + arg1->rot.y = BoardDAngleCalc(atan2d(-spC.x, -spC.z)); OSf32tos16(&arg1->rot.y, &angleVal); } } @@ -689,7 +689,7 @@ static void MoveItemGive(omObjData *arg0, ItemGiveWork *arg1) { temp_f27 = -0.08166667f * temp_f27 * temp_f27; arg0->trans.y += temp_f27; BoardCameraDirGet(&sp10); - var_f26 = BoardDAngleCalc(180.0 * (atan2(-sp10.x, -sp10.z) / M_PI)); + var_f26 = BoardDAngleCalc(atan2d(-sp10.x, -sp10.z)); OSf32tos16(&var_f26, &angleVal); } else { arg0->scale.x += arg0->scale.y; @@ -723,7 +723,7 @@ static void ShrinkItemGive(omObjData *arg0, ItemGiveWork *arg1) { if (var_f30 > 90.0f) { var_f30 = 90.0f; } - arg0->scale.x = cos(var_f30 * M_PI / 180.0); + arg0->scale.x = cosd(var_f30); arg0->trans.y += arg0->rot.x; angleVal += 8; if (angleVal > 360) { @@ -1137,7 +1137,7 @@ void BoardShopTutorialExec(s32 arg0) { BoardSpacePosGet(0, temp_r27, &sp3C); PSVECSubtract(&sp3C, &sp48, &sp30); PSVECNormalize(&sp30, &sp30); - temp_f31 = 180.0 * (atan2(-sp30.x, -sp30.z) / M_PI); + temp_f31 = atan2d(-sp30.x, -sp30.z); sp24.x = -10.0f; sp24.y = temp_f31; sp24.z = 0.0f; diff --git a/src/game/board/star.c b/src/game/board/star.c index d2613730..2c246d38 100755 --- a/src/game/board/star.c +++ b/src/game/board/star.c @@ -20,7 +20,7 @@ #include "game/board/ui.h" #include "game/board/window.h" -#include "math.h" +#include "ext_math.h" typedef struct { struct { @@ -207,7 +207,7 @@ static void ExecStar(void) { var_r22 = BoardSpaceLinkFlagSearch(0, temp_r24, 0x04000000); BoardSpacePosGet(0, var_r22, &sp18); PSVECSubtract(&sp18, &sp24, &spC); - temp_f30 = 90.0 - 180.0 * (atan2(spC.z, spC.x) / M_PI); + temp_f30 = 90.0 - atan2d(spC.z, spC.x); temp_f30 = 90.0f * ((temp_f30 + 3.0f) / 90.0f); temp_f29 = BoardPlayerRotYGet(temp_r31); BoardPlayerIdleSet(temp_r31); @@ -511,7 +511,7 @@ static void ShrinkGiveStar(GiveStarWork *arg0, omObjData *arg1) { } } OSs16tof32(&arg0->unk08, &var_f30); - arg1->scale.x = sin((var_f30 + 90.0f) * M_PI / 180.0); + arg1->scale.x = sind(var_f30 + 90.0f); if (arg1->scale.x <= 0.0f) { arg1->scale.x = 0.001f; } diff --git a/src/game/window.c b/src/game/window.c index fbe521c0..114e5f4e 100644 --- a/src/game/window.c +++ b/src/game/window.c @@ -10,7 +10,7 @@ #include "game/armem.h" #include "game/audio.h" -#include "math.h" +#include "ext_math.h" #include "stdarg.h" #include "string.h" @@ -1784,7 +1784,7 @@ static s32 winPortraitTbl[] = { WIN_BOWSER_TALK_ANM, WIN_KKID_TALK_ANM, WIN_KOOPA_TALK_ANM, - WIN_CONDOR_TALK_ANM, + WIN_CONDOR_TALK_ANM, WIN_BOO_BLUE_TALK_ANM, WIN_DOLPHIN_TALK_ANM, WIN_BOO_RED_TALK_ANM, @@ -1842,7 +1842,7 @@ void HuWinExAnimIn(s16 window) { HuSprScaleSet(window_ptr->group, 0, 1.0f, 0.0f); HuWinDispOn(window); for (i=0; i<=10; i++) { - HuSprScaleSet(window_ptr->group, 0, 1.0f, 1.0 - 1.1 * cos(M_PI * (9.0f * i) / 180.0)); + HuSprScaleSet(window_ptr->group, 0, 1.0f, 1.0 - 1.1 * cosd(9.0f * i)); HuPrcVSleep(); } HuSprScaleSet(window_ptr->group, 0, 1.0f, 1.0f); @@ -1852,13 +1852,13 @@ void HuWinExAnimIn(s16 window) { HuWinDispOn(window); for (i=0; i<=20; i++) { if (i <= 10) { - HuSprScaleSet(window_ptr->group, 0, 1.0f, 1.1 * (1.0 - cos(M_PI * (9.0f * i) / 180.0))); + HuSprScaleSet(window_ptr->group, 0, 1.0f, 1.1 * (1.0 - cosd(9.0f * i))); } else { HuSprScaleSet(window_ptr->group, 0, 1.0f, 1.0f); } if (i > 10) { s16 time = i - 10; - HuSprScaleSet(window_ptr->group, 2, 1.0f, 1.0 - 1.1 * cos(M_PI * (9.0f * time) / 180.0)); + HuSprScaleSet(window_ptr->group, 2, 1.0f, 1.0 - 1.1 * cosd(9.0f * time)); } HuPrcVSleep(); } @@ -1873,18 +1873,18 @@ void HuWinExAnimOut(s16 window) { _HuWinHomeClear(window_ptr); if (window_ptr->sprite_id[2] == -1) { for (i=0; i<=10; i++) { - HuSprScaleSet(window_ptr->group, 0, 1.0f, cos(M_PI * (9.0f * i) / 180.0)); + HuSprScaleSet(window_ptr->group, 0, 1.0f, cosd(9.0f * i)); HuPrcVSleep(); } HuWinDispOff(window); } else { for (i=0; i<=15; i++) { if (i <= 10) { - HuSprScaleSet(window_ptr->group, 2, 1.0f, cos(M_PI * (9.0f * i) / 180.0)); + HuSprScaleSet(window_ptr->group, 2, 1.0f, cosd(9.0f * i)); } if (i > 5) { s16 time = i - 5; - HuSprScaleSet(window_ptr->group, 0, 1.0f, cos(M_PI * (9.0f * time) / 180.0)); + HuSprScaleSet(window_ptr->group, 0, 1.0f, cosd(9.0f * time)); } HuPrcVSleep(); } @@ -1901,13 +1901,13 @@ void HuWinExAnimPopIn(s16 window, s16 portrait) { s16 i; for (i=0; i<=10; i++) { - HuSprScaleSet(window_ptr->group, 2, 1.0f, cos(M_PI * (9.0f * i) / 180.0)); + HuSprScaleSet(window_ptr->group, 2, 1.0f, cosd(9.0f * i)); HuPrcVSleep(); } HuWinSprKill(window, 2); HuWinExCreatePortrait(window, portrait, 48.0f, 48.0f); for (i=0; i<=10; i++) { - HuSprScaleSet(window_ptr->group, 2, 1.0f, sin(M_PI * (9.0f * i) / 180.0)); + HuSprScaleSet(window_ptr->group, 2, 1.0f, sind(9.0f * i)); HuPrcVSleep(); } HuSprScaleSet(window_ptr->group, 2, 1.0f, 1.0f);