diff --git a/config/GMPE01_00/rels/m449Dll/symbols.txt b/config/GMPE01_00/rels/m449Dll/symbols.txt index 2a91efc3..07d61d06 100644 --- a/config/GMPE01_00/rels/m449Dll/symbols.txt +++ b/config/GMPE01_00/rels/m449Dll/symbols.txt @@ -18,183 +18,187 @@ ObjectSetup = .text:0x000095D8; // type:function size:0x460 fn_1_9A38 = .text:0x00009A38; // type:function size:0x9C _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:0x10 -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:double -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:double -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 data:double -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 data:double -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 data:double -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0xC0 -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0xC0 -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0xC0 -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x20 data:4byte -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_308 = .rodata:0x00000308; // type:object size:0x8 data:double -lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float -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_328 = .rodata:0x00000328; // type:object size:0x8 data:double -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x8 data:double -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 data:double -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_354 = .rodata:0x00000354; // type:object size:0x4 data:float -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float -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:0x4 data:float -lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float -lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 data:float -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:0x8 data:double -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x8 data:double -lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 data:double -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x8 data:double -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:0x8 data:double -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 data:double -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 data:double -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 data:double -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 data:double -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 data:double -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float -lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x8 data:double -lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x8 data:double -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x8 data:double -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x8 data:double -lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x8 data:double -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x8 data:double -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x8 data:double -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float -lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x8 data:double -lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 data:double -lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x8 data:double -lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x8 data:double -lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x8 data:double -lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 data:double -lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 data:double -lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float -lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x8 data:double -lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x8 data:double -lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float -lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 data:double -lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 data:float -lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x8 data:double -lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x8 data:double -lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x8 data:double -lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 data:float -lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 data:float -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x8 data:double -lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x8 data:double -lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x8 data:double -lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x8 data:double -lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 data:float -lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 data:float -lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x8 data:double -lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float -lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x8 data:double -lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x8 data:double -lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 data:float -lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 data:float -lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 data:double -lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x60 -lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x8 data:double -lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x18 data:4byte -lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 data:float -lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 data:float -lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x4 data:float -lbl_1_rodata_5A4 = .rodata:0x000005A4; // type:object size:0x30 data:4byte -lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 data:float -lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x8 data:double -lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x8 data:double -lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x8 data:double -lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x8 data:double -lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x8 data:double -lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 data:double -lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x8 data:double -lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x4 data:float -lbl_1_rodata_614 = .rodata:0x00000614; // type:object size:0x4 data:float -lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x8 data:double -lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x20 data:4byte -lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x8 data:4byte -lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x48 -lbl_1_rodata_690 = .rodata:0x00000690; // type:object size:0x48 -lbl_1_rodata_6D8 = .rodata:0x000006D8; // type:object size:0x4 data:float -lbl_1_rodata_6DC = .rodata:0x000006DC; // type:object size:0x4 data:float -lbl_1_rodata_6E0 = .rodata:0x000006E0; // type:object size:0x4 data:float -lbl_1_rodata_6E4 = .rodata:0x000006E4; // type:object size:0x4 data:float -lbl_1_rodata_6E8 = .rodata:0x000006E8; // type:object size:0x4 data:float -lbl_1_rodata_6EC = .rodata:0x000006EC; // type:object size:0x4 data:float -lbl_1_rodata_6F0 = .rodata:0x000006F0; // type:object size:0xC data:4byte -lbl_1_rodata_6FC = .rodata:0x000006FC; // type:object size:0xC data:4byte -lbl_1_rodata_708 = .rodata:0x00000708; // type:object size:0x1 data:byte -lbl_1_rodata_70C = .rodata:0x0000070C; // type:object size:0x4 data:float -lbl_1_rodata_710 = .rodata:0x00000710; // type:object size:0x4 data:float -lbl_1_rodata_714 = .rodata:0x00000714; // type:object size:0x4 data:float -lbl_1_rodata_718 = .rodata:0x00000718; // type:object size:0x4 data:float -lbl_1_rodata_71C = .rodata:0x0000071C; // type:object size:0x4 data:float -lbl_1_rodata_720 = .rodata:0x00000720; // type:object size:0x4 data:float -lbl_1_rodata_724 = .rodata:0x00000724; // type:object size:0x4 data:float -lbl_1_rodata_728 = .rodata:0x00000728; // type:object size:0x4 data:float -lbl_1_rodata_72C = .rodata:0x0000072C; // type:object size:0x4 data:float -lbl_1_rodata_730 = .rodata:0x00000730; // type:object size:0x4 data:float -lbl_1_rodata_734 = .rodata:0x00000734; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x10 scope:local +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:double +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:double +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x8 scope:local data:double +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x8 scope:local data:double +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 scope:local data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x8 scope:local data:double +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0xC0 scope:local +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0xC0 scope:local +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0xC0 scope:local +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x20 scope:local data:4byte +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_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:double +lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float +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_328 = .rodata:0x00000328; // type:object size:0x8 scope:local data:double +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x8 scope:local data:double +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x8 scope:local data:double +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_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +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:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +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:0x8 scope:local data:double +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x8 scope:local data:double +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:0x8 scope:local data:double +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x8 scope:local data:double +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x8 scope:local data:double +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x8 scope:local data:double +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x8 scope:local data:double +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x8 scope:local data:double +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x8 scope:local data:double +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x8 scope:local data:double +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x8 scope:local data:double +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x8 scope:local data:double +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x8 scope:local data:double +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x8 scope:local data:double +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x8 scope:local data:double +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x8 scope:local data:double +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x8 scope:local data:double +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x8 scope:local data:double +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x8 scope:local data:double +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4BC = .rodata:0x000004BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E4 = .rodata:0x000004E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E8 = .rodata:0x000004E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x8 scope:local data:double +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x8 scope:local data:double +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x60 scope:local data:float +lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x8 scope:local data:double +lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x18 scope:local data:4byte +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 scope:local data:float +lbl_1_rodata_59C = .rodata:0x0000059C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A4 = .rodata:0x000005A4; // type:object size:0x30 scope:local data:4byte +lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 scope:local data:double +lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x8 scope:local data:double +lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x4 scope:local data:float +lbl_1_rodata_614 = .rodata:0x00000614; // type:object size:0x4 scope:local data:float +lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x8 scope:local data:double +lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x20 scope:local data:4byte +lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x48 scope:local +lbl_1_rodata_690 = .rodata:0x00000690; // type:object size:0x48 scope:local +lbl_1_rodata_6D8 = .rodata:0x000006D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6DC = .rodata:0x000006DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6E0 = .rodata:0x000006E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6E4 = .rodata:0x000006E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6E8 = .rodata:0x000006E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6EC = .rodata:0x000006EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6F0 = .rodata:0x000006F0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_6FC = .rodata:0x000006FC; // type:object size:0xC scope:local data:float +lbl_1_rodata_708 = .rodata:0x00000708; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_70C = .rodata:0x0000070C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_710 = .rodata:0x00000710; // type:object size:0x4 scope:local data:float +lbl_1_rodata_714 = .rodata:0x00000714; // type:object size:0x4 scope:local data:float +lbl_1_rodata_718 = .rodata:0x00000718; // type:object size:0x4 scope:local data:float +lbl_1_rodata_71C = .rodata:0x0000071C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_720 = .rodata:0x00000720; // type:object size:0x4 scope:local data:float +lbl_1_rodata_724 = .rodata:0x00000724; // type:object size:0x4 scope:local data:float +lbl_1_rodata_728 = .rodata:0x00000728; // type:object size:0x4 scope:local data:float +lbl_1_rodata_72C = .rodata:0x0000072C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_730 = .rodata:0x00000730; // type:object size:0x4 scope:local data:float +lbl_1_rodata_734 = .rodata:0x00000734; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x48 lbl_1_data_48 = .data:0x00000048; // type:object size:0x48 lbl_1_data_90 = .data:0x00000090; // type:object size:0x10 lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x10 -lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x38 -lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x50 -lbl_1_data_138 = .data:0x00000138; // type:object size:0x50 -lbl_1_data_188 = .data:0x00000188; // type:object size:0x50 -lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x50 +lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x38 data:byte +lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x50 data:string +lbl_1_data_138 = .data:0x00000138; // type:object size:0x50 data:string +lbl_1_data_188 = .data:0x00000188; // type:object size:0x50 data:string +lbl_1_data_1D8 = .data:0x000001D8; // type:object size:0x50 data:string lbl_1_data_228 = .data:0x00000228; // type:object size:0x2 data:2byte lbl_1_data_22A = .data:0x0000022A; // type:object size:0x2 data:2byte lbl_1_data_22C = .data:0x0000022C; // type:object size:0x4 data:4byte lbl_1_data_230 = .data:0x00000230; // type:object size:0xC data:4byte lbl_1_data_23C = .data:0x0000023C; // type:object size:0x28 data:4byte -lbl_1_data_264 = .data:0x00000264; // type:object size:0x20 +lbl_1_data_264 = .data:0x00000264; // type:object size:0x20 scope:local data:string lbl_1_data_284 = .data:0x00000284; // type:object size:0x4 data:4byte lbl_1_data_288 = .data:0x00000288; // type:object size:0x4 data:float lbl_1_data_28C = .data:0x0000028C; // type:object size:0x4 data:float lbl_1_data_290 = .data:0x00000290; // type:object size:0x4 data:float lbl_1_data_294 = .data:0x00000294; // type:object size:0x4 data:float jumptable_1_data_298 = .data:0x00000298; // type:object size:0x1C scope:local -lbl_1_data_2B4 = .data:0x000002B4; // type:object size:0x19 data:string -lbl_1_data_2CD = .data:0x000002CD; // type:object size:0x24 data:string -lbl_1_bss_4 = .bss:0x00000004; // type:object size:0xC data:4byte +lbl_1_data_2B4 = .data:0x000002B4; // type:object size:0x19 scope:local data:string +lbl_1_data_2CD = .data:0x000002CD; // type:object size:0x24 scope:local data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:float lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:float lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:float -lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x8 data:float +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:float +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:float lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:4byte lbl_1_bss_38 = .bss:0x00000038; // type:object size:0x4 data:4byte @@ -204,7 +208,8 @@ lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte -lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x8 data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 data:4byte lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x4 data:4byte lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 data:4byte lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x90 data:4byte diff --git a/include/ext_math.h b/include/ext_math.h index e9a608a6..7ff5edbf 100644 --- a/include/ext_math.h +++ b/include/ext_math.h @@ -29,6 +29,7 @@ typedef struct vec2f { #define sind(x) sin(M_PI*(x)/180.0) #define cosd(x) cos(M_PI*(x)/180.0) +#define asind(x) (180.0*(asinf((x)) / M_PI)) #define atan2d(y, x) (180.0*(atan2((y), (x)) / M_PI)) #endif diff --git a/include/math.h b/include/math.h index 389629df..5ac49892 100644 --- a/include/math.h +++ b/include/math.h @@ -7,24 +7,50 @@ #define _MATH_INLINE static inline #endif +extern int __float_nan[]; +extern int __float_huge[]; +extern int __double_huge[]; + +#define INFINITY (*(float *)__float_huge) +#define NAN (*(float *)__float_nan) +#define HUGE_VAL (*(double *)__double_huge) + #ifdef __MWERKS__ +extern inline double sqrt(double x) +{ + if (x > 0.0) { + double guess = __frsqrte(x); /* returns an approximation to */ + guess = .5 * guess * (3.0 - guess * guess * x); /* now have 8 sig bits */ + guess = .5 * guess * (3.0 - guess * guess * x); /* now have 16 sig bits */ + guess = .5 * guess * (3.0 - guess * guess * x); /* now have 32 sig bits */ + guess = .5 * guess * (3.0 - guess * guess * x); /* now have > 53 sig bits */ + return x * guess; + } + else if (x == 0) + return 0; + else if (x) + return NAN; + + return INFINITY; +} + extern inline float sqrtf(float x) { static const double _half = .5; static const double _three = 3.0; volatile float y; - if (x > 0.0f) - { - double guess = __frsqrte((double)x); // returns an approximation to - guess = _half*guess*(_three - guess*guess*x); // now have 12 sig bits - guess = _half*guess*(_three - guess*guess*x); // now have 24 sig bits - guess = _half*guess*(_three - guess*guess*x); // now have 32 sig bits - y = (float)(x*guess); - return y ; + if (x > 0.0f) { + double guess = __frsqrte((double)x); // returns an approximation to + guess = _half * guess * (_three - guess * guess * x); // now have 12 sig bits + guess = _half * guess * (_three - guess * guess * x); // now have 24 sig bits + guess = _half * guess * (_three - guess * guess * x); // now have 32 sig bits + y = (float)(x * guess); + return y; } return x; } #else +double sqrt(double x); float sqrtf(float x); #endif @@ -48,24 +74,54 @@ float tanf(float x); #ifdef __MWERKS__ extern inline double fabs(double x) { - return __fabs(x); + return __fabs(x); } #else double fabs(double x); #endif -_MATH_INLINE float fabsf(float x) { return (float)fabs((double)x); } -_MATH_INLINE float sinf(float x) { return (float)sin((double)x); } -_MATH_INLINE float cosf(float x) { return (float)cos((double)x); } -_MATH_INLINE float atan2f(float y, float x) { return (float)atan2((double)y, (double)x); } -_MATH_INLINE float atanf(float x) { return (float)atan((double)x); } -_MATH_INLINE float asinf(float x) { return (float)asin((double)x); } -_MATH_INLINE float acosf(float x) { return (float)acos((double)x); } +_MATH_INLINE float fabsf(float x) +{ + return (float)fabs((double)x); +} +_MATH_INLINE float sinf(float x) +{ + return (float)sin((double)x); +} +_MATH_INLINE float cosf(float x) +{ + return (float)cos((double)x); +} +_MATH_INLINE float atan2f(float y, float x) +{ + return (float)atan2((double)y, (double)x); +} +_MATH_INLINE float atanf(float x) +{ + return (float)atan((double)x); +} +_MATH_INLINE float asinf(float x) +{ + return (float)asin((double)x); +} +_MATH_INLINE float acosf(float x) +{ + return (float)acos((double)x); +} -_MATH_INLINE float fmodf(float x, float m) { return (float)fmod((double)x, (double)m); } +_MATH_INLINE float fmodf(float x, float m) +{ + return (float)fmod((double)x, (double)m); +} -_MATH_INLINE float floorf(float x) { return floor(x); } +_MATH_INLINE float floorf(float x) +{ + return floor(x); +} -_MATH_INLINE float powf(float __x, float __y) { return pow(__x, __y); } +_MATH_INLINE float powf(float __x, float __y) +{ + return pow(__x, __y); +} #endif diff --git a/src/REL/m449Dll/main.c b/src/REL/m449Dll/main.c new file mode 100644 index 00000000..17209e39 --- /dev/null +++ b/src/REL/m449Dll/main.c @@ -0,0 +1,2034 @@ +#include "dolphin/gx/GXEnum.h" +#include "dolphin/gx/GXVert.h" +#include "dolphin/pad.h" +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/esprite.h" +#include "game/flag.h" +#include "game/frand.h" +#include "game/gamework_data.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/memory.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/printfunc.h" +#include "game/sprite.h" +#include "game/window.h" +#include "game/wipe.h" +#include "string.h" + +#ifndef __MWERKS__ +#include "game/hsfex.h" +#endif + +s32 rand8(void); + +typedef struct UnkCameraStruct { + /* 0x00 */ float unk_00; + /* 0x04 */ float unk_04; + /* 0x08 */ float unk_08; + /* 0x0C */ float unk_0C; + /* 0x10 */ float unk_10; + /* 0x14 */ float unk_14; +} UnkCameraStruct; /* size = 0x18 */ + +typedef struct M449DllUnkStruct { + /* 0x00 */ s32 unk_00[4]; + /* 0x10 */ s32 unk_10[4]; +} M449DllUnkStruct; /* size = 0x20 */ + +typedef struct M449DllWork { + s32 unk_00; + s32 unk_04; + s32 unk_08; + s32 unk_0C; + s32 unk_10; + s32 unk_14; + s32 unk_18; + s32 unk_1C; + float unk_20; + float unk_24; + float unk_28; + float unk_2C; + s32 unk_30; + s32 unk_34; + s32 unk_38; + float unk_3C; + float unk_40; + s32 unk_44; + s32 unk_48; + s32 unk_4C; + s32 unk_50; + s32 unk_54; + float unk_58; + float unk_5C; + float unk_60[4]; + float unk_70[4]; + float unk_80[4]; + float unk_90[4]; + float unk_A0[4]; + float unk_B0[4]; + float unk_C0[4]; + float unk_D0[4]; + float unk_E0[4]; + s32 unk_F0[4]; + s32 unk_100[4]; + s32 unk_110[4]; + s32 unk_120[4]; + s32 unk_130[4]; + s32 unk_140[4]; + s32 unk_150[4]; + float unk_160[4]; + float unk_170[4]; + s32 unk_180[4]; + s32 unk_190; + float unk_194[4]; + float unk_1A4[4]; + s32 unk_1B4[4]; + s32 unk_1C4[4]; + char unk1D4[0x30]; + s32 unk_204; + s32 unk_208; + s32 unk_20C; + s32 unk_210; + s32 unk_214; +} M449DllWork; /* size = 0x218 */ + +typedef struct UnkBss64Struct { + /* 0x00 */ s32 unk_00; + /* 0x04 */ float unk_04[2]; +} UnkBss64Struct; /* size = 0x0C */ + +void fn_1_9A38(omObjData *arg0); + +s32 lbl_1_data_0[0x12] = { + 0x50001A, + 0x500019, + 0x500016, + 0x500016, + 0x500016, + 0x500017, + 0x500017, + 0x500017, + 0x610000, + 0x50001A, + 0x500019, + 0x500016, + 0x500016, + 0x500016, + 0x500017, + 0x500017, + 0x500017, + 0x610000, +}; +s32 lbl_1_data_48[0x12] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; +s32 lbl_1_data_90[4] = { 0x5F0000, 0x500000, 0x5F0017, 0x5F0085 }; +s32 lbl_1_data_A0[4] = { 0x50001C, 0x50001E, 0x50001D, 0x50001F }; +u8 lbl_1_data_B0[0x38] = { 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x08 + +}; +char lbl_1_data_E8[4][20] = { + "m432_00-a00", + "m432_00-b00", + "m432_00-player00", + "m432_00-player01", +}; +char lbl_1_data_138[4][20] = { + "m449_01a-a00", + "m449_01a-a1", + "m449_01a-a2", + "m449_01a-a3", +}; +char lbl_1_data_188[4][20] = { + "m449_01a-b00", + "m449_01a-b1", + "m449_01a-b2", + "m449_01a-b3", +}; +char lbl_1_data_1D8[4][20] = { + "m449_01a-c00", + "m449_01a-c1", + "m449_01a-c2", + "m449_01a-c3", +}; +s16 lbl_1_data_228 = -1; +s16 lbl_1_data_22A = -1; +s32 lbl_1_data_22C = -1; +s32 lbl_1_data_230[3] = { -1, -1, -1 }; +s32 lbl_1_data_23C[0xA] = { + 0, + 1, + 0xC2B40000, + 0, + 0x44034000, + 0x43340000, + 0x42B40000, + 0, + 0x44034000, + 0x43340000, +}; + +UnkBss64Struct lbl_1_bss_64[12]; +omObjData *lbl_1_bss_60; +omObjData *lbl_1_bss_5C; +omObjData *lbl_1_bss_58; +omObjData *lbl_1_bss_54; +omObjData *lbl_1_bss_50; +s32 lbl_1_bss_4C; +s32 lbl_1_bss_48; +s32 lbl_1_bss_44; +s32 lbl_1_bss_40; +s32 lbl_1_bss_3C; +Process *lbl_1_bss_38; +s32 lbl_1_bss_34; +s32 lbl_1_bss_30; +s32 lbl_1_bss_2C; +float lbl_1_bss_28; +float lbl_1_bss_24; +float lbl_1_bss_20; +s32 lbl_1_bss_1C; +float lbl_1_bss_18; +s32 lbl_1_bss_14; +s32 lbl_1_bss_10; +s32 lbl_1_bss_C; +s32 lbl_1_bss_8; +s32 lbl_1_bss_4; +s32 lbl_1_bss_0; + +static const s32 lbl_1_rodata_10[4] = { 0x8C, 0x6E, 0x3C, 0 }; + +void fn_1_A0(void) +{ + if ((HuPadBtnDown[0] & PAD_BUTTON_B) != 0) { + Center.x = lbl_1_bss_54->trans.x; + Center.y = lbl_1_bss_54->trans.y; + Center.z = lbl_1_bss_54->trans.z; + } + Center.x += 10.0 * (((HuPadBtn[0] & PAD_BUTTON_RIGHT) != 0) - ((HuPadBtn[0] & PAD_BUTTON_LEFT) != 0)); + Center.z -= 10.0 * (((HuPadBtn[0] & PAD_BUTTON_UP) != 0) - ((HuPadBtn[0] & PAD_BUTTON_DOWN) != 0)); + Center.y += (30.0 * ((HuPadTrigL[0] - HuPadTrigR[0]) / 128.0)); + CZoom += 25.0 * (((HuPadBtn[0] & PAD_BUTTON_X) != 0) - ((HuPadBtn[0] & PAD_BUTTON_Y) != 0)); + CRot.y += HuPadSubStkX[0] / 16.0; + CRot.x += HuPadSubStkY[0] / -16.0; +} + +void fn_1_3F8(s32 arg0, Mtx sp8) +{ + float var_f31; + float var_f30; + s32 var_r31; + s32 var_r30; + + GXLoadPosMtxImm(sp8, 0); + GXSetNumTevStages(1); + GXSetNumTexGens(0); + GXSetZMode(1, GX_LEQUAL, 1); + GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, 0, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + for (var_r30 = 0; var_r30 < 2; var_r30++) { + GXBegin(GX_TRIANGLEFAN, GX_VTXFMT0, 0x12); + GXPosition3f32(0.0f, 0.0f, 0.0f); + GXColor4u8(0xFF, 0xFF, 0x00, 0xFF); + for (var_r31 = 0; var_r31 < 0x11; var_r31++) { + var_f30 = (var_r30 == 0 ? 1 : -1) * (75.0 * cosd((360.0 * (var_r31 / 16.0)))); + var_f31 = 75.0 * sind((360.0 * (var_r31 / 16.0))); + GXPosition3f32(var_f31, var_r30 * 10, var_f30); + GXColor4u8(0xFF, 0xFF, 0x00, 0xFF); + } + } +} + +void fn_1_758(omObjData *var_r29) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + float var_f24; + float var_f23; + float var_f22; + float var_f21; + float var_f20; + float var_f19; + float var_f18; + + M449DllWork *var_r31; + s32 var_r30; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + ModelData *var_r24; + s32 var_r23; + s32 var_r22; + s32 var_r21; + s32 var_r20; + ModelData *var_r19; + s32 var_r18; + s32 var_r17; + + Vec sp3C4[3]; + Vec sp394[4]; + Mtx sp364; + Mtx sp334; + Mtx sp304; + Vec sp2D8; + Vec sp2CC; + Vec sp2C0; + Vec sp2B4; + Vec sp2A8; + void *sp238; + s32 sp234; + s32 sp230; + float sp22C; + float sp228; + float sp224; + s32 sp220; + float sp21C; + float sp218; + s32 sp214; + float sp210; + float sp20C; + float sp208; + s32 sp204; + s32 sp200; + s32 sp1FC; + float sp1F8; + s32 sp1F4; + float sp1F0; + float sp1EC; + float sp1E8; + float sp1E4; + float sp1E0; + float sp1DC; + float sp1D8; + float sp1D4; + float sp1D0; + float sp1CC; + float sp1C8; + float sp1C4; + float sp1C0; + float sp1BC; + float sp1B8; + float sp1B4; + float sp1B0; + float sp1AC; + float sp1A8; + float sp1A4; + float sp1A0; + float sp19C; + float sp198; + float sp194; + float sp190; + float sp18C; + float sp188; + float sp184; + float sp180; + float sp17C; + float sp178; + float sp174; + float sp170; + float sp16C; + float sp168; + float sp164; + s32 sp160; + float sp15C; + float sp158; + s32 sp154; + float sp150; + float sp14C; + float sp148; + float sp144; + float sp140; + float sp13C; + float sp138; + float sp134; + float sp130; + float sp12C; + float sp128; + float sp124; + + { + s32 sp568[4][4][3] = { + { + { 2, 5, 5 }, + { 2, 7, 11 }, + { 0, 4, 7 }, + { 0, 7, 8 }, + }, + { + { 1, 6, 3 }, + { 1, 1, 2 }, + { 8, 2, 3 }, + { 8, 12, 16 }, + }, + { + { 3, 5, 5 }, + { 1, 6, 13 }, + { 1, 3, 4 }, + { 3, 8, 12 }, + }, + { + { 2, 3, 4 }, + { 1, 2, 3 }, + { 0, 1, 3 }, + { 2, 3, 3 }, + }, + }; + s32 sp4A8[4][4][3] = { + { + { 0, 44, 23 }, + { 32, -64, -29 }, + { 0, 52, -60 }, + { 0, -51, 56 }, + }, + { + { -29, 28, -52 }, + { 32, 31, -22 }, + { 0, 20, -49 }, + { 0, 0, 0 }, + }, + { + { 56, 59, -37 }, + { -36, 33, 47 }, + { 27, 39, 28 }, + { 55, -31, 0 }, + }, + { + { -52, -61, 31 }, + { 42, -55, 30 }, + { 0, 22, -24 }, + { -48, 25, 61 }, + }, + }; + + s32 sp3E8[4][4][3] = { + { + { 0, -44, 23 }, + { -32, 64, 29 }, + { 0, -52, -60 }, + { 0, -51, -56 }, + }, + { + { -29, 28, 52 }, + { 32, -31, -22 }, + { 0, 20, 49 }, + { 0, 0, 0 }, + }, + { + { -56, 59, -37 }, + { 36, 33, -47 }, + { -27, 39, -28 }, + { -55, -31, 0 }, + }, + { + { 52, -61, -31 }, + { -42, 55, -30 }, + { 0, -22, -24 }, + { 48, 25, -61 }, + }, + }; + var_r31 = var_r29->data; + sp238 = (&lbl_1_bss_54)[1 - var_r29->work[0]]->data; + var_f29 = 0.0f; + var_f28 = 0.0f; + Hu3DModelObjPosGet(lbl_1_bss_50->model[1], lbl_1_data_E8[var_r31->unk_00], &sp2D8); + for (var_r30 = 0; var_r30 < (lbl_1_data_230[var_r31->unk_190] == 2 ? 2 : 3); var_r30++) { + Hu3DModelObjPosGet(var_r29->model[var_r31->unk_190 + 4], lbl_1_data_188[var_r30], &sp3C4[var_r30]); + sp3C4[var_r30].x -= sp2D8.x; + sp3C4[var_r30].y -= sp2D8.y; + sp3C4[var_r30].z -= sp2D8.z; + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + Hu3DModelObjPosGet(var_r29->model[var_r31->unk_190 + 4], lbl_1_data_1D8[var_r30], &sp394[var_r30]); + sp394[var_r30].x -= sp2D8.x; + sp394[var_r30].y -= sp2D8.y; + sp394[var_r30].z -= sp2D8.z; + } + switch (var_r31->unk_4C) { + case 0: + if (lbl_1_bss_48 == 0x3EC) { + var_r31->unk_4C = 1; + var_r31->unk_14 = var_r31->unk_204 % 4; + var_r31->unk_14 = var_r31->unk_1C = var_r31->unk_30 = var_r31->unk_34 = var_r31->unk_38 = 0; + var_r31->unk_18 = -1; + var_r31->unk_3C = var_r31->unk_40 = var_r31->unk_44 = var_r31->unk_48 = 0; + var_r31->unk_208 = var_r31->unk_0C == -1 ? 1 : 0; + if (var_r31->unk_0C == -1) { + var_r17 = lbl_1_data_23C[var_r31->unk_00]; + var_r31->unk_204 = sp568[lbl_1_data_230[var_r31->unk_190]][var_r31->unk_10][var_r17]; + var_r31->unk_20C = sp4A8[lbl_1_data_230[var_r31->unk_190]][var_r31->unk_10][var_r17]; + var_r31->unk_210 = sp3E8[lbl_1_data_230[var_r31->unk_190]][var_r31->unk_10][var_r17]; + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r31->unk_90[var_r30] = var_r31->unk_A0[var_r30] = var_r31->unk_B0[var_r30] = var_r31->unk_D0[var_r30] + = var_r31->unk_E0[var_r30] = 0.0f; + var_r31->unk_F0[var_r30] = var_r31->unk_100[var_r30] = var_r31->unk_110[var_r30] = var_r31->unk_120[var_r30] + = var_r31->unk_130[var_r30] = var_r31->unk_140[var_r30] = 0; + var_r31->unk_160[var_r30] = var_r31->unk_170[var_r30] = var_r31->unk_150[var_r30] = 0; + } + } + break; + case 1: + if (lbl_1_bss_30 != -1) { + var_r31->unk_4C = 3; + if ((lbl_1_bss_30 == var_r31->unk_00) && (var_r31->unk_F0[0] != 0) && (var_r31->unk_F0[1] != 0) && (var_r31->unk_F0[2] != 0) + && (var_r31->unk_F0[3] != 0)) { + var_r31->unk_54 = 0x1E; + HuAudFXPlay(9); + } + } + else if ((var_r31->unk_190 < 2) && (var_r31->unk_F0[0] != 0) && (var_r31->unk_F0[1] != 0) && (var_r31->unk_F0[2] != 0) + && (var_r31->unk_F0[3] != 0)) { + if (lbl_1_bss_64[3].unk_00 < 2) { + lbl_1_bss_64[3].unk_04[lbl_1_bss_64[3].unk_00] = 0.0f; + lbl_1_bss_64[3].unk_00++; + } + var_r31->unk_4C = 2; + var_r31->unk_50 = 0; + Hu3DMotionSpeedSet(var_r29->model[var_r31->unk_190 + 1], -1.0f); + var_r31->unk_14 = var_r31->unk_1C = var_r31->unk_30 = var_r31->unk_34 = var_r31->unk_38 = 0; + var_r31->unk_18 = -1; + var_r31->unk_3C = var_r31->unk_40 = var_r31->unk_44 = var_r31->unk_48 = 0; + var_r31->unk_208 = var_r31->unk_0C == -1 ? 1 : 0; + if (var_r31->unk_0C == -1) { + sp234 = (var_r31->unk_190 + lbl_1_data_23C[var_r31->unk_00] + 1) % 3; + var_r31->unk_204 = sp568[lbl_1_data_230[var_r31->unk_190 + 1]][var_r31->unk_10][sp234]; + var_r31->unk_20C = sp4A8[lbl_1_data_230[var_r31->unk_190 + 1]][var_r31->unk_10][sp234]; + var_r31->unk_210 = sp3E8[lbl_1_data_230[var_r31->unk_190 + 1]][var_r31->unk_10][sp234]; + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r31->unk_90[var_r30] = var_r31->unk_A0[var_r30] = var_r31->unk_B0[var_r30] = var_r31->unk_D0[var_r30] + = var_r31->unk_E0[var_r30] = 0.0f; + var_r31->unk_F0[var_r30] = var_r31->unk_100[var_r30] = var_r31->unk_110[var_r30] = var_r31->unk_120[var_r30] + = var_r31->unk_130[var_r30] = var_r31->unk_140[var_r30] = 0; + var_r31->unk_160[var_r30] = var_r31->unk_170[var_r30] = var_r31->unk_150[var_r30] = 0; + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + sp230 = -1; + sp22C = 10000.0f; + Hu3DModelObjPosGet(var_r29->model[4], lbl_1_data_138[var_r30], &sp2CC); + for (var_r28 = 0; var_r28 < 4; var_r28++) { + sp228 = sp2CC.x - var_r31->unk_60[var_r28]; + sp224 = sp2CC.z - var_r31->unk_80[var_r28]; + if ((var_r31->unk_F0[var_r28] == 0) && (sqrtf((sp228 * sp228) + (sp224 * sp224)) < sp22C)) { + sp230 = var_r28; + sp22C = sqrtf((sp228 * sp228) + (sp224 * sp224)); + } + } + var_r31->unk_1B4[sp230] = var_r30; + var_r31->unk_F0[sp230] = 1; + var_r31->unk_194[var_r30] = var_r31->unk_60[var_r30]; + var_r31->unk_1A4[var_r30] = var_r31->unk_80[var_r30]; + } + var_r31->unk_F0[0] = var_r31->unk_F0[1] = var_r31->unk_F0[2] = var_r31->unk_F0[3] = 0; + for (var_r30 = 0; var_r30 < 4; var_r30++) { + sp220 = var_r30 + 7; + var_r19 = &Hu3DData[var_r29->model[var_r30 + 0xC]]; + Hu3DModelPosSet(var_r29->model[sp220], var_r19->pos.x, 0.0f, var_r19->pos.z); + Hu3DModelAttrReset(var_r29->model[sp220], HU3D_ATTR_DISPOFF); + Hu3DParticleCntSet(var_r29->model[sp220], 0); + } + if (lbl_1_bss_30 == -1) { + var_r31->unk_54 = 0x1E; + HuAudFXPlay(9); + } + } + break; + case 2: + var_r31->unk_50++; + if (var_r31->unk_50 == 0xA) { + for (var_r30 = 0; var_r30 < 4; var_r30++) { + Hu3DModelAttrSet(var_r29->model[var_r30 + 0xC], HU3D_ATTR_DISPOFF); + } + } + if (var_r31->unk_50 <= 0x3C) { + sp21C = var_r31->unk_50 / 60.0; + for (var_r30 = 0; var_r30 < 4; var_r30++) { } + } + var_r31->unk_50 == 0x3C; + if ((var_r31->unk_50 >= 0) && (var_r31->unk_50 <= 0x3C)) { + sp218 = var_r31->unk_50 / 60.0; + var_f21 = 0.5 + (-0.5 * cosd((180.0f * sp218))); + var_f21 = sp218 < 0.75 ? 0 : 1; + for (var_r30 = 0; var_r30 < 4; var_r30++) { + Hu3DModelObjPosGet(var_r29->model[var_r31->unk_190 + 5], lbl_1_data_138[var_r30], &sp2C0); + var_r31->unk_60[var_r30] = (var_f21 * (sp2C0.x - sp2D8.x)) + (var_r31->unk_194[var_r30] * (1.0f - var_f21)); + var_r31->unk_80[var_r30] = (var_f21 * (sp2C0.z - sp2D8.z)) + (var_r31->unk_1A4[var_r30] * (1.0f - var_f21)); + var_r31->unk_70[var_r30] = 300.0 * sind((180.0f * sp218)); + var_r31->unk_70[var_r30] = -25.0f * (1.0f - var_f21); + } + } + if (var_r31->unk_50 == 0x3C) { + Hu3DMotionSpeedSet(var_r29->model[var_r31->unk_190 + 1], 1.0f); + Hu3DModelAttrSet(var_r29->model[var_r31->unk_190 + 1], HU3D_ATTR_DISPOFF); + var_r31->unk_190++; + Hu3DModelAttrReset(var_r29->model[var_r31->unk_190 + 1], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(var_r29->model[var_r31->unk_190 + 1], HU3D_MOTATTR_LOOP); + Hu3DMotionTimeSet(var_r29->model[var_r31->unk_190 + 1], 0.0f); + for (var_r30 = 0; var_r30 < 4; var_r30++) { + sp214 = var_r30 + 7; + var_r24 = &Hu3DData[var_r29->model[var_r30 + 0xC]]; + Hu3DModelPosSet(var_r29->model[sp214], var_r24->pos.x, var_r24->pos.y, var_r24->pos.z); + Hu3DModelAttrReset(var_r29->model[sp214], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(var_r29->model[var_r30 + 0xC], HU3D_ATTR_DISPOFF); + Hu3DModelScaleSet(var_r29->model[var_r30 + 0xC], 0.0f, 0.0f, 0.0f); + Hu3DParticleCntSet(var_r29->model[sp214], 0); + } + } + if ((var_r31->unk_50 >= 0x3E) && (var_r31->unk_50 <= 0x78)) { + sp210 = (var_r31->unk_50 - 0x3E) / 58.0; + sp20C = sp210 < 0.25 ? (sp210 / 0.25) : 1.0; + sp20C = var_r31->unk_50 < 0x46 ? 0 : 1; + for (var_r30 = 0; var_r30 < 4; var_r30++) { + Hu3DModelScaleSet(var_r29->model[var_r30 + 0xC], sp20C, sp20C, sp20C); + } + } + if (var_r31->unk_50 == 0x78) { + var_r31->unk_4C = 1; + var_r31->unk_50 = 0; + } + break; + case 3: + break; + } + if (var_r31->unk_54 > 0) { + var_f26 = 1.0 - ((var_r31->unk_54 - 1) / 30.0); + sp204 = var_r31->unk_190 + 5 + (var_r31->unk_00 * 9); + var_f26 = (0.5 * var_f26) + (0.5 * (1.0f - ((1.0f - var_f26) * (1.0f - var_f26)))); + sp208 = var_f26 < 0.75 ? (var_f26 / 0.75) : 1.0; + var_f26 = 1.0f - ((1.0f - var_f26) * (1.0f - var_f26)); + sp208 = 1.0f - ((1.0f - sp208) * (1.0f - sp208)); + if (var_r31->unk_54 == 0x1E) { + espDispOn(lbl_1_data_48[sp204]); + espDispOff(lbl_1_data_48[var_r31->unk_190 + 2 + (var_r31->unk_00 * 9)]); + } + espTPLvlSet(lbl_1_data_48[sp204], sp208); + espScaleSet(lbl_1_data_48[sp204], 4.0f - (3.0f * var_f26), 4.0f - (3.0f * var_f26)); + var_r31->unk_54--; + } + if (var_r31->unk_4C == 1) { + if (var_r31->unk_0C != -1) { + var_f29 = HuPadStkX[var_r31->unk_0C]; + var_f28 = HuPadStkY[var_r31->unk_0C]; + var_f29 /= 40.0f; + var_f28 /= 40.0f; + } + else if (var_r31->unk_208 != 0) { + var_f29 = 3.0f * -var_r31->unk_58; + var_f28 = -3.0f * -var_r31->unk_5C; + } + else if ((var_r31->unk_0C == -1) && ((var_r31->unk_20C != 0) || (var_r31->unk_210 != 0))) { + var_f29 = var_r31->unk_20C < 0 ? -1 : (var_r31->unk_20C > 0 ? 1 : 0); + var_f28 = var_r31->unk_210 < 0 ? -1 : (var_r31->unk_210 > 0 ? 1 : 0); + var_r31->unk_20C = var_r31->unk_20C + (var_r31->unk_20C < 0 ? 1 : (var_r31->unk_20C > 0 ? -1 : 0)); + var_r31->unk_210 = var_r31->unk_210 + (var_r31->unk_210 < 0 ? 1 : (var_r31->unk_210 > 0 ? -1 : 0)); + } + else if ((var_r31->unk_F0[0] == 0) || (var_r31->unk_F0[1] == 0) || (((var_r31->unk_F0[2] == 0) != 0)) || (var_r31->unk_F0[3] == 0)) { + if (var_r31->unk_F0[var_r31->unk_14] != 0) { + var_r23 = -1; + sp1FC = var_r31->unk_F0[3] + (var_r31->unk_F0[0] + var_r31->unk_F0[1] + var_r31->unk_F0[2]); + for (sp200 = 0; sp200 <= (sp1FC == 1 ? ((var_r31->unk_204 / 4) % 3) : (sp1FC == 2 ? (((var_r31->unk_204 / 4) / 3) % 2) : 0)); + sp200++) { + for (var_r23++; var_r31->unk_F0[var_r23] != 0; var_r23++) { } + } + var_r31->unk_14 = var_r23; + } + var_r25 = var_r31->unk_14; + if (var_r25 != -1) { + var_f30 = var_r31->unk_60[var_r25] + var_r31->unk_90[var_r25]; + var_f31 = var_r31->unk_80[var_r25] + var_r31->unk_B0[var_r25]; + var_r22 = -1; + sp1F8 = -1.0f; + sp1F4 = var_r31->unk_1C; + if (var_r31->unk_100[var_r31->unk_18] != 0) { + var_r31->unk_1C = 0; + var_r31->unk_18 = -1; + } + if (var_r31->unk_1C != 0) { + for (var_r26 = 0; var_r26 < 4; var_r26++) { + sp1F0 = var_r31->unk_60[var_r26] + var_r31->unk_90[var_r26]; + sp1EC = var_r31->unk_80[var_r26] + var_r31->unk_B0[var_r26]; + if (var_r31->unk_F0[var_r26] == 0) { + if (var_r31->unk_28 != 0.0f) { + if (var_r31->unk_28 < 0.0f ? (sp1F0 < var_r31->unk_20) : (sp1F0 > var_r31->unk_20)) { + goto block_169; + } + } + else { + block_169: + if (var_r31->unk_2C != 0.0f) { + if (var_r31->unk_2C < 0.0f ? (sp1EC < var_r31->unk_24) : (sp1EC > var_r31->unk_24)) { + goto block_174; + } + } + else { + block_174: + var_r31->unk_1C = 0; + var_r31->unk_14 = var_r26; + var_r25 = var_r26; + var_f30 = sp1F0; + var_f31 = sp1EC; + } + } + } + } + } + switch (lbl_1_data_230[var_r31->unk_190]) { + case 0: + if ((var_r31->unk_100[0] != 0) && (var_r31->unk_18 == 1) && (var_f31 > 0.0f) && (var_f30 < 0.0f)) { + var_r31->unk_1C = 1; + var_r31->unk_20 = 150.0f; + var_r31->unk_24 = 150.0f; + var_r31->unk_28 = 1.0f; + var_r31->unk_2C = 1.0f; + } + if ((var_r31->unk_100[0] != 0) && (var_r31->unk_18 == 1) && (var_f31 > 100.0f) && (var_f30 < 150.0f)) { + var_r31->unk_1C = 1; + var_r31->unk_20 = 150.0f; + var_r31->unk_24 = 150.0f; + var_r31->unk_28 = 1.0f; + var_r31->unk_2C = 1.0f; + } + if ((var_r31->unk_100[0] != 0) && (var_r31->unk_1C == 0) && (sp1F4 == 1)) { + var_r31->unk_1C = 2; + var_r31->unk_24 = -50.0f; + var_r31->unk_28 = 0.0f; + var_r31->unk_2C = -1.0f; + } + if ((var_r31->unk_100[0] != 0) && (var_r31->unk_18 >= 2) && (var_f30 < -100.0f) && (var_f31 < -120.0f)) { + var_r31->unk_1C = 3; + var_r31->unk_24 = -120.0f; + var_r31->unk_28 = 0.0f; + var_r31->unk_2C = 1.0f; + } + if ((var_r31->unk_100[0] != 0) && (var_r31->unk_18 >= 2) && (var_r31->unk_1C == 0) && (var_f30 < 0.0f) + && (var_f31 < 0.0f)) { + var_r31->unk_1C = 4; + var_r31->unk_20 = 0.0f; + var_r31->unk_24 = -120.0f; + var_r31->unk_28 = 1.0f; + var_r31->unk_2C = 1.0f; + } + if ((var_r31->unk_100[0] != 0) && (var_r31->unk_18 >= 2) && (var_r31->unk_1C == 0) && (sp1F4 == 3)) { + var_r31->unk_1C = 5; + var_r31->unk_20 = 190.0f; + var_r31->unk_24 = 190.0f; + var_r31->unk_28 = 1.0f; + var_r31->unk_2C = 1.0f; + } + if ((var_r31->unk_100[0] != 0) && (var_r31->unk_1C == 0) && (sp1F4 == 5) && (var_r31->unk_18 == 3)) { + var_r31->unk_1C = 6; + var_r31->unk_20 = 0.0f; + var_r31->unk_28 = -1.0f; + var_r31->unk_2C = 0.0f; + } + break; + case 1: + if ((var_r31->unk_18 == 3) && (var_f31 > 75.0f) && ((var_f30 < -150.0f) || (var_f30 > 150.0f))) { + var_r31->unk_1C = 1; + var_r31->unk_24 = 75.0f; + var_r31->unk_28 = 0.0f; + var_r31->unk_2C = -1.0f; + } + if ((var_r31->unk_100[1] != 0) && (var_f31 < -120.0f) && (var_f30 > 100.0f)) { + var_r31->unk_1C = 2; + var_r31->unk_24 = -120.0f; + var_r31->unk_28 = 0.0f; + var_r31->unk_2C = 1.0f; + } + if ((var_r31->unk_18 == 2) && (var_r31->unk_100[0] != 0) && (var_f31 < -120.0f) && (var_f30 < -120.0f)) { + var_r31->unk_1C = 3; + if (var_f30 < var_f31) { + var_r31->unk_20 = -150.0f; + var_r31->unk_24 = -80.0f; + var_r31->unk_28 = -1.0f; + var_r31->unk_2C = 1.0f; + } + else { + var_r31->unk_24 = -150.0f; + var_r31->unk_20 = -80.0f; + var_r31->unk_2C = -1.0f; + var_r31->unk_28 = 1.0f; + } + } + break; + case 2: + if ((var_r31->unk_100[3] != 0) && (var_f31 > 100.0f) && (var_f30 < -75.0f)) { + var_r31->unk_1C = 1; + var_r31->unk_20 = -75.0f; + var_r31->unk_24 = 175.0f; + var_r31->unk_28 = 1.0f; + var_r31->unk_2C = 1.0f; + } + if ((var_r31->unk_100[3] != 0) && (var_f31 < -50.0f) && (var_f30 < -150.0f)) { + var_r31->unk_1C = 2; + var_r31->unk_20 = -200.0f; + var_r31->unk_24 = -25.0f; + var_r31->unk_28 = -1.0f; + var_r31->unk_2C = 1.0f; + } + if ((var_r31->unk_18 == 2) && (var_r31->unk_100[2] != 0) && ((var_f30 + var_f31) > 300.0f)) { + var_r31->unk_1C = 3; + if (var_f30 > var_f31) { + var_r31->unk_20 = 200.0f; + var_r31->unk_24 = 80.0f; + var_r31->unk_28 = 1.0f; + var_r31->unk_2C = -1.0f; + } + else { + var_r31->unk_24 = 200.0f; + var_r31->unk_20 = 80.0f; + var_r31->unk_2C = 1.0f; + var_r31->unk_28 = -1.0f; + } + } + if ((var_r31->unk_18 == 1) && (var_r31->unk_100[2] != 0) && ((var_f30 - var_f31) > 300.0f)) { + var_r31->unk_1C = 4; + if (var_f30 > -var_f31) { + var_r31->unk_20 = 200.0f; + var_r31->unk_24 = -80.0f; + var_r31->unk_28 = 1.0f; + var_r31->unk_2C = 1.0f; + } + else { + var_r31->unk_24 = -200.0f; + var_r31->unk_20 = 80.0f; + var_r31->unk_2C = -1.0f; + var_r31->unk_28 = -1.0f; + } + } + break; + case 3: + if ((var_f31 > 200.0f) && (var_f30 > 200.0f) && (var_r31->unk_18 != 3)) { + var_r31->unk_1C = 2; + if (var_r31->unk_18 == 2) { + var_r31->unk_20 = -150.0f; + var_r31->unk_24 = 150.0f; + var_r31->unk_28 = -1.0f; + var_r31->unk_2C = 1.0f; + } + else { + var_r31->unk_20 = 150.0f; + var_r31->unk_24 = -150.0f; + var_r31->unk_28 = 1.0f; + var_r31->unk_2C = -1.0f; + } + } + if ((var_f31 > 0.0f) && (var_f30 > 0.0f) && (!(var_f30 < 100.0f) || !(var_f31 < 100.0f)) && (var_r31->unk_18 != 3) + && (var_r31->unk_1C == 0)) { + var_r31->unk_1C = 1; + var_r31->unk_20 = 200.0f; + var_r31->unk_24 = 200.0f; + var_r31->unk_28 = 1.0f; + var_r31->unk_2C = 1.0f; + } + if ((var_f31 > 200.0f) && (var_f30 < -200.0f) && (var_r31->unk_18 != 2)) { + var_r31->unk_1C = 4; + if (var_r31->unk_18 == 3) { + var_r31->unk_20 = 150.0f; + var_r31->unk_24 = 150.0f; + var_r31->unk_28 = 1.0f; + var_r31->unk_2C = 1.0f; + } + else { + var_r31->unk_20 = -150.0f; + var_r31->unk_24 = -150.0f; + var_r31->unk_28 = -1.0f; + var_r31->unk_2C = -1.0f; + } + } + if ((var_f31 > 0.0f) && (var_f30 < 0.0f) && (var_r31->unk_18 != 2) && (var_r31->unk_1C == 0) + && ((var_r31->unk_100[0] != 0) || (var_r31->unk_18 == 3))) { + var_r31->unk_1C = 3; + var_r31->unk_20 = -200.0f; + var_r31->unk_24 = 200.0f; + var_r31->unk_28 = -1.0f; + var_r31->unk_2C = 1.0f; + } + if ((var_f31 < -200.0f) && (var_f30 > 200.0f) && (var_r31->unk_18 == 3) && (var_r31->unk_1C == 0)) { + var_r31->unk_1C = 9; + var_r31->unk_20 = 200.0f; + var_r31->unk_24 = 0.0; + var_r31->unk_28 = 1.0f; + var_r31->unk_2C = 1.0f; + } + if ((var_f31 < -200.0f) && (var_f30 < -200.0f) && (var_r31->unk_18 == 2) && (var_r31->unk_1C == 0)) { + var_r31->unk_1C = 8; + var_r31->unk_20 = -200.0f; + var_r31->unk_24 = 0.0f; + var_r31->unk_28 = -1.0f; + var_r31->unk_2C = 1.0f; + } + if ((var_f31 < -200.0f) && (var_r31->unk_18 >= 2) && (var_r31->unk_1C == 0)) { + var_r31->unk_1C = 7; + var_r31->unk_24 = -200.0f; + var_r31->unk_2C = -1.0f; + if (var_r31->unk_18 == 3) { + var_r31->unk_20 = 200.0f; + var_r31->unk_28 = 1.0f; + } + else { + var_r31->unk_20 = -200.0f; + var_r31->unk_28 = -1.0f; + } + } + if ((var_f31 < 0.0f) && (var_r31->unk_18 >= 2) && (var_r31->unk_1C == 0)) { + var_r31->unk_1C = 6; + var_r31->unk_24 = -200.0f; + var_r31->unk_28 = 0.0; + var_r31->unk_2C = -1.0f; + } + if ((var_f31 < -175.0f) && (var_f30 > 175.0f) && ((var_r31->unk_18 == 0) || (var_r31->unk_18 == 2)) + && (var_r31->unk_1C == 0)) { + var_r31->unk_1C = 0xA; + var_r31->unk_20 = 0.0f; + var_r31->unk_24 = -200.0f; + var_r31->unk_28 = -1.0f; + var_r31->unk_2C = -1.0f; + } + break; + } + if (var_r31->unk_18 == -1) { + for (var_r30 = 0; var_r30 < 4; var_r30++) { + if ((var_r31->unk_100[var_r30] == 0) + && ((sp1E8 = sp394[var_r30].x - var_r31->unk_60[var_r25], sp1E4 = sp394[var_r30].z - var_r31->unk_80[var_r25], + ((var_r22 == -1) != 0)) + || (((sp1E8 * sp1E8) + (sp1E4 * sp1E4)) < sp1F8))) { + var_r22 = var_r30; + sp1F8 = (sp1E8 * sp1E8) + (sp1E4 * sp1E4); + } + } + if (var_r22 != -1) { + var_r31->unk_18 = var_r22; + } + } + else { + var_r22 = var_r31->unk_18; + } + if ((var_r31->unk_18 != -1) && (var_r31->unk_1C == 0)) { + if (((var_r31->unk_58 < -0.95) || (var_r31->unk_58 > 0.95)) && ((var_r31->unk_5C < -0.95) || (var_r31->unk_5C > 0.95)) + && (var_r31->unk_34 > 0xF) && (var_r31->unk_38 < 0x3C)) { + var_f29 = var_f30 < sp394[var_r31->unk_18].x ? 1 : (var_f30 > sp394[var_r31->unk_18].x ? -1 : 0); + var_f28 = var_f31 < sp394[var_r31->unk_18].z ? 1 : (var_f31 > sp394[var_r31->unk_18].z ? -1 : 0); + } + else { + var_f29 = var_f30 < sp394[var_r31->unk_18].x ? 1 : (var_f30 > sp394[var_r31->unk_18].x ? -1 : 0); + var_f28 = var_f31 < sp394[var_r31->unk_18].z ? 1 : (var_f31 > sp394[var_r31->unk_18].z ? -1 : 0); + } + } + else if (var_r31->unk_1C != 0) { + if (var_r31->unk_28 != 0.0f) { + if (!(var_r31->unk_28 < 0.0f ? (var_f30 < var_r31->unk_20) : (var_f30 > var_r31->unk_20))) { + var_f29 = var_r31->unk_28 < 0.0f ? (var_f30 > var_r31->unk_20 ? -1 : 0) : (var_f30 < var_r31->unk_20 ? 1 : 0); + } + else { + goto block_368; + } + } + else { + block_368: + var_f29 = var_r31->unk_58 < -0.1 ? 1.0f : (var_r31->unk_58 > 0.1 ? -1.0f : (-10.0f * var_r31->unk_58)); + } + if (var_r31->unk_2C != 0.0f) { + if ((var_r31->unk_2C < 0.0f ? (var_f31 < var_r31->unk_24) : (var_f31 > var_r31->unk_24)) == 0) { + var_f28 = var_r31->unk_2C < 0.0f ? (var_f31 > var_r31->unk_24 ? -1 : 0) : (var_f31 < var_r31->unk_24 ? 1 : 0); + } + else { + goto block_390; + } + } + else { + block_390: + var_f28 = var_r31->unk_5C < -0.1 ? 1.0f : (var_r31->unk_5C > 0.1 ? -1.0f : (-10.0f * var_r31->unk_5C)); + } + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + sp1E0 = var_r31->unk_60[var_r30] - var_r31->unk_160[var_r30]; + sp1DC = var_r31->unk_80[var_r30] - var_r31->unk_170[var_r30]; + if (((sp1E0 * sp1E0) + (sp1DC * sp1DC)) < 9.0f) { + var_r31->unk_150[var_r30]++; + } + else { + var_r31->unk_160[var_r30] = var_r31->unk_60[var_r30]; + var_r31->unk_170[var_r30] = var_r31->unk_80[var_r30]; + var_r31->unk_150[var_r30] = 0; + } + } + if (var_r31->unk_44 <= 0) { + var_r31->unk_3C = var_f29; + var_r31->unk_40 = var_f28; + var_r31->unk_44 = var_r31->unk_48; + var_r31->unk_48 -= (var_r31->unk_48 >= (var_r31->unk_48 / 10) ? (var_r31->unk_48 / 10) : 0); + } + else { + var_f29 = var_r31->unk_3C; + var_f28 = var_r31->unk_40; + var_r31->unk_44--; + } + var_f29 *= 0.5; + var_f28 *= -0.5; + } + } + if (((var_f29 * var_f29) + (var_f28 * var_f28)) > 1.0f) { + sp1D8 = sqrt((var_f29 * var_f29) + (var_f28 * var_f28)); + var_f29 *= 1.0f / sp1D8; + var_f28 *= 1.0f / sp1D8; + } + if ((((var_f29 * var_f29) + (var_f28 * var_f28)) < 0.0625) && (var_r31->unk_208 == 0)) { + var_f29 = 0.0f; + var_f28 = 0.0f; + } + } + sp1D4 = var_r31->unk_58; + sp1D0 = var_r31->unk_5C; + var_r31->unk_58 = var_r31->unk_58 + (var_f29 / 3.0f); + var_r31->unk_58 = var_r31->unk_58 < -1.0f ? -1.0f : (var_r31->unk_58 > 1.0f ? 1.0f : var_r31->unk_58); + var_r31->unk_5C = var_r31->unk_5C + (-var_f28 / 3.0f); + var_r31->unk_5C = var_r31->unk_5C < -1.0f ? -1.0f : (var_r31->unk_5C > 1.0f ? 1.0f : var_r31->unk_5C); + var_r31->unk_208 = ((var_r31->unk_58 == 0.0f) && (var_r31->unk_5C == 0.0f)) ? 0 : var_r31->unk_208; + if ((lbl_1_bss_48 == 0x3EC) && ((sp1D4 != var_r31->unk_58) || (sp1D0 != var_r31->unk_5C))) { + if (var_r31->unk_214 == -1) { + var_r31->unk_214 = HuAudFXPlay(0x7A6); + } + } + else { + if (var_r31->unk_214 != -1) { + HuAudFXStop(var_r31->unk_214); + } + var_r31->unk_214 = -1; + } + if (lbl_1_bss_48 >= 0x3ED) { + sp1CC = 0.666f; + sp1C8 = 0.9f; + var_r31->unk_5C = var_r31->unk_5C > sp1CC + ? ((var_r31->unk_5C * sp1C8) + (sp1CC * (1.0f - sp1C8))) + : (var_r31->unk_5C < -sp1CC ? ((var_r31->unk_5C * sp1C8) - (sp1CC * (1.0f - sp1C8))) : var_r31->unk_5C); + } + if (var_r31->unk_4C != 2) { + for (var_r18 = 0; var_r18 < 2; var_r18++) { + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r31->unk_110[var_r30] = var_r31->unk_120[var_r30] = var_r31->unk_130[var_r30] = var_r31->unk_140[var_r30] = 0; + if (var_r31->unk_F0[var_r30] == 0) { + var_r31->unk_90[var_r30] += 0.13888888888888887 * var_r31->unk_58 * (var_r31->unk_208 != 0 ? 0 : 1) + * (var_r31->unk_70[var_r30] >= 0.0f ? 1.0f : (1.0f - (var_r31->unk_70[var_r30] / -25.0f))); + var_r31->unk_B0[var_r30] += 0.13888888888888887 * var_r31->unk_5C * (var_r31->unk_208 != 0 ? 0 : 1) + * (var_r31->unk_70[var_r30] >= 0.0f ? 1.0f : (1.0f - (var_r31->unk_70[var_r30] / -25.0f))); + var_r31->unk_70[var_r30] += var_r31->unk_A0[var_r30]; + var_r31->unk_38 += var_r31->unk_38 < 0x8000; + var_f27 + = sqrtf((var_r31->unk_90[var_r30] * var_r31->unk_90[var_r30]) + (var_r31->unk_B0[var_r30] * var_r31->unk_B0[var_r30])); + sp1C4 = var_r31->unk_90[var_r30]; + sp1C0 = var_r31->unk_B0[var_r30]; + if (var_f27 > 0.0f) { + if (var_f27 > 7.59375) { + var_r31->unk_90[var_r30] *= 7.5 / var_f27; + var_r31->unk_B0[var_r30] *= 7.5 / var_f27; + } + else { + var_r31->unk_90[var_r30] *= (var_f27 < 0.09375 ? 0.0 : (var_f27 - 0.09375)) / var_f27; + var_r31->unk_B0[var_r30] *= (var_f27 < 0.09375 ? 0.0 : (var_f27 - 0.09375)) / var_f27; + } + } + var_r31->unk_60[var_r30] += var_r31->unk_90[var_r30]; + var_r31->unk_80[var_r30] += var_r31->unk_B0[var_r30]; + var_f27 + = sqrtf((var_r31->unk_90[var_r30] * var_r31->unk_90[var_r30]) + (var_r31->unk_B0[var_r30] * var_r31->unk_B0[var_r30])); + for (var_r28 = 0; var_r28 < 4; var_r28++) { + sp1BC = var_r31->unk_60[var_r30] - var_r31->unk_60[var_r28]; + sp1B8 = var_r31->unk_80[var_r30] - var_r31->unk_80[var_r28]; + var_f24 = sqrtf((sp1BC * sp1BC) + (sp1B8 * sp1B8)); + if ((var_r30 != var_r28) && (var_r31->unk_F0[var_r28] == 0) && (var_f24 > 0.0f) && (var_f24 < 62.5)) { + var_f20 = sp1BC / var_f24; + var_f19 = sp1B8 / var_f24; + sp1B4 = var_r31->unk_90[var_r30]; + sp1B0 = var_r31->unk_B0[var_r30]; + var_f18 = (var_r31->unk_90[var_r30] + var_r31->unk_90[var_r28]) / 2.0; + sp1A4 = (var_r31->unk_B0[var_r30] + var_r31->unk_B0[var_r28]) / 2.0; + sp1AC = (var_f20 * -(var_r31->unk_90[var_r30] - var_f18)) - (var_f19 * (var_r31->unk_B0[var_r30] - sp1A4)); + sp1A8 = (-var_f20 * -(var_r31->unk_90[var_r28] - var_f18)) - (-var_f19 * (var_r31->unk_B0[var_r28] - sp1A4)); + var_r31->unk_60[var_r30] += var_f20 * (0.1 + (62.5 - var_f24)) / 2.0; + var_r31->unk_80[var_r30] += var_f19 * (0.1 + (62.5 - var_f24)) / 2.0; + var_r31->unk_60[var_r28] -= var_f20 * (0.1 + (62.5 - var_f24)) / 2.0; + var_r31->unk_80[var_r28] -= var_f19 * (0.1 + (62.5 - var_f24)) / 2.0; + var_r31->unk_90[var_r30] = var_f18 + (0.75 * ((var_r31->unk_90[var_r30] - var_f18) + (2.0f * var_f20 * sp1AC))); + var_r31->unk_B0[var_r30] = sp1A4 + (0.75 * ((var_r31->unk_B0[var_r30] - sp1A4) + (2.0f * var_f19 * sp1AC))); + var_r31->unk_90[var_r28] = var_f18 + (0.75 * ((var_r31->unk_90[var_r28] - var_f18) + (2.0f * -var_f20 * sp1A8))); + var_r31->unk_B0[var_r28] = sp1A4 + (0.75 * ((var_r31->unk_B0[var_r28] - sp1A4) + (2.0f * -var_f19 * sp1A8))); + var_r31->unk_110[var_r30] = 1 << var_r28; + if (((var_r31->unk_90[var_r30] + var_r31->unk_B0[var_r30]) > 0.0) && (var_r31->unk_1C4[var_r30] > 0xF) + && (var_r31->unk_1C4[var_r28] > 0xF) && (lbl_1_bss_64[1].unk_00 < 2)) { + lbl_1_bss_64[1].unk_04[lbl_1_bss_64[1].unk_00] = 0.0f; + lbl_1_bss_64[1].unk_00++; + } + var_r31->unk_1C4[var_r30] = 0; + var_r31->unk_1C4[var_r28] = 0; + } + } + for (var_r28 = 0; var_r28 < 4; var_r28++) { + sp1A0 = var_r31->unk_60[var_r30] - var_r31->unk_60[var_r28]; + sp19C = var_r31->unk_80[var_r30] - var_r31->unk_80[var_r28]; + sp198 = sqrtf((sp1A0 * sp1A0) + (sp19C * sp19C)); + if ((var_r31->unk_F0[var_r28] != 0) && (var_f27 > 0.0f)) { + if (sp198 < 62.5) { + sp194 = sp1A0 / sp198; + sp190 = sp19C / sp198; + sp18C = var_r31->unk_90[var_r30]; + sp188 = var_r31->unk_B0[var_r30]; + sp184 = (-sp18C * sp194) - (sp188 * sp190); + var_r31->unk_60[var_r30] += sp194 * (0.1 + (62.5 - sp198)); + var_r31->unk_80[var_r30] += sp190 * (0.1 + (62.5 - sp198)); + var_r31->unk_90[var_r30] = 0.75 * (sp18C + (2.0f * sp194 * sp184)); + var_r31->unk_B0[var_r30] = 0.75 * (sp188 + (2.0f * sp190 * sp184)); + var_r31->unk_60[var_r30] += var_r31->unk_90[var_r30]; + var_r31->unk_80[var_r30] += var_r31->unk_B0[var_r30]; + var_r31->unk_34 = var_r31->unk_30 == (var_r28 + 1) ? (var_r31->unk_34 + 1) : 1; + var_r31->unk_30 = var_r28 + 1; + var_r31->unk_38 = 0; + var_r31->unk_120[var_r30] = 1 << var_r28; + if (((var_r31->unk_90[var_r30] + var_r31->unk_B0[var_r30]) > 0.0) && (var_r31->unk_1C4[var_r30] > 0xF) + && (var_r31->unk_1C4[var_r28] > 0xF) && (lbl_1_bss_64[1].unk_00 < 2)) { + lbl_1_bss_64[1].unk_04[lbl_1_bss_64[1].unk_00] = 0.0f; + lbl_1_bss_64[1].unk_00++; + } + var_r31->unk_1C4[var_r30] = 0; + var_r31->unk_1C4[var_r28] = 0; + } + } + } + for (var_r28 = 0; var_r28 < (lbl_1_data_230[var_r31->unk_190] == 2 ? 2 : 3); var_r28++) { + sp180 = var_r31->unk_60[var_r30] - sp3C4[var_r28].x; + sp17C = var_r31->unk_80[var_r30] - sp3C4[var_r28].z; + sp178 = sqrtf((sp180 * sp180) + (sp17C * sp17C)); + if ((sp178 > 0.0f) && (sp178 < 62.5)) { + sp174 = sp180 / sp178; + sp170 = sp17C / sp178; + sp16C = var_r31->unk_90[var_r30]; + sp168 = var_r31->unk_B0[var_r30]; + sp164 = (-sp16C * sp174) - (sp168 * sp170); + var_r31->unk_60[var_r30] += sp174 * (0.1 + (62.5 - sp178)); + var_r31->unk_80[var_r30] += sp170 * (0.1 + (62.5 - sp178)); + var_r31->unk_90[var_r30] = 0.75 * (sp16C + (2.0f * sp174 * sp164)); + var_r31->unk_B0[var_r30] = 0.75 * (sp168 + (2.0f * sp170 * sp164)); + var_r31->unk_60[var_r30] += var_r31->unk_90[var_r30]; + var_r31->unk_80[var_r30] += var_r31->unk_B0[var_r30]; + var_r31->unk_34 = var_r31->unk_30 == (var_r28 + 5) ? (var_r31->unk_34 + 1) : 1; + var_r31->unk_30 = var_r28 + 5; + var_r31->unk_38 = 0; + var_r31->unk_130[var_r30] = 1 << var_r28; + if (((var_r31->unk_90[var_r30] + var_r31->unk_B0[var_r30]) > 0.0) && (var_r31->unk_1C4[var_r30] > 0xF) + && (lbl_1_bss_64[1].unk_00 < 2)) { + lbl_1_bss_64[1].unk_04[lbl_1_bss_64[1].unk_00] = 0.0f; + lbl_1_bss_64[1].unk_00++; + } + var_r31->unk_1C4[var_r30] = 0; + } + } + if (((var_r31->unk_60[var_r30] - 37.5) < -250.0) || ((37.5 + var_r31->unk_60[var_r30]) > 250.0)) { + var_r31->unk_60[var_r30] = (var_r31->unk_60[var_r30] - 37.5) < -250.0 ? -212.5 : 212.5; + var_r31->unk_90[var_r30] *= -0.75; + var_r31->unk_60[var_r30] += var_r31->unk_90[var_r30]; + if (((var_r31->unk_90[var_r30] + var_r31->unk_B0[var_r30]) > 0.0) && (var_r31->unk_1C4[var_r30] > 0xF) + && (lbl_1_bss_64[1].unk_00 < 2)) { + lbl_1_bss_64[1].unk_04[lbl_1_bss_64[1].unk_00] = 0.0f; + lbl_1_bss_64[1].unk_00++; + } + var_r31->unk_1C4[var_r30] = 0; + } + if (((var_r31->unk_80[var_r30] - 37.5) < -250.0) || ((37.5 + var_r31->unk_80[var_r30]) > 250.0)) { + var_r31->unk_80[var_r30] = (var_r31->unk_80[var_r30] - 37.5) < -250.0 ? -212.5 : 212.5; + var_r31->unk_B0[var_r30] *= -0.75; + var_r31->unk_80[var_r30] += var_r31->unk_B0[var_r30]; + if (((var_r31->unk_90[var_r30] + var_r31->unk_B0[var_r30]) > 0.0) && (var_r31->unk_1C4[var_r30] > 0xF) + && (lbl_1_bss_64[1].unk_00 < 2)) { + lbl_1_bss_64[1].unk_04[lbl_1_bss_64[1].unk_00] = 0.0f; + lbl_1_bss_64[1].unk_00++; + } + var_r31->unk_1C4[var_r30] = 0; + } + var_r21 = 0; + for (var_r21 = 0; var_r21 < 0x10; var_r21++) { + var_r31->unk_1C4[var_r21]++; + } + sp160 = 0; + for (var_r28 = 0; var_r28 < 4; var_r28++) { + sp15C = var_r31->unk_60[var_r30] - sp394[var_r28].x; + sp158 = ((sp15C == 0.0f) && (var_r31->unk_80[var_r30] == sp394[var_r28].z)) + ? 1e-10 + : (var_r31->unk_80[var_r30] - sp394[var_r28].z); + var_f23 = sqrtf((sp15C * sp15C) + (sp158 * sp158)); + sp154 = 0; + for (var_r20 = 0; var_r20 < 4; var_r20++) { + if (((var_r31->unk_110[var_r30] & (1 << var_r20)) != 0) && (var_r31->unk_130[var_r20] != 0)) { + sp154 = 1; + } + } + if ((var_r31->unk_0C != -1) && (lbl_1_data_230[var_r31->unk_190] == 1) && (var_r28 == 3)) { + if (var_r31->unk_180[var_r30] > 0) { + var_f23 = 1000.0f; + var_r31->unk_180[var_r30]--; + } + for (var_r27 = 0; var_r27 < 4; var_r27++) { + if ((var_r31->unk_00 == 0) && ((HuPadBtn[0] & PAD_BUTTON_B) != 0)) { + OSReport("%d | %d\n%d | %d\n%f,%f\n%f,%f\n", var_r31->unk_110[var_r30], 1 << var_r27, + var_r31->unk_110[var_r27], 1 << var_r30, var_r31->unk_60[var_r30], var_r31->unk_80[var_r30], + var_r31->unk_60[var_r27], var_r31->unk_80[var_r27]); + } + if ((((var_r31->unk_110[var_r30] & (1 << var_r27)) != 0) || ((var_r31->unk_110[var_r27] & (1 << var_r30)) != 0)) + && (var_r31->unk_80[var_r27] > var_r31->unk_80[var_r30]) && (var_r31->unk_60[var_r30] < 100.0f) + && (var_r31->unk_60[var_r30] > -100.0f) && (var_r31->unk_80[var_r30] > 150.0f) + && (var_r31->unk_60[var_r27] < 100.0f) && (var_r31->unk_60[var_r27] > -100.0f) + && (var_r31->unk_80[var_r27] > 150.0f)) { + var_f23 = 1000.0f; + var_r31->unk_180[var_r30] = 3; + } + } + } + if ((sp154 == 0) && (var_f23 < 37.5)) { + sp150 = sp15C / var_f23; + sp14C = sp158 / var_f23; + sp148 = 37.5 * sind((90.0 * (-var_r31->unk_70[var_r30] / 37.5))); + sp144 = var_r31->unk_70[var_r30] <= -37.5 ? 90.0 : (asind(1.0 + (var_r31->unk_70[var_r30] / 37.5))); + var_r31->unk_140[var_r30] = 1 << var_r28; + sp140 = sqrtf((var_r31->unk_B0[var_r30] * var_r31->unk_B0[var_r30]) + + ((var_r31->unk_90[var_r30] * var_r31->unk_90[var_r30]) + + (var_r31->unk_A0[var_r30] * var_r31->unk_A0[var_r30]))); + sp13C = sqrtf( + (var_r31->unk_90[var_r30] * var_r31->unk_90[var_r30]) + (var_r31->unk_B0[var_r30] * var_r31->unk_B0[var_r30])); + sp138 = atan2d(var_r31->unk_A0[var_r30], sp13C); + var_r31->unk_90[var_r30] -= 0.375 * sp150; + var_r31->unk_B0[var_r30] -= 0.375 * sp14C; + var_r31->unk_60[var_r30] -= 0.375 * sp150; + var_r31->unk_80[var_r30] -= 0.375 * sp14C; + if (var_r31->unk_70[var_r30] < (-25.0 * sind((90.0 * (1.0 - (var_f23 / 37.5)))))) { + var_r31->unk_70[var_r30] = -25.0 * sind((90.0 * (1.0 - (var_f23 / 37.5)))); + } + if ((var_r31->unk_70[var_r30] <= -24.5) && (var_f23 < 0.75)) { + var_r31->unk_70[var_r30] = -25.0f; + var_r31->unk_A0[var_r30] = 0.0f; + var_r31->unk_F0[var_r30] = 1; + var_r31->unk_100[var_r28] = 1; + var_r31->unk_48 = lbl_1_rodata_10[var_r31->unk_10]; + if (lbl_1_bss_64[2].unk_00 < 2) { + lbl_1_bss_64[2].unk_04[lbl_1_bss_64[2].unk_00] = 0.0f; + lbl_1_bss_64[2].unk_00++; + } + omVibrate(var_r31->unk_04, 0xC, 6, 6); + } + } + else { + sp160++; + } + if (var_r28 == 3) { + if ((sp160 == 4) && (var_r31->unk_70[var_r30] < 0.0f)) { + var_r31->unk_70[var_r30] = 0.0f; + var_r31->unk_A0[var_r30] *= -0.0; + } + else { + var_r31->unk_A0[var_r30] += -0.1875; + } + } + } + sp134 = atan2d(sp1C4, sp1C0); + sp130 = atan2d(var_r31->unk_90[var_r30], var_r31->unk_B0[var_r30]); + var_f22 + = sqrtf((var_r31->unk_90[var_r30] * var_r31->unk_90[var_r30]) + (var_r31->unk_B0[var_r30] * var_r31->unk_B0[var_r30])); + var_f25 = sp130 - sp134; + var_f25 += var_f25 < -180.0f ? 0x168 : (var_f25 > 180.0f ? -0x168 : 0); + var_f25 += var_f25 < -180.0f ? 0x168 : (var_f25 > 180.0f ? -0x168 : 0); + var_f22 = var_f22 <= (1.03125 * sqrt(0.03858024691358024)) ? 0.0f : var_f22; + var_r31->unk_D0[var_r30] + -= (2.625 * ((var_f22 * (var_f25 < -90.0f ? -1.0 : (var_f25 > 90.0f ? 1.0 : (var_f25 / 90.0)))) / 3.75)); + var_r31->unk_D0[var_r30] = var_r31->unk_D0[var_r30] >= 7.875 ? 7.875 : var_r31->unk_D0[var_r30]; + var_r31->unk_C0[var_r30] += var_r31->unk_D0[var_r30]; + var_r31->unk_C0[var_r30] += var_r31->unk_C0[var_r30] < -180.0f ? 0xB4 : (var_r31->unk_C0[var_r30] > 180.0f ? -0xB4 : 0); + if (fabs(var_f22) < fabs(var_r31->unk_E0[var_r30])) { + var_r31->unk_D0[var_r30] + = var_r31->unk_E0[var_r30] == 0.0f ? 0.0f : ((var_r31->unk_D0[var_r30] * var_f22) / var_r31->unk_E0[var_r30]); + } + var_r31->unk_E0[var_r30] = var_f22; + } + } + } + } + Hu3DModelRotSet(var_r29->model[var_r31->unk_190 + 1], 10.0f * var_r31->unk_5C, 0.0f, 10.0f * -var_r31->unk_58); + Hu3DModelRotSet(var_r29->model[11], 10.0f * var_r31->unk_5C, 0.0f, 10.0f * -(var_r31->unk_58)); + if (lbl_1_bss_48 == 0x3EB) { + sp12C = var_r29->rot.y; + sp128 = 180.0 + ((8.0f * var_r31->unk_58) * (0.125 + ((0.6 + var_r31->unk_5C) / 0.875))); + var_r29->rot.y = (3.0f + sp12C) < sp128 ? (3.0f + sp12C) : ((sp12C - 3.0f) > sp128 ? (sp12C - 3.0f) : sp128); + if (lbl_1_bss_4C == 0xA) { + Hu3DMotionShiftSet(var_r29->model[0], var_r29->motion[1], 39.0 * (0.5 + (0.5 * var_r31->unk_5C)), 20.0f, HU3D_MOTATTR_PAUSE); + } + } + else if (lbl_1_bss_48 == 0x3EC) { + omSetRot(var_r29, 0.0f, 180.0 + ((8.0f * var_r31->unk_58) * (0.125 + ((0.6 + var_r31->unk_5C) / 0.875))), 0.0f); + Hu3DMotionTimeSet(var_r29->model[0], 39.0 * (0.5 + (0.5 * var_r31->unk_5C))); + } + else if (lbl_1_bss_48 == 0x3ED) { + if (lbl_1_bss_4C == 1) { + Hu3DModelAttrReset(var_r29->model[0], HU3D_MOTATTR_PAUSE); + Hu3DMotionShiftSet(var_r29->model[0], var_r29->motion[0], 0.0f, 12.0f, HU3D_MOTATTR_LOOP); + } + if (lbl_1_bss_4C >= 0x19) { + var_r29->rot.y *= 0.8; + } + } + else if (lbl_1_bss_48 >= 0x3EE) { + var_r29->rot.y = 0.0f; + if ((lbl_1_bss_4C == 1) && (lbl_1_bss_48 == 0x3EE)) { + if ((var_r31->unk_00 != lbl_1_bss_30) && (var_r31->unk_08 != -1)) { + s32 sp2E4[8] = { 0x121, 0x161, 0x1A1, 0x1E1, 0x221, 0x261, 0x2A1, 0x2E1 }; + HuAudFXPlay(sp2E4[var_r31->unk_08]); + } + Hu3DMotionShiftSet(var_r29->model[0], var_r29->motion[var_r31->unk_00 == lbl_1_bss_30 ? 2 : 3], 0.0f, 8.0f, + ((var_r31->unk_00 == lbl_1_bss_30) && (var_r31->unk_08 == -1)) ? 0x40000001 : 0); + } + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + lbl_1_bss_18 = var_r31->unk_C0[var_r30]; + lbl_1_bss_18 = lbl_1_bss_18 < -180.0f ? (360.0f + lbl_1_bss_18) : (lbl_1_bss_18 > 180.0f ? (lbl_1_bss_18 - 360.0f) : lbl_1_bss_18); + sp124 = ((-90.175 <= lbl_1_bss_18) && (lbl_1_bss_18 <= -90.0f)) != 0 + ? -90.175 + : ((-90.0f <= lbl_1_bss_18) && (lbl_1_bss_18 <= -89.825) ? -89.825 : lbl_1_bss_18); + PSMTXRotRad(sp304, 0x78, 0.017453292f * (10.0f * var_r31->unk_5C)); + PSMTXRotRad(sp364, 0x7A, 0.017453292f * (10.0f * -var_r31->unk_58)); + PSMTXConcat(sp364, sp304, sp364); + PSMTXRotRad(sp304, 0x79, 0.017453292f * sp124); + PSMTXRotRad(sp334, 0x78, 0.017453292f * (15.0f * var_r31->unk_5C)); + PSMTXConcat(sp334, sp304, sp334); + PSMTXRotRad(sp304, 0x7A, 0.017453292f * (15.0f * -var_r31->unk_58)); + PSMTXConcat(sp304, sp334, sp334); + Hu3DMtxRotGet(sp334, &sp2A8); + sp2B4.x = var_r31->unk_60[var_r30]; + sp2B4.y = var_r31->unk_70[var_r30]; + sp2B4.z = var_r31->unk_80[var_r30]; + PSMTXMultVec(sp364, &sp2B4, &sp2B4); + Hu3DModelPosSet(var_r29->model[var_r30 + 0xC], sp2D8.x + sp2B4.x, sp2D8.y + sp2B4.y, sp2D8.z + sp2B4.z); + Hu3DModelRotSet(var_r29->model[var_r30 + 0xC], 10.0f * var_r31->unk_5C, 0.0f, 10.0f * -var_r31->unk_58); + Hu3DModelRotSet(var_r29->model[var_r30 + 0xC], sp2A8.x, sp2A8.y, sp2A8.z); + } + } +} + +s32 lbl_1_data_284 = -1; +float lbl_1_data_288 = 700.0f; +float lbl_1_data_28C = 314.0f; +float lbl_1_data_290 = -100.0f; +float lbl_1_data_294 = -30.0f; + +void fn_1_6850(omObjData *object) +{ + M449DllWork *sp20[2]; + s32 sp1C; + s32 sp18; + s32 sp14; + s32 sp10; + s32 spC; + s32 sp8; + float var_f31; + float var_f30; + float var_f29; + + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + s32 var_r22; + s32 var_r21; + s32 var_r20; + + for (var_r31 = 0; var_r31 < 2; var_r31++) { + sp20[var_r31] = (&lbl_1_bss_54)[var_r31]->data; + } + lbl_1_bss_4++; + if (lbl_1_bss_48 == 0x3EC) { + lbl_1_bss_14++; + } + var_r27 = 0; + var_r26 = 0; + var_r25 = 0; + var_r24 = 0; + if ((sp20[0]->unk_190 == 2) && (sp20[0]->unk_F0[0] != 0)) { + var_r24 = 1; + } + if ((var_r24 != 0) && (sp20[0]->unk_F0[1] != 0)) { + var_r25 = 1; + } + if ((var_r25 != 0) && (sp20[0]->unk_F0[2] != 0)) { + var_r26 = 1; + } + if ((var_r26 != 0) && (sp20[0]->unk_F0[3] != 0)) { + var_r27 = 1; + } + var_r30 = var_r27; + var_r23 = 0; + var_r22 = 0; + var_r21 = 0; + var_r20 = 0; + if ((sp20[1]->unk_190 == 2) && (sp20[1]->unk_F0[0] != 0)) { + var_r20 = 1; + } + if ((var_r20 != 0) && (sp20[1]->unk_F0[1] != 0)) { + var_r21 = 1; + } + if ((var_r21 != 0) && (sp20[1]->unk_F0[2] != 0)) { + var_r22 = 1; + } + if ((var_r22 != 0) && (sp20[1]->unk_F0[3] != 0)) { + var_r23 = 1; + } + var_r29 = var_r23; + lbl_1_bss_30 = lbl_1_bss_30 == -1 ? ((var_r30 != 0) && (var_r29 != 0) ? (rand8() % 2) : (var_r30 != 0 ? 0 : (var_r29 != 0 ? 1 : lbl_1_bss_30))) + : lbl_1_bss_30; + lbl_1_bss_30 = ((lbl_1_bss_30 == -1) && (lbl_1_bss_14 >= 0x4650)) != 0 + ? (sp20[0]->unk_190 > sp20[1]->unk_190 ? 0 : (sp20[0]->unk_190 < sp20[1]->unk_190 ? 1 : 4)) + : lbl_1_bss_30; + var_r28 = lbl_1_data_284; + { + UnkCameraStruct sp28[4] = { + { 2500.0f, 0.0f, 0.0f, -100.0f, -40.0f, 0.0f }, + { 700.0f, 0.0f, 0.0f, -750.0f, -30.0f, 0.0f }, + { 775.0f, -350.0f, -27.0f, 400.0f, -25.0f, -7.0f }, + { 775.0f, 350.0f, -27.0f, 400.0f, -25.0f, 7.0f }, + }; + if (lbl_1_data_284 == -1) { + lbl_1_data_284 = 1; + lbl_1_bss_1C = 1; + lbl_1_bss_20 = 1.0f; + } + if ((lbl_1_bss_48 == 0x3E9) && (lbl_1_data_284 == 1)) { + lbl_1_data_284 = 0; + lbl_1_bss_1C = 1; + lbl_1_bss_20 = 0.0f; + } + if ((lbl_1_bss_48 == 0x3EE) && (lbl_1_bss_4C == 1) && (lbl_1_bss_30 == 0)) { + lbl_1_data_284 = 2; + lbl_1_bss_1C = 0; + lbl_1_bss_20 = 0.0f; + } + if ((lbl_1_bss_48 == 0x3EE) && (lbl_1_bss_4C == 1) && (lbl_1_bss_30 == 1) && (sp20[1]->unk_08 != -1)) { + lbl_1_data_284 = 3; + lbl_1_bss_1C = 0; + lbl_1_bss_20 = 0.0f; + } + if ((var_r28 != lbl_1_data_284) && (var_r28 != -1)) { + lbl_1_data_288 = CZoom; + lbl_1_data_28C = Center.y; + lbl_1_data_290 = Center.z; + lbl_1_data_294 = CRot.x; + } + if (lbl_1_bss_20 <= 1.0f) { + if (lbl_1_bss_1C == 0) { + lbl_1_bss_20 = 1.0 - (0.95 * (1.0f - lbl_1_bss_20)); + var_f31 = lbl_1_bss_20; + } + else { + lbl_1_bss_20 += 0.008333333333333333; + lbl_1_bss_20 = lbl_1_bss_20 > 1.0f ? 1.0f : lbl_1_bss_20; + var_f31 = 0.5 + (-0.5 * cosd((180.0f * lbl_1_bss_20))); + } + lbl_1_bss_20 = lbl_1_bss_20 > 1.0f ? 1.0f : lbl_1_bss_20; + CZoom = (var_f31 * sp28[lbl_1_data_284].unk_00) + (lbl_1_data_288 * (1.0f - var_f31)); + Center.x = (var_f31 * sp28[lbl_1_data_284].unk_04) + (lbl_1_bss_24 * (1.0f - var_f31)); + Center.y = (var_f31 * sp28[lbl_1_data_284].unk_08) + (lbl_1_data_28C * (1.0f - var_f31)); + Center.z = (var_f31 * sp28[lbl_1_data_284].unk_0C) + (lbl_1_data_290 * (1.0f - var_f31)); + CRot.x = (var_f31 * sp28[lbl_1_data_284].unk_10) + (lbl_1_data_294 * (1.0f - var_f31)); + CRot.y = (var_f31 * sp28[lbl_1_data_284].unk_14) + (lbl_1_bss_28 * (1.0f - var_f31)); + } + } +} + +static const u32 lbl_1_rodata_580[6] = { 0x2C0003, 0x2C0004, 0x2C0005, 0x2C0006, 0x2C0007, 0 }; + +void fn_1_71A8(void) +{ + M449DllWork *sp8[2]; + + s16 var_r31; + s32 var_r30; + s16 var_r29; + s32 var_r28; + s32 var_r27; + u32 var_r26; + + var_r29 = 0; + for (var_r30 = 0; var_r30 < 2; var_r30++) { + sp8[var_r30] = (&lbl_1_bss_54)[var_r30]->data; + } + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, 0x3C); + HuWinComKeyReset(); + var_r31 = HuWinExCreateStyled(-10000.0f, 60.0f, 0x118, 0x78, -1, 1); + HuWinExAnimIn(var_r31); + HuWinBGTPLvlSet(var_r31, 0.8f); + HuWinMesSpeedSet(var_r31, 1); + HuWinDisablePlayerSet( + var_r31, 0xF & ((sp8[0]->unk_0C != -1) ? ~(1 << sp8[0]->unk_0C) : 0xF) & ((sp8[1]->unk_0C != -1) ? ~(1 << sp8[1]->unk_0C) : 0xF)); + HuWinMesColSet(var_r31, 0); + HuWinMesSet(var_r31, 0x2C0001); + if (((sp8[0]->unk_0C == -1) || (sp8[0]->unk_08 == -1)) && ((sp8[1]->unk_0C == -1) || (sp8[1]->unk_08 == -1))) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, 0x3C); + } + HuWinMesWait(var_r31); + if ((sp8[0]->unk_0C != -1) || (sp8[1]->unk_0C != -1)) { + HuWinMesColSet(var_r31, 0); + HuWinMesSet(var_r31, 0x2C0002); + if ((sp8[0]->unk_0C == -1) && (sp8[1]->unk_0C == -1)) { + HuPrcSleep(0x3C); + var_r29 = 1; + } + else { + var_r29 = HuWinChoiceGet(var_r31, 0); + } + } + else { + var_r29 = 1; + } + if (var_r29 == 0) { + var_r30 = 0; + while ((var_r26 = lbl_1_rodata_580[var_r30++]) != 0) { + HuWinMesColSet(var_r31, 0); + HuWinMesSet(var_r31, var_r26); + if ((sp8[0]->unk_0C == -1 || sp8[0]->unk_08 == -1) && (sp8[1]->unk_0C == -1 || sp8[1]->unk_08 == -1)) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, 60); + } + HuWinMesWait(var_r31); + } + } + else { + HuWinMesColSet(var_r31, 0); + HuWinMesSet(var_r31, 0x2C0008); + if (((sp8[0]->unk_0C == -1) || (sp8[0]->unk_08 == -1)) && ((sp8[1]->unk_0C == -1) || (sp8[1]->unk_08 == -1))) { + HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, 60); + } + HuWinMesWait(var_r31); + } + HuWinExAnimOut(var_r31); + HuWinExCleanup(var_r31); + lbl_1_bss_10 = 0; + HuPrcEnd(); +} + +void fn_1_7544(omObjData *var_r29) +{ + M449DllWork *spC[2]; + s32 sp8; + + s32 var_r31; + s32 var_r30; + + for (var_r31 = 0; var_r31 < 0xC; var_r31++) { + s32 sp14[12] = { 0x7A2, 0x7A3, 0x7A4, 0x7A5, 0, 0, 0, 0, 0, 0, 0, 0 }; + if (lbl_1_bss_64[var_r31].unk_00 > 3) { + lbl_1_bss_64[var_r31].unk_00 = 3; + } + if ((lbl_1_bss_64[var_r31].unk_00 > 0) && (var_r31 != 1)) { + sp8 = HuAudFXPlay(sp14[var_r31]); + lbl_1_bss_64[var_r31].unk_00--; + } + } + for (var_r31 = 0; var_r31 < 2; var_r31++) { + spC[var_r31] = (&lbl_1_bss_54)[var_r31]->data; + } + if ((omSysExitReq != 0) && (WipeStatGet() == 0)) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + var_r29->func = fn_1_9A38; + } + switch (lbl_1_bss_48) { + case 0x3E8: + if (WipeStatGet() == 0) { + lbl_1_bss_48++; + lbl_1_bss_4C = 0; + return; + } + break; + case 0x3E9: + lbl_1_bss_4C++; + if (lbl_1_bss_4C > 0x78) { + lbl_1_bss_48++; + if ((spC[0]->unk_08 != -1) && (spC[1]->unk_08 != -1)) { + lbl_1_bss_48++; + } + lbl_1_bss_44 = 0; + lbl_1_bss_4C = 0; + return; + } + break; + case 0x3EA: + lbl_1_bss_4C++; + if (lbl_1_bss_4C == 1) { + HuPrcChildCreate(fn_1_71A8, 0x64, 0x2000, 0, HuPrcCurrentGet()); + lbl_1_bss_10 = 1; + if (lbl_1_data_22C == -1) { + lbl_1_data_22C = HuAudSeqPlay(0x3D); + return; + } + } + else if (lbl_1_bss_10 == 0) { + lbl_1_bss_48++; + if (lbl_1_data_22C != -1) { + HuAudSeqFadeOut(lbl_1_data_22C, 0x3E8); + lbl_1_data_22C = -1; + } + lbl_1_bss_4C = 0; + return; + } + break; + case 0x3EB: + lbl_1_bss_4C++; + if ((lbl_1_bss_4C == 5) && (lbl_1_data_228 < 0)) { + lbl_1_data_228 = MGSeqCreate(3, 0); + } + if ((lbl_1_bss_4C >= 5) && (lbl_1_data_22C == -1) && ((MGSeqStatGet(lbl_1_data_228) & 0x10) != 0)) { + lbl_1_data_22C = HuAudSeqPlay(0x3E); + } + if ((lbl_1_bss_4C >= 5) && (MGSeqStatGet(lbl_1_data_228) == 0) && (lbl_1_data_228 >= 0)) { + for (var_r30 = 0; var_r30 < 0x12; var_r30++) { + if (((var_r30 % 9) < 5) || ((var_r30 % 9) > 7)) { + espDispOn(lbl_1_data_48[var_r30]); + } + } + lbl_1_bss_48++; + lbl_1_data_228 = -1; + lbl_1_bss_4C = 0; + return; + } + break; + case 0x3EC: + lbl_1_bss_4C++; + if (lbl_1_bss_14 == 0x3F48) { + lbl_1_data_22A = MGSeqCreate(1, 0x1E, -1, -1); + } + if (lbl_1_data_22A != -1) { + MGSeqParamSet(lbl_1_data_22A, 1, (0x468B - lbl_1_bss_14) / 60); + } + if (lbl_1_bss_30 != -1) { + lbl_1_bss_48 = 0x3ED; + lbl_1_bss_4C = 0; + return; + } + break; + case 0x3ED: + lbl_1_bss_4C++; + if ((lbl_1_data_228 < 0) && (lbl_1_bss_4C == 1)) { + if (lbl_1_data_22A != -1) { + MGSeqParamSet(lbl_1_data_22A, 2, -1); + } + lbl_1_data_228 = MGSeqCreate(3, 1); + if (lbl_1_data_22C != -1) { + HuAudSeqFadeOut(lbl_1_data_22C, 0x64); + lbl_1_data_22C = -1; + return; + } + } + else if (MGSeqStatGet(lbl_1_data_228) == 0) { + lbl_1_bss_48++; + lbl_1_bss_4C = 0; + if (lbl_1_bss_30 == 4) { + lbl_1_bss_30 = spC[0]->unk_08 == -1 ? 0 : (spC[1]->unk_08 == -1 ? 1 : lbl_1_bss_30); + return; + } + } + break; + case 0x3EE: + lbl_1_bss_4C++; + if (lbl_1_bss_4C == 1) { + if (lbl_1_bss_30 != 4) { + if (spC[lbl_1_bss_30]->unk_08 != -1) { + HuAudSStreamPlay(1); + } + else { + HuAudSStreamPlay(3); + } + GWPlayerCoinWinSet(spC[lbl_1_bss_30]->unk_04, 10); + } + else if (lbl_1_bss_30 == 4) { + HuAudSStreamPlay(4); + } + } + if ((210.0f + (lbl_1_bss_30 == 4 ? 0x1E : 0)) < lbl_1_bss_4C) { + lbl_1_data_228 = -1; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 0x3C); + var_r29->func = fn_1_9A38; + } + break; + } +} + +void fn_1_7ECC(omObjData *var_r31) +{ + var_r31->model[0] = Hu3DModelCreateFile(0x500008); + Hu3DModelAttrSet(var_r31->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelShadowMapSet(var_r31->model[0]); + var_r31->model[1] = Hu3DModelCreateFile(0x500009); + var_r31->model[2] = Hu3DModelCreateFile(0x50000A); + Hu3DModelAttrSet(var_r31->model[2], HU3D_MOTATTR_LOOP); + var_r31->func = fn_1_6850; +} + +void fn_1_7F94(ModelData *model, ParticleData *particle, Mtx matrix) +{ + float var_f31; + float var_f30; + float var_f29; + + HsfanimStruct01 *var_r31; + s16 var_r29; + + if (particle->unk_34 == 0) { + for (var_r31 = particle->unk_48, var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + var_r31->unk00 = 0; + var_r31->unk40.a = 0; + var_r31->unk2C = 0.0f; + } + } + if (particle->unk_34 >= 0xFF) { + for (var_r31 = particle->unk_48, var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + var_r31->unk00 = 0xFF; + var_r31->unk40.a = 0; + var_r31->unk2C = 0.0f; + } + } + for (var_r31 = particle->unk_48, var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + if (!var_r31->unk2C) { + break; + } + } + for (var_r31 = particle->unk_48, var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) { + if (var_r31->unk00_s16 == 1) { + var_f31 = ((frand() & 0xFF) * 0x168) >> 8; + var_f30 = 0.5 + (1.5 * (rand8() / 256.0)); + var_r31->unk08.x = 2.5 * (var_f30 * sind(var_f31)); + var_r31->unk08.y = 4.5 * (var_f30 * cosd(var_f31)); + var_r31->unk08.y *= var_r31->unk08.y < 0.0f ? -0.5 : 1.0; + var_r31->unk08.x = (12.0 * (rand8() / 255.0)) - 6.0; + var_r31->unk08.y = 12.0 * (rand8() / 255.0); + var_r31->unk08.z = (rand8() / 255.0) - 0.5; + var_r31->unk34.x = 2.0f * var_r31->unk08.x; + var_r31->unk34.y = 10.0f + (2.0f * var_r31->unk08.y); + var_r31->unk34.z = 50.0f + (2.0f * var_r31->unk08.z); + var_r31->unk40.r = 0xFF; + var_r31->unk40.g = 0xFF; + var_r31->unk40.b = 0xFF; + var_r31->unk40.a = 0xFF; + var_r31->unk2C = 50.0f; + } + if (var_r31->unk00_s16 < 0xF0) { + PSVECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); + var_r31->unk08.x *= 0.9f; + var_r31->unk08.z *= 0.9f; + var_r31->unk08.y *= 0.9f; + var_r31->unk40.a = (var_r31->unk40.a * 0xB) / 12; + var_r31->unk2C += 1.01f; + if (var_r31->unk2C <= 0.0f) { + var_r31->unk2C = 0.0f; + } + if (var_r31->unk40.a == 0) { + var_r31->unk40.a = 0; + var_r31->unk2C = 0.0f; + } + } + var_r31->unk00_s16 += var_r31->unk00_s16 < 0x8000; + if (var_r31->unk00_s16 >= 0xF0) { + var_r31->unk40.a = 0; + var_r31->unk2C = 0.0f; + } + } +} + +void fn_1_8538(omObjData *var_r30) +{ + Vec sp60; + Vec sp54; + void *sp48; + + M449DllWork *var_r31; + s32 var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + M449DllWork *var_r25; + s32 var_r24; + s32 var_r23; + + var_r26 = -1; + var_r24 = -1; + var_r31 = var_r30->data; + sp48 = (&lbl_1_bss_54)[1 - var_r30->work[0]]->data; + memset(var_r31, 0, sizeof(M449DllWork)); + var_r31->unk_00 = var_r30->work[0]; + if ((GWPlayerCfg->character == 0xC) || (GWPlayerCfg[1].character == 0xC) || (GWPlayerCfg[2].character == 0xC) + || (GWPlayerCfg[3].character == 0xC)) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (GWPlayerCfg[var_r29].character == 0xC) { + var_r26 = var_r29; + } + } + var_r24 = GWPlayerCfg[var_r26].group == 0 ? 1 : 0; + if (var_r31->unk_00 == 0) { + var_r31->unk_04 = var_r24; + var_r23 = var_r26; + } + else { + var_r31->unk_04 = var_r26; + var_r23 = var_r24; + } + } + else { + var_r31->unk_04 = GWPlayerCfg[0].group == var_r31->unk_00 + ? 0 + : (GWPlayerCfg[1].group == var_r31->unk_00 + ? 1 + : (GWPlayerCfg[2].group == var_r31->unk_00 ? 2 : (GWPlayerCfg[3].group == var_r31->unk_00 ? 3 : 4))); + var_r23 = GWPlayerCfg->group == (1 - var_r31->unk_00) + ? 0 + : (GWPlayerCfg[1].group == (1 - var_r31->unk_00) + ? 1 + : (GWPlayerCfg[2].group == (1 - var_r31->unk_00) ? 2 : (GWPlayerCfg[3].group == (1 - var_r31->unk_00) ? 3 : 4))); + } + if (var_r31->unk_04 == 4) { + OSReport("m448:wrong player group\n"); + var_r31->unk_04 = var_r31->unk_00; + } + var_r31->unk_08 = ((var_r26 != -1) && (var_r31->unk_00 == 1)) != 0 ? -1 : GWPlayerCfg[var_r31->unk_04].character; + var_r31->unk_0C = ((var_r31->unk_08 == -1) || (GWPlayerCfg[var_r31->unk_04].iscom != 0)) != 0 ? -1 : GWPlayerCfg[var_r31->unk_04].pad_idx; + var_r31->unk_10 = var_r31->unk_0C != -1 ? 0 : GWPlayerCfg[var_r31->unk_04].diff; + var_r31->unk_18 = -1; + var_r31->unk_1C = 0; + var_r31->unk_48 = lbl_1_rodata_10[var_r31->unk_10]; + var_r31->unk_4C = 0; + var_r31->unk_214 = -1; + if (var_r31->unk_08 != -1) { + var_r30->model[0] = CharModelCreate(var_r31->unk_08, 1); + } + else { + var_r30->model[0] = Hu3DModelCreateFile(0x50001B); + } + Hu3DModelObjPosGet(lbl_1_bss_50->model[1], lbl_1_data_E8[var_r31->unk_00 + 2], &sp54); + omSetTra(var_r30, sp54.x, sp54.y, sp54.z); + if (var_r30->trans.x == -360.0f) { + var_r30->trans.x = -350.0f; + } + omSetRot(var_r30, 0.0f, (var_r31->unk_00 * 0xB4) + 0x5A, 0.0f); + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (var_r31->unk_08 != -1) { + var_r30->motion[var_r29] + = CharModelMotionCreate(var_r31->unk_08, lbl_1_data_90[var_r29] + (lbl_1_data_B0[var_r29] != 0 ? var_r31->unk_08 : 0)); + } + else { + var_r30->motion[var_r29] = Hu3DJointMotionFile(var_r30->model[0], lbl_1_data_A0[var_r29]); + } + } + Hu3DMotionSet(var_r30->model[0], var_r30->motion[0]); + Hu3DMotionTimeSet(var_r30->model[0], 20.0f); + Hu3DModelAttrSet(var_r30->model[0], HU3D_MOTATTR_LOOP); + Hu3DModelShadowSet(var_r30->model[0]); + CharModelVoiceEnableSet(var_r31->unk_08, var_r30->motion[3], 0); + lbl_1_data_23C[var_r31->unk_00] = var_r31->unk_00 == 0 ? (rand8() % 3) : ((lbl_1_data_23C[0] + ((rand8() % 2)) + 1) % 3); + if (var_r31->unk_00 == 0) { + for (var_r29 = 0; var_r29 < 3; var_r29++) { + M449DllUnkStruct sp6C = { + { 0x0050000B, 0x0050000D, 0x0050000F, 0x00500011 }, + { 0x0050000C, 0x0050000E, 0x00500010, 0x00500012 }, + }; + do { + while (TRUE) { + var_r27 = rand8() % 4; + if (lbl_1_data_230[0] == var_r27) { + continue; + } + if (lbl_1_data_230[1] == var_r27) { + continue; + } + break; + } + } while (lbl_1_data_230[2] == var_r27); + lbl_1_data_230[var_r29] = var_r27; + var_r30->model[var_r29 + 1] = Hu3DModelCreateFile(sp6C.unk_00[var_r27]); + var_r30->model[var_r29 + 4] = Hu3DModelCreateFile(sp6C.unk_10[var_r27]); + } + var_r30->model[11] = Hu3DModelCreateFile(0x500013); + } + else { + for (var_r29 = 0; var_r29 < 3; var_r29++) { + var_r30->model[var_r29 + 1] = Hu3DModelLink(lbl_1_bss_54->model[var_r29 + 1]); + var_r30->model[var_r29 + 4] = Hu3DModelLink(lbl_1_bss_54->model[var_r29 + 4]); + } + var_r30->model[11] = Hu3DModelLink(lbl_1_bss_54->model[11]); + } + Hu3DModelObjPosGet(lbl_1_bss_50->model[1], lbl_1_data_E8[var_r31->unk_00], &sp54); + for (var_r29 = 0; var_r29 < 3; var_r29++) { + if (var_r29 != 0) { + Hu3DModelAttrSet(var_r30->model[var_r29 + 1], HU3D_ATTR_DISPOFF); + } + Hu3DModelPosSet(var_r30->model[var_r29 + 1], sp54.x, sp54.y, sp54.z); + Hu3DModelPosSet(var_r30->model[var_r29 + 4], sp54.x, sp54.y, sp54.z); + Hu3DModelShadowSet(var_r30->model[var_r29 + 1]); + } + Hu3DModelPosSet(var_r30->model[11], sp54.x, sp54.y, sp54.z); + Hu3DModelShadowSet(var_r30->model[11]); + for (var_r29 = 0; var_r29 < 4; var_r29++) { + if (var_r29 == 0) { + var_r30->model[var_r29 + 0xC] = Hu3DModelCreateFile(var_r31->unk_00 == 0 ? 0x500014 : 0x500015); + } + else { + var_r30->model[var_r29 + 0xC] = Hu3DModelLink(var_r30->model[12]); + } + Hu3DModelObjPosGet(lbl_1_bss_50->model[1], lbl_1_data_E8[var_r31->unk_00], &sp54); + Hu3DModelObjPosGet(var_r30->model[4], lbl_1_data_138[var_r29], &sp60); + var_r31->unk_60[var_r29] = sp60.x - sp54.x; + var_r31->unk_80[var_r29] = sp60.z - sp54.z; + var_r31->unk_90[var_r29] = var_r31->unk_B0[var_r29] = 0.0f; + Hu3DModelPosSet(var_r30->model[var_r29 + 0xC], sp60.x, sp60.y, sp60.z); + } + for (var_r29 = 0; var_r29 < 4; var_r29++) { + var_r28 = var_r29 + 7; + Hu3DModelObjPosGet(var_r30->model[4], lbl_1_data_138[var_r29], &sp60); + var_r30->model[var_r28] = Hu3DParticleCreate(HuSprAnimRead(HuDataReadNum(0x120003, 0x10000000)), 0x32); + Hu3DModelPosSet(var_r30->model[var_r28], 2000.0f, -2000.0f, -2000.0f); + Hu3DModelScaleSet(var_r30->model[var_r28], 1.0f, 1.0f, 1.0f); + Hu3DModelLayerSet(var_r30->model[var_r28], 3); + Hu3DModelAttrReset(var_r30->model[var_r28], HU3D_ATTR_DISPOFF); + Hu3DParticleColSet(var_r30->model[var_r28], 0xFF, 0xFF, 0xFF); + Hu3DParticleScaleSet(var_r30->model[var_r28], 5.0f); + Hu3DParticleHookSet(var_r30->model[var_r28], fn_1_7F94); + Hu3DParticleCntSet(var_r30->model[var_r28], 0xFF); + } + if (var_r31->unk_00 == 1) { + for (var_r29 = 0; var_r29 < 0x12; var_r29++) { + s32 sp4C[2] = { 0x64, 0x1E5 }; + s32 spD4[0x12] = { 0, 0, -14, 16, 46, -14, 16, 46, -50, 0, 0, -14, 16, 46, -14, 16, 46, -50 }; + s32 sp8C[0x12] = { 0, 0, -2, -2, -2, -2, -2, -2, 0, 0, 0, -2, -2, -2, -2, -2, -2, 0 }; + if ((lbl_1_data_0[var_r29] + 0xFF9F0000) == 0) { + var_r25 = (&lbl_1_bss_54)[var_r29 == 8 ? 0 : (var_r29 == 0x11 ? 1 : 0)]->data; + lbl_1_data_48[var_r29] = espEntry(var_r25->unk_08 == -1 ? 0x500018 : (var_r25->unk_08 + lbl_1_data_0[var_r29]), 0, 0); + } + else { + lbl_1_data_48[var_r29] = espEntry(lbl_1_data_0[var_r29], 0, 0); + } + espDrawNoSet(lbl_1_data_48[var_r29], 0); + espAttrSet(lbl_1_data_48[var_r29], HUSPR_ATTR_NOANIM | HUSPR_ATTR_DISPOFF); + espBankSet(lbl_1_data_48[var_r29], 0); + espPriSet(lbl_1_data_48[var_r29], 0x80 - var_r29); + espPosSet(lbl_1_data_48[var_r29], spD4[var_r29] + sp4C[var_r29 < 9 ? 0 : 1], sp8C[var_r29] + 0x46); + if ((var_r29 >= 9 ? (var_r29 - 9) : var_r29) != 0) { + (void)var_r29; + continue; + } + else { + espTPLvlSet(lbl_1_data_48[var_r29], 0.5f); + espColorSet(lbl_1_data_48[var_r29], 0, 0, 0); + } + } + } + var_r30->func = fn_1_758; +} + +void fn_1_94F8(omObjData *var_r31) +{ + lbl_1_bss_48 = 0x3E8; + lbl_1_bss_4C = 0; + lbl_1_bss_40 = 0; + lbl_1_bss_3C = 0; + if (lbl_1_bss_64[0].unk_00 < 2) { + lbl_1_bss_64[0].unk_04[lbl_1_bss_64[0].unk_00] = 0.0f; + lbl_1_bss_64[0].unk_00++; + } + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + var_r31->func = fn_1_7544; +} + +void ObjectSetup(void) +{ + s32 var_r31; + omObjData *var_r30; + + OSReport("******* M449 ObjectSetup *********\n"); + lbl_1_bss_38 = omInitObjMan(0x258, 0x2000); + omGameSysInit(lbl_1_bss_38); + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 30.0f, 20.0f, 25000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + CZoom = 2500.0f; + Center.x = 0.0f; + Center.y = 0.0f; + Center.z = -100.0f; + CRot.x = -40.0f; + CRot.y = 0.0f; + CRot.z = 0.0f; + { + Vec sp3C = { 0.0f, 0.0f, 0.0f }; + Vec sp30 = { -0.5850064f, -0.788462f, 0.1545085f }; + Vec sp24; + Vec sp18; + Vec spC; + GXColor sp8 = { 0xFF, 0xFF, 0xFF, 0xFF }; + lbl_1_bss_34 = Hu3DGLightCreateV(&sp3C, &sp30, &sp8); + Hu3DGLightStaticSet(lbl_1_bss_34, 1); + Hu3DGLightInfinitytSet(lbl_1_bss_34); + sp24.x = 0.0f; + sp24.y = 10000.0f; + sp24.z = 0.0f; + sp18.x = 0.0f; + sp18.y = 1.0f; + sp18.z = 0.0f; + spC.x = 0.0f; + spC.y = 0.0f; + spC.z = 0.5f; + Hu3DShadowCreate(6.0f, 9000.0f, 11500.0f); + Hu3DShadowTPLvlSet(0.625f); + Hu3DShadowPosSet(&sp24, &sp18, &spC); + } + Hu3DShadowSizeSet(0xE0); + lbl_1_data_228 = -1; + lbl_1_bss_30 = -1; + HuWinInit(1); + lbl_1_bss_50 = omAddObjEx(lbl_1_bss_38, 0x64, 3, 0, 1, fn_1_7ECC); + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r30 = (&lbl_1_bss_54)[var_r31] = omAddObjEx(lbl_1_bss_38, 0x65, 0x14, 4, 0, fn_1_8538); + var_r30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M449DllWork), MEMORY_DEFAULT_NUM); + var_r30->work[0] = var_r31; + } + lbl_1_bss_5C = omAddObjEx(lbl_1_bss_38, 0x7FDA, 0, 0, -1, omOutView); + lbl_1_bss_60 = omAddObjEx(lbl_1_bss_38, 0x67, 0, 0, -1, fn_1_94F8); +} + +void fn_1_9A38(omObjData *arg0) +{ + void *sp8; + s32 var_r31; + + if (WipeStatGet() == 0) { + for (var_r31 = 0; var_r31 < 2; var_r31++) { + sp8 = (&lbl_1_bss_54)[var_r31]->data; + } + if (lbl_1_data_228 >= 0) { + MGSeqKill(lbl_1_data_228); + } + MGSeqKillAll(); + HuAudAllStop(); + omOvlReturnEx(1, 1); + } +}