From 4229bfe0c1d39f69d05095fe60491291144ddf0d Mon Sep 17 00:00:00 2001 From: mrshigure Date: Thu, 25 Apr 2024 05:15:29 -0700 Subject: [PATCH] Matched REL/w04/big_boo + applying new macros --- config/GMPE01_00/rels/w04Dll/splits.txt | 4 +- config/GMPE01_00/rels/w04Dll/symbols.txt | 234 ++--- configure.py | 2 +- include/REL/w04Dll.h | 11 +- src/REL/w01Dll/main.c | 52 +- src/REL/w01Dll/mg_coin.c | 12 +- src/REL/w01Dll/mg_item.c | 34 +- src/REL/w04Dll/big_boo.c | 1175 ++++++++++++++++++++++ src/REL/w04Dll/boo_event.c | 54 +- src/REL/w04Dll/bridge.c | 36 +- src/REL/w04Dll/main.c | 10 +- src/REL/w06Dll/bowser.c | 22 +- src/REL/w06Dll/bridge.c | 4 +- src/REL/w06Dll/fire.c | 4 +- src/REL/w06Dll/mg_coin.c | 26 +- src/REL/w06Dll/mg_item.c | 12 +- src/game/board/battle.c | 6 +- src/game/board/lottery.c | 18 +- src/game/board/ui.c | 10 +- 19 files changed, 1449 insertions(+), 277 deletions(-) create mode 100755 src/REL/w04Dll/big_boo.c diff --git a/config/GMPE01_00/rels/w04Dll/splits.txt b/config/GMPE01_00/rels/w04Dll/splits.txt index 8c5ba783..cb8d3809 100644 --- a/config/GMPE01_00/rels/w04Dll/splits.txt +++ b/config/GMPE01_00/rels/w04Dll/splits.txt @@ -17,13 +17,13 @@ REL/w04Dll/main.c: .bss start:0x00000000 end:0x00000038 REL/w04Dll/bridge.c: - .text start:0x000012FC end:0x00002044 + .text start:0x000012FC end:0x000020EC .rodata start:0x00000040 end:0x00000098 .data start:0x00000298 end:0x000002D0 .bss start:0x00000038 end:0x00000048 REL/w04Dll/boo_event.c: - .text start:0x00002044 end:0x00006024 + .text start:0x000020EC end:0x00006024 .rodata start:0x00000098 end:0x00000180 .data start:0x000002D0 end:0x000003A8 .bss start:0x00000048 end:0x00000100 diff --git a/config/GMPE01_00/rels/w04Dll/symbols.txt b/config/GMPE01_00/rels/w04Dll/symbols.txt index ca7ccedd..1787c5bb 100644 --- a/config/GMPE01_00/rels/w04Dll/symbols.txt +++ b/config/GMPE01_00/rels/w04Dll/symbols.txt @@ -53,22 +53,22 @@ fn_1_5980 = .text:0x00005980; // type:function size:0x44 scope:local fn_1_59C4 = .text:0x000059C4; // type:function size:0x68 scope:local fn_1_5A2C = .text:0x00005A2C; // type:function size:0x5F8 scope:local fn_1_6024 = .text:0x00006024; // type:function size:0x28C -fn_1_62B0 = .text:0x000062B0; // type:function size:0x628 -fn_1_68D8 = .text:0x000068D8; // type:function size:0x420 -fn_1_6CF8 = .text:0x00006CF8; // type:function size:0x608 -fn_1_7300 = .text:0x00007300; // type:function size:0x27C -fn_1_757C = .text:0x0000757C; // type:function size:0x5C -fn_1_75D8 = .text:0x000075D8; // type:function size:0x2B0 -fn_1_7888 = .text:0x00007888; // type:function size:0x11D8 -fn_1_8A60 = .text:0x00008A60; // type:function size:0xE40 -fn_1_98A0 = .text:0x000098A0; // type:function size:0x294 -fn_1_9B34 = .text:0x00009B34; // type:function size:0xA8 -fn_1_9BDC = .text:0x00009BDC; // type:function size:0x3C -fn_1_9C18 = .text:0x00009C18; // type:function size:0x290 -fn_1_9EA8 = .text:0x00009EA8; // type:function size:0x14 +fn_1_62B0 = .text:0x000062B0; // type:function size:0x628 scope:local +fn_1_68D8 = .text:0x000068D8; // type:function size:0x420 scope:local +fn_1_6CF8 = .text:0x00006CF8; // type:function size:0x608 scope:local +fn_1_7300 = .text:0x00007300; // type:function size:0x27C scope:local +fn_1_757C = .text:0x0000757C; // type:function size:0x5C scope:local +fn_1_75D8 = .text:0x000075D8; // type:function size:0x2B0 scope:local +fn_1_7888 = .text:0x00007888; // type:function size:0x11D8 scope:local +fn_1_8A60 = .text:0x00008A60; // type:function size:0xE40 scope:local +fn_1_98A0 = .text:0x000098A0; // type:function size:0x294 scope:local +fn_1_9B34 = .text:0x00009B34; // type:function size:0xA8 scope:local +fn_1_9BDC = .text:0x00009BDC; // type:function size:0x3C scope:local +fn_1_9C18 = .text:0x00009C18; // type:function size:0x290 scope:local +fn_1_9EA8 = .text:0x00009EA8; // type:function size:0x14 scope:local fn_1_9EBC = .text:0x00009EBC; // type:function size:0x94 -fn_1_9F50 = .text:0x00009F50; // type:function size:0x124 -fn_1_A074 = .text:0x0000A074; // type:function size:0x84 +fn_1_9F50 = .text:0x00009F50; // type:function size:0x124 scope:local +fn_1_A074 = .text:0x0000A074; // type:function size:0x84 scope:local fn_1_A0F8 = .text:0x0000A0F8; // type:function size:0xF8 fn_1_A1F0 = .text:0x0000A1F0; // type:function size:0x52C fn_1_A71C = .text:0x0000A71C; // type:function size:0xCC @@ -174,73 +174,73 @@ lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data: 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 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float -lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0xC data:4byte -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float -lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 data:double -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float -lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float -lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float -lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float -lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float -lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float -lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0xC data:4byte -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 data:float -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float -lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float -lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0xC scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x8 scope:local data:double +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float +lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 scope:local data:float +lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0xC scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 scope:local data:float lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float @@ -341,23 +341,23 @@ lbl_1_data_368 = .data:0x00000368; // type:object size:0x8 scope:local data:stri lbl_1_data_370 = .data:0x00000370; // type:object size:0x12 scope:local data:string lbl_1_data_382 = .data:0x00000382; // type:object size:0x11 scope:local data:string lbl_1_data_393 = .data:0x00000393; // type:object size:0x10 scope:local -lbl_1_data_3A8 = .data:0x000003A8; // type:object size:0x8 data:string -lbl_1_data_3B0 = .data:0x000003B0; // type:object size:0x9 data:string -lbl_1_data_3B9 = .data:0x000003B9; // type:object size:0x6 data:string -lbl_1_data_3BF = .data:0x000003BF; // type:object size:0x5 data:string -lbl_1_data_3C4 = .data:0x000003C4; // type:object size:0x5 data:string -lbl_1_data_3CC = .data:0x000003CC; // type:object size:0x14 data:4byte -lbl_1_data_3E0 = .data:0x000003E0; // type:object size:0x14 -lbl_1_data_3F4 = .data:0x000003F4; // type:object size:0x20 -lbl_1_data_414 = .data:0x00000414; // type:object size:0x10 -lbl_1_data_424 = .data:0x00000424; // type:object size:0x30 data:2byte -lbl_1_data_454 = .data:0x00000454; // type:object size:0xB data:string -lbl_1_data_45F = .data:0x0000045F; // type:object size:0x2 data:string -lbl_1_data_461 = .data:0x00000461; // type:object size:0xC data:string -lbl_1_data_46D = .data:0x0000046D; // type:object size:0x1B -lbl_1_data_488 = .data:0x00000488; // type:object size:0x3 data:string -lbl_1_data_48B = .data:0x0000048B; // type:object size:0xF data:string -lbl_1_data_49C = .data:0x0000049C; // type:object size:0x50 +lbl_1_data_3A8 = .data:0x000003A8; // type:object size:0x8 scope:local data:string +lbl_1_data_3B0 = .data:0x000003B0; // type:object size:0x9 scope:local data:string +lbl_1_data_3B9 = .data:0x000003B9; // type:object size:0x6 scope:local data:string +lbl_1_data_3BF = .data:0x000003BF; // type:object size:0x5 scope:local data:string +lbl_1_data_3C4 = .data:0x000003C4; // type:object size:0x5 scope:local data:string +lbl_1_data_3CC = .data:0x000003CC; // type:object size:0x14 scope:local data:4byte +lbl_1_data_3E0 = .data:0x000003E0; // type:object size:0x14 scope:local +lbl_1_data_3F4 = .data:0x000003F4; // type:object size:0x20 scope:local +lbl_1_data_414 = .data:0x00000414; // type:object size:0x10 scope:local +lbl_1_data_424 = .data:0x00000424; // type:object size:0x30 scope:local data:2byte +lbl_1_data_454 = .data:0x00000454; // type:object size:0xB scope:local data:string +lbl_1_data_45F = .data:0x0000045F; // type:object size:0x2 scope:local data:string +lbl_1_data_461 = .data:0x00000461; // type:object size:0xC scope:local data:string +lbl_1_data_46D = .data:0x0000046D; // type:object size:0x1B scope:local data:string +lbl_1_data_488 = .data:0x00000488; // type:object size:0x3 scope:local data:string +lbl_1_data_48B = .data:0x0000048B; // type:object size:0xF scope:local data:string +lbl_1_data_49C = .data:0x0000049C; // type:object size:0x50 scope:local lbl_1_data_4F0 = .data:0x000004F0; // type:object size:0x6 data:string lbl_1_data_4F6 = .data:0x000004F6; // type:object size:0x6 data:string lbl_1_data_4FC = .data:0x000004FC; // type:object size:0x6 data:string @@ -389,7 +389,7 @@ lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 scope:local data:4byte lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x8 scope:local data:2byte lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 scope:local data:4byte lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x20 data:2byte -lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:4byte +lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 scope:local data:4byte lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0xC scope:local 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 @@ -411,23 +411,23 @@ lbl_1_bss_D4 = .bss:0x000000D4; // type:object size:0x10 scope:local lbl_1_bss_E4 = .bss:0x000000E4; // type:object size:0x10 scope:local lbl_1_bss_F4 = .bss:0x000000F4; // type:object size:0x6 scope:local data:2byte lbl_1_bss_FA = .bss:0x000000FA; // type:object size:0x2 scope:local data:2byte -lbl_1_bss_100 = .bss:0x00000100; // type:object size:0x4 data:4byte -lbl_1_bss_104 = .bss:0x00000104; // type:object size:0x4 data:4byte -lbl_1_bss_108 = .bss:0x00000108; // type:object size:0xC -lbl_1_bss_114 = .bss:0x00000114; // type:object size:0x20 -lbl_1_bss_134 = .bss:0x00000134; // type:object size:0x6 -lbl_1_bss_13A = .bss:0x0000013A; // type:object size:0x2 data:2byte -lbl_1_bss_13C = .bss:0x0000013C; // type:object size:0xD4 data:2byte -lbl_1_bss_210 = .bss:0x00000210; // type:object size:0x30 -lbl_1_bss_240 = .bss:0x00000240; // type:object size:0x30 -lbl_1_bss_270 = .bss:0x00000270; // type:object size:0x2 data:2byte -lbl_1_bss_272 = .bss:0x00000272; // type:object size:0x2 data:2byte -lbl_1_bss_274 = .bss:0x00000274; // type:object size:0x2 data:2byte -lbl_1_bss_278 = .bss:0x00000278; // type:object size:0x4 data:4byte -lbl_1_bss_27C = .bss:0x0000027C; // type:object size:0x2 data:2byte -lbl_1_bss_27E = .bss:0x0000027E; // type:object size:0x2 data:2byte -lbl_1_bss_280 = .bss:0x00000280; // type:object size:0x2 data:2byte -lbl_1_bss_282 = .bss:0x00000282; // type:object size:0x2 data:2byte +lbl_1_bss_100 = .bss:0x00000100; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_104 = .bss:0x00000104; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_108 = .bss:0x00000108; // type:object size:0xC scope:local +lbl_1_bss_114 = .bss:0x00000114; // type:object size:0x20 scope:local +lbl_1_bss_134 = .bss:0x00000134; // type:object size:0x6 scope:local +lbl_1_bss_13A = .bss:0x0000013A; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_13C = .bss:0x0000013C; // type:object size:0xD2 scope:local data:2byte +lbl_1_bss_210 = .bss:0x00000210; // type:object size:0x30 scope:local +lbl_1_bss_240 = .bss:0x00000240; // type:object size:0x30 scope:local +lbl_1_bss_270 = .bss:0x00000270; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_272 = .bss:0x00000272; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_274 = .bss:0x00000274; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_278 = .bss:0x00000278; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_27C = .bss:0x0000027C; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_27E = .bss:0x0000027E; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_280 = .bss:0x00000280; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_282 = .bss:0x00000282; // type:object size:0x2 scope:local data:2byte lbl_1_bss_288 = .bss:0x00000288; // type:object size:0x4 data:4byte lbl_1_bss_28C = .bss:0x0000028C; // type:object size:0x8 data:4byte lbl_1_bss_294 = .bss:0x00000294; // type:object size:0x4 data:float diff --git a/configure.py b/configure.py index 8af7f133..ce7790ab 100644 --- a/configure.py +++ b/configure.py @@ -1402,7 +1402,7 @@ config.libs = [ Object(Matching, "REL/w04Dll/main.c"), Object(Matching, "REL/w04Dll/bridge.c"), Object(Matching, "REL/w04Dll/boo_event.c"), - Object(NonMatching, "REL/w04Dll/big_boo.c"), + Object(Matching, "REL/w04Dll/big_boo.c"), Object(NonMatching, "REL/w04Dll/mg_item.c"), Object(NonMatching, "REL/w04Dll/mg_coin.c"), } diff --git a/include/REL/w04Dll.h b/include/REL/w04Dll.h index 0ca359a3..282e9825 100755 --- a/include/REL/w04Dll.h +++ b/include/REL/w04Dll.h @@ -10,13 +10,18 @@ enum { MAPOBJ_MAX = 16 }; +typedef struct { + s8 unk00; + u8 unk01; +} UnkW04BoardData; + extern s32 fn_1_1130(s16 arg0, float arg1, float arg2); extern void fn_1_12FC(void); extern void fn_1_15C8(void); extern void fn_1_1618(void); - extern void fn_1_2058(void); + extern void fn_1_55B4(void); extern void fn_1_6024(void); @@ -33,8 +38,6 @@ extern void fn_1_C7D4(void); extern s16 lbl_1_bss_14[MAPOBJ_MAX]; extern BoardMapObject lbl_1_data_0[MAPOBJ_MAX]; -extern s8 *lbl_1_bss_0; - -extern Process *lbl_1_bss_38; +extern UnkW04BoardData *lbl_1_bss_0; #endif diff --git a/src/REL/w01Dll/main.c b/src/REL/w01Dll/main.c index 96a8cd79..c17f0a58 100755 --- a/src/REL/w01Dll/main.c +++ b/src/REL/w01Dll/main.c @@ -29,7 +29,7 @@ #include "game/board/map_object.h" #include "dolphin.h" -#include "math.h" +#include "ext_math.h" typedef struct { struct { @@ -768,8 +768,8 @@ static void fn_1_1B3C(void) { PSMTXConcat(lbl_1_bss_678, sp48, lbl_1_bss_678); } else { if (sp30.z != 0.0f || sp30.x != 0.0f) { - lbl_1_bss_660.y = 180.0 * (atan2(sp30.x, sp30.z) / M_PI); - lbl_1_bss_660.x = -(180.0 * (atan2(sp30.y, sqrtf(sp30.x * sp30.x + sp30.z * sp30.z)) / M_PI)); + lbl_1_bss_660.y = atan2d(sp30.x, sp30.z); + lbl_1_bss_660.x = -atan2d(sp30.y, VECMagXZ(&sp30)); } else { lbl_1_bss_660.x = lbl_1_bss_660.y = 0.0f; } @@ -816,7 +816,7 @@ static void fn_1_1FA4(void) { PSVECAdd(&spC, &lbl_1_bss_618, &lbl_1_bss_618); PSVECSubtract(&lbl_1_bss_654, &lbl_1_bss_648, &spC); if (spC.x != 0.0f || spC.z != 0.0f) { - temp_f29 = atan2f(spC.y, sqrtf(spC.x * spC.x + spC.z * spC.z)); + temp_f29 = atan2f(spC.y, VECMagXZ(&spC)); temp_f28 = atan2f(-spC.x, -spC.z); } else { temp_f29 = temp_f28 = 0.0f; @@ -833,9 +833,9 @@ static void fn_1_1FA4(void) { } else { var_f27 = 2500.0f; } - sp18.x = sp18.x + var_f27 * sin(1.4137166738510132); // 81 * M_PI / 180.0 + sp18.x = sp18.x + var_f27 * sin(1.4137166738510132); // TODO: should be sind(81) sp18.y = sp18.y + -150.0f; - sp18.z = sp18.z + var_f27 * cos(1.4137166738510132); // 81 * M_PI / 180.0 + sp18.z = sp18.z + var_f27 * cos(1.4137166738510132); // TODO: should be cosd(81) PSVECSubtract(&sp18, &lbl_1_bss_630, &spC); PSVECScale(&spC, &spC, lbl_1_bss_66C); PSVECAdd(&spC, &lbl_1_bss_630, &lbl_1_bss_630); @@ -880,7 +880,7 @@ static float fn_1_2524(void) { return 0.0f; } PSVECSubtract(&sp18, &sp24, &spC); - var_f30 = 180.0 * (atan2(spC.x, spC.z) / M_PI); + var_f30 = atan2d(spC.x, spC.z); if (var_f30 > 0.0f) { var_f30 = 45.0f; } else { @@ -946,8 +946,8 @@ static void fn_1_2F18(void) { BoardModelPosGet(lbl_1_bss_6C4[0], &spC); PSVECSubtract(&lbl_1_bss_654, &lbl_1_bss_648, &sp18); if (sp18.z != 0.0f || sp18.x != 0.0f) { - sp24.y = 180.0 * (atan2(sp18.x, sp18.z) / M_PI); - sp24.x = -(180.0 * (atan2(sp18.y, sqrtf(sp18.x * sp18.x + sp18.z * sp18.z)) / M_PI)); + sp24.y = atan2d(sp18.x, sp18.z); + sp24.x = -atan2d(sp18.y, VECMagXZ(&sp18)); } else { sp24.x = sp24.y = 0.0f; } @@ -1096,9 +1096,9 @@ static void fn_1_3624(void) { BoardCameraMotionStartEx(lbl_1_bss_6C4[0], &sp30, NULL, 150.0f, -1.0f, 2); BoardCameraMotionWait(); BoardModelPosGet(lbl_1_bss_6C4[0], &lbl_1_bss_618); - lbl_1_bss_630.x = lbl_1_bss_618.x + 1000.0 * (sin(sp30.y * M_PI / 180.0) * cos(sp30.x * M_PI / 180.0)); - lbl_1_bss_630.y = lbl_1_bss_618.y + 1000.0 * -sin(sp30.x * M_PI / 180.0); - lbl_1_bss_630.z = lbl_1_bss_618.z + 1000.0 * (cos(sp30.y * M_PI / 180.0) * cos(sp30.x * M_PI / 180.0)); + lbl_1_bss_630.x = lbl_1_bss_618.x + 1000.0 * (sind(sp30.y) * cosd(sp30.x)); + lbl_1_bss_630.y = lbl_1_bss_618.y + 1000.0 * -sind(sp30.x); + lbl_1_bss_630.z = lbl_1_bss_618.z + 1000.0 * (cosd(sp30.y) * cosd(sp30.x)); PSMTXRotRad(lbl_1_bss_678, 'y', MTXDegToRad(lbl_1_bss_63C)); BoardModelMtxSet(lbl_1_bss_6C4[0], &lbl_1_bss_678); BoardPlayerMtxSet(lbl_1_bss_6B4, &lbl_1_bss_678); @@ -1273,7 +1273,7 @@ static s32 fn_1_48B4(void) { BoardSpacePosGet(0, temp_r28, &sp14); PSVECSubtract(&sp14, &sp20, &sp8); PSVECNormalize(&sp8, &sp8); - var_f31 = 180.0 * (atan2(-sp8.x, -sp8.z) / M_PI); + var_f31 = atan2d(-sp8.x, -sp8.z); BoardPlayerRotSet(lbl_1_bss_6B4, 0.0f, var_f31, 0.0f); BoardPlayerMoveBetween(lbl_1_bss_6B4, temp_r30, temp_r28); while (GWPlayer[lbl_1_bss_6B4].moving) { @@ -1331,7 +1331,7 @@ static s32 fn_1_48B4(void) { BoardCameraTargetPlayerSet(lbl_1_bss_6B4); PSVECSubtract(&sp20, &sp14, &sp8); PSVECNormalize(&sp8, &sp8); - var_f31 = 180.0 * (atan2(-sp8.x, -sp8.z) / M_PI); + var_f31 = atan2d(-sp8.x, -sp8.z); BoardPlayerRotSet(lbl_1_bss_6B4, 0.0f, var_f31, 0.0f); BoardPlayerMoveBetween(lbl_1_bss_6B4, temp_r28, temp_r30); while (GWPlayer[lbl_1_bss_6B4].moving) { @@ -1410,13 +1410,13 @@ static void fn_1_50D4(void) { } PSVECSubtract(&sp14, &temp_r31->pos, &sp8); PSVECNormalize(&sp8, &sp8); - var_f31 = 180.0 * (atan2(sp8.z, sp8.x) / M_PI); + var_f31 = atan2d(sp8.z, sp8.x); if (var_r27 != 0) { var_f31 += 180.0f; } - sp20.x = temp_r31->pos.x + temp_f30 * sin(var_f31 * M_PI / 180.0); + sp20.x = temp_r31->pos.x + temp_f30 * sind(var_f31); sp20.y = temp_r31->pos.y + 80.0f; - sp20.z = temp_r31->pos.z + temp_f30 * cos(var_f31 * M_PI / 180.0); + sp20.z = temp_r31->pos.z + temp_f30 * cosd(var_f31); BoardModelPosSetV(lbl_1_bss_5D0[i], &sp20); BoardModelVisibilitySet(lbl_1_bss_5D0[i], 1); sp14 = temp_r31->pos; @@ -1752,7 +1752,7 @@ static void fn_1_63F0(Bss18Work *arg0, omObjData *arg1) { OSu8tof32(&arg0->unk01, &temp_f29); temp_f29 -= 12.0f; temp_f29 = 90.0f * (temp_f29 / 12.5f); - var_f28 = cos(temp_f29 * M_PI / 180.0); + var_f28 = cosd(temp_f29); if (var_f28 < 0.1f) { var_f28 = 0.1f; } @@ -1779,7 +1779,7 @@ static void fn_1_6A14(Bss18Work *arg0, omObjData *arg1) { arg1->scale.y = sp20.y; arg1->scale.z = sp20.z; BoardPlayerMotionShiftSet(GWSystem.player_curr, 4, 15.0f, 5.0f, 0); - BoardPlayerRotYSet(GWSystem.player_curr, 180.0 * (atan2(sp8.x, sp8.z) / M_PI)); + BoardPlayerRotYSet(GWSystem.player_curr, atan2d(sp8.x, sp8.z)); arg0->unk00_field1 = 3; arg0->unk01 = 0; } @@ -1820,7 +1820,7 @@ static void fn_1_6BC0(Bss18Work *arg0, omObjData *arg1) { OSu8tof32(&arg0->unk01, &temp_f29); temp_f29 -= 12.0f; temp_f29 = 90.0f * (temp_f29 / 12.5f); - var_f28 = sin(temp_f29 * M_PI / 180.0); + var_f28 = sind(temp_f29); if (var_f28 < 0.1f) { var_f28 = 0.1f; } @@ -2157,7 +2157,7 @@ static void fn_1_8988(BssCData *arg0, omObjData *arg1) { BoardModelPosGet(*lbl_1_bss_6C4, &sp20); BoardPlayerPosGet(arg0->unk01, &sp14); PSVECSubtract(&sp20, &sp14, &sp8); - BoardPlayerRotYSet(arg0->unk01, 180.0 * (atan2(sp8.x, sp8.z) / M_PI)); + BoardPlayerRotYSet(arg0->unk01, atan2d(sp8.x, sp8.z)); arg0->unk00 = 1; } @@ -2199,7 +2199,7 @@ static void fn_1_8B6C(BssCData *arg0, omObjData *arg1) { BoardPlayerPosGet(arg0->unk01, &arg0->unk14); BoardModelPosGet(lbl_1_bss_6C4[0], &sp20); PSVECSubtract(&sp20, &arg0->unk14, &sp14); - BoardPlayerRotYSet(arg0->unk01, -(180.0 * (atan2(sp14.x, sp14.z) / M_PI))); + BoardPlayerRotYSet(arg0->unk01, -atan2d(sp14.x, sp14.z)); BoardPlayerMotionStart(arg0->unk01, 3, 0x40000001); BoardPlayerMotionSpeedSet(arg0->unk01, 2.0f); temp_f30 = BoardModelMotionTimeGet(lbl_1_bss_6AE); @@ -2265,8 +2265,8 @@ static void fn_1_8DDC(BssCData *arg0, omObjData *arg1) { PSMTXTranspose(sp54, arg0->unk20); } else { if (sp24.z != 0.0f || sp24.x != 0.0f) { - sp3C.y = 180.0 * (atan2(sp24.x, sp24.z) / M_PI); - sp3C.x = -(180.0 * (atan2(sp24.y, sqrtf(sp24.x * sp24.x + sp24.z * sp24.z)) / M_PI)); + sp3C.y = atan2d(sp24.x, sp24.z); + sp3C.x = -atan2d(sp24.y, VECMagXZ(&sp24)); } else { sp3C.x = sp3C.y = 0.0f; } @@ -2296,7 +2296,7 @@ static void fn_1_918C(BssCData *arg0, omObjData *arg1) { BoardPlayerPosGet(arg0->unk01, &sp14); BoardPlayerMtxSet(arg0->unk01, &arg0->unk20); PSVECSubtract(&sp20, &sp14, &sp8); - BoardPlayerRotYSet(arg0->unk01, 180.0 * (atan2(-sp8.z, -sp8.x) / M_PI)); + BoardPlayerRotYSet(arg0->unk01, atan2d(-sp8.z, -sp8.x)); BoardPlayerPosLerpStart(arg0->unk01, &sp14, &sp20, 20); arg0->unk00 = 5; } @@ -2547,7 +2547,7 @@ static void fn_1_9BBC(Bss20Work *arg0) { BoardModelVisibilitySet(temp_r31->unk02, 0); } else { if (temp_r31->unk00 <= 3) { - temp_r31->unk04 = sin(30.0f * temp_r31->unk00 * M_PI / 180.0); + temp_r31->unk04 = sind(30.0f * temp_r31->unk00); } PSVECAdd(&temp_r31->unk08, &temp_r31->unk14, &temp_r31->unk08); BoardModelMtxSet(temp_r31->unk02, &lbl_1_bss_678); diff --git a/src/REL/w01Dll/mg_coin.c b/src/REL/w01Dll/mg_coin.c index 2c8a1668..9520710c 100755 --- a/src/REL/w01Dll/mg_coin.c +++ b/src/REL/w01Dll/mg_coin.c @@ -22,7 +22,7 @@ #include "game/board/window.h" #include "dolphin.h" -#include "math.h" +#include "ext_math.h" typedef struct { /* 0x00 */ Vec unk00; @@ -640,7 +640,7 @@ static void fn_1_B478(omObjData *arg0) { MGSeqParamSet(lbl_1_bss_744, 2, -1); lbl_1_bss_714[lbl_1_bss_730]->work[1] = 1; BoardPlayerPosGet(lbl_1_bss_798, &spC); - var_f28 = sqrtf((temp_r31->unk04.x - spC.x) * (temp_r31->unk04.x - spC.x) + (temp_r31->unk04.z - spC.z) * (temp_r31->unk04.z - spC.z)); + var_f28 = VECDistanceXZ(&temp_r31->unk04, &spC); fn_1_C94C(&spC, &temp_r31->unk04, &temp_r31->unk10); temp_r31->unk10.y = 0.0f; temp_r31->unk10.x *= var_f28 / 30.0f; @@ -664,7 +664,7 @@ static void fn_1_BAF8(omObjData *arg0) { BoardPlayerPosGet(lbl_1_bss_798, &sp14); sp14.x += temp_r31->unk10.x; sp14.z += temp_r31->unk10.z; - sp14.y = lbl_1_bss_738.y + 80.0 * sin(6.0f * temp_r31->unk20 * M_PI / 180.0); + sp14.y = lbl_1_bss_738.y + 80.0 * sind(6.0f * temp_r31->unk20); BoardModelPosGet(lbl_1_bss_714[lbl_1_bss_730]->work[0], &sp8); if ((temp_r31->unk20 += 1.0f) == 30.0f) { sp14.y = sp8.y + 5.0f; @@ -892,7 +892,7 @@ static float fn_1_C998(Vec *arg0) { return 270.0f; } } - temp_f31 = 180.0 * (atan2(arg0->z, arg0->x) / M_PI); + temp_f31 = atan2d(arg0->z, arg0->x); if (arg0->z < 0.0f) { temp_f31 = 90.0f - temp_f31; } else { @@ -1051,8 +1051,8 @@ static void fn_1_D114(ModelData *model, ParticleData *particle, Mtx matrix) { var_r31->unk24 = 0.0f; } temp_r26 = 80.0f * (2.0f * ((sp8.x - var_r31->unk08.x) / 15.0f) - rand8() / 255.0f); - var_r31->unk20 = 8.0 * sin(temp_r26 * M_PI / 180.0); - var_r31->unk28 = 8.0 * cos(temp_r26 * M_PI / 180.0); + var_r31->unk20 = 8.0 * sind(temp_r26); + var_r31->unk28 = 8.0 * cosd(temp_r26); } var_r31->unk24 -= 0.35f; if ((var_r31->unk14.x -= 25.5f) < 0.0f) { diff --git a/src/REL/w01Dll/mg_item.c b/src/REL/w01Dll/mg_item.c index 2ebff385..a2c6333e 100755 --- a/src/REL/w01Dll/mg_item.c +++ b/src/REL/w01Dll/mg_item.c @@ -23,7 +23,7 @@ #include "game/board/window.h" #include "dolphin.h" -#include "math.h" +#include "ext_math.h" static void fn_1_E100(void); static void fn_1_E154(void); @@ -308,7 +308,7 @@ static void fn_1_E44C(omObjData *arg0) { arg0->trans.x = spC.x; arg0->trans.y = spC.y; arg0->trans.z = spC.z; - arg0->rot.x = sqrtf((lbl_1_bss_7D8.x - sp18.x) * (lbl_1_bss_7D8.x - sp18.x) + (lbl_1_bss_7D8.z - sp18.z) * (lbl_1_bss_7D8.z - sp18.z)); + arg0->rot.x = VECDistanceXZ(&lbl_1_bss_7D8, &sp18); arg0->rot.y = 10.0f; arg0->rot.z = sp18.y; arg0->scale.x = 0.0f; @@ -327,7 +327,7 @@ static void fn_1_E914(omObjData *arg0) { spC.z += arg0->trans.z * arg0->rot.x / 32.760002f; spC.y += arg0->rot.y - 0.016666668f * arg0->scale.x * arg0->scale.x; arg0->scale.x += 1.0f; - if (sqrtf((lbl_1_bss_7D8.x - spC.x) * (lbl_1_bss_7D8.x - spC.x) + (lbl_1_bss_7D8.z - spC.z) * (lbl_1_bss_7D8.z - spC.z)) < 2.0f) { + if (VECDistanceXZ(&lbl_1_bss_7D8, &spC) < 2.0f) { spC = lbl_1_bss_7D8; BoardPlayerRotSet(lbl_1_bss_7E4, 0.0f, fn_1_10BB0(arg0->work[2]), 0.0f); lbl_1_bss_7EC = 0.05f; @@ -460,7 +460,7 @@ static void fn_1_F3F8(omObjData *arg0) { arg0->trans.x = spC.x; arg0->trans.y = spC.y; arg0->trans.z = spC.z; - arg0->rot.x = sqrtf((lbl_1_bss_7C4.x - sp18.x) * (lbl_1_bss_7C4.x - sp18.x) + (lbl_1_bss_7C4.z - sp18.z) * (lbl_1_bss_7C4.z - sp18.z)); + arg0->rot.x = VECDistanceXZ(&lbl_1_bss_7C4, &sp18); arg0->scale.y = 20.0f + 40.0f * (arg0->rot.x / 445.0f); arg0->rot.y = 0.016666668f * (arg0->scale.y / 2) * (arg0->scale.y / 2); arg0->rot.z = sp18.y; @@ -673,8 +673,8 @@ static void fn_1_101B8(s16 arg0) { if (var_f31 >= 360.0f) { var_f31 -= 360.0f; } - temp_f30 = lbl_1_bss_80C.x - 100.0 * cos(var_f31 * M_PI / 180.0); - temp_f28 = lbl_1_bss_80C.z - 100.0 * sin(var_f31 * M_PI / 180.0); + temp_f30 = lbl_1_bss_80C.x - 100.0 * cosd(var_f31); + temp_f28 = lbl_1_bss_80C.z - 100.0 * sind(var_f31); temp_f29 = lbl_1_bss_80C.y + 66.0f + 1.0f; omSetTra(var_r31, temp_f30, temp_f29, temp_f28); var_r31->work[0] = 0; @@ -715,7 +715,7 @@ static void fn_1_10664(omObjData *arg0) { } omSetSca(arg0, var_f31, var_f31, var_f31); } else { - arg0->trans.y += sin(temp_r31[1] * M_PI / 180.0); + arg0->trans.y += sind(temp_r31[1]); temp_r31[1] += 4.0f; if (temp_r31[1] >= 360.0f) { temp_r31[1] -= 360.0f; @@ -739,7 +739,7 @@ static void fn_1_10820(omObjData *arg0) { sp24.y = 0.0f; PSVECSubtract(&sp24, &sp18, &spC); PSVECNormalize(&spC, &spC); - var_f28 = sqrtf((sp24.x - sp18.x) * (sp24.x - sp18.x) + (sp24.z - sp18.z) * (sp24.z - sp18.z)); + var_f28 = VECDistanceXZ(&sp24, &sp18); if (var_f28 < 8.0f) { arg0->trans.x = sp24.x; arg0->trans.z = sp24.z; @@ -749,7 +749,7 @@ static void fn_1_10820(omObjData *arg0) { arg0->trans.z += 8.0f * spC.z; } } - arg0->trans.y += sin(temp_r30[1] * M_PI / 180.0); + arg0->trans.y += sind(temp_r30[1]); temp_r30[1] += 4.0f; if (temp_r30[1] >= 360.0f) { temp_r30[1] -= 360.0f; @@ -836,7 +836,7 @@ static float fn_1_10EB8(Vec *arg0) { return 270.0f; } } - var_f31 = 180.0 * (atan2(arg0->z, arg0->x) / M_PI); + var_f31 = atan2d(arg0->z, arg0->x); if (arg0->z < 0.0f) { var_f31 = 90.0f - var_f31; } else { @@ -877,8 +877,8 @@ static void fn_1_11064(ModelData *model, ParticleData *particle, Mtx matrix) { if (var_r28 != particle->unk_30) { temp_f30 = 0.003921569f * frand8() * 360.0f; temp_f29 = 0.003921569f * frand8() * 70.0f * temp_f31; - var_r31->unk34.x = lbl_1_bss_7F0->trans.x + temp_f29 * sin(temp_f30 * M_PI / 180.0); - var_r31->unk34.z = lbl_1_bss_7F0->trans.z + temp_f29 * cos(temp_f30 * M_PI / 180.0); + var_r31->unk34.x = lbl_1_bss_7F0->trans.x + temp_f29 * sind(temp_f30); + var_r31->unk34.z = lbl_1_bss_7F0->trans.z + temp_f29 * cosd(temp_f30); var_r31->unk34.y = lbl_1_bss_7F0->trans.y + temp_f31 * (-30.0f + 0.003921569f * frand8() * 60.0f); var_r31->unk08.x = 0.5f + 0.003921569f * frand8() * 3.0f; var_r31->unk08.y = 0.3f + 0.003921569f * frand8() * 2.0f; @@ -919,14 +919,14 @@ static void fn_1_11484(ModelData *model, ParticleData *particle, Mtx matrix) { for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) { temp_f30 = 0.003921569f * frand8() * 360.0f; temp_f31 = 0.003921569f * frand8() * 50.0f; - var_r31->unk08.x = temp_f31 * cos(temp_f30 * M_PI / 180.0); + var_r31->unk08.x = temp_f31 * cosd(temp_f30); var_r31->unk08.y = 2.0f + 0.003921569f * frand8() * 4.0f; - var_r31->unk08.z = temp_f31 * sin(temp_f30 * M_PI / 180.0); + var_r31->unk08.z = temp_f31 * sind(temp_f30); temp_f29 = 60.0f + 20.0f * frand8() * 0.003921569f; temp_f31 = 4.0f + 5.0f * frand8() * 0.003921569f; - var_r31->unk14.x = temp_f31 * sin(temp_f30 * M_PI / 180.0) * cos(temp_f29 * M_PI / 180.0); - var_r31->unk14.y = temp_f31 * sin(temp_f29 * M_PI / 180.0); - var_r31->unk14.z = temp_f31 * cos(temp_f30 * M_PI / 180.0) * cos(temp_f29 * M_PI / 180.0); + var_r31->unk14.x = temp_f31 * sind(temp_f30) * cosd(temp_f29); + var_r31->unk14.y = temp_f31 * sind(temp_f29); + var_r31->unk14.z = temp_f31 * cosd(temp_f30) * cosd(temp_f29); var_r31->unk20 = 1.0f; var_r31->unk40.a = 0xB4; var_r31->unk2C = 9.0f + 0.003921569f * frand8() * 4.0f; diff --git a/src/REL/w04Dll/big_boo.c b/src/REL/w04Dll/big_boo.c new file mode 100755 index 00000000..c689dc71 --- /dev/null +++ b/src/REL/w04Dll/big_boo.c @@ -0,0 +1,1175 @@ +#include "REL/w04Dll.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/gamework.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/msm.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "game/board/audio.h" +#include "game/board/com.h" +#include "game/board/main.h" +#include "game/board/model.h" +#include "game/board/player.h" +#include "game/board/space.h" +#include "game/board/ui.h" +#include "game/board/view.h" +#include "game/board/window.h" + +#include "dolphin.h" +#include "ext_math.h" + +// Remove this and include frand.h header once we decide what to do with frandmod. +#define frand8() (((s32)frand() & 0xFF)) + +static void fn_1_62B0(void); +static void fn_1_68D8(void); +static void fn_1_6CF8(void); +static void fn_1_7300(void); +static void fn_1_757C(void); +static void fn_1_75D8(void); +static void fn_1_7888(void); +static void fn_1_8A60(void); +static void fn_1_98A0(void); +static void fn_1_9B34(void); +static void fn_1_9BDC(void); +static void fn_1_9C18(void); +static void fn_1_9EA8(void); +static s16 fn_1_9F50(void); +static void fn_1_A074(s16 arg0); + +static s16 lbl_1_bss_282; +static s16 lbl_1_bss_280; +static s16 lbl_1_bss_27E; +static s16 lbl_1_bss_27C; +static Process *lbl_1_bss_278; +static s16 lbl_1_bss_274; +static s16 lbl_1_bss_272; +static s16 lbl_1_bss_270; +static Vec lbl_1_bss_240[4]; +static Vec lbl_1_bss_210[4]; +static s16 lbl_1_bss_13C[105]; +static s16 lbl_1_bss_13A; +static s16 lbl_1_bss_134[3]; +static s16 lbl_1_bss_114[4][4]; +static Vec lbl_1_bss_108; +static Process *lbl_1_bss_104; +static AnimData *lbl_1_bss_100; + +static char *lbl_1_data_3CC[] = { + "picture", "picture2", "clock", "hari", "papa" +}; + +static s32 lbl_1_data_3E0[] = { + DATA_MAKE_NUM(DATADIR_W04, 25), + DATA_MAKE_NUM(DATADIR_W04, 26), + DATA_MAKE_NUM(DATADIR_W04, 27), + DATA_MAKE_NUM(DATADIR_W04, 28), + -1 +}; + +static s32 lbl_1_data_3F4[8] = { + DATADIR_MARIOMOT, + DATADIR_LUIGIMOT, + DATADIR_PEACHMOT, + DATADIR_YOSHIMOT, + DATADIR_WARIOMOT, + DATADIR_DONKEYMOT, + DATADIR_DAISYMOT, + DATADIR_WALUIGIMOT +}; + +static s32 lbl_1_data_414[] = { + 26, 28, 93, 12 +}; + +static s16 lbl_1_data_424[][2] = { + { 0, 0 }, { 6, 1 }, { 7, 3 }, { 12, 2 }, + { 15, 3 }, { 18, 4 }, { 20, 6 }, { 23, 5 }, + { 26, 6 }, { 28, 7 }, { 29, 8 }, { -1, 9 } +}; + +void fn_1_6024(void) { + lbl_1_bss_27C = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W04, 19), NULL, 0); + BoardModelHookSet(lbl_1_bss_14[4], lbl_1_data_3CC[0], lbl_1_bss_27C); + lbl_1_bss_280 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W04, 20), NULL, 0); + BoardModelHookSet(lbl_1_bss_14[4], lbl_1_data_3CC[2], lbl_1_bss_280); + lbl_1_bss_27E = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W04, 21), NULL, 0); + BoardModelHookSet(lbl_1_bss_280, lbl_1_data_3CC[3], lbl_1_bss_27E); + BoardModelAttrSet(lbl_1_bss_27E, 0x40000002); + BoardModelAttrSet(lbl_1_bss_27C, 0x40000002); + BoardModelMotionTimeSet(lbl_1_bss_27C, 20.0f); + BoardModelAttrSet(lbl_1_bss_280, 0x40000003); + BoardModelMotionSpeedSet(lbl_1_bss_27C, 0.5f); + if (lbl_1_bss_0->unk01 != 0) { + BoardModelMotionTimeSet(lbl_1_bss_280, 0.0f); + BoardModelMotionSpeedSet(lbl_1_bss_280, 0.5f); + BoardModelAttrReset(lbl_1_bss_280, 0x40000002); + BoardModelMotionTimeSet(lbl_1_bss_27E, 120.0f * lbl_1_bss_0->unk01); + BoardModelMotionTimeSet(lbl_1_bss_27C, 25.0f + 30.0f * lbl_1_bss_0->unk01); + } +} + +static void fn_1_62B0(void) { + Vec sp14; + Vec sp8; + s32 var_r31; + + lbl_1_bss_0->unk01++; + if (lbl_1_bss_0->unk01 == 3) { + lbl_1_bss_272 = GWPlayer[lbl_1_bss_282].space_curr; + var_r31 = BoardSpaceLinkFlagSearch(0, lbl_1_bss_272, 0x02000000); + BoardPlayerMoveToAsync(lbl_1_bss_282, var_r31); + while (GWPlayer[lbl_1_bss_282].moving) { + HuPrcVSleep(); + } + lbl_1_bss_274 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W04, 24), lbl_1_data_3E0, 0); + BoardModelMotionStart(lbl_1_bss_274, 4, 0); + BoardModelAttrSet(lbl_1_bss_274, 0x40000002); + Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[4]), lbl_1_data_3CC[4], &sp14); + BoardModelPosSetV(lbl_1_bss_274, &sp14); + sp8.x = sp8.y = sp8.z = 3.0f; + BoardModelScaleSetV(lbl_1_bss_274, &sp8); + BoardModelVisibilitySet(lbl_1_bss_274, 0); + } + BoardPlayerMotBlendSet(lbl_1_bss_282, 180, 0xF); + while (!BoardPlayerMotBlendCheck(lbl_1_bss_282)) { + HuPrcVSleep(); + } + fn_1_9C18(); + switch (lbl_1_bss_0->unk01) { + case 1: + HuAudFXPlay(0x4E); + omVibrate(lbl_1_bss_282, 0x7FFF, 6, 6); + BoardModelMotionTimeSet(lbl_1_bss_27C, 30.0f); + BoardModelAttrReset(lbl_1_bss_27C, 0x40000002); + HuPrcSleep(40); + BoardModelAttrSet(lbl_1_bss_27C, 0x40000002); + HuPadRumbleStop(GWPlayer[lbl_1_bss_282].port); + BoardWinCreate(0, MAKE_MESSID(32, 26), -1); + BoardWinWait(); + BoardWinKill(); + break; + case 2: + HuAudFXPlay(0x4E); + omVibrate(lbl_1_bss_282, 0x7FFF, 6, 6); + BoardModelMotionTimeSet(lbl_1_bss_27C, 60.0f); + BoardModelAttrReset(lbl_1_bss_27C, 0x40000002); + HuPrcSleep(40); + BoardModelAttrSet(lbl_1_bss_27C, 0x40000002); + HuPadRumbleStop(GWPlayer[lbl_1_bss_282].port); + BoardWinCreate(0, MAKE_MESSID(32, 27), -1); + BoardWinWait(); + BoardWinKill(); + break; + case 3: + BoardWinCreate(0, MAKE_MESSID(32, 28), -1); + BoardWinWait(); + BoardWinKill(); + HuAudFXPlay(0x4E); + sp14.x = 5.0f; + sp14.y = 0.0f; + sp14.z = 0.0f; + sp8.x = 0.0f; + sp8.y = 300.0f; + sp8.z = -200.0f; + BoardCameraMotionStartEx(lbl_1_bss_14[4], &sp14, &sp8, 1400.0f, -1.0f, 30); + BoardCameraMotionWait(); + HuPrcSleep(9); + HuAudFXPlay(0x464); + BoardModelMotionTimeSet(lbl_1_bss_27C, 90.0f); + BoardModelAttrReset(lbl_1_bss_27C, 0x40000002); + HuPrcSleep(10); + omVibrate(lbl_1_bss_282, 12, 4, 2); + BoardModelVisibilitySet(lbl_1_bss_274, 1); + BoardModelAttrReset(lbl_1_bss_274, 0x40000002); + HuPrcSleep(39); + BoardModelPosGet(lbl_1_bss_274, &sp14); + BoardModelScaleGet(lbl_1_bss_274, &sp8); + while (!BoardModelMotionEndCheck(lbl_1_bss_274)) { + sp14.z += 15.0f; + BoardModelPosSetV(lbl_1_bss_274, &sp14); + HuPrcVSleep(); + } + BoardModelMotionStart(lbl_1_bss_274, 1, 0x40000001); + break; + } + if (lbl_1_bss_0->unk01 == 3) { + fn_1_68D8(); + BoardCameraViewSet(1); + BoardPlayerMoveToAsync(lbl_1_bss_282, lbl_1_bss_272); + while (GWPlayer[lbl_1_bss_282].moving) { + HuPrcVSleep(); + } + BoardPlayerIdleSet(lbl_1_bss_282); + BoardCameraMotionWait(); + } else { + HuPrcSleep(29); + } + HuPrcEnd(); +} + +static void fn_1_68D8(void) { + float var_f31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 i; + + BoardWinCreate(2, MAKE_MESSID(32, 3), 9); + BoardWinWait(); + BoardWinKill(); + if (BoardPlayerCoinsGet(lbl_1_bss_282) < 15) { + BoardWinCreate(2, MAKE_MESSID(32, 4), 9); + BoardWinWait(); + BoardWinKill(); + BoardAudSeqFadeOut(1, 1000); + while (msmMusGetStatus(1) != 0) { + HuPrcVSleep(); + } + BoardAudSeqPause(0, 0, 1000); + fn_1_98A0(); + return; + } + do { + var_r30 = 0; + for (i = 0; i < 4; i++) { + if (i != lbl_1_bss_282) { + var_r30 += GWStarsGet(i); + } + } + var_r28 = 0; + for (i = 0; i < 4; i++) { + if (i != lbl_1_bss_282) { + var_r28 += BoardPlayerCoinsGet(i); + } + } + BoardWinCreateChoice(4, MAKE_MESSID(32, 5), 9, 0); + if (BoardPlayerCoinsGet(lbl_1_bss_282) < 150 || var_r30 == 0) { + BoardWinChoiceDisable(1); + } + if (var_r28 == 0) { + BoardWinChoiceDisable(0); + } + if (GWPlayer[lbl_1_bss_282].com) { + if (var_r30 != 0 && BoardPlayerCoinsGet(lbl_1_bss_282) >= 150) { + BoardComKeySetDown(); + } else { + BoardComKeySetUp(); + } + } + BoardWinWait(); + BoardWinKill(); + var_r27 = BoardWinChoiceGet(); + var_r29 = 6; + switch (var_r27) { + case 1: + var_r29 /= 4; + for (i = 0; i < 135; i++) { + BoardPlayerCoinsAdd(lbl_1_bss_282, -1); + HuAudFXPlay(0xE); + HuPrcSleep(var_r29); + } + /* fallthrough */ + case 0: + for (i = 0; i < 15; i++) { + BoardPlayerCoinsAdd(lbl_1_bss_282, -1); + HuAudFXPlay(0xE); + HuPrcSleep(var_r29); + } + HuAudFXPlay(0xF); + HuAudFXPlay(0x4E); + BoardWinCreate(2, MAKE_MESSID(32, 7), 9); + BoardWinWait(); + BoardWinKill(); + var_f31 = 255.0f; + for (i = 0; i < 60; i++) { + var_f31 -= 4.25f; + if (var_f31 < 0.0f) { + var_f31 = 0.0f; + } + BoardModelAlphaSet(lbl_1_bss_274, var_f31); + HuPrcVSleep(); + } + BoardModelAlphaSet(lbl_1_bss_274, 0); + WipeCreate(2, 0, 60); + WipeColorSet(0, 0, 0); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + BoardModelAlphaSet(lbl_1_bss_274, 0xFF); + if (var_r27 == 0) { + fn_1_7888(); + } else { + fn_1_8A60(); + } + break; + case -1: + case 2: + BoardWinCreate(2, MAKE_MESSID(32, 6), 9); + BoardWinWait(); + BoardWinKill(); + BoardAudSeqFadeOut(1, 1000); + while (msmMusGetStatus(1) != 0) { + HuPrcVSleep(); + } + BoardAudSeqPause(0, 0, 1000); + break; + case 3: + BoardViewMapExec(lbl_1_bss_282); + break; + } + } while (var_r27 == 3); + fn_1_98A0(); +} + +static void fn_1_6CF8(void) { + Vec sp10; + s16 sp8[4]; + s16 var_r29; + s16 var_r28; + s32 temp_r27; + s32 var_r30; + s32 i; + + var_r29 = 0; + for (i = 0; i < 4; i++) { + if (i != lbl_1_bss_282) { + BoardPlayerPosGet(i, &lbl_1_bss_240[i]); + BoardPlayerRotGet(i, &lbl_1_bss_210[i]); + sp8[var_r29++] = i; + } + } + BoardModelHideSetAll(1); + BoardSpaceHide(1); + for (i = 0; i < 4; i++) { + BoardStatusShowSet(i, 0); + } + BoardLightResetExec(); + lbl_1_bss_270 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W04, 22), NULL, 0); + BoardModelAttrSet(lbl_1_bss_270, 0x40000001); + sp10.y = 0.0f; + for (i = -1; i < 2; i++) { + sp10.z = 220.0f + -20.0f * abs(i); + sp10.x = 150.0f * i; + BoardPlayerPosSetV(sp8[i + 1], &sp10); + BoardPlayerRotYSet(sp8[i + 1], 180.0f); + BoardModelVisibilitySet(BoardPlayerModelGet(sp8[i + 1]), 1); + temp_r27 = lbl_1_data_3F4[GWPlayer[sp8[i + 1]].character]; + for (var_r30 = 0; var_r30 < 4; var_r30++) { + lbl_1_bss_114[sp8[i + 1]][var_r30] = BoardPlayerMotionCreate(sp8[i + 1], temp_r27 | lbl_1_data_414[var_r30]); + } + BoardPlayerMotionStart(sp8[i + 1], lbl_1_bss_114[sp8[i + 1]][0], 0x40000001); + } + BoardModelPosGet(lbl_1_bss_274, &lbl_1_bss_108); + BoardModelVisibilitySet(lbl_1_bss_274, 1); + sp10.x = sp10.z = 0.0f; + sp10.y = 800.0f; + BoardModelPosSetV(lbl_1_bss_274, &sp10); + sp10.x = sp10.y = sp10.z = 4.0f; + BoardModelScaleSetV(lbl_1_bss_274, &sp10); + BoardModelMotionStart(lbl_1_bss_274, 0, 0); + BoardCameraMoveSet(0); + BoardCameraTargetModelSet(lbl_1_bss_270); + BoardCameraOffsetSet(0.0f, 200.0f, 0.0f); + BoardCameraXRotZoomSet(1600.0f, -5.0f); + lbl_1_bss_104 = HuPrcChildCreate(fn_1_75D8, 0x2003, 0x1000, 0, boardMainProc); + HuPrcDestructorSet2(lbl_1_bss_104, fn_1_757C); + WipeCreate(1, 0, 60); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + HuPrcSleep(0x78); + for (i = 0; i < 3; i++) { + BoardPlayerModelAttrReset(sp8[i], 0x40000001); + BoardPlayerMotionShiftSet(sp8[i], lbl_1_bss_114[sp8[i]][1], 0.0f, 5.0f, 0); + } + BoardModelPosGet(lbl_1_bss_274, &sp10); + var_r28 = 10; + for (i = 0; i < 60; i++) { + if (--var_r28 == 0) { + HuAudFXPlay(0x4E); + for (var_r30 = 0; var_r30 < 3; var_r30++) { + HuAudPlayerVoicePlay(sp8[var_r30], 0x12F); + } + } + sp10.y -= 10.0f; + BoardModelPosSetV(lbl_1_bss_274, &sp10); + HuPrcVSleep(); + } + for (i = 0; i < 3; i++) { + BoardPlayerMotionShiftSet(sp8[i], 1, 0.0f, 5.0f, 0x40000001); + } +} + +static void fn_1_7300(void) { + Vec sp14; + Vec sp8; + s32 i; + s32 j; + + WipeCreate(2, 0, 30); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } + BoardModelKill(lbl_1_bss_270); + for (i = 0; i < 4; i++) { + if (i != lbl_1_bss_282) { + BoardPlayerPosSetV(i, &lbl_1_bss_240[i]); + BoardPlayerRotSetV(i, &lbl_1_bss_210[i]); + for (j = 0; j < 4; j++) { + BoardPlayerMotionKill(i, lbl_1_bss_114[i][j]); + } + BoardPlayerMotionStart(i, 1, 0x40000001); + } + } + HuPrcKill(lbl_1_bss_104); + HuPrcVSleep(); + BoardModelHideSetAll(0); + BoardSpaceHide(0); + for (i = 0; i < 4; i++) { + BoardStatusShowSet(i, 1); + } + BoardLightSetExec(); + BoardCameraMoveSet(0); + sp14.x = 5.0f; + sp14.y = 0.0f; + sp14.z = 0.0f; + sp8.x = 0.0f; + sp8.y = 220.0f; + sp8.z = -200.0f; + BoardCameraMotionStartEx(lbl_1_bss_14[4], &sp14, &sp8, 1400.0f, -1.0f, 0); + BoardCameraMoveSet(1); + BoardModelMotionStart(lbl_1_bss_274, 1, 0x40000001); + sp8.x = sp8.y = sp8.z = 3.0f; + BoardModelScaleSetV(lbl_1_bss_274, &sp8); + BoardModelPosSetV(lbl_1_bss_274, &lbl_1_bss_108); + WipeCreate(1, 0, 30); + while (WipeStatGet() != 0) { + HuPrcVSleep(); + } +} + +static void fn_1_757C(void) { + s16 temp_r31; + s16 temp_r30; + + temp_r31 = ((s32) HuPrcCurrentGet()->user_data) >> 16; + temp_r30 = (u16) HuPrcCurrentGet()->user_data; + Hu3DGLightKill(temp_r31); + Hu3DGLightKill(temp_r30); +} + +static void fn_1_75D8(void) { + Vec sp1C; + Vec sp10; + GXColor spC; + float sp8; + float var_f31; + s16 temp_r3; + s16 temp_r3_2; + + temp_r3 = Hu3DGLightCreate(0.0f, 1000.0f, 0.0f, 0.0f, 0.9f, -0.1f, 0xFF, 0x64, 0xC8); + Hu3DGLightInfinitytSet(temp_r3); + Hu3DGLightStaticSet(temp_r3, 1); + spC.r = 0xCD; + spC.g = 0x32; + spC.b = 0x96; + sp1C.x = sp1C.y = sp1C.z = 0.0f; + sp10.x = 0.0f; + sp10.y = -1.0f; + sp10.z = 0.0f; + temp_r3_2 = Hu3DGLightCreateV(&sp1C, &sp10, &spC); + Hu3DGLightInfinitytSet(temp_r3_2); + Hu3DGLightStaticSet(temp_r3_2, 1); + HuPrcCurrentGet()->user_data = (void*) (((temp_r3 << 16) & 0xFFFF0000) | (temp_r3_2 & 0xFFFF)); + var_f31 = 0.0f; + sp8 = var_f31; + while (TRUE) { + sp10.x = cosd(var_f31 - 180.0f); + sp10.y = sind(var_f31); + sp10.z = cosd(var_f31) * sind(var_f31); + var_f31 += 3.0f + 6.0f * frand8() * 0.003921569f; + if (var_f31 >= 360.0f) { + var_f31 -= 360.0f; + } + Hu3DGLightPosSetV(temp_r3_2, &sp1C, &sp10); + HuPrcVSleep(); + } +} + +static void fn_1_7888(void) { + Vec sp8F8[105]; + Vec sp40C[105]; + float sp268[105]; + float spC4[105]; + u8 sp58[105]; + Vec sp4C; + float sp40[3] = { 270.0f, 0.0f, 90.0f }; + float sp28[2]; + float var_f31; + char sp30[16]; + s16 sp20[4]; + s16 sp18[4]; + s16 sp10[4]; + s16 sp8[4]; + u16 var_r26; + u16 var_r24; + s16 var_r28; + s16 var_r27; + s16 var_r22; + s16 var_r21; + s16 var_r20; + s16 var_r23; + s32 var_r25; + s32 i; + s32 j; + s32 k; + + fn_1_6CF8(); + HuWinMesMaxSizeGet(1, sp28, MAKE_MESSID(32, 8)); + var_r21 = HuWinCreate(-10000.0f, 32.0f, sp28[0], sp28[1], 1); + HuWinMesSet(var_r21, MAKE_MESSID(32, 8)); + HuWinMesSpeedSet(var_r21, 0); + BoardModelMotionStart(lbl_1_bss_274, 3, 0x40000001); + for (i = 0; i < 4; i++) { + sp20[i] = 0; + sp18[i] = 0; + } + BoardModelPosGet(lbl_1_bss_274, &sp4C); + var_r20 = 48; + for (i = 0; i < 120; i++) { + if (--var_r20 == 0) { + var_r20 = 48; + for (j = 0; j < 4; j++) { + if (j != lbl_1_bss_282) { + HuAudPlayerVoicePlay(j, 0x130); + } + } + } + for (j = 0; j < 4; j++) { + if (j == lbl_1_bss_282) { + continue; + } + if (GWPlayer[j].com) { + switch (GWPlayer[j].diff) { + case 0: + var_r28 = 12; + break; + case 1: + var_r28 = 22; + break; + case 2: + var_r28 = 50; + break; + case 3: + var_r28 = 1000; + break; + } + if (frandmod(100) < var_r28) { + var_r26 = 0x100; + } else { + var_r26 = 0; + } + } else { + var_r24 = GWPlayer[j].port; + var_r26 = HuPadBtnDown[var_r24]; + } + if (var_r26 & 0x100) { + sp20[j]++; + } + if (sp18[j] != 0) { + if (BoardPlayerMotionEndCheck(j)) { + sp18[j] = 0; + BoardPlayerMotionStart(j, 1, 0x40000001); + } + } else if (var_r26 & 0x100) { + sp18[j] = 1; + BoardPlayerMotionStart(j, lbl_1_bss_114[j][2], 0); + } + } + HuPrcVSleep(); + } + for (i = 0; i < 4; i++) { + if (i == lbl_1_bss_282) { + continue; + } + BoardPlayerMotionStart(i, lbl_1_bss_114[i][3], 0); + OSReport("%d:%dhit ", i, sp20[i]); + omVibrate(i, 12, 4, 2); + } + OSReport("\n"); + HuWinKill(var_r21); + var_r27 = 0; + var_r23 = GWSystem.turn; + if (var_r23 <= 5) { + var_r25 = 15; + } else if (var_r23 <= 15) { + var_r25 = 25; + } else if (var_r23 <= 25) { + var_r25 = 27; + } else if (var_r23 <= 35) { + var_r25 = 30; + } else if (var_r23 <= 45) { + var_r25 = 32; + } else { + var_r25 = 35; + } + for (i = 0; i < 4; i++) { + if (i == lbl_1_bss_282) { + continue; + } + j = 0; + while (TRUE) { + if (lbl_1_data_424[j][0] == -1) { + sp8[i] = lbl_1_data_424[j][1]; + break; + } else if (sp20[i] <= lbl_1_data_424[j][0]) { + sp8[i] = lbl_1_data_424[j][1]; + break; + } + j++; + } + sp10[i] = var_r25 - sp8[i]; + if (BoardPlayerCoinsGet(i) < sp10[i]) { + sp10[i] = BoardPlayerCoinsGet(i); + } + var_r27 += sp10[i]; + BoardPlayerCoinsAdd(i, -sp10[i]); + OSReport("%d:%dlost ", i, sp10[i]); + } + OSReport("\n"); + for (i = 0; i < var_r27; i++) { + lbl_1_bss_13C[i] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 10), 0, 1); + BoardModelVisibilitySet(lbl_1_bss_13C[i], 0); + sp58[i] = 0; + } + for (i = 0; i < 10; i++) { + sp4C.z += 21.0f - i; + BoardModelPosSetV(lbl_1_bss_274, &sp4C); + HuPrcVSleep(); + } + for (i = 0; i < 4; i++) { + if (i == lbl_1_bss_282) { + continue; + } + omVibrate(i, 12, 4, 2); + HuAudPlayerVoicePlay(i, 0x131); + } + HuAudFXPlay(0x4E); + var_r28 = 0; + var_r24 = var_r27; + while (TRUE) { + if (var_r28 == 0) { + var_r22 = 0; + for (i = 0; i < 4; i++) { + if (i == lbl_1_bss_282) { + continue; + } + for (j = 0; j < 3; j++) { + if (sp10[i] == 0) { + continue; + } + sp10[i]--; + var_r24--; + for (k = 0; k < var_r27; k++) { + if (sp58[k] == 0) { + break; + } + } + if (k == var_r27) { + OSReport("\x82\xB1\x82\xA2\x82\xF1\x82\xAA\x8F\x6F\x82\xB9\x82\xC8\x82\xA2 total %d\n", var_r27); + while (TRUE) { + HuPrcVSleep(); + } + } + HuAudFXPlay(0x12); + sp58[k] = 1; + BoardPlayerPosGet(i, &sp8F8[k]); + sp8F8[k].y += 180.0f; + BoardModelVisibilitySet(lbl_1_bss_13C[k], 1); + BoardModelPosSetV(lbl_1_bss_13C[k], &sp8F8[k]); + sp40C[k].x = 10.0 * sind(sp40[var_r22] - 20.0f + 40.0f * j); + sp40C[k].z = 10.0 * cosd(sp40[var_r22] - 20.0f + 40.0f * j); + sp40C[k].y = 6.0f + 6.0f * frand8() * 0.003921569f; + sp268[k] = 0.0f; + spC4[k] = 360.0f * frand8() * 0.003921569f; + } + var_r22++; + } + var_r28 = 8; + } else { + var_r28--; + } + var_r26 = 0; + for (i = 0; i < var_r27; i++) { + if (sp58[i] == 0) { + continue; + } + var_r26++; + sp8F8[i].x += sp40C[i].x; + sp8F8[i].z += sp40C[i].z; + sp8F8[i].y += sp40C[i].y - sp268[i] * sp268[i] * 0.25f * 0.075f; + BoardModelPosSetV(lbl_1_bss_13C[i], &sp8F8[i]); + BoardModelRotYSet(lbl_1_bss_13C[i], spC4[i]); + sp268[i] += 1.0f; + spC4[i] += 12.0f; + if (spC4[i] >= 360.0f) { + spC4[i] -= 360.0f; + } + if (sp8F8[i].y < -450.0f) { + sp58[i] = 0; + BoardModelVisibilitySet(lbl_1_bss_13C[i], 0); + } + } + if (var_r26 == 0 && var_r24 == 0) { + break; + } + HuPrcVSleep(); + } + fn_1_7300(); + sprintf(sp30, "%d", var_r27); + BoardWinCreate(2, MAKE_MESSID(32, 9), 9); + BoardWinInsertMesSet(MAKE_MESSID_PTR(sp30), 0); + BoardWinWait(); + BoardWinKill(); + BoardPlayerMotBlendSet(lbl_1_bss_282, 0, 0xF); + while (!BoardPlayerMotBlendCheck(lbl_1_bss_282)) { + HuPrcVSleep(); + } + BoardPlayerIdleSet(lbl_1_bss_282); + BoardPlayerPosGet(lbl_1_bss_282, &sp4C); + for (i = 0; i < var_r27; i++) { + BoardModelVisibilitySet(lbl_1_bss_13C[i], 1); + sp8F8[i].x = sp4C.x - 25.0f + 50.0f * frand8() * 0.003921569f; + sp8F8[i].y = sp4C.y + 1200.0f + 130.0f * i + 60.0f * frand8() * 0.003921569f; + sp8F8[i].z = sp4C.z - 25.0f + 50.0f * frand8() * 0.003921569f; + BoardModelPosSetV(lbl_1_bss_13C[i], &sp8F8[i]); + } + var_f31 = -4.0f; + var_r28 = 0; + while (TRUE) { + for (i = 0; i < var_r27; i++) { + if (i < var_r28) { + continue; + } + sp8F8[i].y += var_f31; + spC4[i] += 45.0f; + BoardModelPosSetV(lbl_1_bss_13C[i], &sp8F8[i]); + BoardModelRotYSet(lbl_1_bss_13C[i], spC4[i]); + if (sp8F8[i].y <= sp4C.y + 180.0f) { + CharModelCoinEffectCreate(1, &sp8F8[i]); + BoardModelVisibilitySet(lbl_1_bss_13C[i], 0); + var_r28++; + BoardPlayerCoinsAdd(lbl_1_bss_282, 1); + HuAudFXPlay(7); + omVibrate(lbl_1_bss_282, 12, 6, 6); + } + } + var_f31 *= 1.05f; + if (var_f31 < -40.0f) { + var_f31 = -40.0f; + } + if (var_r28 == var_r27) { + BoardPlayerMotionShiftSet(lbl_1_bss_282, 7, 0.0f, 10.0f, 0); + break; + } + HuPrcVSleep(); + } + while (!BoardPlayerMotionEndCheck(lbl_1_bss_282)) { + HuPrcVSleep(); + } + HuPrcSleep(30); + for (i = 0; i < var_r27; i++) { + BoardModelKill(lbl_1_bss_13C[i]); + } + BoardPlayerMotBlendSet(lbl_1_bss_282, 0xB4, 0xF); + while (!BoardPlayerMotBlendCheck(lbl_1_bss_282)) { + HuPrcVSleep(); + } + BoardPlayerIdleSet(lbl_1_bss_282); + BoardWinCreate(2, MAKE_MESSID(32, 10), 9); + BoardWinWait(); + BoardWinKill(); + BoardAudSeqFadeOut(1, 1000); + while (msmMusGetStatus(1) != 0) { + HuPrcVSleep(); + } + BoardAudSeqPause(0, 0, 1000); +} + +static void fn_1_8A60(void) { + Vec sp7C[3]; + Vec sp58[3]; + Vec sp4C; + Vec sp40; + float sp34[3]; + float sp28[3]; + float sp1C[3] = { 315.0f, 0.0f, 45.0f }; + char sp10[12]; + float var_f31; + float var_f30; + s16 sp8[4]; + s16 var_r30; + s32 temp_r27; + s32 var_r28; + s32 var_r29; + s32 i; + + fn_1_6CF8(); + lbl_1_bss_13A = 0; + BoardModelMotionStart(lbl_1_bss_274, 3, 0x40000001); + BoardModelPosGet(lbl_1_bss_274, &sp4C); + for (i = 0; i < 120; i++) { + HuPrcVSleep(); + } + for (i = 0; i < 4; i++) { + if (i == lbl_1_bss_282) { + continue; + } + BoardPlayerMotionStart(i, lbl_1_bss_114[i][3], 0); + omVibrate(i, 12, 4, 2); + } + var_r29 = 0; + for (i = 0; i < 4; i++) { + if (i == lbl_1_bss_282) { + continue; + } + if (GWStarsGet(i) > 0) { + sp8[i] = 1; + var_r29++; + } else { + sp8[i] = 0; + } + BoardPlayerStarsAdd(i, -sp8[i]); + } + OSReport("Total Star %d\n", var_r29); + for (i = 0; i < var_r29; i++) { + lbl_1_bss_13C[i] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 8), NULL, 0); + BoardModelAttrSet(lbl_1_bss_13C[i], 0x40000002); + BoardModelVisibilitySet(lbl_1_bss_13C[i], 0); + } + for (i = 0; i < 10; i++) { + sp4C.z += 21.0f - i; + BoardModelPosSetV(lbl_1_bss_274, &sp4C); + HuPrcVSleep(); + } + for (i = 0; i < 4; i++) { + if (i == lbl_1_bss_282) { + continue; + } + omVibrate(i, 12, 4, 2); + HuAudPlayerVoicePlay(i, 0x131); + } + HuAudFXPlay(0x4E); + var_r30 = 0; + for (i = 0; i < 4; i++) { + if (i == lbl_1_bss_282 || sp8[i] == 0) { + continue; + } + BoardPlayerPosGet(i, &sp7C[var_r30]); + sp7C[var_r30].y += 180.0f; + sp34[var_r30] = 0.0f; + sp58[var_r30].x = 10.0 * sind(sp1C[var_r30]); + sp58[var_r30].z = 10.0 * cosd(sp1C[var_r30]); + sp58[var_r30].y = 6.0f + 6.0f * frand8() * 0.003921569f; + sp34[var_r30] = 360.0f * frand8() * 0.003921569f; + sp28[var_r30] = 0.0f; + BoardModelVisibilitySet(lbl_1_bss_13C[var_r30], 1); + lbl_1_bss_134[var_r30] = fn_1_9F50(); + var_r30++; + } + while (TRUE) { + var_r30 = 0; + for (i = 0; i < var_r29; i++) { + sp7C[i].x += sp58[i].x; + sp7C[i].z += sp58[i].z; + sp7C[i].y += sp58[i].y - sp28[i] * sp28[i] * 0.25f * 0.075f; + BoardModelPosSetV(lbl_1_bss_13C[i], &sp7C[i]); + BoardModelRotYSet(lbl_1_bss_13C[i], sp34[i]); + sp28[i] += 1.0f; + sp34[i] += 12.0f; + if (sp34[i] >= 360.0f) { + sp34[i] -= 360.0f; + } + if (sp7C[i].y < -500.0f) { + BoardModelVisibilitySet(lbl_1_bss_13C[i], 0); + var_r30++; + } + Hu3DParManPosSet(lbl_1_bss_134[i], sp7C[i].x, sp7C[i].y + -70.0f, sp7C[i].z); + } + if (var_r30 == var_r29) { + break; + } + HuPrcVSleep(); + } + fn_1_7300(); + sprintf(sp10, "%d", var_r29); + BoardWinCreate(2, MAKE_MESSID(32, 11), 9); + BoardWinInsertMesSet(MAKE_MESSID_PTR(sp10), 0); + BoardWinWait(); + BoardWinKill(); + BoardAudSeqFadeOut(1, 1000); + BoardPlayerMotBlendSet(lbl_1_bss_282, 0, 0xF); + while (!BoardPlayerMotBlendCheck(lbl_1_bss_282)) { + HuPrcVSleep(); + } + BoardPlayerIdleSet(lbl_1_bss_282); + BoardPlayerPosGet(lbl_1_bss_282, &sp4C); + for (i = 0; i < var_r29; i++) { + BoardModelVisibilitySet(lbl_1_bss_13C[i], 1); + sp7C[i] = sp4C; + sp7C[i].y += 600.0f; + BoardModelPosSetV(lbl_1_bss_13C[i], &sp7C[i]); + sp34[i] = 0.0f; + BoardModelRotYSet(lbl_1_bss_13C[i], sp34[i]); + } + for (i = 0; i < var_r29; i++) { + var_f31 = -4.0f; + HuAudFXPlay(0x338); + HuAudFXPlay(0x353); + while (TRUE) { + sp7C[i].y += var_f31; + BoardModelPosSetV(lbl_1_bss_13C[i], &sp7C[i]); + Hu3DParManPosSet(lbl_1_bss_134[i], sp7C[i].x, sp7C[i].y + -70.0f, sp7C[i].z); + if (sp7C[i].y <= sp4C.y + 270.0f) { + sp7C[i].y = sp4C.y + 270.0f; + BoardModelPosSetV(lbl_1_bss_13C[i], &sp7C[i]); + Hu3DParManPosSet(lbl_1_bss_134[i], sp7C[i].x, sp7C[i].y + -70.0f, sp7C[i].z); + BoardModelAttrReset(lbl_1_bss_13C[i], 0x40000002); + while (BoardModelMotionTimeGet(lbl_1_bss_13C[i]) < BoardModelMotionMaxTimeGet(lbl_1_bss_13C[i]) - 10.0f) { + HuPrcVSleep(); + } + var_f31 = -5.0f; + var_f30 = 1.0f; + HuAudFXPlay(0x339); + for (var_r28 = 0; var_r28 < 30; var_r28++) { + var_f30 -= 0.033333335f; + sp40.x = sp40.y = sp40.z = var_f30; + BoardModelScaleSetV(lbl_1_bss_13C[i], &sp40); + sp7C[i].y += var_f31; + BoardModelPosSetV(lbl_1_bss_13C[i], &sp7C[i]); + sp34[i] += 25.0f; + BoardModelRotYSet(lbl_1_bss_13C[i], sp34[i]); + Hu3DParManPosSet(lbl_1_bss_134[i], sp7C[i].x, sp7C[i].y + -70.0f, sp7C[i].z); + HuPrcVSleep(); + } + omVibrate(lbl_1_bss_282, 12, 0xC, 0); + BoardPlayerStarsAdd(lbl_1_bss_282, 1); + BoardModelVisibilitySet(lbl_1_bss_13C[i], 0); + fn_1_A074(lbl_1_bss_134[i]); + break; + } + var_f31 *= 1.05f; + if (var_f31 < -20.0f) { + var_f31 = -20.0f; + } + HuPrcVSleep(); + } + } + temp_r27 = HuAudSStreamPlay(6); + BoardPlayerMotionShiftSet(lbl_1_bss_282, 7, 0.0f, 10.0f, 0); + while (!BoardPlayerMotionEndCheck(lbl_1_bss_282)) { + HuPrcVSleep(); + } + HuPrcSleep(30); + while (HuAudSStreamStatGet(temp_r27) != 0) { + HuPrcVSleep(); + } + BoardAudSeqPause(0, 0, 1000); + for (i = 0; i < var_r29; i++) { + BoardModelKill(lbl_1_bss_13C[i]); + } + BoardPlayerMotBlendSet(lbl_1_bss_282, 0xB4, 0xF); + while (!BoardPlayerMotBlendCheck(lbl_1_bss_282)) { + HuPrcVSleep(); + } + BoardPlayerIdleSet(lbl_1_bss_282); + BoardWinCreate(2, MAKE_MESSID(32, 10), 9); + BoardWinWait(); + BoardWinKill(); +} + +static void fn_1_98A0(void) { + Vec sp14; + Vec sp8; + float var_f30; + float var_f31; + s32 i; + + BoardModelPosGet(lbl_1_bss_274, &sp14); + var_f30 = BoardModelRotYGet(lbl_1_bss_274); + BoardModelMotionShiftSet(lbl_1_bss_274, 2, 0.0f, 25.0f, 0x40000001); + for (i = 0; i < 25; i++) { + var_f30 += 7.2f; + BoardModelRotYSet(lbl_1_bss_274, var_f30); + HuPrcVSleep(); + } + BoardModelRotYSet(lbl_1_bss_274, 180.0f); + BoardModelMotionTimeSet(lbl_1_bss_27C, 0.0f); + BoardModelAttrReset(lbl_1_bss_27C, 0x40000002); + HuAudFXPlay(0x464); + HuAudFXPlay(0x4E); + Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[4]), lbl_1_data_3CC[4], &sp8); + var_f31 = 255.0f; + while (TRUE) { + sp14.z -= 10.0f; + if (sp14.z <= sp8.z + 200.0f) { + var_f31 -= 20.0f; + if (var_f31 <= 0.0f) { + break; + } + BoardModelAlphaSet(lbl_1_bss_274, var_f31); + } + BoardModelPosSetV(lbl_1_bss_274, &sp14); + if (BoardModelMotionTimeGet(lbl_1_bss_27C) >= 20.0f) { + BoardModelAttrSet(lbl_1_bss_27C, 0x40000002); + } + HuPrcVSleep(); + } + BoardModelAlphaSet(lbl_1_bss_274, 0); + BoardModelMotionTimeSet(lbl_1_bss_27C, 20.0f); + BoardModelAttrSet(lbl_1_bss_27C, 0x40000002); + fn_1_9B34(); +} + +static void fn_1_9B34(void) { + BoardModelKill(lbl_1_bss_274); + lbl_1_bss_0->unk01 = 0; + BoardModelMotionTimeSet(lbl_1_bss_280, 0.0f); + BoardModelAttrSet(lbl_1_bss_280, 0x40000002); + BoardModelMotionTimeSet(lbl_1_bss_27E, 0.0f); + BoardModelAttrSet(lbl_1_bss_280, 0x40000002); +} + +static void fn_1_9BDC(void) { + HuPrcSleep(240); + BoardMusStart(1, 0x1F, 0x7F, 0); + HuPrcEnd(); +} + +static void fn_1_9C18(void) { + Vec sp14; + Vec sp8; + s32 temp_r31; + + sp14.x = -150.0f; + sp14.y = 0.0f; + sp14.z = 120.0f; + sp8.x = -45.0f; + sp8.y = 0.0f; + sp8.z = 0.0f; + BoardCameraMotionStartEx(lbl_1_bss_14[4], &sp8, &sp14, 2300.0f, -1.0f, 30); + BoardCameraMotionWait(); + if (lbl_1_bss_0->unk01 == 1) { + BoardModelMotionTimeSet(lbl_1_bss_280, 0.0f); + BoardModelMotionSpeedSet(lbl_1_bss_280, 0.5f); + BoardModelAttrReset(lbl_1_bss_280, 0x40000002); + } + HuAudFXPlay(0x461); + temp_r31 = HuAudFXPlay(0x462); + BoardModelAttrReset(lbl_1_bss_27E, 0x40000002); + HuPrcSleep(110); + BoardModelAttrSet(lbl_1_bss_27E, 0x40000002); + HuAudFXStop(temp_r31); + switch (lbl_1_bss_0->unk01) { + case 1: + case 2: + HuAudFXPlay(0x46A); + break; + case 3: + HuAudFXPlay(0x46B); + BoardAudSeqPause(0, 1, 1000); + HuPrcChildCreate(fn_1_9BDC, 0x2003, 0x1000, 0, boardMainProc); + break; + } + HuPrcSleep(9); + sp14.x = -150.0f; + sp14.y = 250.0f; + sp14.z = 120.0f; + sp8.x = -5.0f; + sp8.y = 0.0f; + sp8.z = 0.0f; + BoardCameraMotionStartEx(lbl_1_bss_14[4], &sp8, &sp14, 1800.0f, -1.0f, 30); + BoardCameraMotionWait(); + HuPrcSleep(30); +} + +static void fn_1_9EA8(void) { + lbl_1_bss_278 = NULL; +} + +void fn_1_9EBC(void) { + lbl_1_bss_282 = GWSystem.player_curr; + lbl_1_bss_278 = HuPrcCreate(fn_1_62B0, 0x2004, 0x2000, 0); + HuPrcDestructorSet2(lbl_1_bss_278, fn_1_9EA8); + while (lbl_1_bss_278) { + HuPrcVSleep(); + } + BoardEventFlagReset(); +} + +static HsfanimStruct00 lbl_1_data_49C = { + 0x001E, + { 0x00, 0x00 }, // padding? + 3.3f, + 70.0f, + 7.0f, + { 0.0f, -0.05f, 0.0f }, + 2.0f, + 1.0f, + 20.0f, + 0.98f, + 0x0002, + { + { 0xFF, 0xFF, 0xFF, 0xFF }, + { 0xFF, 0xFF, 0x40, 0xFF }, + { 0x00, 0x00, 0x00, 0x00 }, + { 0x00, 0x00, 0x00, 0x00 } + }, + { + { 0xFF, 0x80, 0x80, 0x00 }, + { 0xFF, 0x40, 0x20, 0x00 }, + { 0x00, 0x00, 0x00, 0x00 }, + { 0x00, 0x00, 0x00, 0x00 } + } +}; + +static s16 fn_1_9F50(void) { + void *var_r29; + s16 temp_r3; + s16 temp_r3_2; + + if (lbl_1_bss_100 == NULL) { + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_EFFECT, 1), MEMORY_DEFAULT_NUM, HEAP_DATA); + lbl_1_bss_100 = HuSprAnimRead(var_r29); + HuSprAnimLock(lbl_1_bss_100); + } + temp_r3 = Hu3DParManCreate(lbl_1_bss_100, 0x64, &lbl_1_data_49C); + Hu3DParManAttrSet(temp_r3, 0x64); + Hu3DParManRotSet(temp_r3, 90.0f, 0.0f, 0.0f); + temp_r3_2 = Hu3DParManModelIDGet(temp_r3); + Hu3DParticleBlendModeSet(temp_r3_2, 1); + Hu3DModelLayerSet(temp_r3_2, 2); + lbl_1_bss_13A++; + return temp_r3; +} + +static void fn_1_A074(s16 arg0) { + if (arg0 == -1) { + return; + } + Hu3DParManKill(arg0); + if (--lbl_1_bss_13A == 0) { + HuSprAnimKill(lbl_1_bss_100); + lbl_1_bss_100 = NULL; + } +} diff --git a/src/REL/w04Dll/boo_event.c b/src/REL/w04Dll/boo_event.c index eaaeadc5..73005f50 100755 --- a/src/REL/w04Dll/boo_event.c +++ b/src/REL/w04Dll/boo_event.c @@ -21,7 +21,7 @@ #include "game/frand.h" #include "dolphin.h" -#include "math.h" +#include "ext_math.h" typedef struct { /* 0x00 */ char unk00[0x50]; @@ -46,7 +46,6 @@ typedef struct { /* 0x2C */ Process *unk2C; } BssE4Data; // Size 0x30 -static void fn_1_2044(void); static void fn_1_20EC(void); static void fn_1_28BC(void); static void fn_1_2B8C(void); @@ -137,21 +136,6 @@ static float lbl_1_data_358[] = { -150.00001f, -170.00001f, -30.0f, -220.0f }; -static void fn_1_2044(void) { - lbl_1_bss_38 = NULL; -} - -void fn_1_2058(void) { - s32 sp8; - - sp8 = GWSystem.player_curr; - lbl_1_bss_38 = HuPrcChildCreate(fn_1_1618, 0x2003, 0x2000, 0, boardMainProc); - HuPrcDestructorSet2(lbl_1_bss_38, fn_1_2044); - while (lbl_1_bss_38) { - HuPrcVSleep(); - } -} - static void fn_1_20EC(void) { Vec sp20; Vec sp14; @@ -223,7 +207,7 @@ static void fn_1_20EC(void) { lbl_1_bss_74 = lbl_1_bss_78 = var_r27->link[0]; BoardSpacePosGet(0, lbl_1_bss_78, &sp14); BoardModelPosGet(lbl_1_bss_FA, &sp20); - while (fn_1_1130(lbl_1_bss_FA, 180.0 * (atan2(sp14.x - sp20.x, sp14.z - sp20.z) / M_PI), 2.0f) == 0) { + while (fn_1_1130(lbl_1_bss_FA, atan2d(sp14.x - sp20.x, sp14.z - sp20.z), 2.0f) == 0) { HuPrcVSleep(); } PSVECSubtract(&sp14, &sp20, &sp8); @@ -236,7 +220,7 @@ static void fn_1_20EC(void) { BoardAudSeqPause(0, 1, 1000); BoardModelPosSetV(lbl_1_bss_FA, &sp14); BoardPlayerPosGet(temp_r30, &sp14); - while (fn_1_1130(lbl_1_bss_FA, 180.0 * (atan2(sp14.x - sp20.x, sp14.z - sp20.z) / M_PI), 3.0f) == 0) { + while (fn_1_1130(lbl_1_bss_FA, atan2d(sp14.x - sp20.x, sp14.z - sp20.z), 3.0f) == 0) { HuPrcVSleep(); } fn_1_2EE8(1); @@ -306,7 +290,7 @@ static void fn_1_28BC(void) { } BoardSpacePosGet(0, var_r31, &sp20); BoardModelPosGet(lbl_1_bss_FA, &sp14); - temp_f30 = 180.0 * (atan2(sp20.x - sp14.x, sp20.z - sp14.z) / M_PI); + temp_f30 = atan2d(sp20.x - sp14.x, sp20.z - sp14.z); BoardModelRotYSet(lbl_1_bss_FA, temp_f30); PSVECSubtract(&sp20, &sp14, &sp8); PSVECScale(&sp8, &sp8, 0.022222223f); @@ -427,7 +411,7 @@ static void fn_1_2FDC(void) { temp_r31 = HuPrcCurrentGet()->user_data; while (TRUE) { BoardModelPosGet(temp_r31->unk04, &sp8); - sp8.y = temp_r31->unk1C + 4.0 * sin(temp_r31->unk14 * M_PI / 180.0); + sp8.y = temp_r31->unk1C + 4.0 * sind(temp_r31->unk14); BoardModelPosSetV(temp_r31->unk04, &sp8); if (temp_r31->unk08 != -1) { sp8.y += 50.0f; @@ -484,7 +468,7 @@ static void fn_1_30A4(void) { } fn_1_5980(temp_r22); BoardModelPosGet(temp_r31->unk04, &sp20); - temp_f31 = 180.0 * (atan2(temp_r31->unk20.x - sp20.x, temp_r31->unk20.z - sp20.z) / M_PI); + temp_f31 = atan2d(temp_r31->unk20.x - sp20.x, temp_r31->unk20.z - sp20.z); while (fn_1_1130(temp_r31->unk04, temp_f31, 5.0f) == 0) { HuPrcVSleep(); } @@ -543,7 +527,7 @@ static void fn_1_30A4(void) { break; case 3: BoardModelPosGet(temp_r31->unk04, &sp20); - temp_f31 = 180.0 * (atan2(temp_r31->unk20.x - sp20.x, temp_r31->unk20.z - sp20.z) / M_PI); + temp_f31 = atan2d(temp_r31->unk20.x - sp20.x, temp_r31->unk20.z - sp20.z); BoardModelRotYSet(temp_r31->unk04, temp_f31); if (temp_r31->unk08 != -1) { BoardPlayerRotYSet(temp_r31->unk08, temp_f31); @@ -623,7 +607,7 @@ static void fn_1_38D8(void) { sp18 = lbl_1_bss_80[temp_r31]; GWPlayer[temp_r31].space_curr = lbl_1_bss_B0; BoardPlayerPosGet(temp_r31, &sp24); - var_f28 = 180.0 * (atan2(sp18.x - sp24.x, sp18.z - sp24.z) / M_PI); + var_f28 = atan2d(sp18.x - sp24.x, sp18.z - sp24.z); BoardPlayerRotYSet(temp_r31, var_f28); PSVECSubtract(&sp18, &sp24, &spC); PSVECScale(&spC, &spC, 0.025f); @@ -637,7 +621,7 @@ static void fn_1_38D8(void) { sp24.y = sp18.y; break; } - var_f28 = sqrtf((sp18.x - sp24.x) * (sp18.x - sp24.x) + (sp18.z - sp24.z) * (sp18.z - sp24.z)); + var_f28 = VECDistanceXZ(&sp18, &sp24); if (var_f28 <= 1.0f) { spC.x = spC.z = 0.0f; } @@ -712,7 +696,7 @@ static s32 fn_1_3C9C(void) { BoardSpacePosGet(0, sp20[i], &sp44); sp50.y = sp44.y; PSVECSubtract(&sp44, &sp50, &sp38); - var_f31 = 180.0 * (atan2(sp38.x, sp38.z) / M_PI); + var_f31 = atan2d(sp38.x, sp38.z); if (var_f31 < 0.0f) { var_f31 += 360.0f; } @@ -768,7 +752,7 @@ static s32 fn_1_3C9C(void) { var_r25 = 0; } if (var_r26 != 0 || var_r25 != 0) { - var_f30 = 180.0 * (atan2(-var_r26, var_r25) / M_PI) - 180.0; + var_f30 = atan2d(-var_r26, var_r25) - 180.0; var_f30 += var_f29; if (var_f30 >= 360.0f) { var_f30 -= 360.0f; @@ -793,7 +777,7 @@ static s32 fn_1_3C9C(void) { } for (i = 0; i < var_r29; i++) { if (var_r27 == i) { - sp38.x = sp38.y = sp38.z = 1.7999999523162842 + sin(var_f31 * M_PI / 180.0); + sp38.x = sp38.y = sp38.z = 1.8f + sind(var_f31); var_f31 += 8.0f; if (var_f31 > 180.0f) { var_f31 -= 180.0f; @@ -925,7 +909,7 @@ static void fn_1_4848(void) { BoardPlayerMotBlendSet(temp_r30, BoardModelRotYGet(lbl_1_bss_FA) - 180.0f, 0xA); while (!BoardPlayerMotBlendCheck(temp_r30)) { BoardModelPosGet(lbl_1_bss_FA, &sp14); - temp_f28 = sqrtf((sp20.x - sp14.x) * (sp20.x - sp14.x) + (sp20.z - sp14.z) * (sp20.z - sp14.z)); + temp_f28 = VECDistanceXZ(&sp20, &sp14); if (temp_f28 <= 200.0f) { HuAudPlayerVoicePlay(temp_r30, 0x128); goto block_A; @@ -936,7 +920,7 @@ static void fn_1_4848(void) { HuAudPlayerVoicePlay(temp_r30, 0x128); for (i = 0; i < 65; i++) { BoardModelPosGet(lbl_1_bss_FA, &sp14); - temp_f28 = sqrtf((sp20.x - sp14.x) * (sp20.x - sp14.x) + (sp20.z - sp14.z) * (sp20.z - sp14.z)); + temp_f28 = VECDistanceXZ(&sp20, &sp14); if (temp_f28 <= 200.0f) { goto block_A; } @@ -944,7 +928,7 @@ static void fn_1_4848(void) { } BoardPlayerMotionShiftSet(temp_r30, 1, 0.0f, 5.0f, 0); BoardModelPosGet(lbl_1_bss_FA, &sp14); - temp_f28 = sqrtf((sp20.x - sp14.x) * (sp20.x - sp14.x) + (sp20.z - sp14.z) * (sp20.z - sp14.z)); + temp_f28 = VECDistanceXZ(&sp20, &sp14); if (temp_f28 > 200.0f) { HuPrcVSleep(); } @@ -1006,7 +990,7 @@ static void fn_1_5018(void) { BoardModelPosGet(lbl_1_bss_FA, &spC); for (i = 0; i < lbl_1_bss_C2; i++) { BoardPlayerPosGet(lbl_1_bss_BA[i], &sp18); - var_f29 = sqrtf((sp18.x - spC.x) * (sp18.x - spC.x) + (sp18.z - spC.z) * (sp18.z - spC.z)); + var_f29 = VECDistanceXZ(&sp18, &spC); if (var_f29 < 900.0f && lbl_1_bss_B2[lbl_1_bss_BA[i]] == 0) { temp_r3 = HuPrcChildCreate(fn_1_4848, 0x2003, 0x2000, 0, boardMainProc); lbl_1_bss_D4[lbl_1_bss_BA[i]] = temp_r3; @@ -1191,10 +1175,10 @@ static void fn_1_5A2C(ModelData *model, ParticleData *particle, Mtx matrix) { var_r26 = 0; for (i = 0; i < particle->unk_30; i++, var_r31++) { if (var_r31->unk08.z != 0.0f) { - var_r31->unk34.x += var_r31->unk28 * sin(var_r31->unk08.x * M_PI / 180.0); + var_r31->unk34.x += var_r31->unk28 * sind(var_r31->unk08.x); var_r31->unk34.y += var_r31->unk08.y; - var_r31->unk34.z += var_r31->unk28 * cos(var_r31->unk08.x * M_PI / 180.0); - var_r31->unk08.x += var_r31->unk24 * sin(var_r31->unk08.x * M_PI / 180.0); + var_r31->unk34.z += var_r31->unk28 * cosd(var_r31->unk08.x); + var_r31->unk08.x += var_r31->unk24 * sind(var_r31->unk08.x); if (var_r31->unk08.x >= 360.0f) { var_r31->unk08.x -= 360.0f; } diff --git a/src/REL/w04Dll/bridge.c b/src/REL/w04Dll/bridge.c index 92618900..cdfe6cff 100755 --- a/src/REL/w04Dll/bridge.c +++ b/src/REL/w04Dll/bridge.c @@ -12,7 +12,7 @@ #include "game/board/window.h" #include "dolphin.h" -#include "math.h" +#include "ext_math.h" static void fn_1_17B4(s16 arg0, s16 arg1); static void fn_1_191C(void); @@ -20,9 +20,10 @@ static void fn_1_1B98(s16 arg0); static void fn_1_1C2C(void); static void fn_1_1E60(void); static void fn_1_2008(void); +static void fn_1_2044(void); static Process *lbl_1_bss_3C[3]; -Process *lbl_1_bss_38; +static Process *lbl_1_bss_38; static s32 lbl_1_data_298[] = { DATA_MAKE_NUM(DATADIR_W04, 32), @@ -61,7 +62,7 @@ void fn_1_12FC(void) { sp8.x = sp8.y = sp8.z = 2.0f; BoardModelScaleSetV(lbl_1_bss_14[11], &sp8); fn_1_1C2C(); - if (lbl_1_bss_0[0] & 1) { + if (lbl_1_bss_0->unk00 & 1) { BoardModelMotionStartEndSet(lbl_1_bss_14[5], 0, 180); BoardModelMotionTimeSet(lbl_1_bss_14[5], 108.0f); fn_1_17B4(0, 1); @@ -106,7 +107,7 @@ void fn_1_1618(void) { HuPrcVSleep(); } BoardCameraMotionWait(); - *lbl_1_bss_0 ^= 1; + lbl_1_bss_0->unk00 ^= 1; fn_1_191C(); fn_1_1C2C(); HuAudPlayerVoicePlay(temp_r31, 0x128); @@ -115,7 +116,7 @@ void fn_1_1618(void) { HuPrcVSleep(); } HuPrcSleep(30); - if (!(*lbl_1_bss_0 & 1)) { + if (!(lbl_1_bss_0->unk00 & 1)) { BoardWinCreate(2, MAKE_MESSID(32, 24), 11); BoardWinWait(); BoardWinKill(); @@ -164,7 +165,7 @@ static void fn_1_191C(void) { s32 var_r30; HuAudFXPlay(0x4B); - if (*lbl_1_bss_0 & 1) { + if (lbl_1_bss_0->unk00 & 1) { BoardWinCreate(2, MAKE_MESSID(32, 23), 11); BoardWinWait(); BoardWinKill(); @@ -219,7 +220,7 @@ static void fn_1_1C2C(void) { s16 *var_r28; s32 i; - if (*lbl_1_bss_0 == 0) { + if (lbl_1_bss_0->unk00 == 0) { BoardModelMotionStartEndSet(lbl_1_bss_14[3], 0, 80); BoardModelMotionTimeSet(lbl_1_bss_14[3], 0.0f); BoardModelVisibilitySet(lbl_1_bss_14[0], 1); @@ -262,10 +263,10 @@ static void fn_1_1E60(void) { BoardSpacePosGet(0, var_r28, &sp8); PSVECSubtract(&sp8, &sp14, &sp20); PSVECScale(&sp20, &sp20, 0.008333334f); - temp_f31 = 180.0 * (atan2(sp8.x - sp14.x, sp8.z - sp14.z) / M_PI); + temp_f31 = atan2d(sp8.x - sp14.x, sp8.z - sp14.z); BoardModelPosGet(temp_r31[1], &sp14); while (fn_1_1130(temp_r31[1], temp_f31, 2.5f) == 0) { - if (*lbl_1_bss_0 == 0) { + if (lbl_1_bss_0->unk00 == 0) { BoardModelAlphaSet(temp_r31[1], 0xFF); } else { BoardModelAlphaSet(temp_r31[1], 0); @@ -273,7 +274,7 @@ static void fn_1_1E60(void) { HuPrcVSleep(); } for (i = 0; i < 120; i++) { - if (*lbl_1_bss_0 == 0) { + if (lbl_1_bss_0->unk00 == 0) { BoardModelAlphaSet(temp_r31[1], 0xFF); } else { BoardModelAlphaSet(temp_r31[1], 0); @@ -295,3 +296,18 @@ static void fn_1_2008(void) { BoardModelKill(temp_r31[1]); HuMemDirectFree(temp_r31); } + +static void fn_1_2044(void) { + lbl_1_bss_38 = NULL; +} + +void fn_1_2058(void) { + s32 sp8; + + sp8 = GWSystem.player_curr; + lbl_1_bss_38 = HuPrcChildCreate(fn_1_1618, 0x2003, 0x2000, 0, boardMainProc); + HuPrcDestructorSet2(lbl_1_bss_38, fn_1_2044); + while (lbl_1_bss_38) { + HuPrcVSleep(); + } +} diff --git a/src/REL/w04Dll/main.c b/src/REL/w04Dll/main.c index ec429ece..1be51eef 100755 --- a/src/REL/w04Dll/main.c +++ b/src/REL/w04Dll/main.c @@ -55,7 +55,7 @@ BoardMapObject lbl_1_data_0[MAPOBJ_MAX] = { static s32 *lbl_1_bss_10; static s16 lbl_1_bss_8[4]; static Process *lbl_1_bss_4; -s8 *lbl_1_bss_0; +UnkW04BoardData *lbl_1_bss_0; static s16 lbl_1_data_280 = -1; static s16 lbl_1_data_282 = -1; @@ -79,7 +79,7 @@ void BoardCreate(void) { omDBGMenuButton = 1; sp8 = GWBoardGet(); - lbl_1_bss_0 = (s8*) GWSystem.board_data; + lbl_1_bss_0 = (UnkW04BoardData*) GWSystem.board_data; BoardSpaceInit(DATA_MAKE_NUM(DATADIR_W04, 0)); lbl_1_data_280 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W04, 1), NULL, 0); fn_8006DDE8(lbl_1_data_280, -1.0f); @@ -204,7 +204,7 @@ static s32 fn_1_7FC(void) { return 1; } if (temp_r3->flag & 0x100) { - if (lbl_1_bss_0[0] & 1) { + if (lbl_1_bss_0->unk00 & 1) { fn_1_55B4(); } else { BoardDiceDigit2DShowSet(0); @@ -422,12 +422,12 @@ s32 fn_1_1130(s16 arg0, float arg1, float arg2) { } if (var_f29 < 180.0f) { if (var_f29 > arg2) { - var_f31 = var_f31 + arg2; + var_f31 += arg2; } else { var_f31 = arg1; } } else if (360.0f - var_f29 > arg2) { - var_f31 = var_f31 - arg2; + var_f31 -= arg2; } else { var_f31 = arg1; } diff --git a/src/REL/w06Dll/bowser.c b/src/REL/w06Dll/bowser.c index 961e5187..e0a282bf 100755 --- a/src/REL/w06Dll/bowser.c +++ b/src/REL/w06Dll/bowser.c @@ -20,7 +20,7 @@ #include "game/board/window.h" #include "dolphin.h" -#include "math.h" +#include "ext_math.h" typedef struct { struct { @@ -260,7 +260,7 @@ static void fn_1_95AC(s32 arg0) { sp14.y = 150.0f; sp14.z = 0.0f; sp8.x = -14.0f; - sp8.y = 180.0 * (atan2(-sp20.x, -sp20.z) / M_PI); + sp8.y = atan2d(-sp20.x, -sp20.z); sp8.z = 0.0f; BoardCameraMotionStartEx(lbl_1_data_49A, &sp8, &sp14, 1620.0f, -1.0f, 21); BoardCameraMotionWait(); @@ -394,7 +394,7 @@ static void fn_1_9E5C(s32 arg0) { sp14.y = 150.0f; sp14.z = 0.0f; sp8.x = -14.0f; - sp8.y = 180.0 * (atan2(-sp20.x, -sp20.z) / M_PI); + sp8.y = atan2d(-sp20.x, -sp20.z); sp8.z = 0.0f; BoardCameraMotionStartEx(lbl_1_data_49A, &sp8, &sp14, 1620.0f, -1.0f, 21); BoardCameraMotionWait(); @@ -510,7 +510,7 @@ static void fn_1_A408(s32 arg0) { sp14.y = 250.0f; sp14.z = 0.0f; sp8.x = -8.0f; - sp8.y = 180.0 * (atan2(-sp20.x, -sp20.z) / M_PI) - 45.0; + sp8.y = atan2d(-sp20.x, -sp20.z) - 45.0; sp8.z = 0.0f; BoardCameraMotionStartEx(lbl_1_data_49A, &sp8, &sp14, 1700.0f, -1.0f, 63); BoardCameraMotionWait(); @@ -658,13 +658,13 @@ static void fn_1_AB4C(s32 arg0, s32 arg1) { BoardModelPosGet(lbl_1_data_49A, &sp30); PSVECSubtract(&sp30, &sp3C, &sp24); PSVECNormalize(&sp24, &sp24); - BoardPlayerRotYSet(arg0, 180.0 * (atan2(sp24.x, sp24.z) / M_PI)); + BoardPlayerRotYSet(arg0, atan2d(sp24.x, sp24.z)); BoardPlayerSizeSet(arg0, 2); sp18.x = 0.0f; sp18.y = 150.0f; sp18.z = 0.0f; spC.x = -25.0f; - spC.y = 180.0 * (atan2(-sp24.x, -sp24.z) / M_PI); + spC.y = atan2d(-sp24.x, -sp24.z); spC.z = 0.0f; BoardCameraMotionStartEx(lbl_1_data_49A, &spC, &sp18, 2000.0f, -1.0f, 2); BoardCameraMotionWait(); @@ -783,7 +783,7 @@ static void fn_1_B27C(s32 arg0) { sp14.y = 150.0f; sp14.z = 0.0f; sp8.x = -14.0f; - sp8.y = 180.0 * (atan2(-sp20.x, -sp20.z) / M_PI); + sp8.y = atan2d(-sp20.x, -sp20.z); sp8.z = 0.0f; BoardCameraMotionStartEx(lbl_1_data_49A, &sp8, &sp14, 1620.0f, -1.0f, 21); BoardCameraMotionWait(); @@ -890,7 +890,7 @@ static void fn_1_B8E0(omObjData *arg0) { // Bug? Likely to be "%=" instead. temp_r30->unk0C % 360; OSs16tof32(&temp_r30->unk0C, &temp_f30); - temp_f30 = 0.5 * sin(temp_f30 * M_PI / 180.0); + temp_f30 = 0.5 * sind(temp_f30); BoardModelPosGet(lbl_1_data_49A, &sp8); sp8.y += temp_f30; BoardModelPosSetV(lbl_1_data_49A, &sp8); @@ -961,7 +961,7 @@ static void fn_1_BD8C(s32 arg0) { BoardPlayerPosGet(arg0, &sp18); BoardModelPosGet(lbl_1_data_49A, &sp24); PSVECSubtract(&sp18, &sp24, &spC); - var_f26 = 180.0 * (atan2(spC.x, spC.z) / M_PI); + var_f26 = atan2d(spC.x, spC.z); BoardPlayerMotBlendSet(arg0, var_f26 + 180.0f, 0x14); fn_1_B6A0(var_f25, 20); while (!BoardPlayerMotBlendCheck(arg0)) { @@ -1043,8 +1043,8 @@ static void fn_1_C40C(void) { var_r29 = BoardSpaceLinkFlagSearch(0, var_r29, 0x04000000); BoardSpacePosGet(0, var_r29, &sp14); BoardModelPosGet(lbl_1_data_498, &sp20); - sp20.x += -100.0 * sin(BoardModelRotYGet(lbl_1_data_498) * M_PI / 180.0); - sp20.z += -100.0 * cos(BoardModelRotYGet(lbl_1_data_498) * M_PI / 180.0); + sp20.x += -100.0 * sind(BoardModelRotYGet(lbl_1_data_498)); + sp20.z += -100.0 * cosd(BoardModelRotYGet(lbl_1_data_498)); sp20.y += 250.0f; BoardModelPosSetV(lbl_1_data_4A0, &sp20); BoardModelScaleSet(lbl_1_data_4A0, 10.0f, 10.0f, 10.0f); diff --git a/src/REL/w06Dll/bridge.c b/src/REL/w06Dll/bridge.c index 1fa213d6..6078145d 100755 --- a/src/REL/w06Dll/bridge.c +++ b/src/REL/w06Dll/bridge.c @@ -13,7 +13,7 @@ #include "game/board/window.h" #include "dolphin.h" -#include "math.h" +#include "ext_math.h" typedef struct { struct { @@ -227,7 +227,7 @@ static s32 fn_1_8490(s32 arg0, s8 arg1) { BoardPlayerPosGet(arg0, &sp18); BoardSpacePosGet(0, lbl_1_bss_E2, &sp24); PSVECSubtract(&sp24, &sp18, &spC); - temp_f30 = 180.0 * (atan2(spC.x, spC.z) / M_PI); + temp_f30 = atan2d(spC.x, spC.z); BoardPlayerMotBlendSet(arg0, temp_f30, 0xF); while (!BoardPlayerMotBlendCheck(arg0)) { HuPrcVSleep(); diff --git a/src/REL/w06Dll/fire.c b/src/REL/w06Dll/fire.c index 1ea92d36..4b0cdba0 100755 --- a/src/REL/w06Dll/fire.c +++ b/src/REL/w06Dll/fire.c @@ -12,7 +12,7 @@ #include "game/board/window.h" #include "dolphin.h" -#include "math.h" +#include "ext_math.h" static void fn_1_6F80(void); static void fn_1_7210(void); @@ -162,7 +162,7 @@ static void fn_1_72CC(s32 arg0) { lbl_1_bss_C2[i] = 0; } } - fn_1_73EC(180.0 * (atan2(spC.x, spC.z) / M_PI)); + fn_1_73EC(atan2d(spC.x, spC.z)); } static void fn_1_73EC(float arg0) { diff --git a/src/REL/w06Dll/mg_coin.c b/src/REL/w06Dll/mg_coin.c index b7d0346f..b480e7c4 100755 --- a/src/REL/w06Dll/mg_coin.c +++ b/src/REL/w06Dll/mg_coin.c @@ -18,7 +18,7 @@ #include "game/board/window.h" #include "dolphin.h" -#include "math.h" +#include "ext_math.h" typedef struct { struct { @@ -205,7 +205,7 @@ static s32 fn_1_4BF8(s32 arg0) { sp38.z += 115.0 * cos(M_PI); PSVECSubtract(&sp38, &sp2C, &sp20); PSVECNormalize(&sp20, &sp20); - BoardPlayerRotYSet(arg0, 180.0 * (atan2(-sp20.x, -sp20.z) / M_PI)); + BoardPlayerRotYSet(arg0, atan2d(-sp20.x, -sp20.z)); BoardPlayerPosLerpStart(arg0, &sp2C, &sp38, 40); BoardModelPosGet(lbl_1_bss_C[5], &sp2C); BoardModelMotionShiftSet(lbl_1_bss_C[5], lbl_1_data_1DA, 0.0f, 8.0f, 0x40000001); @@ -213,7 +213,7 @@ static s32 fn_1_4BF8(s32 arg0) { while (GWPlayer[arg0].moving) { BoardPlayerPosGet(arg0, &sp38); PSVECSubtract(&sp38, &sp2C, &sp20); - BoardModelRotYSet(lbl_1_bss_C[5], 180.0 * (atan2(sp20.x, sp20.z) / M_PI)); + BoardModelRotYSet(lbl_1_bss_C[5], atan2d(sp20.x, sp20.z)); HuPrcVSleep(); } BoardModelMotionShiftSet(lbl_1_bss_C[5], 1, 0.0f, 8.0f, 0x40000001); @@ -286,7 +286,7 @@ static void fn_1_519C(s32 arg0) { while (GWPlayer[arg0].moving) { BoardPlayerPosGet(arg0, &sp14); PSVECSubtract(&sp14, &sp20, &sp8); - BoardModelRotYSet(lbl_1_bss_C[5], 180.0 * (atan2(sp8.x, sp8.z) / M_PI)); + BoardModelRotYSet(lbl_1_bss_C[5], atan2d(sp8.x, sp8.z)); HuPrcVSleep(); } BoardModelMotionShiftSet(lbl_1_bss_C[5], 1, 0.0f, 8.0f, 0x40000001); @@ -346,7 +346,7 @@ static void fn_1_5490(s32 arg0) { BoardModelPosSetV(temp_r31->unk04, &sp3C); BoardModelScaleSet(temp_r31->unk04, temp_f31, temp_f31, temp_f31); BoardModelVisibilitySet(temp_r31->unk04, 0); - BoardModelRotYSet(temp_r31->unk04, 180.0 * (atan2(sp18.x, sp18.z) / M_PI)); + BoardModelRotYSet(temp_r31->unk04, atan2d(sp18.x, sp18.z)); BoardModelMotionStart(temp_r31->unk04, 1, 0x40000001); BoardModelMotionStart(lbl_1_data_1DC, 0, 0); } @@ -436,8 +436,8 @@ static void fn_1_59D0(s32 arg0) { temp_r31 = OM_GET_WORK_PTR(lbl_1_bss_4C, Bss4CWork); temp_r31->unk00_field1 = arg0; if (arg0 == 1) { - lbl_1_bss_4C->trans.x = 0.96666666f * sin(90 * M_PI / 180.0); - lbl_1_bss_4C->trans.z = 0.96666666f * cos(90 * M_PI / 180.0); + lbl_1_bss_4C->trans.x = 0.96666666f * sind(90); + lbl_1_bss_4C->trans.z = 0.96666666f * cosd(90); temp_r31->unk01 = 60; return; } @@ -520,8 +520,8 @@ static void fn_1_5CE4(s32 arg0) { BoardPlayerMotionStart(temp_r31->unk00_field1, temp_r31->unk02, 0x40000001); omVibrate(temp_r31->unk00_field1, 12, 4, 2); fn_1_5968(&sp14); - sp8.x = sp14.x + 18.0 * sin(90 * M_PI / 180.0); - sp8.z = sp14.z + 18.0 * cos(90 * M_PI / 180.0); + sp8.x = sp14.x + 18.0 * sind(90); + sp8.z = sp14.z + 18.0 * cosd(90); BoardPlayerPosSetV(temp_r31->unk00_field1, &sp8); BoardModelPosSetV(temp_r31->unk04, &sp8); return; @@ -641,8 +641,8 @@ static void fn_1_606C(omObjData *arg0) { } fn_1_5968(&sp64); BoardPlayerPosGet(temp_r31->unk00_field1, &sp58); - sp58.x = sp64.x + 18.0 * sin(90 * M_PI / 180.0); - sp58.z = sp64.z + 18.0 * cos(90 * M_PI / 180.0); + sp58.x = sp64.x + 18.0 * sind(90); + sp58.z = sp64.z + 18.0 * cosd(90); BoardPlayerPosSetV(temp_r31->unk00_field1, &sp58); BoardModelPosSetV(temp_r31->unk04, &sp58); BoardModelRotYSet(temp_r31->unk04, BoardPlayerRotYGet(temp_r31->unk00_field1)); @@ -737,8 +737,8 @@ static void fn_1_6C4C(s32 arg0) { } temp_r31 = &temp_r30->unk0C[i]; temp_r31->unk00 = 1; - temp_r31->unk08.x = sp8.x + 50.0 * sin(360.0f * var_f31 * M_PI / 180.0); - temp_r31->unk08.z = sp8.z + 50.0 * cos(360.0f * var_f31 * M_PI / 180.0); + temp_r31->unk08.x = sp8.x + 50.0 * sind(360.0f * var_f31); + temp_r31->unk08.z = sp8.z + 50.0 * cosd(360.0f * var_f31); temp_r31->unk08.y = sp8.y + 600.0f + 500.0f * BoardRandFloat(); temp_r31->unk01 = 0; temp_r31->unk04 = 360.0f * BoardRandFloat(); diff --git a/src/REL/w06Dll/mg_item.c b/src/REL/w06Dll/mg_item.c index cd24d3e9..3fe296f0 100755 --- a/src/REL/w06Dll/mg_item.c +++ b/src/REL/w06Dll/mg_item.c @@ -21,9 +21,7 @@ #include "game/board/window.h" #include "dolphin.h" -#include "math.h" - -#define ABS(x) ((x) < 0 ? -(x) : (x)) +#include "ext_math.h" typedef struct { struct { @@ -277,7 +275,7 @@ static s32 fn_1_12A0(s32 arg0) { BoardSpacePosGet(0, lbl_1_bss_34, &sp38); PSVECSubtract(&sp38, &sp2C, &sp20); PSVECNormalize(&sp20, &sp20); - BoardPlayerRotYSet(arg0, 180.0 * (atan2(-sp20.x, -sp20.z) / M_PI)); + BoardPlayerRotYSet(arg0, atan2d(-sp20.x, -sp20.z)); BoardPlayerPosLerpStart(arg0, &sp2C, &sp38, 20); while (GWPlayer[arg0].moving) { HuPrcVSleep(); @@ -983,7 +981,7 @@ static void fn_1_3698(s8 arg0) { } PSVECSubtract(&sp18, &sp24, &spC); lbl_1_bss_28->trans.y = temp_f31 / var_f30; - BoardModelRotYSet(lbl_1_bss_C[4], 180.0 * (atan2(spC.x, spC.z) / M_PI)); + BoardModelRotYSet(lbl_1_bss_C[4], atan2d(spC.x, spC.z)); BoardModelMotionShiftSet(lbl_1_bss_C[4], temp_r31->unk08, 0.0f, 8.0f, 0x40000001); BoardModelMotionSpeedSet(lbl_1_bss_C[4], 2.0f); } @@ -1175,8 +1173,8 @@ static void fn_1_4460(ModelData *model, ParticleData *particle, Mtx matrix) { if (j != particle->unk_30) { temp_f30 = 0.003921569f * frand8() * 360.0f; temp_f29 = var_f31 * (20.0f + 0.003921569f * frand8() * 60.0f); - var_r31->unk34.x = sp8.x + temp_f29 * sin(temp_f30 * M_PI / 180.0); - var_r31->unk34.z = sp8.z + temp_f29 * cos(temp_f30 * M_PI / 180.0); + var_r31->unk34.x = sp8.x + temp_f29 * sind(temp_f30); + var_r31->unk34.z = sp8.z + temp_f29 * cosd(temp_f30); var_r31->unk34.y = sp8.y + var_f31 * (-30.0f + 0.003921569f * frand8() * 40.0f); var_r31->unk08.x = 0.5f + 0.003921569f * frand8() * 3.0f; var_r31->unk08.y = 0.3f + 0.003921569f * frand8() * 2.0f; diff --git a/src/game/board/battle.c b/src/game/board/battle.c index 73b9d29a..5713695d 100755 --- a/src/game/board/battle.c +++ b/src/game/board/battle.c @@ -17,7 +17,7 @@ #include "game/board/ui.h" #include "game/board/window.h" -#define ABS(x) ((x) < 0 ? -(x) : (x)) +#include "ext_math.h" typedef struct { struct { @@ -630,7 +630,7 @@ static void ShowBattleGame(BattleWork *arg0, omObjData *arg1) { arg0->unk01 = 90; } OSs8tof32((s8*) &arg0->unk01, &var_r29); - arg1->trans.z = sin(var_r29 * M_PI / 180.0); + arg1->trans.z = sind(var_r29); arg0->unk01 += 4; } @@ -712,7 +712,7 @@ static void ShowBattleCoin(BattleWork *arg0, omObjData *arg1) { while (var_f30 > 180.0f) { var_f30 -= 180.0f; } - temp_f29 = 0.9f + sin(var_f30 * M_PI / 180.0); + temp_f29 = 0.9f + sind(var_f30); HuSprScaleSet(arg0->unk08, 1, temp_f29, temp_f29); } diff --git a/src/game/board/lottery.c b/src/game/board/lottery.c index 40e6b57b..fe14093c 100755 --- a/src/game/board/lottery.c +++ b/src/game/board/lottery.c @@ -21,11 +21,9 @@ #include "game/board/ui.h" #include "game/board/window.h" -#include "math.h" +#include "ext_math.h" #include "stdlib.h" -#define ABS(x) (((x) < 0) ? -(x) : (x)) - typedef struct { struct { u8 unk00_field0 : 1; @@ -510,7 +508,7 @@ static void ExecLottery(void) { PSVECScale(&sp20, &sp20, 0.95f); PSVECAdd(&sp20, &sp38, &sp2C); } - temp_r26 = 180.0 * (atan2(-sp20.x, -sp20.z) / M_PI); + temp_r26 = atan2d(-sp20.x, -sp20.z); if (BoardPlayerSizeGet(temp_r31) == 1) { BoardModelVisibilitySet(gripMdl[0], 0); BoardModelVisibilitySet(gripMdl[1], 1); @@ -550,7 +548,7 @@ static void ExecLottery(void) { BoardPlayerPosGet(i, &sp38); PSVECSubtract(&sp2C, &sp38, &sp20); PSVECNormalize(&sp20, &sp20); - BoardPlayerMotBlendSet(i, 180.0 * (atan2(sp20.x, sp20.z) / M_PI), 7); + BoardPlayerMotBlendSet(i, atan2d(sp20.x, sp20.z), 7); } } BoardMusStart(1, 2, 0x7F, 0); @@ -971,7 +969,7 @@ static void ExecBallGame(void) { } else { OSs8tof32(&spB, &var_f26); OSs8tof32(&spA, &var_f19); - var_f25 = 180.0 * (atan2(var_f26, var_f19) / M_PI); + var_f25 = atan2d(var_f26, var_f19); if (var_f25 < 0.0f) { var_f25 += 360.0f; } @@ -1162,7 +1160,7 @@ static void ExecScratchTicket(s32 arg0) { BoardModelLayerSet(lotteryMdl[4], 6); BoardModelPassSet(lotteryMdl[4], 0); BoardCameraDirGet(&spC); - BoardModelRotYSet(lotteryMdl[4], 180.0 * (atan2(-spC.x, -spC.z) / M_PI)); + BoardModelRotYSet(lotteryMdl[4], atan2d(-spC.x, -spC.z)); BoardModelScaleSet(lotteryMdl[4], 3.0f, 3.0f, 3.0f); sp24.x = 320.0f; sp24.y = 480.0f; @@ -1511,7 +1509,7 @@ static void ExecTicketFocus(s32 arg0) { } temp_r29 = OM_GET_WORK_PTR(ticketObj[arg0], TicketWork); for (var_f31 = 0.0f; var_f31 < 90.0f; var_f31 += 2.0f) { - temp_f30 = 1.0 + 1.3f * sin(var_f31 * M_PI / 180.0); + temp_f30 = 1.0 + 1.3f * sind(var_f31); HuSprScaleSet(ticketSprGrp, temp_r29->unk00_field2, temp_f30, temp_f30); HuSprScaleSet(ticketSprGrp, temp_r29->unk00_field2 + 12, temp_f30, temp_f30); HuPrcVSleep(); @@ -1790,7 +1788,7 @@ static void ExecItemPrize(void) { for (i = 0; i < 30; i++) { sp14.y += temp_f29; var_f30 = BoardDAngleCalc(15.0f + var_f30); - var_f31 = cos(var_f28 * M_PI / 180.0); + var_f31 = cosd(var_f28); if (var_f31 <= 0.0f) { var_f31 = 0.01f; } @@ -2031,7 +2029,7 @@ void BoardLotteryTutorialExec(void) { BoardSpacePosGet(0, temp_r29, &sp2C); PSVECSubtract(&sp2C, &sp38, &sp20); PSVECNormalize(&sp20, &sp20); - temp_r28 = 180.0 * (atan2(-sp20.x, -sp20.z) / M_PI); + temp_r28 = atan2d(-sp20.x, -sp20.z); sp14.x = -3.0f; sp14.y = temp_r28; sp14.z = 0.0f; diff --git a/src/game/board/ui.c b/src/game/board/ui.c index 06cfde0c..57d3d101 100755 --- a/src/game/board/ui.c +++ b/src/game/board/ui.c @@ -18,9 +18,7 @@ #include "game/board/player.h" #include "game/board/tutorial.h" -#include "math.h" - -#define ABS(x) (((x) < 0) ? -(x) : (x)) +#include "ext_math.h" typedef struct { /* 0x00 */ struct { @@ -964,7 +962,7 @@ static void GrowYourTurn(UnkUiWork02 *arg0, omObjData *arg1) { arg0->unk00_bit3 = 1; } OSs8tof32(&arg0->unk01, &temp_f30); - temp_f30 = 1.2999999523162842 * sin(M_PI * temp_f30 / 180.0); + temp_f30 = 1.3f * sind(temp_f30); HuSprScaleSet(yourTurnSprGrp, 0, temp_f30, temp_f30); } @@ -977,7 +975,7 @@ static void WaitYourTurn(UnkUiWork02 *arg0, omObjData *arg1) { arg0->unk00_bit0 = 1; } OSs8tof32(&arg0->unk01, &temp_f30); - temp_f30 = sin(M_PI * temp_f30 / 180.0); + temp_f30 = sind(temp_f30); HuSprScaleSet(yourTurnSprGrp, 0, 1.3f + temp_f30, 1.3f + temp_f30); HuSprTPLvlSet(yourTurnSprGrp, 0, 1.0f - temp_f30); } @@ -1398,7 +1396,7 @@ static void UpdateItemPick(omObjData *arg0) { for (j = 0; j < 3; j++) { if (itemMdlId[i][j] != -1) { OSs8tof32(&temp_r28->unk03, &temp_f30); - temp_f30 = 1.0 + 0.5 * sin(M_PI * temp_f30 / 180.0); + temp_f30 = 1.0 + 0.5 * sind(temp_f30); BoardModelScaleSet(itemMdlId[i][j], temp_f30, temp_f30, temp_f30); sp14.x = temp_r27[i][j + 2].x; sp14.y = temp_r27[i][j + 2].y;