diff --git a/config/GMPE01_00/rels/w04Dll/symbols.txt b/config/GMPE01_00/rels/w04Dll/symbols.txt index 1787c5bb..451fcdf4 100644 --- a/config/GMPE01_00/rels/w04Dll/symbols.txt +++ b/config/GMPE01_00/rels/w04Dll/symbols.txt @@ -71,31 +71,31 @@ 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 -fn_1_A7E8 = .text:0x0000A7E8; // type:function size:0x1294 +fn_1_A71C = .text:0x0000A71C; // type:function size:0xCC scope:local +fn_1_A7E8 = .text:0x0000A7E8; // type:function size:0x1294 scope:local fn_1_BA7C = .text:0x0000BA7C; // type:function size:0x84 fn_1_BB00 = .text:0x0000BB00; // type:function size:0x7BC fn_1_C2BC = .text:0x0000C2BC; // type:function size:0xCC -fn_1_C388 = .text:0x0000C388; // type:function size:0x418 +fn_1_C388 = .text:0x0000C388; // type:function size:0x418 scope:local fn_1_C7A0 = .text:0x0000C7A0; // type:function size:0x34 fn_1_C7D4 = .text:0x0000C7D4; // type:function size:0x7B8 -fn_1_CF8C = .text:0x0000CF8C; // type:function size:0x120 -fn_1_D0AC = .text:0x0000D0AC; // type:function size:0x30 -fn_1_D0DC = .text:0x0000D0DC; // type:function size:0x98 -fn_1_D174 = .text:0x0000D174; // type:function size:0xBC -fn_1_D230 = .text:0x0000D230; // type:function size:0x74 -fn_1_D2A4 = .text:0x0000D2A4; // type:function size:0x2B0 -fn_1_D554 = .text:0x0000D554; // type:function size:0x154 -fn_1_D6A8 = .text:0x0000D6A8; // type:function size:0x64 -fn_1_D70C = .text:0x0000D70C; // type:function size:0x64 -fn_1_D770 = .text:0x0000D770; // type:function size:0x894 -fn_1_E004 = .text:0x0000E004; // type:function size:0x140 -fn_1_E144 = .text:0x0000E144; // type:function size:0x48 -fn_1_E18C = .text:0x0000E18C; // type:function size:0x1E8 -fn_1_E374 = .text:0x0000E374; // type:function size:0x14C -fn_1_E4C0 = .text:0x0000E4C0; // type:function size:0x1EC -fn_1_E6AC = .text:0x0000E6AC; // type:function size:0x1D4 -fn_1_E880 = .text:0x0000E880; // type:function size:0x18C +fn_1_CF8C = .text:0x0000CF8C; // type:function size:0x120 scope:local +fn_1_D0AC = .text:0x0000D0AC; // type:function size:0x30 scope:local +fn_1_D0DC = .text:0x0000D0DC; // type:function size:0x98 scope:local +fn_1_D174 = .text:0x0000D174; // type:function size:0xBC scope:local +fn_1_D230 = .text:0x0000D230; // type:function size:0x74 scope:local +fn_1_D2A4 = .text:0x0000D2A4; // type:function size:0x2B0 scope:local +fn_1_D554 = .text:0x0000D554; // type:function size:0x154 scope:local +fn_1_D6A8 = .text:0x0000D6A8; // type:function size:0x64 scope:local +fn_1_D70C = .text:0x0000D70C; // type:function size:0x64 scope:local +fn_1_D770 = .text:0x0000D770; // type:function size:0x894 scope:local +fn_1_E004 = .text:0x0000E004; // type:function size:0x140 scope:local +fn_1_E144 = .text:0x0000E144; // type:function size:0x48 scope:local +fn_1_E18C = .text:0x0000E18C; // type:function size:0x1E8 scope:local +fn_1_E374 = .text:0x0000E374; // type:function size:0x14C scope:local +fn_1_E4C0 = .text:0x0000E4C0; // type:function size:0x1EC scope:local +fn_1_E6AC = .text:0x0000E6AC; // type:function size:0x1D4 scope:local +fn_1_E880 = .text:0x0000E880; // type:function size:0x18C scope:local _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float @@ -241,82 +241,82 @@ lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data: 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 -lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float -lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float -lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float -lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 data:double -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 data:double -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 data:float -lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 data:float -lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 data:float -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 data:double -lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 data:double -lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float -lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float -lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float -lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float -lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float -lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float -lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float -lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x8 data:double -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float -lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 data:float -lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float -lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x8 data:double -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 data:double -lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 data:float -lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 data:float -lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 data:float -lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float -lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x8 data:float -lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 data:float -lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 data:float -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float -lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 data:float -lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 data:float -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float -lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 data:float -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 data:float -lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 data:float -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 data:double -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float -lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 data:float -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float -lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 data:float -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 data:float -lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 data:float -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float -lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 data:float -lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float -lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 data:float -lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 data:float -lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x8 data:double -lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float -lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float -lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x4 scope:local data:float +lbl_1_rodata_304 = .rodata:0x00000304; // type:object size:0x4 scope:local data:float +lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x4 scope:local data:float +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x8 scope:local data:double +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x8 scope:local data:double +lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float +lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x8 scope:local data:double +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x8 scope:local data:double +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 scope:local data:double +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 scope:local data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x8 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3BC = .rodata:0x000003BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C4 = .rodata:0x000003C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3CC = .rodata:0x000003CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3EC = .rodata:0x000003EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F4 = .rodata:0x000003F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x8 scope:local data:double +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x280 lbl_1_data_280 = .data:0x00000280; // type:object size:0x2 scope:local data:2byte lbl_1_data_282 = .data:0x00000282; // type:object size:0x2 scope:local data:2byte @@ -358,32 +358,32 @@ lbl_1_data_46D = .data:0x0000046D; // type:object size:0x1B scope:local data:str 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 -lbl_1_data_502 = .data:0x00000502; // type:object size:0x8 data:string -lbl_1_data_50A = .data:0x0000050A; // type:object size:0x8 data:string -lbl_1_data_512 = .data:0x00000512; // type:object size:0xA -lbl_1_data_51C = .data:0x0000051C; // type:object size:0x18 data:4byte -lbl_1_data_534 = .data:0x00000534; // type:object size:0xC -lbl_1_data_540 = .data:0x00000540; // type:object size:0x48 -lbl_1_data_588 = .data:0x00000588; // type:object size:0x4 data:4byte -lbl_1_data_58C = .data:0x0000058C; // type:object size:0x5 data:string -lbl_1_data_591 = .data:0x00000591; // type:object size:0x5 data:string -lbl_1_data_596 = .data:0x00000596; // type:object size:0x5 data:string -lbl_1_data_59B = .data:0x0000059B; // type:object size:0x5 data:string -lbl_1_data_5A0 = .data:0x000005A0; // type:object size:0x5 data:string -lbl_1_data_5A5 = .data:0x000005A5; // type:object size:0x5 data:string -lbl_1_data_5AA = .data:0x000005AA; // type:object size:0x5 data:string -lbl_1_data_5AF = .data:0x000005AF; // type:object size:0x5 data:string -lbl_1_data_5B4 = .data:0x000005B4; // type:object size:0x8 -lbl_1_data_5BC = .data:0x000005BC; // type:object size:0x24 data:4byte -lbl_1_data_5E0 = .data:0x000005E0; // type:object size:0x10 -lbl_1_data_5F0 = .data:0x000005F0; // type:object size:0x20 -lbl_1_data_610 = .data:0x00000610; // type:object size:0xE data:string -lbl_1_data_61E = .data:0x0000061E; // type:object size:0xE data:string -lbl_1_data_62C = .data:0x0000062C; // type:object size:0x10 -lbl_1_data_63C = .data:0x0000063C; // type:object size:0x3 data:string +lbl_1_data_4F0 = .data:0x000004F0; // type:object size:0x6 scope:local data:string +lbl_1_data_4F6 = .data:0x000004F6; // type:object size:0x6 scope:local data:string +lbl_1_data_4FC = .data:0x000004FC; // type:object size:0x6 scope:local data:string +lbl_1_data_502 = .data:0x00000502; // type:object size:0x8 scope:local data:string +lbl_1_data_50A = .data:0x0000050A; // type:object size:0x8 scope:local data:string +lbl_1_data_512 = .data:0x00000512; // type:object size:0x8 scope:local data:string +lbl_1_data_51C = .data:0x0000051C; // type:object size:0x18 scope:local data:4byte +lbl_1_data_534 = .data:0x00000534; // type:object size:0xC scope:local +lbl_1_data_540 = .data:0x00000540; // type:object size:0x48 scope:local +lbl_1_data_588 = .data:0x00000588; // type:object size:0x4 scope:local data:4byte +lbl_1_data_58C = .data:0x0000058C; // type:object size:0x5 scope:local data:string +lbl_1_data_591 = .data:0x00000591; // type:object size:0x5 scope:local data:string +lbl_1_data_596 = .data:0x00000596; // type:object size:0x5 scope:local data:string +lbl_1_data_59B = .data:0x0000059B; // type:object size:0x5 scope:local data:string +lbl_1_data_5A0 = .data:0x000005A0; // type:object size:0x5 scope:local data:string +lbl_1_data_5A5 = .data:0x000005A5; // type:object size:0x5 scope:local data:string +lbl_1_data_5AA = .data:0x000005AA; // type:object size:0x5 scope:local data:string +lbl_1_data_5AF = .data:0x000005AF; // type:object size:0x5 scope:local data:string +lbl_1_data_5B4 = .data:0x000005B4; // type:object size:0x5 scope:local data:string +lbl_1_data_5BC = .data:0x000005BC; // type:object size:0x24 scope:local data:4byte +lbl_1_data_5E0 = .data:0x000005E0; // type:object size:0xE scope:local data:2byte +lbl_1_data_5F0 = .data:0x000005F0; // type:object size:0x20 scope:local +lbl_1_data_610 = .data:0x00000610; // type:object size:0xE scope:local data:string +lbl_1_data_61E = .data:0x0000061E; // type:object size:0xE scope:local data:string +lbl_1_data_62C = .data:0x0000062C; // type:object size:0x10 scope:local data:2byte +lbl_1_data_63C = .data:0x0000063C; // type:object size:0x3 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 scope:local data:4byte lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x8 scope:local data:2byte @@ -428,24 +428,24 @@ 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 -lbl_1_bss_298 = .bss:0x00000298; // type:object size:0x6 -lbl_1_bss_29E = .bss:0x0000029E; // type:object size:0x8 -lbl_1_bss_2A6 = .bss:0x000002A6; // type:object size:0x6 -lbl_1_bss_2AC = .bss:0x000002AC; // type:object size:0x2 data:2byte -lbl_1_bss_2B0 = .bss:0x000002B0; // type:object size:0x4 data:4byte -lbl_1_bss_2B4 = .bss:0x000002B4; // type:object size:0xE -lbl_1_bss_2C2 = .bss:0x000002C2; // type:object size:0xE -lbl_1_bss_2D0 = .bss:0x000002D0; // type:object size:0x28 data:2byte -lbl_1_bss_2F8 = .bss:0x000002F8; // type:object size:0x2 data:2byte -lbl_1_bss_2FA = .bss:0x000002FA; // type:object size:0x2 data:2byte -lbl_1_bss_2FC = .bss:0x000002FC; // type:object size:0xC -lbl_1_bss_308 = .bss:0x00000308; // type:object size:0xC data:float -lbl_1_bss_314 = .bss:0x00000314; // type:object size:0x2 data:2byte -lbl_1_bss_318 = .bss:0x00000318; // type:object size:0x4 data:4byte -lbl_1_bss_31C = .bss:0x0000031C; // type:object size:0x4 data:4byte -lbl_1_bss_320 = .bss:0x00000320; // type:object size:0x4 data:4byte -lbl_1_bss_324 = .bss:0x00000324; // type:object size:0x2 data:2byte -lbl_1_bss_326 = .bss:0x00000326; // type:object size:0x2 data:2byte +lbl_1_bss_288 = .bss:0x00000288; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_28C = .bss:0x0000028C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_294 = .bss:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_bss_298 = .bss:0x00000298; // type:object size:0x6 scope:local +lbl_1_bss_29E = .bss:0x0000029E; // type:object size:0x8 scope:local +lbl_1_bss_2A6 = .bss:0x000002A6; // type:object size:0x6 scope:local +lbl_1_bss_2AC = .bss:0x000002AC; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_2B0 = .bss:0x000002B0; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_2B4 = .bss:0x000002B4; // type:object size:0xE scope:local +lbl_1_bss_2C2 = .bss:0x000002C2; // type:object size:0xE scope:local +lbl_1_bss_2D0 = .bss:0x000002D0; // type:object size:0x28 scope:local data:2byte +lbl_1_bss_2F8 = .bss:0x000002F8; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_2FA = .bss:0x000002FA; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_2FC = .bss:0x000002FC; // type:object size:0xC scope:local +lbl_1_bss_308 = .bss:0x00000308; // type:object size:0xC scope:local data:float +lbl_1_bss_314 = .bss:0x00000314; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_318 = .bss:0x00000318; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_31C = .bss:0x0000031C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_320 = .bss:0x00000320; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_324 = .bss:0x00000324; // type:object size:0x2 scope:local data:2byte +lbl_1_bss_326 = .bss:0x00000326; // type:object size:0x2 scope:local data:2byte diff --git a/configure.py b/configure.py index ce7790ab..012205ad 100644 --- a/configure.py +++ b/configure.py @@ -1403,8 +1403,8 @@ config.libs = [ Object(Matching, "REL/w04Dll/bridge.c"), Object(Matching, "REL/w04Dll/boo_event.c"), Object(Matching, "REL/w04Dll/big_boo.c"), - Object(NonMatching, "REL/w04Dll/mg_item.c"), - Object(NonMatching, "REL/w04Dll/mg_coin.c"), + Object(Matching, "REL/w04Dll/mg_item.c"), + Object(Matching, "REL/w04Dll/mg_coin.c"), } ), Rel('w05Dll', diff --git a/include/REL/w04Dll.h b/include/REL/w04Dll.h index 282e9825..9e8b7b4f 100755 --- a/include/REL/w04Dll.h +++ b/include/REL/w04Dll.h @@ -1,7 +1,6 @@ #ifndef REL_W04_H #define REL_W04_H -#include "game/process.h" #include "game/board/map_object.h" #include "dolphin/types.h" diff --git a/include/game/object.h b/include/game/object.h index 58d84ca1..eab5424d 100644 --- a/include/game/object.h +++ b/include/game/object.h @@ -45,7 +45,7 @@ typedef struct om_obj_data { /* 0x0A */ s16 next_idx; /* 0x0C */ s16 group; /* 0x0E */ u16 group_idx; -/* 0x10 */ int unk10; +/* 0x10 */ u32 unk10; /* 0x14 */ omObjFunc func; /* 0x18 */ Vec trans; /* 0x24 */ Vec rot; diff --git a/src/REL/w04Dll/big_boo.c b/src/REL/w04Dll/big_boo.c index c689dc71..4e897c0f 100755 --- a/src/REL/w04Dll/big_boo.c +++ b/src/REL/w04Dll/big_boo.c @@ -10,6 +10,7 @@ #include "game/msm.h" #include "game/objsub.h" #include "game/pad.h" +#include "game/process.h" #include "game/sprite.h" #include "game/window.h" #include "game/wipe.h" diff --git a/src/REL/w04Dll/boo_event.c b/src/REL/w04Dll/boo_event.c index 73005f50..d61dbbac 100755 --- a/src/REL/w04Dll/boo_event.c +++ b/src/REL/w04Dll/boo_event.c @@ -9,6 +9,7 @@ #include "game/object.h" #include "game/objsub.h" #include "game/pad.h" +#include "game/process.h" #include "game/sprite.h" #include "game/window.h" #include "game/board/audio.h" diff --git a/src/REL/w04Dll/bridge.c b/src/REL/w04Dll/bridge.c index cdfe6cff..f3fa85fb 100755 --- a/src/REL/w04Dll/bridge.c +++ b/src/REL/w04Dll/bridge.c @@ -4,6 +4,7 @@ #include "game/gamework_data.h" #include "game/memory.h" #include "game/objsub.h" +#include "game/process.h" #include "game/window.h" #include "game/board/main.h" #include "game/board/model.h" diff --git a/src/REL/w04Dll/main.c b/src/REL/w04Dll/main.c index 1be51eef..25da96a5 100755 --- a/src/REL/w04Dll/main.c +++ b/src/REL/w04Dll/main.c @@ -4,6 +4,7 @@ #include "game/data.h" #include "game/gamework_data.h" #include "game/object.h" +#include "game/process.h" #include "game/window.h" #include "game/board/boo_house.h" #include "game/board/com.h" diff --git a/src/REL/w04Dll/mg_coin.c b/src/REL/w04Dll/mg_coin.c new file mode 100755 index 00000000..4be845b4 --- /dev/null +++ b/src/REL/w04Dll/mg_coin.c @@ -0,0 +1,663 @@ +#include "REL/w04Dll.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/frand.h" +#include "game/gamework_data.h" +#include "game/hsfdraw.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/msm.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/process.h" +#include "game/window.h" +#include "game/board/audio.h" +#include "game/board/main.h" +#include "game/board/model.h" +#include "game/board/player.h" +#include "game/board/window.h" + +static void fn_1_CF8C(omObjData *arg0); +static void fn_1_D0AC(void); +static void fn_1_D0DC(void); +static void fn_1_D174(omObjData *arg0); +static void fn_1_D230(omObjData *arg0); +static void fn_1_D2A4(omObjData *arg0); +static void fn_1_D554(omObjData *arg0); +static void fn_1_D6A8(omObjData *arg0); +static void fn_1_D70C(omObjData *arg0); +static void fn_1_D770(void); +static void fn_1_E004(void); +static void fn_1_E144(omObjData *arg0); +static void fn_1_E18C(omObjData *arg0); +static void fn_1_E374(omObjData *arg0); +static void fn_1_E4C0(omObjData *arg0); +static void fn_1_E6AC(omObjData *arg0); +static s16 fn_1_E880(omObjData *arg0); + +static u16 lbl_1_bss_326; +static s16 lbl_1_bss_324; +static omObjData *lbl_1_bss_320; +static omObjData *lbl_1_bss_31C; +static omObjData *lbl_1_bss_318; +static s16 lbl_1_bss_314; +static Vec lbl_1_bss_308; +static Vec lbl_1_bss_2FC; +static s16 lbl_1_bss_2FA; +static s16 lbl_1_bss_2F8; +static s16 lbl_1_bss_2D0[20]; +static u16 lbl_1_bss_2C2[7]; +static u16 lbl_1_bss_2B4[7]; +static s32 lbl_1_bss_2B0; + +static s32 lbl_1_data_588 = -1; + +static char *lbl_1_data_5BC[] = { + "pia1", "pia2", "pia3", "pia4", + "pia5", "pia6", "pia7", "pia8", + "pia9" +}; + +static u16 lbl_1_data_5E0[] = { + 0x0100, 0x0200, 0x0040, 0x0020, + 0x0800, 0x0400, 0x0010 +}; + +static s32 lbl_1_data_5F0[] = { + 0x0000046D, + 0x0000046E, + 0x0000046F, + 0x00000470, + 0x00000471, + 0x00000472, + 0x00000473, + 0x00000474 +}; + +void fn_1_C7A0(void) { + BoardModelAttrSet(lbl_1_bss_14[7], 0x40000002); +} + +void fn_1_C7D4(void) { + Vec sp38; + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + float temp_f30; + float var_f31; + float var_f29; + s16 temp_r30; + s32 i; + + BoardModelLayerSet(lbl_1_bss_14[9], 1); + lbl_1_bss_324 = GWSystem.player_curr; + lbl_1_data_588 = -1; + lbl_1_bss_2FA = 0; + for (i = 0; i < 7; i++) { + lbl_1_bss_2B4[i] = 0; + } + for (i = 0; i < 7; i++) { + do { + temp_r30 = frandmod(7); + } while (lbl_1_bss_2B4[temp_r30] != 0); + lbl_1_bss_2B4[temp_r30] = i + 1; + lbl_1_bss_2C2[temp_r30] = lbl_1_data_5E0[i]; + } + for (i = 0; i < 7; i++) { + OSReport("%d: %d %04X\n", i, lbl_1_bss_2B4[i], lbl_1_bss_2C2[i]); + } + lbl_1_bss_2F8 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W04, 16), NULL, 0); + BoardModelVisibilitySet(lbl_1_bss_2F8, 0); + BoardModelAttrSet(lbl_1_bss_2F8, 0x40000002); + for (i = 0; i < 20; i++) { + lbl_1_bss_2D0[i] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 10), NULL, 1); + BoardModelVisibilitySet(lbl_1_bss_2D0[i], 0); + } + BoardPlayerMotBlendSet(lbl_1_bss_324, 0xB4, 0xF); + while (!BoardPlayerMotBlendCheck(lbl_1_bss_324)) { + HuPrcVSleep(); + } + BoardWinCreate(2, MAKE_MESSID(32, 19), 3); + BoardWinWait(); + BoardWinKill(); + BoardPlayerPosGet(lbl_1_bss_324, &lbl_1_bss_308); + BoardModelPosGet(lbl_1_bss_14[9], &lbl_1_bss_2FC); + BoardPlayerPosGet(lbl_1_bss_324, &sp38); + Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[7]), lbl_1_data_5BC[0], &sp2C); + sp20 = sp2C; + sp20.z = sp38.z; + sp20.y = sp38.y; + BoardPlayerPosLerpStart(lbl_1_bss_324, &sp38, &sp20, 0x3C); + while (fn_1_1130(lbl_1_bss_14[9], 270.0f, 30.0f) == 0) { + HuPrcVSleep(); + } + BoardModelPosGet(lbl_1_bss_14[9], &sp8); + sp14 = sp8; + sp14.x = sp2C.x; + PSVECSubtract(&sp14, &sp8, &sp38); + PSVECScale(&sp38, &sp38, 0.022727273f); + for (i = 0; i < 44; i++) { + BoardModelPosGet(lbl_1_bss_14[9], &sp8); + PSVECAdd(&sp8, &sp38, &sp8); + BoardModelPosSetV(lbl_1_bss_14[9], &sp8); + HuPrcVSleep(); + } + BoardModelPosSetV(lbl_1_bss_14[9], &sp14); + while (fn_1_1130(lbl_1_bss_14[9], 0.0f, 30.0f) == 0) { + HuPrcVSleep(); + } + while (GWPlayer[lbl_1_bss_324].moving) { + HuPrcVSleep(); + } + BoardPlayerMotBlendSet(lbl_1_bss_324, 0xB4, 0xF); + while (!BoardPlayerMotBlendCheck(lbl_1_bss_324)) { + HuPrcVSleep(); + } + BoardPlayerMotionShiftSet(lbl_1_bss_324, 4, 0.0f, 5.0f, 0); + var_f31 = 0.0f; + temp_f30 = 8.0f; + PSVECSubtract(&sp2C, &sp20, &sp38); + PSVECScale(&sp38, &sp38, 0.05f); + while (TRUE) { + BoardPlayerPosGet(lbl_1_bss_324, &sp20); + sp38.y = temp_f30 - var_f31 * var_f31 * 0.25f * 0.075f; + var_f31 += 1.0f; + PSVECAdd(&sp38, &sp20, &sp20); + sp14 = sp2C; + sp14.y = sp20.y; + PSVECSubtract(&sp14, &sp20, &sp14); + var_f29 = PSVECMag(&sp14); + if (var_f29 <= 1.0f) { + sp38.x = sp38.z = 0.0f; + sp20.x = sp2C.x; + sp20.z = sp2C.z; + } + if (sp20.y <= sp2C.y && sp38.y < 0.0f) { + sp20.y = sp2C.y; + break; + } + BoardPlayerPosSetV(lbl_1_bss_324, &sp20); + HuPrcVSleep(); + } + BoardPlayerPosSetV(lbl_1_bss_324, &sp20); + BoardPlayerMotBlendSet(lbl_1_bss_324, 0x5A, 0xF); + while (!BoardPlayerMotBlendCheck(lbl_1_bss_324)) { + HuPrcVSleep(); + } + HuPrcSleep(60); + lbl_1_bss_320 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_CF8C); + lbl_1_bss_318 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_D174); + lbl_1_bss_31C = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, NULL); + lbl_1_bss_318->scale.x = 255.0f; + lbl_1_bss_314 = 0; + lbl_1_bss_326 = 0; +} + +static void fn_1_CF8C(omObjData *arg0) { + s32 spC; + + if (lbl_1_data_588 != -1) { + spC = HuAudSeqMidiCtrlGet(lbl_1_data_588, 0, 1); + if (msmMusGetStatus(lbl_1_data_588) == 0) { + HuAudSeqFadeOut(lbl_1_data_588, 100); + lbl_1_bss_2FA = 1; + } + if (lbl_1_bss_2FA == 1 && msmMusGetStatus(lbl_1_data_588) == 0) { + lbl_1_data_588 = -1; + BoardAudSeqPause(0, 0, 1000); + OSReport("BGM1 Restore\n"); + } + } + if (lbl_1_bss_326 != 0 && BoardMGDoneFlagGet() == 1) { + fn_1_D0DC(); + omDelObjEx(boardObjMan, arg0); + } +} + +static void fn_1_D0AC(void) { + lbl_1_bss_326 = 1; + BoardMGExit(); +} + +static void fn_1_D0DC(void) { + s32 i; + + omDelObjEx(boardObjMan, lbl_1_bss_31C); + BoardModelKill(lbl_1_bss_2F8); + for (i = 0; i < 20; i++) { + BoardModelKill(lbl_1_bss_2D0[i]); + } + BoardModelLayerSet(lbl_1_bss_14[9], 0); + BoardMGDoneFlagSet(0); +} + +static void fn_1_D174(omObjData *arg0) { + UnkMsmStruct_03 sp8; + + if (arg0->work[0] == 0) { + arg0->work[0] = MGSeqCreate(3, 0); + BoardAudSeqPause(0, 1, 1000); + return; + } + if (MGSeqStatGet(arg0->work[0]) == 0) { + sp8.unk00 = 1; + sp8.unk06 = 0; + sp8.unk05 = 0x7F; + sp8.unk04 = 1; + lbl_1_data_588 = msmMusPlay(0x1D, &sp8); + arg0->func = fn_1_D230; + } +} + +static void fn_1_D230(omObjData *arg0) { + s32 temp_r3; + + temp_r3 = HuAudSeqMidiCtrlGet(lbl_1_data_588, 0, 1); + if (temp_r3 >= 10 && temp_r3 <= 19) { + arg0->work[1]++; + arg0->func = fn_1_D2A4; + } +} + +static void fn_1_D2A4(omObjData *arg0) { + Vec sp18; + Vec spC; + float sp8; + ModelData *temp_r30; + s32 temp_r3; + + temp_r30 = &Hu3DData[BoardModelIDGet(lbl_1_bss_2F8)]; + sp8 = BoardModelRotYGet(lbl_1_bss_14[9]); + BoardModelPosGet(lbl_1_bss_14[9], &spC); + if (arg0->scale.x != 0.0f) { + arg0->scale.x -= 8.5f; + if (arg0->scale.x < 0.0f) { + arg0->scale.x = 0.0f; + } + BoardModelAlphaSet(lbl_1_bss_14[9], arg0->scale.x); + return; + } + temp_r3 = HuAudSeqMidiCtrlGet(lbl_1_data_588, 0, 1); + if (temp_r3 >= 20 && temp_r3 <= 29) { + Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[7]), lbl_1_data_5BC[arg0->work[1]], &sp18); + spC.x = sp18.x; + BoardModelPosSetV(lbl_1_bss_14[9], &spC); + arg0->func = fn_1_D554; + if (arg0->work[1] < 8) { + BoardModelHookReset(lbl_1_bss_14[7]); + BoardModelVisibilitySet(lbl_1_bss_2F8, 1); + BoardModelMotionTimeSet(lbl_1_bss_2F8, lbl_1_bss_2B4[arg0->work[1] - 1]); + BoardModelHookSet(lbl_1_bss_14[7], lbl_1_data_5BC[arg0->work[1]], lbl_1_bss_2F8); + Hu3DMotionExec(BoardModelIDGet(lbl_1_bss_2F8), temp_r30->unk_08, temp_r30->unk_64, 0); + } + lbl_1_bss_31C->work[0] = 60; + lbl_1_bss_31C->unk10 = frandmod(40) + 10; + lbl_1_bss_31C->work[1] = arg0->work[1]; + lbl_1_bss_31C->func = fn_1_E18C; + } +} + +static void fn_1_D554(omObjData *arg0) { + float sp8; + + sp8 = BoardModelRotYGet(lbl_1_bss_14[9]); + arg0->scale.x += 8.5f; + if (arg0->scale.x > 255.0f) { + arg0->scale.x = 255.0f; + } + BoardModelAlphaSet(lbl_1_bss_14[9], arg0->scale.x); + if (arg0->scale.x == 255.0f) { + arg0->work[0] = 0; + lbl_1_bss_31C->work[1] = arg0->work[1]; + arg0->scale.x = 255.0f; + BoardModelAlphaSet(lbl_1_bss_14[9], arg0->scale.x); + if (arg0->work[1] == 8) { + arg0->func = fn_1_D70C; + lbl_1_bss_31C->work[2] = 1; + lbl_1_bss_31C->func = fn_1_E374; + } else { + arg0->func = fn_1_D6A8; + } + } +} + +static void fn_1_D6A8(omObjData *arg0) { + if (arg0->work[0] != 0) { + BoardModelHookReset(lbl_1_bss_14[7]); + BoardModelVisibilitySet(lbl_1_bss_2F8, 0); + arg0->func = fn_1_D230; + } +} + +static void fn_1_D70C(omObjData *arg0) { + Process *var_r30; + + if (arg0->work[0] == 1) { + var_r30 = HuPrcCreate(fn_1_D770, 0x2004, 0x1800, 0); + var_r30->user_data = arg0; + arg0->func = NULL; + } +} + +s16 lbl_1_data_62C[] = { + 1, 3, 5, 7, 10, 14, 18, 20 +}; + +static void fn_1_D770(void) { + Vec sp114[20]; + Vec sp24[20]; + Vec sp18; + Vec spC; + float temp_f29; + float var_f30; + float var_f31; + char sp8[4]; + Process *temp_r3; + omObjData *var_r28; + s32 var_r29; + s32 i; + + lbl_1_bss_314 = lbl_1_data_62C[lbl_1_bss_314 - 1]; + sprintf(sp8, "%d", lbl_1_bss_314); + BoardWinCreate(2, MAKE_MESSID(32, 20), 3); + BoardWinInsertMesSet(MAKE_MESSID_PTR(sp8), 0); + BoardWinWait(); + BoardWinKill(); + BoardPlayerMotBlendSet(lbl_1_bss_324, 0, 0xF); + while (!BoardPlayerMotBlendCheck(lbl_1_bss_324)) { + HuPrcVSleep(); + } + BoardPlayerPosGet(lbl_1_bss_324, &sp18); + for (i = 0; i < lbl_1_bss_314; i++) { + BoardModelVisibilitySet(lbl_1_bss_2D0[i], 1); + sp114[i] = sp18; + sp114[i].y += 800.0f + i * 120; + sp114[i].x += -25.0f + 50.0f * frand8() * 0.003921569f; + sp114[i].z += -25.0f + 50.0f * frand8() * 0.003921569f; + sp24[i].x = sp24[i].z = 0.0f; + sp24[i].y = 360.0f * frand8() * 0.003921569f; + BoardModelPosSetV(lbl_1_bss_2D0[i], &sp114[i]); + BoardModelRotSetV(lbl_1_bss_2D0[i], &sp24[i]); + } + var_f31 = -1.0f; + var_r29 = 0; + while (TRUE) { + for (i = 0; i < lbl_1_bss_314; i++) { + if (i < var_r29) { + continue; + } + sp114[i].y += var_f31; + BoardModelPosSetV(lbl_1_bss_2D0[i], &sp114[i]); + sp24[i].y += 45.0f; + if (sp24[i].y >= 360.0f) { + sp24[i].y -= 360.0f; + } + BoardModelRotSetV(lbl_1_bss_2D0[i], &sp24[i]); + if (sp114[i].y <= sp18.y + 80.0f) { + spC = sp114[i]; + CharModelCoinEffectCreate(1, &spC); + BoardModelVisibilitySet(lbl_1_bss_2D0[i], 0); + var_r29 += 1; + BoardPlayerCoinsAdd(lbl_1_bss_324, 1); + HuAudFXPlay(7); + omVibrate(lbl_1_bss_324, 12, 6, 6); + } + } + var_f31 *= 1.05f; + if (var_f31 < -20.0f) { + var_f31 = -20.0f; + } + if (var_r29 == lbl_1_bss_314) { + BoardPlayerMotionShiftSet(lbl_1_bss_324, 7, 0.0f, 10.0f, 0); + break; + } + HuPrcVSleep(); + } + while (!BoardPlayerMotionEndCheck(lbl_1_bss_324)) { + HuPrcVSleep(); + } + BoardWinCreate(2, MAKE_MESSID(32, 21), 3); + BoardWinWait(); + BoardWinKill(); + temp_r3 = HuPrcCreate(fn_1_E004, 0x2004, 0x1000, 0); + temp_r3->user_data = NULL; + BoardPlayerMotionShiftSet(lbl_1_bss_324, 4, 0.0f, 5.0f, 0); + var_f30 = 0.0f; + temp_f29 = 8.0f; + lbl_1_bss_308.z = sp18.z + 100.0f; + lbl_1_bss_308.x = sp18.x + 50.0f; + PSVECSubtract(&lbl_1_bss_308, &sp18, &spC); + PSVECScale(&spC, &spC, 0.04f); + while (TRUE) { + BoardPlayerPosGet(lbl_1_bss_324, &sp18); + spC.y = temp_f29 - var_f30 * var_f30 * 0.25f * 0.075f; + var_f30 += 1.0f; + PSVECAdd(&spC, &sp18, &sp18); + sp114[0] = lbl_1_bss_308; + sp114[0].y = sp18.y; + PSVECSubtract(&sp114[0], &sp18, &sp114[0]); + var_f31 = PSVECMag(&sp114[0]); + if (var_f31 <= 1.0f) { + spC.x = spC.z = 0.0f; + sp18.x = lbl_1_bss_308.x; + sp18.z = lbl_1_bss_308.z; + } + if (sp18.y <= lbl_1_bss_308.y && spC.y < 0.0f) { + sp18.y = lbl_1_bss_308.y; + break; + } + BoardPlayerPosSetV(lbl_1_bss_324, &sp18); + HuPrcVSleep(); + } + BoardPlayerPosSetV(lbl_1_bss_324, &sp18); + omVibrate(lbl_1_bss_324, 12, 6, 6); + while (!temp_r3->user_data) { + HuPrcVSleep(); + } + HuPrcKill(temp_r3); + var_r28 = HuPrcCurrentGet()->user_data; + var_r28->func = fn_1_E144; + HuPrcEnd(); +} + +static void fn_1_E004(void) { + Vec sp14; + Vec sp8; + s32 i; + + while (fn_1_1130(lbl_1_bss_14[9], 90.0f, 30.0f) == 0) { + HuPrcVSleep(); + } + BoardModelPosGet(lbl_1_bss_14[9], &sp14); + PSVECSubtract(&lbl_1_bss_2FC, &sp14, &sp8); + PSVECScale(&sp8, &sp8, 0.1f); + for (i = 0; i < 10; i++) { + BoardModelPosGet(lbl_1_bss_14[9], &sp14); + PSVECAdd(&sp14, &sp8, &sp14); + BoardModelPosSetV(lbl_1_bss_14[9], &sp14); + HuPrcVSleep(); + } + BoardModelPosSetV(lbl_1_bss_14[9], &lbl_1_bss_2FC); + while (fn_1_1130(lbl_1_bss_14[9], 0.0f, 30.0f) == 0) { + HuPrcVSleep(); + } + HuPrcCurrentGet()->user_data = (void*) 1; + while (TRUE) { + HuPrcVSleep(); + } +} + +static void fn_1_E144(omObjData *arg0) { + lbl_1_bss_326 = 1; + BoardMGExit(); + omDelObjEx(boardObjMan, arg0); +} + +static void fn_1_E18C(omObjData *arg0) { + s32 var_r29; + s16 var_r28; + s16 var_r30; + + var_r29 = HuAudSeqMidiCtrlGet(lbl_1_data_588, 0, 1); + if (var_r29 >= 20 && var_r29 <= 29) { + var_r28 = GWPlayer[lbl_1_bss_324].port; + var_r30 = 0; + if (GWPlayer[lbl_1_bss_324].com) { + if (--arg0->unk10 == 0) { + var_r30 = fn_1_E880(arg0); + } + } else { + var_r30 = HuPadBtnDown[var_r28]; + } + if (var_r30 & 0xF70) { + if ((var_r30 & lbl_1_bss_2C2[arg0->work[1] - 1]) && !(var_r30 & ~lbl_1_bss_2C2[arg0->work[1] - 1])) { + arg0->work[2] = 1; + } else { + arg0->work[2] = 0; + } + BoardModelVisibilitySet(lbl_1_bss_2F8, 0); + arg0->func = fn_1_E374; + } + } else { + BoardModelVisibilitySet(lbl_1_bss_2F8, 0); + arg0->work[2] = 0; + arg0->func = fn_1_E374; + lbl_1_bss_318->work[0] = 1; + fn_1_E374(arg0); + } +} + +static void fn_1_E374(omObjData *arg0) { + Vec sp20; + Vec sp14; + Vec sp8; + s32 temp_r3; + + temp_r3 = HuAudSeqMidiCtrlGet(lbl_1_data_588, 0, 1); + if (temp_r3 >= 30 && temp_r3 <= 39) { + Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[7]), lbl_1_data_5BC[arg0->work[1]], &sp14); + BoardPlayerPosGet(lbl_1_bss_324, &sp20); + PSVECSubtract(&sp14, &sp20, &sp8); + PSVECScale(&sp8, &sp8, 0.04f); + arg0->trans.x = sp8.x; + arg0->trans.z = sp8.z; + arg0->trans.y = 5.0f; + arg0->rot.x = 0.0f; + arg0->scale.x = sp14.x; + arg0->scale.y = sp14.y; + arg0->scale.z = sp14.z; + BoardPlayerMotionShiftSet(lbl_1_bss_324, 4, 0.0f, 5.0f, 0); + arg0->func = fn_1_E4C0; + } +} + +static void fn_1_E4C0(omObjData *arg0) { + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + float var_f31; + + BoardPlayerPosGet(lbl_1_bss_324, &sp2C); + sp14.x = arg0->scale.x; + sp14.y = arg0->scale.y; + sp14.z = arg0->scale.z; + sp20.x = arg0->trans.x; + sp20.z = arg0->trans.z; + sp20.y = arg0->trans.y - arg0->rot.x * arg0->rot.x * 0.25f * 0.075f; + arg0->rot.x += 1.0f; + PSVECAdd(&sp2C, &sp20, &sp2C); + sp8 = sp2C; + sp8.y = sp14.y; + PSVECSubtract(&sp14, &sp8, &sp8); + var_f31 = PSVECMag(&sp8); + if (var_f31 <= 1.0f) { + arg0->trans.x = arg0->trans.z = 0.0f; + sp2C.x = sp14.x; + sp2C.z = sp14.z; + } + if (sp2C.y <= sp14.y && sp20.y < 0.0f) { + sp2C.y = sp14.y; + BoardPlayerIdleSet(lbl_1_bss_324); + arg0->work[3] = 0; + if (arg0->work[2] != 0) { + arg0->func = fn_1_E6AC; + } else { + lbl_1_bss_318->work[0] = 1; + HuAudFXPlay(0x475); + arg0->func = NULL; + } + } + BoardPlayerPosSetV(lbl_1_bss_324, &sp2C); +} + +static void fn_1_E6AC(omObjData *arg0) { + Vec sp8; + float var_f31; + + if (arg0->work[3] == 0) { + lbl_1_bss_2B0 = -1; + var_f31 = 4.0f + 20.0f * (arg0->work[1] - 1); + BoardModelMotionTimeSet(lbl_1_bss_14[7], var_f31); + BoardModelAttrReset(lbl_1_bss_14[7], 0x40000002); + lbl_1_bss_314++; + arg0->work[3] = 1; + arg0->work[0] = 0x10; + lbl_1_bss_2B0 = HuAudFXPlay(lbl_1_data_5F0[arg0->work[1] - 1]); + } + if (--arg0->work[0] != 0) { + Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[7]), lbl_1_data_5BC[arg0->work[1]], &sp8); + BoardPlayerPosSetV(lbl_1_bss_324, &sp8); + return; + } + if (lbl_1_bss_2B0 >= 0) { + HuAudFXStop(lbl_1_bss_2B0); + } + lbl_1_bss_318->work[0] = 1; + BoardModelAttrSet(lbl_1_bss_14[7], 0x40000002); + arg0->func = NULL; +} + +static s16 fn_1_E880(omObjData *arg0) { + s16 temp_r28; + s16 var_r30; + s32 temp_r29; + + temp_r28 = GWPlayer[lbl_1_bss_324].diff; + var_r30 = 0; + temp_r29 = frandmod(100); + switch (temp_r28) { + case 0: + if (temp_r29 < 35) { + var_r30 = lbl_1_bss_2C2[arg0->work[1] - 1]; + } else if (temp_r29 < 90) { + var_r30 = -1; + } else { + arg0->unk10 = 100; + } + break; + case 1: + if (temp_r29 < 55) { + var_r30 = lbl_1_bss_2C2[arg0->work[1] - 1]; + } else if (temp_r29 < 90) { + var_r30 = -1; + } else { + arg0->unk10 = 100; + } + break; + case 2: + if (temp_r29 < 85) { + var_r30 = lbl_1_bss_2C2[arg0->work[1] - 1]; + } else { + var_r30 = -1; + } + break; + case 3: + var_r30 = lbl_1_bss_2C2[arg0->work[1] - 1]; + break; + } + return var_r30; +} diff --git a/src/REL/w04Dll/mg_item.c b/src/REL/w04Dll/mg_item.c new file mode 100755 index 00000000..342d8f5c --- /dev/null +++ b/src/REL/w04Dll/mg_item.c @@ -0,0 +1,656 @@ +#include "REL/w04Dll.h" +#include "game/audio.h" +#include "game/data.h" +#include "game/frand.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/process.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/board/audio.h" +#include "game/board/main.h" +#include "game/board/model.h" +#include "game/board/player.h" +#include "game/board/window.h" + +#include "dolphin.h" +#include "ext_math.h" + +static void fn_1_A71C(void); +static void fn_1_A7E8(void); +static void fn_1_C388(ModelData *model, ParticleData *particle, Mtx matrix); + +static s16 lbl_1_bss_2AC; +static s16 lbl_1_bss_2A6[3]; +static s16 lbl_1_bss_29E[4]; +static s16 lbl_1_bss_298[3]; +static float lbl_1_bss_294; +static s32 lbl_1_bss_290_pad; +static s32 lbl_1_bss_28C; +static AnimData *lbl_1_bss_288; + +static char *lbl_1_data_51C[] = { + "item1", "item2", "item3", + "switch1", "switch2", "switch3" +}; + +static s32 lbl_1_data_534[] = { + 0x00000466, + 0x00000467, + 0x00000468 +}; + +static s32 lbl_1_data_540[] = { + DATA_MAKE_NUM(DATADIR_BOARD, 109), + DATA_MAKE_NUM(DATADIR_BOARD, 110), + DATA_MAKE_NUM(DATADIR_BOARD, 111), + DATA_MAKE_NUM(DATADIR_BOARD, 112), + DATA_MAKE_NUM(DATADIR_BOARD, 113), + DATA_MAKE_NUM(DATADIR_BOARD, 114), + DATA_MAKE_NUM(DATADIR_BOARD, 115), + DATA_MAKE_NUM(DATADIR_BOARD, 116), + DATA_MAKE_NUM(DATADIR_BOARD, 118), + DATA_MAKE_NUM(DATADIR_BOARD, 119), + DATA_MAKE_NUM(DATADIR_BOARD, 120), + DATA_MAKE_NUM(DATADIR_BOARD, 121), + DATA_MAKE_NUM(DATADIR_BOARD, 122), + DATA_MAKE_NUM(DATADIR_BOARD, 123), + DATA_MAKE_NUM(DATADIR_W02, 24), + DATA_MAKE_NUM(DATADIR_W02, 25), + DATA_MAKE_NUM(DATADIR_W02, 26), + -1 +}; + +void fn_1_A0F8(void) { + Vec sp8; + s32 i; + + BoardModelAttrSet(lbl_1_bss_14[6], 0x40000002); + for (i = 0; i < 3; i++) { + lbl_1_bss_29E[i] = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W04, 13), NULL, 1); + BoardModelHookSet(lbl_1_bss_14[6], lbl_1_data_51C[i + 3], lbl_1_bss_29E[i]); + BoardModelAttrSet(lbl_1_bss_29E[i], 0x40000002); + } + BoardModelPosGet(lbl_1_bss_14[6], &sp8); + lbl_1_bss_294 = sp8.y; +} + +void fn_1_A1F0(void) { + Vec sp38[3]; + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + float var_f31; + s16 temp_r29; + s32 var_r30; + s32 i; + + lbl_1_bss_2AC = GWSystem.player_curr; + temp_r29 = BoardModelMotionCreate(lbl_1_bss_14[10], DATA_MAKE_NUM(DATADIR_BGUEST, 25)); + HuPrcSleep(60); + var_f31 = 0.0f; + for (i = 0; i < 30; i++) { + var_f31 += 3.0f; + BoardModelRotYSet(lbl_1_bss_14[10], var_f31); + HuPrcVSleep(); + } + BoardModelMotionStart(lbl_1_bss_14[10], temp_r29, 0); + for (i = 0; i < 3; i++) { + Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[6]), lbl_1_data_51C[i], &sp38[i]); + } + while (TRUE) { + var_r30 = 0; + for (i = 0; i < 3; i++) { + BoardModelPosGet(lbl_1_bss_298[i], &sp2C); + sp2C.y += 2.0f; + if (sp2C.y >= sp38[i].y) { + sp2C.y = sp38[i].y; + var_r30++; + } + BoardModelPosSetV(lbl_1_bss_298[i], &sp2C); + } + if (var_r30 == 3) { + break; + } + HuPrcVSleep(); + } + for (i = 0; i < 3; i++) { + BoardModelHookSet(lbl_1_bss_14[6], lbl_1_data_51C[i], lbl_1_bss_298[i]); + } + while (BoardModelMotionTimeGet(lbl_1_bss_14[10]) < BoardModelMotionMaxTimeGet(lbl_1_bss_14[10])) { + HuPrcVSleep(); + } + BoardModelMotionShiftSet(lbl_1_bss_14[10], 1, 0.0f, 5.0f, 0x40000001); + BoardAudSeqPause(0, 1, 1000); + BoardModelMotionTimeSet(lbl_1_bss_14[6], 0.0f); + BoardModelAttrReset(lbl_1_bss_14[6], 0x40000002); + HuPrcSleep(20); + HuAudFXPlay(0x469); + HuPrcSleep(50); + BoardMusStart(1, 0x1E, 0x7F, 0); + HuAudFXPlay(0x46C); + while (BoardModelMotionTimeGet(lbl_1_bss_14[6]) < 202.0f) { + HuPrcVSleep(); + } + BoardModelMotionTimeSet(lbl_1_bss_14[6], 202.0f); + BoardModelAttrSet(lbl_1_bss_14[6], 0x40000002); + BoardModelMotionKill(lbl_1_bss_14[10], temp_r29); + sp14.x = -35.0f; + sp14.y = sp14.z = 0.0f; + sp8.x = 0.0f; + sp8.y = 0.0f; + sp8.z = -150.0f; + BoardCameraMotionStartEx(lbl_1_bss_14[6], &sp14, &sp8, 1500.0f, 25.0f, 21); + BoardPlayerPosGet(lbl_1_bss_2AC, &sp2C); + Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[6]), lbl_1_data_51C[4], &sp20); + sp20.z = sp2C.z - 50.0f; + sp20.y = sp2C.y; + BoardPlayerPosLerpStart(lbl_1_bss_2AC, &sp2C, &sp20, 0x3C); + while (GWPlayer[lbl_1_bss_2AC].moving) { + HuPrcVSleep(); + } + BoardPlayerMotBlendSet(lbl_1_bss_2AC, 0xB4, 0xF); + while (!BoardPlayerMotBlendCheck(lbl_1_bss_2AC)) { + HuPrcVSleep(); + } + BoardCameraMotionWait(); + fn_1_A7E8(); + BoardMGExit(); + while (TRUE) { + if (BoardMGDoneFlagGet() == 1) { + BoardMGDoneFlagSet(0); + fn_1_BA7C(); + break; + } + HuPrcVSleep(); + } + HuPrcEnd(); +} + +static void fn_1_A71C(void) { + Vec sp8; + float var_f31; + s16 temp_r31; + + var_f31 = 0.0f; + temp_r31 = (s16) HuPrcCurrentGet()->user_data; + while (TRUE) { + BoardModelPosGet(temp_r31, &sp8); + sp8.y += 0.25 * sind(var_f31); + var_f31 += 5.0f; + if (var_f31 >= 360.0f) { + var_f31 -= 360.0f; + } + BoardModelPosSetV(temp_r31, &sp8); + HuPrcVSleep(); + } +} + +static void fn_1_A7E8(void) { + Vec sp54[3]; + Vec sp48; + Vec sp3C; + Vec sp30; + Vec sp24; + Vec sp18; + float sp10[2]; + float var_f29; + float var_f30; + float var_f31; + Process *var_r20; + s16 var_r30; + s16 var_r28; + s16 var_r27; + s16 var_r26; + s16 var_r25; + s16 var_r24; + u16 temp_r29; + u16 var_r23; + s16 var_r22; + s16 var_r21; + s16 var_r19; + u16 temp_r18; + u16 var_r17; + ParticleData *spC; + s32 sp8; + s32 i; + + var_r28 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W04, 14), NULL, 0); + BoardModelAttrSet(var_r28, 0x40000001); + BoardModelVisibilitySet(var_r28, 0); + var_r30 = 1; + for (i = 0; i < 3; i++) { + Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[6]), lbl_1_data_51C[i + 3], &sp54[i]); + sp54[i].y += 50.0f; + } + var_r25 = MGSeqCreate(3, 0); + while (MGSeqStatGet(var_r25) != 0) { + HuPrcVSleep(); + } + var_r24 = 5; + var_r21 = 60; + var_r25 = MGSeqCreate(1, var_r24, 0x120, 0x40); + HuWinMesMaxSizeGet(1, sp10, MAKE_MESSID(32, 22)); + var_r27 = HuWinCreate(-10000.0f, 368.0f, sp10[0], sp10[1], 0); + HuWinMesSet(var_r27, MAKE_MESSID(32, 22)); + HuWinBGTPLvlSet(var_r27, 0.0f); + HuWinMesSpeedSet(var_r27, 0); + BoardModelVisibilitySet(var_r28, 1); + BoardModelPosSetV(var_r28, &sp54[var_r30]); + var_r22 = 30; + var_r19 = 0; + temp_r18 = GWPlayer[lbl_1_bss_2AC].port; + while (TRUE) { + var_r21--; + if (var_r21 == 0) { + var_r21 = 60; + if (--var_r24 < 0) { + break; + } + MGSeqParamSet(var_r25, 1, var_r24); + } + if (GWPlayer[lbl_1_bss_2AC].com) { + if (var_r22 != 0) { + var_r22--; + } else { + var_r22 = frandmod(30) + 15; + if (frandBool() || var_r19 == 3) { + var_r17 = 0x100; + } else { + if (frandBool()) { + var_r23 = 1; + } else { + var_r23 = 2; + } + var_r19++; + } + } + } else { + var_r17 = HuPadBtnDown[temp_r18]; + var_r23 = HuPadDStkRep[temp_r18]; + } + if (var_r17 & 0x100) { + break; + } + if ((var_r23 & 1) && var_r30 != 0) { + HuAudFXPlay(0); + var_r30--; + } + if ((var_r23 & 2) && var_r30 != 2) { + HuAudFXPlay(0); + var_r30++; + } + BoardModelPosSetV(var_r28, &sp54[var_r30]); + HuPrcVSleep(); + } + HuAudFXPlay(2); + MGSeqParamSet(var_r25, 2, -1); + HuWinKill(var_r27); + for (i = 0; i < 360; i += 12) { + sp48.x = sp48.y = sp48.z = 1.0 + 0.8f * sind(i % 180); + BoardModelScaleSetV(var_r28, &sp48); + HuPrcVSleep(); + } + BoardModelVisibilitySet(var_r28, 0); + BoardPlayerPosGet(lbl_1_bss_2AC, &sp18); + BoardPlayerMotionShiftSet(lbl_1_bss_2AC, 4, 0.0f, 5.0f, 0); + var_f30 = 0.0f; + var_f29 = 12.0f; + sp3C = sp54[var_r30]; + BoardPlayerPosGet(lbl_1_bss_2AC, &sp30); + PSVECSubtract(&sp3C, &sp30, &sp3C); + PSVECScale(&sp3C, &sp3C, 0.05f); + while (TRUE) { + BoardPlayerPosGet(lbl_1_bss_2AC, &sp30); + sp3C.y = var_f29 - var_f30 * var_f30 * 0.25f * 0.075f; + var_f30 += 1.0f; + PSVECAdd(&sp3C, &sp30, &sp30); + if (sp30.y <= sp54[var_r30].y - 40.0f && sp3C.y < 0.0f) { + sp30.y = sp54[var_r30].y - 40.0f; + break; + } + BoardPlayerPosSetV(lbl_1_bss_2AC, &sp30); + sp48 = sp54[var_r30]; + sp48.y = sp30.y = 0.0f; + PSVECSubtract(&sp48, &sp30, &sp30); + var_f31 = PSVECMag(&sp30); + if (var_f31 <= 1.0f) { + sp3C.x = sp3C.z = 0.0f; + } + HuPrcVSleep(); + } + BoardAudSeqFadeOut(1, 100); + HuAudFXPlay(lbl_1_data_534[var_r30]); + BoardModelMotionTimeSet(lbl_1_bss_29E[var_r30], 0.0f); + BoardModelAttrReset(lbl_1_bss_29E[var_r30], 0x40000002); + BoardPlayerPosSetV(lbl_1_bss_2AC, &sp30); + BoardPlayerMotionShiftSet(lbl_1_bss_2AC, 1, 0.0f, 5.0f, 0x40000001); + while (BoardModelMotionTimeGet(lbl_1_bss_29E[var_r30]) < BoardModelMotionMaxTimeGet(lbl_1_bss_29E[var_r30])) { + if (BoardModelMotionTimeGet(lbl_1_bss_29E[var_r30]) >= 13.0f) { + BoardPlayerPosGet(lbl_1_bss_2AC, &sp30); + sp30.y += 1.0f; + BoardPlayerPosSetV(lbl_1_bss_2AC, &sp30); + } + HuPrcVSleep(); + } + temp_r29 = frandmod(3); + BoardModelHookReset(lbl_1_bss_14[6]); + for (i = 0; i < 3; i++) { + BoardModelHookSet(lbl_1_bss_14[6], lbl_1_data_51C[i + 3], lbl_1_bss_29E[i]); + if (i != temp_r29) { + BoardModelVisibilitySet(lbl_1_bss_298[i], 0); + } + } + BoardModelHookSet(lbl_1_bss_14[6], lbl_1_data_51C[1], lbl_1_bss_298[temp_r29]); + BoardModelAttrReset(lbl_1_bss_14[6], 0x40000002); + HuPrcSleep(30); + HuAudFXPlay(0x310); + while (BoardModelMotionTimeGet(lbl_1_bss_14[6]) < BoardModelMotionMaxTimeGet(lbl_1_bss_14[6])) { + HuPrcVSleep(); + } + BoardModelHookReset(lbl_1_bss_14[6]); + for (i = 0; i < 3; i++) { + BoardModelHookSet(lbl_1_bss_14[6], lbl_1_data_51C[i + 3], lbl_1_bss_29E[i]); + } + Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[6]), lbl_1_data_51C[1], &sp24); + BoardModelPosSetV(lbl_1_bss_298[temp_r29], &sp24); + var_r20 = HuPrcChildCreate(fn_1_A71C, 0x2002, 0x800, 0, boardMainProc); + var_r20->user_data = (void*) lbl_1_bss_298[temp_r29]; + var_r26 = Hu3DParticleCreate(lbl_1_bss_288, 100); + spC = Hu3DData[var_r26].unk_120; + spC->unk_02 = lbl_1_bss_298[temp_r29]; + Hu3DParticleHookSet(var_r26, fn_1_C388); + Hu3DParticleColSet(var_r26, 0xFF, 0xFF, 0); + Hu3DModelPosSet(var_r26, 0.0f, 0.0f, 0.0f); + Hu3DParticleBlendModeSet(var_r26, 1); + Hu3DModelLayerSet(var_r26, 2); + lbl_1_bss_28C = HuAudFXPlay(0x35F); + BoardPlayerMotBlendSet(lbl_1_bss_2AC, 0, 0xF); + while (!BoardPlayerMotBlendCheck(lbl_1_bss_2AC)) { + HuPrcVSleep(); + } + BoardPlayerMotionShiftSet(lbl_1_bss_2AC, 4, 0.0f, 5.0f, 0); + var_f30 = 0.0f; + var_f29 = 12.0f; + BoardPlayerPosGet(lbl_1_bss_2AC, &sp30); + PSVECSubtract(&sp18, &sp30, &sp3C); + PSVECScale(&sp3C, &sp3C, 0.05f); + while (TRUE) { + BoardPlayerPosGet(lbl_1_bss_2AC, &sp30); + sp3C.y = var_f29 - var_f30 * var_f30 * 0.25f * 0.075f; + var_f30 += 1.0f; + PSVECAdd(&sp3C, &sp30, &sp30); + if (sp30.y < sp18.y) { + sp30.y = sp18.y; + break; + } + BoardPlayerPosSetV(lbl_1_bss_2AC, &sp30); + sp48 = sp18; + sp48.y = sp30.y = 0.0f; + PSVECSubtract(&sp48, &sp30, &sp30); + var_f31 = PSVECMag(&sp30); + if (var_f31 <= 1.0f) { + sp3C.x = sp3C.z = 0.0f; + } + HuPrcVSleep(); + } + omVibrate(lbl_1_bss_2AC, 12, 6, 6); + BoardPlayerPosSetV(lbl_1_bss_2AC, &sp30); + BoardPlayerMotionShiftSet(lbl_1_bss_2AC, 1, 0.0f, 5.0f, 0x40000001); + BoardModelPosGet(lbl_1_bss_298[temp_r29], &sp24); + sp3C = sp24; + sp3C.z += 100.0f; + PSVECSubtract(&sp3C, &sp24, &sp3C); + PSVECScale(&sp3C, &sp3C, 0.033333335f); + for (i = 0; i < 30; i++) { + BoardModelPosGet(lbl_1_bss_298[temp_r29], &sp24); + PSVECAdd(&sp24, &sp3C, &sp24); + BoardModelPosSetV(lbl_1_bss_298[temp_r29], &sp24); + HuPrcVSleep(); + } + BoardPlayerPosGet(lbl_1_bss_2AC, &sp30); + sp24.y = sp30.y; + BoardPlayerPosLerpStart(lbl_1_bss_2AC, &sp30, &sp24, 0x3C); + while (GWPlayer[lbl_1_bss_2AC].moving) { + HuPrcVSleep(); + } + BoardPlayerMotBlendSet(lbl_1_bss_2AC, 0, 0xF); + while (!BoardPlayerMotBlendCheck(lbl_1_bss_2AC)) { + HuPrcVSleep(); + } + var_f31 = 90.0f; + for (i = 0; i < 15; i++) { + var_f31 -= 3.0f; + BoardModelRotYSet(lbl_1_bss_14[10], var_f31); + HuPrcVSleep(); + } + BoardWinCreate(2, MAKE_MESSID(32, 15), 3); + BoardWinInsertMesSet(MAKE_MESSID(8, lbl_1_bss_2A6[temp_r29]), 0); + BoardWinWait(); + BoardWinKill(); + HuAudFXPlay(0x30D); + HuPrcKill(var_r20); + BoardPlayerPosGet(lbl_1_bss_2AC, &sp30); + BoardModelPosGet(lbl_1_bss_298[temp_r29], &sp24); + var_f29 = 1.0f; + var_f31 = (sp30.y - sp24.y) / 30.0f; + var_f30 = -0.04f; + var_r27 = 0; + HuAudFXFadeOut(lbl_1_bss_28C, 0x1F3); + while (var_r27 == 0) { + sp24.y += var_f31; + var_f29 += var_f30; + if (var_f29 < 0.0f) { + var_f29 = 0.0f; + var_r27 = 1; + } + sp48.x = sp48.y = sp48.z = var_f29; + BoardModelPosSetV(lbl_1_bss_298[temp_r29], &sp24); + BoardModelScaleSetV(lbl_1_bss_298[temp_r29], &sp48); + HuPrcVSleep(); + } + HuAudFXStop(lbl_1_bss_28C); + BoardModelVisibilitySet(lbl_1_bss_298[temp_r29], 0); + BoardPlayerItemAdd(lbl_1_bss_2AC, lbl_1_bss_2A6[temp_r29]); + omVibrate(lbl_1_bss_2AC, 12, 6, 6); + sp8 = HuAudSStreamPlay(2); + BoardPlayerMotionShiftSet(lbl_1_bss_2AC, 7, 0.0f, 5.0f, 0); + while (!BoardPlayerMotionEndCheck(lbl_1_bss_2AC)) { + HuPrcVSleep(); + } + var_f31 = 45.0f; + for (i = 0; i < 15; i++) { + var_f31 -= 3.0f; + BoardModelRotYSet(lbl_1_bss_14[10], var_f31); + HuPrcVSleep(); + } + BoardModelRotYSet(lbl_1_bss_14[10], 0.0f); + HuPrcSleep(30); + while (HuAudSStreamStatGet(sp8) != 0) { + HuPrcVSleep(); + } + BoardAudSeqPause(0, 0, 1000); + BoardWinCreate(2, MAKE_MESSID(32, 16), 3); + BoardWinWait(); + BoardWinKill(); + BoardModelMotionTimeSet(lbl_1_bss_14[6], 0.0f); + BoardModelAttrSet(lbl_1_bss_14[6], 0x40000002); + Hu3DModelKill(var_r26); + BoardModelKill(var_r28); +} + +void fn_1_BA7C(void) { + s32 i; + + for (i = 0; i < 3; i++) { + BoardModelKill(lbl_1_bss_298[i]); + } + if (lbl_1_bss_288) { + HuSprAnimKill(lbl_1_bss_288); + lbl_1_bss_288 = NULL; + } +} + +void fn_1_BB00(s16 *arg0) { + Vec sp54[3]; + Vec sp30[3]; + Vec sp24; + Vec sp18; + float spC[3]; + float temp_f28; + float var_f27; + float var_f29; + s32 var_r30; + s32 i; + + for (i = 0; i < 3; i++) { + lbl_1_bss_2A6[i] = arg0[i]; + lbl_1_bss_298[i] = BoardModelCreate(lbl_1_data_540[lbl_1_bss_2A6[i]], NULL, 0); + BoardModelVisibilitySet(lbl_1_bss_298[i], 0); + if (lbl_1_bss_2A6[i] == 11) { + BoardModelAttrSet(lbl_1_bss_298[i], 0x40000001); + } + if (lbl_1_bss_2A6[i] == 5) { + Hu3DData[BoardModelIDGet(lbl_1_bss_298[i])].unk_F0[1][3] = -50.0f; + } + if (lbl_1_bss_2A6[i] == 4) { + BoardModelMotionSpeedSet(lbl_1_bss_298[i], 0.0f); + } + } + if (lbl_1_bss_288 == NULL) { + lbl_1_bss_288 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_EFFECT, 0)); + HuSprAnimLock(lbl_1_bss_288); + } + BoardModelMotionTimeSet(lbl_1_bss_14[6], 0.0f); + BoardModelAttrSet(lbl_1_bss_14[6], 0x40000002); + sp18.x = sp18.y = sp18.z = 0.0f; + for (i = 0; i < 3; i++) { + Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[6]), lbl_1_data_51C[i], &sp54[i]); + sp54[i].y += -50.0f; + BoardModelVisibilitySet(lbl_1_bss_298[i], 1); + BoardModelPosSetV(lbl_1_bss_298[i], &sp54[i]); + BoardModelPosGet(lbl_1_bss_14[10], &sp24); + BoardModelPosSetV(lbl_1_bss_298[i], &sp24); + BoardModelScaleSetV(lbl_1_bss_298[i], &sp18); + PSVECSubtract(&sp54[i], &sp24, &sp30[i]); + PSVECNormalize(&sp30[i], &sp30[i]); + spC[i] = 0.0f; + } + sp30[0].y = 16.0f; + sp30[1].y = 13.0f; + sp30[2].y = 10.0f; + HuAudFXPlay(0x362); + var_f29 = 0.0f; + while (TRUE) { + var_r30 = 0; + var_f29 += 0.05f; + if (var_f29 > 1.0f) { + var_f29 = 1.0f; + } + sp18.x = sp18.y = sp18.z = var_f29; + for (i = 0; i < 3; i++) { + BoardModelPosGet(lbl_1_bss_298[i], &sp24); + temp_f28 = sp30[i].y - spC[i] * spC[i] * 0.25f * 0.075f; + sp24.x += 6.55f * sp30[i].x; + sp24.z += 6.55f * sp30[i].z; + sp24.y += temp_f28; + var_f27 = VECDistanceXZ(&sp54[i], &sp24); + if (var_f27 < 3.0f) { + sp30[i].x = sp30[i].z = 0.0f; + sp24.x = sp54[i].x; + sp24.z = sp54[i].z; + } + if (sp24.y <= sp54[i].y && temp_f28 < 0.0f) { + sp24.y = sp54[i].y; + var_r30++; + } + BoardModelPosSetV(lbl_1_bss_298[i], &sp24); + BoardModelScaleSetV(lbl_1_bss_298[i], &sp18); + spC[i] += 1.0f; + } + if (var_r30 == 3) { + break; + } + HuPrcVSleep(); + } + for (i = 0; i < 3; i++) { + BoardModelPosSetV(lbl_1_bss_298[i], &sp54[i]); + } +} + +void fn_1_C2BC(void) { + Vec sp8; + float var_f31; + s32 i; + s32 j; + + var_f31 = 1.0f; + for (i = 0; i < 20; i++) { + var_f31 -= 0.05f; + if (var_f31 < 0.0f) { + var_f31 = 0.0f; + } + sp8.x = sp8.y = sp8.z = var_f31; + for (j = 0; j < 3; j++) { + BoardModelScaleSetV(lbl_1_bss_298[j], &sp8); + } + HuPrcVSleep(); + } +} + +static void fn_1_C388(ModelData *model, ParticleData *particle, Mtx matrix) { + Vec sp8; + HsfanimStruct01 *var_r31; + float var_f31; + float temp_f30; + float temp_f29; + s32 var_r28; + s32 i; + + if (particle->unk_34 == 0) { + var_r31 = particle->unk_48; + for (i = 0; i < particle->unk_30; i++, var_r31++) { + var_r31->unk40.a = 0; + var_r31->unk2C = 0.0f; + } + particle->unk_00 = 0; + } + BoardModelScaleGet(particle->unk_02, &sp8); + var_f31 = sp8.x; + BoardModelPosGet(particle->unk_02, &sp8); + for (i = 0; i < 22; i++) { + var_r31 = particle->unk_48; + for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) { + if (var_r31->unk2C == 0.0f) { + break; + } + } + if (var_r28 != 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 * 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; + var_r31->unk40.a = 0xB4; + var_r31->unk2C = var_f31 * 15.0f; + } + } + var_r31 = particle->unk_48; + for (i = 0; i < particle->unk_30; i++, var_r31++) { + if (var_r31->unk2C != 0.0f) { + var_r31->unk34.y -= var_r31->unk08.x; + var_r31->unk2C -= var_r31->unk08.y; + if (var_r31->unk2C <= 0.0f) { + var_r31->unk2C = 0.0f; + } + } + } +} diff --git a/src/game/chrman.c b/src/game/chrman.c index 17b2b183..34edc463 100755 --- a/src/game/chrman.c +++ b/src/game/chrman.c @@ -11,7 +11,7 @@ #include "game/process.h" #include "game/sprite.h" -#include "math.h" +#include "ext_math.h" typedef struct { /* 0x00 */ s16 unk00; @@ -401,13 +401,13 @@ static void UpdateCharAnim(s16 character, s16 arg1, s16 arg2, u8 arg3, s16 arg4, break; } if (!(arg4 & 0xF) && !(temp_r29->unkAC & 0x10)) { - effectDustParam.unk0C.x = 2.0 * -sin(temp_r30->rot.y * M_PI / 180.0); - effectDustParam.unk0C.y = 1.0 + 0.1 * frandmod(0xA); - effectDustParam.unk0C.z = 2.0 * -cos(temp_r30->rot.y * M_PI / 180.0); - sp1C.x = temp_r30->pos.x + temp_r30->scale.x * (frandmod(0x32) - 0x19); + effectDustParam.unk0C.x = 2.0 * -sind(temp_r30->rot.y); + effectDustParam.unk0C.y = 1.0 + 0.1 * frandmod(10); + effectDustParam.unk0C.z = 2.0 * -cosd(temp_r30->rot.y); + sp1C.x = temp_r30->pos.x + temp_r30->scale.x * (frandmod(50) - 25); sp1C.y = temp_r30->pos.y; - sp1C.z = temp_r30->pos.z + temp_r30->scale.x * (frandmod(0x32) - 0x19); - CreateEffectDust(arg1, sp1C.x, sp1C.y, sp1C.z, frandmod(0xA) + 0x1E, &effectDustParam); + sp1C.z = temp_r30->pos.z + temp_r30->scale.x * (frandmod(50) - 25); + CreateEffectDust(arg1, sp1C.x, sp1C.y, sp1C.z, frandmod(10) + 30, &effectDustParam); } for (i = 0; i < 4; i++) { if (lbl_801309A0[character * 4 + i] == arg4) { @@ -424,13 +424,13 @@ static void UpdateCharAnim(s16 character, s16 arg1, s16 arg2, u8 arg3, s16 arg4, break; } if (!(arg4 & 3) && !(temp_r29->unkAC & 0x10)) { - effectDustParam.unk0C.x = 4.0 * -sin(temp_r30->rot.y * M_PI / 180.0); - effectDustParam.unk0C.y = 2.0 + 0.1 * frandmod(0xA); - effectDustParam.unk0C.z = 4.0 * -cos(temp_r30->rot.y * M_PI / 180.0); - sp1C.x = temp_r30->pos.x + temp_r30->scale.x * (frandmod(0x32) - 0x19); + effectDustParam.unk0C.x = 4.0 * -sind(temp_r30->rot.y); + effectDustParam.unk0C.y = 2.0 + 0.1 * frandmod(10); + effectDustParam.unk0C.z = 4.0 * -cosd(temp_r30->rot.y); + sp1C.x = temp_r30->pos.x + temp_r30->scale.x * (frandmod(50) - 25); sp1C.y = temp_r30->pos.y; - sp1C.z = temp_r30->pos.z + temp_r30->scale.x * (frandmod(0x32) - 0x19); - CreateEffectDust(arg1, sp1C.x, sp1C.y, sp1C.z, frandmod(0xA) + 0x1E, &effectDustParam); + sp1C.z = temp_r30->pos.z + temp_r30->scale.x * (frandmod(50) - 25); + CreateEffectDust(arg1, sp1C.x, sp1C.y, sp1C.z, frandmod(10) + 30, &effectDustParam); } for (i = 0; i < 4; i++) { if (lbl_801309C0[character * 4 + i] == arg4) { @@ -441,13 +441,13 @@ static void UpdateCharAnim(s16 character, s16 arg1, s16 arg2, u8 arg3, s16 arg4, break; case 4: if (arg4 < 5 && !(temp_r29->unkAC & 0x10)) { - effectDustParam.unk0C.x = 6.0 * sin(temp_r30->rot.y * M_PI / 180.0); - effectDustParam.unk0C.z = 6.0 * cos(temp_r30->rot.y * M_PI / 180.0); + effectDustParam.unk0C.x = 6.0 * sind(temp_r30->rot.y); + effectDustParam.unk0C.z = 6.0 * cosd(temp_r30->rot.y); for (i = 0; i < 5; i++) { - effectDustParam.unk0C.y = 2.0 + 0.1 * frandmod(0xA); - sp1C.x = temp_r30->pos.x + temp_r30->scale.x * (frandmod(0x32) - 0x19); + effectDustParam.unk0C.y = 2.0 + 0.1 * frandmod(10); + sp1C.x = temp_r30->pos.x + temp_r30->scale.x * (frandmod(50) - 25); sp1C.y = temp_r30->pos.y; - sp1C.z = temp_r30->pos.z + temp_r30->scale.x * (frandmod(0x32) - 0x19); + sp1C.z = temp_r30->pos.z + temp_r30->scale.x * (frandmod(50) - 25); CreateEffectDust(arg1, sp1C.x, sp1C.y, sp1C.z, 20.0f, &effectDustParam); } } @@ -458,15 +458,15 @@ static void UpdateCharAnim(s16 character, s16 arg1, s16 arg2, u8 arg3, s16 arg4, case 6: if (arg4 == 5 && !(temp_r29->unkAC & 0x10)) { for (i = 0; i < 8; i++) { - effectDustParam.unk0C.x = 4.0 * sin(45.0f * i * M_PI / 180.0) * temp_r30->scale.x; + effectDustParam.unk0C.x = 4.0 * sind(45.0f * i) * temp_r30->scale.x; effectDustParam.unk0C.y = 0.0f; - effectDustParam.unk0C.z = 4.0 * cos(45.0f * i * M_PI / 180.0) * temp_r30->scale.x; + effectDustParam.unk0C.z = 4.0 * cosd(45.0f * i) * temp_r30->scale.x; CreateEffectDust(arg1, temp_r30->pos.x, temp_r30->pos.y + 10.0f * temp_r30->scale.x, temp_r30->pos.z, 20.0f, &effectDustParam); } for (i = 0; i < 8; i++) { - effectDustParam.unk0C.x = 2.0 * sin((45.0f * i + 22.5) * M_PI / 180.0) * temp_r30->scale.x; + effectDustParam.unk0C.x = 2.0 * sind(45.0f * i + 22.5) * temp_r30->scale.x; effectDustParam.unk0C.y = 0.0f; - effectDustParam.unk0C.z = 2.0 * cos((45.0f * i + 22.5) * M_PI / 180.0) * temp_r30->scale.x; + effectDustParam.unk0C.z = 2.0 * cosd(45.0f * i + 22.5) * temp_r30->scale.x; CreateEffectDust(arg1, temp_r30->pos.x, temp_r30->pos.y + 10.0f * temp_r30->scale.x, temp_r30->pos.z, 20.0f, &effectDustParam); } } @@ -518,15 +518,15 @@ static void UpdateCharAnim(s16 character, s16 arg1, s16 arg2, u8 arg3, s16 arg4, if (arg4 == 0) { if (!(temp_r29->unkAC & 0x10)) { for (i = 0; i < 8; i++) { - effectStarParam.unk0C.x = 10.0 * sin(45.0f * i * M_PI / 180.0) * temp_r30->scale.x; + effectStarParam.unk0C.x = 10.0 * sind(45.0f * i) * temp_r30->scale.x; effectStarParam.unk0C.y = 0.0f; - effectStarParam.unk0C.z = 10.0 * cos(45.0f * i * M_PI / 180.0) * temp_r30->scale.x; + effectStarParam.unk0C.z = 10.0 * cosd(45.0f * i) * temp_r30->scale.x; CreateEffectStar(arg1, temp_r30->pos.x, temp_r30->pos.y + 10.0f * temp_r30->scale.x, temp_r30->pos.z, 40.0f, &effectStarParam); } for (i = 0; i < 8; i++) { - effectDustParam.unk0C.x = 4.0 * sin((45.0f * i + 22.5) * M_PI / 180.0) * temp_r30->scale.x; + effectDustParam.unk0C.x = 4.0 * sind(45.0f * i + 22.5) * temp_r30->scale.x; effectDustParam.unk0C.y = 0.0f; - effectDustParam.unk0C.z = 4.0 * cos((45.0f * i + 22.5) * M_PI / 180.0) * temp_r30->scale.x; + effectDustParam.unk0C.z = 4.0 * cosd(45.0f * i + 22.5) * temp_r30->scale.x; CreateEffectDust(arg1, temp_r30->pos.x, temp_r30->pos.y + 10.0f * temp_r30->scale.x, temp_r30->pos.z, 20.0f, &effectDustParam); } } @@ -560,9 +560,9 @@ static void UpdateCharAnim(s16 character, s16 arg1, s16 arg2, u8 arg3, s16 arg4, } if (arg4 == 30) { for (i = 0; i < 8; i++) { - effectDustParam.unk0C.x = 4.0 * sin((45.0f * i + 22.5) * M_PI / 180.0) * temp_r30->scale.x; + effectDustParam.unk0C.x = 4.0 * sind(45.0f * i + 22.5) * temp_r30->scale.x; effectDustParam.unk0C.y = 0.0f; - effectDustParam.unk0C.z = 4.0 * cos((45.0f * i + 22.5) * M_PI / 180.0) * temp_r30->scale.x; + effectDustParam.unk0C.z = 4.0 * cosd(45.0f * i + 22.5) * temp_r30->scale.x; CreateEffectDust(arg1, temp_r30->pos.x, temp_r30->pos.y + 10.0f * temp_r30->scale.x, temp_r30->pos.z, 20.0f, &effectDustParam); } } @@ -972,12 +972,12 @@ static void RotateEffect(HsfanimStruct01 *arg0) { temp_r30 = &Hu3DData[(s32) arg0->unk08.x]; if (arg0->unk00_s16 < 8) { - var_f31 = 0.3 + sin((40.0f + 10.0f * (arg0->unk00_s16 + 1)) * M_PI / 180.0); + var_f31 = 0.3 + sind(40.0f + 10.0f * (arg0->unk00_s16 + 1)); arg0->unk2C = 50.0f * var_f31 * temp_r30->scale.x; arg0->unk40.a = 0xFF; - var_f31 = 0.3 + sin((15.0f * (arg0->unk00_s16 + 1)) * M_PI / 180.0); + var_f31 = 0.3 + sind(15.0f * (arg0->unk00_s16 + 1)); } else { - var_f31 = 0.3 + sin(3 * M_PI / 4); + var_f31 = 0.3 + sind(135); } var_f31 *= temp_r30->scale.x; arg0->unk34.x = temp_r30->pos.x + arg0->unk14.x * var_f31; @@ -1020,9 +1020,9 @@ static void PlayEffectSound(HsfanimStruct01 *arg0) { var_r25 = voiceParam[temp_r28 * 2 + 1]; } temp_r26 = (arg0->unk00_s16 * 5) % 360; - arg0->unk34.x = temp_r30->pos.x + 40.0 * sin((arg0->unk08.y + temp_r26) * M_PI / 180.0) * temp_r30->scale.x; + arg0->unk34.x = temp_r30->pos.x + 40.0 * sind(arg0->unk08.y + temp_r26) * temp_r30->scale.x; arg0->unk34.y = temp_r30->pos.y + var_r25 * temp_r30->scale.x; - arg0->unk34.z = temp_r30->pos.z + 40.0 * cos((arg0->unk08.y + temp_r26) * M_PI / 180.0) * temp_r30->scale.x; + arg0->unk34.z = temp_r30->pos.z + 40.0 * cosd(arg0->unk08.y + temp_r26) * temp_r30->scale.x; arg0->unk00_s16++; if (arg0->unk00_s16 >= 0x8F) { arg0->unk00_s16 = 0x48; @@ -1477,8 +1477,8 @@ void CharModelEffectCreate(s16 arg0, Vec *arg1) { var_r27 = var_r26->unk_120; var_r31 = &var_r27->unk_48[temp_r28]; var_r31->unk02 = 2; - var_r31->unk08.x = 30.0 * sin(i * 45 * M_PI / 180.0); - var_r31->unk08.y = 30.0 * cos(i * 45 * M_PI / 180.0); + var_r31->unk08.x = 30.0 * sind(i * 45); + var_r31->unk08.y = 30.0 * cosd(i * 45); var_r31->unk08.z = 0.0f; var_r31->unk14 = *arg1; var_r31->unk20 = 1.15f; @@ -1527,7 +1527,7 @@ static void OrbitEffect(HsfanimStruct01 *arg0) { if (var_f30 > 90.0f) { var_f30 = 90.0f; } - temp_f31 = sin((M_PI * var_f30) / 180.0); + temp_f31 = sind(var_f30); arg0->unk34.x = arg0->unk14.x + arg0->unk08.x * temp_f31; arg0->unk34.y = arg0->unk14.y + arg0->unk08.y * temp_f31; arg0->unk34.z = arg0->unk14.z + arg0->unk08.z * temp_f31; @@ -1569,9 +1569,9 @@ void CharModelCoinEffectCreate(s16 arg0, Vec *arg1) { for (i = 0; i < 16; i++) { temp_r29 = i * 22.5f; - coinParticleParam.unk0C.x = 5.0 * sin(temp_r29 * M_PI / 180.0); + coinParticleParam.unk0C.x = 5.0 * sind(temp_r29); coinParticleParam.unk0C.y = 0.1f * (frandmod(100) - 50); - coinParticleParam.unk0C.z = 5.0 * cos(temp_r29 * M_PI / 180.0); + coinParticleParam.unk0C.z = 5.0 * cosd(temp_r29); var_r28 = CreateEffect(effectMdl[5], arg0, arg1->x, arg1->y, arg1->z, 30.0f, &coinParticleParam); if (var_r28 == -1) { break; @@ -1650,9 +1650,9 @@ void fn_8004EDA4(s16 arg0, Vec *arg1, Vec *arg2) { sp20.z = sp2C[2][2]; for (i = 0; i < 8; i++) { temp_f31 = i * 45; - sp14.x = sp20.x * sp20.y * (1.0 - cos(temp_f31 * M_PI / 180.0)) - sp20.z * sin(temp_f31 * M_PI / 180.0); - sp14.y = sp20.y * sp20.y + (1.0f - sp20.y * sp20.y) * cos(temp_f31 * M_PI / 180.0); - sp14.z = sp20.y * sp20.z * (1.0 - cos(temp_f31 * M_PI / 180.0)) + sp20.x * sin(temp_f31 * M_PI / 180.0); + sp14.x = sp20.x * sp20.y * (1.0 - cosd(temp_f31)) - sp20.z * sind(temp_f31); + sp14.y = sp20.y * sp20.y + (1.0f - sp20.y * sp20.y) * cosd(temp_f31); + sp14.z = sp20.y * sp20.z * (1.0 - cosd(temp_f31)) + sp20.x * sind(temp_f31); PSVECNormalize(&sp14, &sp14); PSVECScale(&sp14, &lbl_80131030.unk0C, 10.0f); var_r28 = CreateEffect(effectMdl[4], arg0, arg1->x, arg1->y, arg1->z, 20.0f, &lbl_80131030); @@ -1732,9 +1732,9 @@ void fn_8004F13C(s16 arg0, Vec *arg1, Vec *arg2) { sp20.z = sp2C[2][2]; for (i = 0; i < 8; i++) { temp_f31 = i * 45; - sp14.x = sp20.x * sp20.y * (1.0 - cos(temp_f31 * M_PI / 180.0)) - sp20.z * sin(temp_f31 * M_PI / 180.0); - sp14.y = sp20.y * sp20.y + (1.0f - sp20.y * sp20.y) * cos(temp_f31 * M_PI / 180.0); - sp14.z = sp20.y * sp20.z * (1.0 - cos(temp_f31 * M_PI / 180.0)) + sp20.x * sin(temp_f31 * M_PI / 180.0); + sp14.x = sp20.x * sp20.y * (1.0 - cosd(temp_f31)) - sp20.z * sind(temp_f31); + sp14.y = sp20.y * sp20.y + (1.0f - sp20.y * sp20.y) * cosd(temp_f31); + sp14.z = sp20.y * sp20.z * (1.0 - cosd(temp_f31)) + sp20.x * sind(temp_f31); PSVECNormalize(&sp14, &sp14); PSVECScale(&sp14, &lbl_801310BC.unk0C, 10.0f); var_r28 = CreateEffect(effectMdl[4], arg0, arg1->x, arg1->y, arg1->z, 20.0f, &lbl_801310BC); @@ -1931,9 +1931,9 @@ static void UpdateNpcEffect(void) { switch (temp_r27[2]) { case 0: if (!(temp_r26 & 0xF) && !(lbl_801975B0[temp_r28] & 0x10)) { - effectDustParam.unk0C.x = 2.0 * -sin(temp_r30->rot.y * M_PI / 180.0); + effectDustParam.unk0C.x = 2.0 * -sind(temp_r30->rot.y); effectDustParam.unk0C.y = 1.0 + 0.1 * frandmod(10); - effectDustParam.unk0C.z = 2.0 * -cos(temp_r30->rot.y * M_PI / 180.0); + effectDustParam.unk0C.z = 2.0 * -cosd(temp_r30->rot.y); sp2C.x = temp_r30->pos.x + (frandmod(50) - 25); sp2C.y = temp_r30->pos.y; sp2C.z = temp_r30->pos.z + (frandmod(50) - 25); @@ -1950,9 +1950,9 @@ static void UpdateNpcEffect(void) { break; case 1: if (!(temp_r26 & 3) && !(lbl_801975B0[temp_r28] & 0x10)) { - effectDustParam.unk0C.x = 4.0 * -sin(temp_r30->rot.y * M_PI / 180.0); + effectDustParam.unk0C.x = 4.0 * -sind(temp_r30->rot.y); effectDustParam.unk0C.y = 2.0 + 0.1 * frandmod(10); - effectDustParam.unk0C.z = 4.0 * -cos(temp_r30->rot.y * M_PI / 180.0); + effectDustParam.unk0C.z = 4.0 * -cosd(temp_r30->rot.y); sp2C.x = temp_r30->pos.x + (frandmod(50) - 25); sp2C.y = temp_r30->pos.y; sp2C.z = temp_r30->pos.z + (frandmod(50) - 25); @@ -1970,9 +1970,9 @@ static void UpdateNpcEffect(void) { case 2: if (temp_r28 != -1) { if (!(temp_r26 & 0x1F) && !(lbl_801975B0[temp_r28] & 0x10)) { - effectDustParam.unk0C.x = 2.0 * -sin(temp_r30->rot.y * M_PI / 180.0); + effectDustParam.unk0C.x = 2.0 * -sind(temp_r30->rot.y); effectDustParam.unk0C.y = 1.0 + 0.1 * frandmod(10); - effectDustParam.unk0C.z = 2.0 * -cos(temp_r30->rot.y * M_PI / 180.0); + effectDustParam.unk0C.z = 2.0 * -cosd(temp_r30->rot.y); sp2C.x = temp_r30->pos.x + (frandmod(50) - 25); sp2C.y = temp_r30->pos.y; sp2C.z = temp_r30->pos.z + (frandmod(50) - 25); @@ -1989,9 +1989,9 @@ static void UpdateNpcEffect(void) { case 3: if (temp_r28 != -1) { if (!(temp_r26 & 3) && !(lbl_801975B0[temp_r28] & 0x10)) { - effectDustParam.unk0C.x = 2.0 * -sin(temp_r30->rot.y * M_PI / 180.0); + effectDustParam.unk0C.x = 2.0 * -sind(temp_r30->rot.y); effectDustParam.unk0C.y = 1.0 + 0.1 * frandmod(10); - effectDustParam.unk0C.z = 2.0 * -cos(temp_r30->rot.y * M_PI / 180.0); + effectDustParam.unk0C.z = 2.0 * -cosd(temp_r30->rot.y); sp2C.x = temp_r30->pos.x + (frandmod(50) - 25); sp2C.y = temp_r30->pos.y; sp2C.z = temp_r30->pos.z + (frandmod(50) - 25); @@ -2008,9 +2008,9 @@ static void UpdateNpcEffect(void) { case 4: if (temp_r28 != -1) { if (!(temp_r26 & 7) && !(lbl_801975B0[temp_r28] & 0x10)) { - effectDustParam.unk0C.x = 2.0 * -sin(temp_r30->rot.y * M_PI / 180.0); + effectDustParam.unk0C.x = 2.0 * -sind(temp_r30->rot.y); effectDustParam.unk0C.y = 1.0 + 0.1 * frandmod(10); - effectDustParam.unk0C.z = 2.0 * -cos(temp_r30->rot.y * M_PI / 180.0); + effectDustParam.unk0C.z = 2.0 * -cosd(temp_r30->rot.y); sp2C.x = temp_r30->pos.x + (frandmod(50) - 25); sp2C.y = temp_r30->pos.y; sp2C.z = temp_r30->pos.z + (frandmod(50) - 25); @@ -2032,15 +2032,15 @@ static void UpdateNpcEffect(void) { break; } for (i = 0; i < 8; i++) { - effectStarParam.unk0C.x = 10.0 * sin(45.0f * i * M_PI / 180.0) * temp_r30->scale.x; + effectStarParam.unk0C.x = 10.0 * sind(45.0f * i) * temp_r30->scale.x; effectStarParam.unk0C.y = 0.0f; - effectStarParam.unk0C.z = 10.0 * cos(45.0f * i * M_PI / 180.0) * temp_r30->scale.x; + effectStarParam.unk0C.z = 10.0 * cosd(45.0f * i) * temp_r30->scale.x; CreateEffectStar(temp_r25, temp_r30->pos.x, temp_r30->pos.y + 10.0f * temp_r30->scale.x, temp_r30->pos.z, 40.0f, &effectStarParam); } for (i = 0; i < 8; i++) { - effectDustParam.unk0C.x = 4.0 * sin((45.0f * i + 22.5) * M_PI / 180.0) * temp_r30->scale.x; + effectDustParam.unk0C.x = 4.0 * sind(45.0f * i + 22.5) * temp_r30->scale.x; effectDustParam.unk0C.y = 0.0f; - effectDustParam.unk0C.z = 4.0 * cos((45.0f * i + 22.5) * M_PI / 180.0) * temp_r30->scale.x; + effectDustParam.unk0C.z = 4.0 * cosd(45.0f * i + 22.5) * temp_r30->scale.x; CreateEffectDust(temp_r25, temp_r30->pos.x, temp_r30->pos.y + 10.0f * temp_r30->scale.x, temp_r30->pos.z, 20.0f, &effectDustParam); } if (temp_r28 != -1) { diff --git a/src/game/hsfanim.c b/src/game/hsfanim.c index a04903fb..4c8592c2 100755 --- a/src/game/hsfanim.c +++ b/src/game/hsfanim.c @@ -5,7 +5,7 @@ #include "game/process.h" #include "game/sprite.h" -#include "math.h" +#include "ext_math.h" #include "string.h" typedef struct { @@ -1148,8 +1148,8 @@ static void ParManFunc(void) { PSVECCrossProduct(&sp14, &sp2C, &sp8); } PSVECNormalize(&sp8, &sp8); - temp_f31 = sin(M_PI * var_f28 / 180.0); - temp_f30 = cos(M_PI * var_f28 / 180.0); + temp_f31 = sind(var_f28); + temp_f30 = cosd(var_f28); sp14.x = sp8.x * (sp2C.x * sp2C.x + temp_f30 * (1.0f - sp2C.x * sp2C.x)) + sp8.y * (sp2C.x * sp2C.y * (1.0f - temp_f30) - sp2C.z * temp_f31) + sp8.z * (sp2C.x * sp2C.z * (1.0f - temp_f30) + sp2C.y * temp_f31); @@ -1160,8 +1160,8 @@ static void ParManFunc(void) { + sp8.y * (sp2C.y * sp2C.z * (1.0f - temp_f30) + sp2C.x * temp_f31) + sp8.z * (sp2C.z * sp2C.z + temp_f30 * (1.0f - sp2C.z * sp2C.z)); PSVECCrossProduct(&sp14, &sp2C, &sp8); - temp_f31 = sin(M_PI * var_f29 / 180.0); - temp_f30 = cos(M_PI * var_f29 / 180.0); + temp_f31 = sind(var_f29); + temp_f30 = cosd(var_f29); sp14.x = sp2C.x * (sp8.x * sp8.x + temp_f30 * (1.0f - sp8.x * sp8.x)) + sp2C.y * (sp8.x * sp8.y * (1.0f - temp_f30) - sp8.z * temp_f31) + sp2C.z * (sp8.x * sp8.z * (1.0f - temp_f30) + sp8.y * temp_f31); diff --git a/src/game/hsfdraw.c b/src/game/hsfdraw.c index 365e0f11..4730c4b2 100755 --- a/src/game/hsfdraw.c +++ b/src/game/hsfdraw.c @@ -3,11 +3,9 @@ #include "game/hsfformat.h" #include "game/hsfload.h" -#include "math.h" +#include "ext_math.h" #include "string.h" -#define ABS(x) (((x) < 0) ? -(x) : (x)) - typedef struct { /* 0x00 */ ModelData *unk00; /* 0x04 */ HsfObject *unk04; @@ -408,7 +406,7 @@ s32 ObjCullCheck(HsfData *arg0, HsfObject *arg1, Mtx arg2) { if (temp_f18 + temp_f21 < temp_r30->near || temp_f18 - temp_f21 > temp_r30->far) { return 0; } - sp24 = sin(temp_r30->fov * 0.5 * M_PI / 180.0) / cos(temp_r30->fov * 0.5 * M_PI / 180.0); + sp24 = sind(temp_r30->fov * 0.5) / cosd(temp_r30->fov * 0.5); temp_f27 = sp24 * temp_f18; temp_f24 = 1.2f * temp_f27; temp_f24 = temp_f21 + ABS(temp_f24); diff --git a/src/game/hsfmotion.c b/src/game/hsfmotion.c index 5492499f..69ba3236 100644 --- a/src/game/hsfmotion.c +++ b/src/game/hsfmotion.c @@ -7,7 +7,7 @@ #include "game/init.h" #include "game/ShapeExec.h" -#include "math.h" +#include "ext_math.h" #include "string.h" static s32 SearchObjectIndex(HsfData *arg0, u32 arg1); @@ -1098,9 +1098,9 @@ void SetObjCameraMotion(s16 arg0, HsfTrack *arg1, float arg2) { if (var_r30 & temp_r28) { PSVECSubtract(&Hu3DCamera[i].pos, &Hu3DCamera[i].target, &spC); PSVECNormalize(&spC, &spC); - sp18.x = spC.x * spC.y * (1.0 - cos(M_PI * arg2 / 180.0)) - spC.z * sin(M_PI * arg2 / 180.0); - sp18.y = spC.y * spC.y + (1.0f - spC.y * spC.y) * cos(M_PI * arg2 / 180.0); - sp18.z = spC.y * spC.z * (1.0 - cos(M_PI * arg2 / 180.0)) + spC.x * sin(M_PI * arg2 / 180.0); + sp18.x = spC.x * spC.y * (1.0 - cosd(arg2)) - spC.z * sind(arg2); + sp18.y = spC.y * spC.y + (1.0f - spC.y * spC.y) * cosd(arg2); + sp18.z = spC.y * spC.z * (1.0 - cosd(arg2)) + spC.x * sind(arg2); PSVECNormalize(&sp18, &Hu3DCamera[i].up); Hu3DCamera[i].aspect_dupe = arg2; }