From 4dd8a0ba10e2b68f9c9bf0cd1f449f49088083ed Mon Sep 17 00:00:00 2001 From: mrshigure Date: Tue, 17 Dec 2024 19:31:42 -0800 Subject: [PATCH] US: matched m422Dll --- config/GMPE01_00/rels/m422Dll/symbols.txt | 404 ++--- configure.py | 2 +- src/REL/m422Dll/main.c | 1887 +++++++++++++++++++++ 3 files changed, 2090 insertions(+), 203 deletions(-) create mode 100755 src/REL/m422Dll/main.c diff --git a/config/GMPE01_00/rels/m422Dll/symbols.txt b/config/GMPE01_00/rels/m422Dll/symbols.txt index f4f38637..db300891 100644 --- a/config/GMPE01_00/rels/m422Dll/symbols.txt +++ b/config/GMPE01_00/rels/m422Dll/symbols.txt @@ -13,191 +13,191 @@ ObjectSetup = .text:0x0000B058; // type:function size:0x428 fn_1_B480 = .text:0x0000B480; // type:function size:0xAC _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:0x30 -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x30 -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x30 -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x30 -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x30 -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x30 -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x30 -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 data:double -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x1C data:4byte -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x1C data:4byte -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x10 data:4byte -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x10 data:4byte -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0xC data:4byte -lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0xC data:4byte -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0xC data:4byte -lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0xC data:4byte -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0xC data:4byte -lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x20 data:4byte -lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float -lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 data:double -lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 data:double -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 data:double -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:double -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 data:double -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float -lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 data:float -lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 data:float -lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 data:float -lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float -lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 data:float -lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 data:float -lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 data:float -lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 data:double -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float -lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float -lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 data:float -lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 data:float -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float -lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float -lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 data:double -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float -lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float -lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 data:float -lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 data:float -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 data:float -lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 data:float -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 data:double -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_324 = .rodata:0x00000324; // type:object size:0x4 data:float -lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float -lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float -lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float -lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float -lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float -lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float -lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float -lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float -lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float -lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x8 data:double -lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x8 data:double -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x60 -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 data:4byte -lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x60 -lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x30 data:4byte -lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x34 data:4byte -lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x8 data:double -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:0x8 data:double -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:0x4 data:float -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:0x4 data:float -lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 data:float -lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float -lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 data:float -lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 data:float -lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float -lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 data:float -lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 data:float -lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x8 data:double -lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 data:float -lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0x4 data:float -lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 data:float -lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 data:float -lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x8 data:double -lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x8 data:double -lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x8 data:double -lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x8 data:double -lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x4 data:float -lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x4 data:float -lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x8 data:double -lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x8 data:double -lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 data:float -lbl_1_rodata_55C = .rodata:0x0000055C; // type:object size:0x4 data:float -lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 data:float -lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 data:float -lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x4 data:float -lbl_1_rodata_56C = .rodata:0x0000056C; // type:object size:0x4 data:float -lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 data:float -lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x8 data:double -lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x8 data:double -lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x8 data:double -lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 data:float -lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x8 data:double -lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 data:double -lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x8 data:double -lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 data:float -lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 data:float -lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x4 data:float -lbl_1_rodata_5BC = .rodata:0x000005BC; // type:object size:0x4 data:float -lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x8 data:double -lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x8 data:double -lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 data:float -lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 data:float -lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x4 data:float -lbl_1_rodata_5DC = .rodata:0x000005DC; // type:object size:0x4 data:float -lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 data:float -lbl_1_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 data:float -lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x4 data:float -lbl_1_rodata_5EC = .rodata:0x000005EC; // type:object size:0x4 data:float -lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x4 data:float -lbl_1_rodata_5F4 = .rodata:0x000005F4; // type:object size:0x4 data:float -lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x4 data:float -lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 data:double -lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x2C data:4byte -lbl_1_rodata_634 = .rodata:0x00000634; // type:object size:0x4 data:float -lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x4 data:float -lbl_1_rodata_63C = .rodata:0x0000063C; // type:object size:0x4 data:float -lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x4 data:float -lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x8 data:double -lbl_1_rodata_650 = .rodata:0x00000650; // type:object size:0x8 data:double -lbl_1_rodata_658 = .rodata:0x00000658; // type:object size:0x8 data:double -lbl_1_rodata_660 = .rodata:0x00000660; // type:object size:0x4 data:float -lbl_1_rodata_664 = .rodata:0x00000664; // type:object size:0x4 data:float -lbl_1_rodata_668 = .rodata:0x00000668; // type:object size:0x28 data:4byte -lbl_1_rodata_690 = .rodata:0x00000690; // type:object size:0x20 data:4byte -lbl_1_rodata_6B0 = .rodata:0x000006B0; // type:object size:0x8 data:4byte -lbl_1_rodata_6B8 = .rodata:0x000006B8; // type:object size:0x8 data:4byte -lbl_1_rodata_6C0 = .rodata:0x000006C0; // type:object size:0x8 data:4byte -lbl_1_rodata_6C8 = .rodata:0x000006C8; // type:object size:0x40 data:4byte -lbl_1_rodata_708 = .rodata:0x00000708; // type:object size:0x40 data:4byte -lbl_1_rodata_748 = .rodata:0x00000748; // type:object size:0x4 data:float -lbl_1_rodata_74C = .rodata:0x0000074C; // type:object size:0x4 data:float -lbl_1_rodata_750 = .rodata:0x00000750; // type:object size:0x4 data:float -lbl_1_rodata_754 = .rodata:0x00000754; // type:object size:0x4 data:float -lbl_1_rodata_758 = .rodata:0x00000758; // type:object size:0x4 data:float -lbl_1_rodata_760 = .rodata:0x00000760; // type:object size:0x8 data:double -lbl_1_rodata_768 = .rodata:0x00000768; // type:object size:0x4 data:float -lbl_1_rodata_76C = .rodata:0x0000076C; // type:object size:0x10 data:4byte -lbl_1_rodata_77C = .rodata:0x0000077C; // type:object size:0xC data:4byte -lbl_1_rodata_788 = .rodata:0x00000788; // type:object size:0xC data:4byte -lbl_1_rodata_794 = .rodata:0x00000794; // type:object size:0x4 data:byte -lbl_1_rodata_798 = .rodata:0x00000798; // type:object size:0x4 data:float -lbl_1_rodata_79C = .rodata:0x0000079C; // type:object size:0x4 data:float -lbl_1_rodata_7A0 = .rodata:0x000007A0; // type:object size:0x4 data:float -lbl_1_rodata_7A4 = .rodata:0x000007A4; // type:object size:0x4 data:float -lbl_1_rodata_7A8 = .rodata:0x000007A8; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x30 data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x30 data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x30 data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x30 data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x30 data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x30 data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x30 data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x8 scope:local data:double +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x1C scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x1C scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x10 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x10 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0xC scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0xC scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0xC scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0xC scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x20 scope:local data:4byte +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float +lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x8 scope:local data:double +lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x8 scope:local data:double +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x8 scope:local data:double +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 scope:local data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 scope:local data:double +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float +lbl_1_rodata_27C = .rodata:0x0000027C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x4 scope:local data:float +lbl_1_rodata_284 = .rodata:0x00000284; // type:object size:0x4 scope:local data:float +lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28C = .rodata:0x0000028C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x4 scope:local data:float +lbl_1_rodata_294 = .rodata:0x00000294; // type:object size:0x4 scope:local data:float +lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2BC = .rodata:0x000002BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F4 = .rodata:0x000002F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2FC = .rodata:0x000002FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 scope:local data:double +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_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float +lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float +lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float +lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float +lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float +lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_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_360 = .rodata:0x00000360; // type:object size:0x8 scope:local data:double +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x8 scope:local data:double +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x60 scope:local data:float +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3D4 = .rodata:0x000003D4; // type:object size:0x60 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x30 scope:local data:float +lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x30 scope:local data:4byte +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x8 scope:local data:double +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:0x8 scope:local data:double +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:0x4 scope:local data:float +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:0x4 scope:local data:float +lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x8 scope:local data:double +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 scope:local data:float +lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0x4 scope:local data:float +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x4 scope:local data:float +lbl_1_rodata_51C = .rodata:0x0000051C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x8 scope:local data:double +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x8 scope:local data:double +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x8 scope:local data:double +lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x8 scope:local data:double +lbl_1_rodata_540 = .rodata:0x00000540; // type:object size:0x4 scope:local data:float +lbl_1_rodata_544 = .rodata:0x00000544; // type:object size:0x4 scope:local data:float +lbl_1_rodata_548 = .rodata:0x00000548; // type:object size:0x8 scope:local data:double +lbl_1_rodata_550 = .rodata:0x00000550; // type:object size:0x8 scope:local data:double +lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 scope:local data:float +lbl_1_rodata_55C = .rodata:0x0000055C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 scope:local data:float +lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 scope:local data:float +lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x4 scope:local data:float +lbl_1_rodata_56C = .rodata:0x0000056C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 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:0x8 scope:local data:double +lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x8 scope:local data:double +lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 scope:local data:float +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5BC = .rodata:0x000005BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D4 = .rodata:0x000005D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5DC = .rodata:0x000005DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E4 = .rodata:0x000005E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5EC = .rodata:0x000005EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5F4 = .rodata:0x000005F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_600 = .rodata:0x00000600; // type:object size:0x8 scope:local data:double +lbl_1_rodata_608 = .rodata:0x00000608; // type:object size:0x2C scope:local data:4byte +lbl_1_rodata_634 = .rodata:0x00000634; // type:object size:0x4 scope:local data:float +lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x4 scope:local data:float +lbl_1_rodata_63C = .rodata:0x0000063C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x4 scope:local data:float +lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x8 scope:local data:double +lbl_1_rodata_650 = .rodata:0x00000650; // type:object size:0x8 scope:local data:double +lbl_1_rodata_658 = .rodata:0x00000658; // type:object size:0x8 scope:local data:double +lbl_1_rodata_660 = .rodata:0x00000660; // type:object size:0x4 scope:local data:float +lbl_1_rodata_664 = .rodata:0x00000664; // type:object size:0x4 scope:local data:float +lbl_1_rodata_668 = .rodata:0x00000668; // type:object size:0x28 scope:local data:4byte +lbl_1_rodata_690 = .rodata:0x00000690; // type:object size:0x20 scope:local data:4byte +lbl_1_rodata_6B0 = .rodata:0x000006B0; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_6B8 = .rodata:0x000006B8; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_6C0 = .rodata:0x000006C0; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_6C8 = .rodata:0x000006C8; // type:object size:0x40 scope:local data:4byte +lbl_1_rodata_708 = .rodata:0x00000708; // type:object size:0x40 scope:local data:4byte +lbl_1_rodata_748 = .rodata:0x00000748; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74C = .rodata:0x0000074C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_750 = .rodata:0x00000750; // type:object size:0x4 scope:local data:float +lbl_1_rodata_754 = .rodata:0x00000754; // type:object size:0x4 scope:local data:float +lbl_1_rodata_758 = .rodata:0x00000758; // type:object size:0x4 scope:local data:float +lbl_1_rodata_760 = .rodata:0x00000760; // type:object size:0x8 scope:local data:double +lbl_1_rodata_768 = .rodata:0x00000768; // type:object size:0x4 scope:local data:float +lbl_1_rodata_76C = .rodata:0x0000076C; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_77C = .rodata:0x0000077C; // type:object size:0xC scope:local data:float +lbl_1_rodata_788 = .rodata:0x00000788; // type:object size:0xC scope:local data:float +lbl_1_rodata_794 = .rodata:0x00000794; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_798 = .rodata:0x00000798; // type:object size:0x4 scope:local data:float +lbl_1_rodata_79C = .rodata:0x0000079C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7A0 = .rodata:0x000007A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7A4 = .rodata:0x000007A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7A8 = .rodata:0x000007A8; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x40 lbl_1_data_40 = .data:0x00000040; // type:object size:0x60 lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x20 @@ -205,29 +205,29 @@ lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x20 lbl_1_data_E0 = .data:0x000000E0; // type:object size:0x7 lbl_1_data_E7 = .data:0x000000E7; // type:object size:0x9 lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x1680 data:float -lbl_1_data_1770 = .data:0x00001770; // type:object size:0xF data:string -lbl_1_data_177F = .data:0x0000177F; // type:object size:0x10 data:string -lbl_1_data_178F = .data:0x0000178F; // type:object size:0x10 data:string -lbl_1_data_179F = .data:0x0000179F; // type:object size:0xF data:string -lbl_1_data_17AE = .data:0x000017AE; // type:object size:0x10 data:string -lbl_1_data_17BE = .data:0x000017BE; // type:object size:0x10 data:string -lbl_1_data_17CE = .data:0x000017CE; // type:object size:0xF data:string -lbl_1_data_17DD = .data:0x000017DD; // type:object size:0x11 data:string -lbl_1_data_17EE = .data:0x000017EE; // type:object size:0x11 data:string -lbl_1_data_17FF = .data:0x000017FF; // type:object size:0x12 data:string -lbl_1_data_1811 = .data:0x00001811; // type:object size:0x5 data:string -lbl_1_data_1816 = .data:0x00001816; // type:object size:0x12 +lbl_1_data_1770 = .data:0x00001770; // type:object size:0xF scope:local data:string +lbl_1_data_177F = .data:0x0000177F; // type:object size:0x10 scope:local data:string +lbl_1_data_178F = .data:0x0000178F; // type:object size:0x10 scope:local data:string +lbl_1_data_179F = .data:0x0000179F; // type:object size:0xF scope:local data:string +lbl_1_data_17AE = .data:0x000017AE; // type:object size:0x10 scope:local data:string +lbl_1_data_17BE = .data:0x000017BE; // type:object size:0x10 scope:local data:string +lbl_1_data_17CE = .data:0x000017CE; // type:object size:0xF scope:local data:string +lbl_1_data_17DD = .data:0x000017DD; // type:object size:0x11 scope:local data:string +lbl_1_data_17EE = .data:0x000017EE; // type:object size:0x11 scope:local data:string +lbl_1_data_17FF = .data:0x000017FF; // type:object size:0x12 scope:local data:string +lbl_1_data_1811 = .data:0x00001811; // type:object size:0x5 scope:local data:string +lbl_1_data_1816 = .data:0x00001816; // type:object size:0x10 scope:local data:string lbl_1_data_1828 = .data:0x00001828; // type:object size:0x50 lbl_1_data_1878 = .data:0x00001878; // type:object size:0x2C lbl_1_data_18A4 = .data:0x000018A4; // type:object size:0x8 data:4byte lbl_1_data_18AC = .data:0x000018AC; // type:object size:0x4 data:4byte lbl_1_data_18B0 = .data:0x000018B0; // type:object size:0x4 data:4byte -lbl_1_data_18B4 = .data:0x000018B4; // type:object size:0x40 -lbl_1_data_18F4 = .data:0x000018F4; // type:object size:0xC data:4byte +lbl_1_data_18B4 = .data:0x000018B4; // type:object size:0x40 data:float +lbl_1_data_18F4 = .data:0x000018F4; // type:object size:0x8 data:4byte lbl_1_data_1900 = .data:0x00001900; // type:object size:0x4 data:4byte -lbl_1_data_1904 = .data:0x00001904; // type:object size:0x1B data:string -lbl_1_data_191F = .data:0x0000191F; // type:object size:0x19 data:string -lbl_1_data_1938 = .data:0x00001938; // type:object size:0x24 data:string +lbl_1_data_1904 = .data:0x00001904; // type:object size:0x1B scope:local data:string +lbl_1_data_191F = .data:0x0000191F; // type:object size:0x19 scope:local data:string +lbl_1_data_1938 = .data:0x00001938; // type:object size:0x24 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:float lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:float lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:float diff --git a/configure.py b/configure.py index eae7d004..87bace0d 100644 --- a/configure.py +++ b/configure.py @@ -1031,7 +1031,7 @@ config.libs = [ Rel( "m422Dll", # Money Belts objects={ - Object(NonMatching, "REL/m422Dll/main.c"), + Object(MatchingFor("GMPE01_00", "GMPE01_01"), "REL/m422Dll/main.c"), }, ), Rel( diff --git a/src/REL/m422Dll/main.c b/src/REL/m422Dll/main.c new file mode 100755 index 00000000..15c1186f --- /dev/null +++ b/src/REL/m422Dll/main.c @@ -0,0 +1,1887 @@ +#include "game/audio.h" +#include "game/chrman.h" +#include "game/data.h" +#include "game/esprite.h" +#include "game/frand.h" +#include "game/gamework_data.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/object.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "game/wipe.h" + +#include "ext_math.h" +#include "dolphin.h" + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ u32 unk04; +} StructBss104; // Size 4 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ float unk04[3]; +} StructBss54; // Size 0x10 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ s32 unk08; + /* 0x0C */ s32 unk0C; + /* 0x10 */ s32 unk10; + /* 0x14 */ s32 unk14; + /* 0x18 */ s32 unk18; + /* 0x1C */ s32 unk1C; + /* 0x20 */ s32 unk20; + /* 0x24 */ s32 unk24; + /* 0x28 */ float unk28; + /* 0x2C */ float unk2C; + /* 0x30 */ float unk30; + /* 0x34 */ float unk34; + /* 0x38 */ float unk38; + /* 0x3C */ float unk3C; + /* 0x40 */ s32 unk40; +} StructBss3CData; // Size 0x44 + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ s32 unk04; + /* 0x08 */ u32 unk08; + /* 0x0C */ float unk0C; + /* 0x10 */ float unk10; + /* 0x14 */ float unk14; + /* 0x18 */ float unk18; + /* 0x1C */ float unk1C; + /* 0x20 */ float unk20; + /* 0x24 */ float unk24; + /* 0x28 */ char unk28[4]; + /* 0x2C */ s32 unk2C; +} StructDataF0; // Size 0x30 + +void fn_1_B480(omObjData* arg0); + +StructBss104 lbl_1_bss_104[3][8]; +StructBss54 lbl_1_bss_54[11]; +omObjData* lbl_1_bss_50; +omObjData* lbl_1_bss_4C; +omObjData* lbl_1_bss_3C[4]; +omObjData* lbl_1_bss_38; +s32 lbl_1_bss_34; +Process* lbl_1_bss_30; +s16 lbl_1_bss_2E; +s16 lbl_1_bss_2C; +s32 lbl_1_bss_28; +s32 lbl_1_bss_24; +s32 lbl_1_bss_20; +s32 lbl_1_bss_1C; // unused +s32 lbl_1_bss_18; +s32 lbl_1_bss_14; +s32 lbl_1_bss_10; // unused +s32 lbl_1_bss_C; +float lbl_1_bss_8; +float lbl_1_bss_4; +float lbl_1_bss_0; + +const float lbl_1_rodata_10[12] = { + 25.0f, 95.0f, 25.0f, + 75.0f, 75.0f, 75.0f, + 35.0f, 35.0f, 35.0f, + 25.0f, 50.0f, 50.0f +}; + +const float lbl_1_rodata_40[12] = { + 75.0f, 0.0f, 75.0f, + 0.0f, 0.0f, 0.0f, + 20.0f, 20.0f, 20.0f, + 50.0f, 0.0f, 0.0f +}; + +const float lbl_1_rodata_70[12] = { + 75.0f, 0.0f, 37.0f, + 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, + 70.0f, 0.0f, 0.0f +}; + +const float lbl_1_rodata_A0[12] = { + 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, + 75.0f, 50.0f, 0.0f +}; + +const float lbl_1_rodata_D0[12] = { + 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f, + 0.0f, 0.0f, 0.0f +}; + +const float lbl_1_rodata_100[12] = { + 30.0f, 30.0f, 30.0f, + 30.0f, 30.0f, 30.0f, + 40.0f, 40.0f, 40.0f, + 0.0f, 0.0f, 0.0f +}; + +const float lbl_1_rodata_130[12] = { + 290.0f, 290.0f, 290.0f, + 370.0f, 370.0f, 370.0f, + 450.0f, 450.0f, 450.0f, + 0.0f, 0.0f, 0.0f +}; + +s32 lbl_1_data_0[] = { + DATA_MAKE_NUM(DATADIR_MGCONST, 41), + DATA_MAKE_NUM(DATADIR_MGCONST, 40), + DATA_MAKE_NUM(DATADIR_MGCONST, 51), + DATA_MAKE_NUM(DATADIR_MGCONST, 51), + DATA_MAKE_NUM(DATADIR_MGCONST, 8), + DATA_MAKE_NUM(DATADIR_M422, 51), + DATA_MAKE_NUM(DATADIR_MGCONST, 0), + DATA_MAKE_NUM(DATADIR_MGCONST, 37), + DATA_MAKE_NUM(DATADIR_MGCONST, 36), + DATA_MAKE_NUM(DATADIR_MGCONST, 51), + DATA_MAKE_NUM(DATADIR_MGCONST, 51), + DATA_MAKE_NUM(DATADIR_MGCONST, 8), + DATA_MAKE_NUM(DATADIR_M422, 51), + DATA_MAKE_NUM(DATADIR_MGCONST, 12), + DATA_MAKE_NUM(DATADIR_MGCONST, 12), + DATA_MAKE_NUM(DATADIR_MGCONST, 12) +}; + +s32 lbl_1_data_40[] = { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x005E0000, 0x00190000, 0x006C0000, 0x00890000, + 0x00840000, 0x00100000, 0x000C0000, 0x00800000 +}; + +s32 lbl_1_data_A0[] = { + DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 2), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 3), + DATA_MAKE_NUM(DATADIR_M422, 0), + DATA_MAKE_NUM(DATADIR_M422, 8), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 6), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 23), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 24) +}; + +u32 lbl_1_data_C0[] = { 0, 0, 0, 1, 1, 0, 0, 0 }; +u8 lbl_1_data_E0[] = { 0, 0, 0, 1, 0, 1, 1 }; +u8 lbl_1_data_E7[] = { 8, 8, 8, 0, 12, 0, 8, 8, 0 }; +StructDataF0 lbl_1_data_F0[12][10] = { 0 }; + +char* lbl_1_data_1828[] = { + "m422al01-cube8", + "m422al02-cyl143", + "m422al03-cube11", + "m422am01-cyl76", + "m422am02-cube13", + "m422am03-cube12", + "m422as01-cube9", + "m422test11-cube9", + "m422test12-cube9", + "m422m09m-m422m09m", + "coin", + "m422a04-sphere2", + "m422m09m-m422m09m", + "m422m09m-m422m09m", + "m422m09m-m422m09m", + "m422m09m-m422m09m", + "m422m09m-m422m09m", + "m422m09m-m422m09m", + "m422m09m-m422m09m", + "m422m09m-m422m09m" +}; + +s32 lbl_1_data_1878[11] = { 0 }; +s32 lbl_1_data_18A4[2] = { 0 }; +s32 lbl_1_data_18AC = -1; +s32 lbl_1_data_18B0 = -1; + +float lbl_1_data_18B4[][4] = { + { 0.0f, 300.0f, 450.0f, 180.0f }, + { -200.0f, 0.0f, 1050.0f, 180.0f }, + { 0.0f, 0.0f, 1050.0f, 180.0f }, + { 200.0f, 0.0f, 1050.0f, 180.0f } +}; + +s32 lbl_1_data_18F4[] = { 0, 0 }; + +float lbl_1_data_18FC = 1.0f; // unused +s32 lbl_1_data_1900 = -1; + +void fn_1_A0(void) { + Center.x += 10.0 * (((HuPadBtn[0] & 2) != 0) - ((HuPadBtn[0] & 1) != 0)); + Center.z -= 10.0 * (((HuPadBtn[0] & 8) != 0) - ((HuPadBtn[0] & 4) != 0)); + Center.y += ((HuPadTrigL[0] - HuPadTrigR[0]) / 128.0) * 30.0; + CRot.y += HuPadSubStkX[0] / 16.0; + CRot.x += HuPadSubStkY[0] / -16.0; +} + +void fn_1_2FC(omObjData* arg0) { + Mtx sp254; + s32 sp1CC; + s32 sp1C8; + s32 sp1A4; + float sp1A0; + float sp158; + float sp154; + float sp150; + float sp14C; + float sp148; + s32 sp144; + float sp140; + float sp13C; + float sp138; + float sp134; + float sp130; + float sp12C; + float sp128; + s32 sp124; + float sp120; + float sp11C; + float sp118; + s32 var_r17; + s32 sp114; + float temp_f23; + float temp_f22; + float temp_f25; + float temp_f24; + float temp_f27; + float temp_f26; + float phi_f29; + float phi_f28; + StructDataF0* temp_r28; + StructDataF0* temp_r29; + StructBss3CData* temp_r31; + s32 var_r19; + s32 phi_r23; + s32 phi_r26; + s32 phi_r22; + s32 phi_r21; + s16 phi_r25; + s32 phi_r24; + s32 phi_r20; + s32 var_r18; + s32 i; + + temp_r31 = arg0->data; + sp158 = 0.0f; + sp154 = 0.0f; + sp150 = 0.0f; + phi_r25 = -1; + if (temp_r31->unk20 == 0 || temp_r31->unk20 == 1) { + arg0->trans.z += lbl_1_bss_0; + } + temp_r31->unk2C = temp_r31->unk34 = 0.0f; + if (lbl_1_bss_34 != 1004 || !(lbl_1_bss_8 < 45.0f)) { + if (lbl_1_bss_34 >= 1004 && temp_r31->unk20 != 0) { + temp_f25 = lbl_1_data_18B4[temp_r31->unk00][0] - arg0->trans.x; + temp_f24 = lbl_1_data_18B4[temp_r31->unk00][2] - arg0->trans.z; + sp14C = 270.0 + atan2d(temp_f25, temp_f24) - CRot.y; + sp148 = sqrtf(temp_f25 * temp_f25 + temp_f24 * temp_f24); + sp148 = (sp148 > 100.0f) ? 72.0f + : (sp148 < 12.0f) ? 0.0f + : (72.0f * (sp148 / 100.0f)); + sp154 = sp148 * cosd(sp14C); + sp150 = sp148 * sind(sp14C); + if (sp148 == 0.0f) { + temp_r31->unk20 = 0; + } + } else if (temp_r31->unk20 == 1) { + if (temp_r31->unk0C != -1) { + sp154 = HuPadStkX[temp_r31->unk0C]; + sp150 = HuPadStkY[temp_r31->unk0C]; + } else { + float sp238[7] = { 0 }; + float sp21C[7] = { 0 }; + float sp1EC[] = { -400.0f, -550.0f, -700.0f, -800.0f }; + float sp1DC[] = { -800.0f, -900.0f, -1100.0f, -2100.0f }; + Vec sp1D0; + + sp154 = sp150 = 0.0f; + for (i = 0; i < 7; i++) { + sp238[i] = (temp_r31->unk00 == 0 ? 600.0f : 1400.0f) + sp1EC[temp_r31->unk10]; + sp21C[i] = (temp_r31->unk00 == 0 ? 600.0f : 1400.0f) + sp1EC[temp_r31->unk10]; + } + for (i = 0; i < 12; i++) { + for (phi_r23 = 0; phi_r23 < (i < 10 ? 4 : 10); phi_r23++) { + temp_r28 = &lbl_1_data_F0[i][phi_r23]; + sp144 = (i < 10) ? (i * 4 + 43 + phi_r23) : ((i - 10) * 10 + 83 + phi_r23); + if (temp_r28->unk04 != 0 && !(temp_r28->unk14 < 0.0f)) { + Hu3DModelObjPosGet(lbl_1_bss_38->model[sp144], lbl_1_data_1828[temp_r28->unk00], &sp1D0); + phi_r26 = (s32) (300.0f + sp1D0.x + 2000.0f) / 100 - 20; + phi_r26--; + for (phi_r22 = 0; phi_r22 < 3; phi_r26++, phi_r22++) { + if (phi_r26 >= 0 && phi_r26 < 7 + && arg0->trans.z + 50.0f >= sp1D0.z - lbl_1_rodata_10[temp_r28->unk00] - lbl_1_rodata_70[temp_r28->unk00] + && sp1D0.x - lbl_1_rodata_10[temp_r28->unk00] - lbl_1_rodata_70[temp_r28->unk00] - 50.0f < (phi_r26 - 3) * 100 && sp1D0.x + lbl_1_rodata_10[temp_r28->unk00] + lbl_1_rodata_70[temp_r28->unk00] + 50.0f > (phi_r26 - 3) * 100) + { + if (temp_r28->unk00 < 10) { + if (sp238[phi_r26] < sp1D0.z + lbl_1_rodata_10[temp_r28->unk00] + lbl_1_rodata_70[temp_r28->unk00]) { + sp238[phi_r26] = sp1D0.z + lbl_1_rodata_10[temp_r28->unk00] + lbl_1_rodata_70[temp_r28->unk00]; + } + } else { + if (sp21C[phi_r26] < sp1D0.z + lbl_1_rodata_10[temp_r28->unk00] + lbl_1_rodata_70[temp_r28->unk00]) { + sp21C[phi_r26] = sp1D0.z + lbl_1_rodata_10[temp_r28->unk00] + lbl_1_rodata_70[temp_r28->unk00] + (temp_r28->unk00 < 11); + } + } + } + } + } + } + } + phi_r26 = (s32) (300.0f + arg0->trans.x + 2000.0f) / 100 - 20; + phi_r26 = (phi_r26 < 0) ? 0 + : (phi_r26 >= 7) ? 6 + : phi_r26; + for (i = 0, phi_r22 = phi_r26; i < 7; i++) { + var_r19 = ((temp_r31->unk00 / 2) % 2 == 0) ? i : (6 - i); + if (sp21C[phi_r22] - 60.0 * fabs(phi_r22 - phi_r26) < sp21C[var_r19] - 60.0 * fabs(var_r19 - phi_r26) && sp238[var_r19] < sp21C[var_r19]) { + phi_r22 = var_r19; + } + } + sp238[phi_r22] -= 1.0f; + for (i = 0, phi_r23 = phi_r26; i < 7; i++) { + var_r17 = ((temp_r31->unk00 / 2) % 2 == 0) ? i : (6 - i); + if (sp238[phi_r23] > sp238[var_r17]) { + phi_r23 = var_r17; + } + } + sp140 = arg0->trans.z - (temp_r31->unk00 == 0 ? -100.0f : 700.0f); + sp13C = (((sp238[phi_r22] > sp140 - 400.0f || sp140 > 550.0f) ? phi_r23 + : (sp140 > 500.0f) ? ((sp140 - 500.0f) / 50.0f) * phi_r23 + (1.0f - (sp140 - 500.0f) / 50.0f) * phi_r22 + : phi_r22) - 3.0f) * 100.0f - arg0->trans.x; + { + float sp1C4[] = { -21.0f, 0.0f, 15.0f }; + float sp1B8[] = { 60.0f, 65.0f, 53.0f }; + float sp1AC[] = { 54.0f, 72.0f, 59.0f }; + float sp1A0[] = { -15.0f, 7.0f, 22.0f }; + + var_r18 = (temp_r31->unk14 / 5) % 3; + var_r18 = (temp_r31->unk00 == 0) ? (arg0->trans.z < 200.0f ? 0 : 1) : 2; + sp13C /= 20.0f; + sp13C = (sp13C < -1.0f) ? sp13C + : (sp13C > 1.0f) ? 1.0f + : sp13C; + sp138 = (sp13C < 0.0f) ? -sp13C : sp13C; + sp134 = 1.0f - sp138; + sp154 = (sp13C < 0.0f) + ? (36.0f * sp134 + sp138 * sp1C4[var_r18]) + : (36.0f * sp134 + sp138 * sp1B8[var_r18]); + sp150 = (sp13C < 0.0f) + ? (42.0f * sp134 + sp138 * sp1AC[var_r18]) + : (42.0f * sp134 + sp138 * sp1A0[var_r18]); + } + temp_f23 = temp_r31->unk38 - sp154; + temp_f22 = temp_r31->unk3C - sp150; + if (sqrtf(temp_f23 * temp_f23 + temp_f22 * temp_f22) > 50.0f) { + temp_r31->unk40++; + } else { + temp_r31->unk40 = 0; + } + if (temp_r31->unk40 >= 2) { + sp154 = temp_r31->unk38; + sp150 = temp_r31->unk3C; + temp_r31->unk40 = 0; + } + temp_r31->unk38 = sp154; + temp_r31->unk3C = sp150; + } + } + } + if (temp_r31->unk20 == 2) { + sp130 = arg0->trans.y; + sp12C = arg0->trans.z; + phi_r25 = 4; + arg0->trans.z += 9.375; + if (temp_r31->unk00 == 0 + && lbl_1_data_1900 != -1 + && arg0->trans.z > (arg0->trans.y > 0.0f ? 620.0f : 1400.0f) + 50.0f + && sp12C <= (arg0->trans.y > 0.0f ? 620.0f : 1400.0f) + 50.0f) + { + HuAudFXStop(lbl_1_data_1900); + lbl_1_data_1900 = -1; + } + temp_r31->unk30 -= 1.0f; + arg0->trans.y += (arg0->trans.z > (arg0->trans.y > 0.0f ? 620.0f : 1400.0f) - 50.0f) + ? temp_r31->unk30 : 0.0f; + if (temp_r31->unk00 == 0 && lbl_1_data_1900 == -1 && arg0->trans.z > 670.0f && arg0->trans.z < 1450.0f && arg0->trans.y == 0.0f && sp130 > 0.0f) { + lbl_1_data_1900 = HuAudFXPlay(0x612); + } + if (arg0->trans.z < 1400.0f && arg0->trans.y <= 0.0f) { + arg0->trans.y = 0.0f; + temp_r31->unk30 = 0.0f; + } + arg0->rot.y += (arg0->rot.y < 0.0f) ? 360 + : (arg0->rot.y > 360.0f) ? -360 : 0; + arg0->rot.y = (arg0->rot.y > 140.0f && arg0->rot.y < 220.0f) ? 180.0f + : (arg0->rot.y < 180.0f) ? (40.0f + arg0->rot.y) + : (arg0->rot.y > 180.0f) ? (arg0->rot.y - 40.0f) + : arg0->trans.y;; + if (lbl_1_bss_C % 4 < 3) { + Hu3DModelAttrReset(arg0->model[0], 1); + } else { + Hu3DModelAttrSet(arg0->model[0], 1); + } + if (arg0->trans.y < -500.0f) { + temp_r31->unk20 = 3; + Hu3DModelAttrSet(arg0->model[0], 1); + } + } else if (temp_r31->unk20 != 3 && temp_r31->unk20 != 4) { + if (temp_r31->unk20 == 5) { + if (temp_r31->unk24 == 0) { + phi_r25 = 3; + Hu3DMotionSpeedSet(arg0->model[0], 1.0f); + Hu3DModelAttrReset(arg0->model[0], 1); + } + temp_r31->unk24++; + if (temp_r31->unk24 == 30) { + temp_r31->unk1C = -1; + temp_r31->unk18 = phi_r25 = 0; + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[0], 0.0f, 8.0f, HU3D_MOTATTR_LOOP); + } + if (temp_r31->unk24 >= 31 && temp_r31->unk24 <= 38) { + arg0->trans.x -= 150.0 * -sind(arg0->rot.y) / 7.0; + arg0->trans.z -= 150.0 * -cosd(arg0->rot.y) / 7.0; + } else { + arg0->trans.x = lbl_1_data_F0[9][temp_r31->unk00].unk0C; + arg0->trans.y = (temp_r31->unk00 == 0) ? 300 : 0; + arg0->trans.z = lbl_1_data_F0[9][temp_r31->unk00].unk14; + } + if (temp_r31->unk24 == 34 && temp_r31->unk00 == 0) { + Hu3DMotionTimeSet(lbl_1_bss_38->model[temp_r31->unk00 + 79], 15.0f + Hu3DMotionTimeGet(lbl_1_bss_38->model[temp_r31->unk00 + 79])); + } + if (temp_r31->unk24 == 38) { + temp_r31->unk20 = 1; + } + } else { + float temp_f31 = 0.25 * sp154; + float temp_f30 = 0.25 * -sp150; + Vec sp194 = { 0.0f, 0.0f, 0.0f }; + + sp194.x = temp_f31; + sp194.z = temp_f30; + PSMTXRotRad(sp254, 'y', MTXDegToRad(CRot.y)); + PSMTXMultVec(sp254, &sp194, &sp194); + temp_f31 = sp194.x; + temp_f30 = sp194.z; + sp158 = sqrtf(temp_f31 * temp_f31 + temp_f30 * temp_f30); + if (sp158 >= 0.5f) { + if (sp158 < 10.0f) { + temp_r31->unk2C = temp_f31; + temp_r31->unk34 += temp_f30; + } else { + temp_f31 /= sp158; + temp_f30 /= sp158; + sp158 = 10.0f; + temp_r31->unk2C = temp_f31 * sp158; + temp_r31->unk34 = temp_f30 * sp158; + } + temp_r31->unk28 = sp158; + arg0->rot.y = atan2d(temp_r31->unk2C, temp_r31->unk34); + if (temp_r31->unk20 == 1) { + if (temp_r31->unk28 >= 8.0f) { + phi_r25 = 2; + } else { + phi_r25 = 1; + } + } + } else if (temp_r31->unk20 == 1) { + phi_r25 = 0; + } + if (lbl_1_bss_34 == 1005 && (temp_r31->unk20 == 1 || temp_r31->unk20 == 0)) { + temp_r31->unk1C = (lbl_1_data_18F4[temp_r31->unk00 == 0 ? 0 : 1] > 0) ? 6 : 7; + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP); + temp_r31->unk20 = 0; + if (lbl_1_bss_8 == 1.0f && lbl_1_data_18F4[temp_r31->unk00 == 0 ? 0 : 1] > 0) { + s32 sp1FC[] = { + 0x122, 0x162, 0x1A2, 0x1E2, + 0x222, 0x262, 0x2A2, 0x2E2 + }; + + HuAudFXPlay(sp1FC[temp_r31->unk08]); + } + } + if (lbl_1_bss_34 >= 1004 && temp_r31->unk20 == 0) { + arg0->rot.y = 2.4f + 0.8f * arg0->rot.y; + if (temp_r31->unk18 != 6 && temp_r31->unk18 != 7) { + phi_r25 = 0; + } + } + arg0->trans.x += temp_r31->unk2C; + arg0->trans.z += temp_r31->unk34; + if (temp_r31->unk00 != 0) { + for (phi_r21 = 1; phi_r21 < 4; phi_r21++) { + temp_f27 = lbl_1_bss_3C[phi_r21]->trans.x - arg0->trans.x; + phi_f29 = lbl_1_bss_3C[phi_r21]->trans.z - arg0->trans.z; + if (phi_r21 != temp_r31->unk00) { + if (temp_f27 == 0.0f && phi_f29 == 0.0f) { + phi_f29 = -1.0f; + } + sp128 = sqrtf(temp_f27 * temp_f27 + phi_f29 * phi_f29); + if (sp128 < 100.0f) { + temp_f27 *= (100.0f / sp128); + phi_f29 *= (100.0f / sp128); + arg0->trans.x = lbl_1_bss_3C[phi_r21]->trans.x - temp_f27; + arg0->trans.z = lbl_1_bss_3C[phi_r21]->trans.z - phi_f29; + } + } + } + } + if (lbl_1_bss_34 > 1001) { + for (phi_r24 = 0; phi_r24 < 12; phi_r24++) { + if (phi_r24 == 9 && lbl_1_bss_34 <= 1001) { + } + for (phi_r20 = 0; phi_r20 < (phi_r24 < 10 ? 4 : 10); phi_r20++) { + temp_r29 = &lbl_1_data_F0[phi_r24][phi_r20]; + sp124 = (phi_r24 < 10) ? (phi_r24 * 4 + 43 + phi_r20) + : ((phi_r24 - 10) * 10 + 83 + phi_r20); + if (temp_r29->unk04 != 0 && temp_r29->unk2C <= 0) { + Vec sp188; + + Hu3DModelObjPosGet(lbl_1_bss_38->model[sp124], lbl_1_data_1828[temp_r29->unk00], &sp188); + if (((temp_r29->unk04 == 3 || (temp_r29->unk04 == 4 && sp188.y >= 250.0f)) && temp_r31->unk00 == 0) + || (((temp_r29->unk04 == 4 && sp188.y < 250.0f) || temp_r29->unk04 == 5 || temp_r29->unk04 == 6) && temp_r31->unk00 != 0)) + { + sp11C = sp188.x; + sp118 = sp188.z; + if (lbl_1_rodata_40[temp_r29->unk00] > 0.0f || lbl_1_rodata_70[temp_r29->unk00] > 0.0f) { + sp11C = (arg0->trans.x < sp11C - lbl_1_rodata_40[temp_r29->unk00]) ? (sp11C - lbl_1_rodata_40[temp_r29->unk00]) + : (arg0->trans.x > sp11C + lbl_1_rodata_40[temp_r29->unk00]) ? (sp11C + lbl_1_rodata_40[temp_r29->unk00]) + : arg0->trans.x; + sp118 = (arg0->trans.z < sp118 - lbl_1_rodata_70[temp_r29->unk00]) ? (sp118 - lbl_1_rodata_70[temp_r29->unk00]) + : (arg0->trans.z > sp118 + lbl_1_rodata_70[temp_r29->unk00]) ? (sp118 + lbl_1_rodata_70[temp_r29->unk00]) + : arg0->trans.z; + } + temp_f26 = sp11C - arg0->trans.x; + phi_f28 = sp118 - arg0->trans.z; + if (phi_r24 < 10 && temp_f26 == 0.0f && phi_f28 == 0.0f) { + phi_f28 = -1.0f; + } + sp120 = sqrtf(temp_f26 * temp_f26 + phi_f28 * phi_f28); + if (sp120 < 50.0f + lbl_1_rodata_10[temp_r29->unk00]) { + if (phi_r24 < 10) { + temp_f26 *= (50.0f + lbl_1_rodata_10[temp_r29->unk00]) / sp120; + phi_f28 *= (50.0f + lbl_1_rodata_10[temp_r29->unk00]) / sp120; + arg0->trans.x = sp11C - temp_f26; + arg0->trans.z = sp118 - phi_f28; + } else { + temp_r29->unk04 = 0; + lbl_1_data_18F4[temp_r31->unk00 == 0 ? 0 : 1] += (phi_r24 == 10 ? 1 : 5); + CharModelCoinEffectCreate(-1, &sp188); + if (lbl_1_bss_54[phi_r24 == 10 ? 8 : 9].unk00 < 3) { + lbl_1_bss_54[phi_r24 == 10 ? 8 : 9].unk04[lbl_1_bss_54[phi_r24 == 10 ? 8 : 9].unk00] = 0.0f; + lbl_1_bss_54[phi_r24 == 10 ? 8 : 9].unk00++; + } + } + } + } + } + } + } + } + if (arg0->trans.z > (temp_r31->unk00 == 0 ? 620.0f : 1400.0f) - 50.0f) { + temp_r31->unk20 = 2; + temp_r31->unk30 = 0.0f; + HuAudCharVoicePlay(temp_r31->unk08, 0x123); + } + if (temp_r31->unk20 != 2) { + if (arg0->trans.x > (temp_r31->unk00 == 0 ? 400 : 400) - 50.0f) { + arg0->trans.x = (temp_r31->unk00 == 0 ? 400 : 400) - 50.0f; + } + if (arg0->trans.x < -(temp_r31->unk00 == 0 ? 400 : 400) + 50.0f) { + arg0->trans.x = -(temp_r31->unk00 == 0 ? 400 : 400) + 50.0f; + } + if (arg0->trans.z < (temp_r31->unk00 == 0 ? 0.0f : 600.0f) + 50.0f) { + arg0->trans.z = (temp_r31->unk00 == 0 ? 0.0f : 600.0f) + 50.0f; + } + if (arg0->trans.z > (temp_r31->unk00 == 0 ? 620.0f : 1400.0f) - 50.0f) { + arg0->trans.z = (temp_r31->unk00 == 0 ? 620.0f : 1400.0f) - 50.0f; + } + } + } + } + if (lbl_1_bss_34 == 1001) { + sp114 = temp_r31->unk00; + if (lbl_1_bss_8 == 23.0f) { + Hu3DMotionSet(lbl_1_bss_38->model[temp_r31->unk00 + 79], lbl_1_bss_38->motion[temp_r31->unk00 + 22]); + Hu3DModelAttrReset(lbl_1_bss_38->model[temp_r31->unk00 + 79], HU3D_MOTATTR_PAUSE); + if (lbl_1_bss_54[4].unk00 < 3) { + lbl_1_bss_54[4].unk04[lbl_1_bss_54[4].unk00] = 0.0f; + lbl_1_bss_54[4].unk00++; + } + } + if (lbl_1_bss_8 == 43.0f) { + Hu3DModelAttrSet(lbl_1_bss_38->model[temp_r31->unk00 + 79], HU3D_MOTATTR_PAUSE); + } + if (lbl_1_bss_8 == 80.0f) { + Hu3DMotionTimeSet(lbl_1_bss_38->model[temp_r31->unk00 + 79], 20.0f); + Hu3DModelAttrReset(lbl_1_bss_38->model[temp_r31->unk00 + 79], HU3D_MOTATTR_PAUSE); + } + if (lbl_1_bss_8 == 100.0f && lbl_1_bss_54[0].unk00 < 3) { + lbl_1_bss_54[0].unk04[lbl_1_bss_54[0].unk00] = 0.0f; + lbl_1_bss_54[0].unk00++; + } + if (lbl_1_bss_8 == 106.0f) { + Hu3DModelAttrReset(lbl_1_bss_38->model[temp_r31->unk00 + 39], 1); + Hu3DParticleCntSet(lbl_1_bss_38->model[temp_r31->unk00 + 39], 0); + lbl_1_bss_18 = 1; + } + if (lbl_1_bss_8 == 60.0f) { + Hu3DModelAttrReset(arg0->model[0], 1); + Hu3DMotionSet(arg0->model[0], arg0->motion[3]); + Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_PAUSE); + } + if (lbl_1_bss_8 == 61.0f) { + Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_PAUSE); + } + if (lbl_1_bss_8 == 120.0f) { + phi_r25 = 3; + Hu3DModelAttrReset(arg0->model[0], 1); + } + if (lbl_1_bss_8 == 155.0f) { + phi_r25 = 0; + } + arg0->trans.x = lbl_1_data_F0[9][sp114].unk0C; + arg0->trans.z = (lbl_1_bss_8 > 163.0f) ? arg0->trans.z + : (lbl_1_bss_8 > 155.0f) ? (arg0->trans.z - 18.75) + : lbl_1_data_F0[9][sp114].unk14; + } + if (temp_r31->unk1C >= 0) { + phi_r25 = temp_r31->unk1C; + } + if (phi_r25 >= 0 && phi_r25 != temp_r31->unk18) { + Hu3DMotionShiftSet(arg0->model[0], arg0->motion[phi_r25], 0.0f, lbl_1_data_E7[phi_r25], (lbl_1_data_E0[phi_r25] != 0) ? HU3D_MOTATTR_NONE : HU3D_MOTATTR_LOOP); + temp_r31->unk18 = phi_r25; + } +} + +s32 fn_1_34BC(float arg0, float arg1, float arg2, s32 arg3, s32 arg4) { + Vec sp1C; + float var_f27; + float var_f28; + float var_f25; + float var_f26; + float temp_f30; + float var_f31; + float sp18; + StructDataF0* temp_r31; + s32 var_r24; + s32 i; + s32 j; + + for (i = 0; i < 12; i++) { + for (j = 0; j < (i < 10 ? 4 : 10); j++) { + temp_r31 = &lbl_1_data_F0[i][j]; + var_r24 = (i < 10) ? (i * 4 + 43 + j) : ((i - 10) * 10 + 83 + j); + if (temp_r31->unk04 != 0 && temp_r31->unk2C <= 0) { + Hu3DModelObjPosGet(lbl_1_bss_38->model[var_r24], lbl_1_data_1828[temp_r31->unk00], &sp1C); + if (temp_r31->unk04 == 3 || temp_r31->unk04 == 5) { + var_f27 = (temp_r31->unk08 == 0) ? temp_r31->unk0C : sp1C.x; + var_f28 = (temp_r31->unk08 == 0) ? temp_r31->unk14 : sp1C.z; + var_f25 = 50.0f + lbl_1_rodata_70[temp_r31->unk00]; + var_f26 = 50.0f + lbl_1_rodata_70[temp_r31->unk00]; + if (temp_r31->unk04 == 3) { + float sp28[][12] = { + { + -25.0f, -25.0f, -25.0f, + -6.6875f, -6.6875f, -6.6875f, + 62.765625f, 62.765625f, 62.765625f, + 51.99469f, 76.875f, 45.0f + }, + { + -27.647583f, -27.647583f, -27.647583f, + -9.64325f, -9.64325f, -9.64325f, + 60.49022f, 60.49022f, 60.49022f, + 51.99469f, 76.875f, 45.0f + } + }; + + var_f28 += sp28[temp_r31->unk08 == 0 ? 0 : 1][temp_r31->unk00]; + var_f25 += 50.0f; + var_f26 += 50.0f; + } else if (temp_r31->unk04 == 5 && temp_r31->unk08 == 0) { + var_f28 += lbl_1_rodata_130[temp_r31->unk00]; + } else if (temp_r31->unk04 == 1) { + var_f27 = (temp_r31->unk0C < 0.0f ? -1 : 1) * 321; + var_f28 = 880.0f - lbl_1_bss_0 * (100 - temp_r31->unk08); + } + if (temp_r31->unk00 == 9) { + var_f26 += 300.0f; + } + if (lbl_1_rodata_40[temp_r31->unk00] > 0.0f || var_f25 > 0.0f || var_f26 > 0.0f) { + var_f27 = (arg0 < var_f27 - lbl_1_rodata_40[temp_r31->unk00]) ? (var_f27 - lbl_1_rodata_40[temp_r31->unk00]) + : (arg0 > var_f27 + lbl_1_rodata_40[temp_r31->unk00]) ? (var_f27 + lbl_1_rodata_40[temp_r31->unk00]) + : arg0; + var_f28 = (arg1 < var_f28 - var_f25) ? (var_f28 - var_f25) + : (arg1 > var_f28 + var_f26) ? (var_f28 + var_f26) + : arg1; + } + temp_f30 = var_f27 - arg0; + var_f31 = var_f28 - arg1; + if (i < 10 && temp_f30 == 0.0f && var_f31 == 0.0f) { + var_f31 = -1.0f; + } + sp18 = sqrtf(temp_f30 * temp_f30 + var_f31 * var_f31); + if (sp18 < arg2 + lbl_1_rodata_10[temp_r31->unk00]) { + return 1; + } + } + } + } + } + return 0; +} + +void fn_1_3B74(omObjData* arg0) { + StructBss3CData* sp354[4]; + Vec sp348; + s32 var_r20; + s32 var_r19; + s32 var_r18; + s32 var_r17; + s32 sp230; + s32 sp22C; + s32 sp228; + s32 sp224; + s32 sp220; + s32 sp21C; + s32 sp218; + float sp214; + float sp210; + float sp20C; + s32 sp208; + float var_f25; + float var_f24; + float temp_f21; + float temp_f20; + float temp_f23; + float temp_f22; + float temp_f26; + float temp_f28; + float temp_f27; + float temp_f29; + float temp_f30; + float temp_f31; + StructDataF0* temp_r31; + s32 var_r21; + s32 var_r28; + s32 var_r27; + s32 var_r25; + s32 i; + s32 j; + + for (i = 0; i < 4; i++) { + sp354[i] = lbl_1_bss_3C[i]->data; + } + lbl_1_bss_C++; + lbl_1_bss_0 = (lbl_1_bss_34 <= 1002) ? 1.5 + : (lbl_1_bss_34 == 1003) ? (7.5 * (lbl_1_bss_8 > 120.0f ? 1.0 : (0.2 + 0.8 * (lbl_1_bss_8 / 120.0)))) + : 0.0; + lbl_1_bss_4 = (lbl_1_bss_34 < 1005 && sp354[0]->unk20 >= 2 && sp354[0]->unk20 <= 5 + && !(lbl_1_bss_34 == 1003 && lbl_1_bss_8 <= 120.0f)) ? 7.5 : lbl_1_bss_0; + Hu3DMotionSpeedSet(arg0->model[1], 1.5 * lbl_1_bss_4 / 7.5); + Hu3DMotionSpeedSet(arg0->model[3], 1.5 * lbl_1_bss_0 / 7.5); + if (lbl_1_data_18B0 != -1) { + temp_f21 = 1.5 * lbl_1_bss_4 / 7.5; + HuAudFXPitchSet(lbl_1_data_18B0, 8190.0f * temp_f21 - 8190.0f); + HuAudFXVolSet(lbl_1_data_18B0, temp_f21 <= 0.001 ? 0 : 127); + } + if (lbl_1_bss_34 <= 1001) { + temp_f31 = (lbl_1_bss_34 == 1000 || lbl_1_bss_8 < 60.0f) ? 0.0 + : (lbl_1_bss_8 < 120.0f) ? (lbl_1_bss_8 - 60.0f) / 60.0 + : 1.0; + temp_f31 = 1.0f - temp_f31; + temp_f31 *= temp_f31; + temp_f31 = 1.0f - temp_f31; + temp_f28 = 1.0f - temp_f31; + Center.x = 690.0f * temp_f31; + Center.y = 400.0f * temp_f28 + 1340.0f * temp_f31; + Center.z = 500.0f * temp_f28 + 1380.0f * temp_f31; + CRot.x = -10.0f * temp_f28 + -50.8125f * temp_f31; + CRot.y = 40.0f * temp_f31; + CZoom = 2126.6f * temp_f28 + 2126.6f * temp_f31; + Center.x = 700.0f * temp_f31; + Center.y = 400.0f * temp_f28 + 870.0f * temp_f31; + Center.z = 500.0f * temp_f28 + 1320.0f * temp_f31; + CRot.x = -10.0f * temp_f28 + -37.25f * temp_f31; + CRot.y = 40.0f * temp_f31; + } + if (lbl_1_bss_34 == 1005 && lbl_1_bss_8 < 100.0f) { + temp_f30 = (lbl_1_bss_8 < 90.0f) ? (lbl_1_bss_8 / 90.0) : 1.0; + temp_f30 = 1.0f - temp_f30; + temp_f30 *= temp_f30; + temp_f30 = 1.0f - temp_f30; + temp_f26 = 1.0f - temp_f30; + Center.x = 120.0f * temp_f30 + 700.0f * temp_f26; + Center.y = 292.5f * temp_f30 + 870.0f * temp_f26; + Center.z = 1200.0f * temp_f30 + 1320.0f * temp_f26; + CRot.x = -19.5f * temp_f30 + -37.25f * temp_f26; + CRot.y = 13.5f * temp_f30 + 40.0 * temp_f26; + CZoom = 2126.6f * temp_f30 + 2126.6f * temp_f26; + } + var_r20 = (sp354[0]->unk20 == 3 && (lbl_1_data_F0[9][0].unk04 == 0 || lbl_1_bss_34 != 1003)); + sp22C = (sp354[1]->unk20 == 3 && (lbl_1_data_F0[9][1].unk04 == 0 || lbl_1_bss_34 != 1003)) + + (sp354[2]->unk20 == 3 && (lbl_1_data_F0[9][2].unk04 == 0 || lbl_1_bss_34 != 1003)) + + (sp354[3]->unk20 == 3 && (lbl_1_data_F0[9][3].unk04 == 0 || lbl_1_bss_34 != 1003)); + var_r19 = (lbl_1_bss_34 == 1003 && lbl_1_bss_C % 60 == 0) ? (rand8() % 2 + 1 + var_r20) : var_r20; + var_r18 = (lbl_1_bss_34 == 1003 && lbl_1_bss_C % 120 == 0) ? (rand8() % 2 + 1) : 0; + var_r17 = sp22C + (lbl_1_bss_34 == 1003 && lbl_1_bss_C % 60 == 0 && lbl_1_bss_28 > 120); + sp228 = (lbl_1_bss_34 == 1003 && lbl_1_bss_C % 60 == 0) ? (rand8() % 2 + 2) : 0; + sp224 = 0; + var_r19 = (lbl_1_bss_34 == 1003 && lbl_1_bss_C % 60 == 0) ? ((rand8() % 4 < 3) + 1 + var_r20) : var_r20; + var_r18 = (lbl_1_bss_34 == 1003 && lbl_1_bss_C % 120 == 1) ? (rand8() % 2 + 1) : 0; + var_r17 = sp22C + (lbl_1_bss_34 == 1003 && lbl_1_bss_C % 60 == 38 && lbl_1_bss_28 > 120); + sp228 = (lbl_1_bss_34 == 1003 && lbl_1_bss_C % 60 == 0) ? (rand8() % 2 + 2) : 0; + while (var_r19 > 0 || var_r18 > 0 || var_r17 > 0 || sp228 > 0) { + var_r27 = (rand8() % 2 == 0) + ? ((var_r17 != 0) ? 3 + : (sp228 != 0) ? 4 + : (var_r19 != 0) ? 1 + : (var_r18 != 0) ? 2 : 0) + : ((var_r17 != 0) ? 3 + : (var_r19 != 0) ? 1 + : (sp228 != 0) ? 4 + : (var_r18 != 0) ? 2 : 0); + sp224++; + if (sp224 > 8) { + var_r19 -= (var_r27 == 1); + var_r18 -= (var_r27 == 2); + var_r17 -= (var_r27 == 3); + sp228 -= (var_r27 == 4); + sp224 = 0; + } else if (var_r27 == 1 || var_r27 == 2 || var_r27 == 3 || var_r27 == 4) { + var_r28 = (var_r27 != 4) ? (rand8() % 9) : 10; + if (var_r27 == 1 && var_r20 != 0) { + var_r28 = 9; + i = 0; + } else if (var_r27 == 3 && sp22C != 0) { + var_r28 = 9; + i = (sp354[(lbl_1_bss_C % 3) + 1]->unk20 == 3 && (lbl_1_data_F0[9][lbl_1_bss_C % 3 + 1].unk04 == 0 || lbl_1_bss_34 != 1003)) ? (lbl_1_bss_C % 3 + 1) + : (sp354[(lbl_1_bss_C + 1) % 3 + 1]->unk20 == 3 && (lbl_1_data_F0[9][(lbl_1_bss_C + 1) % 3 + 1].unk04 == 0 || lbl_1_bss_34 != 1003)) ? ((lbl_1_bss_C + 1) % 3 + 1) + : (sp354[(lbl_1_bss_C + 2) % 3 + 1]->unk20 == 3 && (lbl_1_data_F0[9][(lbl_1_bss_C + 2) % 3 + 1].unk04 == 0 || lbl_1_bss_34 != 1003)) ? ((lbl_1_bss_C + 2) % 3 + 1) : 0; + } else { + if (var_r28 == 10 && (lbl_1_bss_28 / 60) / 15 + 1 <= 2 - lbl_1_bss_14 && rand8() % (((lbl_1_bss_28 / 60 - (1 - lbl_1_bss_14) * 15) * 3) + 1) == 0) { + var_r28 = 11; + } + for (i = 0; i < (var_r27 != 4 ? 4 : 10); i++) { + if (lbl_1_data_F0[var_r28][i].unk04 == 0) { + break; + } + } + if (i >= (var_r27 != 4 ? 4 : 10)) { + continue; + } + } + lbl_1_data_F0[var_r28][i].unk0C = (var_r27 != 3) + ? (rand8() % 7 - 3) * 100 + : ((rand8() % 2) * 2 - 1) * 1595; + if (i == 0 && lbl_1_bss_34 >= 1004 && var_r28 == 9) { + lbl_1_data_F0[var_r28][i].unk0C = 0.0f; + } + lbl_1_data_F0[var_r28][i].unk10 = (var_r27 == 1) ? 300 + : (var_r27 == 2) ? 0 + : (var_r27 == 3) ? 500 + : (var_r27 == 4) ? 300 : 0; + lbl_1_data_F0[var_r28][i].unk14 = (var_r27 == 1) ? -450 + : (var_r27 == 2) ? -450 + : (var_r27 == 3) ? 105 + : (var_r27 == 4) ? -150 : 0; + lbl_1_data_F0[var_r28][i].unk14 += (var_r27 == 1) ? -(var_r28 <= 8 ? 0 : 0) + : (var_r27 == 2) ? -(var_r28 <= 8 ? (var_r28 / 3) * 80 : 0) + : (var_r27 == 4) ? -50 : 0; + lbl_1_data_F0[var_r28][i].unk14 += (var_r27 == 1) + ? ((var_r28 <= 2) ? 315.0 + : (var_r28 <= 5) ? 296.6875 + : (var_r28 <= 8) ? 227.234375 + : (var_r28 == 9) ? 200 : 0) : 0.0; + if (var_r27 == 1 || var_r27 == 4) { + float sp3C4[] = { + -25.0f, -25.0f, -25.0f, + -6.6875f, -6.6875f, -6.6875f, + 62.765625f, 62.765625f, 62.765625f, + 51.99469f, 76.875f, 45.0f, + -27.647583f, -27.647583f, -27.647583f, + -9.64325f, -9.64325f, -9.64325f, + 60.49022f, 60.49022f, 60.49022f, + 51.99469f, 76.875f, 45.0f + }; + + var_f25 = lbl_1_data_F0[var_r28][i].unk0C; + var_f24 = sp3C4[var_r28] + lbl_1_data_F0[var_r28][i].unk14; + } else if (var_r27 == 2) { + var_f25 = lbl_1_data_F0[var_r28][i].unk0C; + var_f24 = lbl_1_rodata_130[var_r28] + lbl_1_data_F0[var_r28][i].unk14; + } else if (var_r27 == 3) { + var_f25 = (lbl_1_data_F0[var_r28][i].unk0C < 0.0f) ? -335 : 335; + var_f24 = 830.0f - 94.0f * lbl_1_bss_0; + } else { + var_f25 = lbl_1_data_F0[var_r28][i].unk0C; + var_f24 = lbl_1_data_F0[var_r28][i].unk14; + } + if (fn_1_34BC(var_f25, var_f24, lbl_1_rodata_10[lbl_1_data_F0[var_r28][i].unk00] + lbl_1_rodata_40[lbl_1_data_F0[var_r28][i].unk00], var_r28, 0) != 0) { + continue; + } + if (var_r27 == 3 && lbl_1_data_18A4[(lbl_1_data_F0[var_r28][i].unk0C < 0.0f) ? 0 : 1] > 0) { + continue; + } + if (var_r27 == 4) { + for (var_r21 = 0; var_r21 < 10; var_r21++) { + if (lbl_1_data_F0[10][var_r21].unk04 != 0 + && fabs(lbl_1_data_F0[var_r28][i].unk14 - lbl_1_data_F0[10][var_r21].unk14) <= 100.0 + && fabs(lbl_1_data_F0[var_r28][i].unk0C - lbl_1_data_F0[10][var_r21].unk0C) <= 200.0) + { + break; + } + if (lbl_1_data_F0[11][var_r21].unk04 != 0 + && fabs(lbl_1_data_F0[var_r28][i].unk14 - lbl_1_data_F0[11][var_r21].unk14) <= 100.0 + && fabs(lbl_1_data_F0[var_r28][i].unk0C - lbl_1_data_F0[11][var_r21].unk0C) <= 200.0) + { + break; + } + } + if (var_r21 < 10 || (lbl_1_data_F0[var_r28][i].unk0C >= -100.0f && lbl_1_data_F0[var_r28][i].unk0C <= 100.0f)) { + continue; + } + } + if (var_r28 == 11) { + lbl_1_bss_14++; + } + if ((lbl_1_bss_28 / 60) / 15 == 0 && lbl_1_bss_14 == 0) { + lbl_1_bss_14++; + } + lbl_1_data_F0[var_r28][i].unk00 = var_r28; + lbl_1_data_F0[var_r28][i].unk04 = (var_r27 == 1) ? 3 + : (var_r27 == 2) ? 5 + : (var_r27 == 3) ? 1 + : (var_r27 == 4) ? 3 : 0; + lbl_1_data_F0[var_r28][i].unk08 = 0; + lbl_1_data_F0[var_r28][i].unk2C = 0; + lbl_1_data_F0[var_r28][i].unk18 = lbl_1_data_F0[var_r28][i].unk1C = lbl_1_data_F0[var_r28][i].unk20 = 0.0f; + if (var_r27 != 4) { + sp220 = var_r28 * 4 + 43 + i; + Hu3DMotionTimeSet(arg0->model[sp220], (var_r27 == 1 || var_r27 == 3) ? 1.0f : Hu3DMotionMaxTimeGet(arg0->model[sp220])); + Hu3DModelAttrSet(arg0->model[sp220], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(arg0->model[sp220], 1); + Hu3DModelRotSet(arg0->model[sp220], 0.0f, 0.0f, 0.0f); + } else { + Hu3DModelAttrReset(arg0->model[i + (var_r28 == 10 ? 83 : 93)], 1); + } + if (var_r27 == 1 && var_r20 != 0) { + var_r20--; + sp354[0]->unk20 = 4; + } else if (var_r27 == 3 && sp22C != 0) { + sp22C--; + sp354[i]->unk20 = 4; + } + if (var_r27 == 3) { + lbl_1_data_18A4[(lbl_1_data_F0[var_r28][i].unk0C < 0.0f) ? 0 : 1] = 85; + Hu3DMotionTimeSet(arg0->model[(lbl_1_data_F0[var_r28][i].unk0C < 0.0f) ? 6 : 5], 9.0f); + if (var_r28 == 9 && lbl_1_bss_54[(lbl_1_data_F0[var_r28][i].unk0C < 0.0f) ? 7 : 6].unk00 < 3) { + lbl_1_bss_54[(lbl_1_data_F0[var_r28][i].unk0C < 0.0f) ? 7 : 6].unk04[lbl_1_bss_54[(lbl_1_data_F0[var_r28][i].unk0C < 0.0f) ? 7 : 6].unk00] = 0.0f; + lbl_1_bss_54[(lbl_1_data_F0[var_r28][i].unk0C < 0.0f) ? 7 : 6].unk00++; + } + } + if (var_r28 == 9) { + sp21C = var_r28 * 4 + 43 + i; + Hu3DMotionSet(arg0->model[sp21C], arg0->motion[i + 22]); + Hu3DMotionTimeSet(arg0->model[sp21C], 0.0f); + Hu3DMotionSpeedSet(arg0->model[sp21C], 2.0f); + } + var_r19 -= (var_r27 == 1); + var_r18 -= (var_r27 == 2); + var_r17 -= (var_r27 == 3); + sp228 -= (var_r27 == 4); + sp224 = 0; + } + } + for (i = 0; i < 12; i++) { + for (j = 0; j < (i < 10 ? 4 : 10); j++) { + temp_r31 = &lbl_1_data_F0[i][j]; + var_r25 = (i < 10) + ? (i * 4 + 43 + j) + : ((i - 10) * 10 + 83 + j); + sp348.x = sp348.y = sp348.z = 0.0f; + if (temp_r31->unk04 == 0) { + Hu3DModelAttrSet(arg0->model[var_r25], 1); + } else { + temp_r31->unk08++; + temp_r31->unk24 += (temp_r31->unk00 == 10) ? 0 : 0; + temp_r31->unk24 += (temp_r31->unk24 < 0.0f) ? 360 + : (temp_r31->unk24 > 360.0f) ? -360 : 0; + Hu3DModelObjPosGet(arg0->model[var_r25], lbl_1_data_1828[temp_r31->unk00], &sp348); + switch (temp_r31->unk04) { + case 3: + case 5: + case 6: + if (temp_r31->unk00 >= 3 && temp_r31->unk00 >= 9 && temp_r31->unk04 == 3 + && temp_r31->unk14 < -120.0f && temp_r31->unk14 + lbl_1_bss_4 >= -120.0f) + { + sp218 = (500.0f + temp_r31->unk0C) / 100.0f; + sp218 = (sp218 < 0) ? 0 + : (sp218 >= 11) ? 10 + : sp218; + lbl_1_data_1878[sp218] = 15; + Hu3DMotionShiftSet(arg0->model[sp218 + 8], arg0->motion[11], 20.0f, 15.0f, HU3D_MOTATTR_NONE); + if (temp_r31->unk00 == 9 && lbl_1_bss_54[5].unk00 < 3) { + lbl_1_bss_54[5].unk04[lbl_1_bss_54[5].unk00] = 0.0f; + lbl_1_bss_54[5].unk00++; + } + } + temp_r31->unk14 += (temp_r31->unk04 == 3 ? lbl_1_bss_4 : lbl_1_bss_0); + if (lbl_1_bss_34 >= 1003 && lbl_1_bss_34 < 1005) { + if ((temp_r31->unk04 == 3 && temp_r31->unk00 == 9 && temp_r31->unk14 >= 150.0f && temp_r31->unk14 - lbl_1_bss_4 < 150.0f) + || (temp_r31->unk04 == 6 && temp_r31->unk00 == 9 && temp_r31->unk08 == 1)) + { + sp354[j]->unk20 = 5; + sp354[j]->unk24 = 0; + lbl_1_bss_3C[j]->trans.x = temp_r31->unk0C; + lbl_1_bss_3C[j]->trans.y = (j == 0 ? 300 : 0); + lbl_1_bss_3C[j]->trans.z = temp_r31->unk14; + lbl_1_bss_3C[j]->rot.y = 180 + ((lbl_1_bss_20 == 4 && temp_r31->unk04 == 6) + ? (temp_r31->unk0C < 0.0f ? -45 : 45) + : 0); + Hu3DMotionSpeedSet(arg0->model[j + 79], 1.0f); + Hu3DMotionShiftSet(arg0->model[j + 79], arg0->motion[j + 22], 44.0f, 2.0f, HU3D_MOTATTR_NONE); + Hu3DParticleCntSet(arg0->model[j + 39], j == 0 ? 15 : 0); + if (lbl_1_bss_54->unk00 < 3) { + lbl_1_bss_54->unk04[lbl_1_bss_54->unk00] = 0.0f; + lbl_1_bss_54->unk00++; + } + } + } + if (temp_r31->unk04 == 3 && temp_r31->unk14 > 510.0f) { + temp_r31->unk04 = 4; + temp_r31->unk08 = 0; + if (temp_r31->unk00 != 10) { + if (temp_r31->unk00 != 9) { + Hu3DMotionTimeSet(arg0->model[var_r25], 1.0f); + } else { + Hu3DMotionSet(arg0->model[var_r25], arg0->motion[j + 26]); + Hu3DMotionTimeSet(arg0->model[var_r25], 1.0f); + Hu3DMotionSpeedSet(arg0->model[var_r25], 1.0f); + } + Hu3DModelAttrReset(arg0->model[var_r25], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + } + } + if ((temp_r31->unk04 == 5 || temp_r31->unk04 == 6) && sp348.z > 1400.0f && temp_r31->unk14 > 700.0f) { + temp_r31->unk08 = 0; + temp_r31->unk10 = sp348.y; + temp_r31->unk14 = sp348.z; + temp_r31->unk1C = 0.0f; + if (temp_r31->unk00 == 10) { + Hu3DModelAttrSet(arg0->model[var_r25], HU3D_MOTATTR_LOOP); + } else if (temp_r31->unk00 != 9) { + Hu3DMotionTimeSet(arg0->model[var_r25], 2.0f); + Hu3DModelAttrReset(arg0->model[var_r25], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + } else { + Hu3DMotionSet(arg0->model[var_r25], arg0->motion[(temp_r31->unk04 == 6) ? (j + 26) : (j + 30)]); + Hu3DMotionTimeSet(arg0->model[var_r25], 1.0f); + Hu3DMotionSpeedSet(arg0->model[var_r25], 1.0f); + } + temp_r31->unk04 = 7; + Hu3DModelPosSet(arg0->model[var_r25], temp_r31->unk0C, temp_r31->unk10, temp_r31->unk14); + } else { + Hu3DModelPosSet(arg0->model[var_r25], + temp_r31->unk0C, + ((temp_r31->unk00 >= 0 && temp_r31->unk00 < 10) + ? ((temp_r31->unk04 != 6 ? 300 : 0) + lbl_1_rodata_100[temp_r31->unk00]) + : temp_r31->unk10) + lbl_1_rodata_A0[temp_r31->unk00], + temp_r31->unk14 + lbl_1_rodata_D0[temp_r31->unk00]); + } + if (temp_r31->unk00 >= 10) { + Hu3DModelRotSet(arg0->model[var_r25], 0.0f, temp_r31->unk24, 0.0f); + } + break; + case 4: + if (temp_r31->unk00 >= 0 && temp_r31->unk00 < 10) { + float sp394[] = { + 0.0f, 0.0f, 0.0f, 0.9f, 0.9f, 0.9f, + 1.75f, 1.75f, 1.75f, 0.0f, 0.0f, 0.0f + }; + s32 sp364[] = { + 42, 42, 42, 41, 41, 41, + 48, 48, 48, 27, 27, 27 + }; + + if (temp_r31->unk00 >= 6 && temp_r31->unk00 <= 8) { + temp_f29 = temp_r31->unk08; + temp_f27 = (temp_f29 <= 1.0f) ? 0.0 + : (temp_f29 >= 30.0f && temp_f29 < 40.0f) ? -1.0 * (1.0 - (temp_f29 - 30.0f) / 9.0) + : (temp_f29 >= 40.0f) ? 1.0 - (temp_f29 - 40.0f) / 8.0 + : 1.0; + temp_f27 = (temp_f29 >= 40.0f) + ? -1.0 + (temp_f27 * 0.5 + temp_f27 * temp_f27 * 0.5) + : temp_f27; + temp_f27 = (temp_f29 <= 1.0f) ? 0.0 + : (temp_f29 < 23.0f) ? 1.0 + : (temp_f29 < 32.0f) ? 0.5 + : (temp_f29 < 40.0f) ? -0.8 + : (-1.0 - 0.4 * (1.0 - (temp_f29 - 40.0f) / 8.0)); + temp_r31->unk14 -= (lbl_1_bss_4 * sp394[temp_r31->unk00] / 4.0) * temp_f27; + } else { + temp_r31->unk14 -= lbl_1_bss_4 * sp394[temp_r31->unk00] / 4.0; + } + if (temp_r31->unk08 >= sp364[temp_r31->unk00]) { + temp_r31->unk10 = 0.0f; + temp_r31->unk04 = 5; + temp_r31->unk08 = 0; + } + } else { + temp_r31->unk1C -= 1.0f; + temp_r31->unk10 += temp_r31->unk1C; + temp_r31->unk14 += 1.25 * lbl_1_bss_4; + if (temp_r31->unk10 <= 0.0f) { + if (temp_r31->unk1C < -10.0f && temp_r31->unk00 == 10) { + temp_r31->unk1C = 9.0f; + } else { + temp_r31->unk1C = 0.0f; + temp_r31->unk10 = 0.0f; + temp_r31->unk04 = 5; + temp_r31->unk08 = 0; + } + } + } + Hu3DModelPosSet(arg0->model[var_r25], + temp_r31->unk0C, + lbl_1_rodata_A0[temp_r31->unk00] + ((temp_r31->unk00 >= 0 && temp_r31->unk00 < 10) ? (300.0f + lbl_1_rodata_100[temp_r31->unk00]) : temp_r31->unk10), + temp_r31->unk14 + lbl_1_rodata_D0[temp_r31->unk00]); + if (temp_r31->unk00 >= 10) { + Hu3DModelRotSet(arg0->model[var_r25], 0.0f, temp_r31->unk24, 0.0f); + } + break; + case 1: + temp_f20 = temp_r31->unk08 / 90.0; + temp_f23 = 1.0f - temp_f20; + sp214 = temp_r31->unk0C; + sp210 = temp_r31->unk10; + sp20C = temp_r31->unk14; + temp_r31->unk0C = (460.0f + 1135.0f * temp_f23) * (temp_r31->unk0C < 0.0f ? -1 : 1); + temp_r31->unk10 = 100.0f * temp_f20 + 500.0f * temp_f23; + temp_r31->unk14 = 800.0f - 695.0f * temp_f23; + temp_r31->unk18 = temp_r31->unk0C - sp214; + temp_r31->unk1C = temp_r31->unk10 - sp210; + temp_r31->unk20 = temp_r31->unk14 - sp20C; + if (temp_r31->unk08 >= 90) { + temp_r31->unk04 = 2; + temp_r31->unk08 = 0; + } + Hu3DModelPosSet(arg0->model[var_r25], + temp_r31->unk0C, + temp_r31->unk10 + lbl_1_rodata_A0[temp_r31->unk00], + temp_r31->unk14 + lbl_1_rodata_D0[temp_r31->unk00]); + Hu3DModelRotSet(arg0->model[var_r25], + 9.0f, + (temp_r31->unk0C < 0.0f) ? -31 : 31, + (temp_r31->unk0C < 0.0f) ? -18 : 18); + break; + case 2: + temp_r31->unk1C -= (temp_r31->unk00 != 9) ? 0.625 : 0.9; + temp_r31->unk0C += temp_r31->unk18; + temp_r31->unk10 += temp_r31->unk1C; + temp_r31->unk14 += temp_r31->unk20; + if (temp_r31->unk10 <= lbl_1_rodata_100[temp_r31->unk00]) { + temp_r31->unk10 = -lbl_1_rodata_100[temp_r31->unk00]; + temp_r31->unk1C = 0.0f; + temp_r31->unk04 = 6; + temp_r31->unk08 = 0; + Hu3DModelPosSet(arg0->model[var_r25], + temp_r31->unk0C, + temp_r31->unk10 + lbl_1_rodata_A0[temp_r31->unk00] + lbl_1_rodata_100[temp_r31->unk00] + lbl_1_rodata_100[temp_r31->unk00], + temp_r31->unk14 + lbl_1_rodata_D0[temp_r31->unk00]); + Hu3DModelRotSet(arg0->model[var_r25], 0.0f, (temp_r31->unk0C < 0.0f) ? -31 : 31, 0.0f); + } else { + Hu3DModelPosSet(arg0->model[var_r25], + temp_r31->unk0C, + temp_r31->unk10 + lbl_1_rodata_A0[temp_r31->unk00], + temp_r31->unk14 + lbl_1_rodata_D0[temp_r31->unk00]); + } + break; + case 7: + temp_r31->unk1C -= 1.0f; + temp_r31->unk10 += temp_r31->unk1C; + temp_r31->unk14 += (temp_r31->unk00 >= 10) ? lbl_1_bss_0 : 0.0f; + if (temp_r31->unk10 <= -800.0f) { + Hu3DModelAttrSet(arg0->model[var_r25], 1); + if (temp_r31->unk00 == 9) { + Hu3DMotionSet(arg0->model[var_r25], arg0->motion[j + 22]); + Hu3DMotionTimeSet(arg0->model[var_r25], 0.0f); + Hu3DMotionSpeedSet(arg0->model[var_r25], 2.0f); + } + temp_r31->unk04 = 0; + } + Hu3DModelPosSet(arg0->model[var_r25], + temp_r31->unk0C, + (temp_r31->unk00 >= 0 && temp_r31->unk00 < 9) ? (300.0f + lbl_1_rodata_100[temp_r31->unk00]) : temp_r31->unk10, + temp_r31->unk14 + lbl_1_rodata_D0[temp_r31->unk00]); + Hu3DModelPosSet(arg0->model[var_r25], temp_r31->unk0C, temp_r31->unk10, temp_r31->unk14); + if (temp_r31->unk00 >= 10) { + Hu3DModelRotSet(arg0->model[var_r25], 0.0f, temp_r31->unk24, 0.0f); + } + break; + } + if (temp_r31->unk00 >= 0 && temp_r31->unk00 <= 8 && (temp_r31->unk04 == 4 || temp_r31->unk04 == 5)) { + sp208 = Hu3DMotionTimeGet(arg0->model[var_r25]); + if (temp_r31->unk00 >= 0 && temp_r31->unk00 <= 2 && (sp208 == 26 || sp208 == -41) && lbl_1_bss_54[3].unk00 < 3) { + lbl_1_bss_54[3].unk04[lbl_1_bss_54[3].unk00] = 0.0f; + lbl_1_bss_54[3].unk00++; + } + if (temp_r31->unk00 >= 3 && temp_r31->unk00 <= 5 && (sp208 == 23 || sp208 == -39) && lbl_1_bss_54[2].unk00 < 3) { + lbl_1_bss_54[2].unk04[lbl_1_bss_54[2].unk00] = 0.0f; + lbl_1_bss_54[2].unk00++; + } + if (temp_r31->unk00 >= 6 && temp_r31->unk00 <= 8 && (sp208 == 20 || sp208 == -29) && lbl_1_bss_54[1].unk00 < 3) { + lbl_1_bss_54[1].unk04[lbl_1_bss_54[1].unk00] = 0.0f; + lbl_1_bss_54[1].unk00++; + } + } + if (i == 9 && lbl_1_bss_18 != 0) { + ModelData* sp204 = &Hu3DData[arg0->model[j + 39]]; + ParticleData* sp200 = sp204->unk_120; + + if (sp200->unk_34 == 63) { + ModelData* temp_r23 = &Hu3DData[arg0->model[var_r25]]; + ModelData* temp_r22 = &Hu3DData[arg0->model[j + 39]]; + + temp_r22->pos.x = temp_r23->pos.x; + temp_r22->pos.y = temp_r23->pos.y; + temp_r22->pos.z = temp_r23->pos.z; + temp_r22->rot.x = temp_r23->rot.x; + temp_r22->rot.y = temp_r23->rot.y; + temp_r22->rot.z = temp_r23->rot.z; + } + } + if (temp_r31->unk2C == 0 && (lbl_1_bss_34 == 1004 || lbl_1_bss_34 == 1005)) { + if (temp_r31->unk00 != 9 + || (temp_r31->unk04 != 1 && temp_r31->unk04 != 2 && ((temp_r31->unk04 != 3 && temp_r31->unk04 != 6) || sp354[j]->unk20 > 5 || sp354[j]->unk20 < 3))) + { + temp_r31->unk2C = 1; + } + } + temp_r31->unk2C += (temp_r31->unk2C > 0); + if (temp_r31->unk2C != 0 && (temp_r31->unk2C % 2 == 0 || temp_r31->unk2C > 25)) { + Hu3DModelAttrSet(arg0->model[var_r25], 1); + } else { + Hu3DModelAttrReset(arg0->model[var_r25], 1); + } + } + } + } + for (i = 0; i < 11; i++) { + if (lbl_1_data_1878[i] == 1) { + Hu3DMotionShiftSet(arg0->model[i + 8], arg0->motion[0], 0.0f, 60.0f, HU3D_MOTATTR_LOOP); + } + lbl_1_data_1878[i] -= (lbl_1_data_1878[i] > 0); + } + lbl_1_data_18A4[0] -= (lbl_1_data_18A4[0] > 0); + lbl_1_data_18A4[1] -= (lbl_1_data_18A4[1] > 0); + for (i = 0; i < 3; i++) { + for (j = 0; j < 8; j++) { + s32 sp1FC = lbl_1_bss_104[i][j].unk00 + 21; + + lbl_1_bss_104[i][j].unk04++; + if (lbl_1_bss_104[i][j].unk04 >= 520) { + if (lbl_1_bss_104[i][j].unk00 != -1) { + Hu3DModelAttrReset(arg0->model[lbl_1_bss_104[i][j].unk00 + 21], 1); + } + lbl_1_bss_104[i][j].unk04 = 0; + lbl_1_bss_104[i][j].unk00 = -1; + for (sp230 = 0; sp230 < 14; sp230++) { + s32 sp1F8; + s32 sp1F4 = rand8() % 18; + + for (sp1F8 = 0; sp1F8 < 24; sp1F8++) { + if (sp1F4 == lbl_1_bss_104[sp1F8 / 8][sp1F8 % 8].unk00) { + break; + } + } + if (sp1F8 == 24) { + lbl_1_bss_104[i][j].unk00 = sp1F4; + break; + } + } + if (lbl_1_bss_104[i][j].unk00 != -1) { + Hu3DModelAttrReset(arg0->model[lbl_1_bss_104[i][j].unk00 + 21], 1); + } + } + sp1FC = lbl_1_bss_104[i][j].unk00 + 21; + temp_f22 = lbl_1_bss_104[i][j].unk04 / 520.0f; + if (lbl_1_bss_104[i][j].unk00 != -1) { + switch (i) { + case 0: + Hu3DModelPosSet(arg0->model[sp1FC], 2000.0f - 4000.0f * temp_f22, -490.0f, 1000.0f); + break; + case 1: + Hu3DModelPosSet(arg0->model[sp1FC], -1200.0f, -290.0f, 2000.0f - 4000.0f * temp_f22); + break; + case 2: + Hu3DModelPosSet(arg0->model[sp1FC], 1200.0f, -290.0f, 2000.0f - 4000.0f * temp_f22); + break; + } + } + } + } + for (i = 0; i < 2; i++) { + espBankSet(lbl_1_data_40[i * 7 + 2], lbl_1_data_18F4[i] % 10); + espBankSet(lbl_1_data_40[i * 7 + 3], (lbl_1_data_18F4[i] / 10) % 10); + } + for (i = 0; i < 4; i++) { + ModelData* temp_r24 = &Hu3DData[lbl_1_bss_3C[i]->model[0]]; + float temp_f19 = 0.0f; + float sp1F0 = (temp_r24->unk_08 == lbl_1_bss_3C[i]->motion[3]) ? 0 : -1; + float sp1EC = (temp_r24->unk_0C == lbl_1_bss_3C[i]->motion[3]) ? 0 : -1; + float sp1E8 = (sp1F0 == -1.0f) ? 0.0f + : (temp_r24->unk_64 < 4.0f) ? 0.0f + : (temp_r24->unk_64 > 28.0f) ? 1.0f + : (temp_r24->unk_64 - 4.0f) / 24.0f; + float sp1E4 = (sp1EC == -1.0f) ? 0.0f + : (temp_r24->unk_84 < 4.0f) ? 0.0f + : (temp_r24->unk_84 > 28.0f) ? 1.0f + : (temp_r24->unk_84 - 4.0f) / 24.0f; + float temp_f18 = (temp_r24->unk_0C == -1) ? 0.0f + : (temp_r24->unk_80 == 0.0f) ? 1.0f + : (temp_r24->unk_7C / temp_r24->unk_80); + + temp_f19 = sp1E8 * (1.0f - temp_f18) + sp1E4 * temp_f18; + if (!(temp_r24->attr & 1) && sp354[i]->unk20 != 3 && sp354[i]->unk20 != 4 && lbl_1_bss_3C[i]->trans.z < 1400.0f) { + Hu3DModelAttrReset(lbl_1_bss_3C[i]->model[1], 1); + Hu3DModelPosSet(lbl_1_bss_3C[i]->model[1], + lbl_1_bss_3C[i]->trans.x, + (lbl_1_bss_3C[i]->trans.z < 620.0f) ? 5 : -295, + lbl_1_bss_3C[i]->trans.z - 165.0f * temp_f19); + Hu3DModelScaleSet(lbl_1_bss_3C[i]->model[1], + 0.75 * (sp354[i]->unk08 == 5 ? 1.25 : 1.0), + 1.0f, + 1.25 * (sp354[i]->unk08 == 5 ? 1.25 : 1.0)); + } else { + Hu3DModelAttrSet(lbl_1_bss_3C[i]->model[1], 1); + } + } +} + +void fn_1_89E0(omObjData* arg0) { + StructBss3CData* spC[4]; + s32 sp8; + s32 var_r29; + s32 var_r30; + s32 i; + + for (i = 0; i < 4; i++) { + spC[i] = lbl_1_bss_3C[i]->data; + } + for (i = 0; i < 11; i++) { + s32 sp1C[] = { + 0x60A, 0x60B, 0x60C, + 0x60D, 0x60E, 0x60F, + 0x611, 0x610, 0x007, + 0x013, 0x612 + }; + + if (lbl_1_bss_54[i].unk00 > 3) { + lbl_1_bss_54[i].unk00 = 3; + } + if (lbl_1_bss_54[i].unk00 > 0) { + sp8 = HuAudFXPlay(sp1C[i]); + lbl_1_bss_54[i].unk00--; + } + } + if (omSysExitReq != 0 && WipeStatGet() == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_B480; + } + switch (lbl_1_bss_34) { + case 1000: + lbl_1_bss_8 += 1.0f; + if (lbl_1_bss_8 == 5.0f) { + lbl_1_data_18B0 = HuAudFXPlay(0x609); + } + if (WipeStatGet() == 0) { + lbl_1_bss_34++; + lbl_1_bss_8 = 0.0f; + } + break; + case 1001: + lbl_1_bss_8 += 1.0f; + if (180.0f < lbl_1_bss_8) { + lbl_1_bss_34++; + lbl_1_bss_8 = 0.0f; + } + break; + case 1002: + lbl_1_bss_8 += 1.0f; + if (lbl_1_bss_8 == 5.0f && lbl_1_bss_2E < 0) { + lbl_1_bss_2E = MGSeqStartCreate(); + } + if (lbl_1_bss_8 >= 5.0f && lbl_1_data_18AC == -1 && (MGSeqStatGet(lbl_1_bss_2E) & 0x10)) { + lbl_1_data_18AC = HuAudSeqPlay(0x47); + } + if (lbl_1_bss_8 >= 5.0f && MGSeqStatGet(lbl_1_bss_2E) == 0 && lbl_1_bss_2E >= 0) { + lbl_1_bss_34++; + lbl_1_bss_28 = 1800; + lbl_1_bss_2C = MGSeqTimerCreate(lbl_1_bss_28 / 60); + lbl_1_bss_2E = -1; + lbl_1_bss_8 = 0.0f; + for (i = 0; i < 16; i++) { + espDispOn(lbl_1_data_40[i]); + } + for (i = 0; i < 4; i++) { + spC[i]->unk20 = 1; + } + } + break; + case 1003: + lbl_1_bss_8 += 1.0f; + MGSeqParamSet(lbl_1_bss_2C, 1, (lbl_1_bss_28 + 58) / 60); + lbl_1_bss_28--; + if (lbl_1_bss_28 <= 0) { + lbl_1_bss_34 = 1004; + lbl_1_bss_8 = 0.0f; + lbl_1_bss_20 = 4; + } + break; + case 1004: + if (lbl_1_bss_2E < 0 && lbl_1_bss_8 == 0.0f) { + MGSeqParamSet(lbl_1_bss_2C, 2, -1); + lbl_1_bss_2E = MGSeqFinishCreate(); + if (lbl_1_data_18AC != -1) { + HuAudSeqFadeOut(lbl_1_data_18AC, 100); + } + } else { + var_r29 = 0; + var_r30 = 0; + for (i = 0; i < 4; i++) { + if (spC[i]->unk20 == 1 || (spC[i]->unk20 >= 2 && spC[i]->unk20 <= 5)) { + var_r29++; + } + if (i == 0 && ((spC[0]->unk20 >= 2 && spC[0]->unk20 <= 4) || (spC[0]->unk20 == 4 && lbl_1_data_F0[9][0].unk14 < 70.0f))) { + var_r30++; + } else if (i != 0 && spC[i]->unk20 >= 2 && spC[i]->unk20 <= 4) { + var_r30++; + } + } + if (MGSeqStatGet(lbl_1_bss_2E) == 0 + && ((lbl_1_bss_8 >= 150.0f && var_r29 == 0 && var_r30 == 0) + || (lbl_1_bss_8 >= 240.0f && var_r30 == 0) + || lbl_1_bss_8 >= 360.0f)) + { + lbl_1_bss_34++; + lbl_1_bss_8 = 0.0f; + GWPlayerCoinCollectSet(spC[0]->unk04, lbl_1_data_18F4[0]); + GWPlayerCoinCollectSet(spC[1]->unk04, lbl_1_data_18F4[1]); + GWPlayerCoinCollectSet(spC[2]->unk04, lbl_1_data_18F4[1]); + GWPlayerCoinCollectSet(spC[3]->unk04, lbl_1_data_18F4[1]); + if (lbl_1_data_18F4[0] == 0 && lbl_1_data_18F4[1] == 0) { + HuAudSStreamPlay(4); + } else { + HuAudSStreamPlay(1); + } + } + } + lbl_1_bss_8 += 1.0f; + break; + case 1005: + lbl_1_bss_8 += 1.0f; + if (210.0f < lbl_1_bss_8) { + HuAudFXStop(lbl_1_data_18B0); + lbl_1_bss_2E = -1; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_B480; + } + break; + default: + OSReport("*** main mode error(%d)!!\n", lbl_1_bss_34); + break; + } +} + +void fn_1_9410(ModelData* model, ParticleData* particle, Mtx matrix) { + HsfanimStruct01* var_r31; + float temp_f31; + float temp_f30; + s16 i; + + if (particle->unk_34 < 50) { + var_r31 = particle->unk_48; + for (i = 0; i < particle->unk_30; i++, var_r31++) { + var_r31->unk00_s16 = particle->unk_34 + 41; + var_r31->unk40.a = 0; + var_r31->unk2C = 0.0f; + } + } + if (particle->unk_34 >= 255) { + var_r31 = particle->unk_48; + for (i = 0; i < particle->unk_30; i++, var_r31++) { + var_r31->unk00_s16 = 255; + var_r31->unk40.a = 0; + var_r31->unk2C = 0.0f; + } + } + var_r31 = particle->unk_48; + for (i = 0; i < particle->unk_30; i++, var_r31++) { + if (!var_r31->unk2C) { + break; + } + } + var_r31 = particle->unk_48; + for (i = 0; i < particle->unk_30; i++, var_r31++) { + if (var_r31->unk00_s16 == 104) { + var_r31->unk34.x = var_r31->unk34.z = 0.0f; + var_r31->unk34.y = 72.0f; + temp_f31 = frandu8() * 360 / 256; + temp_f30 = 0.5 + (rand8() / 256.0) * 1.5; + var_r31->unk34.x = 75.0 * sind(temp_f31); + var_r31->unk34.z = 75.0 * cosd(temp_f31); + var_r31->unk08.x = temp_f30 * sind(temp_f31) * 2.0; + var_r31->unk08.y = 3.0 + (rand8() / 256.0) * 1.5; + var_r31->unk08.z = temp_f30 * cosd(temp_f31) * 2.0; + var_r31->unk40.r = 0xFF; + var_r31->unk40.g = 0xFF; + var_r31->unk40.b = 0xFF; + var_r31->unk40.a = 0x60; + var_r31->unk2C = 50.0f; + PSVECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); + } + if (var_r31->unk00_s16 < 240) { + 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 * 16 / 17; + var_r31->unk08.z *= 0.99f; + var_r31->unk2C += 2.0f; + if (var_r31->unk2C <= 0.0f) { + var_r31->unk2C = 0.0f; + } + if (var_r31->unk40.a <= 3) { + var_r31->unk40.a = 0; + var_r31->unk2C = 0.0f; + } + } + var_r31->unk00_s16 += (var_r31->unk00_s16 < 0x8000); + } +} + +void fn_1_9900(omObjData* arg0) { + s32 temp_r28; + s32 i; + s32 j; + s32 k; + + arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 18)); + omSetTra(arg0, 0.0f, 0.0f, 0.0f); + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 17)); + Hu3DModelPosSet(arg0->model[1], 0.0f, 300.0f, -100.0f); + Hu3DModelAttrSet(arg0->model[1], HU3D_MOTATTR_LOOP); + Hu3DModelLayerSet(arg0->model[1], 0); + Hu3DMotionSpeedSet(arg0->model[1], 1.5f); + arg0->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 16)); + Hu3DModelPosSet(arg0->model[3], 0.0f, 0.0f, 0.0f); + Hu3DModelAttrSet(arg0->model[3], HU3D_MOTATTR_LOOP); + Hu3DModelLayerSet(arg0->model[3], 0); + Hu3DMotionSpeedSet(arg0->model[3], 1.5f); + arg0->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 19)); + Hu3DModelAttrSet(arg0->model[4], HU3D_MOTATTR_LOOP); + arg0->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 20)); + Hu3DModelPosSet(arg0->model[5], 460.0f, 0.0f, 800.0f); + Hu3DModelAttrReset(arg0->model[5], HU3D_MOTATTR_LOOP); + Hu3DMotionTimeSet(arg0->model[5], Hu3DMotionMaxTimeGet(arg0->model[5])); + arg0->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 21)); + Hu3DModelPosSet(arg0->model[6], -460.0f, 0.0f, 800.0f); + Hu3DModelAttrReset(arg0->model[6], HU3D_MOTATTR_LOOP); + Hu3DMotionTimeSet(arg0->model[6], Hu3DMotionMaxTimeGet(arg0->model[6])); + arg0->model[7] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 22)); + Hu3DModelAttrSet(arg0->model[7], HU3D_MOTATTR_LOOP); + arg0->model[8] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 23)); + arg0->motion[0] = Hu3DJointMotionFile(arg0->model[8], DATA_MAKE_NUM(DATADIR_M422, 24)); + arg0->motion[11] = Hu3DJointMotionFile(arg0->model[8], DATA_MAKE_NUM(DATADIR_M422, 25)); + for (i = 0; i < 11; i++) { + if (i != 0) { + arg0->model[i + 8] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 23)); + arg0->motion[i] = Hu3DJointMotionFile(arg0->model[i + 8], DATA_MAKE_NUM(DATADIR_M422, 24)); + arg0->motion[i + 11] = Hu3DJointMotionFile(arg0->model[i + 8], DATA_MAKE_NUM(DATADIR_M422, 25)); + } + Hu3DModelPosSet(arg0->model[i + 8], i * 100 - 500, 550.0f, 0.0f); + Hu3DMotionSet(arg0->model[i + 8], arg0->motion[0]); + Hu3DModelAttrSet(arg0->model[i + 8], HU3D_MOTATTR_LOOP); + Hu3DModelAttrReset(arg0->model[i + 8], HU3D_MOTATTR_PAUSE); + Hu3DMotionTimeSet(arg0->model[i + 8], rand8() % (s32) Hu3DMotionMaxTimeGet(arg0->model[i + 8])); + } + arg0->model[19] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 26)); + Hu3DModelPosSet(arg0->model[19], 1800.0f, 0.0f, -22.0f); + Hu3DModelAttrSet(arg0->model[19], HU3D_MOTATTR_LOOP); + arg0->model[20] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 27)); + Hu3DModelPosSet(arg0->model[20], -1800.0f, 0.0f, -22.0f); + Hu3DModelAttrSet(arg0->model[20], HU3D_MOTATTR_LOOP); + for (i = 0; i < 10; i++) { + for (j = 0; j < 4; j++) { + s32 spD0[] = { + DATA_MAKE_NUM(DATADIR_M422, 41), + DATA_MAKE_NUM(DATADIR_M422, 42), + DATA_MAKE_NUM(DATADIR_M422, 43), + DATA_MAKE_NUM(DATADIR_M422, 44), + DATA_MAKE_NUM(DATADIR_M422, 45), + DATA_MAKE_NUM(DATADIR_M422, 46), + DATA_MAKE_NUM(DATADIR_M422, 47), + DATA_MAKE_NUM(DATADIR_M422, 48), + DATA_MAKE_NUM(DATADIR_M422, 49), + DATA_MAKE_NUM(DATADIR_M422, 30) + }; + s32 sp30[] = { + DATA_MAKE_NUM(DATADIR_M422, 30), + DATA_MAKE_NUM(DATADIR_M422, 31), + DATA_MAKE_NUM(DATADIR_M422, 32), + DATA_MAKE_NUM(DATADIR_M422, 33), + DATA_MAKE_NUM(DATADIR_M422, 34), + DATA_MAKE_NUM(DATADIR_M422, 35), + DATA_MAKE_NUM(DATADIR_M422, 37), + DATA_MAKE_NUM(DATADIR_M422, 36) + }; + + temp_r28 = i * 4 + 43 + j; + if (i == 9) { + StructBss3CData* var_r23 = lbl_1_bss_3C[j]->data; + + arg0->model[temp_r28] = Hu3DModelCreateFile(sp30[var_r23->unk08]); + } else if (j == 0) { + arg0->model[temp_r28] = Hu3DModelCreateFile(spD0[i]); + } else { + arg0->model[temp_r28] = Hu3DModelLink(arg0->model[temp_r28 - j]); + } + Hu3DModelAttrSet(arg0->model[temp_r28], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(arg0->model[temp_r28], HU3D_MOTATTR_LOOP); + Hu3DMotionTimeSet(arg0->model[temp_r28], 0.0f); + Hu3DMotionSpeedSet(arg0->model[temp_r28], (i != 9) ? 0.9375 : 1.0); + if (i == 9) { + arg0->motion[j + 22] = Hu3DJointMotionFile(arg0->model[temp_r28], DATA_MAKE_NUM(DATADIR_M422, 38)); + arg0->motion[j + 26] = Hu3DJointMotionFile(arg0->model[temp_r28], DATA_MAKE_NUM(DATADIR_M422, 39)); + arg0->motion[j + 30] = Hu3DJointMotionFile(arg0->model[temp_r28], DATA_MAKE_NUM(DATADIR_M422, 40)); + Hu3DMotionSet(arg0->model[temp_r28], arg0->motion[j + 22]); + Hu3DModelAttrSet(arg0->model[temp_r28], HU3D_MOTATTR_PAUSE); + } + } + if (i <= 8) { + for (k = 0; k < 2; k++) { + arg0->model[i * 2 + 21 + k] = Hu3DModelLink(arg0->model[i * 4 + 43]); + Hu3DModelAttrSet(arg0->model[i * 2 + 21 + k], HU3D_MOTATTR_LOOP | HU3D_MOTATTR_PAUSE); + } + } + } + for (i = 0; i < 2; i++) { + for (j = 0; j < 10; j++) { + s32 sp28[] = { + DATA_MAKE_NUM(DATADIR_M422, 28), + DATA_MAKE_NUM(DATADIR_M422, 29) + }; + + temp_r28 = i * 10 + 83 + j; + if (j == 0) { + arg0->model[temp_r28] = Hu3DModelCreateFile(sp28[i]); + } else { + arg0->model[temp_r28] = Hu3DModelLink(arg0->model[temp_r28 - j]); + } + Hu3DModelAttrSet(arg0->model[temp_r28], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(arg0->model[temp_r28], 1); + } + } + for (i = 0; i < 3; i++) { + for (j = 0; j < 8; j++) { + lbl_1_bss_104[i][j].unk04 = j * 520 / 8; + lbl_1_bss_104[i][j].unk00 = -1; + } + } + for (i = 0; i < 16; i++) { + s32 sp20[] = { 88, 473 }; + s32 sp18[] = { 78, 70 }; + s32 sp90[] = { 0, 0, 42, 22, -20, 2, -54, 0, 0, 55, 35, -7, 15, -51, -65, -37 }; + s32 sp50[] = { 0, 0, 1, 1, 1, 1, -2, 0, 0, 9, 9, 9, 9, -14, 10, 10 }; + + if (lbl_1_data_0[i] == DATA_MAKE_NUM(DATADIR_MGCONST, 12) || lbl_1_data_0[i] == DATA_MAKE_NUM(DATADIR_MGCONST, 0)) { + StructBss3CData* var_r22 = lbl_1_bss_3C[ + (i == 6) ? 0 + : (i == 13) ? 1 + : (i == 14) ? 2 : 3 + ]->data; + + lbl_1_data_40[i] = espEntry(lbl_1_data_0[i] + var_r22->unk08, 0, 0); + } else { + lbl_1_data_40[i] = espEntry(lbl_1_data_0[i], 0, 0); + } + espDrawNoSet(lbl_1_data_40[i], 0); + espDispOff(lbl_1_data_40[i]); + espAttrSet(lbl_1_data_40[i], 1); + espBankSet(lbl_1_data_40[i], 0); + espPriSet(lbl_1_data_40[i], 128 - i); + espPosSet(lbl_1_data_40[i], sp90[i] + sp20[i < 7 ? 0 : 1], sp50[i] + sp18[i < 7 ? 0 : 1]); + switch (i >= 7 ? i - 7 : i) { + case 0: + espTPLvlSet(lbl_1_data_40[i], 0.5f); + espColorSet(lbl_1_data_40[i], 0, 0, 0); + break; + case 5: + espBankSet(lbl_1_data_40[i], 10); + break; + } + } + for (i = 0; i < 4; i++) { + s32 temp_r26 = i + 39; + + arg0->model[temp_r26] = Hu3DParticleCreate(HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_EFFECT, 3), MEMORY_DEFAULT_NUM)), 40); + Hu3DModelPosSet(arg0->model[temp_r26], 2000.0f, -2000.0f, -2000.0f); + Hu3DModelScaleSet(arg0->model[temp_r26], 1.0f, 1.0f, 1.0f); + Hu3DModelLayerSet(arg0->model[temp_r26], 3); + Hu3DModelAttrReset(arg0->model[temp_r26], 1); + Hu3DParticleColSet(arg0->model[temp_r26], 0xFF, 0xFF, 0xFF); + Hu3DParticleScaleSet(arg0->model[temp_r26], 5.0f); + Hu3DParticleHookSet(arg0->model[temp_r26], fn_1_9410); + Hu3DParticleCntSet(arg0->model[temp_r26], 45); + } + for (i = 0; i < 4; i++) { + s32 var_r27 = 9; + s32 temp_r24 = 43 + var_r27 * 4 + i; + + lbl_1_data_F0[var_r27][i].unk0C = lbl_1_data_18B4[i][0]; + lbl_1_data_F0[var_r27][i].unk10 = (i == 0 ? 300 : 0); + lbl_1_data_F0[var_r27][i].unk14 = (i == 0 ? 50 : 800); + lbl_1_data_F0[var_r27][i].unk00 = 9; + lbl_1_data_F0[var_r27][i].unk04 = (i == 0 ? 3 : 6); + lbl_1_data_F0[var_r27][i].unk08 = 0; + lbl_1_data_F0[var_r27][i].unk18 = lbl_1_data_F0[var_r27][i].unk1C = lbl_1_data_F0[var_r27][i].unk20 = 0.0f; + Hu3DMotionTimeSet(arg0->model[temp_r24], 0.0f); + Hu3DModelAttrSet(arg0->model[temp_r24], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(arg0->model[temp_r24], 1); + Hu3DModelRotSet(arg0->model[temp_r24], 0.0f, 0.0f, 0.0f); + } + arg0->func = fn_1_3B74; +} + +void fn_1_AC4C(omObjData* arg0) { + s32 sp8[] = { 0, 1, 2, 3 }; + StructBss3CData* temp_r31; + s32 var_r27; + s32 j; + s32 i; + + var_r27 = 0; + temp_r31 = arg0->data; + memset(temp_r31, 0, sizeof(*temp_r31)); + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) { + if (i == GWPlayerCfg[j].group) { + sp8[var_r27] = j; + var_r27++; + } + } + } + temp_r31->unk00 = arg0->work[0]; + temp_r31->unk04 = sp8[temp_r31->unk00]; + if (temp_r31->unk04 == 4) { + OSReport("m422:wrong player group\n"); + temp_r31->unk04 = temp_r31->unk00; + } + temp_r31->unk08 = GWPlayerCfg[temp_r31->unk04].character; + temp_r31->unk0C = (GWPlayerCfg[temp_r31->unk04].iscom ? -1 : GWPlayerCfg[temp_r31->unk04].pad_idx); + temp_r31->unk10 = (temp_r31->unk0C != -1) ? 0 : GWPlayerCfg[temp_r31->unk04].diff; + temp_r31->unk14 = rand8(); + temp_r31->unk20 = 0; + arg0->model[0] = CharModelCreate(temp_r31->unk08, temp_r31->unk00 == 0 ? 2 : 2); + Hu3DModelLayerSet(arg0->model[0], 1); + Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(arg0->model[0], 1); + arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M422, 50)); + Hu3DModelPosSet(arg0->model[1], 0.0f, 0.0f, 0.0f); + Hu3DModelLayerSet(arg0->model[1], 0); + temp_r31->unk18 = 0; + temp_r31->unk1C = -1; + for (i = 0; i < 8; i++) { + arg0->motion[i] = CharModelMotionCreate(temp_r31->unk08, lbl_1_data_A0[i] + (lbl_1_data_C0[i] != 0 ? temp_r31->unk08 : 0)); + } + CharModelVoiceEnableSet(temp_r31->unk08, arg0->motion[6], 0); + Hu3DMotionSet(arg0->model[0], arg0->motion[3]); + arg0->trans.x = lbl_1_data_18B4[temp_r31->unk00][0]; + arg0->trans.y = lbl_1_data_18B4[temp_r31->unk00][1]; + arg0->trans.z = lbl_1_data_18B4[temp_r31->unk00][2]; + arg0->rot.y = lbl_1_data_18B4[temp_r31->unk00][3]; + arg0->scale.x = arg0->scale.y = arg0->scale.z = 1.0f; + arg0->rot.x = arg0->rot.z = 0.0f; + arg0->func = fn_1_2FC; +} + +void fn_1_B004(omObjData* arg0) { + lbl_1_bss_34 = 1000; + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + arg0->func = fn_1_89E0; +} + +void ObjectSetup(void) { + omObjData* var_r30; + s32 i; + + OSReport("******* M422 ObjectSetup *********\n"); + HuAudSndGrpSet(47); + lbl_1_bss_30 = omInitObjMan(600, 0x2000); + omGameSysInit(lbl_1_bss_30); + 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 = 1676.6f; + Center.x = 690.0f; + Center.y = 1340.0f; + Center.z = 1380.0f; + CRot.x = -50.8125f; + CRot.y = 40.0f; + CRot.z = 0.0f; + CZoom = 2126.6f; + Center.x = 700.0f; + Center.y = 870.0f; + Center.z = 1320.0f; + CRot.x = -37.25f; + CRot.y = 40.0f; + CRot.z = 0.0f; + { + Vec sp18 = { -822.5f, 6743.0f, 4625.5f }; + Vec spC = { 0.1545085f, -0.788462f, -0.5850064f }; + GXColor sp8 = { 0xFF, 0xFF, 0xFF, 0xFF }; + + lbl_1_bss_24 = Hu3DGLightCreateV(&sp18, &spC, &sp8); + } + Hu3DGLightStaticSet(lbl_1_bss_24, 1); + Hu3DGLightInfinitytSet(lbl_1_bss_24); + lbl_1_bss_2E = -1; + lbl_1_bss_20 = -1; + lbl_1_bss_38 = omAddObjEx(lbl_1_bss_30, 101, 103, 34, 1, fn_1_9900); + for (i = 0; i < 4; i++) { + var_r30 = lbl_1_bss_3C[i] = omAddObjEx(lbl_1_bss_30, 100, 2, 8, 0, fn_1_AC4C); + var_r30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(StructBss3CData), MEMORY_DEFAULT_NUM); + var_r30->work[0] = i; + } + lbl_1_bss_4C = omAddObjEx(lbl_1_bss_30, 0x7FDA, 0, 0, -1, omOutView); + lbl_1_bss_50 = omAddObjEx(lbl_1_bss_30, 102, 0, 0, -1, fn_1_B004); +} + +void fn_1_B480(omObjData* arg0) { + StructBss3CData* var_r30; + s32 i; + + if (WipeStatGet() == 0) { + for (i = 0; i < 4; i++) { + var_r30 = lbl_1_bss_3C[i]->data; + CharModelKill(var_r30->unk08); + } + if (lbl_1_bss_2E >= 0) { + MGSeqKill(lbl_1_bss_2E); + } + MGSeqKillAll(); + HuAudAllStop(); + omOvlReturnEx(1, 1); + } +}