From d95b1af697d56bf4e913619684fbd505c9747922 Mon Sep 17 00:00:00 2001 From: mrshigure Date: Sat, 4 Jan 2025 18:52:39 -0800 Subject: [PATCH] Matched m463Dll (US); applying some ext_math macros (#506) --- config/GMPE01_00/rels/m463Dll/splits.txt | 5 +- config/GMPE01_00/rels/m463Dll/symbols.txt | 218 ++-- configure.py | 2 +- include/game/hsfanim.h | 2 +- src/REL/m409Dll/player.c | 18 +- src/REL/m463Dll/main.c | 1423 +++++++++++++++++++++ src/game/board/last5.c | 6 +- src/game/board/player.c | 24 +- src/game/board/space.c | 12 +- src/game/board/view.c | 10 +- src/game/minigame_seq.c | 124 +- 11 files changed, 1637 insertions(+), 207 deletions(-) create mode 100755 src/REL/m463Dll/main.c diff --git a/config/GMPE01_00/rels/m463Dll/splits.txt b/config/GMPE01_00/rels/m463Dll/splits.txt index ceb93b07..f1310070 100644 --- a/config/GMPE01_00/rels/m463Dll/splits.txt +++ b/config/GMPE01_00/rels/m463Dll/splits.txt @@ -6,8 +6,11 @@ Sections: .data type:data align:8 .bss type:bss align:8 +REL/executor.c: + .text start:0x00000000 end:0x000000A0 + REL/m463Dll/main.c: - .text start:0x00000000 end:0x000066B8 + .text start:0x000000A0 end:0x000066B8 .rodata start:0x00000000 end:0x00000414 .data start:0x00000000 end:0x0000024D .bss start:0x00000000 end:0x000005AC diff --git a/config/GMPE01_00/rels/m463Dll/symbols.txt b/config/GMPE01_00/rels/m463Dll/symbols.txt index 87b16e8f..351f689b 100644 --- a/config/GMPE01_00/rels/m463Dll/symbols.txt +++ b/config/GMPE01_00/rels/m463Dll/symbols.txt @@ -8,123 +8,123 @@ fn_1_45F8 = .text:0x000045F8; // type:function size:0xDA8 fn_1_53A0 = .text:0x000053A0; // type:function size:0x4B0 fn_1_5850 = .text:0x00005850; // type:function size:0x854 fn_1_60A4 = .text:0x000060A4; // type:function size:0x98 -fn_1_613C = .text:0x0000613C; // type:function size:0x460 +ObjectSetup = .text:0x0000613C; // type:function size:0x460 fn_1_659C = .text:0x0000659C; // type:function size:0x11C _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:0x8 data:double -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 data:double -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size: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:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0xC data:4byte -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x24 data:4byte -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0xC data:4byte -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0xC data:4byte -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 data:double -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double -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:0x8 data:double -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:0x8 data:double -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 data:double -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 data:double -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 data:double -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:0x8 data:double -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:4byte -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x94 -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 data:double -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float -lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 data:double -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 data:double -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:double -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 data:double -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 data:double -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 data:double -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:4byte -lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x50 -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float -lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x70 -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x24 data:4byte -lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x24 data:4byte -lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 data:float -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float -lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x10 data:4byte -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float -lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0xC data:4byte -lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0xC data:4byte -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x1 data:byte -lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 data:float -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float -lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 data:float -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float -lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float -lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float -lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 data:float -lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 data:float -lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float -lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 scope:local data:double +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x8 scope:local data:double +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size: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:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 scope:local data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0xC scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0xC scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:double +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:0x8 scope:local data:double +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:0x8 scope:local data:double +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 scope:local data:double +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x8 scope:local data:double +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x8 scope:local data:double +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:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x90 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x8 scope:local data:double +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 scope:local data:double +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 scope:local data:double +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 scope:local data:double +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 scope:local data:double +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x8 scope:local data:double +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 scope:local data:double +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x50 scope:local +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x70 scope:local +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x24 scope:local data:4byte +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0xC scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0xC scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x24 lbl_1_data_24 = .data:0x00000024; // type:object size:0x24 lbl_1_data_48 = .data:0x00000048; // type:object size:0x24 lbl_1_data_6C = .data:0x0000006C; // type:object size:0x24 lbl_1_data_90 = .data:0x00000090; // type:object size:0x24 -lbl_1_data_B4 = .data:0x000000B4; // type:object size:0x9 -lbl_1_data_BD = .data:0x000000BD; // type:object size:0xB +lbl_1_data_B4 = .data:0x000000B4; // type:object size:0x9 data:byte +lbl_1_data_BD = .data:0x000000BD; // type:object size:0x9 data:byte lbl_1_data_C8 = .data:0x000000C8; // type:object size:0x24 lbl_1_data_EC = .data:0x000000EC; // type:object size:0x24 lbl_1_data_110 = .data:0x00000110; // type:object size:0x24 -lbl_1_data_134 = .data:0x00000134; // type:object size:0x18 data:float +lbl_1_data_134 = .data:0x00000134; // type:object size:0x18 data:4byte lbl_1_data_14C = .data:0x0000014C; // type:object size:0x2 data:2byte lbl_1_data_14E = .data:0x0000014E; // type:object size:0x2 data:2byte lbl_1_data_150 = .data:0x00000150; // type:object size:0x4 data:4byte -lbl_1_data_154 = .data:0x00000154; // type:object size:0x24 data:4byte -lbl_1_data_178 = .data:0x00000178; // type:object size:0x9 data:string -lbl_1_data_181 = .data:0x00000181; // type:object size:0x3 data:string +lbl_1_data_154 = .data:0x00000154; // type:object size:0x4 data:4byte +lbl_1_data_178 = .data:0x00000178; // type:object size:0x9 scope:local data:string +lbl_1_data_181 = .data:0x00000181; // type:object size:0x3 scope:local data:string lbl_1_data_184 = .data:0x00000184; // type:object size:0x4 data:4byte jumptable_1_data_188 = .data:0x00000188; // type:object size:0x1C scope:local lbl_1_data_1A4 = .data:0x000001A4; // type:object size:0x10 @@ -134,24 +134,24 @@ lbl_1_data_1BC = .data:0x000001BC; // type:object size:0x4 data:float lbl_1_data_1C0 = .data:0x000001C0; // type:object size:0x4 data:float jumptable_1_data_1C4 = .data:0x000001C4; // type:object size:0x20 scope:local lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0x2C -lbl_1_data_210 = .data:0x00000210; // type:object size:0x19 data:string -lbl_1_data_229 = .data:0x00000229; // type:object size:0x24 data:string +lbl_1_data_210 = .data:0x00000210; // type:object size:0x19 scope:local data:string +lbl_1_data_229 = .data:0x00000229; // type:object size:0x24 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte -lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x8 data:4byte -lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x8 data:2byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x2 data:2byte lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:float lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:float lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:float -lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x8 data:float +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:float lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:4byte lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte 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:0x8 data:4byte +lbl_1_bss_48 = .bss:0x00000048; // 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 diff --git a/configure.py b/configure.py index d02c2cb0..755bf193 100644 --- a/configure.py +++ b/configure.py @@ -1312,7 +1312,7 @@ config.libs = [ Rel( "m463Dll", # Panel Panic 9 Player objects={ - Object(NonMatching, "REL/m463Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m463Dll/main.c"), }, ), Rel( diff --git a/include/game/hsfanim.h b/include/game/hsfanim.h index db94ac1e..198a4fc6 100644 --- a/include/game/hsfanim.h +++ b/include/game/hsfanim.h @@ -69,7 +69,7 @@ typedef struct { /* 0x2C */ s16 unk2C; /* 0x2E */ GXColor unk2E[4]; /* 0x3E */ GXColor unk3E[4]; -} HsfanimStruct00; // Size unknown +} HsfanimStruct00; // Size (min:0x4E, max:0x50) typedef struct { /* 0x00 */ u16 unk00; diff --git a/src/REL/m409Dll/player.c b/src/REL/m409Dll/player.c index fcf6a8c1..26330990 100644 --- a/src/REL/m409Dll/player.c +++ b/src/REL/m409Dll/player.c @@ -7,7 +7,7 @@ #include "game/hsfmotion.h" #include "game/pad.h" #include "game/sprite.h" -#include "math.h" +#include "ext_math.h" // bss omObjData *lbl_1_bss_3A0[4]; @@ -254,8 +254,8 @@ void fn_1_7344(omObjData *arg0) lbl_1_bss_104 = temp_r31->unk0 + 1; } if (temp_r31->unk60 == 0) { - temp_f29 = (180.0 * (atan2((temp_r30->unk0.x - temp_r31->unk24.x), (temp_r30->unk0.z - temp_r31->unk24.z)) / M_PI)); - temp_f30 = (180.0 * (atan2((temp_r31->unk24.y - temp_r30->unk0.y), (temp_r31->unk24.z - temp_r30->unk0.z)) / M_PI)); + temp_f29 = atan2d(temp_r30->unk0.x - temp_r31->unk24.x, temp_r30->unk0.z - temp_r31->unk24.z); + temp_f30 = atan2d(temp_r31->unk24.y - temp_r30->unk0.y, temp_r31->unk24.z - temp_r30->unk0.z); temp_f30 *= (1.0f - (0.015f * ABS(temp_f30))); temp_r31->unk3C.x = fn_1_AD40(temp_r31->unk3C.x, temp_f30, 0.5f); temp_r31->unk3C.y = fn_1_AD40(temp_r31->unk3C.y, temp_f29, 0.5f); @@ -524,7 +524,7 @@ void fn_1_8838(unkStruct8 *arg0) if (temp_r31->unk74 > 90.0f) { temp_r31->unk74 = 90.0f; } - temp_f31 = sin((M_PI * temp_r31->unk74) / 180.0); + temp_f31 = sind(temp_r31->unk74); temp_f30 = cosd(temp_r31->unk74); sp18.x = temp_r30->unk0.x - temp_r31->unk58.x; sp18.y = temp_r30->unk0.y - temp_r31->unk58.y; @@ -558,7 +558,7 @@ void fn_1_8838(unkStruct8 *arg0) if (temp_r31->unk74 > 90.0f) { temp_r31->unk74 = 90.0f; } - temp_f31 = sin((M_PI * temp_r31->unk74) / 180.0); + temp_f31 = sind(temp_r31->unk74); sp18.x = temp_r29->unkC.x - temp_r31->unk58.x; sp18.y = temp_r29->unkC.y - temp_r31->unk58.y; sp18.z = temp_r29->unkC.z - temp_r31->unk58.z; @@ -925,10 +925,10 @@ void fn_1_962C(omObjData *arg0) fn_1_A584(var_r31); Hu3DModelPosSet(var_r31->unk0, var_r31->unkC.x, var_r31->unkC.y, var_r31->unkC.z); - var_f31 = sin((var_r31->unk4C * M_PI) / 180.0); + var_f31 = sind(var_r31->unk4C); var_r31->unk4C += 3.0f; Hu3DModelRotSet( - var_r31->unk0, 8.0 * sin((var_r31->unk4C * 0.3 * M_PI) / 180.0), var_r31->unk4C * 0.05f, (-var_r31->unk18.z * 0.25f) + (var_f31 * 8.0f)); + var_r31->unk0, 8.0 * sind(var_r31->unk4C * 0.3), var_r31->unk4C * 0.05f, (-var_r31->unk18.z * 0.25f) + (var_f31 * 8.0f)); } if (lbl_1_bss_108 == 2 && var_r27 >= arg0->work[0]) { @@ -977,7 +977,7 @@ s32 fn_1_A584(unkStruct10 *arg0) arg0->unkC.x += sp14.x; arg0->unkC.y += sp14.y; arg0->unkC.z += sp14.z; - var_f31 = (180.0 * (atan2(sp14.x, sp14.y) / M_PI)); + var_f31 = atan2d(sp14.x, sp14.y); if (var_f31 > 180.0f) { var_f31 -= 360.0f; } @@ -1000,7 +1000,7 @@ s32 fn_1_A584(unkStruct10 *arg0) var_r31->unkC.x += sp8.x * (temp_f29 - temp_f30); var_r31->unkC.y += sp8.y * (temp_f29 - temp_f30); var_r31->unkC.z += sp8.z * (temp_f29 - temp_f30); - var_f31 = (180.0 * (atan2(sp8.x, sp8.y) / M_PI)); + var_f31 = atan2d(sp8.x, sp8.y); if (var_f31 > 180.0f) { var_f31 -= 360.0f; } diff --git a/src/REL/m463Dll/main.c b/src/REL/m463Dll/main.c new file mode 100755 index 00000000..a964b9ca --- /dev/null +++ b/src/REL/m463Dll/main.c @@ -0,0 +1,1423 @@ +#include "game/audio.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/esprite.h" +#include "game/gamework_data.h" +#include "game/hsfanim.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/sprite.h" +#include "game/window.h" +#include "game/wipe.h" + +#include "ext_math.h" + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ float unk08; + /* 0x0C */ s32 unk0C; +} StructBss51C; // Size 0x10 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ float unk04[3]; +} StructBss35C; // Size 0x10 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x00 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ s32 unk20; + /* 0x24 */ s32 unk24; + /* 0x28 */ float unk28; + /* 0x2C */ float unk2C; + /* 0x30 */ char unk30[4]; + /* 0x34 */ float unk34; + /* 0x38 */ s32 unk38; + /* 0x3C */ s32 unk3C; + /* 0x40 */ s32 unk40; + /* 0x44 */ s32 unk44; + /* 0x48 */ s32 unk48; + /* 0x48 */ s32 unk4C; + /* 0x50 */ s32 unk50; + /* 0x54 */ s16 unk54; + /* 0x56 */ char unk56[2]; + /* 0x58 */ s32 unk58; + /* 0x5C */ s32 unk5C; +} StructBss330Data; // Size 0x60 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ float unk08; + /* 0x0C */ float unk0C; + /* 0x10 */ float unk10; + /* 0x14 */ float unk14; +} StructData134; // Size 0x18 + +s16 fn_1_4474(void); +void fn_1_659C(omObjData* arg0); + +StructBss51C lbl_1_bss_51C[9]; +StructBss35C lbl_1_bss_35C[28]; +omObjData* lbl_1_bss_358; +omObjData* lbl_1_bss_354; +omObjData* lbl_1_bss_330[9]; +omObjData* lbl_1_bss_32C; +HsfanimStruct00 lbl_1_bss_5C[9]; +s32 lbl_1_bss_58; +s32 lbl_1_bss_54; +s32 lbl_1_bss_50; +char lbl_1_bss_4C[4]; // unused +s32 lbl_1_bss_48; +s32 lbl_1_bss_44; +Process* lbl_1_bss_40; +s32 lbl_1_bss_3C; +s32 lbl_1_bss_38; +s32 lbl_1_bss_34; +char lbl_1_bss_30[4]; // unused +float lbl_1_bss_2C; +float lbl_1_bss_28; +float lbl_1_bss_24; +float lbl_1_bss_20; +s32 lbl_1_bss_1C; +s32 lbl_1_bss_18; +s32 lbl_1_bss_14; +char lbl_1_bss_E[6]; // unused +s16 lbl_1_bss_C; +char lbl_1_bss_8[4]; // unused +s32 lbl_1_bss_4; +s32 lbl_1_bss_0; + +s32 lbl_1_data_0[9] = { + DATA_MAKE_NUM(DATADIR_M458, 38), + DATA_MAKE_NUM(DATADIR_M458, 38), + DATA_MAKE_NUM(DATADIR_M458, 38), + DATA_MAKE_NUM(DATADIR_M458, 38), + DATA_MAKE_NUM(DATADIR_M458, 38), + DATA_MAKE_NUM(DATADIR_M458, 38), + DATA_MAKE_NUM(DATADIR_M458, 38), + DATA_MAKE_NUM(DATADIR_M458, 38), + DATA_MAKE_NUM(DATADIR_M458, 38) +}; + +s32 lbl_1_data_24[9] = { 0 }; + +s32 lbl_1_data_48[9] = { + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 2), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 3), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 5), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 6), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 47), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 26), + DATA_MAKE_NUM(DATADIR_M458, 0), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 23), +}; + +u32 lbl_1_data_6C[9] = { 0, 0, 0, 0, 0, 0, 0, 1, 0 }; + +u32 lbl_1_data_90[] = { + DATA_MAKE_NUM(DATADIR_BKOOPA, 8), + 0, + 0, + DATA_MAKE_NUM(DATADIR_BKOOPA, 10), + 0, + DATA_MAKE_NUM(DATADIR_M458, 42), + DATA_MAKE_NUM(DATADIR_M458, 40), + DATA_MAKE_NUM(DATADIR_M458, 41), + DATA_MAKE_NUM(DATADIR_M458, 39) +}; + +u8 lbl_1_data_B4[9] = { 0, 0, 0, 1, 1, 1, 0, 1, 1 }; +u8 lbl_1_data_BD[9] = { 0, 0, 0, 1, 1, 1, 0, 1, 1 }; +s32 lbl_1_data_C8[9] = { 8, 8, 8, 0, 0, 8, 8, 8, 8 }; +s32 lbl_1_data_EC[9] = { 0, 0, 0, 0, 3, 0, 0, 0, 0 }; +s32 lbl_1_data_110[9] = { 8, 8, 8, 8, 8, 8, 8, 8, 8 }; + +StructData134 lbl_1_data_134 = { 0 }; + +s16 lbl_1_data_14C = -1; +s16 lbl_1_data_14E = -1; +s32 lbl_1_data_150 = -1; +s32 lbl_1_data_154 = -1; + +// unused +float lbl_1_data_158[] = { -90.0f, 0.0f, 525.0f, 180.0f, 90.0f, 0.0f, 525.0f, 180.0f }; + +void fn_1_A0(void) { + if (HuPadBtnDown[0] & PAD_BUTTON_B) { + Center.x = lbl_1_bss_330[0]->trans.x; + Center.y = lbl_1_bss_330[0]->trans.y; + Center.z = lbl_1_bss_330[0]->trans.z; + } + Center.x += 10.0 * (((HuPadBtn[0] & PAD_BUTTON_RIGHT) != 0) - ((HuPadBtn[0] & PAD_BUTTON_LEFT) != 0)); + Center.z -= 10.0 * (((HuPadBtn[0] & PAD_BUTTON_UP) != 0) - ((HuPadBtn[0] & PAD_BUTTON_DOWN) != 0)); + Center.y += 30.0 * ((HuPadTrigL[0] - HuPadTrigR[0]) / 128.0); + CZoom += 25.0 * (((HuPadBtn[0] & PAD_BUTTON_X) != 0) - ((HuPadBtn[0] & PAD_BUTTON_Y) != 0)); + CRot.y += HuPadSubStkX[0] / 16.0; + CRot.x += HuPadSubStkY[0] / -16.0; + print8(64, 392, 1.0f, "%f,%f,%f", Center.x, Center.y, Center.z); + print8(64, 408, 1.0f, "%f,%f,%f", CRot.x, CRot.y, CRot.z); + print8(64, 424, 1.0f, "%f", CZoom); +} + +s32 lbl_1_data_184 = -1; + +void fn_1_4C8(omObjData* arg0) { + ModelData* temp_r24; + ModelData* temp_r29; + float temp_f31; + float temp_f30; + float var_f28; + float temp_f27; + float temp_f26; + float temp_f25; + float var_f24; + float var_f23; + float var_f22; + float var_f21; + float var_f20; + StructBss330Data* temp_r31; + s16 var_r28; + s32 temp_r27; + s32 var_r26; + s32 var_r25; + s32 var_r23; + s32 var_r22; + StructBss330Data* temp_r21; + s32 var_r20; + s32 var_r19; + StructBss330Data* temp_r18; + s32 var_r17; + float sp180[2]; + s32 spE0; + s32 spDC; + s32 spD8; + s32 spD4; + s32 spD0; + s32 spCC; + s32 spC8; + StructBss330Data* spC4; + s32 spC0; + s32 spBC; + StructBss330Data* spB8; + s32 spB4; + u32 spB0; + float spAC; + s32 spA8; + s32 spA4; + s32 spA0; + StructBss330Data* sp9C; + ModelData* sp98; + float sp94; + float sp90; + s32 sp8C; + s32 sp88; + + temp_r31 = arg0->data; + var_f23 = 0.0f; + var_f22 = 0.0f; + var_f28 = 0.0f; + var_r22 = 0; + var_r28 = -1; + temp_r31->unk2C = temp_r31->unk34 = 0.0f; + if (lbl_1_bss_50 == 1005 && temp_r31->unk18 == 3 && temp_r31->unk1C >= 360) { + if (temp_r31->unk1C == 360) { + temp_r31->unk14 = rand8() % 15; + } + if (temp_r31->unk0C != -1) { + var_r22 = (HuPadBtnDown[temp_r31->unk0C] & PAD_BUTTON_A) ? 1 : 0; + } else { + temp_r31->unk14 += (temp_r31->unk14 < 0x10000); + if (temp_r31->unk14 == 30) { + var_r22 = 1; + } + } + } + if (temp_r31->unk00 < 4 && lbl_1_bss_50 == 1002) { + var_r26 = 0; + var_r25 = 0; + if (temp_r31->unk0C != -1) { + var_r26 = (HuPadStkX[temp_r31->unk0C] < -20) ? -1 + : (HuPadStkX[temp_r31->unk0C] > 20) ? 1 : 0; + var_r25 = (-HuPadStkY[temp_r31->unk0C] < -20) ? -1 + : (-HuPadStkY[temp_r31->unk0C] > 20) ? 1 : 0; + var_r22 = (HuPadBtnDown[temp_r31->unk0C] & PAD_BUTTON_A) ? 1 : 0; + } else { + if (lbl_1_bss_54 == 1) { + temp_r31->unk14 = rand8() % 64 + 30; + } + temp_r31->unk14 -= (temp_r31->unk14 > 0); + if (temp_r31->unk14 == 1) { + var_r26 = (temp_r31->unk3C > 0 ? -1 : 1) * (rand8() % 2); + var_r25 = (temp_r31->unk40 > 0 ? -1 : 1) * (rand8() % 2); + } + if (temp_r31->unk14 == 0) { + var_r22 = (rand8() % 64 == 1) ? 1 : 0; + } + } + if (lbl_1_bss_54 >= 50 || temp_r31->unk50 != 0) { + var_r26 = var_r25 = 0; + } + for (var_r17 = 0; var_r17 < 4; var_r17++) { + temp_r21 = lbl_1_bss_330[var_r17]->data; + spD0 = 0; + spCC = 0; + if (var_r17 != temp_r31->unk00) { + if (fabs(500.0 * temp_r31->unk3C - arg0->trans.x) < 10.0) { + spE0 = spDC = (arg0->trans.x < -250.0) ? -1 + : (arg0->trans.x > 250.0) ? 1 : 0; + } else { + spE0 = (arg0->trans.x < 0.0f) ? -1 : 0; + spDC = spE0 + 1; + } + if (fabs(500.0 * temp_r31->unk40 - arg0->trans.z) < 10.0) { + spD8 = spD4 = (arg0->trans.z < -250.0) ? -1 + : (arg0->trans.z > 250.0) ? 1 : 0; + } else { + spD8 = (arg0->trans.z < 0.0f) ? -1 : 0; + spD4 = spD8 + 1; + } + for (var_r20 = spE0; var_r20 <= spDC; var_r20++) { + for (var_r19 = spD8; var_r19 <= spD4; var_r19++) { + if (temp_r21->unk38 == (1 + var_r20 + var_r26) + (1 + var_r19 + var_r25) * 3) { + var_r26 = var_r25 = 0; + } + if (temp_r21->unk38 == (1 + var_r20 + var_r26) + (1 + var_r19) * 3) { + var_r26 = 0; + } + if (temp_r21->unk38 == (1 + var_r20) + (1 + var_r19 + var_r25) * 3) { + var_r25 = 0; + } + } + } + } + } + if (var_r26 * (500.0 * temp_r31->unk3C - arg0->trans.x) < 0.0) { + temp_r31->unk3C += var_r26; + } + if (fabs(500.0 * temp_r31->unk3C - arg0->trans.x) < 10.0 && var_r26 != 0 && temp_r31->unk3C + var_r26 >= -1 && temp_r31->unk3C + var_r26 <= 1) { + temp_r31->unk3C += var_r26; + } + var_f23 = ((500.0 * temp_r31->unk3C - arg0->trans.x) / 0.25) / 1.75; + if (var_r25 * (500.0 * temp_r31->unk40 - arg0->trans.z) < 0.0) { + temp_r31->unk40 += var_r25; + } + if (fabs(500.0 * temp_r31->unk40 - arg0->trans.z) < 10.0 && var_r25 != 0 && temp_r31->unk40 + var_r25 >= -1 && temp_r31->unk40 + var_r25 <= 1) { + temp_r31->unk40 += var_r25; + } + var_f22 = ((500.0 * temp_r31->unk40 - arg0->trans.z) / -0.25) / 1.75; + temp_r31->unk38 = (temp_r31->unk3C + 1) + (temp_r31->unk40 + 1) * 3; + } + if (temp_r31->unk18 == 0) { + if (lbl_1_bss_50 > (temp_r31->unk00 < 4 ? 1001 : 1003) && lbl_1_bss_50 < 1006) { + temp_f31 = 0.25 * var_f23; + temp_f30 = 0.25 * -var_f22; + { + Vec sp1A0 = { 0.0f, 0.0f, 0.0f }; + Mtx sp1D0; + + sp1A0.x = temp_f31; + sp1A0.z = temp_f30; + PSMTXRotRad(sp1D0, 'y', MTXDegToRad(CRot.y)); + PSMTXMultVec(sp1D0, &sp1A0, &sp1A0); + temp_f31 = sp1A0.x; + temp_f30 = sp1A0.z; + var_f28 = sqrtf(temp_f31 * temp_f31 + temp_f30 * temp_f30); + if (var_f28 >= 0.5f) { + if (var_f28 < 10.0f) { + temp_r31->unk2C = temp_f31; + temp_r31->unk34 += temp_f30; + } else { + temp_f31 /= var_f28; + temp_f30 /= var_f28; + var_f28 = 10.0f; + temp_r31->unk2C = temp_f31 * var_f28; + temp_r31->unk34 = temp_f30 * var_f28; + } + temp_r31->unk28 = var_f28; + arg0->rot.y = atan2d(temp_r31->unk2C, temp_r31->unk34); + if (temp_r31->unk28 >= 8.0f) { + var_r28 = 2; + } else { + var_r28 = 2; + } + } else { + var_r28 = 0; + } + } + } + } + arg0->trans.x += 1.75f * temp_r31->unk2C; + arg0->trans.z += 1.75f * temp_r31->unk34; + switch (lbl_1_bss_50) { + case 1001: + case 1003: + if (lbl_1_bss_50 != (temp_r31->unk00 < 4 ? 1001 : 1003)) { + break; + } + if (lbl_1_bss_54 == 0) { + Hu3DModelAttrReset(arg0->model[0], HU3D_ATTR_DISPOFF); + if (temp_r31->unk00 < 4) { + temp_r31->unk38 = (temp_r31->unk00 == 0) ? 0 + : (temp_r31->unk00 == 1) ? 2 + : (temp_r31->unk00 == 2) ? 6 : 8; + temp_r31->unk3C = temp_r31->unk38 % 3 - 1; + temp_r31->unk40 = temp_r31->unk38 / 3 - 1; + arg0->trans.x = 500.0 * temp_r31->unk3C; + arg0->trans.z = 500.0 * temp_r31->unk40; + } else { + do { + temp_r31->unk38 = rand8() % 9; + for (spC8 = 0; spC8 < temp_r31->unk00; spC8++) { + spC4 = lbl_1_bss_330[spC8]->data; + if (temp_r31->unk38 == spC4->unk38) { + break; + } + } + } while (spC8 != temp_r31->unk00); + temp_r31->unk3C = temp_r31->unk38 % 3 - 1; + temp_r31->unk40 = temp_r31->unk38 / 3 - 1; + arg0->trans.x = 500.0 * temp_r31->unk3C; + arg0->trans.z = 500.0 * temp_r31->unk40; + } + } + if (lbl_1_bss_54 <= 30) { + if (temp_r31->unk08 == -1) { + Hu3DMotionTimeSet(arg0->model[0], 138.0f); + } + arg0->trans.y = 2400.0 * (1.0 - lbl_1_bss_54 / 30.0); + } + if (temp_r31->unk08 != -1 && lbl_1_bss_54 == 30) { + var_r28 = 4; + } + if (lbl_1_bss_54 == (temp_r31->unk08 != -1 ? 10 : 60) + 30) { + var_r28 = 0; + } + if (lbl_1_bss_54 == 30) { + lbl_1_data_134.unk04 += 50; + } + if (lbl_1_bss_54 == 30 && (temp_r31->unk00 == 0 || temp_r31->unk00 == 4)) { + HuAudFXPlay(0x33D); + } + break; + case 1002: + if (lbl_1_bss_54 != 0 && temp_r31->unk00 < 4 && (var_r22 != 0 || lbl_1_bss_0 == 0) && temp_r31->unk50 == 0) { + temp_r31->unk50 = 1; + lbl_1_bss_14++; + lbl_1_bss_51C[temp_r31->unk38].unk08 = 83.333336f; + } + if (temp_r31->unk00 != 0) { + break; + } + if (lbl_1_bss_54 == 0) { + lbl_1_bss_0 = 300; + lbl_1_data_14E = MGSeqTimerCreate(10); + HuWinMesMaxSizeGet(1, sp180, MAKE_MESSID(40, 25)); + lbl_1_bss_C = HuWinCreate(-10000.0f, 400.0f, sp180[0], sp180[1], 1); + HuWinBGTPLvlSet(lbl_1_bss_C, 0.0f); + HuWinMesSpeedSet(lbl_1_bss_C, 0); + HuWinMesSet(lbl_1_bss_C, MAKE_MESSID(40, 25)); + } + lbl_1_bss_0--; + if (lbl_1_data_14E != -1) { + MGSeqParamSet(lbl_1_data_14E, 1, (lbl_1_bss_0 + 59) / 60); + } + if (lbl_1_bss_14 >= 4) { + lbl_1_bss_54 = 50; + MGSeqParamSet(lbl_1_data_14E, 2, -1); + lbl_1_data_14E = -1; + HuWinExCleanup(lbl_1_bss_C); + } + if (lbl_1_bss_54 == 50) { + for (var_r23 = 0; var_r23 < 4; var_r23++) { + temp_r18 = lbl_1_bss_330[var_r23]->data; + if (!(fabs(500.0 * temp_r18->unk3C - lbl_1_bss_330[var_r23]->trans.x) < 1.0) + || !(fabs(500.0 * temp_r18->unk40 - lbl_1_bss_330[var_r23]->trans.z) < 1.0) + || temp_r18->unk20 != 0) + { + break; + } + } + if (var_r23 == 4) { + lbl_1_bss_54 = 60; + } + } + break; + case 1005: + if (temp_r31->unk5C != 0) { + if (arg0->trans.y < -15000.0f) { + Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF); + } else { + arg0->trans.y -= 77.0f; + } + } + break; + case 1006: + if (lbl_1_bss_54 <= 1) { + Hu3DModelAttrSet(arg0->model[temp_r31->unk44 + 2], HU3D_ATTR_DISPOFF); + lbl_1_bss_51C[temp_r31->unk44].unk0C = 0; + } + if (lbl_1_bss_51C[temp_r31->unk38].unk0C != 0 || temp_r31->unk5C != 0) { + break; + } + if (lbl_1_bss_54 == 120) { + Hu3DModelAttrReset(lbl_1_bss_32C->model[temp_r31->unk38 + 1], HU3D_MOTATTR_PAUSE); + } + if (lbl_1_bss_54 == 153) { + Hu3DModelAttrSet(lbl_1_bss_32C->model[temp_r31->unk38 + 1], HU3D_MOTATTR_PAUSE); + } + if (lbl_1_bss_54 == 183) { + Hu3DModelAttrReset(lbl_1_bss_32C->model[temp_r31->unk38 + 1], HU3D_MOTATTR_PAUSE); + } + if (lbl_1_bss_54 == 210) { + spBC = 0; + for (spC0 = 0; spC0 < 9; spC0++) { + spB8 = lbl_1_bss_330[spC0]->data; + spBC += (lbl_1_bss_51C[spB8->unk38].unk0C == 0 && spB8->unk5C == 0); + } + var_r28 = 7; + HuAudFXPlayVol(0x7F7 + (temp_r31->unk08 != -1 ? temp_r31->unk08 : 8), 1651 / (spBC + 12)); + } + if (lbl_1_bss_54 >= 210 && lbl_1_bss_54 <= 214) { + s32 sp1AC[] = { 0, -12, -36, 0, 0, -12, -36, -48, 0 }; + float sp194[] = { 150.0f, 175.0f, 205.0f }; + float sp188[] = { 100.0f, 170.0f, 260.0f }; + + spB4 = temp_r31->unk38 % 3 - 1; + spB0 = temp_r31->unk38 / 3; + spAC = (lbl_1_bss_54 - 210) / 4.0; + temp_f26 = (lbl_1_bss_54 - 210) / 4.0; + temp_f26 = (temp_f26 > 1.0f) ? 1.0f : temp_f26; + espAttrReset(lbl_1_data_24[temp_r31->unk38], HUSPR_ATTR_DISPOFF); + espPosSet(lbl_1_data_24[temp_r31->unk38], + 290.0f + spB4 * sp194[spB0], + sp188[spB0] + 0.5 * (64.0f * (1.0f - spAC) * 0.5 + sp1AC[temp_r31->unk08 != -1 ? temp_r31->unk08 : 8])); + espScaleSet(lbl_1_data_24[temp_r31->unk38], 0.5 * temp_f26, 0.5 * temp_f26); + } + if (lbl_1_bss_54 == 270) { + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_PAUSE); + espAttrSet(lbl_1_data_24[temp_r31->unk38], HUSPR_ATTR_DISPOFF); + } + if (lbl_1_bss_54 == 290) { + spA0 = 0; + for (spA4 = 0; spA4 < 9; spA4++) { + sp9C = lbl_1_bss_330[spA4]->data; + spA0 += (lbl_1_bss_51C[sp9C->unk38].unk0C == 0 && sp9C->unk5C == 0); + } + spA8 = HuAudFXPlayVol(0x800 + (temp_r31->unk08 != -1 ? temp_r31->unk08 : 8), 1651 / (spA0 + 12)); + HuAudFXFadeOut(spA8, 0x9C4); + } + if (lbl_1_bss_54 >= 315) { + arg0->trans.y -= 77.0f; + } + break; + case 1007: + if (temp_r31->unk00 == lbl_1_bss_38) { + var_r28 = 8; + if (temp_r31->unk00 >= 4 && temp_r31->unk08 != -1 && lbl_1_bss_54 == 1) { + HuAudFXPlay(0x809 + temp_r31->unk08); + } + if (temp_r31->unk08 == -1 && lbl_1_bss_54 == 1) { + HuAudFXPlay(0x3A); + } + } else if (arg0->trans.y < -40000.0f) { + Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF); + } else { + arg0->trans.y -= 77.0f; + } + break; + } + switch (temp_r31->unk18) { + case 0: + temp_r31->unk1C++; + break; + case 1: + temp_r31->unk1C++; + if (temp_r31->unk1C <= 60) { + arg0->rot.y = -180.0 * (temp_r31->unk1C / 60.0); + } else { + Hu3DMotionTimeSet(arg0->model[0], 120.0f); + var_r28 = 0; + temp_r31->unk18 = 0; + temp_r31->unk1C = 0; + } + break; + case 2: + temp_r31->unk1C++; + break; + case 3: + if (temp_r31->unk1C == 0) { + temp_r31->unk48 = 6; + temp_r31->unk4C = 0; + } + if (temp_r31->unk1C < 360) { + temp_r24 = &Hu3DData[arg0->model[1]]; + if (temp_r31->unk1C == 0) { + Hu3DModelAttrReset(arg0->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(arg0->model[1], arg0->trans.x, arg0->trans.y + 625.0f, arg0->trans.z); + Hu3DModelScaleSet(arg0->model[1], 0.1f, 0.1f, 0.1f); + Hu3DModelTPLvlSet(arg0->model[1], 1.0f); + temp_r31->unk4C = 0; + if (lbl_1_bss_18 == 0) { + HuAudFXPlay(0x7F4); + lbl_1_data_184 = HuAudFXPlay(0x7F3); + } + lbl_1_bss_18++; + } + temp_r24->rot.y = temp_r31->unk4C % 360; + temp_r31->unk4C += 25; + if (temp_r31->unk1C < 180) { + var_f20 = 0.0f; + var_f21 = 1.0f; + } else { + var_f20 = 1.0f; + var_f21 = 0.5f; + } + temp_r24->scale.x = var_f20 + var_f21 * sind((float) (temp_r31->unk1C % 180)); + temp_r24->scale.y = temp_r24->scale.z = temp_r24->scale.x; + if (temp_r31->unk1C < 180) { + temp_r31->unk1C += 6; + } else { + temp_r31->unk1C += 18; + } + if (temp_r31->unk1C >= 360) { + temp_r31->unk1C = 360; + Hu3DModelRotSet(arg0->model[1], 0.0f, 0.0f, 0.0f); + } + } else { + sp98 = &Hu3DData[arg0->model[1]]; + temp_r31->unk1C += 4; + if (temp_r31->unk1C > 720) { + temp_r31->unk1C -= 360; + } + sp98->pos.y += 0.2f * sind(temp_r31->unk1C - 360); + if (var_r22 != 0 || lbl_1_bss_0 == 0) { + lbl_1_bss_54 = 50; + temp_r31->unk18 = 4; + temp_r31->unk1C = 0; + var_r28 = 5; + } + } + break; + case 4: + temp_r31->unk1C++; + if (temp_r31->unk1C < 27) { + break; + } + temp_r29 = &Hu3DData[arg0->model[1]]; + temp_r27 = temp_r31->unk1C - 27; + if (temp_r27 == 0) { + if (temp_r31->unk04 != -1) { + omVibrate(temp_r31->unk04, 12, 4, 2); + } + temp_r31->unk48 = -1; + lbl_1_bss_18--; + if (lbl_1_bss_18 == 0 && lbl_1_data_184 != -1) { + HuAudFXStop(lbl_1_data_184); + lbl_1_data_184 = -1; + } + HuAudFXPlay(0x7F5); + } + if (temp_r27 == 8) { + if (temp_r31->unk54 == -1) { + lbl_1_bss_58 = temp_r31->unk00; + temp_r31->unk54 = fn_1_4474(); + Hu3DParManPosSet(temp_r31->unk54, temp_r29->pos.x, temp_r29->pos.y, temp_r29->pos.z); + temp_r31->unk58 = 150; + } + Hu3DModelAttrSet(arg0->model[1], HU3D_ATTR_DISPOFF); + } else if (temp_r27 > 8) { + if (temp_r31->unk20 == 5) { + if (Hu3DMotionTimeGet(arg0->model[0]) >= Hu3DMotionMaxTimeGet(arg0->model[0])) { + var_r28 = 0; + } + } + if (temp_r27 <= 28) { + temp_f27 = (temp_r27 - 8) / 10.0; + sp94 = (temp_r27 - 8) * 18; + temp_f27 = (temp_f27 > 1.0f) ? 2.5 : (2.5 * temp_f27); + Hu3DModelAttrReset(arg0->model[temp_r31->unk44 + 2], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(arg0->model[temp_r31->unk44 + 2], temp_r29->pos.x, temp_r29->pos.y, temp_r29->pos.z); + Hu3DModelScaleSet(arg0->model[temp_r31->unk44 + 2], temp_f27, temp_f27, temp_f27); + } + if (temp_r27 >= 45 && temp_r27 <= 65) { + temp_f25 = (temp_r27 - 45) / 5.0; + sp90 = (temp_r27 - 45) * 18; + temp_f25 = (temp_f25 > 1.0f) ? 1.0f : temp_f25; + temp_f25 = 0.0f; + Hu3DModelAttrReset(arg0->model[temp_r31->unk44 + 2], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(arg0->model[temp_r31->unk44 + 2], temp_r29->pos.x, temp_r29->pos.y - 30.0f * temp_f25, temp_r29->pos.z); + temp_r31->unk1C += 5; + } + if (temp_r27 == 158) { + temp_r31->unk18 = 0; + temp_r31->unk1C = 0; + } + } else { + if (temp_r27 < 4) { + temp_r29->pos.y += 10.0f + 0.5f * temp_r27; + temp_r29->scale.x += 0.1f * sind(4.0f * temp_r27); + temp_r29->scale.y = temp_r29->scale.z = temp_r29->scale.x; + } else { + var_f24 = 255 - (temp_r27 << 5); + var_f24 = var_f24 * (1.0f / 255); + Hu3DModelTPLvlSet(arg0->model[1], var_f24); + } + temp_r29->pos.y += -0.49f * temp_r27 * temp_r27; + } + break; + case 5: + if (temp_r31->unk1C == 0) { + Hu3DModelAttrReset(lbl_1_bss_32C->model[temp_r31->unk44 + 1], HU3D_MOTATTR_PAUSE); + lbl_1_bss_51C[temp_r31->unk44].unk0C = 0; + if (lbl_1_bss_35C->unk00 < 3) { + lbl_1_bss_35C->unk04[lbl_1_bss_35C->unk00] = 0.0f; + lbl_1_bss_35C->unk00++; + } + } + temp_r31->unk1C++; + if (temp_r31->unk1C == 60 && temp_r31->unk54 != -1) { + Hu3DParManKill(temp_r31->unk54); + temp_r31->unk54 = -1; + } + if (temp_r31->unk1C == 33) { + Hu3DModelAttrSet(lbl_1_bss_32C->model[temp_r31->unk44 + 1], HU3D_MOTATTR_PAUSE); + } + if (temp_r31->unk1C == 63) { + Hu3DModelAttrReset(lbl_1_bss_32C->model[temp_r31->unk44 + 1], HU3D_MOTATTR_PAUSE); + } + if (temp_r31->unk1C == 68 && lbl_1_bss_35C[1].unk00 < 3) { + lbl_1_bss_35C[1].unk04[lbl_1_bss_35C[1].unk00] = 0.0f; + lbl_1_bss_35C[1].unk00++; + } + if (temp_r31->unk1C == 130) { + temp_r31->unk18 = 0; + temp_r31->unk1C = 0; + } + break; + } + if ((temp_r31->unk18 == 3 || temp_r31->unk18 == 4) && temp_r31->unk48 >= 0) { + temp_r31->unk48++; + if (temp_r31->unk48 >= 6) { + sp88 = temp_r31->unk44; + for (sp8C = 0; sp8C < 50; sp8C++) { + do { + temp_r31->unk44 = rand8() % 9; + if (temp_r31->unk44 >= 9) { + break; + } + } while (lbl_1_bss_51C[temp_r31->unk44].unk0C == 0); + if (sp88 != temp_r31->unk44) { + break; + } + } + sp88 = temp_r31->unk44; + temp_r31->unk48 = 0; + Hu3DMotionTimeSet(arg0->model[1], 0.5 + sp88); + } + } + if (temp_r31->unk24 >= 0) { + var_r28 = temp_r31->unk24; + } + if (var_r28 >= 0 && var_r28 != temp_r31->unk20) { + Hu3DMotionShiftSet(arg0->model[0], + arg0->motion[var_r28], + lbl_1_data_EC[var_r28], + (temp_r31->unk08 != -1) ? lbl_1_data_C8[var_r28] : lbl_1_data_110[var_r28], + (var_r28 == 7) ? HU3D_MOTATTR_PAUSE + : (temp_r31->unk08 != -1 ? lbl_1_data_B4[var_r28] : lbl_1_data_BD[var_r28]) ? 0 + : HU3D_MOTATTR_LOOP); + temp_r31->unk20 = var_r28; + } + temp_r31->unk58 -= (temp_r31->unk58 > -1); + if (temp_r31->unk58 == 0) { + if (temp_r31->unk54 != -1) { + Hu3DParManKill(temp_r31->unk54); + temp_r31->unk54 = -1; + } + temp_r31->unk58 = -1; + } +} + +s32 lbl_1_data_1A4[4] = { 0 }; +s32 lbl_1_data_1B4 = -1; +float lbl_1_data_1B8 = 3500.0f; +float lbl_1_data_1BC = 100.0f; +float lbl_1_data_1C0 = -59.0f; + +void fn_1_3264(omObjData* arg0) { + float temp_f29; + float var_f31; + float temp_f26; + float temp_f27; + float temp_f28; + StructBss330Data* spC[9]; + ModelData* temp_r29; + ModelData* temp_r28; + s32 var_r27; + s32 i; + s32 j; + + for (i = 0; i < 9; i++) { + spC[i] = lbl_1_bss_330[i]->data; + } + lbl_1_bss_4++; + switch (lbl_1_bss_50) { + case 1002: + lbl_1_bss_34++; + lbl_1_bss_34 %= 360; + /* fallthrough */ + case 1003: + var_r27 = 0; + for (i = 0; i < 4; i++) { + if (spC[i]->unk50 == 0 || spC[i]->unk20 != 0) { + continue; + } + temp_r29 = &Hu3DData[lbl_1_bss_32C->model[spC[i]->unk38 + 1]]; + if (var_r27 == 0 && lbl_1_data_1A4[i] == 0) { + lbl_1_data_1A4[i] = 1; + var_r27 = 1; + HuAudFXPlay(0x7F6); + } + temp_r29->pos.y = 0.9 * temp_r29->pos.y + 0.1 * lbl_1_bss_51C[spC[i]->unk38].unk08; + lbl_1_bss_330[i]->trans.y = temp_r29->pos.y - -16.666666666666668; + lbl_1_bss_330[i]->rot.y = 0.0f; + } + break; + case 1004: + if (lbl_1_bss_54 <= 60) { + temp_f29 = lbl_1_bss_54 / 60.0; + temp_f29 = 1.0f - (1.0f - temp_f29) * (1.0f - temp_f29); + if (lbl_1_bss_54 == 0) { + lbl_1_bss_51C[spC[0]->unk38].unk08 = -16.666666f; + } + for (i = 0; i < 9; i++) { + temp_r28 = &Hu3DData[lbl_1_bss_32C->model[i + 1]]; + Hu3DModelPosSet(lbl_1_bss_32C->model[i + 1], + (500.0 + 200.0f * temp_f29) * (lbl_1_bss_51C[i].unk00 - 1), + 0.9 * temp_r28->pos.y + 0.1 * lbl_1_bss_51C[spC[0]->unk38].unk08, + (500.0 + 200.0f * temp_f29) * (lbl_1_bss_51C[i].unk04 - 1)); + for (j = 0; j < 9; j++) { + if (i == spC[j]->unk38) { + lbl_1_bss_330[j]->trans.x = (500.0 + 200.0f * temp_f29) * (lbl_1_bss_51C[i].unk00 - 1); + lbl_1_bss_330[j]->trans.y = temp_r28->pos.y - -16.666666666666668; + lbl_1_bss_330[j]->trans.z = (500.0 + 200.0f * temp_f29) * (lbl_1_bss_51C[i].unk04 - 1); + } + } + } + } + break; + } + { + s32 var_r26 = lbl_1_data_1B4; + float sp30[][6] = { + { 3500.0f, 0.0f, 100.0f, 0.0f, -59.0f, 0.0f }, + { 3200.0f, 0.0f, 100.0f, 0.0f, -30.0f, 0.0f }, + { 3800.0f, 0.0f, 100.0f, 0.0f, -30.0f, 0.0f }, + { 2000.0f, 0.0f, 200.0f, 0.0f, -30.0f, 0.0f }, + { 4000.0f, 0.0f, 200.0f, 0.0f, -89.0f, 0.0f }, + { 2700.0f, 0.0f, 200.0f, 0.0f, -30.0f, 0.0f } + }; + + if (lbl_1_bss_38 != -1 && lbl_1_bss_38 != 9) { + sp30[5][1] = lbl_1_bss_330[lbl_1_bss_38]->trans.x; + sp30[5][3] = lbl_1_bss_330[lbl_1_bss_38]->trans.z; + } + if (lbl_1_data_1B4 == -1) { + lbl_1_data_1B4 = 0; + lbl_1_bss_1C = 1; + lbl_1_bss_20 = 1.0f; + } + if (lbl_1_data_1B4 == 0) { + lbl_1_data_1B4 = 1; + lbl_1_bss_1C = 1; + lbl_1_bss_20 = 0.5f; + } + if (lbl_1_bss_50 == 1004 && lbl_1_bss_54 >= 1 && lbl_1_data_1B4 == 1) { + lbl_1_data_1B4 = 2; + lbl_1_bss_1C = 0; + lbl_1_bss_20 = 0.0f; + } + if (lbl_1_bss_50 == 1006 && lbl_1_bss_54 >= 270 && lbl_1_data_1B4 == 2) { + lbl_1_data_1B4 = 4; + lbl_1_bss_1C = 1; + lbl_1_bss_20 = 1.0f; + } + if (lbl_1_bss_50 == 1005 && lbl_1_data_1B4 == 4) { + lbl_1_data_1B4 = 2; + lbl_1_bss_1C = 0; + lbl_1_bss_20 = 0.0f; + } + if (lbl_1_bss_50 == 1007 && lbl_1_bss_38 != 9 && lbl_1_data_1B4 == 4) { + lbl_1_data_1B4 = 5; + lbl_1_bss_1C = 0; + lbl_1_bss_20 = 0.0f; + } + if (var_r26 != lbl_1_data_1B4 && var_r26 != -1) { + lbl_1_data_1B8 = CZoom; + lbl_1_data_1BC = Center.y; + lbl_1_bss_28 = Center.z; + lbl_1_data_1C0 = CRot.x; + lbl_1_bss_2C = CRot.y; + } + if (lbl_1_bss_20 <= 1.0f) { + if (lbl_1_bss_1C == 0) { + lbl_1_bss_20 = 1.0 - 0.95 * (1.0f - lbl_1_bss_20); + var_f31 = lbl_1_bss_20; + } else { + lbl_1_bss_20 += 0.008333333333333333; + lbl_1_bss_20 = (lbl_1_bss_20 > 1.0f) ? 1.0f : lbl_1_bss_20; + var_f31 = 0.5 + -0.5 * cosd(180.0f * lbl_1_bss_20); + } + lbl_1_bss_20 = (lbl_1_bss_20 > 1.0f) ? 1.0f : lbl_1_bss_20; + CZoom = var_f31 * sp30[lbl_1_data_1B4][0] + lbl_1_data_1B8 * (1.0f - var_f31); + Center.x = var_f31 * sp30[lbl_1_data_1B4][1] + lbl_1_bss_24 * (1.0f - var_f31); + Center.y = var_f31 * sp30[lbl_1_data_1B4][2] + lbl_1_data_1BC * (1.0f - var_f31); + Center.z = var_f31 * sp30[lbl_1_data_1B4][3] + lbl_1_bss_28 * (1.0f - var_f31); + CRot.x = var_f31 * sp30[lbl_1_data_1B4][4] + lbl_1_data_1C0 * (1.0f - var_f31); + CRot.y = var_f31 * sp30[lbl_1_data_1B4][5] + lbl_1_bss_2C * (1.0f - var_f31); + } + } + if (lbl_1_bss_50 == 1001 || lbl_1_bss_50 == 1003) { + temp_f26 = 0.0f; + temp_f27 = 0.0f; + if (lbl_1_data_134.unk00 % 2 >= 0) { + lbl_1_data_134.unk08 = lbl_1_data_134.unk10; + lbl_1_data_134.unk0C = lbl_1_data_134.unk14; + do { + lbl_1_data_134.unk10 = 2.0 * (rand8() / 255.0) - 1.0; + lbl_1_data_134.unk14 = 2.0 * (rand8() / 255.0) - 1.0; + lbl_1_data_134.unk10 = 0.0f; + temp_f28 = (lbl_1_data_134.unk10 - lbl_1_data_134.unk08) * (lbl_1_data_134.unk10 - lbl_1_data_134.unk08) + (lbl_1_data_134.unk14 - lbl_1_data_134.unk0C) * (lbl_1_data_134.unk14 - lbl_1_data_134.unk0C); + } while (sqrtf(temp_f28) < 0.75); + } + lbl_1_data_134.unk04 = (lbl_1_data_134.unk04 > 24) ? 24 + : (lbl_1_data_134.unk04 > 0) ? lbl_1_data_134.unk04 : 0; + temp_f26 = lbl_1_data_134.unk08; + temp_f27 = lbl_1_data_134.unk0C; + temp_f26 *= lbl_1_data_134.unk04 * 2; + temp_f27 *= lbl_1_data_134.unk04 * 2; + lbl_1_data_134.unk00 = !lbl_1_data_134.unk00; + lbl_1_data_134.unk04 = (lbl_1_data_134.unk04 > 24) ? 23 + : (lbl_1_data_134.unk04 - 1 > 0) ? (lbl_1_data_134.unk04 - 1) : 0; + Center.x = 0.0f; + Center.y = 100.0f + temp_f27; + } +} + +s16 fn_1_4474(void) { + AnimData* var_r29; + void* var_r28; + s16 var_r31; + s16 var_r30; + HsfanimStruct00 sp8 = { + 0x96, + { 0x00, 0x00 }, + 50.0f, + 0.0f, + 65.0f, + { 0.0f, -0.195f, 0.0f }, + 80.0f, + 0.99f, + 40.0f, + 0.999f, + 4, + { + { 0xFF, 0xFF, 0x20, 0xFF }, + { 0xFF, 0xFF, 0x00, 0xFF }, + { 0xFF, 0xFF, 0x80, 0xFF }, + { 0xFF, 0xFF, 0xFF, 0xFF } + }, + { + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 }, + { 0xFF, 0xFF, 0xFF, 0x00 } + } + }; + + lbl_1_bss_5C[lbl_1_bss_58] = sp8; + var_r28 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_BOARD, 107), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r29 = HuSprAnimRead(var_r28); + var_r31 = Hu3DParManCreate(var_r29, 40, &lbl_1_bss_5C[lbl_1_bss_58]); + Hu3DParManAttrSet(var_r31, 8 | 0x100); + Hu3DParManRotSet(var_r31, 0.0f, 0.0f, 0.0f); + Hu3DParManVecSet(var_r31, 0.0f, 0.4f, 0.2f); + var_r30 = Hu3DParManModelIDGet(var_r31); + Hu3DModelLayerSet(var_r30, 2); + Hu3DParticleBlendModeSet(var_r30, 0); + return var_r31; +} + +void fn_1_45F8(omObjData* arg0) { + StructBss330Data* sp14[9]; + float spC[2]; + s32 sp8; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r30; + s32 i; + + for (i = 0; i < 28; i++) { + s32 sp38[] = { + 0x7F1, 0x7F2, 0x7F7, 0x7F8, + 0x7F9, 0x7FA, 0x7FB, 0x7FC, + 0x7FD, 0x7FE, 0x7FF, 0x800, + 0x801, 0x802, 0x803, 0x804, + 0x7FB, 0x7FC, 0x7FD, 0x7FE, + 0x7FF, 0x800, 0x801, 0x802, + 0x803, 0x804, 0x7FB, 0x7FC + }; + + if (lbl_1_bss_35C[i].unk00 > 3) { + lbl_1_bss_35C[i].unk00 = 3; + } + if (lbl_1_bss_35C[i].unk00 > 0) { + sp8 = HuAudFXPlay(sp38[i]); + lbl_1_bss_35C[i].unk00--; + } + } + for (i = 0; i < 9; i++) { + sp14[i] = lbl_1_bss_330[i]->data; + } + if (omSysExitReq != 0 && WipeStatGet() == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_659C; + } + switch (lbl_1_bss_50) { + case 1000: + if (WipeStatGet() != 0) { + break; + } + lbl_1_bss_50++; + lbl_1_bss_54 = 0; + for (i = 0; i < 9; i++) { + if (sp14[i]->unk54 != -1) { + Hu3DParManKill(sp14[i]->unk54); + sp14[i]->unk54 = -1; + } + } + break; + case 1001: + lbl_1_bss_54++; + if (lbl_1_bss_54 == 90 && lbl_1_data_14C < 0) { + lbl_1_data_14C = MGSeqStartCreate(); + } + if (lbl_1_bss_54 >= 90 && lbl_1_data_150 == -1 && (MGSeqStatGet(lbl_1_data_14C) & 0x10)) { + lbl_1_data_150 = HuAudSeqPlay(0x49); + } + if (lbl_1_bss_54 >= 90 && MGSeqStatGet(lbl_1_data_14C) == 0 && lbl_1_data_14C >= 0) { + lbl_1_bss_50 = 1002; + lbl_1_bss_54 = 0; + } + break; + case 1002: + lbl_1_bss_54 += (lbl_1_bss_54 < 30); + if (lbl_1_bss_54 >= 60) { + lbl_1_bss_50++; + lbl_1_bss_54 = 0; + } + break; + case 1003: + lbl_1_bss_54++; + if (lbl_1_bss_54 == (sp14[1]->unk08 == -1 ? 120 : 60) + 30) { + lbl_1_bss_50++; + if (sp14[1]->unk08 == -1) { + lbl_1_bss_50++; + } + lbl_1_bss_54 = 0; + } + break; + case 1004: + lbl_1_bss_54++; + if (lbl_1_bss_54 == 90) { + lbl_1_bss_50++; + lbl_1_bss_54 = 0; + } + break; + case 1005: + if (lbl_1_bss_54 == 0) { + for (i = 0; i < 9; i++) { + if (lbl_1_bss_51C[sp14[i]->unk38].unk0C != 0) { + sp14[i]->unk18 = 3; + sp14[i]->unk1C = 0; + } else { + sp14[i]->unk5C = 1; + } + } + HuWinMesMaxSizeGet(1, spC, MAKE_MESSID(48, 37)); + lbl_1_bss_C = HuWinCreate(-10000.0f, 400.0f, spC[0], spC[1], 1); + HuWinBGTPLvlSet(lbl_1_bss_C, 0.0f); + HuWinMesSpeedSet(lbl_1_bss_C, 0); + HuWinMesSet(lbl_1_bss_C, MAKE_MESSID(48, 37)); + lbl_1_bss_0 = 180; + } + lbl_1_bss_54++; + if (lbl_1_bss_54 == 30) { + lbl_1_data_14E = MGSeqTimerCreate(10); + MGSeqPosSet(lbl_1_data_14E, 489.6f, 64.0f); + } + if (lbl_1_bss_54 >= 30 && lbl_1_data_14E != -1) { + var_r29 = 0; + for (i = 0; i < 9; i++) { + if (lbl_1_bss_51C[sp14[i]->unk38].unk0C == 0 || sp14[i]->unk18 == 4 || sp14[i]->unk18 == 0) { + var_r29++; + } + } + if (var_r29 >= 9 || lbl_1_bss_0 == 0) { + MGSeqParamSet(lbl_1_data_14E, 2, -1); + lbl_1_data_14E = -1; + } else { + lbl_1_bss_0 -= (lbl_1_bss_0 > 0); + MGSeqParamSet(lbl_1_data_14E, 1, (lbl_1_bss_0 + 59) / 60); + } + } + var_r28 = 0; + for (i = 0; i < 9; i++) { + if (lbl_1_bss_51C[sp14[i]->unk38].unk0C == 0 || sp14[i]->unk18 == 0) { + var_r28++; + } + } + if (var_r28 >= 9) { + lbl_1_bss_50++; + lbl_1_bss_54 = 0; + } + break; + case 1006: + if (lbl_1_bss_54 == 1) { + HuWinExCleanup(lbl_1_bss_C); + } + lbl_1_bss_54++; + if (lbl_1_bss_54 == 3) { + lbl_1_bss_54 = 118; + } + if (lbl_1_bss_54 == 223) { + lbl_1_bss_54 = 233; + } + if (lbl_1_bss_54 == 120 && lbl_1_bss_35C->unk00 < 3) { + lbl_1_bss_35C->unk04[lbl_1_bss_35C->unk00] = 0.0f; + lbl_1_bss_35C->unk00++; + } + if (lbl_1_bss_54 == 188 && lbl_1_bss_35C[1].unk00 < 3) { + lbl_1_bss_35C[1].unk04[lbl_1_bss_35C[1].unk00] = 0.0f; + lbl_1_bss_35C[1].unk00++; + } + if (lbl_1_bss_54 == 360) { + var_r30 = 0; + var_r27 = -1; + for (i = 0; i < 9; i++) { + var_r30 += lbl_1_bss_51C[i].unk0C; + var_r27 = (lbl_1_bss_51C[sp14[i]->unk38].unk0C != 0) ? i : var_r27; + } + if (var_r30 <= 1) { + lbl_1_bss_38 = (var_r30 == 0) ? 9 : var_r27; + } + if (lbl_1_bss_38 != -1) { + lbl_1_data_14C = MGSeqFinishCreate(); + if (lbl_1_data_150 != -1) { + HuAudSeqFadeOut(lbl_1_data_150, 100); + } + } + } + if (lbl_1_bss_54 >= 480) { + if (lbl_1_bss_38 != -1) { + if (MGSeqStatGet(lbl_1_data_14C) == 0 && lbl_1_bss_54 >= 510) { + lbl_1_bss_50 = 1007; + lbl_1_bss_54 = 0; + } + } else { + lbl_1_bss_50 = 1005; + lbl_1_bss_54 = 0; + } + } + break; + case 1007: + lbl_1_bss_54++; + if (lbl_1_bss_54 == 1) { + if (lbl_1_bss_38 != 9) { + if (lbl_1_bss_38 < 9) { + HuAudSStreamPlay(1); + } else { + HuAudSStreamPlay(1); + } + if (lbl_1_bss_38 < 4 && sp14[lbl_1_bss_38]->unk04 != -1) { + GWPlayerCoinWinSet(sp14[lbl_1_bss_38]->unk04, 10); + } + } else if (lbl_1_bss_38 == 9) { + HuAudSStreamPlay(4); + } + } + if (210.0f + (lbl_1_bss_38 == 9 ? 60 : 0) < lbl_1_bss_54) { + if (lbl_1_data_154 != -1) { + HuAudFXStop(lbl_1_data_154); + lbl_1_data_154 = -1; + } + lbl_1_data_14C = -1; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_659C; + } + break; + } +} + +void fn_1_53A0(omObjData* arg0) { + StructBss330Data* sp50[9]; + s32 i; + + for (i = 0; i < 9; i++) { + sp50[i] = lbl_1_bss_330[i]->data; + } + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M458, 8)); + Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_LOOP); + Hu3DMotionSpeedSet(arg0->model[0], 0.1f); + for (i = 0; i < 9; i++) { + arg0->model[i + 1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M458, 10 + i)); + lbl_1_bss_51C[i].unk00 = i % 3; + lbl_1_bss_51C[i].unk04 = i / 3; + lbl_1_bss_51C[i].unk08 = 0.0f; + lbl_1_bss_51C[i].unk0C = 1; + Hu3DModelPosSet(lbl_1_bss_32C->model[i + 1], + 500.0 * (lbl_1_bss_51C[i].unk00 - 1), + -16.666666f, + 500.0 * (lbl_1_bss_51C[i].unk04 - 1)); + Hu3DModelScaleSet(lbl_1_bss_32C->model[i + 1], 1.6666666f, 1.6666666f, 1.6666666f); + Hu3DModelAttrSet(arg0->model[i + 1], HU3D_MOTATTR_PAUSE); + Hu3DModelShadowMapSet(arg0->model[i + 1]); + Hu3DModelLayerSet(arg0->model[i + 1], 1); + } + for (i = 0; i < 9; i++) { + s32 sp2C[9] = { 288, 290 }; + s32 sp8[9] = { 240, 140 }; + + lbl_1_data_24[i] = espEntry(lbl_1_data_0[i], 0, 0); + espDrawNoSet(lbl_1_data_24[i], 0); + espAttrSet(lbl_1_data_24[i], HUSPR_ATTR_NOANIM | HUSPR_ATTR_DISPOFF); + espBankSet(lbl_1_data_24[i], 0); + espPriSet(lbl_1_data_24[i], 0x80 - i); + espPosSet(lbl_1_data_24[i], 290.0f, 140.0f); + espTPLvlSet(lbl_1_data_24[i], 1.0f); + } + arg0->func = fn_1_3264; +} + +s32 lbl_1_data_1E4[] = { + DATA_MAKE_NUM(DATADIR_M458, 19), + DATA_MAKE_NUM(DATADIR_M458, 20), + DATA_MAKE_NUM(DATADIR_M458, 21), + DATA_MAKE_NUM(DATADIR_M458, 22), + DATA_MAKE_NUM(DATADIR_M458, 23), + DATA_MAKE_NUM(DATADIR_M458, 24), + DATA_MAKE_NUM(DATADIR_M458, 25), + DATA_MAKE_NUM(DATADIR_M458, 26), + DATA_MAKE_NUM(DATADIR_M458, 27), + DATA_MAKE_NUM(DATADIR_M458, 28), + DATA_MAKE_NUM(DATADIR_M458, 29) +}; + +void fn_1_5850(omObjData* arg0) { + StructBss330Data* temp_r31; + s32 sp10[] = { 0, 1, 2, 3 }; + s32 var_r25; + s32 var_r28; + s32 i; + s32 j; + + var_r25 = 0; + temp_r31 = arg0->data; + memset(temp_r31, 0, sizeof(*temp_r31)); + temp_r31->unk00 = arg0->work[0]; + if (temp_r31->unk00 >= 4) { + var_r28 = -1; + for (i = 0; i <= temp_r31->unk00 - 4; i++) { + do { + var_r28++; + } while (GWPlayerCfg[0].character == var_r28 || GWPlayerCfg[1].character == var_r28 || GWPlayerCfg[2].character == var_r28 || GWPlayerCfg[3].character == var_r28); + } + temp_r31->unk08 = (var_r28 == 8) ? -1 : var_r28; + temp_r31->unk0C = -1; + temp_r31->unk04 = -1; + temp_r31->unk10 = 0; + } else { + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + if (i == GWPlayerCfg[j].group) { + sp10[var_r25] = j; + var_r25++; + } + } + } + temp_r31->unk00 = arg0->work[0]; + temp_r31->unk04 = sp10[temp_r31->unk00]; + if (temp_r31->unk04 == 4) { + OSReport("m463:wrong player group\n"); + temp_r31->unk04 = temp_r31->unk00; + } + temp_r31->unk08 = GWPlayerCfg[temp_r31->unk04].character; + temp_r31->unk0C = (temp_r31->unk08 == -1 || GWPlayerCfg[temp_r31->unk04].iscom) ? -1 : GWPlayerCfg[temp_r31->unk04].pad_idx; + temp_r31->unk10 = (temp_r31->unk0C != -1) ? 0 : GWPlayerCfg[temp_r31->unk04].diff; + } + temp_r31->unk18 = 0; + temp_r31->unk20 = 3; + temp_r31->unk24 = -1; + temp_r31->unk48 = -1; + if (temp_r31->unk08 != -1) { + arg0->model[0] = CharModelCreate(temp_r31->unk08, 4); + } else { + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_BKOOPA, 7)); + } + omSetTra(arg0, 0.0f, temp_r31->unk00 == 0 ? 0 : 300, 0.0f); + if (temp_r31->unk08 != -1) { + omSetSca(arg0, 2.5f, 2.5f, 2.5f); + } else { + omSetSca(arg0, 2.0f, 2.0f, 2.0f); + } + for (i = 0; i < 9; i++) { + if (temp_r31->unk08 != -1) { + if (temp_r31->unk00 < 4 || (i != 1 && i != 2)) { + arg0->motion[i] = CharModelMotionCreate(temp_r31->unk08, lbl_1_data_48[i] + (lbl_1_data_6C[i] ? temp_r31->unk08 : 0)); + } + } else if (lbl_1_data_90[i] != 0) { + arg0->motion[i] = Hu3DJointMotionFile(arg0->model[0], lbl_1_data_90[i]); + } + } + Hu3DMotionSet(arg0->model[0], arg0->motion[temp_r31->unk20]); + Hu3DMotionTimeSet(arg0->model[0], 10.0f); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelShadowSet(arg0->model[0]); + Hu3DModelAttrSet(arg0->model[0], 1U); + Hu3DModelLayerSet(arg0->model[0], 1); + CharModelLayerSetAll2(1); + if (temp_r31->unk08 != -1) { + CharModelDataClose(temp_r31->unk08); + } + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M458, 9)); + Hu3DModelAttrSet(arg0->model[1], HU3D_MOTATTR_LOOP); + Hu3DModelPosSet(arg0->model[1], 0.0f, 400.0f, 0.0f); + Hu3DModelAttrSet(arg0->model[1], HU3D_ATTR_DISPOFF); + Hu3DModelLayerSet(arg0->model[1], 1); + Hu3DMotionSpeedSet(arg0->model[1], 0.0f); + for (i = 0; i < 9; i++) { + if (temp_r31->unk00 == 0) { + arg0->model[i + 2] = Hu3DModelCreateFile(lbl_1_data_1E4[i]); + } else { + arg0->model[i + 2] = Hu3DModelLink(lbl_1_bss_330[0]->model[i + 2]); + } + Hu3DMotionTimeSet(arg0->model[i + 2], 10.0f); + Hu3DMotionSpeedSet(arg0->model[i + 2], 0.0f); + Hu3DModelAttrSet(arg0->model[i + 2], HU3D_ATTR_DISPOFF); + Hu3DModelLayerSet(arg0->model[i + 2], 1); + } + lbl_1_bss_58 = temp_r31->unk00; + temp_r31->unk54 = fn_1_4474(); + Hu3DParManPosSet(temp_r31->unk54, 10000.0f, -10000.0f, 10000.0f); + arg0->func = fn_1_4C8; +} + +void fn_1_60A4(omObjData* arg0) { + lbl_1_bss_50 = 1000; + lbl_1_bss_54 = 0; + lbl_1_bss_48 = 0; + lbl_1_bss_44 = 0; + lbl_1_data_154 = HuAudFXPlay(0x6D7); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_45F8; +} + +void ObjectSetup(void) { + omObjData* var_r30; + s32 i; + + OSReport("******* M463 ObjectSetup *********\n"); + lbl_1_bss_40 = omInitObjMan(600, 0x2000); + omGameSysInit(lbl_1_bss_40); + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 30.0f, 20.0f, 25000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + CZoom = 3200.0f; + Center.x = 0.0f; + Center.y = 0.0f; + Center.z = -100.0f; + CRot.x = -30.0f; + CRot.y = 0.0f; + CRot.z = 0.0f; + { + Vec sp3C = { 0.0f, 0.0f, 0.0f }; + Vec sp30 = { 0.25f, -0.75f, -0.45f }; + GXColor sp8 = { 0xFF, 0xFF, 0xFF, 0xFF }; + + lbl_1_bss_3C = Hu3DGLightCreateV(&sp3C, &sp30, &sp8); + } + Hu3DGLightStaticSet(lbl_1_bss_3C, 1); + Hu3DGLightInfinitytSet(lbl_1_bss_3C); + { + Vec sp24; + Vec sp18; + Vec spC; + + sp24.x = 0.0f; + sp24.y = 10000.0f; + sp24.z = 0.0f; + sp18.x = 0.0f; + sp18.y = 1.0f; + sp18.z = 0.0f; + spC.x = 0.0f; + spC.y = 0.0f; + spC.z = 0.5f; + Hu3DShadowCreate(12.0f, 9000.0f, 10010.0f); + Hu3DShadowTPLvlSet(0.625f); + Hu3DShadowPosSet(&sp24, &sp18, &spC); + } + Hu3DShadowSizeSet(0xE0); + lbl_1_data_14C = -1; + lbl_1_bss_38 = -1; + HuWinInit(1); + lbl_1_bss_32C = omAddObjEx(lbl_1_bss_40, 0x65, 10, 0, 1, fn_1_53A0); + for (i = 0; i < 9; i++) { + var_r30 = lbl_1_bss_330[i] = omAddObjEx(lbl_1_bss_40, 100, 11, 9, 0, fn_1_5850); + var_r30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(StructBss330Data), MEMORY_DEFAULT_NUM); + var_r30->work[0] = i; + } + lbl_1_bss_354 = omAddObjEx(lbl_1_bss_40, 0x7FDA, 0, 0, -1, omOutView); + lbl_1_bss_358 = omAddObjEx(lbl_1_bss_40, 103, 0, 0, -1, fn_1_60A4); +} + +void fn_1_659C(omObjData* arg0) { + StructBss330Data* spC[9]; + void* sp8; + s32 var_r31; + s32 var_r30; + + for (var_r31 = 0; var_r31 < 9; var_r31++) { + spC[var_r31] = lbl_1_bss_330[var_r31]->data; + if (spC[var_r31]->unk54 != -1) { + Hu3DParManKill(spC[var_r31]->unk54); + spC[var_r31]->unk54 = -1; + } + } + if (WipeStatGet() == 0) { + for (var_r30 = 0; var_r30 < 9; var_r30++) { + sp8 = lbl_1_bss_330[var_r30]->data; + } + if (lbl_1_data_14C >= 0) { + MGSeqKill(lbl_1_data_14C); + } + MGSeqKillAll(); + HuAudAllStop(); + omOvlReturnEx(1, 1); + } +} diff --git a/src/game/board/last5.c b/src/game/board/last5.c index 9860861c..8b9261c9 100644 --- a/src/game/board/last5.c +++ b/src/game/board/last5.c @@ -13,6 +13,8 @@ #include "game/data.h" #include "game/wipe.h" +#include "ext_math.h" + static s16 stopWin = -1; static s16 wheelMdl = -1; s16 lbl_801D3854 = -1; @@ -1330,7 +1332,7 @@ static void UpdateLotteryTicket(omObjData *object) switch(work->state) { case 2: if(work->angle < 540) { - float scale = 0.4f+(0.1f*sin(M_PI*(float)(work->angle%180)/180.0)); + float scale = 0.4f+(0.1f*sind((float)(work->angle%180))); HuSprGrpScaleSet(work->group, scale, scale); work->angle += 9; } else { @@ -1511,7 +1513,7 @@ static void StartHostMove(Vec *from, Vec *to, s16 time) omSetTra(object, from->x, from->y, from->z); omSetRot(object, (to->x-from->x)/duration, 0.0f, (to->z-from->z)/duration); omSetSca(object, to->x, to->y, to->z); - angle = 180.0*(atan2(object->rot.x, object->rot.z)/M_PI); + angle = atan2d(object->rot.x, object->rot.z); work->angle = 0; OSf32tos16(&angle, &work->angle_end); BoardModelMotionShiftSet(hostMdl, hostMot[0], 0, 8, HU3D_MOTATTR_LOOP); diff --git a/src/game/board/player.c b/src/game/board/player.c index 96722477..046aafea 100644 --- a/src/game/board/player.c +++ b/src/game/board/player.c @@ -18,7 +18,7 @@ #include "game/objsub.h" #include "game/pad.h" -#include "math.h" +#include "ext_math.h" #include "stdlib.h" static void InitJunction(s32, s32, f32); @@ -1152,7 +1152,7 @@ static void InitJunction(s32 arg0, s32 arg1, f32 arg8) VECSubtract(&sp50, &sp68, &sp44); VECNormalize(&sp44, &sp44); - angle = (180.0 * (atan2(sp44.x, sp44.z) / M_PI)); + angle = atan2d(sp44.x, sp44.z); if (angle < 0.0f) { angle += 360.0f; } @@ -1174,7 +1174,7 @@ static void InitJunction(s32 arg0, s32 arg1, f32 arg8) temp_r29->unk_06[var_r27] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 0), NULL, 1); BoardModelRotSet(temp_r29->unk_06[var_r27], 0.0f, angle, 0.0f); BoardModelLayerSet(temp_r29->unk_06[var_r27], 6); - sp5C.x = sp68.x + (100.0 * sin((M_PI * angle) / 180.0)); + sp5C.x = sp68.x + 100.0 * sind(angle); sp5C.y = 300.0f + sp68.y; sp5C.z = (var_f29 + (sp68.z + (100.0 * cosd(angle)))); BoardModelPosSetV(temp_r29->unk_06[var_r27], &sp5C); @@ -1219,7 +1219,7 @@ static void UpdateJunctionGfx(omObjData *arg0) temp_r30->unk_02 -= 0xB4; } OSs16tof32(&temp_r30->unk_02, &arg0->scale.x); - arg0->scale.x = 3.0 + sin((M_PI * arg0->scale.x) / 180.0); + arg0->scale.x = 3.0 + sind(arg0->scale.x); arg0->scale.y = arg0->scale.x; arg0->scale.z = arg0->scale.x; BoardModelScaleSet(temp_r30->unk_06[temp_r30->field00_bit5], arg0->scale.x, arg0->scale.y, arg0->scale.z); @@ -1355,7 +1355,7 @@ static s32 DoDebugMove(s32 arg0, s16 *arg1) } else { VECSubtract(&sp5C->pos, &sp88, &sp94); - var_f30 = 90.0 - (180.0 * (atan2(sp94.z, sp94.x) / M_PI)); + var_f30 = 90.0 - atan2d(sp94.z, sp94.x); OSf32tos16(&var_f30, &var_r26); if (var_r26 < 0) { var_r26 += 0x168; @@ -1394,7 +1394,7 @@ static s32 DoDebugMove(s32 arg0, s16 *arg1) goto loop_21; } if ((0.0f != spA0.x) || (0.0f != spA0.z)) { - var_f30 = (90.0 + (180.0 * (atan2(spA0.z, spA0.x) / M_PI))); + var_f30 = 90.0 + atan2d(spA0.z, spA0.x); if (var_f30 < 0.0f) { var_f30 += 360.0f; } @@ -1404,7 +1404,7 @@ static s32 DoDebugMove(s32 arg0, s16 *arg1) RestoreJunction(var_f30, 1); sp50 = &boardCamera; VECSubtract(&sp50->target, &sp50->pos, &sp7C); - var_f30 = (var_f30 + (90.0 - (180.0 * (atan2(-sp7C.z, -sp7C.x) / M_PI)))); + var_f30 += 90.0 - atan2d(-sp7C.z, -sp7C.x); if (var_f30 < 0.0f) { var_f30 += 360.0f; } @@ -1535,7 +1535,7 @@ static s32 ExecJunction(s32 arg0, s16 *arg1) } else { VECSubtract(&sp88->pos, &spAC, &spB8); - var_f29 = (90.0 - (180.0 * (atan2(spB8.z, spB8.x) / M_PI))); + var_f29 = 90.0 - atan2d(spB8.z, spB8.x); if (var_f29 < 0.0f) { var_f29 += 360.0f; } @@ -1611,7 +1611,7 @@ static s32 ExecJunction(s32 arg0, s16 *arg1) } else { if ((0.0f != spC4.x) || (0.0f != spC4.z)) { - var_f29 = (90.0 + (180.0 * (atan2(spC4.z, spC4.x) / M_PI))); + var_f29 = 90.0 + atan2d(spC4.z, spC4.x); if (var_f29 < 0.0f) { var_f29 += 360.0f; } @@ -1729,7 +1729,7 @@ void BoardPlayerPosLerpStart(s32 arg0, Vec *arg1, Vec *arg2, s16 arg3) } VECSubtract(arg2, arg1, &sp18); VECNormalize(&sp18, &sp18); - var_f26 = 90.0 - (180.0 * (atan2(sp18.z, sp18.x) / M_PI)); + var_f26 = 90.0 - atan2d(sp18.z, sp18.x); var_f30 = var_f26; if (var_f30 < 0.0f) { var_f30 += 360.0f; @@ -2896,7 +2896,7 @@ static s32 MegaPlayerPassFunc(s32 player, s32 space) VECSubtract(&spC4, &spB8, &spAC); spAC.x /= 60.0f; spAC.z /= 60.0f; - BoardPlayerRotYSet(player, 90.0 - (180.0 * (atan2(spAC.z, spAC.x) / M_PI))); + BoardPlayerRotYSet(player, 90.0 - atan2d(spAC.z, spAC.x)); sp98[1] = BoardVecDistXZCalc(&spC4, &spB8); BoardPlayerMotionShiftSet(player, 4, 0, 8, HU3D_MOTATTR_NONE); HuPrcSleep(8); @@ -2998,7 +2998,7 @@ static s32 MegaExecJump(s32 player, s32 space) VECSubtract(&spC4, &spB8, &spAC); spAC.x /= 60.0f; spAC.z /= 60.0f; - BoardPlayerRotYSet(player, 90.0 - (180.0 * (atan2(spAC.z, spAC.x) / M_PI))); + BoardPlayerRotYSet(player, 90.0 - atan2d(spAC.z, spAC.x)); BoardPlayerIdleSet(player); HuPrcSleep(10); sp90[1] = BoardVecDistXZCalc(&spC4, &spB8); diff --git a/src/game/board/space.c b/src/game/board/space.c index 052f2bca..d092af1e 100644 --- a/src/game/board/space.c +++ b/src/game/board/space.c @@ -14,7 +14,7 @@ #include "game/objsub.h" #include "game/sprite.h" -#include "math.h" +#include "ext_math.h" #include "string.h" static BoardSpace spaceData[2][256]; @@ -156,10 +156,10 @@ void BoardSpaceCornerPosGet(s32 index, s32 corner, Vec *pos) corner_ofs.x = corner_pos[corner][0] * 80.0f; corner_ofs.y = 0; corner_ofs.z = corner_pos[corner][1] * 80.0f; - corner_ofs.x = (cos((M_PI * rot.z) / 180) * corner_ofs.x) + (sin((M_PI * rot.z) / 180) * corner_ofs.y); - corner_ofs.y = (cos((M_PI * rot.x) / 180) * cos((M_PI * rot.z) / 180) * corner_ofs.y) + (sin((M_PI * rot.z) / 180) * corner_ofs.x) - + (sin((M_PI * -rot.x) / 180) * corner_ofs.z); - corner_ofs.z = (sin((M_PI * rot.x) / 180) * corner_ofs.y) + (cos((M_PI * rot.x) / 180) * corner_ofs.z); + corner_ofs.x = (cosd(rot.z) * corner_ofs.x) + (sind(rot.z) * corner_ofs.y); + corner_ofs.y = (cosd(rot.x) * cosd(rot.z) * corner_ofs.y) + (sind(rot.z) * corner_ofs.x) + + (sind(-rot.x) * corner_ofs.z); + corner_ofs.z = (sind(rot.x) * corner_ofs.y) + (cosd(rot.x) * corner_ofs.z); pos->x += corner_ofs.x; pos->y += corner_ofs.y; pos->z += corner_ofs.z; @@ -724,7 +724,7 @@ static s32 ExecPipeSpace(s32 player, s32 space) BoardSpacePosGet(0, space_ptr->link[0], &pos_link); VECSubtract(&pos_link, &pos, &dir); VECNormalize(&dir, &dir); - BoardPlayerRotYSet(player, 90 - ((atan2(dir.z, dir.x) / M_PI) * 180)); + BoardPlayerRotYSet(player, 90 - atan2d(dir.z, dir.x)); radius = 0.75f * BoardVecDistXZCalc(&pos_link, &pos); BoardPlayerMotionStart(player, 4, 0); y_vel = 0; diff --git a/src/game/board/view.c b/src/game/board/view.c index 29118967..38a6157c 100755 --- a/src/game/board/view.c +++ b/src/game/board/view.c @@ -15,6 +15,8 @@ #include "game/board/space.h" #include "game/board/ui.h" +#include "ext_math.h" + typedef struct { struct { u8 unk00_field0 : 1; @@ -247,9 +249,9 @@ static void ExecMapView(void) { if (sp9 != 0 || sp8 != 0) { OSs8tof32(&sp9, &spC.x); OSs8tof32(&sp8, &spC.z); - temp_f28 = 180.0 * (atan2(spC.x, -spC.z) / M_PI); - spC.x = var_f29 * sin(temp_f28 * M_PI / 180.0); - spC.z = var_f29 * cos(temp_f28 * M_PI / 180.0); + temp_f28 = atan2d(spC.x, -spC.z); + spC.x = var_f29 * sind(temp_f28); + spC.z = var_f29 * cosd(temp_f28); } VECAdd(&spC, &focusPos, &focusPos); if (focusPos.x < temp_f26) { @@ -563,7 +565,7 @@ static void UpdateOverheadView(omObjData *arg0) { sp14.y -= 240.0f; VECSubtract(&sp20, &sp14, &sp8); sp8.z = 0.0f; - temp_f30 = BoardDAngleCalc(180.0 * (atan2(sp8.y, sp8.x) / M_PI) - 90.0); + temp_f30 = BoardDAngleCalc(atan2d(sp8.y, sp8.x) - 90.0); temp_f31 = VECMag(&sp8) / 32; if (i != 4) { var_r28 = i + 4; diff --git a/src/game/minigame_seq.c b/src/game/minigame_seq.c index 1bdf7b50..f74d4bf4 100644 --- a/src/game/minigame_seq.c +++ b/src/game/minigame_seq.c @@ -12,7 +12,7 @@ #include "game/minigame_seq.h" -#include "math.h" +#include "ext_math.h" #include "stdarg.h" #include "version.h" @@ -484,7 +484,7 @@ s32 MGSeqUpdateTimer(SeqWork *work) switch (work->state) { case 2: { float scale_x, scale_y; - scale = fabs(((sin((work->angle * M_PI) / 180) * 5.0f) + 1.0f) - (sin((130 * M_PI) / 180) * 5.0f)); + scale = fabs(((sind(work->angle) * 5.0f) + 1.0f) - (sind(130) * 5.0f)); scale_x = work->scale_x * scale; scale_y = work->scale_y * scale; work->angle += seqSpeed * 5.0f; @@ -496,8 +496,8 @@ s32 MGSeqUpdateTimer(SeqWork *work) } break; case 3: { - scale = sin((work->angle * M_PI) / 180) + 1.0; - tp_lvl = 1.0 - (sin((work->angle * M_PI) / 180) * 0.5); + scale = sind(work->angle) + 1.0; + tp_lvl = 1.0 - (sind(work->angle) * 0.5); work->angle += seqSpeed * 18.0f; if (work->angle > 180.0f) { work->state = 0; @@ -1045,7 +1045,7 @@ s32 MGSeqUpdateMGBasic(SeqWork *work) HuSprZRotSet(work->spr_grp[0], i, 0.0f); } else { - HuSprPosSet(work->spr_grp[0], i, pos_x - (((1.0 - sin(((time * 4.5f) * M_PI) / 180.0)) * (work->word_len * 56 * 2))), + HuSprPosSet(work->spr_grp[0], i, pos_x - (((1.0 - sind(time * 4.5f)) * (work->word_len * 56 * 2))), work->y); HuSprZRotSet(work->spr_grp[0], i, (time / 20.0f) * 390.0f); } @@ -1053,11 +1053,11 @@ s32 MGSeqUpdateMGBasic(SeqWork *work) } else { time = work->time - 40; - scale = work->scale_x + (0.5 * sin(((time * 9.0f) * M_PI) / 180.0)); + scale = work->scale_x + (0.5 * sind(time * 9.0f)); for (i = 0; i < work->word_len; i++) { pos_x = ((28.0f * scale) + (work->x - (0.5f * (scale * (work->word_len * 56))))) + (scale * (i * 56)); HuSprPosSet(work->spr_grp[0], i, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], i, scale, work->scale_y + sin(((time * 9.0f) * M_PI) / 180.0)); + HuSprScaleSet(work->spr_grp[0], i, scale, work->scale_y + sind(time * 9.0f)); } } if (work->time == 40) { @@ -1085,13 +1085,13 @@ s32 MGSeqUpdateMGBasic(SeqWork *work) } if (work->time <= 20) { time = work->time; - scale = work->scale_x + (0.5 * sin(((time * 9.0f) * M_PI) / 180.0)); + scale = work->scale_x + (0.5 * sind(time * 9.0f)); for (i = 0; i < work->word_len; i++) { HuSprAttrReset(work->spr_grp[0], i, HUSPR_ATTR_DISPOFF); pos_x = ((28.0f * scale) + (work->x - (0.5f * (scale * (work->word_len * 56))))) + (scale * (i * 56)); HuSprPosSet(work->spr_grp[0], i, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], i, work->scale_x + sin(((time * 9.0f) * M_PI) / 180.0), - work->scale_y + sin(((time * 9.0f) * M_PI) / 180.0)); + HuSprScaleSet(work->spr_grp[0], i, work->scale_x + sind(time * 9.0f), + work->scale_y + sind(time * 9.0f)); } if (time == 20.0f) { for (i = 0; i < work->word_len; i++) { @@ -1112,7 +1112,7 @@ s32 MGSeqUpdateMGBasic(SeqWork *work) } else { HuSprPosSet(work->spr_grp[0], i, - pos_x + ((1.0 - cos(((time * 4.5f) * M_PI) / 180.0f)) * (work->word_len * 56 * 2)), work->y); + pos_x + ((1.0 - cosd(time * 4.5f)) * (work->word_len * 56 * 2)), work->y); HuSprZRotSet(work->spr_grp[0], i, (time / 20.0f) * 390.0f); } } @@ -1337,7 +1337,7 @@ s32 MGSeqUpdateMGBattle(SeqWork *work) y += ofs_y; } HuSprPosSet(work->spr_grp[i], j, x, y); - HuSprScaleSet(work->spr_grp[i], j, work->scale_x * cos((M_PI * scale_ang) / 180.0), work->scale_y); + HuSprScaleSet(work->spr_grp[i], j, work->scale_x * cosd(scale_ang), work->scale_y); HuSprZRotSet(work->spr_grp[i], j, zrot); } } @@ -1346,7 +1346,7 @@ s32 MGSeqUpdateMGBattle(SeqWork *work) else { if (work->time > 60) { time = work->time - 60; - scale = 0.5 * sin((M_PI * (time * 9.0f)) / 180.0); + scale = 0.5 * sind(time * 9.0f); for (j = 0; j < work->word_len; j++) { pos_x = (28.0f * (scale + work->scale_x)) + (work->x - (0.5f * ((work->word_len * 56) * (scale + work->scale_x)))) + ((j * 56) * (scale + work->scale_x)); @@ -1385,13 +1385,13 @@ s32 MGSeqUpdateMGBattle(SeqWork *work) } } time = work->time; - scale = work->scale_x + (0.5 * sin((M_PI * (time * 9.0f)) / 180.0)); + scale = work->scale_x + (0.5 * sind(time * 9.0f)); for (j = 0; j < work->word_len; j++) { HuSprAttrReset(work->spr_grp[0], j, HUSPR_ATTR_DISPOFF); pos_x = ((28.0f * scale) + (work->x - (0.5f * (scale * (work->word_len * 56))))) + (scale * (j * 56)); HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], j, work->scale_x + (sin((M_PI * (time * 9.0f)) / 180.0)), - work->scale_y + (sin((M_PI * (time * 9.0f)) / 180.0))); + HuSprScaleSet(work->spr_grp[0], j, work->scale_x + (sind(time * 9.0f)), + work->scale_y + (sind(time * 9.0f))); } if (time == 20.0f) { for (j = 0; j < work->word_len; j++) { @@ -1405,7 +1405,7 @@ s32 MGSeqUpdateMGBattle(SeqWork *work) for (j = 0; j < work->word_len; j++) { pos_x = (28.0f + (work->x - (0.5f * (work->word_len * 56)))) + (j * 56); HuSprPosSet( - work->spr_grp[0], j, pos_x + ((HU_DISP_CENTERX - pos_x) * (1.0 - cos((M_PI * (time * 6.0)) / 180.0))), work->y); + work->spr_grp[0], j, pos_x + ((HU_DISP_CENTERX - pos_x) * (1.0 - cosd(time * 6.0))), work->y); } if (time == 15.0f) { for (j = 0; j < work->word_len; j++) { @@ -1530,9 +1530,9 @@ s32 MGSeqUpdateMG1vs3(SeqWork *work) scale_x = 0.3 * work->scale_x; scale_y = 0.3 * work->scale_y; pos_x = ((28.0f * scale_x) + (work->x - (0.5f * (scale_x * (work->word_len * 56))))) + (scale_x * (idx * 56)); - pos_y = work->y - (150.0 * sin((M_PI * (((16.0f / 3.0f) * time) + 20.0f)) / 180.0)); + pos_y = work->y - 150.0 * sind((16.0f / 3.0f) * time + 20.0f); HuSprPosSet(work->spr_grp[0], idx, pos_x, pos_y); - HuSprScaleSet(work->spr_grp[0], idx, scale_x, scale_y * cos(M_PI * (12.0f * time) / 180.0)); + HuSprScaleSet(work->spr_grp[0], idx, scale_x, scale_y * cosd(12.0f * time)); HuSprTPLvlSet(work->spr_grp[0], idx, scale); } } @@ -1549,13 +1549,13 @@ s32 MGSeqUpdateMG1vs3(SeqWork *work) continue; } } - scale = 0.3 + (0.7 * (1.0 - cos((M_PI * (time * 3.0f)) / 180.0))); + scale = 0.3 + 0.7 * (1.0 - cosd(time * 3.0f)); scale_x = work->scale_x * scale; scale_y = work->scale_y * scale; pos_x = ((28.0f * scale_x) + (work->x - (0.5f * (scale_x * (work->word_len * 56))))) + (scale_x * (idx * 56)); - pos_y = work->y - (150.0 * sin((M_PI * (((16.0f / 3.0f) * time) + 20.0f)) / 180.0)); + pos_y = work->y - 150.0 * sind((16.0f / 3.0f) * time + 20.0f); HuSprPosSet(work->spr_grp[i], idx, pos_x, pos_y); - HuSprScaleSet(work->spr_grp[i], idx, scale_x, scale_y * cos(M_PI * (12.0f * time) / 180.0)); + HuSprScaleSet(work->spr_grp[i], idx, scale_x, scale_y * cosd(12.0f * time)); } } if (work->time == 60) { @@ -1569,7 +1569,7 @@ s32 MGSeqUpdateMG1vs3(SeqWork *work) else { if (work->time > 70) { time = work->time - 70; - scale = 0.5 * sin((M_PI * (time * 9.0f)) / 180.0); + scale = 0.5 * sind(time * 9.0f); for (j = 0; j < work->word_len; j++) { pos_x = (28.0f * (scale + work->scale_x)) + (work->x - (0.5f * ((work->word_len * 56) * (scale + work->scale_x)))) + ((j * 56) * (scale + work->scale_x)); @@ -1609,13 +1609,13 @@ s32 MGSeqUpdateMG1vs3(SeqWork *work) } } time = work->time; - scale = work->scale_x + (0.5 * sin((M_PI * (time * 9.0f)) / 180.0)); + scale = work->scale_x + (0.5 * sind(time * 9.0f)); for (j = 0; j < work->word_len; j++) { HuSprAttrReset(work->spr_grp[0], j, HUSPR_ATTR_DISPOFF); pos_x = ((28.0f * scale) + (work->x - (0.5f * (scale * (work->word_len * 56))))) + (scale * (j * 56)); HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], j, work->scale_x + (sin((M_PI * (time * 9.0f)) / 180.0)), - work->scale_y + (sin((M_PI * (time * 9.0f)) / 180.0))); + HuSprScaleSet(work->spr_grp[0], j, work->scale_x + (sind(time * 9.0f)), + work->scale_y + (sind(time * 9.0f))); } if (time == 20.0f) { for (i = 1; i < 4; i++) { @@ -1767,7 +1767,7 @@ s32 MGSeqUpdateMGStory(SeqWork *work) else { if (work->time > 55) { time = work->time - 55; - scale = 0.5 * sin(M_PI * (9.0f * time) / 180.0); + scale = 0.5 * sind(9.0f * time); for (j = 0; j < work->word_len; j++) { pos_x = (28.0f * (scale + work->scale_x)) + (work->x - (0.5f * ((work->word_len * 56) * (scale + work->scale_x)))) + ((j * 56) * (scale + work->scale_x)); @@ -1807,13 +1807,13 @@ s32 MGSeqUpdateMGStory(SeqWork *work) } } time = work->time; - scale = work->scale_x + (0.5 * sin((M_PI * (time * 9.0f)) / 180.0)); + scale = work->scale_x + (0.5 * sind(time * 9.0f)); for (j = 0; j < work->word_len; j++) { HuSprAttrReset(work->spr_grp[0], j, HUSPR_ATTR_DISPOFF); pos_x = ((28.0f * scale) + (work->x - (0.5f * (scale * (work->word_len * 56))))) + (scale * (j * 56)); HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], j, work->scale_x + (sin((M_PI * (time * 9.0f)) / 180.0)), - work->scale_y + (sin((M_PI * (time * 9.0f)) / 180.0))); + HuSprScaleSet(work->spr_grp[0], j, work->scale_x + (sind(time * 9.0f)), + work->scale_y + (sind(time * 9.0f))); } if (time == 20.0f) { for (i = 1; i < 4; i++) { @@ -1960,7 +1960,7 @@ s32 MGSeqUpdateMG2vs2(SeqWork *work) else { if (work->time > 40 && work->time <= 60) { time = work->time - 40; - scale = 0.5 * sin(((time * 9.0f) * M_PI) / 180.0); + scale = 0.5 * sind(time * 9.0f); for (j = 0; j < work->word_len; j++) { pos_x = (28.0f * (scale + work->scale_x)) + (work->x - (0.5f * ((work->word_len * 56) * (scale + work->scale_x)))) + ((j * 56) * (scale + work->scale_x)); @@ -1999,13 +1999,13 @@ s32 MGSeqUpdateMG2vs2(SeqWork *work) } } time = work->time; - scale = work->scale_x + (0.5 * sin((M_PI * (time * 9.0f)) / 180.0)); + scale = work->scale_x + (0.5 * sind(time * 9.0f)); for (j = 0; j < work->word_len; j++) { HuSprAttrReset(work->spr_grp[0], j, HUSPR_ATTR_DISPOFF); pos_x = ((28.0f * scale) + (work->x - (0.5f * (scale * (work->word_len * 56))))) + (scale * (j * 56)); HuSprPosSet(work->spr_grp[0], j, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], j, work->scale_x + (sin((M_PI * (time * 9.0f)) / 180.0)), - work->scale_y + (sin((M_PI * (time * 9.0f)) / 180.0))); + HuSprScaleSet(work->spr_grp[0], j, work->scale_x + (sind(time * 9.0f)), + work->scale_y + (sind(time * 9.0f))); } if (time == 20.0f) { for (i = 1; i < 4; i++) { @@ -2023,8 +2023,8 @@ s32 MGSeqUpdateMG2vs2(SeqWork *work) float angle = (1.0f + (1.0f - (ABS(radius) / 320.0f))) * 720.0f; float new_scale; radius *= 1.0 - (time / 60.0f); - HuSprPosSet(work->spr_grp[0], idx, (radius * sin(M_PI * (((time / 60.0f) * angle) + 90.0f) / 180.0)) + work->x, - (radius * cos(M_PI * (((time / 60.0f) * angle) + 90.0f) / 180.0)) + work->y); + HuSprPosSet(work->spr_grp[0], idx, (radius * sind((time / 60.0f) * angle + 90.0f)) + work->x, + (radius * cosd((time / 60.0f) * angle + 90.0f)) + work->y); HuSprZRotSet(work->spr_grp[0], idx, -(time / 60.0f) * 720.0f); new_scale = 0.5 + (0.5 * (1.0f - (time / 60.0f))); HuSprScaleSet(work->spr_grp[0], idx, new_scale, new_scale); @@ -2214,21 +2214,21 @@ s32 MGSeqUpdateFlip(SeqWork *work) time = work->time - 10; if (time <= 10) { for (idx = 0; idx < work->alt_word_len; idx++) { - HuSprScaleSet(work->spr_grp[0], idx, cos(M_PI * ((time / 10.0f) * 90.0f) / 180.0), 1.0f); + HuSprScaleSet(work->spr_grp[0], idx, cosd((time / 10.0f) * 90.0f), 1.0f); } } else { time -= 10.0f; for (idx = 0; idx < work->word_len; idx++) { HuSprTPLvlSet(work->spr_grp[1], idx, 1.0f); - HuSprScaleSet(work->spr_grp[1], idx, sin(M_PI * ((time / 10.0f) * 90.0f) / 180.0), 1.0f); + HuSprScaleSet(work->spr_grp[1], idx, sind((time / 10.0f) * 90.0f), 1.0f); } } } else { if (work->time > 35 && work->time <= 55) { time = work->time - 35; - scale = 0.5 * sin(((time * 9.0f) * M_PI) / 180.0); + scale = 0.5 * sind(time * 9.0f); for (i = 0; i < work->word_len; i++) { pos_x = (28.0f * (scale + work->scale_x)) + (work->x - (0.5f * ((work->word_len * 56) * (scale + work->scale_x)))) + ((i * 56) * (scale + work->scale_x)); @@ -2263,7 +2263,7 @@ s32 MGSeqUpdateFlip(SeqWork *work) } if (work->time <= 20) { time = work->time; - scale = 0.5 * sin(M_PI * (9.0f * time) / 180.0); + scale = 0.5 * sind(9.0f * time); for (i = 0; i < work->word_len; i++) { HuSprTPLvlSet(work->spr_grp[1], i, 1.0f); pos_x = (28.0f * (scale + work->scale_x)) + (work->x - (0.5f * ((work->word_len * 56) * (scale + work->scale_x)))) @@ -2280,7 +2280,7 @@ s32 MGSeqUpdateFlip(SeqWork *work) if (scale < 0 || scale > 15.0f) { continue; } - HuSprScaleSet(work->spr_grp[1], idx, cos(M_PI * ((scale / 15.0f) * 90.0f) / 180.0), 1.0f); + HuSprScaleSet(work->spr_grp[1], idx, cosd((scale / 15.0f) * 90.0f), 1.0f); } for (idx = 0; idx < work->alt_word_len; idx++) { scale = (time - 15.0f) - (idx * 2); @@ -2288,7 +2288,7 @@ s32 MGSeqUpdateFlip(SeqWork *work) continue; } HuSprTPLvlSet(work->spr_grp[0], idx, 1.0f); - HuSprScaleSet(work->spr_grp[0], idx, sin(M_PI * ((scale / 30.0f) * 180.0f) / 180.0), 1.0f); + HuSprScaleSet(work->spr_grp[0], idx, sind((scale / 30.0f) * 180.0f), 1.0f); } } } @@ -2400,13 +2400,13 @@ s32 MGSeqUpdateMGBowser(SeqWork *work) } time_angle = 540.0 * (1.0f - (time / 50.0f)); pos_x = (28.0f + (0.5f * -(work->word_len * 56))) + (idx * 56); - angle = 180.0 * (atan2(pos_x, center_x) / M_PI); - pos_x = work->x + (center_x * sin(M_PI * (angle + time_angle) / 180.0)); + angle = atan2d(pos_x, center_x); + pos_x = work->x + (center_x * sind(angle + time_angle)); pos_y = work->y - (HU_DISP_CENTERY * (1.0 - (time / 50.0f))); HuSprPosSet(work->spr_grp[0], idx, pos_x, pos_y); - temp_f25 = 0.9 + (0.1 * cos(M_PI * (angle + time_angle) / 180.0)); - HuSprScaleSet(work->spr_grp[0], idx, temp_f25 * cos(M_PI * (angle + time_angle) / 180.0), temp_f25); - scale_arr[idx] = cos(M_PI * (angle + time_angle) / 180.0); + temp_f25 = 0.9 + (0.1 * cosd(angle + time_angle)); + HuSprScaleSet(work->spr_grp[0], idx, temp_f25 * cosd(angle + time_angle), temp_f25); + scale_arr[idx] = cosd(angle + time_angle); spr_idx[idx] = idx; } } @@ -2429,7 +2429,7 @@ s32 MGSeqUpdateMGBowser(SeqWork *work) else { if (work->time > 60 && work->time <= 80) { time = work->time - 60; - scale = 0.5 * sin(((time * 9.0f) * M_PI) / 180.0); + scale = 0.5 * sind(time * 9.0f); for (i = 0; i < work->word_len; i++) { pos_x = (28.0f * (scale + work->scale_x)) + (work->x - (0.5f * ((work->word_len * 56) * (scale + work->scale_x)))) + ((i * 56) * (scale + work->scale_x)); @@ -2468,13 +2468,13 @@ s32 MGSeqUpdateMGBowser(SeqWork *work) } } time = work->time; - scale = work->scale_x + (0.5 * sin(((time * 9.0f) * M_PI) / 180.0)); + scale = work->scale_x + (0.5 * sind(time * 9.0f)); for (i = 0; i < work->word_len; i++) { HuSprAttrReset(work->spr_grp[0], i, HUSPR_ATTR_DISPOFF); pos_x = ((28.0f * scale) + (work->x - (0.5f * (scale * (work->word_len * 56))))) + (scale * (i * 56)); HuSprPosSet(work->spr_grp[0], i, pos_x, work->y); - HuSprScaleSet(work->spr_grp[0], i, work->scale_x + (sin((M_PI * (time * 9.0f)) / 180.0)), - work->scale_y + (sin((M_PI * (time * 9.0f)) / 180.0))); + HuSprScaleSet(work->spr_grp[0], i, work->scale_x + (sind(time * 9.0f)), + work->scale_y + sind(time * 9.0f)); } if (time == 20.0f) { for (j = 1; j < 4; j++) { @@ -2632,14 +2632,14 @@ s32 MGSeqUpdateDraw(SeqWork *work) if (work->time <= 20) { time = work->time; zrot = 365.0f * (time / 20.0f); - scale = 1.3f * sin(M_PI * (90.0f * (time / 20.0f)) / 180.0); + scale = 1.3f * sind(90.0f * (time / 20.0f)); HuSprGrpScaleSet(group, scale, scale); HuSprGrpZRotSet(group, zrot); } if (work->time > 20 && work->time <= 25) { HuSprGrpZRotSet(group, 0.0f); time = work->time - 20; - scale = 1.0 + (0.3 * cos(M_PI * (90.0f * (time / 5.0f)) / 180.0)); + scale = 1.0 + (0.3 * cosd(90.0f * (time / 5.0f))); HuSprGrpScaleSet(group, scale, scale); } if (work->time == 5) { @@ -2971,10 +2971,10 @@ s32 MGSeqUpdateWin(SeqWork *work) if (work->time <= 20) { time = work->time; zrot = 365.0f * (time / 20.0f); - scale = sin(M_PI * (90.0f * (time / 20.0f)) / 180.0); + scale = sind(90.0f * (time / 20.0f)); HuSprGrpScaleSet(work->spr_grp[0], scale, scale); HuSprGrpZRotSet(work->spr_grp[0], zrot); - scale = 1.0 + (5.0 * cos(M_PI * (90.0f * (time / 20.0f)) / 180.0)); + scale = 1.0 + (5.0 * cosd(90.0f * (time / 20.0f))); tp_lvl = time / 20.0f; for (idx = 1; idx < work->word_len; idx++) { HuSprGrpTPLvlSet(work->spr_grp[idx], tp_lvl); @@ -3300,7 +3300,7 @@ static void PauseProc(void) mg = omMgIndexGet(omcurovl); if (mgInfoTbl[mg].inst_mess[1] == 0 && mgInfoTbl[mg].inst_mess[2] == 0) { for (i = 1; i <= 20; i++) { - ratio = sin(M_PI * (i * 4.5f) / 180.0); + ratio = sind(i * 4.5f); HuSprGrpPosSet(work.spr_grp[0], HU_DISP_CENTERX, (ratio * 290) - 50.0f); HuPrcVSleep(); } @@ -3334,7 +3334,7 @@ static void PauseProc(void) } } for (i = 1; i <= 20; i++) { - ratio = sin(M_PI * (i * 4.5f) / 180.0); + ratio = sind(i * 4.5f); HuSprGrpPosSet(work.spr_grp[0], HU_DISP_CENTERX, (ratio * 150) - 50.0f); HuWinPosSet(window[0], (PAUSE_WIN_DIST + PAUSE_WIN_X) * ratio - PAUSE_WIN_DIST, HU_DISP_CENTERY - 100); HuWinPosSet(window[1], -(PAUSE_WIN_DIST - PAUSE_WIN_X) * ratio + PAUSE_WIN_DIST, HU_DISP_CENTERY + 32); @@ -3351,7 +3351,7 @@ static void PauseProc(void) HuWinMesSpeedSet(window[0], 0); HuWinMesSet(window[0], mgInfoTbl[mg].inst_mess[1]); for (i = 1; i <= 20; i++) { - ratio = sin(M_PI * (i * 4.5f) / 180.0); + ratio = sind(i * 4.5f); HuSprGrpPosSet(work.spr_grp[0], HU_DISP_CENTERX, (ratio * 150) - 50.0f); HuWinPosSet(window[0], (PAUSE_WIN_DIST + PAUSE_WIN_X) * ratio - PAUSE_WIN_DIST, HU_DISP_CENTERY - 70); if (window[2] != -1) { @@ -3369,7 +3369,7 @@ static void PauseProc(void) pauseWaitF = 0; if (window[0] == -1 && window[1] == -1) { for (i = 1; i <= 10; i++) { - ratio = cos(M_PI * (i * 9.0f) / 180.0); + ratio = cosd(i * 9.0f); HuSprGrpPosSet(work.spr_grp[0], HU_DISP_CENTERX, (ratio * 290) - 50.0f); HuPrcVSleep(); } @@ -3377,7 +3377,7 @@ static void PauseProc(void) else { if (window[1] != -1) { for (i = 1; i <= 10; i++) { - ratio = cos(M_PI * (i * 9.0f) / 180.0); + ratio = cosd(i * 9.0f); HuSprGrpPosSet(work.spr_grp[0], HU_DISP_CENTERX, (ratio * 150) - 50.0f); HuWinPosSet(window[0], (PAUSE_WIN_DIST + PAUSE_WIN_X) * ratio - PAUSE_WIN_DIST, HU_DISP_CENTERY - 100); HuWinPosSet(window[1], -(PAUSE_WIN_DIST - PAUSE_WIN_X) * ratio + PAUSE_WIN_DIST, HU_DISP_CENTERY + 32); @@ -3389,7 +3389,7 @@ static void PauseProc(void) } else { for (i = 1; i <= 10; i++) { - ratio = cos(M_PI * (i * 9.0f) / 180.0); + ratio = cosd(i * 9.0f); HuSprGrpPosSet(work.spr_grp[0], HU_DISP_CENTERX, (ratio * 150) - 50.0f); HuWinPosSet(window[0], (PAUSE_WIN_DIST + PAUSE_WIN_X) * ratio - PAUSE_WIN_DIST, HU_DISP_CENTERY - 70); if (window[2] != -1) { @@ -3582,7 +3582,7 @@ static void PracticeProc(void) if (i != 4) { break; } - HuSprTPLvlSet(group, 0, fabs(sin(M_PI * time / 180.0))); + HuSprTPLvlSet(group, 0, fabs(sind(time))); time += 2.0f; HuPrcVSleep(); } while (1);