diff --git a/config/GMPE01_00/rels/E3setupDLL/symbols.txt b/config/GMPE01_00/rels/E3setupDLL/symbols.txt index aabb4f0e..67dc878c 100644 --- a/config/GMPE01_00/rels/E3setupDLL/symbols.txt +++ b/config/GMPE01_00/rels/E3setupDLL/symbols.txt @@ -148,7 +148,7 @@ lbl_2_data_31E = .data:0x0000031E; // type:object size:0x8 playerCntMessTbl = .data:0x00000328; // type:object size:0x10 scope:local charPosTbl = .data:0x00000338; // type:object size:0x40 scope:local data:float charComSfxTbl = .data:0x00000378; // type:object size:0x20 scope:local -lbl_2_data_398 = .data:0x00000398; // type:object size:0xE scope:local data:string +lbl_2_data_398 = .data:0x00000398; // type:object size:0x10 scope:local data:string charSpriteTbl = .data:0x000003A8; // type:object size:0x20 scope:local cursorSpriteTbl = .data:0x000003C8; // type:object size:0x14 scope:local hiliteSprTbl = .data:0x000003DC; // type:object size:0x14 scope:local diff --git a/config/GMPE01_00/rels/m408Dll/symbols.txt b/config/GMPE01_00/rels/m408Dll/symbols.txt index 9d09ad6b..aeb6eba8 100644 --- a/config/GMPE01_00/rels/m408Dll/symbols.txt +++ b/config/GMPE01_00/rels/m408Dll/symbols.txt @@ -117,351 +117,351 @@ fn_1_15D64 = .text:0x00015D64; // type:function size:0x568 fn_1_162CC = .text:0x000162CC; // type:function size:0xFC _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:0xC data:4byte -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0xC data:4byte -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 data:double -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x10 data:4byte -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x30 data:4byte -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x10 data:4byte -lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 data:float -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 data:double -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 data:double -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float -lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float -lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 data:double -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float -lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float -lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x20 data:4byte -lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x38 data:4byte -lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 data:double -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 data:double -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x8 data:float -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float -lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float -lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float -lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float -lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float -lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float -lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 data:double -lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double -lbl_1_rodata_300 = .rodata:0x00000300; // type:object size: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_314 = .rodata:0x00000314; // type:object size:0x4 data:float -lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float -lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 data:float -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_35C = .rodata:0x0000035C; // type:object size:0x4 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float -lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 data:float -lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float -lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float -lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float -lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 data:float -lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 data:float -lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 data:float -lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 data:float -lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float -lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float -lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float -lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 data:float -lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 data:float -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float -lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x8 data:double -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x48 -lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 data:float -lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float -lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float -lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float -lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float -lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float -lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float -lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float -lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 data:float -lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float -lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 data:float -lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x10 data:4byte -lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x10 data:4byte -lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x28 data:2byte -lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float -lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x10 data:4byte -lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x10 data:4byte -lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float -lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float -lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float -lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x8 data:float -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float -lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float -lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 data:float -lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 data:float -lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 data:float -lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 data:float -lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float -lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float -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:0x8 data:double -lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 data:float -lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 data:float -lbl_1_rodata_510 = .rodata:0x00000510; // type:object size: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:0x4 data:float -lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 data:float -lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 data:float -lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 data:float -lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x4 data:float -lbl_1_rodata_534 = .rodata:0x00000534; // type:object size:0x4 data:float -lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 data:float -lbl_1_rodata_53C = .rodata:0x0000053C; // type:object size:0x4 data:float -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:0x4 data:float -lbl_1_rodata_554 = .rodata:0x00000554; // type:object size:0x4 data:float -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:0x8 data:double -lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 data:float -lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 data:float -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:0x8 data:double -lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x8 data:double -lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x4 data:float -lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x8 data:double -lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x8 data:double -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:0x4 data:float -lbl_1_rodata_5C4 = .rodata:0x000005C4; // type:object size:0x4 data:float -lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x4 data:float -lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x8 data:double -lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x8 data:double -lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x8 data:double -lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x4 data:float -lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x8 data:double -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:0x4 data:float -lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x8 data:double -lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x8 data:double -lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x8 data:double -lbl_1_rodata_628 = .rodata:0x00000628; // type:object size:0x4 data:float -lbl_1_rodata_630 = .rodata:0x00000630; // type:object size:0x8 data:double -lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x8 data:double -lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x8 data:double -lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x4 data:float -lbl_1_rodata_64C = .rodata:0x0000064C; // type:object size:0x4 data:float -lbl_1_rodata_650 = .rodata:0x00000650; // type:object size:0x8 data:double -lbl_1_rodata_658 = .rodata:0x00000658; // type:object size:0x4 data:float -lbl_1_rodata_65C = .rodata:0x0000065C; // type:object size:0x4 data:float -lbl_1_rodata_660 = .rodata:0x00000660; // type:object size:0x8 data:double -lbl_1_rodata_668 = .rodata:0x00000668; // type:object size:0x8 data:double -lbl_1_rodata_670 = .rodata:0x00000670; // type:object size:0x8 data:double -lbl_1_rodata_678 = .rodata:0x00000678; // type:object size:0x8 data:double -lbl_1_rodata_680 = .rodata:0x00000680; // type:object size:0x4 data:float -lbl_1_rodata_684 = .rodata:0x00000684; // type:object size:0x4 data:float -lbl_1_rodata_688 = .rodata:0x00000688; // type:object size:0x8 data:double -lbl_1_rodata_690 = .rodata:0x00000690; // type:object size:0x4 data:float -lbl_1_rodata_694 = .rodata:0x00000694; // type:object size:0x4 data:float -lbl_1_rodata_698 = .rodata:0x00000698; // type:object size:0x4 data:float -lbl_1_rodata_69C = .rodata:0x0000069C; // type:object size:0x4 data:float -lbl_1_rodata_6A0 = .rodata:0x000006A0; // type:object size:0x4 data:float -lbl_1_rodata_6A4 = .rodata:0x000006A4; // type:object size:0x4 data:float -lbl_1_rodata_6A8 = .rodata:0x000006A8; // type:object size:0x4 data:float -lbl_1_rodata_6B0 = .rodata:0x000006B0; // type:object size:0x8 data:double -lbl_1_rodata_6B8 = .rodata:0x000006B8; // type:object size:0x8 data:double -lbl_1_rodata_6C0 = .rodata:0x000006C0; // type:object size:0x4 data:float -lbl_1_rodata_6C4 = .rodata:0x000006C4; // type:object size:0x4 data:float -lbl_1_rodata_6C8 = .rodata:0x000006C8; // type:object size:0x4 data:float -lbl_1_rodata_6CC = .rodata:0x000006CC; // type:object size:0x4 data:float -lbl_1_rodata_6D0 = .rodata:0x000006D0; // type:object size:0x4 data:float -lbl_1_rodata_6D4 = .rodata:0x000006D4; // type:object size:0x4 data:float -lbl_1_rodata_6D8 = .rodata:0x000006D8; // type:object size:0x4 data:float -lbl_1_rodata_6DC = .rodata:0x000006DC; // type:object size:0x4 data:float -lbl_1_rodata_6E0 = .rodata:0x000006E0; // type:object size:0x8 data:double -lbl_1_rodata_6E8 = .rodata:0x000006E8; // type:object size:0x4 data:float -lbl_1_rodata_6EC = .rodata:0x000006EC; // type:object size:0x4 data:float -lbl_1_rodata_6F0 = .rodata:0x000006F0; // type:object size:0x4 data:float -lbl_1_rodata_6F4 = .rodata:0x000006F4; // type:object size:0x4 data:float -lbl_1_rodata_6F8 = .rodata:0x000006F8; // type:object size:0x4 data:float -lbl_1_rodata_6FC = .rodata:0x000006FC; // type:object size:0x4 data:float -lbl_1_rodata_700 = .rodata:0x00000700; // type:object size:0x8 data:double -lbl_1_rodata_708 = .rodata:0x00000708; // type:object size:0x8 data:double -lbl_1_rodata_710 = .rodata:0x00000710; // type:object size:0x4 data:float -lbl_1_rodata_718 = .rodata:0x00000718; // type:object size:0x8 data:double -lbl_1_rodata_720 = .rodata:0x00000720; // type:object size:0x8 data:double -lbl_1_rodata_728 = .rodata:0x00000728; // type:object size:0x4 data:float -lbl_1_rodata_72C = .rodata:0x0000072C; // type:object size:0x4 data:float -lbl_1_rodata_730 = .rodata:0x00000730; // type:object size:0x4 data:float -lbl_1_rodata_734 = .rodata:0x00000734; // type:object size:0x4 data:float -lbl_1_rodata_738 = .rodata:0x00000738; // type:object size:0x4 data:float -lbl_1_rodata_73C = .rodata:0x0000073C; // type:object size:0x4 data:float -lbl_1_rodata_740 = .rodata:0x00000740; // type:object size:0x4 data:float -lbl_1_rodata_744 = .rodata:0x00000744; // type:object size:0x4 data:float -lbl_1_rodata_748 = .rodata:0x00000748; // type:object size:0x8 data:double -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:0x8 data:double -lbl_1_rodata_760 = .rodata:0x00000760; // type:object size:0x4 data:float -lbl_1_rodata_764 = .rodata:0x00000764; // type:object size:0x4 data:float -lbl_1_rodata_768 = .rodata:0x00000768; // type:object size:0x4 data:float -lbl_1_rodata_76C = .rodata:0x0000076C; // type:object size:0x4 data:float -lbl_1_rodata_770 = .rodata:0x00000770; // type:object size:0x4 data:float -lbl_1_rodata_774 = .rodata:0x00000774; // type:object size:0x4 data:float -lbl_1_rodata_778 = .rodata:0x00000778; // type:object size:0x4 data:float -lbl_1_rodata_77C = .rodata:0x0000077C; // type:object size:0x4 data:float -lbl_1_rodata_780 = .rodata:0x00000780; // type:object size:0x4 data:float -lbl_1_rodata_784 = .rodata:0x00000784; // type:object size:0x4 data:float -lbl_1_rodata_788 = .rodata:0x00000788; // type:object size:0x8 data:double -lbl_1_rodata_790 = .rodata:0x00000790; // type:object size:0x4 data:float -lbl_1_rodata_794 = .rodata:0x00000794; // type:object size:0x4 data:float -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_7AC = .rodata:0x000007AC; // type:object size:0x4 data:float -lbl_1_rodata_7B0 = .rodata:0x000007B0; // type:object size:0x4 data:float -lbl_1_rodata_7B4 = .rodata:0x000007B4; // type:object size:0x4 data:float -lbl_1_rodata_7B8 = .rodata:0x000007B8; // type:object size:0x4 data:float -lbl_1_rodata_7BC = .rodata:0x000007BC; // type:object size:0x4 data:float -lbl_1_rodata_7C0 = .rodata:0x000007C0; // type:object size:0x8 data:double -lbl_1_rodata_7C8 = .rodata:0x000007C8; // type:object size:0x4 data:float -lbl_1_rodata_7CC = .rodata:0x000007CC; // type:object size:0x4 data:float -lbl_1_rodata_7D0 = .rodata:0x000007D0; // type:object size:0x4 data:float -lbl_1_rodata_7D8 = .rodata:0x000007D8; // type:object size:0x8 data:double -lbl_1_rodata_7E0 = .rodata:0x000007E0; // type:object size:0x8 data:double -lbl_1_rodata_7E8 = .rodata:0x000007E8; // type:object size:0x4 data:float -lbl_1_rodata_7EC = .rodata:0x000007EC; // type:object size:0x4 data:float -lbl_1_rodata_7F0 = .rodata:0x000007F0; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_94 = .rodata:0x00000094; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 scope:local data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x30 scope:local data:4byte +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_16C = .rodata:0x0000016C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 scope:local data:double +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 scope:local data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float +lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x20 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x38 scope:local data:float +lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x8 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size: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:0x8 scope:local data:double +lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_300 = .rodata:0x00000300; // type:object size: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_314 = .rodata:0x00000314; // type:object size:0x4 scope:local data:float +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 scope:local data:float +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_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float +lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float +lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float +lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float +lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float +lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 scope:local data:float +lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x48 scope:local data:float +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x10 scope:local data:4byte +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x28 scope:local data:2byte +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x10 scope:local data:float +lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x10 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x8 scope:local data:float +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D4 = .rodata:0x000004D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +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:0x8 scope:local data:double +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size: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:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 scope:local data:float +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_530 = .rodata:0x00000530; // type:object size:0x4 scope:local data:float +lbl_1_rodata_534 = .rodata:0x00000534; // type:object size:0x4 scope:local data:float +lbl_1_rodata_538 = .rodata:0x00000538; // type:object size:0x4 scope:local data:float +lbl_1_rodata_53C = .rodata:0x0000053C; // type:object size:0x4 scope:local data:float +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:0x4 scope:local data:float +lbl_1_rodata_554 = .rodata:0x00000554; // type:object size:0x4 scope:local data:float +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:0x8 scope:local data:double +lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 scope:local data:float +lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 scope:local data:float +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:0x8 scope:local data:double +lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x8 scope:local data:double +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:0x4 scope:local data:float +lbl_1_rodata_5C4 = .rodata:0x000005C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x8 scope:local data:double +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:0x4 scope:local data:float +lbl_1_rodata_610 = .rodata:0x00000610; // type:object size:0x8 scope:local data:double +lbl_1_rodata_618 = .rodata:0x00000618; // type:object size:0x8 scope:local data:double +lbl_1_rodata_620 = .rodata:0x00000620; // type:object size:0x8 scope:local data:double +lbl_1_rodata_628 = .rodata:0x00000628; // type:object size:0x4 scope:local data:float +lbl_1_rodata_630 = .rodata:0x00000630; // type:object size:0x8 scope:local data:double +lbl_1_rodata_638 = .rodata:0x00000638; // type:object size:0x8 scope:local data:double +lbl_1_rodata_640 = .rodata:0x00000640; // type:object size:0x8 scope:local data:double +lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64C = .rodata:0x0000064C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_650 = .rodata:0x00000650; // type:object size:0x8 scope:local data:double +lbl_1_rodata_658 = .rodata:0x00000658; // type:object size:0x4 scope:local data:float +lbl_1_rodata_65C = .rodata:0x0000065C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_660 = .rodata:0x00000660; // type:object size:0x8 scope:local data:double +lbl_1_rodata_668 = .rodata:0x00000668; // type:object size:0x8 scope:local data:double +lbl_1_rodata_670 = .rodata:0x00000670; // type:object size:0x8 scope:local data:double +lbl_1_rodata_678 = .rodata:0x00000678; // type:object size:0x8 scope:local data:double +lbl_1_rodata_680 = .rodata:0x00000680; // type:object size:0x4 scope:local data:float +lbl_1_rodata_684 = .rodata:0x00000684; // type:object size:0x4 scope:local data:float +lbl_1_rodata_688 = .rodata:0x00000688; // type:object size:0x8 scope:local data:double +lbl_1_rodata_690 = .rodata:0x00000690; // type:object size:0x4 scope:local data:float +lbl_1_rodata_694 = .rodata:0x00000694; // type:object size:0x4 scope:local data:float +lbl_1_rodata_698 = .rodata:0x00000698; // type:object size:0x4 scope:local data:float +lbl_1_rodata_69C = .rodata:0x0000069C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6A0 = .rodata:0x000006A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6A4 = .rodata:0x000006A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6A8 = .rodata:0x000006A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6B0 = .rodata:0x000006B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_6B8 = .rodata:0x000006B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_6C0 = .rodata:0x000006C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C4 = .rodata:0x000006C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C8 = .rodata:0x000006C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6CC = .rodata:0x000006CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6D0 = .rodata:0x000006D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6D4 = .rodata:0x000006D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6D8 = .rodata:0x000006D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6DC = .rodata:0x000006DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6E0 = .rodata:0x000006E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_6E8 = .rodata:0x000006E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6EC = .rodata:0x000006EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6F0 = .rodata:0x000006F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6F4 = .rodata:0x000006F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6F8 = .rodata:0x000006F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6FC = .rodata:0x000006FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_700 = .rodata:0x00000700; // type:object size:0x8 scope:local data:double +lbl_1_rodata_708 = .rodata:0x00000708; // type:object size:0x8 scope:local data:double +lbl_1_rodata_710 = .rodata:0x00000710; // type:object size:0x4 scope:local data:float +lbl_1_rodata_718 = .rodata:0x00000718; // type:object size:0x8 scope:local data:double +lbl_1_rodata_720 = .rodata:0x00000720; // type:object size:0x8 scope:local data:double +lbl_1_rodata_728 = .rodata:0x00000728; // type:object size:0x4 scope:local data:float +lbl_1_rodata_72C = .rodata:0x0000072C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_730 = .rodata:0x00000730; // type:object size:0x4 scope:local data:float +lbl_1_rodata_734 = .rodata:0x00000734; // type:object size:0x4 scope:local data:float +lbl_1_rodata_738 = .rodata:0x00000738; // type:object size:0x4 scope:local data:float +lbl_1_rodata_73C = .rodata:0x0000073C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_740 = .rodata:0x00000740; // type:object size:0x4 scope:local data:float +lbl_1_rodata_744 = .rodata:0x00000744; // type:object size:0x4 scope:local data:float +lbl_1_rodata_748 = .rodata:0x00000748; // type:object size:0x8 scope:local data:double +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:0x8 scope:local data:double +lbl_1_rodata_760 = .rodata:0x00000760; // type:object size:0x4 scope:local data:float +lbl_1_rodata_764 = .rodata:0x00000764; // type:object size:0x4 scope:local data:float +lbl_1_rodata_768 = .rodata:0x00000768; // type:object size:0x4 scope:local data:float +lbl_1_rodata_76C = .rodata:0x0000076C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_770 = .rodata:0x00000770; // type:object size:0x4 scope:local data:float +lbl_1_rodata_774 = .rodata:0x00000774; // type:object size:0x4 scope:local data:float +lbl_1_rodata_778 = .rodata:0x00000778; // type:object size:0x4 scope:local data:float +lbl_1_rodata_77C = .rodata:0x0000077C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_780 = .rodata:0x00000780; // type:object size:0x4 scope:local data:float +lbl_1_rodata_784 = .rodata:0x00000784; // type:object size:0x4 scope:local data:float +lbl_1_rodata_788 = .rodata:0x00000788; // type:object size:0x8 scope:local data:double +lbl_1_rodata_790 = .rodata:0x00000790; // type:object size:0x4 scope:local data:float +lbl_1_rodata_794 = .rodata:0x00000794; // type:object size:0x4 scope:local data:float +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_rodata_7AC = .rodata:0x000007AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7B0 = .rodata:0x000007B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7B4 = .rodata:0x000007B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7B8 = .rodata:0x000007B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7BC = .rodata:0x000007BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7C0 = .rodata:0x000007C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_7C8 = .rodata:0x000007C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7CC = .rodata:0x000007CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7D0 = .rodata:0x000007D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7D8 = .rodata:0x000007D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_7E0 = .rodata:0x000007E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_7E8 = .rodata:0x000007E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7EC = .rodata:0x000007EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_7F0 = .rodata:0x000007F0; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x20 lbl_1_data_20 = .data:0x00000020; // type:object size:0xC lbl_1_data_2C = .data:0x0000002C; // type:object size:0xC @@ -471,16 +471,18 @@ lbl_1_data_54 = .data:0x00000054; // type:object size:0x4 lbl_1_data_58 = .data:0x00000058; // type:object size:0xC lbl_1_data_64 = .data:0x00000064; // type:object size:0xC lbl_1_data_70 = .data:0x00000070; // type:object size:0xC -lbl_1_data_7C = .data:0x0000007C; // type:object size:0x7 data:string -lbl_1_data_83 = .data:0x00000083; // type:object size:0x7 data:string -lbl_1_data_8A = .data:0x0000008A; // type:object size:0x7 data:string -lbl_1_data_91 = .data:0x00000091; // type:object size:0x7 data:string -lbl_1_data_98 = .data:0x00000098; // type:object size:0x8 +lbl_1_data_7C = .data:0x0000007C; // type:object size:0x7 scope:local data:string +lbl_1_data_83 = .data:0x00000083; // type:object size:0x7 scope:local data:string +lbl_1_data_8A = .data:0x0000008A; // type:object size:0x7 scope:local data:string +lbl_1_data_91 = .data:0x00000091; // type:object size:0x7 scope:local data:string +lbl_1_data_98 = .data:0x00000098; // type:object size:0x8 scope:local lbl_1_data_A0 = .data:0x000000A0; // type:object size:0x28 lbl_1_data_C8 = .data:0x000000C8; // type:object size:0x20 lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x1C -lbl_1_data_104 = .data:0x00000104; // type:object size:0x40 -lbl_1_data_144 = .data:0x00000144; // type:object size:0x54 +lbl_1_data_104 = .data:0x00000104; // type:object size:0x20 data:float +lbl_1_data_124 = .data:0x00000124; // type:object size:0x20 data:float +lbl_1_data_144 = .data:0x00000144; // type:object size:0x30 data:float +lbl_1_data_174 = .data:0x00000174; // type:object size:0x24 data:float lbl_1_data_198 = .data:0x00000198; // type:object size:0x4 lbl_1_data_19C = .data:0x0000019C; // type:object size:0x4 data:4byte lbl_1_data_1A0 = .data:0x000001A0; // type:object size:0x24 @@ -491,7 +493,8 @@ lbl_1_data_4F4 = .data:0x000004F4; // type:object size:0x10 lbl_1_data_504 = .data:0x00000504; // type:object size:0x4 lbl_1_data_508 = .data:0x00000508; // type:object size:0xC lbl_1_data_514 = .data:0x00000514; // type:object size:0xC -lbl_1_data_520 = .data:0x00000520; // type:object size:0x30 +lbl_1_data_520 = .data:0x00000520; // type:object size:0xC +lbl_1_data_52C = .data:0x0000052C; // type:object size:0x24 jumptable_1_data_550 = .data:0x00000550; // type:object size:0x24 scope:local lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:float @@ -511,11 +514,13 @@ lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:float lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:float -lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x8 data:4byte +lbl_1_bss_58 = .bss:0x00000058; // type:object size:0x4 data:4byte +lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x4 data:4byte lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x2 data:2byte lbl_1_bss_62 = .bss:0x00000062; // type:object size:0x2 data:2byte lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x2 data:2byte -lbl_1_bss_66 = .bss:0x00000066; // type:object size:0x6 data:2byte +lbl_1_bss_66 = .bss:0x00000066; // type:object size:0x2 data:2byte +lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x4 data:4byte lbl_1_bss_6C = .bss:0x0000006C; // type:object size:0x4 data:4byte lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x4 data:4byte lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x4 data:4byte @@ -541,7 +546,8 @@ lbl_1_bss_13C = .bss:0x0000013C; // type:object size:0x4 data:4byte lbl_1_bss_140 = .bss:0x00000140; // type:object size:0x4 data:4byte lbl_1_bss_144 = .bss:0x00000144; // type:object size:0x4 data:4byte lbl_1_bss_148 = .bss:0x00000148; // type:object size:0x2 data:2byte -lbl_1_bss_14C = .bss:0x0000014C; // type:object size:0x1C data:4byte +lbl_1_bss_14C = .bss:0x0000014C; // type:object size:0x14 data:4byte +lbl_1_bss_160 = .bss:0x00000160; // type:object size:0x8 data:4byte lbl_1_bss_168 = .bss:0x00000168; // type:object size:0x4 data:4byte lbl_1_bss_16C = .bss:0x0000016C; // type:object size:0xC00 lbl_1_bss_D6C = .bss:0x00000D6C; // type:object size:0x30 diff --git a/config/GMPE01_00/rels/m414Dll/symbols.txt b/config/GMPE01_00/rels/m414Dll/symbols.txt index d1d3b636..e65b7a95 100644 --- a/config/GMPE01_00/rels/m414Dll/symbols.txt +++ b/config/GMPE01_00/rels/m414Dll/symbols.txt @@ -49,118 +49,120 @@ fn_1_8A10 = .text:0x00008A10; // type:function size:0x60 fn_1_8A70 = .text:0x00008A70; // type:function size:0x458 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 data:double -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 data:double -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 data:double -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 data:float -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 data:double -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x8 data:double -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 data:double -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float -lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float -lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 data:double -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float -lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float +__fakeHalf = .rodata:0x00000000; // type:object size:0x8 data:double +__fakeThree = .rodata:0x00000008; // type:object size:0x8 data:double +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_FC = .rodata:0x000000FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x8 scope:local data:double +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x4 scope:local data:float +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 scope:local data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x8 scope:local data:double +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size: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:0x8 scope:local data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1DC = .rodata:0x000001DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x10 lbl_1_data_10 = .data:0x00000010; // type:object size:0x10 lbl_1_data_20 = .data:0x00000020; // type:object size:0x10 lbl_1_data_30 = .data:0x00000030; // type:object size:0x20 lbl_1_data_50 = .data:0x00000050; // type:object size:0x18 -lbl_1_data_68 = .data:0x00000068; // type:object size:0x24 +lbl_1_data_68 = .data:0x00000068; // type:object size:0x24 data:float lbl_1_data_8C = .data:0x0000008C; // type:object size:0x18 lbl_1_data_A4 = .data:0x000000A4; // type:object size:0x10 lbl_1_data_B4 = .data:0x000000B4; // type:object size:0x10 lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x60 -lbl_1_data_124 = .data:0x00000124; // type:object size:0x10 data:string -lbl_1_data_134 = .data:0x00000134; // type:object size:0x7 data:string +lbl_1_data_124 = .data:0x00000124; // type:object size:0x10 scope:local data:string +lbl_1_data_134 = .data:0x00000134; // type:object size:0x7 scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0xC data:float lbl_1_bss_C = .bss:0x0000000C; // type:object size:0xC data:float lbl_1_bss_18 = .bss:0x00000018; // type:object size:0xC data:float diff --git a/config/GMPE01_00/rels/m416Dll/symbols.txt b/config/GMPE01_00/rels/m416Dll/symbols.txt index 82eaee67..29a36a1d 100644 --- a/config/GMPE01_00/rels/m416Dll/symbols.txt +++ b/config/GMPE01_00/rels/m416Dll/symbols.txt @@ -50,148 +50,148 @@ fn_1_8FF0 = .text:0x00008FF0; // type:function size:0x4 fn_1_8FF4 = .text:0x00008FF4; // type:function size:0x34 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 data:double -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 data:float -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 data:double -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 data:double -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 data:double -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 data:double -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:double -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 data:float -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 data:double -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x1 data:byte -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 data:float -lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 data:float -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 data:float -lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 data:float -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x8 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float -lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float -lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 data:double -lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 data:double -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float -lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 data:double -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float -lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 data:double -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float -lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 data:float -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 data:float -lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 data:float -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x8 scope:local data:double +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_6C = .rodata:0x0000006C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x4 scope:local data:float +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x8 scope:local data:double +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 scope:local data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 scope:local data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x4 scope:local data:float +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x8 scope:local data:double +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18C = .rodata:0x0000018C; // type:object size:0x4 scope:local data:byte +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x4 scope:local data:float +lbl_1_rodata_194 = .rodata:0x00000194; // type:object size:0x4 scope:local data:float +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x4 scope:local data:float +lbl_1_rodata_19C = .rodata:0x0000019C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x8 scope:local data:double +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float +lbl_1_rodata_224 = .rodata:0x00000224; // type:object size:0x4 scope:local data:float +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x4 scope:local data:float +lbl_1_rodata_22C = .rodata:0x0000022C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x38 data:float lbl_1_data_38 = .data:0x00000038; // type:object size:0x1 data:byte lbl_1_data_3C = .data:0x0000003C; // type:object size:0x1 data:byte -lbl_1_data_40 = .data:0x00000040; // type:object size:0x23 data:string +lbl_1_data_40 = .data:0x00000040; // type:object size:0x23 scope:local data:string lbl_1_data_64 = .data:0x00000064; // type:object size:0x4 data:4byte jumptable_1_data_68 = .data:0x00000068; // type:object size:0x2C scope:local -lbl_1_data_94 = .data:0x00000094; // type:object size:0x1C data:string -lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x40 -lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x19 data:string +lbl_1_data_94 = .data:0x00000094; // type:object size:0x1C scope:local data:string +lbl_1_data_B0 = .data:0x000000B0; // type:object size:0x40 data:float +lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x19 scope:local data:string lbl_1_data_10C = .data:0x0000010C; // type:object size:0x48 lbl_1_data_154 = .data:0x00000154; // type:object size:0x24 -lbl_1_data_178 = .data:0x00000178; // type:object size:0x5 data:string +lbl_1_data_178 = .data:0x00000178; // type:object size:0x5 scope:local data:string lbl_1_data_180 = .data:0x00000180; // type:object size:0x18 lbl_1_data_198 = .data:0x00000198; // type:object size:0x30 lbl_1_data_1C8 = .data:0x000001C8; // type:object size:0x20 lbl_1_data_1E8 = .data:0x000001E8; // type:object size:0xC data:4byte lbl_1_data_1F4 = .data:0x000001F4; // type:object size:0x24 -lbl_1_data_218 = .data:0x00000218; // type:object size:0x24 -lbl_1_data_23C = .data:0x0000023C; // type:object size:0x24 +lbl_1_data_218 = .data:0x00000218; // type:object size:0x48 lbl_1_data_260 = .data:0x00000260; // type:object size:0x8 data:float lbl_1_data_268 = .data:0x00000268; // type:object size:0x4 data:byte lbl_1_data_26C = .data:0x0000026C; // type:object size:0x60 data:float -lbl_1_data_2CC = .data:0x000002CC; // type:object size:0x18 +lbl_1_data_2CC = .data:0x000002CC; // type:object size:0x18 data:float lbl_1_data_2E4 = .data:0x000002E4; // type:object size:0x8 -lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x10 data:4byte +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0xC data:4byte lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x2 data:2byte lbl_1_bss_12 = .bss:0x00000012; // type:object size:0x2 data:2byte lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x900 lbl_1_bss_914 = .bss:0x00000914; // type:object size:0x4 data:4byte lbl_1_bss_918 = .bss:0x00000918; // type:object size:0x2 data:2byte -lbl_1_bss_91A = .bss:0x0000091A; // type:object size:0x6 data:2byte +lbl_1_bss_91A = .bss:0x0000091A; // type:object size:0x4 data:2byte lbl_1_bss_920 = .bss:0x00000920; // type:object size:0x4 data:float lbl_1_bss_924 = .bss:0x00000924; // type:object size:0x2 data:2byte lbl_1_bss_926 = .bss:0x00000926; // type:object size:0x2 data:2byte lbl_1_bss_928 = .bss:0x00000928; // type:object size:0x2 data:2byte -lbl_1_bss_92A = .bss:0x0000092A; // type:object size:0x2 data:2byte +lbl_1_bss_92A = .bss:0x0000092A; // type:object size:0x4 data:2byte lbl_1_bss_92E = .bss:0x0000092E; // type:object size:0x2 data:2byte lbl_1_bss_930 = .bss:0x00000930; // type:object size:0x20 data:4byte lbl_1_bss_950 = .bss:0x00000950; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_00/rels/m426Dll/symbols.txt b/config/GMPE01_00/rels/m426Dll/symbols.txt index 7c827cfa..5f63b503 100644 --- a/config/GMPE01_00/rels/m426Dll/symbols.txt +++ b/config/GMPE01_00/rels/m426Dll/symbols.txt @@ -80,90 +80,92 @@ fn_1_98E4 = .text:0x000098E4; // type:function size:0x78 fn_1_995C = .text:0x0000995C; // type:function size:0x12C _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:4byte -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 data:double -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 data:double -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 data:float -lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 data:float -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 data:float -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 data:double -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 data:double -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 data:double -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 data:float -lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 data:float -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 data:float -lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 data:float -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 data:double -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 data:double -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 data:float -lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 data:float -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 data:float -lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 data:float -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 data:float -lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 data:float -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 data:float -lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 data:float -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 data:double -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 data:float -lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 data:float -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float -lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 data:float -lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 data:double -lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 data:float -lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 data:float -lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 data:float -lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 data:double -lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 data:double -lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 data:float -lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 data:float -lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float -lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float -lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float -lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float -lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 data:double -lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 data:double -lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 data:double -lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:byte +__fakeHalf = .rodata:0x00000000; // type:object size:0x8 data:double +__fakeThree = .rodata:0x00000008; // type:object size:0x8 data:double +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x8 scope:local data:double +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x8 scope:local data:double +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x4 scope:local data:float +lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0x4 scope:local data:float +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x4 scope:local data:float +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D4 = .rodata:0x000000D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_DC = .rodata:0x000000DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x4 scope:local data:float +lbl_1_rodata_104 = .rodata:0x00000104; // type:object size:0x4 scope:local data:float +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x4 scope:local data:float +lbl_1_rodata_114 = .rodata:0x00000114; // type:object size:0x4 scope:local data:float +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x4 scope:local data:float +lbl_1_rodata_13C = .rodata:0x0000013C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14C = .rodata:0x0000014C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x8 scope:local data:double +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x4 scope:local data:float +lbl_1_rodata_15C = .rodata:0x0000015C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float +lbl_1_rodata_174 = .rodata:0x00000174; // type:object size:0x4 scope:local data:float +lbl_1_rodata_178 = .rodata:0x00000178; // type:object size:0x8 scope:local data:double +lbl_1_rodata_180 = .rodata:0x00000180; // type:object size:0x4 scope:local data:float +lbl_1_rodata_184 = .rodata:0x00000184; // type:object size:0x4 scope:local data:float +lbl_1_rodata_188 = .rodata:0x00000188; // type:object size:0x4 scope:local data:float +lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 scope:local data:double +lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:byte lbl_1_data_0 = .data:0x00000000; // type:object size:0x30 lbl_1_data_30 = .data:0x00000030; // type:object size:0xC lbl_1_data_3C = .data:0x0000003C; // type:object size:0xC @@ -172,15 +174,15 @@ lbl_1_data_4C = .data:0x0000004C; // type:object size:0x54 data:float lbl_1_data_A0 = .data:0x000000A0; // type:object size:0xC lbl_1_data_AC = .data:0x000000AC; // type:object size:0xC lbl_1_data_B8 = .data:0x000000B8; // type:object size:0xC -lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x23 data:string +lbl_1_data_C4 = .data:0x000000C4; // type:object size:0x23 scope:local data:string jumptable_1_data_E8 = .data:0x000000E8; // type:object size:0x24 scope:local lbl_1_data_10C = .data:0x0000010C; // type:object size:0x4 lbl_1_data_110 = .data:0x00000110; // type:object size:0x40 data:4byte lbl_1_data_150 = .data:0x00000150; // type:object size:0x20 data:4byte lbl_1_data_170 = .data:0x00000170; // type:object size:0x60 -lbl_1_data_1D0 = .data:0x000001D0; // type:object size:0x8 +lbl_1_data_1D0 = .data:0x000001D0; // type:object size:0x8 data:byte jumptable_1_data_1D8 = .data:0x000001D8; // type:object size:0x28 scope:local -lbl_1_data_200 = .data:0x00000200; // type:object size:0x18 +lbl_1_data_200 = .data:0x00000200; // type:object size:0x18 data:float lbl_1_data_218 = .data:0x00000218; // type:object size:0x8 lbl_1_data_220 = .data:0x00000220; // type:object size:0xC lbl_1_data_22C = .data:0x0000022C; // type:object size:0x30 diff --git a/config/GMPE01_00/rels/m444dll/symbols.txt b/config/GMPE01_00/rels/m444dll/symbols.txt index 901a279d..bf5a29ec 100644 --- a/config/GMPE01_00/rels/m444dll/symbols.txt +++ b/config/GMPE01_00/rels/m444dll/symbols.txt @@ -140,85 +140,85 @@ lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float lbl_1_rodata_268 = .rodata:0x00000268; // type:object size: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:0x8 data:double -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:0x8 data:double -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 data:double -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x8 data:double -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float -lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float -lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float -lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float -lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float -lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float -lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float -lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float -lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size: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_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double -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:0x8 data:double -lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float -lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 data:float -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:0x8 data:double -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:0xC data:4byte -lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float -lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float -lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float -lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float -lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float -lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x8 data:double -lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x8 data:double -lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x8 data:double -lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 data:double -lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 data:double -lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 data:float -lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float -lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float -lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float -lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float -lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 data:double -lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x8 data:double -lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 data:float -lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 data:float -lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x8 data:double -lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 data:float -lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 data:double -lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 data:double -lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 data:float -lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 data:float -lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 data:float -lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 data:double -lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 data:float -lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x8 data:double -lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 data:float -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x8 data:double -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float -lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float -lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float -lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float -lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x8 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:0x8 scope:local data:double +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:0x8 scope:local data:double +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size: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_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double +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:0x8 scope:local data:double +lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float +lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 scope:local data:float +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:0x8 scope:local data:double +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:0xC scope:local data:4byte +lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float +lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float +lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float +lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_360 = .rodata:0x00000360; // type:object size: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:0x8 scope:local data:double +lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x8 scope:local data:double +lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x8 scope:local data:double +lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float +lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float +lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B4 = .rodata:0x000003B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3C0 = .rodata:0x000003C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C8 = .rodata:0x000003C8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D0 = .rodata:0x000003D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3D8 = .rodata:0x000003D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3DC = .rodata:0x000003DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E0 = .rodata:0x000003E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3E8 = .rodata:0x000003E8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_3F0 = .rodata:0x000003F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x8 scope:local data:double +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x8 scope:local data:double lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 data:float lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 data:float @@ -252,27 +252,27 @@ lbl_1_data_258 = .data:0x00000258; // type:object size:0xC lbl_1_data_264 = .data:0x00000264; // type:object size:0x3C lbl_1_data_2A0 = .data:0x000002A0; // type:object size:0x28 lbl_1_data_2C8 = .data:0x000002C8; // type:object size:0xA -lbl_1_data_2D2 = .data:0x000002D2; // type:object size:0xD data:string -lbl_1_data_2DF = .data:0x000002DF; // type:object size:0xD data:string -lbl_1_data_2EC = .data:0x000002EC; // type:object size:0xD data:string -lbl_1_data_2F9 = .data:0x000002F9; // type:object size:0xD data:string -lbl_1_data_306 = .data:0x00000306; // type:object size:0xD data:string -lbl_1_data_313 = .data:0x00000313; // type:object size:0xD data:string -lbl_1_data_320 = .data:0x00000320; // type:object size:0xD data:string -lbl_1_data_32D = .data:0x0000032D; // type:object size:0xD data:string -lbl_1_data_33A = .data:0x0000033A; // type:object size:0xD data:string -lbl_1_data_347 = .data:0x00000347; // type:object size:0xD data:string -lbl_1_data_354 = .data:0x00000354; // type:object size:0xD data:string -lbl_1_data_361 = .data:0x00000361; // type:object size:0xD data:string -lbl_1_data_36E = .data:0x0000036E; // type:object size:0xD data:string -lbl_1_data_37B = .data:0x0000037B; // type:object size:0xD data:string +lbl_1_data_2D2 = .data:0x000002D2; // type:object size:0xD scope:local data:string +lbl_1_data_2DF = .data:0x000002DF; // type:object size:0xD scope:local data:string +lbl_1_data_2EC = .data:0x000002EC; // type:object size:0xD scope:local data:string +lbl_1_data_2F9 = .data:0x000002F9; // type:object size:0xD scope:local data:string +lbl_1_data_306 = .data:0x00000306; // type:object size:0xD scope:local data:string +lbl_1_data_313 = .data:0x00000313; // type:object size:0xD scope:local data:string +lbl_1_data_320 = .data:0x00000320; // type:object size:0xD scope:local data:string +lbl_1_data_32D = .data:0x0000032D; // type:object size:0xD scope:local data:string +lbl_1_data_33A = .data:0x0000033A; // type:object size:0xD scope:local data:string +lbl_1_data_347 = .data:0x00000347; // type:object size:0xD scope:local data:string +lbl_1_data_354 = .data:0x00000354; // type:object size:0xD scope:local data:string +lbl_1_data_361 = .data:0x00000361; // type:object size:0xD scope:local data:string +lbl_1_data_36E = .data:0x0000036E; // type:object size:0xD scope:local data:string +lbl_1_data_37B = .data:0x0000037B; // type:object size:0xD scope:local data:string jumptable_1_data_388 = .data:0x00000388; // type:object size:0x1C scope:local lbl_1_data_3A4 = .data:0x000003A4; // type:object size:0x8 lbl_1_data_3AC = .data:0x000003AC; // type:object size:0x30 data:float lbl_1_data_3DC = .data:0x000003DC; // type:object size:0x24 data:float lbl_1_data_400 = .data:0x00000400; // type:object size:0x54 data:float lbl_1_data_454 = .data:0x00000454; // type:object size:0xC -lbl_1_data_460 = .data:0x00000460; // type:object size:0x10 data:string +lbl_1_data_460 = .data:0x00000460; // type:object size:0x10 scope:local data:string lbl_1_data_470 = .data:0x00000470; // type:object size:0x127C lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x2 data:2byte diff --git a/config/GMPE01_00/rels/m451Dll/symbols.txt b/config/GMPE01_00/rels/m451Dll/symbols.txt index 9cd1aedd..c7b6f300 100644 --- a/config/GMPE01_00/rels/m451Dll/symbols.txt +++ b/config/GMPE01_00/rels/m451Dll/symbols.txt @@ -23,196 +23,201 @@ fn_1_4864 = .text:0x00004864; // type:function size:0x60 fn_1_48C4 = .text:0x000048C4; // type:function size:0x8F4 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float -lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float -lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float -lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 data:double -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 data:double -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 data:float -lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 data:float -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 data:float -lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 data:float -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 data:float -lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 data:float -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 data:float -lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 data:float -lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float -lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float -lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float -lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 data:float -lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 data:float -lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 data:float -lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 data:double -lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 data:double -lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 data:float -lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 data:float -lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 data:float -lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 data:float -lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 data:float -lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 data:float -lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 data:float -lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 data:double -lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 data:float -lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 data:float -lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 data:double -lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 data:float -lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 data:float -lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 data:float -lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 data:float -lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 data:float -lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 data:float -lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 data:float -lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 data:float -lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 data:double -lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 data:double -lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 data:double -lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 data:float -lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 data:double -lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 data:float -lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 data:double -lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x8 scope:local data:double +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x8 scope:local data:double +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x4 scope:local data:float +lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 scope:local data:float +lbl_1_rodata_9C = .rodata:0x0000009C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_AC = .rodata:0x000000AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B4 = .rodata:0x000000B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C4 = .rodata:0x000000C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_CC = .rodata:0x000000CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_D0 = .rodata:0x000000D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_E0 = .rodata:0x000000E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_E8 = .rodata:0x000000E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_EC = .rodata:0x000000EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_F8 = .rodata:0x000000F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_100 = .rodata:0x00000100; // type:object size:0x8 scope:local data:double +lbl_1_rodata_108 = .rodata:0x00000108; // type:object size:0x4 scope:local data:float +lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_110 = .rodata:0x00000110; // type:object size:0x8 scope:local data:double +lbl_1_rodata_118 = .rodata:0x00000118; // type:object size:0x4 scope:local data:float +lbl_1_rodata_11C = .rodata:0x0000011C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_120 = .rodata:0x00000120; // type:object size:0x4 scope:local data:float +lbl_1_rodata_124 = .rodata:0x00000124; // type:object size:0x4 scope:local data:float +lbl_1_rodata_128 = .rodata:0x00000128; // type:object size:0x4 scope:local data:float +lbl_1_rodata_12C = .rodata:0x0000012C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_130 = .rodata:0x00000130; // type:object size:0x4 scope:local data:float +lbl_1_rodata_134 = .rodata:0x00000134; // type:object size:0x4 scope:local data:float +lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x8 scope:local data:double +lbl_1_rodata_140 = .rodata:0x00000140; // type:object size:0x8 scope:local data:double +lbl_1_rodata_148 = .rodata:0x00000148; // type:object size:0x8 scope:local data:double +lbl_1_rodata_150 = .rodata:0x00000150; // type:object size:0x4 scope:local data:float +lbl_1_rodata_158 = .rodata:0x00000158; // type:object size:0x8 scope:local data:double +lbl_1_rodata_160 = .rodata:0x00000160; // type:object size:0x4 scope:local data:float +lbl_1_rodata_168 = .rodata:0x00000168; // type:object size:0x8 scope:local data:double +lbl_1_rodata_170 = .rodata:0x00000170; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x54 lbl_1_data_54 = .data:0x00000054; // type:object size:0xC lbl_1_data_60 = .data:0x00000060; // type:object size:0xC -lbl_1_data_6C = .data:0x0000006C; // type:object size:0x9 data:string +lbl_1_data_6C = .data:0x0000006C; // type:object size:0x9 scope:local data:string lbl_1_data_78 = .data:0x00000078; // type:object size:0xC -lbl_1_data_84 = .data:0x00000084; // type:object size:0xB data:string -lbl_1_data_8F = .data:0x0000008F; // type:object size:0xB data:string -lbl_1_data_9A = .data:0x0000009A; // type:object size:0xB data:string -lbl_1_data_A5 = .data:0x000000A5; // type:object size:0xB data:string -lbl_1_data_B0 = .data:0x000000B0; // type:object size:0xB data:string -lbl_1_data_BB = .data:0x000000BB; // type:object size:0xB data:string -lbl_1_data_C6 = .data:0x000000C6; // type:object size:0xB data:string -lbl_1_data_D1 = .data:0x000000D1; // type:object size:0xB data:string -lbl_1_data_DC = .data:0x000000DC; // type:object size:0xB data:string -lbl_1_data_E7 = .data:0x000000E7; // type:object size:0xB data:string -lbl_1_data_F2 = .data:0x000000F2; // type:object size:0xB data:string -lbl_1_data_FD = .data:0x000000FD; // type:object size:0xB data:string -lbl_1_data_108 = .data:0x00000108; // type:object size:0xB data:string -lbl_1_data_113 = .data:0x00000113; // type:object size:0xB data:string -lbl_1_data_11E = .data:0x0000011E; // type:object size:0xB data:string -lbl_1_data_129 = .data:0x00000129; // type:object size:0xB data:string -lbl_1_data_134 = .data:0x00000134; // type:object size:0xB data:string -lbl_1_data_13F = .data:0x0000013F; // type:object size:0xB data:string -lbl_1_data_14A = .data:0x0000014A; // type:object size:0xB data:string -lbl_1_data_155 = .data:0x00000155; // type:object size:0xB data:string -lbl_1_data_160 = .data:0x00000160; // type:object size:0xB data:string -lbl_1_data_16B = .data:0x0000016B; // type:object size:0xB data:string -lbl_1_data_176 = .data:0x00000176; // type:object size:0xB data:string -lbl_1_data_181 = .data:0x00000181; // type:object size:0xB data:string -lbl_1_data_18C = .data:0x0000018C; // type:object size:0xB data:string -lbl_1_data_197 = .data:0x00000197; // type:object size:0xB data:string -lbl_1_data_1A2 = .data:0x000001A2; // type:object size:0xB data:string -lbl_1_data_1AD = .data:0x000001AD; // type:object size:0xB data:string -lbl_1_data_1B8 = .data:0x000001B8; // type:object size:0xB data:string -lbl_1_data_1C3 = .data:0x000001C3; // type:object size:0xB data:string -lbl_1_data_1CE = .data:0x000001CE; // type:object size:0xB data:string -lbl_1_data_1D9 = .data:0x000001D9; // type:object size:0xB data:string -lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0xB data:string -lbl_1_data_1EF = .data:0x000001EF; // type:object size:0xB data:string -lbl_1_data_1FA = .data:0x000001FA; // type:object size:0xB data:string -lbl_1_data_205 = .data:0x00000205; // type:object size:0xB data:string -lbl_1_data_210 = .data:0x00000210; // type:object size:0xB data:string -lbl_1_data_21B = .data:0x0000021B; // type:object size:0xB data:string -lbl_1_data_226 = .data:0x00000226; // type:object size:0xB data:string -lbl_1_data_231 = .data:0x00000231; // type:object size:0xB data:string -lbl_1_data_23C = .data:0x0000023C; // type:object size:0xB data:string -lbl_1_data_247 = .data:0x00000247; // type:object size:0xB data:string -lbl_1_data_252 = .data:0x00000252; // type:object size:0xB data:string -lbl_1_data_25D = .data:0x0000025D; // type:object size:0xB data:string -lbl_1_data_268 = .data:0x00000268; // type:object size:0xB data:string -lbl_1_data_273 = .data:0x00000273; // type:object size:0xB data:string -lbl_1_data_27E = .data:0x0000027E; // type:object size:0xB data:string -lbl_1_data_289 = .data:0x00000289; // type:object size:0xB data:string -lbl_1_data_294 = .data:0x00000294; // type:object size:0xB data:string -lbl_1_data_29F = .data:0x0000029F; // type:object size:0xB data:string -lbl_1_data_2AA = .data:0x000002AA; // type:object size:0xB data:string -lbl_1_data_2B5 = .data:0x000002B5; // type:object size:0xB data:string -lbl_1_data_2C0 = .data:0x000002C0; // type:object size:0xB data:string -lbl_1_data_2CB = .data:0x000002CB; // type:object size:0xB data:string -lbl_1_data_2D6 = .data:0x000002D6; // type:object size:0xB data:string -lbl_1_data_2E1 = .data:0x000002E1; // type:object size:0xB data:string -lbl_1_data_2EC = .data:0x000002EC; // type:object size:0xB data:string -lbl_1_data_2F7 = .data:0x000002F7; // type:object size:0xB data:string -lbl_1_data_302 = .data:0x00000302; // type:object size:0xB data:string -lbl_1_data_30D = .data:0x0000030D; // type:object size:0xB data:string -lbl_1_data_318 = .data:0x00000318; // type:object size:0xB data:string -lbl_1_data_323 = .data:0x00000323; // type:object size:0xB data:string -lbl_1_data_32E = .data:0x0000032E; // type:object size:0xB data:string -lbl_1_data_339 = .data:0x00000339; // type:object size:0xB data:string -lbl_1_data_344 = .data:0x00000344; // type:object size:0xB data:string -lbl_1_data_34F = .data:0x0000034F; // type:object size:0xB data:string -lbl_1_data_35A = .data:0x0000035A; // type:object size:0xB data:string -lbl_1_data_365 = .data:0x00000365; // type:object size:0xB data:string -lbl_1_data_370 = .data:0x00000370; // type:object size:0xB data:string -lbl_1_data_37B = .data:0x0000037B; // type:object size:0xB data:string -lbl_1_data_386 = .data:0x00000386; // type:object size:0xB data:string -lbl_1_data_391 = .data:0x00000391; // type:object size:0xB data:string -lbl_1_data_39C = .data:0x0000039C; // type:object size:0xB data:string -lbl_1_data_3A7 = .data:0x000003A7; // type:object size:0xB data:string -lbl_1_data_3B2 = .data:0x000003B2; // type:object size:0xB data:string -lbl_1_data_3BD = .data:0x000003BD; // type:object size:0xB data:string -lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0xB data:string -lbl_1_data_3D3 = .data:0x000003D3; // type:object size:0xB data:string -lbl_1_data_3DE = .data:0x000003DE; // type:object size:0xB data:string -lbl_1_data_3E9 = .data:0x000003E9; // type:object size:0xB data:string -lbl_1_data_3F4 = .data:0x000003F4; // type:object size:0xB data:string -lbl_1_data_3FF = .data:0x000003FF; // type:object size:0xB data:string -lbl_1_data_40A = .data:0x0000040A; // type:object size:0xB data:string -lbl_1_data_415 = .data:0x00000415; // type:object size:0xB data:string -lbl_1_data_420 = .data:0x00000420; // type:object size:0xB data:string -lbl_1_data_42B = .data:0x0000042B; // type:object size:0xB data:string -lbl_1_data_436 = .data:0x00000436; // type:object size:0xB data:string -lbl_1_data_441 = .data:0x00000441; // type:object size:0xB data:string -lbl_1_data_44C = .data:0x0000044C; // type:object size:0xB data:string -lbl_1_data_457 = .data:0x00000457; // type:object size:0xB data:string +lbl_1_data_84 = .data:0x00000084; // type:object size:0xB scope:local data:string +lbl_1_data_8F = .data:0x0000008F; // type:object size:0xB scope:local data:string +lbl_1_data_9A = .data:0x0000009A; // type:object size:0xB scope:local data:string +lbl_1_data_A5 = .data:0x000000A5; // type:object size:0xB scope:local data:string +lbl_1_data_B0 = .data:0x000000B0; // type:object size:0xB scope:local data:string +lbl_1_data_BB = .data:0x000000BB; // type:object size:0xB scope:local data:string +lbl_1_data_C6 = .data:0x000000C6; // type:object size:0xB scope:local data:string +lbl_1_data_D1 = .data:0x000000D1; // type:object size:0xB scope:local data:string +lbl_1_data_DC = .data:0x000000DC; // type:object size:0xB scope:local data:string +lbl_1_data_E7 = .data:0x000000E7; // type:object size:0xB scope:local data:string +lbl_1_data_F2 = .data:0x000000F2; // type:object size:0xB scope:local data:string +lbl_1_data_FD = .data:0x000000FD; // type:object size:0xB scope:local data:string +lbl_1_data_108 = .data:0x00000108; // type:object size:0xB scope:local data:string +lbl_1_data_113 = .data:0x00000113; // type:object size:0xB scope:local data:string +lbl_1_data_11E = .data:0x0000011E; // type:object size:0xB scope:local data:string +lbl_1_data_129 = .data:0x00000129; // type:object size:0xB scope:local data:string +lbl_1_data_134 = .data:0x00000134; // type:object size:0xB scope:local data:string +lbl_1_data_13F = .data:0x0000013F; // type:object size:0xB scope:local data:string +lbl_1_data_14A = .data:0x0000014A; // type:object size:0xB scope:local data:string +lbl_1_data_155 = .data:0x00000155; // type:object size:0xB scope:local data:string +lbl_1_data_160 = .data:0x00000160; // type:object size:0xB scope:local data:string +lbl_1_data_16B = .data:0x0000016B; // type:object size:0xB scope:local data:string +lbl_1_data_176 = .data:0x00000176; // type:object size:0xB scope:local data:string +lbl_1_data_181 = .data:0x00000181; // type:object size:0xB scope:local data:string +lbl_1_data_18C = .data:0x0000018C; // type:object size:0xB scope:local data:string +lbl_1_data_197 = .data:0x00000197; // type:object size:0xB scope:local data:string +lbl_1_data_1A2 = .data:0x000001A2; // type:object size:0xB scope:local data:string +lbl_1_data_1AD = .data:0x000001AD; // type:object size:0xB scope:local data:string +lbl_1_data_1B8 = .data:0x000001B8; // type:object size:0xB scope:local data:string +lbl_1_data_1C3 = .data:0x000001C3; // type:object size:0xB scope:local data:string +lbl_1_data_1CE = .data:0x000001CE; // type:object size:0xB scope:local data:string +lbl_1_data_1D9 = .data:0x000001D9; // type:object size:0xB scope:local data:string +lbl_1_data_1E4 = .data:0x000001E4; // type:object size:0xB scope:local data:string +lbl_1_data_1EF = .data:0x000001EF; // type:object size:0xB scope:local data:string +lbl_1_data_1FA = .data:0x000001FA; // type:object size:0xB scope:local data:string +lbl_1_data_205 = .data:0x00000205; // type:object size:0xB scope:local data:string +lbl_1_data_210 = .data:0x00000210; // type:object size:0xB scope:local data:string +lbl_1_data_21B = .data:0x0000021B; // type:object size:0xB scope:local data:string +lbl_1_data_226 = .data:0x00000226; // type:object size:0xB scope:local data:string +lbl_1_data_231 = .data:0x00000231; // type:object size:0xB scope:local data:string +lbl_1_data_23C = .data:0x0000023C; // type:object size:0xB scope:local data:string +lbl_1_data_247 = .data:0x00000247; // type:object size:0xB scope:local data:string +lbl_1_data_252 = .data:0x00000252; // type:object size:0xB scope:local data:string +lbl_1_data_25D = .data:0x0000025D; // type:object size:0xB scope:local data:string +lbl_1_data_268 = .data:0x00000268; // type:object size:0xB scope:local data:string +lbl_1_data_273 = .data:0x00000273; // type:object size:0xB scope:local data:string +lbl_1_data_27E = .data:0x0000027E; // type:object size:0xB scope:local data:string +lbl_1_data_289 = .data:0x00000289; // type:object size:0xB scope:local data:string +lbl_1_data_294 = .data:0x00000294; // type:object size:0xB scope:local data:string +lbl_1_data_29F = .data:0x0000029F; // type:object size:0xB scope:local data:string +lbl_1_data_2AA = .data:0x000002AA; // type:object size:0xB scope:local data:string +lbl_1_data_2B5 = .data:0x000002B5; // type:object size:0xB scope:local data:string +lbl_1_data_2C0 = .data:0x000002C0; // type:object size:0xB scope:local data:string +lbl_1_data_2CB = .data:0x000002CB; // type:object size:0xB scope:local data:string +lbl_1_data_2D6 = .data:0x000002D6; // type:object size:0xB scope:local data:string +lbl_1_data_2E1 = .data:0x000002E1; // type:object size:0xB scope:local data:string +lbl_1_data_2EC = .data:0x000002EC; // type:object size:0xB scope:local data:string +lbl_1_data_2F7 = .data:0x000002F7; // type:object size:0xB scope:local data:string +lbl_1_data_302 = .data:0x00000302; // type:object size:0xB scope:local data:string +lbl_1_data_30D = .data:0x0000030D; // type:object size:0xB scope:local data:string +lbl_1_data_318 = .data:0x00000318; // type:object size:0xB scope:local data:string +lbl_1_data_323 = .data:0x00000323; // type:object size:0xB scope:local data:string +lbl_1_data_32E = .data:0x0000032E; // type:object size:0xB scope:local data:string +lbl_1_data_339 = .data:0x00000339; // type:object size:0xB scope:local data:string +lbl_1_data_344 = .data:0x00000344; // type:object size:0xB scope:local data:string +lbl_1_data_34F = .data:0x0000034F; // type:object size:0xB scope:local data:string +lbl_1_data_35A = .data:0x0000035A; // type:object size:0xB scope:local data:string +lbl_1_data_365 = .data:0x00000365; // type:object size:0xB scope:local data:string +lbl_1_data_370 = .data:0x00000370; // type:object size:0xB scope:local data:string +lbl_1_data_37B = .data:0x0000037B; // type:object size:0xB scope:local data:string +lbl_1_data_386 = .data:0x00000386; // type:object size:0xB scope:local data:string +lbl_1_data_391 = .data:0x00000391; // type:object size:0xB scope:local data:string +lbl_1_data_39C = .data:0x0000039C; // type:object size:0xB scope:local data:string +lbl_1_data_3A7 = .data:0x000003A7; // type:object size:0xB scope:local data:string +lbl_1_data_3B2 = .data:0x000003B2; // type:object size:0xB scope:local data:string +lbl_1_data_3BD = .data:0x000003BD; // type:object size:0xB scope:local data:string +lbl_1_data_3C8 = .data:0x000003C8; // type:object size:0xB scope:local data:string +lbl_1_data_3D3 = .data:0x000003D3; // type:object size:0xB scope:local data:string +lbl_1_data_3DE = .data:0x000003DE; // type:object size:0xB scope:local data:string +lbl_1_data_3E9 = .data:0x000003E9; // type:object size:0xB scope:local data:string +lbl_1_data_3F4 = .data:0x000003F4; // type:object size:0xB scope:local data:string +lbl_1_data_3FF = .data:0x000003FF; // type:object size:0xB scope:local data:string +lbl_1_data_40A = .data:0x0000040A; // type:object size:0xB scope:local data:string +lbl_1_data_415 = .data:0x00000415; // type:object size:0xB scope:local data:string +lbl_1_data_420 = .data:0x00000420; // type:object size:0xB scope:local data:string +lbl_1_data_42B = .data:0x0000042B; // type:object size:0xB scope:local data:string +lbl_1_data_436 = .data:0x00000436; // type:object size:0xB scope:local data:string +lbl_1_data_441 = .data:0x00000441; // type:object size:0xB scope:local data:string +lbl_1_data_44C = .data:0x0000044C; // type:object size:0xB scope:local data:string +lbl_1_data_457 = .data:0x00000457; // type:object size:0xB scope:local data:string lbl_1_data_464 = .data:0x00000464; // type:object size:0x1E0 lbl_1_data_644 = .data:0x00000644; // type:object size:0x84 lbl_1_data_6C8 = .data:0x000006C8; // type:object size:0xC lbl_1_data_6D4 = .data:0x000006D4; // type:object size:0x78 data:float lbl_1_data_74C = .data:0x0000074C; // type:object size:0xC lbl_1_data_758 = .data:0x00000758; // type:object size:0xC -lbl_1_data_764 = .data:0x00000764; // type:object size:0xC data:string -lbl_1_data_770 = .data:0x00000770; // type:object size:0xC data:string -lbl_1_data_77C = .data:0x0000077C; // type:object size:0x7 data:string -lbl_1_data_783 = .data:0x00000783; // type:object size:0x8 data:string -lbl_1_data_78B = .data:0x0000078B; // type:object size:0x8 data:string -lbl_1_data_793 = .data:0x00000793; // type:object size:0x8 data:string -lbl_1_data_79B = .data:0x0000079B; // type:object size:0xB data:string -lbl_1_data_7A6 = .data:0x000007A6; // type:object size:0xF data:string +lbl_1_data_764 = .data:0x00000764; // type:object size:0xC scope:local data:string +lbl_1_data_770 = .data:0x00000770; // type:object size:0xC scope:local data:string +lbl_1_data_77C = .data:0x0000077C; // type:object size:0x7 scope:local data:string +lbl_1_data_783 = .data:0x00000783; // type:object size:0x8 scope:local data:string +lbl_1_data_78B = .data:0x0000078B; // type:object size:0x8 scope:local data:string +lbl_1_data_793 = .data:0x00000793; // type:object size:0x8 scope:local data:string +lbl_1_data_79B = .data:0x0000079B; // type:object size:0xB scope:local data:string +lbl_1_data_7A6 = .data:0x000007A6; // type:object size:0xF scope:local data:string +lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 -lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x340 data:4byte -lbl_1_bss_348 = .bss:0x00000348; // type:object size:0x810 data:float +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x33C data:4byte +lbl_1_bss_348 = .bss:0x00000348; // type:object size:0x80C data:float +lbl_1_bss_B54 = .bss:0x00000B54; // type:object size:0x4 data:4byte lbl_1_bss_B58 = .bss:0x00000B58; // type:object size:0x4 data:4byte lbl_1_bss_B5C = .bss:0x00000B5C; // type:object size:0x4 data:4byte lbl_1_bss_B60 = .bss:0x00000B60; // type:object size:0x4 data:4byte lbl_1_bss_B64 = .bss:0x00000B64; // type:object size:0xA0 data:4byte lbl_1_bss_C04 = .bss:0x00000C04; // type:object size:0xA0 data:4byte lbl_1_bss_CA4 = .bss:0x00000CA4; // type:object size:0x4 data:4byte -lbl_1_bss_CA8 = .bss:0x00000CA8; // type:object size:0x6 -lbl_1_bss_CAE = .bss:0x00000CAE; // type:object size:0x6 data:2byte +lbl_1_bss_CA8 = .bss:0x00000CA8; // type:object size:0x4 data:4byte +lbl_1_bss_CAC = .bss:0x00000CAC; // type:object size:0x2 +lbl_1_bss_CAE = .bss:0x00000CAE; // type:object size:0x2 data:2byte +lbl_1_bss_CB0 = .bss:0x00000CB0; // type:object size:0x4 data:2byte lbl_1_bss_CB4 = .bss:0x00000CB4; // type:object size:0x2 data:2byte diff --git a/config/GMPE01_00/rels/modeltestDll/splits.txt b/config/GMPE01_00/rels/modeltestDll/splits.txt index f065b13e..9ff3fae5 100644 --- a/config/GMPE01_00/rels/modeltestDll/splits.txt +++ b/config/GMPE01_00/rels/modeltestDll/splits.txt @@ -17,12 +17,12 @@ REL/modeltestDll/main.c: REL/modeltestDll/modeltest00.c: .text start:0x000034B0 end:0x00004AC8 - .rodata start:0x00000130 end:0x000001E0 + .rodata start:0x00000130 end:0x000001C8 .data start:0x00000358 end:0x00000388 .bss start:0x000009A8 end:0x00000A00 REL/modeltestDll/modeltest01.c: .text start:0x00004AC8 end:0x000086B8 - .rodata start:0x000001E0 end:0x00000290 + .rodata start:0x000001C8 end:0x00000290 .data start:0x00000388 end:0x000007AE .bss start:0x00000A00 end:0x00000AC8 diff --git a/config/GMPE01_00/rels/modeltestDll/symbols.txt b/config/GMPE01_00/rels/modeltestDll/symbols.txt index 52d3b800..4b7a4796 100644 --- a/config/GMPE01_00/rels/modeltestDll/symbols.txt +++ b/config/GMPE01_00/rels/modeltestDll/symbols.txt @@ -102,39 +102,39 @@ lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data: lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0xC scope:local data:float -lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0xC data:float -lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 data:float -lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 data:float -lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 data:float -lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 data:float -lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float -lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float -lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float -lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float -lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float -lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float -lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 data:float -lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 data:float -lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float -lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float -lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 data:double -lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 data:double -lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double -lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float -lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:double -lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float -lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0xC data:4byte -lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0xC data:4byte -lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float -lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float -lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float -lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 data:double -lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float -lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 data:float -lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0xC data:4byte -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_1D4 = .rodata:0x000001D4; // type:object size:0xC scope:local data:float +lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E4 = .rodata:0x000001E4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1EC = .rodata:0x000001EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float +lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float +lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float +lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float +lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x8 scope:local data:double +lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x8 scope:local data:double +lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 scope:local data:double +lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float +lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 scope:local data:double +lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float +lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float +lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float +lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 scope:local data:double +lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 scope:local data:float +lbl_1_rodata_274 = .rodata:0x00000274; // type:object size:0x4 scope:local data:float +lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0xC scope:local data:4byte +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_data_0 = .data:0x00000000; // type:object size:0x20 data:4byte lbl_1_data_20 = .data:0x00000020; // type:object size:0x28 scope:local data:string lbl_1_data_48 = .data:0x00000048; // type:object size:0x9 scope:local data:string @@ -167,7 +167,7 @@ lbl_1_data_318 = .data:0x00000318; // type:object size:0xA scope:local data:stri lbl_1_data_322 = .data:0x00000322; // type:object size:0x36 lbl_1_data_358 = .data:0x00000358; // type:object size:0x8 lbl_1_data_360 = .data:0x00000360; // type:object size:0x28 scope:local data:string -lbl_1_data_388 = .data:0x00000388; // type:object size:0x28 data:string +lbl_1_data_388 = .data:0x00000388; // type:object size:0x28 scope:local data:string lbl_1_data_3B0 = .data:0x000003B0; // type:object size:0x58 lbl_1_data_408 = .data:0x00000408; // type:object size:0x58 lbl_1_data_460 = .data:0x00000460; // type:object size:0x58 @@ -177,19 +177,19 @@ lbl_1_data_568 = .data:0x00000568; // type:object size:0x58 lbl_1_data_5C0 = .data:0x000005C0; // type:object size:0x58 lbl_1_data_618 = .data:0x00000618; // type:object size:0x58 lbl_1_data_670 = .data:0x00000670; // type:object size:0x20 -lbl_1_data_690 = .data:0x00000690; // type:object size:0x10 data:string -lbl_1_data_6A0 = .data:0x000006A0; // type:object size:0xD data:string -lbl_1_data_6AD = .data:0x000006AD; // type:object size:0xD data:string -lbl_1_data_6BA = .data:0x000006BA; // type:object size:0xD data:string -lbl_1_data_6C7 = .data:0x000006C7; // type:object size:0xB data:string -lbl_1_data_6D2 = .data:0x000006D2; // type:object size:0x8 data:string -lbl_1_data_6DA = .data:0x000006DA; // type:object size:0xF data:string -lbl_1_data_6E9 = .data:0x000006E9; // type:object size:0xB +lbl_1_data_690 = .data:0x00000690; // type:object size:0x10 scope:local data:string +lbl_1_data_6A0 = .data:0x000006A0; // type:object size:0xD scope:local data:string +lbl_1_data_6AD = .data:0x000006AD; // type:object size:0xD scope:local data:string +lbl_1_data_6BA = .data:0x000006BA; // type:object size:0xD scope:local data:string +lbl_1_data_6C7 = .data:0x000006C7; // type:object size:0xB scope:local data:string +lbl_1_data_6D2 = .data:0x000006D2; // type:object size:0x8 scope:local data:string +lbl_1_data_6DA = .data:0x000006DA; // type:object size:0xF scope:local data:string +lbl_1_data_6E9 = .data:0x000006E9; // type:object size:0xB scope:local lbl_1_data_6F4 = .data:0x000006F4; // type:object size:0x60 lbl_1_data_754 = .data:0x00000754; // type:object size:0x4 data:4byte lbl_1_data_758 = .data:0x00000758; // type:object size:0x12 lbl_1_data_76A = .data:0x0000076A; // type:object size:0x2E -lbl_1_data_798 = .data:0x00000798; // type:object size:0x14 +lbl_1_data_798 = .data:0x00000798; // type:object size:0x14 scope:local lbl_1_data_7AC = .data:0x000007AC; // type:object size:0x2 data:2byte lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:float lbl_1_bss_C = .bss:0x0000000C; // type:object size:0x4 data:4byte @@ -225,8 +225,10 @@ lbl_1_bss_9F8 = .bss:0x000009F8; // type:object size:0x8 data:4byte lbl_1_bss_A00 = .bss:0x00000A00; // type:object size:0x4 data:4byte lbl_1_bss_A04 = .bss:0x00000A04; // type:object size:0x4 data:4byte lbl_1_bss_A08 = .bss:0x00000A08; // type:object size:0x2 data:2byte -lbl_1_bss_A0C = .bss:0x00000A0C; // type:object size:0x8 data:float +lbl_1_bss_A0C = .bss:0x00000A0C; // type:object size:0x4 data:float +lbl_1_bss_A10 = .bss:0x00000A10; // type:object size:0x4 data:float lbl_1_bss_A14 = .bss:0x00000A14; // type:object size:0x4 data:4byte lbl_1_bss_A18 = .bss:0x00000A18; // type:object size:0xA4 data:float lbl_1_bss_ABC = .bss:0x00000ABC; // type:object size:0x4 data:4byte -lbl_1_bss_AC0 = .bss:0x00000AC0; // type:object size:0x8 data:4byte +lbl_1_bss_AC0 = .bss:0x00000AC0; // type:object size:0x4 data:4byte +lbl_1_bss_AC4 = .bss:0x00000AC4; // type:object size:0x4 data:4byte diff --git a/configure.py b/configure.py index 7a223397..961fb427 100644 --- a/configure.py +++ b/configure.py @@ -846,7 +846,7 @@ config.libs = [ "m404Dll", objects={ Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m404Dll/main.c"), + Object(Matching, "REL/m404Dll/main.c"), }, ), Rel( @@ -882,10 +882,10 @@ config.libs = [ "m408Dll", objects={ Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m408Dll/main.c"), - Object(NonMatching, "REL/m408Dll/camera.c"), - Object(NonMatching, "REL/m408Dll/stage.c"), - Object(NonMatching, "REL/m408Dll/object.c"), + Object(Matching, "REL/m408Dll/main.c"), + Object(Matching, "REL/m408Dll/camera.c"), + Object(Matching, "REL/m408Dll/stage.c"), + Object(Matching, "REL/m408Dll/object.c"), }, ), Rel( @@ -932,7 +932,7 @@ config.libs = [ "m414Dll", objects={ Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m414Dll/main.c"), + Object(Matching, "REL/m414Dll/main.c"), }, ), Rel( @@ -947,8 +947,8 @@ config.libs = [ "m416Dll", objects={ Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m416Dll/main.c"), - Object(NonMatching, "REL/m416Dll/map.c"), + Object(Matching, "REL/m416Dll/main.c"), + Object(Matching, "REL/m416Dll/map.c"), }, ), Rel( @@ -1188,7 +1188,7 @@ config.libs = [ "m446dll", objects={ Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m446Dll/main.c"), + Object(Matching, "REL/m446Dll/main.c"), Object(Matching, "REL/m446Dll/card.c"), Object(Matching, "REL/m446Dll/deck.c"), Object(Matching, "REL/m446Dll/table.c"), @@ -1233,7 +1233,7 @@ config.libs = [ Rel( "m451Dll", objects={ - Object(NonMatching, "REL/m451Dll/m451.c"), + Object(Matching, "REL/m451Dll/m451.c"), }, ), Rel( @@ -1346,7 +1346,7 @@ config.libs = [ Object(Matching, "REL/executor.c"), Object(Matching, "REL/modeltestDll/main.c"), Object(Matching, "REL/modeltestDll/modeltest00.c"), - Object(NonMatching, "REL/modeltestDll/modeltest01.c"), + Object(Matching, "REL/modeltestDll/modeltest01.c"), }, ), Rel( diff --git a/include/REL/m408Dll.h b/include/REL/m408Dll.h new file mode 100644 index 00000000..b32d0866 --- /dev/null +++ b/include/REL/m408Dll.h @@ -0,0 +1,56 @@ +#ifndef M408DLL_H +#define M408DLL_H + +#include "game/object.h" + +typedef struct work_2FAC { + u16 unk0; + u16 unk2; + u32 unk4; + u32 unk8; + float unkC; + u32 unk10; + u32 unk14; + u32 unk18; + Vec unk1C; + Vec unk28; + Vec unk34; + Vec unk40; + Vec unk4C; + Vec unk58; + float unk64; + Vec unk68; + u32 unk74; + u32 unk78; + float unk7C[2]; + float unk84[2]; + s16 unk8C; + u16 unk8E; + float unk90; + Vec unk94; + Vec unkA0; + Vec unkAC; + Vec unkB8; +} Work2FAC; + +void fn_1_67C4(u16 arg0, u16 arg1); +u32 fn_1_6878(void); +float fn_1_6888(void); +Work2FAC *fn_1_68A8(s32 arg0); +void fn_1_817C(Vec *arg0, Vec *arg1); +void fn_1_84C4(float arg0, float arg1, float arg2, float arg3, float arg4, float arg5); +float fn_1_883C(float arg0, float arg1, float arg2); +void fn_1_C3C0(Vec *arg0, Vec *arg1); +u32 fn_1_C43C(void); +s32 fn_1_CE68(void); +void fn_1_CEEC(void); +void fn_1_8958(Process *objman); +void fn_1_C44C(Process *objman); +s32 fn_1_11670(void); +void fn_1_118D0(Process *objman); +s32 fn_1_162CC(Vec *arg0, Vec *arg1); + +extern s32 lbl_1_bss_44; +extern s32 lbl_1_bss_40; + +#endif diff --git a/include/REL/m416Dll.h b/include/REL/m416Dll.h new file mode 100644 index 00000000..c6eba127 --- /dev/null +++ b/include/REL/m416Dll.h @@ -0,0 +1,16 @@ +#ifndef M416DLL_H +#define M416DLL_H + +#include "game/object.h" +#include "game/hsfman.h" + +s32 fn_1_1240(void); +void fn_1_1250(s32 arg0); +void fn_1_613C(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_79D0(Process *objman); +void fn_1_7A54(void); +void fn_1_8EB4(s16 model); +void fn_1_8F60(float arg0); +void fn_1_8FF4(float arg0); + +#endif diff --git a/include/dolphin/gx/GXVert.h b/include/dolphin/gx/GXVert.h index d870fc51..b7122fb8 100644 --- a/include/dolphin/gx/GXVert.h +++ b/include/dolphin/gx/GXVert.h @@ -102,6 +102,12 @@ static inline void GXPosition3s16(const s16 x, const s16 y, const s16 z) { GXWGFifo.s16 = z; } +static inline void GXPosition3u8(const u8 x, const u8 y, const u8 z) { + GXWGFifo.u8 = x; + GXWGFifo.u8 = y; + GXWGFifo.u8 = z; +} + static inline void GXPosition3f32(const f32 x, const f32 y, const f32 z) { GXWGFifo.f32 = x; GXWGFifo.f32 = y; diff --git a/include/ext_math.h b/include/ext_math.h index 8c748948..5cb24432 100644 --- a/include/ext_math.h +++ b/include/ext_math.h @@ -10,6 +10,8 @@ typedef struct vec2f { } Vec2f; #define ABS(x) (((x) < 0) ? -(x) : (x)) +#define ABS_INV(x) (((x) >= 0) ? (x) : -(x)) + #define VECDistanceXYZ(a, b) sqrtf((((a)->x-(b)->x)*((a)->x-(b)->x))+(((a)->y-(b)->y)*((a)->y-(b)->y))+(((a)->z-(b)->z)*((a)->z-(b)->z))) @@ -18,6 +20,8 @@ typedef struct vec2f { #define VECSumXZ(a, b) sqrtf((((a)->x+(b)->x)*((a)->x+(b)->x))+(((a)->z+(b)->z)*((a)->z+(b)->z))) #define VECMagXZ(a) sqrtf(((a)->x*(a)->x)+((a)->z*(a)->z)) +#define VECMagXY(a) sqrtf(((a)->x*(a)->x)+((a)->y*(a)->y)) + #define VECMag2Point(a) (((a)->x*(a)->x)+((a)->y*(a)->y)+((a)->z*(a)->z)) #define VECMagPoint(x, y, z) sqrtf(((x)*(x))+((y)*(y))+((z)*(z))) diff --git a/include/game/audio.h b/include/game/audio.h index 7481c410..0aa2d3af 100644 --- a/include/game/audio.h +++ b/include/game/audio.h @@ -13,7 +13,7 @@ typedef struct hu_snd_grp_data { } HuSndGrpData; void HuAudInit(void); -s32 HuAudStreamPlay(void); +s32 HuAudStreamPlay(char *name, s32 arg1); void HuAudStreamVolSet(s16 vol); void HuAudStreamPauseOn(void); void HuAudStreamPauseOff(void); diff --git a/include/game/hsfanim.h b/include/game/hsfanim.h index e06f19f9..304bd51d 100644 --- a/include/game/hsfanim.h +++ b/include/game/hsfanim.h @@ -32,8 +32,8 @@ typedef struct { typedef struct particle_data { /* 0x00 */ s16 unk_00; /* 0x02 */ s16 unk_02; - /* 0x04 */ float unk_04; - /* 0x08 */ char unk_08[0x14]; + /* 0x04 */ Vec unk_04; + /* 0x04 */ Vec unk_10; /* 0x1C */ void *unk_1C; /* 0x20 */ s16 unk_20; /* 0x22 */ s16 unk_22; diff --git a/include/game/hsfdraw.h b/include/game/hsfdraw.h index 41741d75..6af28ca4 100755 --- a/include/game/hsfdraw.h +++ b/include/game/hsfdraw.h @@ -28,6 +28,23 @@ typedef struct { /* 0x40 */ char unk40[4]; } HsfdrawStruct01; // Size 0x44 +typedef struct hsf_draw_data { + s32 dlOfs; + s32 dlSize; + u16 polyCnt; + u32 flags; +} HsfDrawData; + +typedef struct hsf_const_data { + u32 flags; + s16 hook; + HsfDrawData *drawData; + void *dlBuf; + Mtx matrix; + AnimData *hiliteMap; +} HsfConstData; + + void Hu3DDrawPreInit(void); void Hu3DDraw(ModelData *arg0, Mtx arg1, Vec *arg2); s32 ObjCullCheck(HsfData *arg0, HsfObject *arg1, Mtx arg2); diff --git a/include/game/hsfformat.h b/include/game/hsfformat.h index 8b804b06..9f7e344c 100644 --- a/include/game/hsfformat.h +++ b/include/game/hsfformat.h @@ -159,16 +159,6 @@ typedef struct hsf_face { float nbt[3]; } HsfFace; -typedef struct hsf_const_data { - u32 flags; - s16 hook; - u8 unk6[2]; - void *unk08; - void *unk0C; - Mtx unk10; - AnimData *hilite_map; -} HsfConstData; - typedef struct hsf_transform { Vec pos; Vec rot; @@ -312,10 +302,11 @@ typedef struct hsf_light { float ref_brightness; float cutoff; } HsfLight; + typedef struct hsf_object { char *name; u32 type; - HsfConstData *constData; + void *constData; u32 flags; union { HsfObjectData data; diff --git a/include/game/hsfman.h b/include/game/hsfman.h index 7e04d841..afc7fb52 100644 --- a/include/game/hsfman.h +++ b/include/game/hsfman.h @@ -242,5 +242,6 @@ extern s32 shadowModelDrawF; extern s16 Hu3DCameraNo; extern s16 Hu3DCameraBit; extern s16 Hu3DPauseF; +extern GXColor BGColor; #endif diff --git a/src/REL/m403Dll/scene.c b/src/REL/m403Dll/scene.c index 71a7f6cf..dfe0a620 100755 --- a/src/REL/m403Dll/scene.c +++ b/src/REL/m403Dll/scene.c @@ -2,6 +2,7 @@ #include "game/audio.h" #include "game/frand.h" #include "game/hsfman.h" +#include "game/hsfdraw.h" #include "game/hsfmotion.h" #include "game/memory.h" #include "game/object.h" diff --git a/src/REL/m404Dll/main.c b/src/REL/m404Dll/main.c index a7b4ea23..c0c92a96 100644 --- a/src/REL/m404Dll/main.c +++ b/src/REL/m404Dll/main.c @@ -1309,10 +1309,7 @@ void fn_1_5E74(AnimData *arg0, u16 arg1, u16 arg2, u16 arg3) break; } - var_r28 = (arg0->bmp->sizeX / var_r30) * ((arg2 / var_r29) << 5); - var_r31 = ((u8 *)arg0->bmp->data) + (var_r28 + ((arg0->bmp->pixSize * ((arg2 % var_r29) * 8)) / 8)); - var_r31 += (arg1 % 8 * arg0->bmp->pixSize) / 8; - var_r31 += (arg1 / var_r30) << 5; + var_r31 = (void *)(((arg1/var_r30)*32)+(((arg1%8)*arg0->bmp->pixSize)/8)+(((arg0->bmp->sizeX / var_r30) * ((arg2 / var_r29) << 5))+((u32)arg0->bmp->data)+((arg0->bmp->pixSize * ((arg2 % var_r29) * 8)) / 8))); switch (arg0->bmp->pixSize) { case 4: @@ -1333,7 +1330,7 @@ void fn_1_5E74(AnimData *arg0, u16 arg1, u16 arg2, u16 arg3) } } -u16 fn_1_607C(AnimData *anim, u16 arg1, u16 arg2) +u16 fn_1_607C(AnimData *arg0, u16 arg1, u16 arg2) { u16 var_r31; u16 var_r30; @@ -1343,8 +1340,8 @@ u16 fn_1_607C(AnimData *anim, u16 arg1, u16 arg2) u32 temp_r6; u8 temp_r0; u8 temp_r0_3; - - switch (anim->bmp->pixSize) { + + switch (arg0->bmp->pixSize) { case 4: var_r31 = lbl_1_data_9F4[0]; var_r30 = lbl_1_data_9F4[1]; @@ -1358,10 +1355,16 @@ u16 fn_1_607C(AnimData *anim, u16 arg1, u16 arg2) var_r30 = lbl_1_data_9F4[5]; break; } - var_r29 = ((u8 *)anim->bmp->data) + ((arg1 / var_r31) << 5) + (arg1 % 8 * anim->bmp->pixSize) / 8 - + (((anim->bmp->sizeX / var_r31) * ((arg2 / var_r30) << 5)) + ((anim->bmp->pixSize * ((arg2 % var_r30) * 8)) / 8)); - - switch (anim->bmp->pixSize) { + var_r29 = (void *)(((arg1/var_r31)*32)+(((arg1%8)*arg0->bmp->pixSize)/8)+(((arg0->bmp->sizeX / var_r31) * ((arg2 / var_r30) << 5))+((u32)arg0->bmp->data)+((arg0->bmp->pixSize * ((arg2 % var_r30) * 8)) / 8))); + + (void)var_r31; + (void)var_r31; + (void)var_r31; + (void)var_r30; + (void)var_r30; + (void)var_r30; + + switch (arg0->bmp->pixSize) { case 4: if ((arg1 & 1) == 0) { var_r28 = *var_r29 >> 4; diff --git a/src/REL/m408Dll/camera.c b/src/REL/m408Dll/camera.c new file mode 100644 index 00000000..4e39b1b1 --- /dev/null +++ b/src/REL/m408Dll/camera.c @@ -0,0 +1,828 @@ +#include "game/object.h" +#include "game/objsub.h" +#include "game/wipe.h" +#include "game/chrman.h" +#include "game/minigame_seq.h" +#include "game/pad.h" + +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/sprite.h" + +#include "game/audio.h" +#include "game/gamework_data.h" + +#include "REL/m408Dll.h" + +#include "math.h" +#include "ext_math.h" + +omObjData *lbl_1_bss_110; +u32 lbl_1_bss_10C; +Vec lbl_1_bss_100; +Vec lbl_1_bss_F4; +HsfanimStruct01 *lbl_1_bss_A4[20]; +u32 lbl_1_bss_A0; +HsfanimStruct01 *lbl_1_bss_94[3]; +s32 lbl_1_bss_88[3]; +s32 lbl_1_bss_84; +s32 lbl_1_bss_80; + +void fn_1_8A20(omObjData *object); +void fn_1_9770(omObjData *object); + +void fn_1_8958(Process *objman) +{ + omObjData *object; + lbl_1_bss_10C = 0; + object = omAddObjEx(objman, 20, 9, 0, -1, fn_1_8A20); + object->work[0] = 0; + lbl_1_bss_110 = omAddObjEx(objman, 21, 2, 0, -1, fn_1_9770); + lbl_1_bss_110->work[0] = 0; + lbl_1_bss_84 = lbl_1_bss_80 = -1; +} + +void fn_1_8FAC(omObjData *object); + +void fn_1_A894(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_B700(s16 arg0, u32 arg1); +void fn_1_BB94(void); +void fn_1_BDE0(void); + +void fn_1_8A20(omObjData *object) +{ + s16 temp_r31; + s32 temp_r29; + for(temp_r29=0; temp_r29<20; temp_r29++) { + lbl_1_bss_A4[temp_r29] = NULL; + } + lbl_1_bss_A0 = 0; + for(temp_r29=0; temp_r29<3; temp_r29++) { + lbl_1_bss_94[temp_r29] = NULL; + lbl_1_bss_88[temp_r29] = 0; + } + object->model[0] = Hu3DModelCreateFile(0x270000); + omSetSca(object, 0.1f, 0.1f, 0.1f); + object->model[1] = Hu3DModelCreateFile(0x270001); + Hu3DModelScaleSet(object->model[1], 0.1f, 0.1f, 0.1f); + Hu3DModelPosSet(object->model[1], 0, 11990, 0); + Hu3DModelShadowMapSet(object->model[1]); + temp_r31 = Hu3DParticleCreate(HuSprAnimReadFile(0x27000B), 1); + object->model[2] = temp_r31; + Hu3DModelLayerSet(temp_r31, 6); + Hu3DParticleColSet(temp_r31, 255, 255, 255); + Hu3DParticleHookSet(temp_r31, fn_1_A894); + Hu3DModelPosSet(temp_r31, 0, 0, 0); + Hu3DData[temp_r31].unk_120->unk_00 = 0; + Hu3DData[temp_r31].unk_120->unk_02 = 0; + temp_r31 = Hu3DParticleCreate(HuSprAnimReadFile(0x27000D), 1); + object->model[3] = temp_r31; + Hu3DParticleBlendModeSet(temp_r31, 1); + Hu3DModelLayerSet(temp_r31, 6); + Hu3DParticleColSet(temp_r31, 255, 255, 255); + Hu3DParticleHookSet(temp_r31, fn_1_A894); + Hu3DModelPosSet(temp_r31, 0, 0, 0); + Hu3DData[temp_r31].unk_120->unk_00 = 0; + Hu3DData[temp_r31].unk_120->unk_02 = 1; + temp_r31 = Hu3DParticleCreate(HuSprAnimReadFile(0x270011), 1); + object->model[5] = temp_r31; + Hu3DModelLayerSet(temp_r31, 7); + Hu3DParticleColSet(temp_r31, 255, 255, 255); + Hu3DParticleHookSet(temp_r31, fn_1_A894); + Hu3DModelPosSet(temp_r31, 0, 0, 0); + Hu3DData[temp_r31].unk_120->unk_00 = 0; + Hu3DData[temp_r31].unk_120->unk_02 = 2; + temp_r31 = Hu3DParticleCreate(HuSprAnimReadFile(0x270010), 8); + object->model[6] = temp_r31; + Hu3DParticleBlendModeSet(temp_r31, 1); + Hu3DModelLayerSet(temp_r31, 6); + Hu3DModelPosSet(temp_r31, 0, 0, 0); + fn_1_B700(temp_r31, 0); + temp_r31 = Hu3DParticleCreate(HuSprAnimReadFile(0x27000F), 6); + object->model[6] = temp_r31; + Hu3DParticleBlendModeSet(temp_r31, 1); + Hu3DModelLayerSet(temp_r31, 6); + Hu3DModelPosSet(temp_r31, 0, 0, 0); + fn_1_B700(temp_r31, 1); + temp_r31 = Hu3DParticleCreate(HuSprAnimReadFile(0x27000D), 5); + object->model[6] = temp_r31; + Hu3DParticleBlendModeSet(temp_r31, 1); + Hu3DModelLayerSet(temp_r31, 6); + Hu3DModelPosSet(temp_r31, 0, 0, 0); + fn_1_B700(temp_r31, 2); + fn_1_BB94(); + lbl_1_bss_10C = 1; + object->func = fn_1_8FAC; + object->work[1] = 0; +} + +void fn_1_9514(omObjData *object); + +void fn_1_8FAC(omObjData *object) +{ + object->work[1]++; + switch(lbl_1_bss_10C) { + case 1: + if(lbl_1_bss_110->work[0] == 4) { + lbl_1_bss_10C = 2; + fn_1_817C(&lbl_1_bss_100, &lbl_1_bss_F4); + object->work[1] = 0; + } + break; + + case 2: + fn_1_817C(&lbl_1_bss_100, &lbl_1_bss_F4); + if(lbl_1_bss_80 < 0) { + lbl_1_bss_80 = HuAudFXPlay(1361); + } + lbl_1_bss_10C = 3; + object->work[1] = 0; + break; + + case 3: + lbl_1_bss_F4.y += -6.666667f; + lbl_1_bss_F4.z += -0.5833334f; + lbl_1_bss_100.y += 20.0f/60.0f; + fn_1_817C(&lbl_1_bss_100, &lbl_1_bss_F4); + if(lbl_1_bss_F4.y > 12010) { + break; + } + if(lbl_1_bss_84 < 0) { + lbl_1_bss_84 = HuAudFXPlay(1357); + } + if(lbl_1_bss_80 >= 0) { + HuAudFXStop(lbl_1_bss_80); + lbl_1_bss_80 = -1; + } + lbl_1_bss_10C = 4; + object->work[1] = 0; + object->work[2] = 0; + break; + + case 4: + if(object->work[1] < 24.0f) { + lbl_1_bss_100.y += 4.0f/12.0f; + fn_1_817C(&lbl_1_bss_100, &lbl_1_bss_F4); + } else { + if(object->work[2] == 0) { + if(!lbl_1_bss_40) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1); + lbl_1_bss_44 = 1; + } + object->work[2]++; + } + CZoom -= 2.5000002f; + if(object->work[1] < 90.0f) { + break; + } + lbl_1_bss_10C = 5; + object->work[1] = 0; + } + break; + + default: + lbl_1_bss_10C = 5; + break; + } + omSetTra(object, Center.x+(sind(CRot.y)*cosd(CRot.x)*CZoom), Center.y+(-sind(CRot.x)*CZoom), Center.z+(cosd(CRot.y)*cosd(CRot.x)*CZoom)); + fn_1_BDE0(); + if(lbl_1_bss_10C == 5) { + Hu3DModelAttrSet(object->model[0], 1); + Hu3DModelAttrSet(object->model[1], 1); + lbl_1_bss_10C = 5; + object->func = fn_1_9514; + } +} + +void fn_1_9514(omObjData *object) +{ + if(!WipeStatGet() && object->work[2] != 0) { + if(!lbl_1_bss_40) { + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1); + lbl_1_bss_44 = 0; + } + object->work[2] = 0; + } + if(fn_1_6878() >= 4) { + Hu3DModelAttrReset(object->model[0], 1); + } + omSetTra(object, Center.x+(sind(CRot.y)*cosd(CRot.x)*CZoom), Center.y+(-sind(CRot.x)*CZoom)-1000, Center.z+(cosd(CRot.y)*cosd(CRot.x)*CZoom)); +} + +typedef struct work_99C8 { + Vec unk0; + Vec unkC; + Vec unk18; + Vec unk24; + Vec unk30; + Vec unk3C; + s32 unk48[2]; +} Work99C8; + +void fn_1_99C8(omObjData *object); +void fn_1_A37C(ModelData *model, ParticleData *particle, Mtx matrix); + +void fn_1_9770(omObjData *object) +{ + Work99C8 *temp_r31; + s32 temp_r29; + + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work99C8), MEMORY_DEFAULT_NUM); + temp_r31 = object->data; + object->model[0] = Hu3DModelCreateFile(0x27000A); + Hu3DModelAttrSet(object->model[0], 0x40000001); + Hu3DMotionSpeedSet(object->model[0], 3.0f); + Hu3DModelShadowSet(object->model[0]); + object->func = fn_1_99C8; + object->work[0] = 0; + object->work[1] = 0; + temp_r31->unk3C.x = temp_r31->unk3C.y = temp_r31->unk3C.z = 0; + temp_r31->unk0.x = temp_r31->unk0.y = temp_r31->unk0.z = 0; + temp_r31->unk0.z = 1000; + omSetTra(object, 0, 12080, -2*temp_r31->unk0.z); + omSetSca(object, 0.5f, 0.5f, 0.5f); + temp_r29 = Hu3DParticleCreate(HuSprAnimReadFile(0x270024), 1024); + object->model[1] = temp_r29; + Hu3DModelLayerSet(temp_r29, 6); + Hu3DParticleColSet(temp_r29, 255, 255, 255); + Hu3DParticleHookSet(temp_r29, fn_1_A37C); + Hu3DModelPosSet(temp_r29, 0, 0, 0); + Hu3DData[temp_r29].unk_120->unk_00 = 0; + temp_r31->unk30.y = -35; + temp_r31->unk30.z = 350; + temp_r31->unk18.y = 800+object->trans.y; + temp_r31->unk48[0] = temp_r31->unk48[1] = -1; + HuDataDirClose(0x27000A); +} + +void fn_1_A334(omObjData *object); +void fn_1_A4E8(s32 arg0, Vec *arg1, u32 arg2); + +void fn_1_99C8(omObjData *object) +{ + float temp_f31; + float temp_f30; + + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + + Work99C8 *temp_r31; + temp_r31 = object->data; + object->trans.x += temp_r31->unk0.x*(1.0f/60.0f); + object->trans.y += temp_r31->unk0.y*(1.0f/60.0f); + object->trans.z += temp_r31->unk0.z*(1.0f/60.0f); + object->work[1]++; + switch(object->work[0]) { + case 0: + if(object->work[1] < 120.0f) { + temp_f30 = (1.0f/60.0f)*(1.5f*(120.0f-object->work[1])); + if(temp_f30 > 1.0f) { + temp_f30 = 1.0f; + } + temp_f31 = temp_r31->unk18.z; + temp_r31->unk30.z -= (175.0f/60.0f)*temp_f30; + temp_r31->unk30.y += 1.1666667f*temp_f30; + temp_r31->unk18.x = object->trans.x+(temp_r31->unk30.z*sind(temp_r31->unk30.y)); + temp_r31->unk18.z = object->trans.z+(temp_r31->unk30.z*cosd(temp_r31->unk30.y)); + temp_r31->unk18.y -= 8.333334f*temp_f30; + temp_r31->unk24.x = 0; + temp_r31->unk24.y = 0; + temp_r31->unk24.z = 0.96f*temp_r31->unk0.z; + } else { + temp_r31->unk18.z += temp_r31->unk24.z*(1.0f/60.0f); + } + temp_r31->unkC.x = object->trans.x; + temp_r31->unkC.y = object->trans.y; + temp_r31->unkC.z = object->trans.z; + sp2C.x = object->trans.x; + sp2C.y = object->trans.y; + sp2C.z = object->trans.z; + if(temp_r31->unk48[0] < 0) { + temp_r31->unk48[0] = HuAudFXEmiterPlay(1362, &sp2C); + } + if(temp_r31->unk48[1] < 0) { + temp_r31->unk48[1] = HuAudFXEmiterPlay(1356, &sp2C); + } + if(object->work[1] < 180.0f) { + break; + } + object->work[0] = 1; + object->work[1] = 0; + break; + + case 1: + temp_r31->unk24.z *= 0.6f; + temp_r31->unk18.z += (temp_r31->unk24.z*(1.0f/60.0f)); + temp_r31->unk18.x += (temp_r31->unk24.z*(1.0f/60.0f)); + temp_r31->unkC.x = object->trans.x; + temp_r31->unkC.y = object->trans.y; + temp_r31->unkC.z = object->trans.z; + if(object->work[1] < 60.0f) { + break; + } + object->work[0] = 2; + object->work[1] = 0; + break; + + case 2: + temp_r31->unk3C.x += 1.5000001f; + temp_r31->unk0.z = 1000.0*cosd(temp_r31->unk3C.x); + temp_r31->unk0.y = 1000.0*sind(temp_r31->unk3C.x); + temp_r31->unkC.x = object->trans.x; + temp_r31->unkC.y = object->trans.y; + temp_r31->unkC.z = object->trans.z; + if(object->work[1] < 120.0f) { + break; + } + object->work[0] = 3; + object->work[1] = 0; + temp_r31->unk3C.x = 180; + break; + + case 3: + temp_r31->unk3C.z += 3.0000002f; + temp_f31 = (1.0f/60.0f)*object->work[1]; + temp_f31 = 1.0f-(temp_f31*temp_f31); + temp_r31->unkC.x += temp_f31*(object->trans.x-temp_r31->unkC.x); + temp_r31->unkC.y += temp_f31*(object->trans.y-temp_r31->unkC.y); + temp_r31->unkC.z += temp_f31*(object->trans.z-temp_r31->unkC.z); + if(object->work[1] < 60.0f) { + break; + } + lbl_1_bss_F4.x = temp_r31->unkC.x; + lbl_1_bss_F4.y = temp_r31->unkC.y; + lbl_1_bss_F4.z = temp_r31->unkC.z; + lbl_1_bss_100.x = temp_r31->unk18.x; + lbl_1_bss_100.y = temp_r31->unk18.y; + lbl_1_bss_100.z = temp_r31->unk18.z; + object->work[0] = 4; + object->work[1] = 0; + break; + + case 4: + temp_r31->unk3C.z += 3.0000002f; + if(object->work[1] > 42.0f) { + if(temp_r31->unk48[0] >= 0) { + HuAudFXStop(temp_r31->unk48[0]); + temp_r31->unk48[0] = -1; + } + if(temp_r31->unk48[1] >= 0) { + HuAudFXStop(temp_r31->unk48[1]); + temp_r31->unk48[1] = -1; + } + } + if(object->work[1] < 240.0f) { + break; + } + object->work[0] = 5; + object->work[1] = 0; + break; + + default: + object->work[0] = 5; + object->func = fn_1_A334; + break; + } + omSetRot(object, -temp_r31->unk3C.x, temp_r31->unk3C.y, temp_r31->unk3C.z); + if(object->trans.y < 12150.0f) { + sp20.x = object->trans.x; + sp20.y = object->trans.y; + sp20.z = object->trans.z+10; + fn_1_A4E8(object->model[1], &sp20, 4); + sp20.x = sp8.x = object->trans.x; + sp20.z = object->trans.z; + sp8.z = object->trans.z-10; + sp20.y = object->trans.y+250.0f; + sp8.y = object->trans.y; + sp14.x = 0; + sp14.y = 0; + sp14.z = 1; + Hu3DShadowPosSet(&sp20, &sp14, &sp8); + } + if(temp_r31->unk48[0] >= 0) { + sp2C.x = object->trans.x-30; + sp2C.y = object->trans.y; + sp2C.z = object->trans.z+25; + HuAudFXEmiterUpDate(temp_r31->unk48[0], &sp2C); + } + if(temp_r31->unk48[1] < 0) { + sp2C.x = object->trans.x+30; + sp2C.y = object->trans.y; + sp2C.z = object->trans.z+25; + HuAudFXEmiterUpDate(temp_r31->unk48[1], &sp2C); + } + if(object->work[0] < 4) { + fn_1_84C4(temp_r31->unk18.x, temp_r31->unk18.y, temp_r31->unk18.z, temp_r31->unkC.x, temp_r31->unkC.y, temp_r31->unkC.z); + } + if(fn_1_C43C() == 5) { + object->func = fn_1_A334; + } +} + +void fn_1_A334(omObjData *object) +{ + Hu3DModelAttrSet(object->model[1], 1); + Hu3DModelAttrSet(object->model[0], 1); +} + + +void fn_1_A37C(ModelData *model, ParticleData *particle, Mtx matrix) +{ + HsfanimStruct01 *temp_r31; + s32 temp_r29; + if(particle->unk_00 == 0) { + particle->unk_00++; + temp_r31 = particle->unk_48; + for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { + temp_r31->unk00 = 0; + temp_r31->unk2C = 0; + temp_r31->unk40.a = 0; + } + } else { + temp_r31 = particle->unk_48; + for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { + if(temp_r31->unk00_s16) { + temp_r31->unk34.x += temp_r31->unk08.x; + temp_r31->unk34.y += temp_r31->unk08.y; + temp_r31->unk34.z += temp_r31->unk08.z; + temp_r31->unk2C += temp_r31->unk14.x; + temp_r31->unk14.y -= temp_r31->unk14.z; + temp_r31->unk40.a = temp_r31->unk14.y; + if(--temp_r31->unk00_s16 == 0) { + temp_r31->unk00_s16 = 0; + temp_r31->unk2C = 0; + temp_r31->unk40.a =0; + } + } + } + DCStoreRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); + } +} + +void fn_1_A4E8(s32 arg0, Vec *arg1, u32 arg2) +{ + float temp_f31; + HsfanimStruct01 *temp_r31; + ParticleData *temp_r30; + s32 temp_r29; + temp_r30 = Hu3DData[arg0].unk_120; + if(temp_r30->unk_00) { + temp_r31 = temp_r30->unk_48; + for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { + if(temp_r31->unk00_s16 != 0) { + continue; + } + temp_r31->unk00_s16 = 60.0f*(((1.5f/1000.0f)*frandmod(1000))+1.0f); + temp_r31->unk34.x = arg1->x; + temp_r31->unk34.y = 12000; + temp_r31->unk34.z = arg1->z; + temp_r31->unk08.x = (1.0f/60.0f)*((0.6f*frandmod(1000))-300.0f); + temp_r31->unk08.y = (1.0f/60.0f)*((0.04f*frandmod(1000))+10.0f); + temp_r31->unk08.z = 0; + temp_r31->unk14.x = 0.3f+((3.0f/1000.0f)*frandmod(1000)); + temp_r31->unk2C = 10; + temp_r31->unk40.a = frandmod(127)+64; + temp_r31->unk14.y = temp_r31->unk40.a; + temp_r31->unk14.z = temp_r31->unk14.y*(1.0f/temp_r31->unk00_s16); + temp_f31 = frandmod(1000)*(1.0f/1000.0f); + temp_r31->unk40.r = (temp_f31*55)+200; + temp_r31->unk40.g = (temp_f31*50)+205; + temp_r31->unk40.b = (temp_f31*5)+250; + if(--arg2 == 0) { + break; + } + } + } +} + +void fn_1_A894(ModelData *model, ParticleData *particle, Mtx matrix) +{ + float temp_f31; + float temp_f30; + HsfanimStruct01 *temp_r31; + s32 temp_r29; + float sp14[][6] = { + { + 600, 1, 0.95, 0.8, 1, 0 + }, + { + 600, 1, 0.6, 0.9, 0.3, 0 + }, + { + 13, 1, 1, 1, 0.5, 0 + }, + }; + Vec sp8; + if(particle->unk_00 == 0) { + particle->unk_00++; + temp_r31 = particle->unk_48; + for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { + temp_r31->unk00 = 1; + temp_r31->unk2C = sp14[particle->unk_02][0]; + temp_r31->unk40.r = 255*sp14[particle->unk_02][1]; + temp_r31->unk40.g = 255*sp14[particle->unk_02][2]; + temp_r31->unk40.b = 255*sp14[particle->unk_02][3]; + temp_r31->unk40.a = 255*sp14[particle->unk_02][4]; + temp_f31 = -70; + temp_f30 = -10; + temp_r31->unk08.x = sind(temp_f30)*cosd(temp_f31); + temp_r31->unk08.y = -sind(temp_f31); + temp_r31->unk08.z = cosd(temp_f30)*cosd(temp_f31); + } + } else { + particle->unk_00++; + if(particle->unk_00 < 339.0f) { + return; + } + if(particle->unk_00 >= 600.0f) { + particle->unk_00 = 601; + temp_r31 = particle->unk_48; + for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { + temp_r31->unk00 = 0; + temp_r31->unk2C = 0; + temp_r31->unk40.a = 0; + } + } else { + temp_r31 = particle->unk_48; + for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { + if(temp_r31->unk00_s16 == 0) { + continue; + } + sp8.x = sind(CRot.y)*cosd(CRot.x); + sp8.y = -sind(CRot.x); + sp8.z = cosd(CRot.y)*cosd(CRot.x); + if(particle->unk_02 < 2) { + temp_f31 = 4500; + temp_r31->unk34.x = (Center.x+(temp_r31->unk08.x*temp_f31))+(sp8.x*CZoom); + temp_r31->unk34.y = (Center.y+(temp_r31->unk08.y*temp_f31))+(sp8.y*CZoom); + temp_r31->unk34.z = (Center.z+(temp_r31->unk08.z*temp_f31))+(sp8.z*CZoom); + if(particle->unk_02 != 0) { + temp_f31 = -((sp8.x*temp_r31->unk08.x)+(sp8.y*temp_r31->unk08.y)+(sp8.z*temp_r31->unk08.z)); + if(temp_f31 > 0.77f) { + temp_f30 = (1.0f/0.23f)*(temp_f31-0.77f); + temp_r31->unk2C = 1400*temp_f30; + temp_r31->unk40.a = (32.0f*temp_f30)+16.0f; + } else { + temp_r31->unk2C = 0; + } + } + } else { + temp_f31 = CZoom-10; + temp_r31->unk34.x = (sp8.x*temp_f31)+Center.x; + temp_r31->unk34.y = (sp8.y*temp_f31)+Center.y; + temp_r31->unk34.z = (sp8.z*temp_f31)+Center.z; + temp_f31 = -((sp8.x*temp_r31->unk08.x)+(sp8.y*temp_r31->unk08.y)+(sp8.z*temp_r31->unk08.z)); + if(temp_f31 > 0.9f) { + temp_f30 = 10.0f*(temp_f31-0.9f); + temp_r31->unk40.a = temp_f30*210.0f; + } else { + temp_r31->unk40.a = 0; + } + } + } + DCStoreRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); + } + } +} + +void fn_1_AFF4(ModelData *model, ParticleData *particle, Mtx matrix) +{ + float temp_f31; + float temp_f30; + HsfanimStruct01 *temp_r30; + s32 temp_r29; + Vec sp20; + Vec sp14; + Vec sp8; + if(particle->unk_00 == 0) { + particle->unk_00++; + temp_f31 = -70; + temp_f30 = -10; + particle->unk_04.x = sind(temp_f30)*cosd(temp_f31); + particle->unk_04.y = -sind(temp_f31); + particle->unk_04.z = cosd(temp_f30)*cosd(temp_f31); + temp_f31 = 0; + temp_r30 = particle->unk_48; + for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r30++) { + temp_r30->unk00 = 1; + temp_f31 += 1.0f/particle->unk_30; + temp_r30->unk2C = 40.0f+((1.0f-temp_f31)*(100.0f+frandmod(1000))); + temp_r30->unk40.r = frandmod(127)+128; + temp_r30->unk40.g = frandmod(127)+128; + temp_r30->unk40.b = frandmod(127)+128; + temp_r30->unk40.a = frandmod(16)+16; + } + } else { + particle->unk_00++; + if(particle->unk_00 < 339.0f) { + return; + } + if(particle->unk_00 >= 600.0f) { + particle->unk_00 = 601; + temp_r30 = particle->unk_48; + for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r30++) { + temp_r30->unk00 = 0; + temp_r30->unk2C = 0; + temp_r30->unk40.a = 0; + } + } else { + sp20.x = sind(CRot.y)*cosd(CRot.x); + sp20.y = -sind(CRot.x); + sp20.z = cosd(CRot.y)*cosd(CRot.x); + temp_f31 = -((-particle->unk_04.x*-sp20.x)+(-particle->unk_04.y*-sp20.y)+(-particle->unk_04.z*-sp20.z)); + sp14.x = -sp20.x+(-2.0f*particle->unk_04.x*temp_f31); + sp14.y = -sp20.y+(-2.0f*particle->unk_04.y*temp_f31); + sp14.z = -sp20.z+(-2.0f*particle->unk_04.z*temp_f31); + temp_f31 = 4500; + sp8.x = (Center.x+(particle->unk_04.x*temp_f31))+(sp20.x*CZoom); + sp8.y = (Center.y+(particle->unk_04.y*temp_f31))+(sp20.y*CZoom); + sp8.z = (Center.z+(particle->unk_04.z*temp_f31))+(sp20.z*CZoom); + temp_r30 = particle->unk_48; + temp_f30 = 0; + for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r30++) { + if(temp_r30->unk00_s16 == 0) { + continue; + } + temp_f30 += 1.0f/particle->unk_30; + temp_f31 = 10.0f*(430.0f*(1.0f-((1.0f-temp_f30)*(1.0f-temp_f30)))); + temp_r30->unk34.x = sp8.x+(sp14.x*temp_f31); + temp_r30->unk34.y = sp8.y+(sp14.y*temp_f31); + temp_r30->unk34.z = sp8.z+(sp14.z*temp_f31); + } + DCStoreRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); + } + } +} + +void fn_1_B700(s16 arg0, u32 arg1) +{ + float temp_f31; + float temp_f30; + HsfanimStruct01 *temp_r31; + ParticleData *temp_r30; + s32 temp_r29; + s32 temp_r27; + float sp1C[] = { + 0.4f, 0.21f, 0.16f, 1.0f + }; + float spC[] = { + 0.15f, 0.6f, 1.3f, 1.0f + }; + s16 sp2C[] = { + 1, 0, + 2, 0, + 0, 1, + 2, 0, + 0, 1, + 2, 1, + 0, 0, + 1, 2, + 0, 1, + 2, -1 + }; + arg1 &= 0x3; + temp_r30 = Hu3DData[arg0].unk_120; + temp_r30->unk_00 = 1; + temp_f31 = -70; + temp_f30 = -10; + temp_r30->unk_04.x = sind(temp_f30)*cosd(temp_f31); + temp_r30->unk_04.y = -sind(temp_f31); + temp_r30->unk_04.z = cosd(temp_f30)*cosd(temp_f31); + temp_r31 = temp_r30->unk_48; + for(temp_r27=0; temp_r27unk_30; temp_r27++, temp_r31++) { + temp_r31->unk00 = 1; + temp_r31->unk02 = arg1; + for(temp_r29=0; sp2C[temp_r29] >= 0; temp_r29++) { + if(arg1 != sp2C[temp_r29]) { + continue; + } + if(lbl_1_bss_A4[temp_r29] == NULL) { + break; + } + } + if(sp2C[temp_r29] < 0) { + temp_r31->unk2C = 0; + temp_r31->unk40.a = 0; + continue; + } + lbl_1_bss_A4[temp_r29] = temp_r31; + lbl_1_bss_A0++; + temp_r31->unk2C = 800.0f*(spC[arg1]*(1.0f+((0.7f/1000.0f)*frandmod(1000)))); + temp_r31->unk40.r = frandmod(160)+32; + temp_r31->unk40.g = frandmod(160)+32; + temp_r31->unk40.b = frandmod(160)+32; + temp_r31->unk40.a = (255.0f*sp1C[arg1])-frandmod(16); + } + lbl_1_bss_94[arg1] = temp_r30->unk_48; + lbl_1_bss_88[arg1] = temp_r30->unk_30; +} + +void fn_1_BB94(void) +{ + float temp_f31; + float temp_f30; + HsfanimStruct01 *temp_r31; + s32 temp_r30; + float sp18[] = { + 0.02f, 0.08f, 0.07f, 0.5f + }; + float sp8[] = { + 0.0009f, 0.00020000001f, 0.00001f, 0.0005f + }; + temp_f31 = 0.1f; + for(temp_r30=0; temp_r30unk02]*(1.0f+(frandmod(1000)*sp8[temp_r31->unk02]))); + temp_f31 += temp_f30; + temp_r31->unk14.x = temp_f31; + temp_f31 += temp_f30; + } + temp_f31 = 1.0f/temp_f31; + for(temp_r30=0; temp_r30unk14.x *= temp_f31; + temp_r31->unk2C *= (0.8f-(0.4f*temp_r31->unk14.x)); + temp_r31->unk14.x = 10.0f*(400.0f*temp_r31->unk14.x); + } + for(temp_r30=0; temp_r30<3; temp_r30++) { + DCStoreRangeNoSync(lbl_1_bss_94[temp_r30], lbl_1_bss_88[temp_r30]*sizeof(HsfanimStruct01)); + } + PPCSync(); +} + +void fn_1_BDE0(void) +{ + float temp_f31; + float temp_f30; + HsfanimStruct01 *temp_r31; + s32 temp_r30; + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + temp_r31 = lbl_1_bss_A4[0]; + temp_r31->unk00_s16++; + if(temp_r31->unk00_s16 < 339.0f) { + return; + } + if(temp_r31->unk00_s16 >= 600.0f) { + temp_r31->unk00_s16 = 601; + for(temp_r30=0; temp_r30unk00_s16 = 0; + temp_r31->unk2C = 0; + temp_r31->unk40.a = 0; + } + return; + } + sp2C.x = sind(CRot.y)*cosd(CRot.x); + sp2C.y = -sind(CRot.x); + sp2C.z = cosd(CRot.y)*cosd(CRot.x); + temp_f31 = -70; + temp_f30 = -10; + sp20.x = sind(temp_f30)*cosd(temp_f31); + sp20.y = -sind(temp_f31); + sp20.z = cosd(temp_f30)*cosd(temp_f31); + temp_f31 = 4500; + sp8.x = (Center.x+(sp20.x*temp_f31))+(sp2C.x*CZoom); + sp8.y = (Center.y+(sp20.y*temp_f31))+(sp2C.y*CZoom); + sp8.z = (Center.z+(sp20.z*temp_f31))+(sp2C.z*CZoom); + temp_f31 = -((-sp20.x*-sp2C.x)+(-sp20.y*-sp2C.y)+(-sp20.z*-sp2C.z)); + sp14.x = -sp2C.x+(-2.0f*sp20.x*temp_f31); + sp14.y = -sp2C.y+(-2.0f*sp20.y*temp_f31); + sp14.z = -sp2C.z+(-2.0f*sp20.z*temp_f31); + if(temp_f31 > 0.5f) { + temp_f30 = 3.0f-(2.0f*temp_f31); + } else { + temp_f30 = 1.0f; + } + for(temp_r30=0; temp_r30unk34.x = sp8.x+(temp_f30*(sp14.x*temp_r31->unk14.x)); + temp_r31->unk34.y = sp8.y+(temp_f30*(sp14.y*temp_r31->unk14.x)); + temp_r31->unk34.z = sp8.z+(temp_f30*(sp14.z*temp_r31->unk14.x)); + } + for(temp_r30=0; temp_r30<3; temp_r30++) { + DCStoreRangeNoSync(lbl_1_bss_94[temp_r30], lbl_1_bss_88[temp_r30]*sizeof(HsfanimStruct01)); + } + PPCSync(); +} + +void fn_1_C3C0(Vec *arg0, Vec *arg1) +{ + arg0->x = lbl_1_bss_110->trans.x; + arg0->y = lbl_1_bss_110->trans.y; + arg0->z = lbl_1_bss_110->trans.z; + arg1->x = lbl_1_bss_110->rot.x; + arg1->y = lbl_1_bss_110->rot.y; + arg1->z = lbl_1_bss_110->rot.z; +} + +u32 fn_1_C43C(void) +{ + return lbl_1_bss_10C; +} \ No newline at end of file diff --git a/src/REL/m408Dll/main.c b/src/REL/m408Dll/main.c new file mode 100644 index 00000000..e516cba7 --- /dev/null +++ b/src/REL/m408Dll/main.c @@ -0,0 +1,1683 @@ +#include "game/object.h" +#include "game/objsub.h" +#include "game/wipe.h" +#include "game/chrman.h" +#include "game/minigame_seq.h" +#include "game/pad.h" + +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/sprite.h" + +#include "game/audio.h" +#include "game/gamework_data.h" + +#include "REL/m408Dll.h" + +#include "math.h" +#include "ext_math.h" + +#include "rel_sqrt_consts.h" + +s32 lbl_1_data_0[] = { + 0x610000, + 0x610001, + 0x610002, + 0x610003, + 0x610004, + 0x610005, + 0x610006, + 0x610007 +}; + +Vec lbl_1_data_20 = { 150, 1250, 150 }; +Vec lbl_1_data_2C = { -0.1, -0.8, 0.1 }; +GXColor lbl_1_data_38 = { 255, 255, 255, 255 }; +Vec lbl_1_data_3C[] = { + { 0, -2000, 0 }, + { 0, 1, 0} +}; +GXColor lbl_1_data_54 = { 255, 255, 255, 255 }; +Vec lbl_1_data_58 = { 50, 15000, 50 }; +Vec lbl_1_data_64 = { 0, 1, 0 }; +Vec lbl_1_data_70 = { 0, 0, 0 }; + +omObjData *lbl_1_bss_78; +omObjData *lbl_1_bss_74; +omObjData *lbl_1_bss_70; +omObjData **lbl_1_bss_6C; +omObjData *lbl_1_bss_68; +s16 lbl_1_bss_66; +s16 lbl_1_bss_64; +u16 lbl_1_bss_62; +u16 lbl_1_bss_60; +s32 lbl_1_bss_5C; +s32 lbl_1_bss_58; +float lbl_1_bss_54; +float lbl_1_bss_50; +u32 lbl_1_bss_4C; +s32 lbl_1_bss_48; +s32 lbl_1_bss_44; +s32 lbl_1_bss_40; +u32 lbl_1_bss_3C; +s32 lbl_1_bss_28[5]; +s32 lbl_1_bss_24; +s32 lbl_1_bss_20; +s32 lbl_1_bss_1C; +s32 lbl_1_bss_18; +s32 lbl_1_bss_14; +s32 lbl_1_bss_10; +s32 lbl_1_bss_C; +omObjData *lbl_1_bss_8; +float lbl_1_bss_4; +s32 lbl_1_bss_0; + +void fn_1_51C(omObjData *object); +void fn_1_9F0(omObjData *object); + +void fn_1_25D4(Process *objman); + +void ModuleProlog(void) +{ + s32 temp_r31; + Process *temp_r30; + s16 temp_r29; + LightData *temp_r28; + Vec sp14 = { 0, 0, 0 }; + Vec sp8 = { 0, 0, -1 }; + HuAudSndGrpSet(33); + HuAudFXListnerSetEX(&sp14, &sp8, 6000, 3656.6667f, 0, 300, 300); + lbl_1_bss_1C = lbl_1_bss_18 = lbl_1_bss_14 = lbl_1_bss_10 = -1; + lbl_1_bss_C = 0; + lbl_1_bss_44 = 1; + lbl_1_bss_40 = 0; + temp_r29 = Hu3DGLightCreateV(&lbl_1_data_20, &lbl_1_data_2C, &lbl_1_data_38); + Hu3DGLightInfinitytSet(temp_r29); + temp_r28 = &Hu3DGlobalLight[temp_r29]; + temp_r28->unk_00 |= 0x8000; + Hu3DShadowCreate(30, 100, 25000); + Hu3DShadowTPLvlSet(0.3f); + Hu3DShadowPosSet(&lbl_1_data_58, &lbl_1_data_64, &lbl_1_data_70); + temp_r30 = omInitObjMan(50, 8192); + omGameSysInit(temp_r30); + for(temp_r31=0; temp_r31<4; temp_r31++) { + CRotM[temp_r31].x = 324.3f; + CRotM[temp_r31].y = 0; + CRotM[temp_r31].z = 0; + CenterM[temp_r31].x = 0; + CenterM[temp_r31].y = 130; + CenterM[temp_r31].z = 224; + CZoomM[temp_r31] = 220; + } + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, -1, 5, 25000, (4.0f/3.0f)); + Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); + lbl_1_bss_70 = omAddObjEx(temp_r30, 32730, 0, 0, -1, omOutView); + lbl_1_bss_62 = 0; + lbl_1_bss_60 = 0; + lbl_1_bss_48 = 0; + lbl_1_bss_78 = omAddObjEx(temp_r30, 10, 0, 0, -1, fn_1_51C); + lbl_1_bss_3C = 0; + for(temp_r31=0; temp_r31<5; temp_r31++) { + lbl_1_bss_28[temp_r31] = -1; + } + lbl_1_bss_74 = omAddObjEx(temp_r30, 50, 0, 0, -1, fn_1_9F0); + fn_1_25D4(temp_r30); + fn_1_C44C(temp_r30); + fn_1_118D0(temp_r30); + fn_1_8958(temp_r30); +} + +void fn_1_56C(omObjData *object); +void fn_1_9A4(omObjData *object); + +void fn_1_51C(omObjData *object) +{ + lbl_1_bss_66 = 30; + lbl_1_bss_64 = 60; + lbl_1_bss_4C = 4; + lbl_1_bss_62 = 0; + object->func = fn_1_56C; +} + + +void fn_1_56C(omObjData *object) +{ + s32 temp_r30 = 0; + Vec sp14; + Vec sp8; + switch(lbl_1_bss_62) { + case 0: + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + lbl_1_bss_44 = 0; + Hu3DCameraPerspectiveSet(1, 50, 5, 25000, (4.0f/3.0f)); + lbl_1_bss_62 = 1; + break; + + case 1: + if(fn_1_C43C() == 5) { + lbl_1_bss_62 = 2; + } + break; + + case 2: + if(fn_1_6878() == 5) { + object->work[0] = 0; + lbl_1_bss_62 = 3; + } + break; + + case 3: + if(lbl_1_bss_4C == 0 || WipeStatGet() == 0) { + if(++object->work[0] >= 210.0f) { + lbl_1_bss_62 = 4; + } + } + break; + + case 4: + lbl_1_bss_62 = 5; + break; + + case 5: + if(fn_1_C43C() == 5) { + temp_r30 = 1; + lbl_1_bss_62 = 5; + } + break; + } + sp8.x = -(sind(CRot.y)*cosd(CRot.x)); + sp8.y = -(-sind(CRot.x)); + sp8.z = -(cosd(CRot.y)*cosd(CRot.x)); + sp14.x = Center.x-(sp8.x*CZoom); + sp14.y = Center.y-(sp8.y*CZoom); + sp14.z = Center.z-(sp8.z*CZoom); + HuAudFXListnerUpdate(&sp14, &sp8); + if((omSysExitReq && !WipeStatGet()) && !lbl_1_bss_44 || temp_r30) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + lbl_1_bss_44 = 1; + lbl_1_bss_40 = 1; + if(lbl_1_bss_10 >= 0) { + HuAudFXFadeOut(lbl_1_bss_10, 30); + } + object->func = fn_1_9A4; + } +} + +void fn_1_9A4(omObjData *object) +{ + if(!WipeStatGet()) { + CharModelKill(-1); + MGSeqKillAll(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + } +} + +void fn_1_A40(omObjData *object); + +void fn_1_9F0(omObjData *object) +{ + lbl_1_bss_54 = 12000; + lbl_1_bss_50 = 0; + lbl_1_bss_60 = 0; + object->func = fn_1_A40; +} + +void fn_1_CD8(omObjData *object); + +u32 fn_1_6868(void); + +void fn_1_A40(omObjData *object) +{ + if(fn_1_6868() != 2) { + return; + } + switch(lbl_1_bss_60) { + case 0: + Hu3DCameraPerspectiveSet(1, 35, 5, 25000, (4.0f/3.0f)); + CRot.x = -80.5f; + CRot.y = CRot.z = 0; + Center.x = 0; + Center.y = lbl_1_bss_54; + Center.z = 0; + CZoom = 260; + lbl_1_bss_60 = 1; + break; + + case 1: + lbl_1_bss_24 = MGSeqStartCreate(); + MGSeqPosSet(lbl_1_bss_24, 320, 240); + lbl_1_bss_60 = 2; + + + case 2: + Center.y = lbl_1_bss_54; + lbl_1_bss_50 = -400.0f;; + lbl_1_bss_54 += lbl_1_bss_50*(1.0f/60.0f); + if(lbl_1_bss_1C < 0 && (MGSeqStatGet(lbl_1_bss_24) & 0x10)) { + lbl_1_bss_1C = HuAudSeqPlay(74); + } + if(MGSeqStatGet(lbl_1_bss_24) == 0) { + lbl_1_bss_60 = 3; + object->func = fn_1_CD8; + } + + break; + } +} + +void fn_1_8020(void); + +void fn_1_EF8(omObjData *object); + +void fn_1_12A0(omObjData *object); + +void fn_1_CD8(omObjData *object) +{ + Center.y = lbl_1_bss_54; + lbl_1_bss_50 = -400.0f; + lbl_1_bss_54 += lbl_1_bss_50*(1.0f/60.0f); + fn_1_8020(); + if(lbl_1_bss_4C == 0) { + lbl_1_bss_48 = 1; + lbl_1_bss_20 = MGSeqFinishCreate(); + MGSeqPosSet(lbl_1_bss_20, 320, 240); + HuAudSeqFadeOut(lbl_1_bss_1C, 100); + object->func = fn_1_12A0; + } else { + if(lbl_1_bss_54 <= (-lbl_1_bss_50*0.5f)) { + lbl_1_bss_20 = MGSeqFinishCreate(); + MGSeqPosSet(lbl_1_bss_20, 320, 240); + HuAudSeqFadeOut(lbl_1_bss_1C, 100); + lbl_1_bss_50 = -120.00001f; + lbl_1_bss_54 = -lbl_1_bss_50*2.0f; + lbl_1_bss_60 = 4; + object->func = fn_1_EF8; + + } + } +} + +void fn_1_18C0(omObjData *object); + +void fn_1_EF8(omObjData *object) +{ + Vec sp30; + Vec sp24; + Vec sp18; + Vec spC; + float temp_f29; + if(lbl_1_bss_10 < 0) { + lbl_1_bss_10 = HuAudFXPlay(1360); + } + sp30.x = 0; + sp30.y = 50; + sp30.z = 230; + temp_f29 = atan2d(lbl_1_bss_54-sp30.y, sp30.z); + if(temp_f29 < 0.0f) { + temp_f29 += 360.0f; + } + Center.x = 0; + Center.y = lbl_1_bss_54; + Center.z = 0; + CRot.x = temp_f29; + CZoom = sqrtf((sp30.z*sp30.z)+((lbl_1_bss_54-sp30.y)*(lbl_1_bss_54-sp30.y))); + spC.x = 0; + spC.z = 0; + sp24.x = 200; + sp24.z = 200; + sp24.y = 800; + spC.y = 20; + sp18.x = sp18.y = 0; + sp18.z = 1; + Hu3DShadowPosSet(&sp24, &sp18, &spC); + Hu3DShadowTPLvlSet(0.5f); + lbl_1_bss_54 += lbl_1_bss_50*(1.0f/60.0f); + if(lbl_1_bss_54 <= 0.0f) { + lbl_1_bss_54 = 0; + lbl_1_bss_60 = 5; + object->func = fn_1_18C0; + } +} + +void fn_1_148C(omObjData *object); + +void fn_1_12A0(omObjData *object) +{ + if(lbl_1_bss_54 > (-lbl_1_bss_50*0.8f)) { + Center.y = lbl_1_bss_54; + lbl_1_bss_50 = -400; + lbl_1_bss_54 += lbl_1_bss_50*(1.0f/60.0f); + } + if(MGSeqStatGet(lbl_1_bss_20)) { + return; + } + switch(fn_1_CE68()) { + case 0: + OSReport("Map 0\n"); + case 1: + OSReport("Map 1\n"); + if(lbl_1_bss_40 == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + lbl_1_bss_44 = 1; + } + object->func = fn_1_148C; + break; + + case 2: + OSReport("Map 2\n"); + case 3: + OSReport("Map 3\n"); + break; + + case 4: + OSReport("Map 4\n"); + if(lbl_1_bss_40 == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 30); + lbl_1_bss_44 = 1; + } + object->func = fn_1_148C; + break; + } +} + +void fn_1_148C(omObjData *object) +{ + Vec sp30; + Vec sp24; + Vec sp18; + Vec spC; + float temp_f29; + if(!WipeStatGet()) { + lbl_1_bss_54 = 0; + sp30.x = 0; + sp30.y = 50; + sp30.z = 230; + temp_f29 = atan2d(lbl_1_bss_54-sp30.y, sp30.z); + if(temp_f29 < 0.0f) { + temp_f29 += 360.0f; + } + Center.x = 0; + Center.y = lbl_1_bss_54; + Center.z = 0; + CRot.x = temp_f29; + CZoom = sqrtf((sp30.z*sp30.z)+((lbl_1_bss_54-sp30.y)*(lbl_1_bss_54-sp30.y))); + spC.x = 0; + spC.z = 0; + sp24.x = 200; + sp24.z = 200; + sp24.y = 800; + spC.y = 20; + sp18.x = sp18.y = 0; + sp18.z = 1; + Hu3DShadowPosSet(&sp24, &sp18, &spC); + Hu3DShadowTPLvlSet(0.5f); + fn_1_CEEC(); + if(lbl_1_bss_10 < 0) { + lbl_1_bss_10 = HuAudFXPlay(1360); + } + if(lbl_1_bss_40 == 0) { + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + lbl_1_bss_44 = 0; + } + lbl_1_bss_60 = 5; + object->func = fn_1_18C0; + } else { + if(lbl_1_bss_54 > (-lbl_1_bss_50*0.8f)) { + Center.y = lbl_1_bss_54; + lbl_1_bss_50 = -400; + lbl_1_bss_54 += lbl_1_bss_50*(1.0f/60.0f); + } + } +} + +void fn_1_18C0(omObjData *object) +{ + if(!WipeStatGet() && lbl_1_bss_14 < 0) { + if(lbl_1_bss_C) { + lbl_1_bss_14 = HuAudSStreamPlay(1); + } else { + lbl_1_bss_14 = HuAudSStreamPlay(4); + } + } +} + +float lbl_1_data_A0[] = { + 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7 +}; + + +void fn_1_1940(Work2FAC *arg0, Vec *arg1) +{ + Mtx sp18; + Vec spC; + spC.x = sind(arg0->unk58.x+90.0f); + spC.y = 0; + spC.z = cosd(arg0->unk58.x+90.0f); + MTXRotAxisDeg(sp18, &spC, arg0->unk58.y); + spC.x = spC.z = 0; + spC.y = -lbl_1_data_A0[arg0->unk2]; + MTXMultVec(sp18, &spC, arg1); +} + +void fn_1_1A60(Vec *arg0, Vec *arg1, Vec *arg2, Vec *arg3) +{ + Mtx spC; + mtxRot(spC, arg1->x, arg1->y, arg1->z); + MTXMultVec(spC, arg2, arg3); + arg3->x += arg0->x; + arg3->y += arg0->y; + arg3->z += arg0->z; +} + +void fn_1_1AF8(Work2FAC *arg0, s32 arg1, Vec *arg2) +{ + float temp_f31; + float temp_f30; + temp_f30 = temp_f31 = 0; + arg2->x = (temp_f31*sind(temp_f30))+arg0->unk1C.x; + arg2->y = 15.0f+arg0->unk1C.y+temp_f31; + arg2->z = (temp_f31*cosd(temp_f30))+arg0->unk1C.z; +} + +void fn_1_1BE8(omObjData *arg0, float arg1) +{ + Vec sp8; + Work2FAC *temp_r31 = arg0->data; + float temp_f31 = 1.0f-arg1; + float temp_f29; + if(!temp_r31->unk8) { + return; + } + fn_1_1AF8(temp_r31, 1, &sp8); + if(fn_1_6878() >= 4) { + sp8.z += -5.0f; + } + temp_r31->unk94.x = (temp_r31->unk94.x*temp_f31)+(sp8.x*arg1); + temp_r31->unk94.y = (temp_r31->unk94.y*temp_f31)+(sp8.y*arg1); + temp_r31->unk94.z = (temp_r31->unk94.z*temp_f31)+(sp8.z*arg1); + temp_f29 = (0.1f*((temp_r31->unk8*0.5f)+0.5f))*arg1; + temp_r31->unkA0.x = temp_r31->unkC*(temp_f29+(temp_r31->unkA0.x*temp_f31)); + temp_r31->unkA0.y = temp_r31->unkC*(temp_f29+(temp_r31->unkA0.y*temp_f31)); + temp_r31->unkA0.z = temp_r31->unkC*(temp_f29+(temp_r31->unkA0.z*temp_f31)); + Hu3DModelPosSetV(arg0->model[1], &temp_r31->unk94); + Hu3DModelScaleSetV(arg0->model[1], &temp_r31->unkA0); +} + +void fn_1_1E54(omObjData *object) +{ + Work2FAC *work = object->data; + if(work->unk8) { + work->unk94.y += 0.5f; + Hu3DModelPosSetV(object->model[1], &work->unk94); + } +} + +s32 fn_1_1EBC(omObjData *object) +{ + float temp_f31; + float temp_f22; + float temp_f21; + Vec sp3C; + Vec sp30; + Vec sp24; + + Work2FAC *temp_r31 = object->data; + temp_f31 = (temp_r31->unk1C.x*temp_r31->unk1C.x)+((10.0f/7.0f)*((10.0f/7.0f)*temp_r31->unk1C.z*temp_r31->unk1C.z)); + if(temp_f31 > 6400) { + temp_f22 = 80.0f/sqrtf(temp_f31); + sp3C.x = temp_r31->unk1C.x*temp_f22; + sp3C.z = temp_r31->unk1C.z*temp_f22; + temp_r31->unk34.x = sp3C.x-temp_r31->unk1C.x; + temp_r31->unk34.z = sp3C.z-temp_r31->unk1C.z; + temp_f21 = 80.0f*sqrtf(0.51f); + sp30.x = temp_f21-sp3C.x; + sp30.z = -sp3C.z; + sp24.x = -temp_f21-sp3C.x; + sp24.z = -sp3C.z; + temp_f31 = 1.0f/VECMagXZ(&sp30); + sp30.x *= temp_f31; + sp30.z *= temp_f31; + temp_f31 = 1.0f/VECMagXZ(&sp24); + sp24.x *= temp_f31; + sp24.z *= temp_f31; + sp30.x += sp24.x; + sp30.z += sp24.z; + temp_f31 = 1.0f/VECMagXZ(&sp30); + sp30.x *= temp_f31; + sp30.z *= temp_f31; + temp_f22 = -((sp30.x*temp_r31->unk28.x)+(sp30.z*temp_r31->unk28.z)); + temp_r31->unk28.x += (sp30.x*20.0f)+(sp30.x*2.0f*temp_f22); + temp_r31->unk28.z += (sp30.z*20.0f)+(sp30.z*2.0f*temp_f22); + return 1; + } else { + return 0; + } +} + +void fn_1_26E4(omObjData *object); +void fn_1_61FC(omObjData *object); + +void fn_1_25D4(Process *objman) +{ + s32 i; + omMakeGroupEx(objman, 0, 4); + lbl_1_bss_6C = omGetGroupMemberListEx(objman, 0); + lbl_1_bss_58 = 0; + for(i=0; i<4; i++) { + omObjData *object = omAddObjEx(objman, 40, 5, 7, 0, fn_1_26E4); + if(!GWPlayerCfg[i].iscom) { + lbl_1_bss_58++; + } + object->work[0] = i; + } + lbl_1_bss_8 = omAddObjEx(objman, 10, 0, 0, -1, fn_1_61FC); + +} + +s32 lbl_1_data_C8[] = { + 0x270002, + 0x270003, + 0x270004, + 0x270005, + 0x270006, + 0x270007, + 0x270008, + 0x270009, +}; + +u32 lbl_1_data_E8[] = { + 0, + 23, + 24, + 0x27002C, + 0x27003C, + 0x270034, + 22 +}; + +float lbl_1_data_104[][2] = { + -40, -30, + 40, -30, + -40, 30, + 40, 30 +}; + +float lbl_1_data_124[][2] = { + 0, -56, + 0, 56, + -80, 0, + 80, 0 +}; + +void fn_1_2FAC(omObjData *object); +void fn_1_5AB4(ModelData *model, ParticleData *particle, Mtx matrix); + +void fn_1_26E4(omObjData *object) +{ + Work2FAC *temp_r31; + s32 temp_r28; + s32 temp_r27; + + float sp20[4] = { 0.25, 0.5, 0.75, 1.0 }; + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work2FAC), MEMORY_DEFAULT_NUM); + temp_r31 = object->data; + memset(temp_r31, 0, sizeof(Work2FAC)); + temp_r31->unk0 = object->work[0]; + temp_r31->unk2 = GWPlayerCfg[temp_r31->unk0].character; + temp_r31->unk2 &= 0x7; + temp_r31->unk4 = 0; + temp_r31->unk90 = sp20[GWPlayerCfg[object->work[0]].diff & 0x3]; + temp_r31->unk1C.x = lbl_1_data_104[temp_r31->unk0][0]; + temp_r31->unk1C.y = lbl_1_bss_54; + temp_r31->unk1C.z = lbl_1_data_104[temp_r31->unk0][1]; + temp_r31->unk28.x = temp_r31->unk28.y = temp_r31->unk28.z = 0; + temp_r31->unk34.x = temp_r31->unk34.y = temp_r31->unk34.z = 0; + temp_r31->unk58.y = 0; + temp_r31->unk58.x = 0; + temp_r31->unk4C.x = temp_r31->unk4C.y = temp_r31->unk4C.z = 0; + temp_r31->unk58.z = 9.0f; + temp_r31->unk40.x = temp_r31->unk40.y = temp_r31->unk40.z = 0; + temp_r31->unk8 = 4; + temp_r31->unkC = 0; + fn_1_1940(temp_r31, &temp_r31->unk68); + omSetTra(object, temp_r31->unk1C.x+temp_r31->unk68.x, temp_r31->unk1C.y+temp_r31->unk68.y, temp_r31->unk1C.z+temp_r31->unk68.z); + omSetSca(object, 0.075f, 0.075f, 0.075f); + object->model[0] = CharModelCreate(temp_r31->unk2, 4); + for(temp_r28=0; temp_r28<7; temp_r28++) { + if(lbl_1_data_E8[temp_r28] < 0x10000) { + object->motion[temp_r28] = CharModelMotionCreate(temp_r31->unk2, lbl_1_data_E8[temp_r28]); + } else { + object->motion[temp_r28] = Hu3DJointMotionFile(object->model[0], temp_r31->unk2+lbl_1_data_E8[temp_r28]); + } + } + CharModelVoiceEnableSet(temp_r31->unk2, object->motion[1], 0); + CharModelMotionShiftSet(temp_r31->unk2, object->motion[0], 0, 0.2, 0x40000001); + CharModelLayerSetAll(2); + CharModelMotionDataClose(temp_r31->unk2); + object->model[1] = Hu3DModelCreateFile(lbl_1_data_C8[temp_r31->unk2]); + Hu3DModelLayerSet(object->model[1], 6); + Hu3DModelScaleSet(object->model[1], 0.1f*temp_r31->unk8, 0.1f*temp_r31->unk8, 0.1f*temp_r31->unk8); + Hu3DModelAttrSet(object->model[1], 1); + temp_r31->unk94.x = temp_r31->unk94.y = temp_r31->unk94.z = 0; + temp_r31->unkA0.x = temp_r31->unkA0.y = temp_r31->unkA0.z = 0; + fn_1_1BE8(object, 1.0f); + temp_r27 = Hu3DParticleCreate(HuSprAnimReadFile(0x270024), 256); + object->model[2] = temp_r27; + Hu3DModelLayerSet(temp_r27, 6); + Hu3DParticleColSet(temp_r27, 255, 255, 255); + Hu3DParticleHookSet(temp_r27, fn_1_5AB4); + Hu3DModelPosSet(temp_r27, 0, 0, 0); + Hu3DData[temp_r27].unk_120->unk_00 = 0; + temp_r31->unk74 = temp_r31->unk78 = 0; + temp_r31->unk7C[0] = temp_r31->unk7C[1] = 0; + temp_r31->unk8C = -1; + temp_r31->unk8E = 0; + temp_r31->unk84[0] = temp_r31->unk84[1] = 0; + object->work[1] = 0; + object->func = fn_1_2FAC; +} + +void fn_1_5DCC(s32 arg0, Vec *arg1, u32 arg2); +void fn_1_3E80(omObjData *object); + +void fn_1_2FAC(omObjData *object) +{ + Work2FAC *temp_r31 = object->data; + Vec sp78[] = { + { 8, -25, -18 }, + { 2, -25, -10 }, + { 2, -25, -24 }, + { -3, -25, -15} + }; + Vec sp3C; + Vec sp30; + Vec sp24; + float sp14[] = { + 45, + 135, + 225, + 315 + }; + float temp_f27; + switch(object->work[1]) { + case 0: + fn_1_C3C0(&sp3C, &sp30); + fn_1_1A60(&sp3C, &sp30, &sp78[temp_r31->unk0], &sp24); + omSetRot(object, 0, 90, 0); + omSetTra(object, sp24.x, sp24.y, sp24.z); + if(fn_1_C43C() != 1) { + object->work[1]++; + temp_r31->unk58.y = 60; + temp_r31->unk58.x = sp14[temp_r31->unk0]; + temp_r31->unk28.x = temp_r31->unk28.y = temp_r31->unk28.z = 0; + object->trans.x -= 10.0*(2.0*sind(temp_r31->unk58.x)); + object->trans.z -= 10.0*(2.0*cosd(temp_r31->unk58.x)); + CharModelMotionShiftSet(temp_r31->unk2, object->motion[4], 0, 0.2, 0x40000001); + temp_r31->unk1C.x = temp_r31->unk94.x = object->trans.x; + temp_r31->unk1C.y = temp_r31->unk94.y = object->trans.y; + temp_r31->unk1C.z = temp_r31->unk94.z = object->trans.z; + } + break; + + case 1: + temp_r31->unk28.y += -98.0f; + if(temp_r31->unk28.y < -400.0f) { + temp_r31->unk28.y = -400.0f; + } + temp_f27 = object->trans.y; + object->trans.y += temp_r31->unk28.y*(1.0f/60.0f); + temp_r31->unk58.x += 1.5000001f; + if(temp_r31->unk58.x >= 360.0f) { + temp_r31->unk58.x -= 360.0f; + } + object->trans.x += (3.141590118408203f*(10.0*sind(temp_r31->unk58.x-90.0f)))*(1.0f/60.0f); + object->trans.z += (3.141590118408203f*(10.0*cosd(temp_r31->unk58.x-90.0f)))*(1.0f/60.0f); + if(temp_f27 > 12000 && object->trans.y <= 12000){ + sp3C.x = object->trans.x; + sp3C.y = object->trans.y; + sp3C.z = object->trans.z; + fn_1_5DCC(object->model[2], &sp3C, 100); + } + temp_r31->unk4C.x = temp_r31->unk58.y; + temp_r31->unk4C.y = temp_r31->unk58.x; + temp_r31->unk4C.z = 0; + temp_r31->unk1C.x = object->trans.x; + temp_r31->unk1C.y = object->trans.y; + temp_r31->unk1C.z = object->trans.z; + omSetRot(object, temp_r31->unk4C.x, temp_r31->unk4C.y, temp_r31->unk4C.z); + Hu3DModelAttrReset(object->model[1], 0x1); + temp_r31->unkC += 0.2f*(1.0f-temp_r31->unkC); + if(object->trans.y < 11940) { + object->work[1]++; + } + break; + } + fn_1_1BE8(object, 1.0f); + if(fn_1_6878() == 1) { + omSetSca(object, 0.15f, 0.15f, 0.15f); + object->trans.x = temp_r31->unk1C.x = temp_r31->unk94.x = lbl_1_data_104[temp_r31->unk0][0]; + object->trans.y = temp_r31->unk1C.y = temp_r31->unk94.y = lbl_1_bss_54; + object->trans.z = temp_r31->unk1C.z = temp_r31->unk94.z = lbl_1_data_104[temp_r31->unk0][1]; + object->rot.y = temp_r31->unk58.x = atan2d(object->trans.x, object->trans.z)+180.0; + Hu3DModelAttrReset(object->model[1], 1); + Hu3DData[object->model[2]].unk_120->unk_00 = 0; + object->func = fn_1_3E80; + } +} + +void fn_1_38D0(omObjData *arg0, s8 *arg1, s8 *arg2) +{ + float temp_f31; + float temp_f30; + float temp_f29; + Work2FAC *temp_r31; + Work2FAC *temp_r30; + s8 temp_r29; + s32 temp_r28; + s32 temp_r25; + Vec sp18; + Vec spC; + s8 sp8[4]; + + temp_r31 = arg0->data; + *arg1 = temp_r31->unk7C[0]; + *arg2 = temp_r31->unk7C[1]; + sp18.x = temp_r31->unk1C.x; + sp18.y = temp_r31->unk1C.y; + sp18.z = temp_r31->unk1C.z; + temp_r25 = fn_1_162CC(&sp18, &spC); + temp_r29 = 0; + sp8[0] = -1; + for(temp_r28=0; temp_r28<4; temp_r28++) { + if(temp_r28 != temp_r31->unk0) { + temp_r30 = fn_1_68A8(temp_r28); + if((temp_r30->unk4 & 0x12) == 0) { + sp8[temp_r29++] = temp_r28; + } + } + } + switch(temp_r31->unk8E) { + case 0: + if(temp_r29 > 0 || temp_r25) { + if(temp_r29 > 0) { + temp_r31->unk8C = sp8[frandmod(temp_r29)]; + } + temp_r31->unk74 = frandmod(180)+120.0f; + temp_r31->unk78 = 0; + temp_r31->unk8E = 1; + } else { + temp_r31->unk78 = 0; + temp_r31->unk8E = 2; + } + break; + + case 1: + if((temp_r31->unk78 & 0x3) == 0) { + if(temp_r25) { + temp_f31 = atan2d(spC.x-temp_r31->unk1C.x, spC.z-temp_r31->unk1C.z); + } else { + temp_r30 = fn_1_68A8(temp_r31->unk8C); + temp_f31 = atan2d(temp_r30->unk1C.x-temp_r31->unk1C.x, temp_r30->unk1C.z-temp_r31->unk1C.z); + } + temp_r31->unk84[1] = fn_1_883C(temp_r31->unk84[0], temp_f31, (0.3f*temp_r31->unk90)+0.15f); + } + temp_r31->unk78++; + temp_r31->unk84[0] = fn_1_883C(temp_r31->unk84[0], temp_r31->unk84[1], 0.2f); + temp_r31->unk7C[0] = sind(temp_r31->unk84[0])*80.0; + temp_r31->unk7C[1] = -cosd(temp_r31->unk84[0])*80.0; + *arg1 = temp_r31->unk7C[0]; + *arg2 = temp_r31->unk7C[1]; + temp_r31->unk74--; + if(temp_r25 == 0 && (temp_r30->unk4 & 0x12)) { + temp_r31->unk74 = 0; + } + if(temp_r31->unk74 == 0) { + temp_r31->unk8E = 0; + } + break; + + case 2: + if((temp_r31->unk78 & 0xF) == 0) { + temp_f30 = (0.04f*frandmod(1000))-20.0f; + temp_f29 = (0.04f*frandmod(1000))-20.0f; + temp_r31->unk84[1] = temp_f31 = atan2d(temp_f30-temp_r31->unk1C.x, temp_f29-temp_r31->unk1C.z); + } + temp_r31->unk78++; + temp_r31->unk84[0] = fn_1_883C(temp_r31->unk84[0], temp_r31->unk84[1], 0.2f); + temp_r31->unk7C[0] = sind(temp_r31->unk84[0])*80.0; + temp_r31->unk7C[1] = -cosd(temp_r31->unk84[0])*80.0; + *arg1 = temp_r31->unk7C[0]; + *arg2 = temp_r31->unk7C[1]; + if(temp_r29 > 0 || temp_r25) { + temp_r31->unk8E = 0; + } + break; + } + +} + +#define CHECK_IDLE(pos) (((pos) < 0) ? -(pos) : ((pos)>15)) + +void fn_1_4A58(omObjData *object); +void fn_1_5098(omObjData *object); +void fn_1_5684(omObjData *object); + +void fn_1_3E80(omObjData *object) +{ + Work2FAC *temp_r31; + s32 temp_r27; + + float temp_f29; + float temp_f28; + float temp_f22; + float temp_f21; + float temp_f20; + s8 sp9; + s8 sp8; + + temp_r31 = object->data; + temp_r27 = GWPlayerCfg[temp_r31->unk0].pad_idx; + sp9 = sp8 = 0; + if(lbl_1_bss_60 == 3) { + if(!GWPlayerCfg[temp_r31->unk0].iscom) { + sp9 = HuPadStkX[temp_r27]; + sp8 = HuPadStkY[temp_r27]; + } else { + fn_1_38D0(object, &sp9, &sp8); + } + } + temp_r31->unk1C.y = lbl_1_bss_54; + temp_f21 = temp_f20 = 0; + temp_f28 = temp_r31->unk58.x; + temp_f22 = -20; + if(CHECK_IDLE(sp9) || CHECK_IDLE(sp8)) { + temp_f28 = atan2d(sp9, -sp8); + if(temp_f28 < 0) { + temp_f28 += 360; + } + temp_f21 = 70*sind(temp_f28); + temp_f20 = 70*cosd(temp_f28); + temp_f22 = 30; + } + fn_1_1EBC(object); + temp_r31->unk28.x = ((28.0f/30.0f)*temp_r31->unk28.x)+((2.0f/30.0f)*temp_f21); + temp_r31->unk28.z = ((28.0f/30.0f)*temp_r31->unk28.z)+((2.0f/30.0f)*temp_f20); + temp_f29 = VECMagXZ(&temp_r31->unk28); + if(temp_f29 > 200.0f) { + temp_f29 = 200.0f/temp_f29; + temp_r31->unk28.x *= temp_f29; + temp_r31->unk28.z *= temp_f29; + } + temp_r31->unk34.x += (temp_r31->unk28.x*(1.0f/60.0f)); + temp_r31->unk34.y = 0; + temp_r31->unk34.z += (temp_r31->unk28.z*(1.0f/60.0f)); + temp_r31->unk58.x = temp_f28; + temp_r31->unk58.y = (0.9f*temp_r31->unk58.y)+(0.1f*temp_f22); + temp_r31->unk4C.x = temp_r31->unk58.y; + temp_r31->unk4C.y = fn_1_883C(temp_r31->unk4C.y, temp_r31->unk58.x, 0.2f); + temp_r31->unk4C.z = 0; + omSetRot(object, temp_r31->unk4C.x, temp_r31->unk4C.y, temp_r31->unk4C.z); + fn_1_1940(temp_r31, &temp_r31->unk68); + omSetTra(object, temp_r31->unk1C.x+temp_r31->unk68.x, temp_r31->unk1C.y+temp_r31->unk68.y, temp_r31->unk1C.z+temp_r31->unk68.z); + temp_r31->unkC += (1.0f-temp_r31->unkC)*0.2f; + fn_1_1BE8(object, 0.3f); + if(temp_r31->unk4 & 0x1) { + temp_r31->unk8--; + temp_r31->unk10 = 0; + temp_r31->unk4 |= 2; + temp_f29 = VECMagXZ(&temp_r31->unk40); + if(temp_f29 > 0.0f) { + temp_f29 = 150.0f/temp_f29; + } + temp_r31->unk28.x = temp_r31->unk40.x*temp_f29; + temp_r31->unk28.z = temp_r31->unk40.z*temp_f29; + temp_r31->unk34.x = temp_r31->unk28.x*(1.0f/60.0f); + temp_r31->unk34.z = temp_r31->unk28.z*(1.0f/60.0f); + CharModelMotionShiftSet(temp_r31->unk2, object->motion[5], 0, 0.2f, 0); + HuAudFXPlay(1358); + omVibrate(object->work[0], 12, 4, 2); + if(temp_r31->unk8) { + HuAudCharVoicePlay(temp_r31->unk2, 296); + object->func = fn_1_4A58; + } else { + temp_r31->unk4 |= 0x30; + lbl_1_bss_4C--; + HuAudCharVoicePlay(temp_r31->unk2, 291); + object->func = fn_1_5684; + } + } + if(fn_1_6878() == 4 && (temp_r31->unk4 & 0x20) == 0) { + CharModelMotionShiftSet(temp_r31->unk2, object->motion[3], 0, 0.2f, 0); + Hu3DModelShadowSet(object->model[0]); + object->work[1] = 0; + object->func = fn_1_5098; + } +} +#undef CHECK_IDLE + +void fn_1_4A58(omObjData *object) +{ + Work2FAC *temp_r31; + s32 temp_r28; + s32 temp_r26; + s32 sp8; + temp_r31 = object->data; + sp8 = temp_r31->unk0; + temp_r31->unk4 |= 2; + temp_r31->unk1C.y = lbl_1_bss_54; + fn_1_1EBC(object); + temp_r31->unk28.x = (29.0f/30.0f)*temp_r31->unk28.x; + temp_r31->unk28.z = (29.0f/30.0f)*temp_r31->unk28.z; + temp_r31->unk34.x += temp_r31->unk28.x*(1.0f/60.0f); + temp_r31->unk34.y = 0; + temp_r31->unk34.z += temp_r31->unk28.z*(1.0f/60.0f); + + temp_r31->unk58.x += 9.0f; + if(temp_r31->unk58.x >= 360.0f) { + temp_r31->unk58.x -= 360.0f; + } + temp_r31->unk58.y = 0.9f*temp_r31->unk58.y; + temp_r31->unk4C.x = temp_r31->unk58.y; + temp_r31->unk4C.y = temp_r31->unk58.x; + temp_r31->unk4C.z = 0; + omSetRot(object, temp_r31->unk4C.x, temp_r31->unk4C.y, temp_r31->unk4C.z); + fn_1_1940(temp_r31, &temp_r31->unk68); + omSetTra(object, temp_r31->unk1C.x+temp_r31->unk68.x, temp_r31->unk1C.y+temp_r31->unk68.y, temp_r31->unk1C.z+temp_r31->unk68.z); + fn_1_1BE8(object, 0.8f); + temp_r26 = temp_r31->unk10 & 0x1; + temp_r31->unk10++; + if(fn_1_6878() == 4) { + temp_r26 = 0; + CharModelMotionShiftSet(temp_r31->unk2, object->motion[3], 0, 0.2f, 0); + Hu3DModelShadowSet(object->model[0]); + object->work[1] = 0; + object->func = fn_1_5098; + } else if(temp_r31->unk10 > 60) { + temp_r26 = 0; + temp_r31->unk4 &= ~0x3; + CharModelMotionShiftSet(temp_r31->unk2, object->motion[4], 0, 0.2f, 0x40000001); + object->func = fn_1_3E80; + } + if(temp_r26) { + Hu3DModelAttrSet(object->model[0], 1); + for(temp_r28=0; temp_r28unk8; temp_r28++) { + Hu3DModelAttrSet(object->model[1], 1); + } + } else { + Hu3DModelAttrReset(object->model[0], 1); + for(temp_r28=0; temp_r28unk8; temp_r28++) { + Hu3DModelAttrReset(object->model[1], 1); + } + } +} + +Vec lbl_1_data_144[] = { + { -50, 0, 0 }, + { -16, 0, 0 }, + { 16, 0, 0 }, + { 50, 0, 0 } +}; + +Vec lbl_1_data_174[] = { + { 0, 1500, 2500 }, + { 1500, 0, 1 }, + { 0, 0, 0 } +}; + +void fn_1_54E4(omObjData *object); + +void fn_1_5098(omObjData *object) +{ + Work2FAC *temp_r29; + s32 temp_r27; + + temp_r29 = object->data; + object->trans.x = lbl_1_data_144[object->work[0]].x; + object->trans.z = lbl_1_data_144[object->work[0]].z; + if(object->work[1] == 0) { + if(lbl_1_bss_3C < temp_r29->unk8) { + lbl_1_bss_3C = temp_r29->unk8; + } + } else if(object->work[1] == 10 && lbl_1_bss_3C == temp_r29->unk8) { + for(temp_r27=0; lbl_1_bss_28[temp_r27]>=0; temp_r27++); + lbl_1_bss_28[temp_r27] = temp_r29->unk2; + } + object->work[1]++; + temp_r29->unk1C.y = lbl_1_bss_54; + temp_r29->unk58.y = 0; + temp_r29->unk58.x = 0; + object->rot.x = object->rot.y = object->rot.z = 0; + object->trans.y = temp_r29->unk1C.y; + temp_r29->unk1C.x = object->trans.x; + temp_r29->unk1C.z = object->trans.z; + temp_r29->unk1C.y += lbl_1_data_A0[temp_r29->unk2]; + if(object->trans.y < 0) { + object->trans.y = 0; + } + fn_1_1BE8(object, 1.0f); + if(fn_1_6878() == 5) { + object->func = fn_1_54E4; + if(temp_r29->unk14) { + lbl_1_bss_C = 1; + } + } +} + +void fn_1_54E4(omObjData *object) +{ + Work2FAC *temp_r30 = object->data; + fn_1_1E54(object); + if(!(temp_r30->unk4 & 0x8)) { + temp_r30->unk4 |= 0x8; + if(temp_r30->unk14 != 0) { + CharModelMotionShiftSet(temp_r30->unk2, object->motion[1], 0, 0.2f, 0); + HuAudCharVoicePlay(temp_r30->unk2, 290); + GWPlayerCoinCollectAdd(object->work[0], temp_r30->unk14); + } else { + CharModelMotionShiftSet(temp_r30->unk2, object->motion[2], 0, 0.2f, 0); + } + object->work[1] = 0; + } else if(object->work[1] == 0 && Hu3DMotionEndCheck(object->model[0])) { + lbl_1_bss_4C--; + object->work[1]++; + } +} + +void fn_1_5AA0(omObjData *object); + +void fn_1_5684(omObjData *object) +{ + Work2FAC *temp_r31; + s32 temp_r29; + temp_r31 = object->data; + if(fabs(object->trans.x) < 160.0 || fabs(object->trans.z) < 160.0) { + temp_r31->unk1C.x += temp_r31->unk28.x*(1.0f/60.0f); + temp_r31->unk1C.z += temp_r31->unk28.z*(1.0f/60.0f); + temp_r31->unk58.x += 9.0f; + if(temp_r31->unk58.x >= 360.0f) { + temp_r31->unk58.x -= 360.0f; + } + temp_r31->unk58.y = 0.9f*temp_r31->unk58.y; + temp_r31->unk4C.x = 90.0f+temp_r31->unk58.y; + temp_r31->unk4C.y = temp_r31->unk58.x; + temp_r31->unk4C.z = 0; + omSetRot(object, temp_r31->unk4C.x, temp_r31->unk4C.y, temp_r31->unk4C.z); + fn_1_1940(temp_r31, &temp_r31->unk68); + omSetTra(object, temp_r31->unk1C.x+temp_r31->unk68.x, temp_r31->unk1C.y+temp_r31->unk68.y, temp_r31->unk1C.z+temp_r31->unk68.z); + } + if(fn_1_6878() >= 4) { + GWPlayerCoinCollectAdd(object->work[0], temp_r31->unk14); + if(lbl_1_bss_48) { + Hu3DModelAttrReset(object->model[0], 1); + CharModelMotionSet(temp_r31->unk2, object->motion[6]); + Hu3DModelAttrSet(object->model[0], 0x40000001); + object->trans.x = lbl_1_data_144[object->work[0]].x; + object->trans.y = 0; + object->trans.z = lbl_1_data_144[object->work[0]].z; + object->rot.x = object->rot.y = object->rot.z = 0; + } else { + Hu3DModelAttrSet(object->model[0], 1); + } + + for(temp_r29=0; temp_r29<4; temp_r29++) { + Hu3DModelAttrSet(object->model[1], 1); + } + object->func = fn_1_5AA0; + } +} + +void fn_1_5AA0(omObjData *object) +{ + Work2FAC *sp8 = object->data; +} + +void fn_1_5AB4(ModelData *model, ParticleData *particle, Mtx matrix) +{ + HsfanimStruct01 *temp_r31; + s32 temp_r29; + float temp_f31; + if(particle->unk_00 == 0) { + particle->unk_00++; + temp_r31 = particle->unk_48; + for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { + temp_r31->unk00 = 0; + temp_r31->unk2C = 0; + temp_r31->unk40.a = 0; + } + return; + } + temp_r31 = particle->unk_48; + for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { + if(temp_r31->unk00_s16 == 0 || temp_r31->unk00_s16 != 1) { + continue; + } + temp_r31->unk02++; + temp_f31 = temp_r31->unk02-10.2f; + if(temp_f31 < 0.0f) { + temp_r31->unk34.x += (temp_r31->unk08.x-temp_r31->unk34.x)*0.2f; + temp_r31->unk34.y += (temp_r31->unk08.y-temp_r31->unk34.y)*0.15f; + temp_r31->unk34.z += (temp_r31->unk08.z-temp_r31->unk34.z)*0.2f; + temp_r31->unk2C += (temp_r31->unk14.x-temp_r31->unk2C)*0.2f; + temp_r31->unk14.y += (temp_r31->unk14.z-temp_r31->unk14.y)*0.2f; + temp_r31->unk40.a = temp_r31->unk14.y; + } else { + temp_r31->unk34.x += (temp_r31->unk20*1.5f)*(1.0f/60.0f); + temp_r31->unk34.y += (temp_r31->unk24*1.5f)*(1.0f/60.0f); + temp_r31->unk34.z += (temp_r31->unk28*1.5f)*(1.0f/60.0f); + temp_r31->unk2C += (temp_r31->unk14.x*0.01f); + temp_r31->unk40.a = 0.92f*temp_r31->unk40.a; + } + } + DCStoreRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); +} + +void fn_1_5DCC(s32 arg0, Vec *arg1, u32 arg2) +{ + float temp_f31; + float temp_f30; + + HsfanimStruct01 *temp_r31; + ParticleData *temp_r29; + s32 temp_r28; + temp_r29 = Hu3DData[arg0].unk_120; + if(temp_r29->unk_00 != 0) { + temp_r31 = temp_r29->unk_48; + for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { + if(temp_r31->unk00_s16) { + continue; + } + temp_r31->unk00 = 1; + temp_r31->unk02 = 0; + temp_r31->unk34.x = arg1->x; + temp_r31->unk34.y = 11990; + temp_r31->unk34.z = arg1->z; + temp_f31 = frandmod(1000)*(1.0f/1000.0f); + temp_f30 = frandmod(1000)*(360.0f/1000.0f); + temp_r31->unk20 = 10*(0.8f*(temp_f31*sind(temp_f30))); + temp_r31->unk24 = 10.0f*(5.0f*(1.0f-(temp_f31*temp_f31))); + temp_r31->unk28 = 10*(0.8f*(temp_f31*cosd(temp_f30))); + temp_r31->unk08.x = temp_r31->unk20+arg1->x; + temp_r31->unk08.y = temp_r31->unk24+temp_r31->unk34.y; + temp_r31->unk08.z = temp_r31->unk28+arg1->z; + temp_r31->unk14.x = (6.0f+(0.012f*frandmod(1000))); + temp_r31->unk2C = 2.0f; + temp_r31->unk14.y = temp_r31->unk40.a = 10; + temp_r31->unk14.z = frandmod(100)+64; + temp_f31 = 0.00040000002f*frandmod(1000); + temp_f31 += 0.6f*cosd(temp_f30); + temp_r31->unk40.r = (55*temp_f31)+200; + temp_r31->unk40.g = (50*temp_f31)+205; + temp_r31->unk40.b = (5*temp_f31)+250; + if(--arg2 == 0) { + break; + } + } + } +} + +typedef struct work_61FC { + s32 unk0; + s32 unk4; + u32 unk8; + float unkC[2]; + s32 unk14; + s32 unk18; + s32 unk1C[7]; + float unk38[7]; + s16 unk54[7]; +} Work61FC; + +void fn_1_6540(omObjData *object); + +void fn_1_61FC(omObjData *object) +{ + Work61FC *temp_r31; + s32 temp_r30; + s32 temp_r28; + s32 temp_r26; + + Work61FC *temp_r27; + + float sp8[][2] = { + 96, 64, + 486, 64, + 96, 416, + 486, 416 + }; + float sp28[][2] = { + 0, 0, + 0, 0, + -54, -1, + 2, 1, + -20, 0, + 42, 2, + 22, 2 + }; + + object->stat |= 0x100; + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, 4*sizeof(Work61FC), MEMORY_DEFAULT_NUM); + temp_r27 = object->data; + memset(temp_r27, 0, 4*sizeof(Work61FC)); + temp_r31 = temp_r27; + for(temp_r28=0; temp_r28<4; temp_r28++, temp_r31++) { + for(temp_r30=0; temp_r30<7; temp_r30++) { + temp_r31->unk54[temp_r30] = -1; + temp_r31->unk38[temp_r30] = 1; + } + temp_r31->unkC[0] = sp8[temp_r28][0]; + temp_r31->unkC[1] = sp8[temp_r28][1]; + temp_r26 = espEntry(0x610029, 4, 0); + temp_r31->unk54[0] = temp_r26; + espColorSet(temp_r26, 0, 0, 0); + espTPLvlSet(temp_r26, 0.5); + temp_r31->unk54[1] = espEntry(0x610028, 3, 0); + temp_r31->unk54[2] = espEntry(lbl_1_data_0[GWPlayerCfg[temp_r28].character], 2, 0); + temp_r31->unk54[3] = espEntry(0x27002B, 2, 0); + temp_r31->unk54[4] = espEntry(0x610008, 2, 0); + temp_r31->unk54[6] = espEntry(0x610033, 2, 0); + temp_r31->unk54[5] = espEntry(0x610033, 2, 0); + for(temp_r30=0; temp_r30<7; temp_r30++) { + if(temp_r31->unk54[temp_r30] >= 0) { + espPosSet(temp_r31->unk54[temp_r30], temp_r31->unkC[0]+sp28[temp_r30][0], temp_r31->unkC[1]+sp28[temp_r30][1]); + espDispOff(temp_r31->unk54[temp_r30]); + } + } + temp_r31->unk0 = 0; + } + HuDataDirClose(DATADIR_MGCONST); + object->func = fn_1_6540; + (void)temp_r27; + (void)temp_r27; +} + +void fn_1_6540(omObjData *object) +{ + float temp_f31; + Work61FC *temp_r31; + s32 temp_r30; + s32 temp_r29; + Work61FC *temp_r28 = object->data; + temp_r31 = temp_r28; + for(temp_r29=0; temp_r29<4; temp_r29++, temp_r31++) { + switch(temp_r31->unk14) { + case 0: + if(fn_1_6878() == 3) { + temp_r31->unk14 = 1; + } + break; + + case 1: + temp_r31->unk18 = 0; + temp_r31->unk1C[5] = temp_r31->unk8%10; + temp_r31->unk1C[6] = (temp_r31->unk8/10)%10; + for(temp_r30=0; temp_r30<7; temp_r30++) { + if(temp_r31->unk54[temp_r30] >= 0) { + espDispOn(temp_r31->unk54[temp_r30]); + } + } + if(temp_r31->unk0) { + temp_r31->unk38[5] = temp_r31->unk38[6] = 0.5f; + temp_r31->unk14++; + } else { + temp_r31->unk0 = 1; + temp_r31->unk38[5] = temp_r31->unk38[6] = 1.0f; + temp_r31->unk14 += 3; + break; + } + + case 2: + temp_f31 = temp_r31->unk38[5]; + temp_f31 += 0.10000001f; + if(temp_f31 >= 1.5f) { + temp_r31->unk14++; + } + temp_r31->unk38[5] = temp_r31->unk38[6] = temp_f31; + break; + + case 3: + temp_f31 = temp_r31->unk38[5]; + temp_f31 -= 0.10000001f; + if(temp_f31 <= 1.0f) { + temp_f31 = 1.0f; + temp_r31->unk14++; + } + temp_r31->unk38[5] = temp_r31->unk38[6] = temp_f31; + break; + + default: + break; + } + temp_r31->unk18++; + for(temp_r30=0; temp_r30<7; temp_r30++) { + espBankSet(temp_r31->unk54[temp_r30], temp_r31->unk1C[temp_r30]); + espScaleSet(temp_r31->unk54[temp_r30], temp_r31->unk38[temp_r30], temp_r31->unk38[temp_r30]); + } + } +} + +void fn_1_67C4(u16 arg0, u16 arg1) +{ + Work61FC *temp_r31; + temp_r31 = lbl_1_bss_8->data; + if(fn_1_6878() == 3) { + temp_r31[arg0].unk4 += arg1; + temp_r31[arg0].unk8 += arg1; + temp_r31[arg0].unk14 = 1; + } +} + +u32 fn_1_6868(void) +{ + return lbl_1_bss_62; +} + + +u32 fn_1_6878(void) +{ + return lbl_1_bss_60; +} + +float fn_1_6888(void) +{ + return lbl_1_bss_54; +} + +void fn_1_6898(void) +{ + +} + +s32 fn_1_689C(void) +{ + return 0; +} + +void fn_1_68A4(void) +{ + +} + +Work2FAC *fn_1_68A8(s32 arg0) +{ + return lbl_1_bss_6C[arg0]->data; +} + +float fn_1_68C4(float arg8, float arg9, float argA, float argB, float argC, float argD, float argE, float argF, float arg2, float arg3) +{ + float temp_f30; + float sp14; + float temp_f29; + float temp_f28; + + + float temp_f27; + float temp_f26; + + float sp10; + + sp14 = (argC + arg3) * (argC + arg3); + temp_f27 = (arg2 * arg2) + (((argB * argB) + ((argF * argF) + ((argA * argA) - (2.0f * argA * argF)))) - (2.0f * argB * arg2)); + temp_f26 = 2.0f * ((argE * arg2) + ((((arg9 * argB) + ((argD * argF) + (((arg8 * argA) - (arg8 * argF)) - (argD * argA)))) - (arg9 * arg2)) - (argE * argB))); + sp10 = ((argE * argE) + (((arg9 * arg9) + ((argD * argD) + ((arg8 * arg8) - (2.0f * arg8 * argD)))) - (2.0f * arg9 * argE))) - sp14; + if(0.0f == temp_f27) { + return -1; + } + temp_f30 = (temp_f26 * temp_f26) - (4.0f * temp_f27 * sp10); + if(temp_f30 <= 0.0) { + return -1; + } + temp_f30 = sqrtf(temp_f30); + temp_f29 = (-temp_f26 + temp_f30) / (2.0f * temp_f27); + temp_f28 = (-temp_f26 - temp_f30) / (2.0f * temp_f27); + if(temp_f29 >= 0.0f && temp_f28 >= 0.0f) { + if(temp_f29 < temp_f28) { + if(temp_f29 < 1.0f) { + return temp_f29; + } + } + if(temp_f28 < 1.0f) { + return temp_f28; + } + } + return -1; +} + +void fn_1_6C28(float *arg0, float arg1, float arg2, float arg3, float arg4, float arg5, float arg6) +{ + float temp_f24; + float temp_f29; + float temp_f28; + float temp_f31; + float temp_f30; + + float temp_f25; + + temp_f29 = arg3; + temp_f28 = arg4; + temp_f24 = sqrtf((temp_f29*temp_f29)+(temp_f28*temp_f28)); + if(temp_f24 != 0.0) { + temp_f25 = 1.0f/temp_f24; + temp_f29 *= temp_f25; + temp_f28 *= temp_f25; + } + temp_f31 = arg5-arg1; + temp_f30 = arg6-arg2; + temp_f25 = 1.0f/sqrtf((temp_f31*temp_f31)+(temp_f30*temp_f30)); + temp_f31 *= temp_f25; + temp_f30 *= temp_f25; + temp_f25 = (temp_f29*temp_f31)+(temp_f28*temp_f30); + arg0[0] = temp_f25*(temp_f31*temp_f24); + arg0[1] = temp_f25*(temp_f30*temp_f24); +} + +void fn_1_6F4C(float arg8, float arg9, float argA, float argB, float argC, float argD, float argE, float argF, float *arg0, float *arg1, float *arg2, float *arg3) +{ + float sp70[2]; + float sp68[2]; + float sp64; + float sp60; + sp64 = arg8+(0.5f*(argC-arg8)); + sp60 = arg9+(0.5f*(argD-arg9)); + fn_1_6C28(sp70, arg8, arg9, argA, argB, sp64, sp60); + fn_1_6C28(sp68, argC, argD, argE, argF, sp64, sp60); + *arg0 = sp68[0]-sp70[0]; + *arg1 = sp68[1]-sp70[1]; + *arg2 = sp70[0]-sp68[0]; + *arg3 = sp70[1]-sp68[1]; +} + +void fn_1_75B8(float *arg0, float *arg1, float arg2, float arg3, float arg4, float arg5, float arg6, float arg7) +{ + float temp_f26 = arg2+(0.5f*(arg6-arg2)); + float temp_f25 = arg3+(0.5f*(arg7-arg3)); + float temp_f31 = arg2-temp_f26; + float temp_f30 = arg3-temp_f25; + float temp_f28; + if(temp_f31 == 0.0f || temp_f30 == 0.0f) { + *arg0 = *arg1 = 0.0f; + return; + } + temp_f28 = 1.0f/sqrtf((temp_f31*temp_f31)+(temp_f30*temp_f30)); + temp_f31 *= temp_f28; + temp_f30 *= temp_f28; + *arg0 = (2.0f*temp_f31)*((-arg4*temp_f31)-(arg5*temp_f30)); + *arg1 = (2.0f*temp_f30)*((-arg4*temp_f31)-(arg5*temp_f30)); +} + +void fn_1_7818(omObjData *arg0, omObjData *arg1) +{ + Work2FAC *temp_r31 = arg0->data; + Work2FAC *temp_r30 = arg1->data; + + float sp14; + float sp10; + float spC; + float sp8; + fn_1_6F4C(temp_r31->unk1C.x, temp_r31->unk1C.z, temp_r31->unk34.x, temp_r31->unk34.z, + temp_r30->unk1C.x, temp_r30->unk1C.z, temp_r30->unk34.x, temp_r30->unk34.z, + &sp14, &sp10, &spC, &sp8); + temp_r31->unk34.x += sp14; + temp_r31->unk34.z += sp10; + temp_r30->unk34.x += spC; + temp_r30->unk34.z += sp8; +} + +s32 fn_1_78D8(void) +{ + float temp_f29; + float temp_f18; + + Work2FAC *temp_r31; + s32 temp_r30; + Work2FAC *temp_r29; + Work2FAC *temp_r28; + s32 temp_r27; + s32 temp_r26; + omObjData *temp_r25; + omObjData *temp_r24; + omObjData *temp_r23; + + omObjData *sp30[2]; + temp_r26 = -1; + temp_f18 = 0; + temp_f29 = 9999; + for(temp_r27=0; temp_r27<3; temp_r27++) { + temp_r25 = lbl_1_bss_6C[temp_r27]; + temp_r29 = temp_r25->data; + if(temp_r29->unk4 & 0x10) { + continue; + } + for(temp_r30=temp_r27+1; temp_r30<4; temp_r30++) { + temp_r24 = lbl_1_bss_6C[temp_r30]; + temp_r28 = temp_r24->data; + if(temp_r28->unk4 & 0x10) { + continue; + } + temp_f18 = fn_1_68C4(temp_r29->unk1C.x, temp_r29->unk1C.z, temp_r29->unk34.x*lbl_1_bss_4, temp_r29->unk34.z*lbl_1_bss_4, + temp_r29->unk58.z, temp_r28->unk1C.x, temp_r28->unk1C.z, temp_r28->unk34.x*lbl_1_bss_4, temp_r28->unk34.z*lbl_1_bss_4, + temp_r28->unk58.z); + if(temp_f18 >= 0.0 && temp_f18 <= temp_f29) { + temp_f29 = temp_f18; + temp_r26 = 1; + sp30[0] = temp_r25; + sp30[1] = temp_r24; + } + } + } + if(temp_r26 < 0) { + return 0; + } + if(temp_f29 > 0.0f) { + for(temp_r30=0; temp_r30<4; temp_r30++) { + temp_r31 = lbl_1_bss_6C[temp_r30]->data; + temp_r31->unk64 = 0; + } + } + for(temp_r30=0; temp_r30<4; temp_r30++) { + temp_r23 = lbl_1_bss_6C[temp_r30]; + temp_r31 = temp_r23->data; + if(!(temp_r31->unk4 & 0x10)) { + temp_r31->unk1C.x += lbl_1_bss_4*(temp_r31->unk34.x*temp_f29); + temp_r31->unk1C.z += lbl_1_bss_4*(temp_r31->unk34.z*temp_f29); + } + } + if(temp_r26 != 1) { + (void)temp_r26; + } else { + fn_1_7818(sp30[0], sp30[1]); + for(temp_r30=0; temp_r30<2; temp_r30++) { + temp_r31 = sp30[temp_r30]->data; + if(temp_r31->unk4 & 0x10) { + continue; + } + temp_r31->unk64++; + if(temp_r31->unk18 == 0) { + lbl_1_bss_0 = 1; + } + temp_r31->unk18 = 18; + if(temp_r31->unk64 > 2.0f) { + temp_r31->unk34.x = temp_r31->unk34.z = 0; + } + } + } + lbl_1_bss_4 *= (1.0f-temp_f29); + return 1; +} + +void fn_1_8020(void) +{ + Work2FAC *temp_r31; + s32 temp_r30; + omObjData *temp_r29; + lbl_1_bss_4 = 1.0f; + lbl_1_bss_0 = 0; + while(fn_1_78D8()); + if(lbl_1_bss_0) { + HuAudFXPlay(1359); + } + for(temp_r30=0; temp_r30<4; temp_r30++) { + temp_r29 = lbl_1_bss_6C[temp_r30]; + temp_r31 = temp_r29->data; + if(temp_r31->unk18 != 0) { + temp_r31->unk18--; + } + if(temp_r31->unk4 & 0x10) { + continue; + } + temp_r31->unk1C.x += temp_r31->unk34.x*lbl_1_bss_4; + temp_r31->unk1C.z += temp_r31->unk34.z*lbl_1_bss_4; + temp_r31->unk28.x = temp_r31->unk34.x*60.0f; + temp_r31->unk28.z = temp_r31->unk34.z*60.0f; + temp_r31->unk34.x = temp_r31->unk34.z = 0; + } +} + +void fn_1_817C(Vec *arg0, Vec *arg1) +{ + Vec sp10; + sp10.x = arg1->x-arg0->x; + sp10.y = arg1->y-arg0->y; + sp10.z = arg1->z-arg0->z; + Center.x = arg1->x; + Center.y = arg1->y; + Center.z = arg1->z; + CRot.x = atan2d(sp10.y, VECMagXZ(&sp10)); + CRot.y = atan2d(-sp10.x, -sp10.z); + CRot.z = 0; + CZoom = sqrtf(VECMag2Point(&sp10)); +} + +void fn_1_84C4(float arg0, float arg1, float arg2, float arg3, float arg4, float arg5) +{ + Vec sp40; + Vec sp34; + sp40.x = arg0; + sp40.y = arg1; + sp40.z = arg2; + sp34.x = arg3; + sp34.y = arg4; + sp34.z = arg5; + fn_1_817C(&sp40, &sp34); +} + +float fn_1_883C(float arg0, float arg1, float arg2) +{ + float temp_f31; + temp_f31 = fmodf(arg1-arg0, 360); + if(temp_f31 < 0.0f) { + temp_f31 += 360.0f; + } + if(temp_f31 > 180.0f) { + temp_f31 -= 360.0f; + } + temp_f31 = fmodf((arg2*temp_f31)+arg0, 360); + if(temp_f31 < 0.0f) { + temp_f31 += 360.0f; + } + return temp_f31; +} \ No newline at end of file diff --git a/src/REL/m408Dll/object.c b/src/REL/m408Dll/object.c new file mode 100644 index 00000000..b2ccec82 --- /dev/null +++ b/src/REL/m408Dll/object.c @@ -0,0 +1,1536 @@ +#include "game/object.h" +#include "game/objsub.h" +#include "game/wipe.h" +#include "game/chrman.h" +#include "game/minigame_seq.h" +#include "game/pad.h" + +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/hsfanim.h" +#include "game/hsfdraw.h" +#include "game/sprite.h" + +#include "game/audio.h" +#include "game/gamework_data.h" + +#include "REL/m408Dll.h" + +#include "math.h" +#include "ext_math.h" + +typedef struct struct_data_20C { + s32 unk0; + float unk4; + float unk8; +} StructData20C; + +typedef struct struct_bss_da4 { + s32 unk0; + s32 unk4; + s32 unk8; + Vec unkC; + Vec unk18; + Vec unk24; + float unk30; + Vec unk34; + float unk40[2]; + float unk48; + float unk4C; + s32 unk50; + s32 unk54; + s32 unk58; + s32 unk5C; + s32 unk60; + float unk64; +} StructBssDA4; + +void fn_1_12C6C(StructBssDA4 *arg0); +void fn_1_1305C(StructBssDA4 *arg0); +void fn_1_134D8(StructBssDA4 *arg0); +void fn_1_13820(StructBssDA4 *arg0); +void fn_1_13D88(StructBssDA4 *arg0); +void fn_1_1406C(StructBssDA4 *arg0); +void fn_1_144D0(StructBssDA4 *arg0); +void fn_1_14DB4(StructBssDA4 *arg0); +void fn_1_151A4(StructBssDA4 *arg0); + +s32 lbl_1_data_1A0[9] = { + 0x00270012, + 0x00270012, + 0x00270012, + 0x00270012, + 0x00270012, + 0x00270014, + 0x00270014, + 0x00270016, + 0x00270017 +}; + +s32 lbl_1_data_1C4[9] = { + 0x00270013, + 0x00270013, + 0x00270013, + 0x00270013, + 0x00270013, + 0x00270015, + 0x00270015, + 0, + 0 +}; + +typedef void (*BssDA4Func)(StructBssDA4 *arg0); + +BssDA4Func lbl_1_data_1E8[9] = { + fn_1_12C6C, + fn_1_1305C, + fn_1_134D8, + fn_1_13820, + fn_1_13D88, + fn_1_1406C, + fn_1_144D0, + fn_1_14DB4, + fn_1_151A4 +}; + +StructData20C lbl_1_data_20C[] = { + { 0, 10600, 100 }, + { 0, 10600, 290 }, + { 7, 10500, 0 }, + { 7, 10400, 72 }, + { 7, 10300, 144 }, + { 7, 10200, 216 }, + { 7, 10100, 288 }, + { 5, 9600, 0 }, + { 7, 9000, 0 }, + { 7, 9000, 72 }, + { 7, 9000, 144 }, + { 7, 9000, 216 }, + { 7, 9000, 288 }, + { 1, 8600, 150 }, + { 7, 8500, 216 }, + { 7, 8400, 288 }, + { 7, 8300, 0 }, + { 7, 8200, 72 }, + { 7, 8100, 144 }, + { 6, 7700, 0 }, + { 6, 7700, 180 }, + { 7, 7500, 165 }, + { 7, 7500, 285 }, + { 7, 7500, 45 }, + { 8, 7000, 225 }, + { 8, 7000, 345 }, + { 8, 7000, 105 }, + { 7, 6500, 165 }, + { 7, 6500, 285 }, + { 7, 6500, 45 }, + { 4, 5500, 0 }, + { 4, 5500, 120 }, + { 4, 5500, 240 }, + { 7, 4700, 0 }, + { 7, 4700, 72 }, + { 7, 4700, 144 }, + { 7, 4700, 216 }, + { 7, 4700, 288 }, + { 5, 4500, 120 }, + { 7, 4250, 165 }, + { 7, 4250, 285 }, + { 7, 4250, 45 }, + { 5, 4000, 120 }, + { 7, 3750, 225 }, + { 7, 3750, 345 }, + { 7, 3750, 105 }, + { 5, 3500, 240 }, + { 7, 3250, 165 }, + { 7, 3250, 285 }, + { 7, 3250, 45 }, + { 7, 2100, 36 }, + { 7, 2100, 108 }, + { 7, 2100, 180 }, + { 7, 2100, 252 }, + { 7, 2100, 324 }, + { 3, 1500, 0 }, + { 3, 1500, 120 }, + { 3, 1500, 240 }, + { 8, 1300, 165 }, + { 8, 1300, 285 }, + { 8, 1300, 45 }, + { -1, 10000, 0 }, +}; + +GXColor lbl_1_data_4F4[4] = { + { 255, 255, 255, 255 }, + { 255, 255, 0, 255 }, + { 0, 255, 255, 255 }, + { 255, 200, 200, 255 } +}; + +u8 lbl_1_data_504[] = { + 5, 3, 1, 0 +}; + +float lbl_1_data_508[3] = { + 72, 120, 0 +}; + +float lbl_1_data_514[3] = { + 0, 60, 0 +}; + +float lbl_1_data_520[3] = { + 30, 60, 90 +}; + +Vec lbl_1_data_52C[3] = { + { 1500, 2500, 1500 }, + { 0, 1, 0 }, + { 0, 0, 0 } +}; + +omObjData *lbl_1_bss_75A8; +omObjData *lbl_1_bss_75A4; +StructBssDA4 lbl_1_bss_DA4[256]; +s32 lbl_1_bss_DA0; +s32 lbl_1_bss_D9C; +Vec lbl_1_bss_D6C[4]; +Vec lbl_1_bss_16C[256]; +u32 lbl_1_bss_168; + +void fn_1_11960(omObjData *object); +void fn_1_15BCC(omObjData *object); + +void fn_1_118D0(Process *objman) +{ + lbl_1_bss_168 = 0; + lbl_1_bss_75A8 = omAddObjEx(objman, 40, 256, 1, -1, fn_1_11960); + lbl_1_bss_75A4 = omAddObjEx(objman, 41, 4, 0, -1, fn_1_15BCC); +} + +void fn_1_11E3C(StructBssDA4 *arg0, s32 arg1); +void fn_1_12354(omObjData *object); +void fn_1_123C8(omObjData *object); + +void fn_1_155E0(s16 arg0, s16 arg1); +void fn_1_15658(ModelData *model, ParticleData *particle, Mtx matrix); + +void fn_1_11960(omObjData *object) +{ + StructBssDA4 *temp_r31; + s32 temp_r29; + s16 temp_r28; + s16 temp_r27; + s16 temp_r26; + s16 temp_r25; + s16 temp_r24; + s16 temp_r23; + s16 temp_r22; + temp_r31 = &lbl_1_bss_DA4[0]; + lbl_1_bss_DA0 = 0; + lbl_1_bss_D9C = 0; + while(lbl_1_data_20C[lbl_1_bss_DA0].unk0 != -1) { + if(lbl_1_data_20C[lbl_1_bss_DA0].unk0 == 7) { + lbl_1_bss_D9C++; + } + lbl_1_bss_DA0++; + } + object->stat |= 0x100; + temp_r27 = temp_r26 = temp_r25 = temp_r24 = -1; + for(temp_r29=0; temp_r29unk0) { + case 0: + case 1: + case 2: + case 3: + case 4: + if(temp_r27 < 0) { + temp_r27 = Hu3DModelCreateFile(lbl_1_data_1A0[temp_r31->unk0]); + temp_r23 = Hu3DJointMotionFile(temp_r27, lbl_1_data_1C4[temp_r31->unk0]); + Hu3DModelAttrSet(temp_r27, 0x40000001); + Hu3DMotionSet(temp_r27, temp_r23); + temp_r28 = temp_r27; + } else { + temp_r28 = Hu3DModelLink(temp_r27); + } + break; + + case 5: + case 6: + if(temp_r26 < 0) { + temp_r26 = Hu3DModelCreateFile(lbl_1_data_1A0[temp_r31->unk0]); + temp_r22 = Hu3DJointMotionFile(temp_r26, lbl_1_data_1C4[temp_r31->unk0]); + Hu3DModelAttrSet(temp_r26, 0x40000001); + Hu3DMotionSet(temp_r26, temp_r22); + temp_r28 = temp_r26; + } else { + temp_r28 = Hu3DModelLink(temp_r26); + } + break; + + case 7: + if(temp_r25 < 0) { + temp_r25 = Hu3DModelCreateFile(lbl_1_data_1A0[temp_r31->unk0]); + temp_r28 = temp_r25; + } else { + temp_r28 = Hu3DModelLink(temp_r25); + } + break; + + case 8: + if(temp_r24 < 0) { + temp_r24 = Hu3DModelCreateFile(lbl_1_data_1A0[temp_r31->unk0]); + temp_r28 = temp_r24; + } else { + temp_r28 = Hu3DModelLink(temp_r24); + } + break; + + default: + break; + } + object->model[temp_r29] = temp_r28; + Hu3DModelPosSetV(object->model[temp_r29], &temp_r31->unkC); + Hu3DModelRotSetV(object->model[temp_r29], &temp_r31->unk34); + Hu3DModelScaleSet(object->model[temp_r29], 0.15f, 0.15f, 0.15f); + Hu3DModelCameraSet(object->model[temp_r29], 1); + Hu3DModelAttrSet(object->model[temp_r29], 1); + if(temp_r31->unk0 < 7) { + Hu3DModelAttrSet(object->model[temp_r29], 0x40000001); + } + } + for(temp_r29=lbl_1_bss_DA0; temp_r29model[temp_r29] = temp_r28; + Hu3DModelAttrSet(temp_r28, 1); + Hu3DModelLayerSet(temp_r28, 6); + Hu3DParticleColSet(temp_r28, 255, 255, 255); + Hu3DParticleHookSet(temp_r28, fn_1_15658); + Hu3DModelPosSet(temp_r28, 0, 0, 0); + fn_1_155E0(temp_r28, 0); + } + object->func = fn_1_12354; +} + +void fn_1_11E3C(StructBssDA4 *arg0, s32 arg1) +{ + float temp_f31; + float temp_f30; + s32 temp_r29; + temp_r29 = 0; + temp_f30 = 40; + temp_f31 = 20; + arg0->unk0 = lbl_1_data_20C[arg1].unk0; + arg0->unk4 = arg1; + arg0->unk8 = -1; + arg0->unk18.x = arg0->unkC.x = 0; + arg0->unk18.y = arg0->unkC.y = lbl_1_data_20C[arg1].unk4; + arg0->unk18.z = arg0->unkC.z = 0; + arg0->unk24.x = arg0->unk24.y = arg0->unk24.z = 0; + arg0->unk48 = 180; + arg0->unk34.x = arg0->unk34.z = arg0->unk34.y = 0; + arg0->unk40[0] = arg0->unk40[1] = 0; + arg0->unk30 = 0; + arg0->unk4C = 1; + arg0->unk50 = 1; + arg0->unk54 = 0; + arg0->unk5C = 1; + arg0->unk58 = 0; + arg0->unk60 = 0; + arg0->unk64 = 0; + switch(arg0->unk0) { + case 0: + arg0->unk64 = temp_f31+(rand8()%(int)temp_f30); + arg0->unk30 = lbl_1_data_20C[arg1].unk8; + arg0->unk34.y = 180+(-arg0->unk30+90); + + break; + + case 1: + arg0->unk34.y = arg0->unk40[0] = 180+(-arg0->unk30+90); + arg0->unk30 = rand8()%360; + break; + + case 2: + arg0->unk30 = lbl_1_data_20C[arg1].unk8; + arg0->unk34.y = 90+(180+(-arg0->unk30+90)); + break; + + case 3: + arg0->unk30 = lbl_1_data_20C[arg1].unk8; + arg0->unk34.y = (180+(-arg0->unk30+90))-90; + break; + + case 4: + arg0->unk30 = lbl_1_data_20C[arg1].unk8; + arg0->unk34.y = 180+(-arg0->unk30+90); + break; + + case 5: + arg0->unk30 = rand8()%360; + arg0->unk34.y = 180+(-arg0->unk30+90); + arg0->unk48 = 0; + break; + + case 6: + arg0->unk30 = lbl_1_data_20C[arg1].unk8; + arg0->unk34.y = -arg0->unk30+90; + break; + + + + case 7: + case 8: + arg0->unk30 = lbl_1_data_20C[arg1].unk8; + arg0->unk8 = lbl_1_bss_DA0+temp_r29; + temp_r29++; + break; + } + if(arg0->unk34.y > 360) { + arg0->unk34.y -= 360; + } else { + if(arg0->unk34.y < 0) { + arg0->unk34.y += 360; + } + } +} + +void fn_1_12354(omObjData *object) +{ + s32 temp_r31; + u32 temp_r30; + temp_r30 = fn_1_6878(); + if(temp_r30 == 2) { + for(temp_r31=0; temp_r31func =fn_1_123C8; + } + +} + +void fn_1_12670(omObjData *object); +float fn_1_12674(StructBssDA4 *object); +void fn_1_127A0(StructBssDA4 *object); + +void fn_1_123C8(omObjData *object) +{ + StructBssDA4 *temp_r31; + s32 temp_r29; + u32 temp_r28; + temp_r31 = &lbl_1_bss_DA4[0]; + lbl_1_bss_168 = 0; + for(temp_r29=0; temp_r29unk50 == 1) { + lbl_1_data_1E8[temp_r31->unk0](temp_r31); + if(temp_r31->unk5C == 0) { + fn_1_127A0(temp_r31); + } + Hu3DModelPosSetV(object->model[temp_r29], &temp_r31->unkC); + Hu3DModelRotSetV(object->model[temp_r29], &temp_r31->unk34); + Hu3DModelScaleSet(object->model[temp_r29], 0.15f*temp_r31->unk4C, 0.15f*temp_r31->unk4C, 0.15f*temp_r31->unk4C); + if(temp_r31->unkC.y > fn_1_6888()-1000 && temp_r31->unkC.y < fn_1_6888()+200) { + Hu3DModelAttrReset(object->model[temp_r29], 1); + } else { + Hu3DModelAttrSet(object->model[temp_r29], 1); + } + if(temp_r31->unk0 == 7 || temp_r31->unk0 == 8) { + if(temp_r31->unkC.y > fn_1_6888()-150 && temp_r31->unkC.y < fn_1_6888()+10) { + lbl_1_bss_16C[lbl_1_bss_168++] = temp_r31->unkC; + + } + } + } else { + Hu3DModelAttrSet(object->model[temp_r29], 1); + } + } + temp_r28 = fn_1_6878(); + if(temp_r28 == 5) { + for(temp_r29=0; temp_r29model[temp_r29], 1); + } + object->func = fn_1_12670; + } + +} + +void fn_1_12670(omObjData *object) +{ + +} + +void fn_1_15618(s16 arg0, float arg1, float arg2, float arg3); +void fn_1_15B50(s16 arg0); + +float fn_1_12674(StructBssDA4 *arg0) +{ + Vec sp8; + float temp_f31; + float temp_f30; + float temp_f29; + Work2FAC *temp_r31; + s32 temp_r30; + temp_f30 = -1; + temp_f29 = 10000; + for(temp_r30=0; temp_r30<4; temp_r30++) { + temp_r31 = fn_1_68A8(temp_r30); + if(temp_r31->unk4 & 0x10) { + continue; + } + sp8.x = temp_r31->unk1C.x-arg0->unk24.x; + sp8.y = 0; + sp8.z = temp_r31->unk1C.z-arg0->unk24.z; + temp_f31 = VECMag(&sp8); + if(temp_f31 < temp_f29) { + temp_f30 = atan2d(sp8.x, sp8.z); + temp_f29 = temp_f31; + } + } + return temp_f30; +} + +void fn_1_127A0(StructBssDA4 *arg0) +{ + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f26; + float temp_f23; + Work2FAC *temp_r31; + s32 temp_r29; + temp_f23 = 14; + for(temp_r29=0; temp_r29<4; temp_r29++) { + temp_r31 = fn_1_68A8(temp_r29); + if(temp_r31->unk4 & 0x12) { + continue; + } + switch(arg0->unk0) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 7: + case 8: + temp_f31 = temp_r31->unk1C.x-arg0->unk24.x; + temp_f29 = temp_r31->unk1C.y-arg0->unk24.y; + temp_f30 = temp_r31->unk1C.z-arg0->unk24.z; + temp_f26 = VECMagPoint(temp_f31, temp_f29, temp_f30); + break; + + case 5: + case 6: + temp_f31 = temp_r31->unk1C.x-arg0->unk24.x; + temp_f30 = temp_r31->unk1C.z-arg0->unk24.z; + temp_f26 = VECMagPoint(temp_f31, 0, temp_f30); + break; + } + if(temp_f26 < temp_f23 && 0.0f != temp_f26) { + if(arg0->unk0 != 7 && arg0->unk0 != 8) { + temp_r31->unk4 |= 0x1; + temp_r31->unk40.x = temp_f31; + temp_r31->unk40.z = temp_f30; + lbl_1_bss_D6C[temp_r29].x = (0.5f*temp_f31)+arg0->unk24.x; + lbl_1_bss_D6C[temp_r29].z = (0.5f*temp_f30)+arg0->unk24.z; + lbl_1_bss_D6C[temp_r29].y = temp_r31->unk1C.y; + lbl_1_bss_75A4->work[0] = temp_r29; + } else { + arg0->unk58 = 1; + if(arg0->unk0 == 8) { + temp_r31->unk14 += 5; + fn_1_67C4(temp_r29, 5); + } else { + temp_r31->unk14 += 1; + fn_1_67C4(temp_r29, 1); + } + } + } + } +} + +void fn_1_12C6C(StructBssDA4 *arg0) +{ + Work2FAC *temp_r30; + float temp_f31; + float temp_f30; + float temp_f26; + float temp_f25; + temp_f26 = cosd(arg0->unk30); + temp_f25 = sind(arg0->unk30); + arg0->unkC.x = temp_f26*arg0->unk64; + arg0->unkC.z = temp_f25*arg0->unk64; + temp_f30 = fn_1_6888(); + switch(arg0->unk54) { + case 0: + if(arg0->unkC.y > temp_f30) { + arg0->unk60 = 0; + arg0->unk54 = 1; + } + arg0->unk34.x = fn_1_883C(arg0->unk34.x, -30, 0.1f); + arg0->unk5C = 1; + break; + + case 1: + arg0->unk5C = 0; + arg0->unkC.y = temp_f30; + arg0->unk24.x = arg0->unkC.x; + arg0->unk24.y = arg0->unkC.y+5.0f; + arg0->unk24.z = arg0->unkC.z; + temp_f31 = fn_1_12674(arg0); + if(temp_f31 >= 0) { + arg0->unk34.y = fn_1_883C(arg0->unk34.y, temp_f31, 0.1f); + } + arg0->unk34.x = fn_1_883C(arg0->unk34.x, 0, 0.1f); + if(arg0->unk60 < 90.0f) { + arg0->unk60++; + } else { + arg0->unk54 = 3; + } + break; + + case 3: + arg0->unk34.x = fn_1_883C(arg0->unk34.x, -30, 0.1f); + arg0->unk5C = 1; + if(arg0->unkC.y-15.0f > Center.y+CZoom) { + arg0->unk54 = 4; + arg0->unk50 = 0; + Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], 1); + } + break; + + case 4: + break; + } +} + +void fn_1_1305C(StructBssDA4 *arg0) +{ + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + float temp_f27; + float temp_f26; + arg0->unk48 += 1.5f; + if(arg0->unk48 > 360.0f) { + arg0->unk48 -= 360.0f; + } + temp_f29 = cosd(arg0->unk30); + temp_f28 = sind(arg0->unk30); + arg0->unk18.x = temp_f29*arg0->unk64; + arg0->unk18.z = temp_f28*arg0->unk64; + temp_f31 = sind(arg0->unk48); + arg0->unkC.x = temp_f29*(60*temp_f31); + arg0->unkC.z = temp_f28*(60*temp_f31); + temp_f30 = -arg0->unk30-90; + if(temp_f31 < 0) { + temp_f30 += 180; + } + arg0->unk34.y = fn_1_883C(arg0->unk34.y, temp_f30, 0.05f); + temp_f30 = fabs(temp_f31); + arg0->unk34.x = -30*temp_f30; + temp_f26 = fn_1_6888(); + switch(arg0->unk54) { + case 0: + if(arg0->unkC.y > temp_f26) { + arg0->unk60 = 0; + arg0->unk54 = 1; + } + arg0->unk5C = 1; + if(temp_f31 >= sind(75.0f)) { + temp_f27 = (arg0->unk48-75)/30; + arg0->unk40[1] = 180+arg0->unk40[0]; + } else if(temp_f31 <= sind(255.0f)) { + temp_f27 = (arg0->unk48-255)/30; + arg0->unk40[1] = 180+arg0->unk40[0]; + } else { + temp_f27 = 0; + if(arg0->unk40[1] > 360.0f) { + arg0->unk40[1] -= 360.0f; + } + arg0->unk40[0] = arg0->unk40[1]; + } + break; + + case 1: + arg0->unk5C = 0; + arg0->unkC.y = temp_f26; + arg0->unk24.x = arg0->unkC.x; + arg0->unk24.y = arg0->unkC.y+5; + arg0->unk24.z = arg0->unkC.z; + if(arg0->unk60 < 120.0f) { + arg0->unk60++; + } else { + arg0->unk54 = 3; + } + break; + + case 3: + arg0->unk5C = 1; + if(arg0->unkC.y-15.0f > Center.y+CZoom) { + arg0->unk54 = 4; + arg0->unk50 = 0; + Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], 1); + } + break; + + case 4: + break; + } +} + +void fn_1_134D8(StructBssDA4 *arg0) +{ + float temp_f31; + float temp_f30; + float temp_f29; + arg0->unk30 += 1.8f; + if(arg0->unk30 > 360.0f) { + arg0->unk30 -= 360.0f; + } + temp_f30 = cosd(arg0->unk30); + temp_f29 = sind(arg0->unk30); + arg0->unk64 = 64; + arg0->unkC.x = temp_f30*arg0->unk64; + arg0->unkC.z = temp_f29*arg0->unk64*0.7f; + temp_f31 = fn_1_6888(); + switch(arg0->unk54) { + case 0: + if(arg0->unkC.y > temp_f31) { + arg0->unk60 = 0; + arg0->unk54 = 1; + } + arg0->unk5C = 1; + arg0->unk34.y = -arg0->unk30; + if(arg0->unk34.y > 360.0f) { + arg0->unk34.y -= 360.0f; + } else if(arg0->unk34.y < 0.0f) { + arg0->unk34.y += 360.0f; + } + break; + + case 1: + arg0->unk5C = 0; + arg0->unkC.y = temp_f31; + arg0->unk24.x = arg0->unkC.x; + arg0->unk24.y = arg0->unkC.y+5; + arg0->unk24.z = arg0->unkC.z; + arg0->unk34.y -= 10.0f; + if(arg0->unk34.y > 360.0f) { + arg0->unk34.y -= 360.0f; + } + if(arg0->unk60 < 120.0f) { + arg0->unk60++; + } else { + arg0->unk54 = 3; + } + break; + + case 3: + arg0->unk5C = 1; + if(arg0->unkC.y-15.0f > Center.y+CZoom) { + arg0->unk54 = 4; + arg0->unk50 = 0; + Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], 1); + } + break; + + case 4: + break; + } +} + +void fn_1_13820(StructBssDA4 *arg0) +{ + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + float temp_f27; + float temp_f26; + float temp_f25; + float temp_f24; + float temp_f23; + float temp_f22; + float temp_f21; + float temp_f20; + float temp_f19; + float sp8; + arg0->unk30 += 2.0f; + if(arg0->unk30 > 360.0f) { + arg0->unk30 -= 360.0f; + } + temp_f26 = cosd(arg0->unk30); + temp_f25 = sind(arg0->unk30); + arg0->unk40[1] = 270.0f; + temp_f29 = arg0->unk18.y; + switch(arg0->unk54) { + case 0: + temp_f31 = 10; + temp_f28 = temp_f26*temp_f31; + temp_f27 = temp_f25*temp_f31; + temp_f29 = arg0->unk18.y; + arg0->unk40[0] = 0; + arg0->unk34.x = fn_1_883C(arg0->unk34.x, -30, 0.1); + arg0->unk34.y = 180.0f+(90.0f+ -arg0->unk30); + temp_f30 = fn_1_6888(); + if(temp_f30 < 5.0f+temp_f29) { + arg0->unk48 = 0; + arg0->unk54 = 1; + arg0->unk40[0] = 8; + } + arg0->unk5C = 1; + break; + + case 1: + arg0->unk48 += 2.0f; + if(arg0->unk48 > 180.0f) { + arg0->unk54 = 3; + } + arg0->unk40[0] = 0; + arg0->unk34.x = fn_1_883C(arg0->unk34.x, 40, 0.1); + arg0->unk34.y = fn_1_883C(arg0->unk34.y, -arg0->unk30, 0.1); + temp_f23 = cosd(arg0->unk48*0.5f); + temp_f31 = (-100*temp_f23)+110; + temp_f30 = fn_1_6888(); + temp_f28 = temp_f26*temp_f31; + temp_f27 = temp_f25*temp_f31; + temp_f29 = temp_f30; + arg0->unk24.x = temp_f28; + arg0->unk24.y = temp_f30; + arg0->unk24.z = temp_f27; + arg0->unk5C = 0; + break; + + case 3: + arg0->unk5C = 1; + arg0->unk54 = 4; + arg0->unk50 = 0; + Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], 1); + break; + + case 4: + break; + } + if(arg0->unk34.y > 360) { + arg0->unk34.y -= 360; + } else if(arg0->unk34.y < 0) { + arg0->unk34.y += 360; + } + sp8 = 0; + temp_f22 = -cosd(arg0->unk34.x)*5; + temp_f24 = -sind(arg0->unk34.x)*5; + temp_f21 = temp_f24*sind(arg0->unk34.y); + temp_f20 = temp_f22; + temp_f19 = temp_f24*cosd(arg0->unk34.y); + arg0->unkC.x = temp_f21+temp_f28; + arg0->unkC.y = temp_f20+temp_f29; + arg0->unkC.z = temp_f19+temp_f27; +} + +void fn_1_13D88(StructBssDA4 *arg0) +{ + float temp_f31; + float temp_f30; + float temp_f29; + arg0->unk30 += 3.0f; + if(arg0->unk30 > 360.0f) { + arg0->unk30 -= 360.0f; + } + temp_f31 = cosd(arg0->unk30); + temp_f30 = sind(arg0->unk30); + temp_f29 = fn_1_6888(); + arg0->unk34.y = (90+(-arg0->unk30))+180+90; + arg0->unkC.x = 1.5f*(10.0f*temp_f31)+arg0->unk18.x; + arg0->unkC.z = 1.5f*(10.0f*temp_f30)+arg0->unk18.z; + arg0->unk24.x = arg0->unkC.x; + arg0->unk24.y = arg0->unkC.y+5; + arg0->unk24.z = arg0->unkC.z; + if(arg0->unkC.y > 5.0f+temp_f29) { + arg0->unk5C = 1; + } else { + arg0->unk5C = 0; + } + if(arg0->unk5C == 1 && arg0->unkC.y-15.0f > Center.y+CZoom) { + arg0->unk50 = 0; + Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], 1); + } + if(arg0->unk34.y > 360.0f) { + arg0->unk34.y -= 360.0f; + } else if(arg0->unk34.y < 0.0f) { + arg0->unk34.y += 360.0f; + } + arg0->unk34.x = fn_1_883C(arg0->unk34.x, -35, 0.1f); +} + +void fn_1_1406C(StructBssDA4 *arg0) +{ + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + float temp_f27; + float temp_f26; + float temp_f25; + float temp_f24; + float temp_f23; + float temp_f22; + float temp_f21; + temp_f30 = 1; + temp_f26 = fn_1_6888(); + switch(arg0->unk54) { + case 0: + temp_f29 = cosd(arg0->unk30); + temp_f28 = sind(arg0->unk30); + arg0->unkC.x = temp_f29*(80.0f-(10.0f*temp_f30)); + arg0->unkC.z = temp_f28*(80.0f-(10.0f*temp_f30))*0.7f; + temp_f24 = temp_f26; + if(arg0->unkC.y > temp_f24) { + arg0->unk54 = 1; + arg0->unk18.x = arg0->unkC.x; + arg0->unk18.z = arg0->unkC.z; + } + arg0->unk5C = 1; + arg0->unk48 = 0; + break; + + case 1: + arg0->unk48 += 1.5f; + if(arg0->unk48 > 180.0f) { + arg0->unk54 = 3; + Hu3DMotionSpeedSet(lbl_1_bss_75A8->model[arg0->unk4], 1); + } + + temp_f31 = 180+arg0->unk30; + if(temp_f31 > 360.0f) { + temp_f31 -= 360.0f; + } + temp_f29 = cosd(temp_f31); + temp_f28 = sind(temp_f31); + temp_f25 = cosd(arg0->unk48*0.5f); + temp_f27 = 180.0f; + temp_f30 = temp_f27+(temp_f25*(-temp_f27)); + temp_f23 = arg0->unk18.x+(temp_f29*temp_f30); + temp_f21 = arg0->unk18.z+(temp_f28*temp_f30); + temp_f22 = temp_f26; + arg0->unkC.x = temp_f23; + arg0->unkC.y = temp_f22; + arg0->unkC.z = temp_f21; + arg0->unk24.x = arg0->unkC.x; + arg0->unk24.y = arg0->unkC.y+5; + arg0->unk24.z = arg0->unkC.z; + if(arg0->unk34.x < 30.0f) { + arg0->unk34.x += 4.0f; + } else { + arg0->unk34.x = 30.0f; + } + Hu3DMotionSpeedSet(lbl_1_bss_75A8->model[arg0->unk4], 2); + arg0->unk5C = 0; + break; + + case 3: + Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], 1); + arg0->unk5C = 1; + arg0->unk50 = 0; + arg0->unk54++; + break; + + case 4: + break; + } +} + +void fn_1_144D0(StructBssDA4 *arg0) +{ + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + float temp_f27; + float temp_f26; + float temp_f25; + float temp_f24; + float temp_f23; + float temp_f22; + float temp_f21; + float temp_f20; + float temp_f19; + float temp_f18; + float spC; + float sp8; + + arg0->unk30 += 2.0f; + if(arg0->unk30 > 360.0f) { + arg0->unk30 -= 360.0f; + } + switch(arg0->unk54) { + case 0: + arg0->unk5C = 1; + temp_f31 = cosd(arg0->unk30); + temp_f30 = sind(arg0->unk30); + arg0->unkC.x = 15.0f*temp_f31; + arg0->unkC.z = 15.0f*temp_f30; + arg0->unk34.y = -arg0->unk30+90.0f; + temp_f24 = fn_1_6888(); + temp_f21 = -680.00006f+temp_f24; + if(arg0->unkC.y > temp_f21) { + arg0->unk54 = 1; + arg0->unk60 = 0; + } + break; + + case 1: + if(arg0->unk60 < 102.0f) { + arg0->unk60++; + temp_f27 = arg0->unk60/102.0f; + temp_f29 = 15+(35*temp_f27); + temp_f22 = 90*temp_f27; + temp_f31 = cosd(arg0->unk30); + temp_f30 = sind(arg0->unk30); + arg0->unkC.x = temp_f31*temp_f29; + arg0->unkC.z = temp_f30*temp_f29; + arg0->unk34.y = (-arg0->unk30+90.0f)-temp_f22; + } else { + arg0->unk54 = 2; + arg0->unk60 = 0; + Hu3DMotionSpeedSet(lbl_1_bss_75A8->model[arg0->unk4], 2); + } + break; + + case 2: + temp_f31 = cosd(arg0->unk30); + temp_f30 = sind(arg0->unk30); + temp_f24 = fn_1_6888(); + temp_f26 = 50*temp_f31; + temp_f28 = temp_f24; + temp_f25 = 50*temp_f30; + arg0->unkC.x = temp_f26; + arg0->unkC.y = temp_f28; + arg0->unkC.z = temp_f25; + if(arg0->unk34.x < 30.0f) { + arg0->unk34.x += 4.0f; + } else { + arg0->unk34.x = 30.0f; + } + arg0->unk34.y = (-arg0->unk30+90.0f)-90.0f; + if(arg0->unk60 < 180.0f) { + arg0->unk60++; + } else { + arg0->unk54 = 3; + arg0->unk60 = 0; + arg0->unk18.y = temp_f28; + Hu3DMotionSpeedSet(lbl_1_bss_75A8->model[arg0->unk4], 1); + } + arg0->unk24.x = temp_f26; + arg0->unk24.y = 5.0f+temp_f28; + arg0->unk24.z = temp_f25; + arg0->unk5C = 0; + break; + + case 3: + if(arg0->unk60 < 150.0f) { + arg0->unk60++; + } else { + arg0->unk54 = 4; + Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], 1); + } + temp_f27 = 0; + temp_f29 = 50+(40*temp_f27); + temp_f31 = cosd(arg0->unk30); + temp_f30 = sind(arg0->unk30); + temp_f26 = temp_f31*temp_f29; + temp_f28 = arg0->unk18.y; + temp_f25 = temp_f30*temp_f29; + spC = 0; + temp_f20 = -cosd(arg0->unk34.x)*5; + temp_f23 = -sind(arg0->unk34.x)*5; + temp_f19 = temp_f23*sind(arg0->unk34.y); + temp_f18 = temp_f20; + sp8 = temp_f23*cosd(arg0->unk34.y); + arg0->unkC.x = temp_f19+temp_f26; + arg0->unkC.y = temp_f18+temp_f28; + arg0->unkC.z = sp8+temp_f25; + if(arg0->unk34.y > 360.0f) { + arg0->unk34.y -= 360.0f; + } + arg0->unk34.y = (-arg0->unk30+90.0f)-90.0f; + arg0->unk5C = 1; + break; + + case 4: + if(arg0->unk5C == 1 && arg0->unkC.y-15.0f > Center.y+CZoom) { + arg0->unk50 = 0; + Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], 1); + } + break; + } + if(arg0->unk34.y > 360.0f) { + arg0->unk34.y -= 360.0f; + } else if(arg0->unk34.y < 0.0f) { + arg0->unk34.y += 360.0f; + } +} + +void fn_1_14DB4(StructBssDA4 *arg0) +{ + s32 temp_r30; + float temp_f31; + float temp_f30; + float temp_f29; + temp_f30 = cosd(arg0->unk30); + temp_f29 = sind(arg0->unk30); + arg0->unkC.x = 32.0f*temp_f30; + arg0->unkC.z = 32.0f*temp_f29; + temp_f31 = fn_1_6888(); + switch(arg0->unk54) { + case 0: + if(arg0->unkC.y > temp_f31) { + arg0->unk54 = 1; + arg0->unk60 = 0; + } + arg0->unk34.x += 4.0f; + arg0->unk5C = 1; + break; + + case 1: + arg0->unk5C = 0; + if(arg0->unk58) { + arg0->unk5C = 1; + arg0->unk54 = 4; + arg0->unk60 = 0; + temp_r30 = lbl_1_bss_75A8->model[arg0->unk8]; + Hu3DModelAttrReset(temp_r30, 1); + fn_1_15B50(temp_r30); + fn_1_155E0(temp_r30, 1); + fn_1_15618(temp_r30, arg0->unkC.x, arg0->unkC.y, arg0->unkC.z); + HuAudFXPlay(7); + } else { + if(arg0->unk60 < 72.0f) { + arg0->unk60++; + arg0->unkC.y = temp_f31; + } else { + arg0->unk54 = 3; + } + arg0->unk34.x += 8.0f; + arg0->unk34.y += 8.0f; + } + break; + + case 3: + arg0->unk34.x += 4.0f; + arg0->unk5C = 1; + break; + + case 4: + if(arg0->unk60 < 30.0f) { + arg0->unk34.x = 90; + arg0->unk34.y += 32.0f; + if(arg0->unk60 > 5) { + fn_1_155E0(lbl_1_bss_75A8->model[arg0->unk8], 0); + } + arg0->unk4C *= 0.8f; + arg0->unk60++; + } else { + arg0->unk50 = 0; + Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], 1); + } + break; + } + if(arg0->unk34.x > 360.0f) { + arg0->unk34.x -= 360.0f; + } + if(arg0->unk34.y > 360.0f) { + arg0->unk34.y -= 360.0f; + } + arg0->unk24.x = arg0->unkC.x; + arg0->unk24.y = arg0->unkC.y; + arg0->unk24.z = arg0->unkC.z; +} + +void fn_1_151A4(StructBssDA4 *arg0) +{ + s32 temp_r30; + float temp_f31; + float temp_f30; + float temp_f29; + + arg0->unk48 += 6.0000005f; + if(arg0->unk48 >= 360.0f) { + arg0->unk48 -= 360.0f; + } + arg0->unk34.z = 30*sind(arg0->unk48); + temp_f30 = cosd(arg0->unk30); + temp_f29 = sind(arg0->unk30); + arg0->unkC.x = 32.0f*temp_f30; + arg0->unkC.z = 32.0f*temp_f29; + temp_f31 = fn_1_6888(); + switch(arg0->unk54) { + case 0: + if(arg0->unkC.y > temp_f31) { + arg0->unk54 = 1; + arg0->unk60 = 0; + } + arg0->unk34.x = -45; + arg0->unk34.y = 0; + arg0->unk5C = 1; + break; + + case 1: + arg0->unk5C = 0; + if(arg0->unk58) { + arg0->unk5C = 1; + arg0->unk54 = 4; + arg0->unk60 = 0; + temp_r30 = lbl_1_bss_75A8->model[arg0->unk8]; + Hu3DModelAttrReset(temp_r30, 1); + fn_1_15B50(temp_r30); + fn_1_155E0(temp_r30, 1); + fn_1_15618(temp_r30, arg0->unkC.x, arg0->unkC.y, arg0->unkC.z); + HuAudFXPlay(19); + } else { + if(arg0->unk60 < 72.0f) { + arg0->unk60++; + arg0->unkC.y = temp_f31; + } else { + arg0->unk54 = 3; + } + + } + break; + + case 3: + arg0->unk5C = 1; + break; + + case 4: + if(arg0->unk60 < 30.0f) { + arg0->unk34.x = 90; + arg0->unk34.y += 32.0f; + if(arg0->unk60 > 5) { + fn_1_155E0(lbl_1_bss_75A8->model[arg0->unk8], 0); + } + arg0->unk4C *= 0.8f; + arg0->unk60++; + } else { + arg0->unk50 = 0; + Hu3DModelAttrSet(lbl_1_bss_75A8->model[arg0->unk4], 1); + } + break; + } + if(arg0->unk34.x > 360.0f) { + arg0->unk34.x -= 360.0f; + } + if(arg0->unk34.y > 360.0f) { + arg0->unk34.y -= 360.0f; + } + arg0->unk24.x = arg0->unkC.x; + arg0->unk24.y = arg0->unkC.y; + arg0->unk24.z = arg0->unkC.z; +} + +void fn_1_155E0(s16 arg0, s16 arg1) +{ + ModelData *temp_r31; + ParticleData *temp_r30; + temp_r31 = &Hu3DData[arg0]; + temp_r30 = temp_r31->unk_120; + temp_r30->unk_00 = arg1; +} + +void fn_1_15618(s16 arg0, float arg1, float arg2, float arg3) +{ + ParticleData *temp_r31; + ModelData *temp_r30; + temp_r30 = &Hu3DData[arg0]; + temp_r31 = temp_r30->unk_120; + temp_r31->unk_04.x = arg1; + temp_r31->unk_04.y = arg2; + temp_r31->unk_04.z = arg3; +} + +void fn_1_15658(ModelData *model, ParticleData *particle, Mtx matrix) +{ + float temp_f31; + float temp_f30; + HsfanimStruct01 *temp_r31; + u32 temp_r29; + s32 temp_r28; + s16 temp_r27; + GXColor *temp_r26; + if(particle->unk_34 == 0) { + temp_f31 = 90; + particle->unk_02 = 0; + particle->unk_10.y = 3; + temp_r31 = particle->unk_48; + for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { + temp_r31->unk2C = 0; + temp_r31->unk40.a = 0; + } + } + if(particle->unk_00) { + particle->unk_02--; + if(particle->unk_02 <= 0.0f) { + particle->unk_02 = 2; + temp_r27 = 4; + temp_r31 = particle->unk_48; + for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { + if(temp_r31->unk2C != 0) { + continue; + } + temp_r31->unk34.x = particle->unk_04.x; + temp_r31->unk34.y = particle->unk_04.y; + temp_r31->unk34.z = particle->unk_04.z; + temp_f30 = frandmod(360); + temp_r29 = frandmod(12); + temp_r29 += 4.0f; + temp_r31->unk34.x = temp_r31->unk34.x+(temp_r29*sind(temp_f30)); + temp_r31->unk34.z = temp_r31->unk34.z+(temp_r29*cosd(temp_f30)); + temp_r31->unk20 = 0; + temp_r31->unk24 = particle->unk_10.y; + temp_r29 = 1; + if(temp_r29 == 1) { + temp_r31->unk14.x = 0.97643f; + } else { + temp_r31->unk14.x = 0.96666664f; + } + temp_r31->unk00 = 60; + temp_r31->unk2C = 8; + temp_r29 = frand()&0x1; + temp_r26 = &lbl_1_data_4F4[temp_r29]; + temp_r31->unk40.r = temp_r26->r; + temp_r31->unk40.g = temp_r26->g; + temp_r31->unk40.b = temp_r26->b; + temp_r31->unk40.a = 0; + temp_r31->unk02 = temp_r29; + temp_r27--; + if(temp_r27 == 0) { + break; + } + } + } + } + temp_r27 = 0; + temp_r31 = particle->unk_48; + for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { + if(temp_r31->unk2C == 0) { + continue; + } + temp_r27++; + temp_r31->unk34.y -= 4.0f; + temp_f31 = 1.0+cosd(temp_r31->unk20); + temp_f31 *= 0.5f; + temp_r31->unk40.a = temp_f31*255; + temp_r31->unk20 += temp_r31->unk24; + temp_r31->unk30 = temp_r31->unk20; + temp_r31->unk2C *= temp_r31->unk14.x; + temp_r31->unk02 ^= 0x3; + if(temp_r31->unk02 & 0x1) { + temp_r31->unk40.b = 0; + temp_r31->unk40.g = 200; + } else { + temp_r31->unk40.b = 200; + temp_r31->unk40.g = 200; + } + if(temp_r31->unk02 & 0x2) { + temp_r29 = temp_r31->unk40.a+64; + if(temp_r29 > 255) { + temp_r29 -= 128; + } + temp_r31->unk40.a = temp_r29; + } + temp_r31->unk00_s16--; + if(temp_r31->unk00_s16 <= 0) { + temp_r31->unk2C = 0; + } + } + DCStoreRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); + if(particle->unk_00 == 0 && temp_r27 == 0) { + model->attr |= 0x1; + } +} + +void fn_1_15B50(s16 arg0) +{ + ParticleData *temp_r31; + HsfanimStruct01 *temp_r30; + s32 temp_r29; + ModelData *temp_r28 = &Hu3DData[arg0]; + temp_r31 = temp_r28->unk_120; + temp_r31->unk_34 = 0; + temp_r30 = temp_r31->unk_48; + for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r30++) { + temp_r30->unk2C = 0; + } +} + +void fn_1_15CA4(omObjData *object); +void fn_1_15D64(ModelData *model, ParticleData *particle, Mtx matrix); + +void fn_1_15BCC(omObjData *object) +{ + s16 temp_r30; + s32 temp_r29; + omSetStatBit(object, 0x100); + for(temp_r29=0; temp_r29<4; temp_r29++) { + temp_r30 = Hu3DParticleCreate(HuSprAnimReadFile(0x270019), 9); + object->model[temp_r29] = temp_r30; + Hu3DModelAttrSet(temp_r30, 1); + Hu3DModelLayerSet(temp_r30, 7); + Hu3DParticleColSet(temp_r30, 255, 255, 255); + Hu3DParticleHookSet(temp_r30, fn_1_15D64); + } + object->work[0] = -1; + object->func = fn_1_15CA4; +} + +void fn_1_15CA4(omObjData *object) +{ + s32 temp_r31; + s16 temp_r29; + ModelData *temp_r28; + ParticleData *temp_r27; + temp_r31 = object->work[0]; + if(temp_r31 <= -1) { + return; + } + object->work[0] = -1; + temp_r29 = object->model[temp_r31]; + temp_r28 = &Hu3DData[temp_r29]; + temp_r27 = temp_r28->unk_120; + Hu3DModelAttrReset(temp_r29, 1); + Hu3DModelPosSet(temp_r29, lbl_1_bss_D6C[temp_r31].x, lbl_1_bss_D6C[temp_r31].y, lbl_1_bss_D6C[temp_r31].z); + temp_r27->unk_34 = 0; + +} + +void fn_1_15D64(ModelData *model, ParticleData *particle, Mtx matrix) +{ + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + HsfanimStruct01 *temp_r31; + s32 temp_r29; + u32 temp_r28; + s16 temp_r27; + s16 temp_r26; + if(particle->unk_34 == 0) { + temp_f31 = 72; + particle->unk_00 = 1; + particle->unk_02 = 0; + particle->unk_10.y = 22.5f; + temp_r31 = particle->unk_48; + for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { + temp_r31->unk2C = 0; + temp_r31->unk40.a = 0; + } + } + if(particle->unk_00) { + particle->unk_00 = 0; + particle->unk_02--; + if(particle->unk_02 <= 0.0f) { + particle->unk_02 =30; + temp_r31 = particle->unk_48; + temp_r26 = -1; + temp_r27 = 0; + for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { + if(temp_r31->unk2C != 0) { + continue; + } + if(temp_r27 <= 0) { + temp_r26++; + if(temp_r26 >= 3) { + break; + } + temp_f30 = lbl_1_data_514[temp_r26]; + temp_f28 = lbl_1_data_508[temp_r26]; + temp_f29 = lbl_1_data_520[temp_r26]; + temp_r27 = lbl_1_data_504[temp_r26]; + } + temp_r27--; + temp_r31->unk34.x = temp_r31->unk34.y = temp_r31->unk34.z = 0; + if(90.0f == temp_f29) { + temp_r31->unk08.z = 5; + temp_r31->unk08.x = temp_r31->unk08.y = 0; + } else { + temp_f31 = 5*cosd(temp_f29); + temp_r31->unk08.z = 5.0*sind(temp_f29); + temp_r31->unk08.x = temp_f31*sind(temp_f30); + temp_r31->unk08.y = temp_f31*cosd(temp_f30); + } + temp_r31->unk20 = 0; + temp_r31->unk24 = particle->unk_10.y; + temp_r28 = 1; + temp_r31->unk00 = 8; + temp_r31->unk2C = 10; + temp_r31->unk14.x = 1.125f; + temp_r28 = frand()&0x1; + temp_r31->unk02 = temp_r28; + temp_r31->unk40.r = 255; + temp_r31->unk40.g = 255; + temp_r31->unk40.b = 255; + temp_r31->unk40.a = 0; + if(temp_r28) { + temp_r31->unk40.b = 0; + temp_r31->unk40.g = 0; + } + temp_f30 += temp_f28; + } + } + } + temp_r27 = 0; + temp_r31 = particle->unk_48; + for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { + if(temp_r31->unk2C == 0) { + continue; + } + temp_r27++; + VECAdd(&temp_r31->unk08, &temp_r31->unk34, &temp_r31->unk34); + temp_f31 = 1.0+cosd(temp_r31->unk20); + temp_f31 *= 0.45f; + temp_r31->unk40.a = temp_f31*255; + temp_r31->unk20 += temp_r31->unk24; + temp_r31->unk2C -= temp_r31->unk14.x; + temp_r31->unk02 ^= 0x3; + if(temp_r31->unk02 & 0x1) { + temp_r31->unk40.b = 0; + temp_r31->unk40.g = 100; + } else { + temp_r31->unk40.b = 0; + temp_r31->unk40.g = 200; + } + if(temp_r31->unk02 & 0x2) { + temp_r28 = temp_r31->unk40.a+64; + if(temp_r28 > 255) { + temp_r28 -= 128; + } + temp_r31->unk40.a = temp_r28; + } + temp_r31->unk00_s16--; + if(temp_r31->unk00_s16 <= 0) { + temp_r31->unk2C = 0; + } + } + DCStoreRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); + if(particle->unk_00 == 0 && temp_r27 == 0) { + model->attr |= 0x1; + } +} + +s32 fn_1_162CC(Vec *arg0, Vec *arg1) +{ + Vec spC; + s32 temp_r31; + float temp_f31; + float temp_f30; + temp_f30 = 1000; + if(!lbl_1_bss_168) { + return 0; + } + for(temp_r31=0; temp_r31data = spC = HuMemDirectMallocNum(HEAP_SYSTEM, 436*sizeof(u16), MEMORY_DEFAULT_NUM); + lbl_1_bss_14C[0] = HuSprAnimRead(HuDataReadNum(0x270024, MEMORY_DEFAULT_NUM)); + lbl_1_bss_14C[1] = HuSprAnimRead(HuDataReadNum(0x270025, MEMORY_DEFAULT_NUM)); + lbl_1_bss_14C[2] = HuSprAnimRead(HuDataReadNum(0x270026, MEMORY_DEFAULT_NUM)); + lbl_1_bss_14C[4] = HuSprAnimRead(HuDataReadNum(0x270028, MEMORY_DEFAULT_NUM)); + lbl_1_bss_14C[3] = HuSprAnimRead(HuDataReadNum(0x270029, MEMORY_DEFAULT_NUM)); + object->model[0] = Hu3DModelCreateFile(0x27001A); + omSetSca(object, 0.1f, 0.1f, 0.1f); + temp_r31 = object->model[0]; + Hu3DModelLayerSet(temp_r31, 1); + Hu3DModelAttrSet(temp_r31, 1); + object->model[4] = Hu3DModelCreateFile(0x27001E); + temp_r31 = object->model[4]; + Hu3DModelLayerSet(temp_r31, 1); + Hu3DModelScaleSet(temp_r31, 0.1f, 0.1f, 0.1f); + Hu3DModelAttrSet(temp_r31, 1); + object->model[5] = Hu3DModelCreateFile(0x270020); + temp_r31 = object->model[5]; + Hu3DModelLayerSet(temp_r31, 1); + Hu3DModelScaleSet(temp_r31, 0.1f, 0.1f, 0.1f); + object->model[2] = Hu3DModelCreateFile(0x27001B); + temp_r31 = object->model[2]; + Hu3DModelLayerSet(temp_r31, 1); + Hu3DModelPosSet(temp_r31, -20, -10, -150); + Hu3DModelScaleSet(temp_r31, 0.14500001f, 0.14500001f, 0.14500001f); + Hu3DModelAttrSet(temp_r31, 1); + object->model[3] = Hu3DModelCreateFile(0x27001D); + temp_r31 = object->model[3]; + Hu3DModelPosSet(temp_r31, 0, -50, -500); + Hu3DModelScaleSet(temp_r31, 0.15f, 0.15f, 0.15f); + Hu3DModelLayerSet(temp_r31, 0); + Hu3DModelAttrSet(temp_r31, 1); + sp8 = fn_1_F4B0(temp_r31, temp_r31); + object->model[9] = Hu3DModelCreateFile(0x27001C); + temp_r31 = object->model[9]; + lbl_1_bss_148 = temp_r31; + Hu3DModelScaleSet(temp_r31, 0.11000001f, 0.1f, 0.11000001f); + Hu3DModelPosSet(temp_r31, 0, 10000, 0); + Hu3DModelLayerSet(temp_r31, 1); + Hu3DModelAttrSet(temp_r31, 1); + object->model[11] = Hu3DModelCreateFile(0x27001F); + temp_r31 = object->model[11]; + Hu3DModelPosSet(temp_r31, 0, 10000, 0); + Hu3DModelLayerSet(temp_r31, 1); + Hu3DModelScaleSet(temp_r31, 0.105f, 0.1f, 0.105f); + Hu3DModelAttrSet(temp_r31, 1); + object->model[12] = Hu3DModelCreateFile(0x270023); + temp_r31 = object->model[12]; + Hu3DModelLayerSet(temp_r31, 3); + Hu3DModelPosSet(temp_r31, 0, 5000, 0); + Hu3DModelScaleSet(temp_r31, 0.1f, 0.1f, 0.1f); + Hu3DModelAttrSet(temp_r31, 1); + Hu3DMotionSpeedSet(temp_r31, 0); + object->model[19] = temp_r31 = fn_1_D978(lbl_1_bss_14C[0], 80, fn_1_E310); + Hu3DModelLayerSet(temp_r31, 1); + Hu3DModelPosSet(temp_r31, 0, 5100, 0); + Hu3DParticleBlendModeSet(temp_r31, 1); + temp_r29 = Hu3DData[temp_r31].unk_120->unk_1C; + temp_r29[2] = 140; + object->model[14] = Hu3DModelCreateFile(0x270021); + object->model[15] = Hu3DModelCreateFile(0x270022); + object->model[16] = Hu3DModelCreateFile(0x270021); + object->model[17] = Hu3DModelCreateFile(0x270022); + for(temp_r28=0; temp_r28<4; temp_r28++) { + temp_r31 = object->model[temp_r28+14]; + Hu3DModelLayerSet(temp_r31, 3); + Hu3DModelRotSet(temp_r31, 0, frandmod(360), 0); + Hu3DModelScaleSet(temp_r31, 0.1f, 0.1f, 0.1f); + Hu3DModelAttrSet(temp_r31, 1); + Hu3DMotionSpeedSet(temp_r31, 0); + } + object->model[6] = temp_r31 = fn_1_D978(lbl_1_bss_14C[4], 1, fn_1_EEF8); + Hu3DModelPosSet(temp_r31, 0, 5000, 0); + Hu3DModelLayerSet(temp_r31, 3); + Hu3DModelAttrReset(temp_r31, 1); + Hu3DParticleBlendModeSet(temp_r31, 1); + temp_r29 = Hu3DData[temp_r31].unk_120->unk_1C; + temp_r29[1] = 800; + object->func = fn_1_CD14; +} + +void fn_1_D004(omObjData *object); + +void fn_1_CD14(omObjData *object) +{ + u16 *temp_r30; + u32 temp_r29; + temp_r29 = fn_1_6878(); + temp_r30 = object->data; + switch(temp_r29) { + case 1: + temp_r30[0] = 2; + temp_r30[1] = 0; + lbl_1_bss_140 = 1; + break; + + case 2: + case 3: + fn_1_D004(object); + temp_r30[1]++; + break; + + case 4: + Hu3DModelScaleSet(object->model[2], 0.16000001f, 0.16000001f, 0.16000001f); + Hu3DModelShadowMapSet(object->model[0]); + Hu3DModelShadowSet(object->model[4]); + break; + + default: + break; + } + if(temp_r29 > 3) { + if(lbl_1_bss_134 >= 0) { + HuAudFXStop(lbl_1_bss_134); + lbl_1_bss_134 = -1; + } + if(lbl_1_bss_130 >= 0) { + HuAudFXStop(lbl_1_bss_130); + lbl_1_bss_130 = -1; + } + } +} + +s32 fn_1_CE68(void) +{ + switch(lbl_1_bss_140) { + case 0: + return 0; + + case 1: + if(lbl_1_bss_144) { + return 2; + } else { + return 1; + } + break; + + case 2: + if(lbl_1_bss_144) { + return 3; + } else { + return 4; + } + break; + } +} + +void fn_1_CEEC(void) +{ + omObjData *temp_r31; + s32 temp_r30; + temp_r31 = lbl_1_bss_13C; + if(lbl_1_bss_140 >= 2) { + return; + } + lbl_1_bss_140 = 2; + Hu3DModelAttrSet(temp_r31->model[5], 1); + Hu3DModelAttrSet(temp_r31->model[9], 1); + Hu3DModelAttrSet(temp_r31->model[11], 1); + Hu3DModelAttrSet(temp_r31->model[12], 1); + Hu3DModelAttrSet(temp_r31->model[19], 1); + for(temp_r30=0; temp_r30<4; temp_r30++) { + Hu3DModelAttrSet(temp_r31->model[temp_r30+14], 1); + } + Hu3DModelAttrReset(temp_r31->model[0], 1); + Hu3DModelAttrReset(temp_r31->model[4], 1); + Hu3DModelAttrReset(temp_r31->model[2], 1); + Hu3DModelAttrReset(temp_r31->model[3], 1); +} + +void fn_1_D6F0(omObjData *object); + +void fn_1_D004(omObjData *object) +{ + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + u16 *temp_r30; + float *temp_r28; + s32 temp_r27; + s32 temp_r26; + CameraData *sp8; + temp_r30 = object->data; + sp8 = &Hu3DCamera[0]; + temp_f30 = fn_1_6888(); + temp_f28 = 7000; + switch(temp_r30[0]) { + case 2: + Hu3DModelAttrReset(object->model[9], 1); + Hu3DModelAttrReset(object->model[11], 1); + Hu3DModelAttrReset(object->model[12], 1); + Hu3DModelAttrReset(object->model[19], 1); + for(temp_r26=0; temp_r26<4; temp_r26++) { + Hu3DModelAttrReset(object->model[temp_r26+14], 1); + } + Hu3DModelAttrReset(object->model[6], 1); + if(lbl_1_bss_134 < 0) { + lbl_1_bss_134 = HuAudFXPlay(1363); + } + temp_r30[2] = 0; + temp_r30[0]++; + + case 3: + temp_f31 = temp_r30[1]*0.25f; + Hu3DModelRotSet(object->model[9], 0, 0.7f*-temp_f31, 0); + Hu3DModelRotSet(object->model[11], 0, 1.3f*temp_f31, 0); + Hu3DModelRotSet(object->model[12], 0, 3.7f*temp_f31, 0); + temp_f29 = 1.0f-((temp_f30-5000)/15000); + Hu3DMotionTimeSet(object->model[12], 95.0f*temp_f29); + temp_r27 = object->model[6]; + temp_r28 = Hu3DData[temp_r27].unk_120->unk_1C; + temp_r28[2] = 1.0f-((temp_f30-5000)/(temp_f28-5000)); + if(temp_f30 <= 5400 && temp_r30[2] == 0) { + temp_r30[2] = 30; + if(!lbl_1_bss_40) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, temp_r30[2]); + lbl_1_bss_44 = 1; + } + lbl_1_bss_144 = 1; + temp_r30[0]++; + } + if(temp_f30 <= 4800) { + temp_r28[1] = 1200; + temp_r30[0]++; + } + fn_1_D6F0(object); + break; + + case 4: + if(temp_r30[2]-- == 0) { + if(!lbl_1_bss_40) { + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + lbl_1_bss_44 = 0; + } + if(lbl_1_bss_138 < 0) { + lbl_1_bss_138 = HuAudFXPlay(1357); + } + fn_1_CEEC(); + if(lbl_1_bss_134 >= 0) { + HuAudFXStop(lbl_1_bss_134); + lbl_1_bss_134 = -1; + } + if(lbl_1_bss_130 < 0) { + lbl_1_bss_130 = HuAudFXPlay(1361); + } + temp_r30[0]++; + } + + break; + + case 5: + if(!WipeStatGet()) { + lbl_1_bss_144 = 0; + } + temp_r27 = object->model[6]; + if(temp_r27 != 0) { + Hu3DModelPosSet(temp_r27, 0, 200+temp_f30, 0); + temp_r28 = Hu3DData[temp_r27].unk_120->unk_1C; + temp_r28[2] -= 0.025f; + if(temp_r28[2] <= 0) { + Hu3DModelAttrReset(temp_r27, 0x20); + Hu3DModelKill(temp_r27); + object->model[6] = 0; + } + } + temp_f31 = temp_r30[1]%360; + temp_f31 = 0.1f*(1.4f+((0.2f*temp_f30)/5000)); + Hu3DModelScaleSet(object->model[2], temp_f31, temp_f31, temp_f31); + break; + } +} + +void fn_1_D6F0(omObjData *object) +{ + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + s32 temp_r31; + s32 temp_r30; + s32 temp_r29; + temp_f28 = fn_1_6888()-1500; + temp_f29 = 500.0f*(int)(temp_f28/500.0f); + temp_r30 = (int)(temp_f28/500.0f)%4; + for(temp_r31=0; temp_r31<4; temp_r31++) { + temp_r29 = object->model[temp_r30+14]; + Hu3DModelPosSet(temp_r29, 0, temp_f29, 0); + temp_f31 = temp_f29-temp_f28; + temp_f30 = 0; + if(temp_f31 > -250.0f && temp_f31 < 1525.0f) { + temp_f30 = 45; + if(temp_f31 < 0.0f) { + temp_f31 -= -250.0f; + temp_f30 *= fabs(temp_f31/250.0f); + } else { + if(temp_f31 > 1425) { + temp_f31 -= 1425; + temp_f30 *= 1.0-fabs(temp_f31/100.0f); + } + } + } + Hu3DMotionTimeSet(temp_r29, temp_f30); + temp_f29 += 500.0f; + temp_r30 = (temp_r30+1)%4; + } +} + +s16 fn_1_D978(AnimData *arg0, s16 arg1, ParticleHook arg2) +{ + s32 temp_r31; + HsfanimStruct01 *temp_r30; + ParticleData *temp_r29; + s32 temp_r28; + HsfanimStruct01 *temp_r27; + temp_r28 = Hu3DParticleCreate(arg0, arg1); + Hu3DParticleHookSet(temp_r28, arg2); + Hu3DModelAttrSet(temp_r28, 1); + temp_r29 = Hu3DData[temp_r28].unk_120; + temp_r27 = temp_r29->unk_48; + for(temp_r31=0; temp_r31unk_30; temp_r31++, temp_r27++) { + temp_r27->unk2C = 0; + } + temp_r30 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(HsfanimStruct01), MEMORY_DEFAULT_NUM); + temp_r29->unk_1C = temp_r30; + temp_r30->unk00_s16 = temp_r28; + temp_r30->unk02 = 0; + for(temp_r31=0; temp_r31<32; temp_r31++) { + //Ugly expression to match store without new type + *((s16 *)(((u8 *)temp_r30)+(temp_r31*2)+4)) = 0; + } + return temp_r28; +} + +void fn_1_DA6C(ModelData *model, ParticleData *particle, Mtx matrix) +{ + float temp_f31; + float temp_f30; + + HsfanimStruct01 *temp_r31; + ParticleData *temp_r29; + s32 temp_r28; + s32 temp_r27; + s16 temp_r26; + temp_r29 = particle->unk_1C; + switch(temp_r29->unk_02) { + case 0: + temp_r31 = particle->unk_48; + for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { + temp_r31->unk00 = 0; + } + particle->unk_00 = 0; + temp_r29->unk_02++; + temp_r29->unk_04.y = 3; + temp_r29->unk_04.z = 25; + break; + + case 1: + for(temp_r28=0; temp_r28<100; temp_r28++) { + temp_r31 = particle->unk_48; + for(temp_r27=0; temp_r27unk_30; temp_r27++, temp_r31++) { + if(!temp_r31->unk00_s16) { + break; + } + } + if(temp_r27 == particle->unk_30) { + temp_r29->unk_02++; + break; + } + temp_r31->unk34.x = temp_r31->unk34.y = temp_r31->unk34.z = 0; + temp_r26 = fn_1_11670()%360; + temp_r31->unk08.x = sind(temp_r26); + temp_r31->unk08.y = -6.0+(2.0*temp_r29->unk_10.x); + temp_r31->unk08.z = cosd(temp_r26); + temp_r31->unk14.x = ((fn_1_11670() & 0x7)+temp_r29->unk_04.z)-4.0f; + temp_r31->unk14.x *= 0.1f; + temp_f31 = temp_r29->unk_04.y+(0.01*(float)(fn_1_11670()%400)); + temp_f31 *= 0.1f; + temp_r31->unk34.x = temp_f31*temp_r31->unk08.x; + temp_r31->unk34.y = 0; + temp_r31->unk34.z = temp_f31*temp_r31->unk08.z; + temp_r31->unk2C = (0.01*(frand()%2000))+30.0; + temp_r31->unk2C *= 0.1f; + temp_r31->unk40.a = 255; + temp_r31->unk00_s16 = 30; + } + break; + } + temp_r31 = particle->unk_48; + for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { + if(temp_r31->unk00_s16 == 0) { + continue; + } + temp_f30 = temp_r31->unk14.x; + temp_r31->unk34.x += temp_r31->unk08.x*temp_f30; + temp_r31->unk34.y += temp_r31->unk08.y; + temp_r31->unk34.z += temp_r31->unk08.z*temp_f30; + temp_r31->unk2C *= 1.025f; + temp_r31->unk40.a *= 0.95f; + temp_r31->unk40.a--; + temp_r31->unk14.x *= 0.8f; + temp_r31->unk08.y *= 0.85f; + temp_r31->unk08.y += 0.1f; + if(temp_r31->unk40.a < 2) { + temp_r31->unk40.a = 0; + temp_r31->unk00_s16 = 0; + particle->unk_00++; + } + } + DCFlushRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); + if(particle->unk_00 >= particle->unk_30 && temp_r29->unk_02 == 2) { + temp_r29->unk_02 = 0; + Hu3DModelAttrReset(temp_r29->unk_00, 0x20); + Hu3DModelKill(temp_r29->unk_00); + } +} + +void fn_1_DFD0(ModelData *model, ParticleData *particle, Mtx matrix) +{ + float temp_f31; + HsfanimStruct01 *temp_r31; + ParticleData *temp_r30; + s32 temp_r28; + s16 temp_r27; + s32 temp_r26; + temp_r30 = particle->unk_1C; + switch(temp_r30->unk_02) { + case 0: + temp_r31 = particle->unk_48; + temp_r30->unk_04.x = 10; + for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { + temp_r31->unk34.x = temp_r31->unk34.y = temp_r31->unk34.z = 0; + temp_r27 = fn_1_11670()%360; + temp_r31->unk08.x = sind(temp_r27); + temp_r31->unk08.y = 0; + temp_r31->unk08.z = cosd(temp_r27); + temp_f31 = temp_r30->unk_04.x+(temp_r30->unk_04.x*((1.0/65536.0)*(float)fn_1_11670())); + temp_r31->unk34.x = temp_f31*temp_r31->unk08.x; + temp_r31->unk34.y = -(100.0*((1.0/65536.0)*(float)fn_1_11670())); + temp_r31->unk34.z = temp_f31*temp_r31->unk08.z; + temp_r31->unk2C = (0.01*(frand()%2000))+40.0; + temp_r26 = frand()&0x2F; + temp_r31->unk40.r = temp_r26+208; + temp_r31->unk40.g = temp_r26+208; + temp_r31->unk40.a = (frand()&0x5F)+32; + } + temp_r30->unk_02++; + particle->unk_00 = 60; + break; + + case 1: + if(--particle->unk_00 == 0) { + Hu3DModelAttrReset(temp_r30->unk_00, 0x20); + Hu3DModelKill(temp_r30->unk_00); + return; + } + break; + } + DCFlushRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); +} + +void fn_1_E310(ModelData *model, ParticleData *particle, Mtx matrix) +{ + float temp_f31; + float temp_f30; + + HsfanimStruct01 *temp_r31; + ParticleData *temp_r29; + s32 temp_r28; + s32 temp_r27; + s16 temp_r26; + temp_r29 = particle->unk_1C; + switch(temp_r29->unk_02) { + case 0: + temp_r31 = particle->unk_48; + temp_f30 = 360.0f/particle->unk_30; + + for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { + temp_r31->unk00_s16 = (s32)(360.0*((1.0/65536.0)*(float)fn_1_11670())); + temp_r31->unk34.x = temp_r31->unk34.y = temp_r31->unk34.z = 0; + temp_r26 = (temp_f30*temp_r28)+(int)((temp_f30*0.5f)*((1.0/32768.0)*(float)(fn_1_11670()-32768))); + temp_r31->unk20 = temp_r26; + temp_r31->unk30 = (M_PI*(temp_r26+90.0f))/180.0; + temp_r31->unk08.x = sind(temp_r26); + temp_r31->unk08.y = 0; + temp_r31->unk08.z = cosd(temp_r26); + temp_f31 = temp_r29->unk_04.y+((0.25f*temp_r29->unk_04.y)*((1.0/65536.0)*(float)fn_1_11670())); + temp_r31->unk14.x = temp_f31*temp_r31->unk08.x; + temp_r31->unk14.y = 120.0*((1.0/32768.0)*(float)(fn_1_11670()-32768)); + temp_r31->unk14.z = temp_f31*temp_r31->unk08.z; + temp_r31->unk24 = temp_r31->unk2C = (0.01*(frand()%2000))+160; + if(particle->unk_2C == 1) { + temp_r27 = frand()&0x2F; + temp_r31->unk40.r = temp_r27+32; + temp_r31->unk40.g = temp_r27+32; + temp_r31->unk40.b = 64+temp_r27+((int)(((46-temp_r27)*((1.0/65536.0)*(float)fn_1_11670())))); + temp_r31->unk40.a = (frand()&0x2F)+32; + } else { + temp_r27 = frand()&0x2F; + temp_r31->unk40.r = temp_r27+208; + temp_r31->unk40.g = temp_r27+208; + temp_r31->unk40.a = (frand()&0x4F)+176; + } + } + temp_r29->unk_02++; + + case 1: + temp_r31 = particle->unk_48; + for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { + temp_r31->unk00_s16 += 4; + if(temp_r31->unk00_s16 >= 360) { + temp_r31->unk00_s16 -= 360; + } + temp_r31->unk34.x = temp_r31->unk14.x; + temp_r31->unk34.y = temp_r31->unk14.y; + temp_r31->unk34.z = temp_r31->unk14.z; + temp_r31->unk30 = M_PI*(90+(temp_r31->unk20+temp_r29->unk_04.z))/180; + temp_r31->unk2C = temp_r31->unk24*((0.1f*sind(temp_r31->unk00_s16))+1.0); + } + break; + } + DCFlushRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); +} + +void fn_1_E9B4(ModelData *model, ParticleData *particle, Mtx matrix) +{ + float temp_f30; + float temp_f31; + HsfanimStruct01 *temp_r31; + ParticleData *temp_r30; + s32 temp_r28; + s16 temp_r27; + s32 temp_r26; + temp_r30 = particle->unk_1C; + switch(temp_r30->unk_02) { + case 0: + temp_r31 = particle->unk_48; + for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { + temp_r31->unk00_s16 = fn_1_11670()%360; + temp_r31->unk34.x = temp_r31->unk34.y = temp_r31->unk34.z = 0; + temp_r27 = fn_1_11670()%360; + temp_r31->unk20 = temp_r27; + temp_r31->unk08.x = sind(temp_r27); + temp_r31->unk08.y = 0; + temp_r31->unk08.z = cosd(temp_r27); + temp_f31 = temp_r30->unk_04.x+(0.01*((30.0f*temp_r30->unk_04.x)*((1.0/65536.0)*(float)fn_1_11670()))); + temp_f30 = (0.15f+(0.3f*((1.0/65536.0)*(float)fn_1_11670()))); + temp_r31->unk14.x = temp_f31*temp_r31->unk08.x; + temp_r31->unk14.y = 50*((1.0/32768.0)*(float)(fn_1_11670()-32768)); + temp_r31->unk14.z = temp_f31*temp_r31->unk08.z*temp_f30; + temp_r31->unk24 = temp_r31->unk2C = temp_r30->unk_04.x+(0.01*((50.0f*temp_r30->unk_04.x)*((1.0/65536.0)*(float)fn_1_11670()))); + temp_r26 = frand()&0x7F; + temp_r31->unk40.r = temp_r26+64; + temp_r31->unk40.g = temp_r26+64; + temp_f31 -= temp_r30->unk_04.x; + temp_r31->unk40.a = 32+(int)((48.0f*temp_f31)/(0.2f*temp_r30->unk_04.x))+(int)(32*((1.0/65536.0)*(float)fn_1_11670())); + } + temp_r30->unk_02++; + + case 1: + temp_r31 = particle->unk_48; + for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { + temp_r31->unk00_s16 += 2; + if(temp_r31->unk00_s16 >= 360) { + temp_r31->unk00_s16 -= 360; + } + temp_r31->unk34.x = temp_r31->unk14.x; + temp_r31->unk34.y = temp_r31->unk14.y; + temp_r31->unk34.z = temp_r31->unk14.z; + temp_r31->unk2C = temp_r31->unk24*((0.1f*sind(temp_r31->unk00_s16))+1.0); + } + break; + } + DCFlushRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); +} + +void fn_1_EEF8(ModelData *model, ParticleData *particle, Mtx matrix) +{ + float temp_f31; + HsfanimStruct01 *temp_r31; + ParticleData *temp_r29; + s32 temp_r28; + u8 temp_r27; + temp_r29 = particle->unk_1C; + switch(temp_r29->unk_02) { + case 0: + temp_r31 = particle->unk_48; + for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { + temp_r31->unk34.x = temp_r31->unk34.y = temp_r31->unk34.z = 0; + temp_r31->unk40.r = temp_r31->unk40.g = temp_r31->unk40.b = temp_r31->unk40.a = 255; + temp_r31->unk2C = temp_r29->unk_04.x; + } + temp_r29->unk_02++; + break; + + case 1: + if(temp_r29->unk_04.y < 0.0f) { + break; + } + temp_f31 = 0.1f+temp_r29->unk_04.y; + temp_f31 = 1.2f*(temp_f31*temp_f31); + if(temp_f31 > 1.0f) { + temp_f31 = 1.0f; + } + temp_r27 = 255*temp_f31; + temp_r31 = particle->unk_48; + for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { + temp_r31->unk40.a = temp_r27; + } + break; + } + DCFlushRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); +} + +void fn_1_F06C(ModelData *model, ParticleData *particle, Mtx matrix) +{ + float temp_f31; + HsfanimStruct01 *temp_r31; + ParticleData *temp_r29; + s32 temp_r28; + s16 temp_r27; + temp_r27 = 0; + temp_r29 = particle->unk_1C; + switch(temp_r29->unk_02) { + case 0: + temp_r31 = particle->unk_48; + for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { + temp_r31->unk00_s16 = temp_r31->unk02 = 0; + } + temp_r29->unk_02++; + break; + + case 1: + temp_r31 = particle->unk_48; + for(temp_r28=0; temp_r28unk_30; temp_r28++, temp_r31++) { + if(temp_r31->unk00_s16) { + temp_r31->unk00_s16--; + continue; + } + if(temp_r31->unk02 == 0) { + temp_f31 = 360.0f*((1.0/65536.0)*(float)fn_1_11670()); + temp_r31->unk34.x = 10.0*(50.0+(250.0*((1.0/65536.0)*(float)fn_1_11670())))*sind(temp_f31); + temp_r31->unk34.y = 0; + temp_r31->unk34.z = 10.0*(50.0+(250.0*((1.0/65536.0)*(float)fn_1_11670())))*cosd(temp_f31); + temp_r31->unk30 = (M_PI*(temp_f31-90.0f))/180; + temp_r31->unk40.r = temp_r31->unk40.g = temp_r31->unk40.b = temp_r31->unk40.a = 192; + temp_r31->unk40.b = 160; + temp_r31->unk2C = 0; + temp_r31->unk00_s16 = (s32)(90.0*((1.0/65536.0)*(float)fn_1_11670())); + temp_r31->unk02 = 60; + } + temp_r31->unk40.a = 248*sind(temp_r31->unk02*3); + temp_r31->unk2C = temp_r29->unk_04.x*(60-temp_r31->unk02); + temp_r31->unk02--; + } + if(particle->unk_30 == temp_r27) { + Hu3DModelAttrReset(temp_r29->unk_00, 0x20); + Hu3DModelKill(temp_r29->unk_00); + return; + } + break; + } + DCFlushRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); +} + +WorkF4B0 *fn_1_F4B0(s16 arg0, s16 arg1) +{ + WorkF4B0 *temp_r31; + s32 temp_r30; + ModelData *temp_r29; + temp_r29 = &Hu3DData[arg0]; + temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(WorkF4B0), MEMORY_DEFAULT_NUM); + temp_r29->unk_120 = (void *)temp_r31; + temp_r31->unk0 = arg0; + temp_r31->unk2 = arg1; + temp_r31->unk4 = NULL; + temp_r31->unk8 = NULL; + for(temp_r30=0; temp_r30<32; temp_r30++) { + temp_r31->unk10[temp_r30] = 0; + } + return temp_r31; +} + +void fn_1_F564(s16 arg0) +{ + float temp_f31; + WorkF4B0 *temp_r31; + s32 temp_r30; + HsfObject *temp_r29; + s32 temp_r28; + ModelData *temp_r27; + temp_r27 = &Hu3DData[arg0]; + temp_r29 = temp_r27->hsfData->root; + temp_r31 = (WorkF4B0 *)temp_r27->unk_120; + if(temp_r31->unk8 == NULL) { + temp_r31->unk8 = HuMemDirectMallocNum(HEAP_SYSTEM, temp_r29->data.st->count*sizeof(HsfVector2f), MEMORY_DEFAULT_NUM); + temp_r31->unkC = HuMemDirectMallocNum(HEAP_SYSTEM, temp_r29->data.st->count, MEMORY_DEFAULT_NUM); + for(temp_r30=0; temp_r30data.st->count; temp_r30++) { + temp_r31->unk8[temp_r30].x = ((HsfVector2f *)(temp_r29->data.st->data))[temp_r30].x; + temp_r31->unk8[temp_r30].y = ((HsfVector2f *)(temp_r29->data.st->data))[temp_r30].y; + } + } + temp_r31->unk10_f[0] += 2.0f; + for(temp_r30=0; temp_r30data.st->count; temp_r30++) { + temp_r31->unkC[temp_r30] = 0; + } + for(temp_r30=0; temp_r30data.st->count; temp_r30++) { + if(temp_r31->unkC[temp_r30]) { + continue; + } + temp_r31->unkC[temp_r30]++; + temp_f31 = temp_r31->unk10_f[0]+(60.0f*temp_r30); + ((HsfVector2f *)(temp_r29->data.st->data))[temp_r30].x = temp_r31->unk8[temp_r30].x+(0.005f*sind(temp_f31)); + ((HsfVector2f *)(temp_r29->data.st->data))[temp_r30].y = temp_r31->unk8[temp_r30].y+(0.005f*cosd(temp_f31)); + for(temp_r28=temp_r30; temp_r28data.st->count; temp_r28++) { + if(temp_r31->unkC[temp_r28]) { + continue; + } + if(temp_r31->unk8[temp_r30].x != temp_r31->unk8[temp_r28].x || temp_r31->unk8[temp_r30].y != temp_r31->unk8[temp_r28].y) { + continue; + } + temp_r31->unkC[temp_r28]++; + ((HsfVector2f *)(temp_r29->data.st->data))[temp_r28].x = ((HsfVector2f *)(temp_r29->data.st->data))[temp_r30].x; + ((HsfVector2f *)(temp_r29->data.st->data))[temp_r28].y = ((HsfVector2f *)(temp_r29->data.st->data))[temp_r30].y; + } + } +} + +typedef struct unk_fn_10484 { + ModelData *unk0; + HsfObject *unk4; + s32 unk8; + Mtx unkC; + float unk3C[2]; + +} UnkFn10484; + +void fn_1_10484(UnkFn10484 *arg0, HsfFace *arg1, HsfDrawData *arg2, GXColor *arg3); + +void fn_1_F8A0(ModelData *arg0, Mtx arg1) +{ + WorkF4B0 *temp_r31; + GXColor *temp_r30; + s16 temp_r29; + s32 temp_r28; + HsfBuffer *temp_r27; + HsfFace *temp_r26; + + UnkFn10484 spA0; + Mtx sp70; + Mtx sp40; + Mtx sp10; + s16 spC = 0; + temp_r31 = (void *)arg0->unk_120; + spA0.unk0 = &Hu3DData[temp_r31->unk2]; + spA0.unk4 = spA0.unk0->hsfData->root; + MTXCopy(arg1, spA0.unkC); + lbl_1_bss_128[0] = spA0.unk4->constData; + lbl_1_bss_120[0] = lbl_1_bss_128[0]->dlBuf; + lbl_1_bss_11C = lbl_1_bss_128[0]->drawData; + GXLoadPosMtxImm(spA0.unkC, GX_PNMTX0); + MTXInverse(spA0.unkC, sp70); + MTXTranspose(sp70, sp40); + GXLoadNrmMtxImm(sp40, GX_PNMTX0); + if(Hu3DShadowF && (lbl_1_bss_128[0]->flags & 0x8)) { + MTXConcat(sp10, spA0.unkC, sp40); + MTXConcat(Hu3DShadowData.unk_68, Hu3DShadowData.unk_38, sp70); + MTXConcat(sp70, sp40, sp40); + GXLoadTexMtxImm(sp40, GX_TEXMTX9, GX_MTX3x4); + } + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); + if(temp_r31->unk4 == NULL) { + temp_r31->unk4 = HuMemDirectMallocNum(HEAP_SYSTEM, spA0.unk4->data.color->count*sizeof(GXColor), MEMORY_DEFAULT_NUM); + for(temp_r29=0; temp_r29data.color->count; temp_r29++) { + temp_r30 = &temp_r31->unk4[temp_r29]; + temp_r30->r = temp_r31->unk10[0]; + temp_r30->g = temp_r31->unk10[1]; + temp_r30->b = temp_r31->unk10[2]; + if(((GXColor *)(spA0.unk4->data.color->data))[temp_r29].a == 255) { + temp_r30->a = temp_r31->unk10[3]; + } else { + temp_r30->a = ((GXColor *)(spA0.unk4->data.color->data))[temp_r29].a; + } + } + } + temp_r27 = spA0.unk4->data.face; + temp_r26 = temp_r27->data; + temp_r28 = 0; + for(temp_r29=0; temp_r29count;) { + fn_1_10484(&spA0, temp_r26, &lbl_1_bss_11C[temp_r28], temp_r31->unk4); + temp_r28++; + temp_r29 += lbl_1_bss_11C[temp_r28-1].polyCnt; + temp_r26 += lbl_1_bss_11C[temp_r28-1].polyCnt; + } +} + +void fn_1_FB98(ModelData *arg0, Mtx arg1) +{ + WorkF4B0 *temp_r31; + s16 temp_r30; + s16 temp_r29; + s16 temp_r28; + GXColor *temp_r27; + s32 temp_r26; + HsfBuffer *temp_r25; + HsfFace *temp_r24; + s32 temp_r23; + void *temp_r22; + + UnkFn10484 sp120; + Mtx spF0; + Mtx spC0; + Mtx sp90; + float sp50[2][8]; + float sp10[2][8]; + s16 spC = 0; + temp_r31 = (void *)arg0->unk_120; + sp120.unk0 = &Hu3DData[temp_r31->unk2]; + sp120.unk4 = sp120.unk0->hsfData->root; + MTXCopy(arg1, sp120.unkC); + lbl_1_bss_128[0] = sp120.unk4->constData; + lbl_1_bss_120[0] = lbl_1_bss_128[0]->dlBuf; + lbl_1_bss_11C = lbl_1_bss_128[0]->drawData; + GXLoadPosMtxImm(sp120.unkC, GX_PNMTX0); + MTXInverse(sp120.unkC, spF0); + MTXTranspose(spF0, spC0); + GXLoadNrmMtxImm(spC0, GX_PNMTX0); + if(Hu3DShadowF && (lbl_1_bss_128[0]->flags & 0x8)) { + MTXConcat(sp90, sp120.unkC, spC0); + MTXConcat(Hu3DShadowData.unk_68, Hu3DShadowData.unk_38, spF0); + MTXConcat(spF0, spC0, spC0); + GXLoadTexMtxImm(spC0, GX_TEXMTX9, GX_MTX3x4); + } + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); + if(temp_r31->unk4 == NULL) { + temp_r31->unk4 = HuMemDirectMallocNum(HEAP_SYSTEM, sp120.unk4->data.color->count*sizeof(GXColor), MEMORY_DEFAULT_NUM); + for(temp_r30=0; temp_r30data.color->count; temp_r30++) { + temp_r27 = &temp_r31->unk4[temp_r30]; + temp_r27->r = temp_r31->unk10[0]; + temp_r27->g = temp_r31->unk10[1]; + temp_r27->b = temp_r31->unk10[2]; + temp_r27->a = temp_r31->unk10[3]; + } + } + if(temp_r31->unk8 == NULL) { + temp_r31->unk8 = HuMemDirectMallocNum(HEAP_SYSTEM, sp120.unk4->data.st->count*sizeof(HsfVector2f), MEMORY_DEFAULT_NUM); + temp_r31->unkC = HuMemDirectMallocNum(HEAP_SYSTEM, sp120.unk4->data.st->count, MEMORY_DEFAULT_NUM); + for(temp_r30=0; temp_r30data.st->count; temp_r30++) { + temp_r31->unk8[temp_r30].x = ((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r30].x; + temp_r31->unk8[temp_r30].y = ((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r30].y; + } + } + temp_r31->unk10_f[15] += 0.5f; + for(temp_r30=0; temp_r30<8; temp_r30++) { + float temp_f31 = temp_r31->unk10_f[15]+(40.0f*temp_r30); + sp50[0][temp_r30] = sind(temp_f31); + sp10[0][temp_r30] = cosd(temp_f31); + } + for(temp_r30=0; temp_r30data.st->count; temp_r30++) { + temp_r31->unkC[temp_r30] = 0; + } + for(temp_r30=0, temp_r29=0; temp_r30data.st->count; temp_r30++, temp_r29++) { + if(temp_r31->unkC[temp_r30]) { + continue; + } + temp_r31->unkC[temp_r30]++; + if(temp_r31->unk10[4]) { + temp_r31->unk8[temp_r30].x = (1.5f*((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r30].x)+(0.04f*sp50[0][temp_r29 & 0x7]); + temp_r31->unk8[temp_r30].y = (2.0f*((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r30].y)+(0.04f*sp10[0][temp_r29 & 0x7]); + } else { + temp_r31->unk8[temp_r30].x = (1.25f*((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r30].x)+(0.04f*sp50[0][temp_r29 & 0x7]); + temp_r31->unk8[temp_r30].y = (1.75f*((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r30].y)+(0.04f*sp10[0][temp_r29 & 0x7]); + } + temp_r23 = temp_r31->unk10[3]+((0.8f*temp_r31->unk10[3])*sind((3.0f*temp_r31->unk10_f[15])+(120.0f*temp_r29))); + temp_r31->unk4[temp_r30].a = temp_r23; + for(temp_r28=temp_r30; temp_r28data.st->count; temp_r28++) { + temp_r29++; + if(temp_r31->unkC[temp_r28]) { + continue; + } + if(((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r30].x != ((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r28].x + || ((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r30].y != ((HsfVector2f *)(sp120.unk4->data.st->data))[temp_r28].y) { + continue; + } + temp_r31->unkC[temp_r28]++; + temp_r31->unk8[temp_r28].x = temp_r31->unk8[temp_r30].x; + temp_r31->unk8[temp_r28].y = temp_r31->unk8[temp_r30].y; + temp_r31->unk4[temp_r28].a = temp_r23; + temp_r29--; + } + } + temp_r22 = sp120.unk4->data.st->data; + sp120.unk4->data.st->data = temp_r31->unk8; + temp_r25 = sp120.unk4->data.face; + temp_r24 = temp_r25->data; + temp_r26 = 0; + for(temp_r30=0; temp_r30count;) { + fn_1_10484(&sp120, temp_r24, &lbl_1_bss_11C[temp_r26], temp_r31->unk4); + temp_r26++; + temp_r30 += lbl_1_bss_11C[temp_r26-1].polyCnt; + temp_r24 += lbl_1_bss_11C[temp_r26-1].polyCnt; + } + sp120.unk4->data.st->data = temp_r22; +} + +void fn_1_10830(ModelData *arg0, HsfBitmap *arg1, HsfAttribute *arg2, s16 arg3); +void fn_1_10B60(UnkFn10484 *arg0, HsfMaterial*arg1); + +void fn_1_10484(UnkFn10484 *arg0, HsfFace *arg1, HsfDrawData *arg2, GXColor *arg3) +{ + HsfMaterial *temp_r31; + HsfObject *temp_r30; + HsfAttribute *temp_r29; + s16 temp_r27; + s16 temp_r25; + HsfdrawStruct01 *temp_r24; + ModelData *temp_r23; + Hu3DTexAnimDataStruct *temp_r22; + void *temp_r20; + GXColor sp14; + temp_r30 = arg0->unk4; + temp_r23 = arg0->unk0; + temp_r31 = &temp_r30->data.material[arg1->mat & 0xFFF]; + sp14.r = temp_r31->litColor[0]; + sp14.g = temp_r31->litColor[1]; + sp14.b = temp_r31->litColor[2]; + sp14.a = 255; + GXSetChanAmbColor(GX_COLOR0A0, sp14); + sp14.r = temp_r31->color[0]; + sp14.g = temp_r31->color[1]; + sp14.b = temp_r31->color[2]; + sp14.a = 255; + GXSetChanMatColor(GX_COLOR0A0, sp14); + if((temp_r31->invAlpha != 0 || temp_r31->pass == 1) && !(temp_r23->attr & 0x2)) { + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); + } else { + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + } + if(temp_r31->numAttrs == 0) { + return; + } + temp_r25 = (temp_r30->data.color) ? 5 : 1; + if(arg2->flags & 0x2) { + temp_r25 |= 0x2; + } + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, temp_r30->data.vertex->data, sizeof(HsfVector3f)); + if(temp_r25 & 0x2) { + GXSetVtxDesc(GX_VA_NBT, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NBT, GX_NRM_NBT, GX_S16, 8); + } else { + GXSetVtxDesc(GX_VA_NRM, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0); + GXSetArray(GX_VA_NRM, temp_r30->data.normal->data, sizeof(HsfVector3f)); + } + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_TEX0, temp_r30->data.st->data, sizeof(HsfVector2f)); + if(temp_r25 & 0x4) { + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, arg3, sizeof(GXColor)); + } + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZCompLoc(GX_FALSE); + for(temp_r27=0; temp_r27numAttrs; temp_r27++) { + temp_r29 = &temp_r30->data.attribute[temp_r31->attrs[temp_r27]]; + if(temp_r29->unk04) { + temp_r24 = temp_r29->unk04; + temp_r22 = &Hu3DTexAnimData[temp_r24->unk02]; + if((temp_r24->unk00 & 0x1) && !(temp_r22->unk00 & 0x4)) { + if(Hu3DAnimSet(arg0->unk0, temp_r29, (s16)temp_r27)) { + continue; + } + } + } + fn_1_10830(arg0->unk0, temp_r29->bitmap, temp_r29, (s16)temp_r27); + } + fn_1_10B60(arg0, temp_r31); + temp_r20 = (void *)(arg2->dlOfs+((u32)lbl_1_bss_120[0])); + GXCallDisplayList(temp_r20, arg2->dlSize); +} + +void fn_1_10830(ModelData *arg0, HsfBitmap *arg1, HsfAttribute *arg2, s16 arg3) +{ + GXTexObj sp1C; + GXTlutObj sp10; + s16 temp_r29; + s16 temp_r28; + s16 temp_r27; + s16 temp_r26; + temp_r29 = arg1->sizeX; + temp_r28 = arg1->sizeY; + temp_r27 = (arg2->wrap_s == 1) ? 1 : 0; + temp_r26 = (arg2->wrap_t == 1) ? 1 : 0; + switch(arg1->dataFmt) { + case 6: + GXInitTexObj(&sp1C, arg1->data, temp_r29, temp_r28, GX_TF_RGBA8, temp_r27, temp_r26, GX_FALSE); + break; + + case 4: + GXInitTexObj(&sp1C, arg1->data, temp_r29, temp_r28, GX_TF_RGB565, temp_r27, temp_r26, GX_FALSE); + break; + + case 5: + GXInitTexObj(&sp1C, arg1->data, temp_r29, temp_r28, GX_TF_RGB5A3, temp_r27, temp_r26, GX_FALSE); + break; + + case 9: + if(arg1->pixSize < 8) { + GXInitTlutObj(&sp10, arg1->palData, GX_TL_RGB565, arg1->palSize); + GXLoadTlut(&sp10, arg3); + GXInitTexObjCI(&sp1C, arg1->data, temp_r29, temp_r28, GX_TF_C4, temp_r27, temp_r26, GX_FALSE, arg3); + } else { + GXInitTlutObj(&sp10, arg1->palData, GX_TL_RGB565, arg1->palSize); + GXLoadTlut(&sp10, arg3); + GXInitTexObjCI(&sp1C, arg1->data, temp_r29, temp_r28, GX_TF_C8, temp_r27, temp_r26, GX_FALSE, arg3); + } + break; + + case 10: + if(arg1->pixSize < 8) { + GXInitTlutObj(&sp10, arg1->palData, GX_TL_RGB5A3, arg1->palSize); + GXLoadTlut(&sp10, arg3); + GXInitTexObjCI(&sp1C, arg1->data, temp_r29, temp_r28, GX_TF_C4, temp_r27, temp_r26, GX_FALSE, arg3); + } else { + GXInitTlutObj(&sp10, arg1->palData, GX_TL_RGB5A3, arg1->palSize); + GXLoadTlut(&sp10, arg3); + GXInitTexObjCI(&sp1C, arg1->data, temp_r29, temp_r28, GX_TF_C8, temp_r27, temp_r26, GX_FALSE, arg3); + } + break; + } + if(arg0->attr & 0x40) { + GXInitTexObjLOD(&sp1C, GX_NEAR, GX_NEAR, 0, 0, 0, GX_FALSE, GX_FALSE, GX_ANISO_1); + } else { + GXInitTexObjLOD(&sp1C, GX_LINEAR, GX_LINEAR, 0, 0, 0, GX_FALSE, GX_FALSE, GX_ANISO_1); + } + GXLoadTexObj(&sp1C, arg3); +} + +#define SET_TEVCOLOR_ALPHA(reg, color_var, value) \ +{ \ + color_var.a = (value); \ + GXSetTevColor(reg, color_var); \ +} + +extern u32 texMtxTbl[]; + +void fn_1_10B60(UnkFn10484 *arg0, HsfMaterial *arg1) +{ + GXColor sp28; + GXColor sp24; + GXColor sp20; + u16 temp_r31; + HsfAttribute *temp_r29; + u16 temp_r28; + HsfObject *temp_r27; + HsfdrawStruct01 *temp_r26; + u16 temp_r25; + u16 temp_r24; + s32 temp_r23; + s32 temp_r22; + u16 temp_r20; + temp_r27 = arg0->unk4; + if(arg1->vtxMode == 2 || arg1->vtxMode == 3) { + temp_r24 = 1; + } else { + temp_r24 = 0; + if(arg1->vtxMode == 0 && !temp_r27->data.color) { + temp_r23 = 0; + } else { + temp_r23 = 1; + } + } + + if(arg1->numAttrs == 1) { + temp_r28 = temp_r31 = 1; + temp_r29 = &temp_r27->data.attribute[arg1->attrs[0]]; + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + if(temp_r29->unk04) { + temp_r26 = temp_r29->unk04; + if(temp_r26->unk00 & 0x2) { + GXLoadTexMtxImm(Hu3DTexScrData[temp_r26->unk04].unk3C, GX_TEXMTX0, GX_MTX2x4); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_TEXMTX0); + } + } + if(temp_r29->unk8[2] == 0) { + GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); + GXSetTevOrder(temp_r31, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(temp_r31, GX_CC_CPREV, GX_CC_TEXC, GX_CC_TEXA, GX_CC_ZERO); + GXSetTevColorOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + GXSetTevAlphaOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + temp_r31++; + } else { + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_TEXA); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + } + SET_TEVCOLOR_ALPHA(GX_TEVREG0, sp28, 255*(1.0f-arg1->invAlpha)); + if(temp_r24) { + GXSetTevOrder(temp_r31, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR1A1); + GXSetTevColorIn(temp_r31, GX_CC_CPREV, GX_CC_ONE, GX_CC_RASC, GX_CC_ZERO); + GXSetTevColorOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_APREV, GX_CA_A0, GX_CA_ZERO); + GXSetTevAlphaOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + temp_r31++; + } else if(0.0f != arg1->invAlpha) { + GXSetTevOrder(temp_r31, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetTevColorIn(temp_r31, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_CPREV); + GXSetTevColorOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_APREV, GX_CA_RASA, GX_CA_ZERO); + GXSetTevAlphaOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + temp_r31++; + } + GXSetNumTexGens(temp_r28); + GXSetNumTevStages(temp_r31); + } else { + temp_r22 = 0; + temp_r28 = 1; + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + for(temp_r25=temp_r31=0; temp_r25numAttrs; temp_r31++, temp_r25++) { + temp_r29 = &temp_r27->data.attribute[arg1->attrs[temp_r25]]; + if(0.0f != temp_r29->unk14) { + GXSetTexCoordGen(GX_TEXCOORD1, GX_TG_BUMP0, GX_TG_TEXCOORD0, GX_IDENTITY); + SET_TEVCOLOR_ALPHA(GX_TEVREG1, sp24, 10*temp_r29->unk14); + GXSetTevOrder(temp_r31, GX_TEXCOORD0, temp_r25, GX_COLOR0A0); + GXSetTevColorIn(temp_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_A1, GX_CC_RASC); + GXSetTevColorOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); + temp_r31++; + GXSetTevOrder(temp_r31, GX_TEXCOORD1, temp_r25, GX_COLOR0A0); + GXSetTevColorIn(temp_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_A1, GX_CC_CPREV); + GXSetTevColorOp(temp_r31, GX_TEV_SUB, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); + temp_r28++; + temp_r22 = 1; + } else { + if(temp_r29->unk04) { + temp_r26 = temp_r29->unk04; + if(temp_r26->unk00 & 0x2) { + GXLoadTexMtxImm(Hu3DTexScrData[temp_r26->unk04].unk3C, texMtxTbl[temp_r28], GX_MTX2x4); + GXSetTexCoordGen(temp_r28, GX_TG_MTX2x4, GX_TG_TEX0, texMtxTbl[temp_r28]); + temp_r20 = (u16)temp_r28; + temp_r28++; + } + } else { + temp_r20 = 0; + } + GXSetTevOrder(temp_r31, temp_r20, temp_r25, GX_COLOR0A0); + if(temp_r25 == 0) { + GXSetTevColorIn(temp_r31, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); + GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_TEXA); + } else if(temp_r22 != 0) { + GXSetTevColorIn(temp_r31, GX_CC_ZERO, GX_CC_CPREV, GX_CC_TEXC, GX_CC_ZERO); + GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_TEXA); + temp_r22 = 0; + } else if(temp_r29->unk8[2] == 0) { + GXSetTevColorIn(temp_r31, GX_CC_CPREV, GX_CC_TEXC, GX_CC_TEXA, GX_CC_ZERO); + GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_APREV); + } else { + SET_TEVCOLOR_ALPHA(GX_TEVREG2, sp20, 255*temp_r29->unk0C); + GXSetTevColorIn(temp_r31, GX_CC_CPREV, GX_CC_TEXC, GX_CC_A2, GX_CC_ZERO); + GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_TEXA, GX_CA_APREV, GX_CA_ZERO); + } + GXSetTevColorOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + } + } + SET_TEVCOLOR_ALPHA(GX_TEVREG0, sp28, 255*(1.0f-arg1->invAlpha)); + if(temp_r24) { + GXSetTevOrder(temp_r31, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR1A1); + GXSetTevColorIn(temp_r31, GX_CC_CPREV, GX_CC_ONE, GX_CC_RASC, GX_CC_ZERO); + GXSetTevColorOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_APREV, GX_CA_A0, GX_CA_ZERO); + GXSetTevAlphaOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + temp_r31++; + } else { + GXSetTevOrder(temp_r31, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetTevColorIn(temp_r31, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_CPREV); + GXSetTevColorOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(temp_r31, GX_CA_ZERO, GX_CA_APREV, GX_CA_A0, GX_CA_ZERO); + GXSetTevAlphaOp(temp_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + temp_r31++; + } + GXSetNumTexGens(temp_r28); + GXSetNumTevStages(temp_r31); + } + lbl_1_bss_118 = Hu3DLightSet(arg0->unk0, &Hu3DCameraMtx, &Hu3DCameraMtxXPose, (temp_r24) ? arg1->hilite_scale : 0); + if(temp_r24) { + GXSetNumChans(2); + if(temp_r27->data.color) { + GXSetChanCtrl(GX_COLOR0A0, GX_TRUE, GX_SRC_REG, GX_SRC_VTX, lbl_1_bss_118, GX_DF_CLAMP, GX_AF_NONE); + GXSetChanCtrl(GX_COLOR1A1, GX_TRUE, GX_SRC_REG, GX_SRC_VTX, lbl_1_bss_118, GX_DF_NONE, GX_AF_SPEC); + } else { + GXSetChanCtrl(GX_COLOR0A0, GX_TRUE, GX_SRC_REG, GX_SRC_REG, lbl_1_bss_118, GX_DF_CLAMP, GX_AF_NONE); + GXSetChanCtrl(GX_COLOR1A1, GX_TRUE, GX_SRC_REG, GX_SRC_REG, lbl_1_bss_118, GX_DF_NONE, GX_AF_SPEC); + } + } else { + GXSetNumChans(1); + if(temp_r27->data.color) { + GXSetChanCtrl(GX_COLOR0A0, temp_r23, GX_SRC_REG, GX_SRC_VTX, lbl_1_bss_118, GX_DF_CLAMP, GX_AF_SPOT); + } else { + GXSetChanCtrl(GX_COLOR0A0, temp_r23, GX_SRC_REG, GX_SRC_REG, lbl_1_bss_118, GX_DF_CLAMP, GX_AF_SPOT); + } + } +} +#undef SET_TEVCOLOR_ALPHA + +s32 fn_1_11670(void) +{ + lbl_1_data_19C *= 0x41C64E6D; + lbl_1_data_19C += 0x3039; + return lbl_1_data_19C >> 16; +} + +float fn_1_116C4(float arg0, float arg1) +{ + float temp_f31; + float temp_f30; + temp_f30 = 360; + temp_f31 = atan2d(arg0, arg1); + if(temp_f31 < -180) { + temp_f31 += temp_f30; + } else if(temp_f31 >= 180.0) { + temp_f31 -= temp_f30; + } + return temp_f31; +} + +float fn_1_11780(Vec *arg0, Vec *arg1) +{ + return VECDistanceXYZ(arg0, arg1); +} \ No newline at end of file diff --git a/src/REL/m410Dll/game.c b/src/REL/m410Dll/game.c index bc6eb040..04cd0c6b 100644 --- a/src/REL/m410Dll/game.c +++ b/src/REL/m410Dll/game.c @@ -1090,10 +1090,10 @@ void fn_1_7494(void) void fn_1_7520(Vec *arg0) { - ParticleData *var_r30; // no, custom struct + ParticleData *var_r30; HsfanimStruct01 *var_r31; - var_r30 = Hu3DData[lbl_1_bss_38].unk_120; // unk_120 is not ParticleData + var_r30 = Hu3DData[lbl_1_bss_38].unk_120; var_r31 = &var_r30->unk_48[var_r30->unk_02++]; var_r31->unk2C = 100.0f; var_r31->unk34.x = arg0->x; diff --git a/src/REL/m414Dll/main.c b/src/REL/m414Dll/main.c new file mode 100644 index 00000000..75a8cb5e --- /dev/null +++ b/src/REL/m414Dll/main.c @@ -0,0 +1,2366 @@ +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/frand.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/sprite.h" +#include "game/wipe.h" +#include "rel_sqrt_consts.h" + +typedef struct UnkM414Struct { + s32 unk00; + s32 unk04; + float unk08; + char unk0C[0x38]; + s32 unk_44; + char unk48[0x0C]; + s32 unk_54; + char unk58[0x24]; + float unk_7C; + float unk_80; + float unk_84; + char unk88[0xB0]; + Vec unk_138[16]; + s32 unk_1F8; +} UnkM414Struct; // size unknown + +typedef struct UnkM414BssF0Struct { + s16 unk_00[9]; + s16 unk_12; + s16 unk_14[6]; + s16 unk_20; + s16 unk_22[5]; + s16 unk_2C; + s16 unk_2E; + s16 unk_30[9]; + s16 unk_42; + s32 unk_44; + s32 unk_48; + s32 unk_4C; + s32 unk_50; + s32 unk_54; + s32 unk_58; + s32 unk_5C; + float unk_60; + float unk_64; + float unk_68; + float unk_6C; + float unk_70; + float unk_74; + char unk78[4]; + float unk_7C; + float unk_80; + float unk_84; + float unk_88; + char unk8C[4]; + float unk_90; + s16 unk_94[16]; + s16 unk_B4[16]; + s16 unk_D4[16]; + s32 unk_F4[16]; + Vec unk_134[16]; + s32 unk_1F4; + s32 unk_1F8; + s8 unk_1FC; + s8 unk_1FD; + s8 unk_1FE; + s8 unk_1FF; + u16 unk_200; + char unk202[2]; + s32 unk_204; +} UnkM414BssF0Struct; // size 0x208 + +typedef struct UnkM414Struct2 { + UnkM414BssF0Struct *unk_00; + s32 unk_04; + union { + s32 unk_08; + s32 *unk_08_ptr; + }; + s32 unk_0C; +} UnkM414Struct2; // size unknown + +typedef struct UnkM414Struct3 { + s32 unk_00; + s32 unk_04; + float unk_08; +} UnkM414Struct3; // size unknown + +typedef struct UnkM414Struct4 { + UnkM414BssF0Struct *unk_00; + s32 unk_04; + union { + s32 unk_08; + s32 *unk_08_ptr; + }; +} UnkM414Struct4; // size unknown + +s16 lbl_1_bss_A12; +s16 lbl_1_bss_A10; +s16 lbl_1_bss_990[16][4]; +s32 lbl_1_bss_98C; +s32 lbl_1_bss_97C[4]; +s32 lbl_1_bss_978; +s32 lbl_1_bss_938[16]; +s32 lbl_1_bss_930[2]; +float lbl_1_bss_920[4]; +float lbl_1_bss_910[4]; +UnkM414BssF0Struct lbl_1_bss_F0[4]; +Process *lbl_1_bss_E0[4]; +Process *lbl_1_bss_DC; +Vec lbl_1_bss_A0[5]; +Vec lbl_1_bss_64[5]; +Vec lbl_1_bss_28[5]; +omObjData *lbl_1_bss_24; +Vec lbl_1_bss_18; +Vec lbl_1_bss_C; +Vec lbl_1_bss_0; + +void fn_1_91C(omObjData *object); +void fn_1_1388(ModelData *arg0, ParticleData *arg1, Mtx arg2); +void fn_1_13C4(ModelData *arg0, ParticleData *arg1, Mtx arg2); +void fn_1_1400(ModelData *arg0, ParticleData *arg1, Mtx arg2); +void fn_1_143C(ModelData *arg0, ParticleData *arg1, Mtx arg2); +void fn_1_168C(ModelData *arg0, ParticleData *arg1, Mtx arg2); +void fn_1_16C8(ModelData *arg0, ParticleData *arg1, Mtx arg2); +void fn_1_1704(ModelData *arg0, ParticleData *arg1, Mtx arg2); +void fn_1_1740(ModelData *arg0, ParticleData *arg1, Mtx arg2); +void fn_1_1B58(ModelData *arg0, ParticleData *arg1, Mtx arg2); +void fn_1_1B94(ModelData *arg0, ParticleData *arg1, Mtx arg2); +void fn_1_1BD0(ModelData *arg0, ParticleData *arg1, Mtx arg2); +void fn_1_1C0C(ModelData *arg0, ParticleData *arg1, Mtx arg2); +void fn_1_1E04(); +void fn_1_3ECC(); +void fn_1_5780(UnkM414BssF0Struct *arg0, float arg8); +s32 fn_1_654C(s32 arg0, s32 arg1); +void fn_1_6644(); +void fn_1_8A10(); +void fn_1_8A70(); + +ParticleHook lbl_1_data_0[] = { fn_1_1388, fn_1_13C4, fn_1_1400, fn_1_143C }; + +ParticleHook lbl_1_data_10[] = { fn_1_168C, fn_1_16C8, fn_1_1704, fn_1_1740 }; + +ParticleHook lbl_1_data_20[] = { fn_1_1B58, fn_1_1B94, fn_1_1BD0, fn_1_1C0C }; + +s32 lbl_1_data_30[] = { 0, 1, 2, 3, 4, 5, 6, 7 }; + +s32 lbl_1_data_50[] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), DATA_MAKE_NUM(DATADIR_MARIOMOT, 79), DATA_MAKE_NUM(DATADIR_MARIOMOT, 72), + DATA_MAKE_NUM(DATADIR_MARIOMOT, 23), DATA_MAKE_NUM(DATADIR_MARIOMOT, 24), DATA_MAKE_NUM(DATADIR_MARIOMOT, 54) }; + +float lbl_1_data_68[] = { 0.0f, 2.0f, 3.0f, 1.0f, 2.0f, 3.0f, 1.0f, 2.0f, 3.0f }; + +s32 lbl_1_data_8C[] = { 75, 64, 67, 79, 73, 80 }; + +s32 lbl_1_data_A4[] = { 230, 510, 230, 510 }; + +s32 lbl_1_data_B4[] = { 205, 205, 420, 420 }; + +s32 lbl_1_data_C4[][3] = { + // rgb color + { 254, 0, 0 }, + { 1, 0, 254 }, + { 255, 123, 222 }, + { 0, 255, 1 }, + { 175, 50, 240 }, + { 225, 127, 80 }, + { 255, 255, 1 }, + { 0, 0, 0 }, +}; + +void ModuleProlog(void) +{ + s32 var_r31; + s32 var_r30; + Process *var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + + var_r29 = omInitObjMan(50, 8192); + omGameSysInit(var_r29); + Hu3DCameraCreate(31); + Hu3DCameraPerspectiveSet(31, 30.0f, 20.0f, 25000.0f, 1.2f); + Hu3DCameraViewportSet(1, 10.0f, 20.0f, 309.0f, 219.0f, 0.0f, 1.0f); + Hu3DCameraViewportSet(2, 322.0f, 20.0f, 309.0f, 219.0f, 0.0f, 1.0f); + Hu3DCameraViewportSet(4, 10.0f, 242.0f, 309.0f, 219.0f, 0.0f, 1.0f); + Hu3DCameraViewportSet(8, 322.0f, 242.0f, 309.0f, 219.0f, 0.0f, 1.0f); + Hu3DCameraViewportSet(16, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(1, 10, 20, 309, 219); + Hu3DCameraScissorSet(2, 322, 20, 309, 219); + Hu3DCameraScissorSet(4, 10, 242, 309, 219); + Hu3DCameraScissorSet(8, 322, 242, 309, 219); + Hu3DCameraScissorSet(16, 0, 0, 640, 480); + lbl_1_bss_24 = omAddObjEx(var_r29, 32730, 0, 0, -1, fn_1_91C); + lbl_1_bss_24->work[0] = 4; + + for (var_r31 = 0; var_r31 < lbl_1_bss_24->work[0]; var_r31++) { + lbl_1_bss_920[var_r31] = 0.0f; + lbl_1_bss_910[var_r31] = 1900.0f; + lbl_1_bss_A0[var_r31].y = 455.0f; + lbl_1_bss_64[var_r31].x = var_r31 % 2 * 2000.0f; + lbl_1_bss_64[var_r31].z = var_r31 / 2 * 2000.0f; + lbl_1_bss_64[var_r31].y = 610.0f; + lbl_1_bss_28[var_r31].x = 0.0f; + lbl_1_bss_28[var_r31].y = 1.0f; + lbl_1_bss_28[var_r31].z = 0.0f; + } + Hu3DCameraPosSet(16, 0.0f, 265.0f, 180.0f, 0.0f, 1.0f, 0.0f, 0.0f, 265.0f, 0.0f); + Hu3DLighInit(); + lbl_1_bss_A12 = Hu3DGLightCreate(10000.0f, 0.0f, 10000.0f, -1.0f, 0.0f, -1.0f, 255, 255, 255); + Hu3DGLightPosAimSet(lbl_1_bss_A12, 0.0f, 4330.13f, 2500.0f, 0.0f, 0.0f, 0.0f); + Hu3DGLightInfinitytSet(lbl_1_bss_A12); + lbl_1_bss_18.x = 1000.0f; + lbl_1_bss_18.y = 7000.0f; + lbl_1_bss_18.z = 0.0f; + lbl_1_bss_C.x = lbl_1_bss_C.z = 0.0f; + lbl_1_bss_C.y = 1.0f; + lbl_1_bss_0.x = 1000.0f; + lbl_1_bss_0.y = 0.0f; + lbl_1_bss_0.z = 1000.0f; + Hu3DShadowCreate(30.0f, 20.0f, 50000.0f); + Hu3DShadowTPLvlSet(0.8f); + Hu3DShadowPosSet(&lbl_1_bss_18, &lbl_1_bss_C, &lbl_1_bss_0); + Hu3DBGColorSet(0, 0, 0); + lbl_1_bss_978 = frandmod(6); + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + lbl_1_bss_938[var_r31] = lbl_1_bss_978; + } + var_r30 = frandmod(6); + + for (; var_r31 < 16; var_r31++, var_r30++) { + if (var_r30 == lbl_1_bss_978) { + var_r30++; + } + if (var_r30 >= 6) { + if (lbl_1_bss_978 == 0) { + var_r30 = 1; + } else { + var_r30 = 0; + } + } + lbl_1_bss_938[var_r31] = var_r30; + } + for (var_r31 = 0; var_r31 < 50; var_r31++) { + var_r28 = frandmod(16); + var_r27 = frandmod(16); + var_r26 = lbl_1_bss_938[var_r28]; + lbl_1_bss_938[var_r28] = lbl_1_bss_938[var_r27]; + lbl_1_bss_938[var_r27] = var_r26; + } + fn_1_1E04(); + lbl_1_bss_DC = HuPrcChildCreate(fn_1_8A70, 4096, 8192, 0, HuPrcCurrentGet()); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); +} + +void fn_1_91C(omObjData *object) +{ + s32 var_r31; + + for (var_r31 = 0; var_r31 < object->work[0]; var_r31++) { + lbl_1_bss_A0[var_r31].x = (var_r31 % 2 * 2000.0f) + (lbl_1_bss_910[var_r31] * sind(lbl_1_bss_920[var_r31])); + lbl_1_bss_A0[var_r31].z = (var_r31 / 2 * 2000.0f) + (lbl_1_bss_910[var_r31] * cosd(lbl_1_bss_920[var_r31])); + + Hu3DCameraPosSet(1 << var_r31, lbl_1_bss_A0[var_r31].x, lbl_1_bss_A0[var_r31].y, lbl_1_bss_A0[var_r31].z, lbl_1_bss_28[var_r31].x, + lbl_1_bss_28[var_r31].y, lbl_1_bss_28[var_r31].z, lbl_1_bss_64[var_r31].x, lbl_1_bss_64[var_r31].y, lbl_1_bss_64[var_r31].z); + } +} + +void fn_1_B84(void) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + + UnkM414Struct3 *var_r31; + s32 var_r30; + + var_r31 = HuPrcCurrentGet()->user_data; + if (!var_r31->unk_00) { + var_f29 = lbl_1_bss_A0[var_r31->unk_04].y; + var_f28 = lbl_1_bss_64[var_r31->unk_04].y; + + for (var_r30 = 0, var_f31 = 0.0f; var_r30 < 10; var_r30++, var_f31 += 36.0f) { + var_f30 = var_r31->unk_08 * sind(var_f31); + lbl_1_bss_A0[var_r31->unk_04].y = var_f29 + var_f30; + lbl_1_bss_64[var_r31->unk_04].y = var_f28 + var_f30; + HuPrcVSleep(); + } + lbl_1_bss_A0[var_r31->unk_04].y = var_f29; + lbl_1_bss_64[var_r31->unk_04].y = var_f28; + } + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_CD8(s32 arg0, s32 arg1, float arg8) +{ + UnkM414Struct3 sp14; + UnkM414Struct3 *var_r31; + Process *var_r30; + + var_r31 = &sp14; + var_r30 = HuPrcChildCreate(fn_1_B84, 8192, 8192, 0, HuPrcCurrentGet()); + var_r30->user_data = var_r31; + var_r31->unk_00 = arg0; + var_r31->unk_04 = arg1; + var_r31->unk_08 = arg8; + (void)var_r31; + (void)var_r31; +} + +void fn_1_D54(ModelData *arg0, ParticleData *arg1, Mtx arg2, s32 arg3) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + double var_f27; + + HsfanimStruct01 *var_r31; + UnkM414BssF0Struct *var_r30; + s16 var_r28; + s16 var_r27; + s16 var_r26; + s32 var_r25; + + if (arg1->unk_34 == 0) { + var_r31 = arg1->unk_48; + + for (var_r28 = 0; var_r28 < arg1->unk_30; var_r28++, var_r31++) { + var_r31->unk14.x = var_r31->unk2C = 0.0f; + } + } + var_r31 = arg1->unk_48; + var_r30 = &lbl_1_bss_F0[arg3]; + if (var_r30->unk_54 == 1) { + for (var_r27 = 0; var_r27 < 2; var_r27++) { + var_f28 = 2.4f; + for (var_r26 = 0, var_f29 = 0.0f; var_r26 < 4; var_r26++, var_f29 += 90.0f) { + for (var_r28 = 0; var_r28 < arg1->unk_30; var_r28++, var_r31++) { + if (0.0f == var_r31->unk14.x) { + break; + } + } + if (var_r28 == arg1->unk_30) { + break; + } + var_f31 = var_f29 + frandmod(70); + var_f30 = var_f28 + (3.6f * frandf()); + var_r31->unk34.x = var_r30->unk_7C + ((20.0f * var_r27) * (sind(var_f31) * cosd(lbl_1_bss_920[var_r30->unk_44]))); + var_r31->unk34.y = var_r30->unk_80 + ((20.0f * var_r27) * cosd(var_f31)); + var_r31->unk34.z = var_r30->unk_84 + (-(20.0f * var_r27) * (sind(lbl_1_bss_920[var_r30->unk_44]) * sind(var_f31))); + var_r31->unk08.x = var_f30 * (sind(var_f31) * cosd(lbl_1_bss_920[var_r30->unk_44])); + var_r31->unk08.y = var_f30 * cosd(var_f31); + var_r31->unk08.z = -var_f30 * (sind(lbl_1_bss_920[var_r30->unk_44]) * sind(var_f31)); + var_r31->unk14.x = 30.0f; + var_r31->unk2C = 40.0f + (20.0f * frandf()); + var_r31->unk40.r = frandmod(20) + 235; + var_r31->unk40.g = frandmod(50) + 205; + var_r31->unk40.b = frandmod(50); + var_r31->unk40.a = 255; + } + } + var_r30->unk_54++; + } + var_r31 = arg1->unk_48; + for (var_r28 = 0; var_r28 < arg1->unk_30; var_r28++, var_r31++) { + if (0.0f != var_r31->unk14.x) { + PSVECAdd(&var_r31->unk08, &var_r31->unk34, &var_r31->unk34); + if (var_r31->unk14.x > 10.0f) { + var_r31->unk14.x = var_r31->unk14.x - 1.0f; + } + if (10.0f == var_r31->unk14.x) { + var_r25 = var_r31->unk40.a - 25; + if (var_r25 < 0) { + var_r25 = 0; + var_r31->unk14.x = 0.0f; + } + var_r31->unk40.a = var_r25; + } + if (0.0f == var_r31->unk14.x) { + var_r31->unk2C = 0.0f; + } + } + } +} + +void fn_1_1388(ModelData *arg0, ParticleData *arg1, Mtx arg2) +{ + fn_1_D54(arg0, arg1, arg2, 0); +} + +void fn_1_13C4(ModelData *arg0, ParticleData *arg1, Mtx arg2) +{ + fn_1_D54(arg0, arg1, arg2, 1); +} + +void fn_1_1400(ModelData *arg0, ParticleData *arg1, Mtx arg2) +{ + fn_1_D54(arg0, arg1, arg2, 2); +} + +void fn_1_143C(ModelData *arg0, ParticleData *arg1, Mtx arg2) +{ + fn_1_D54(arg0, arg1, arg2, 3); +} + +void fn_1_1478(ModelData *arg0, ParticleData *arg1, Mtx arg2, s32 arg3) +{ + HsfanimStruct01 *var_r31; + s16 var_r30; + UnkM414BssF0Struct *var_r29; + s32 var_r28; + + if (arg1->unk_34 == 0) { + var_r31 = arg1->unk_48; + for (var_r30 = 0; var_r30 < arg1->unk_30; var_r30++, var_r31++) { + var_r31->unk14.x = var_r31->unk2C = 0.0f; + } + } + var_r31 = arg1->unk_48; + var_r29 = &lbl_1_bss_F0[arg3]; + if (var_r29->unk_54 == 2) { + for (var_r30 = 0; var_r30 < arg1->unk_30; var_r30++, var_r31++) { + if (0.0f == var_r31->unk14.x) { + break; + } + } + if (var_r30 != arg1->unk_30) { + var_r31->unk34.x = var_r29->unk_7C; + var_r31->unk34.y = var_r29->unk_80; + var_r31->unk34.z = var_r29->unk_84; + var_r31->unk14.x = 30.0f; + var_r31->unk2C = 300.0f; + var_r31->unk40.r = 255; + var_r31->unk40.g = 255; + var_r31->unk40.b = 255; + var_r31->unk40.a = 255; + } + var_r29->unk_54++; + } + var_r31 = arg1->unk_48; + for (var_r30 = 0; var_r30 < arg1->unk_30; var_r30++, var_r31++) { + if (0.0f != var_r31->unk14.x) { + if (var_r31->unk14.x > 25.0f) { + var_r31->unk14.x -= 1.0f; + } + if (25.0f == var_r31->unk14.x) { + var_r28 = var_r31->unk40.a - 25; + if (var_r28 < 0) { + var_r28 = 0; + var_r31->unk14.x = 0.0f; + } + var_r31->unk40.a = var_r28; + } + if (0.0f == var_r31->unk14.x) { + var_r31->unk2C = 0.0f; + } + } + } +} + +void fn_1_168C(ModelData *arg0, ParticleData *arg1, Mtx arg2) +{ + fn_1_1478(arg0, arg1, arg2, 0); +} + +void fn_1_16C8(ModelData *arg0, ParticleData *arg1, Mtx arg2) +{ + fn_1_1478(arg0, arg1, arg2, 1); +} + +void fn_1_1704(ModelData *arg0, ParticleData *arg1, Mtx arg2) +{ + fn_1_1478(arg0, arg1, arg2, 2); +} + +void fn_1_1740(ModelData *arg0, ParticleData *arg1, Mtx arg2) +{ + fn_1_1478(arg0, arg1, arg2, 3); +} + +void fn_1_177C(ModelData *arg1, ParticleData *arg2, Mtx arg3, s32 arg4) +{ + float var_f31; + float var_f30; + + HsfanimStruct01 *var_r31; + UnkM414BssF0Struct *var_r29; + s16 var_r28; + s16 var_r27; + s32 var_r26; + + if (arg2->unk_34 == 0) { + var_r31 = arg2->unk_48; + for (var_r28 = 0; var_r28 < arg2->unk_30; var_r28++, var_r31++) { + var_r31->unk14.x = var_r31->unk2C = 0.0f; + } + } + var_r31 = arg2->unk_48; + var_r29 = &lbl_1_bss_F0[arg4]; + if (var_r29->unk_54 == 3) { + for (var_r27 = 0, var_f30 = 0.0f; var_r27 < 8; var_r27++, var_f30 += 45.0f) { + for (var_r28 = 0; var_r28 < arg2->unk_30; var_r28++, var_r31++) { + if (0.0f == var_r31->unk14.x) { + break; + } + } + if (var_r28 == arg2->unk_30) { + break; + } + var_f31 = var_f30 + frandmod(30); + var_r31->unk34.x = var_r29->unk_7C + (120.0 * (sind(var_f31) * cosd(lbl_1_bss_920[var_r29->unk_44]))); + var_r31->unk34.y = var_r29->unk_80 + (120.0 * cosd(var_f31)); + var_r31->unk34.z = var_r29->unk_84 + (-120.0 * (sind(lbl_1_bss_920[var_r29->unk_44]) * sind(var_f31))); + var_r31->unk30 = (M_PI * (360.0f - var_f31)) / 180.0; + var_r31->unk14.x = 30.0f; + var_r31->unk2C = 50.0f; + var_r31->unk40.r = 255; + var_r31->unk40.g = 255; + var_r31->unk40.b = 0; + var_r31->unk40.a = 255; + } + var_r29->unk_54++; + } + var_r31 = arg2->unk_48; + for (var_r28 = 0; var_r28 < arg2->unk_30; var_r28++, var_r31++) { + if (0.0f != var_r31->unk14.x) { + var_r26 = var_r31->unk40.a - 8; + if (var_r26 < 0) { + var_r26 = 0; + var_r31->unk14.x = 0.0f; + } + var_r31->unk40.a = var_r26; + if (0.0f == var_r31->unk14.x) { + var_r31->unk2C = 0.0f; + } + } + } +} + +void fn_1_1B58(ModelData *arg0, ParticleData *arg1, Mtx arg2) +{ + fn_1_177C(arg0, arg1, arg2, 0); +} + +void fn_1_1B94(ModelData *arg0, ParticleData *arg1, Mtx arg2) +{ + fn_1_177C(arg0, arg1, arg2, 1); +} + +void fn_1_1BD0(ModelData *arg0, ParticleData *arg1, Mtx arg2) +{ + fn_1_177C(arg0, arg1, arg2, 2); +} + +void fn_1_1C0C(ModelData *arg0, ParticleData *arg1, Mtx arg2) +{ + fn_1_177C(arg0, arg1, arg2, 3); +} + +void fn_1_1C48(void) +{ + UnkM414Struct *var_r31; + + var_r31 = HuPrcCurrentGet()->user_data; + if (var_r31->unk_44 & 1) { + HuAudFXPlay(1446); + } else { + HuAudFXPlay(1445); + } + var_r31->unk_54 = 1; + var_r31->unk_7C = -800.0 * sind(lbl_1_bss_920[var_r31->unk_44]); + var_r31->unk_80 = var_r31->unk_138[var_r31->unk_1F8].x; + var_r31->unk_84 = -800.0 * cosd(lbl_1_bss_920[var_r31->unk_44]); + var_r31->unk_7C += 2000.0f * (var_r31->unk_44 % 2); + var_r31->unk_84 += 2000.0f * (var_r31->unk_44 / 2); + HuPrcSleep(30); + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_1E04(void) +{ + s32 sp18[6]; + AnimData *sp8[4]; + + float var_f31; + float var_f30; + float var_f29; + float var_f28; + + UnkM414BssF0Struct *var_r31; + s16 var_r30; + s32 var_r29; + s32 var_r28; + void *var_r27; + Process *var_r26; + AnimData *var_r25; + s16 var_r24; + s16 var_r23; + s16 var_r22; + AnimData *var_r21; + + HuAudSndGrpSet(39); + for (var_r28 = 0; var_r28 < 4; var_r28++) { + var_r31 = &lbl_1_bss_F0[var_r28]; + var_r31->unk_44 = var_r28; + var_r31->unk_48 = var_r28; + var_r31->unk_4C = GWPlayerCfg[var_r28].pad_idx; + if (!var_r28) { + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 8), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r27); + var_r22 = var_r30; + } else { + var_r30 = Hu3DModelLink(var_r22); + } + Hu3DModelCameraSet(var_r30, 15); + Hu3DModelPosSet(var_r30, 2000.0f * (var_r28 % 2), 0.0f, 2000.0f * (var_r28 / 2)); + for (var_r29 = 0; var_r29 < 9; var_r29++) { + if (!var_r28 && !var_r29) { + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 0), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r27); + var_r24 = var_r30; + } else { + var_r30 = Hu3DModelLink(var_r24); + } + var_r31->unk_30[var_r29] = var_r30; + Hu3DModelCameraSet(var_r30, 1 << var_r31->unk_48); + Hu3DModelShadowMapSet(var_r30); + Hu3DModelAttrSet(var_r30, 0x4000); + Hu3DModelRotSet(var_r30, 0.0f, 40.0f * var_r29, 0.0f); + Hu3DModelPosSet(var_r30, 2000.0f * (var_r28 % 2), 0.0f, 2000.0f * (var_r28 / 2)); + } + if (!var_r28) { + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 5), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r27); + } else { + var_r30 = Hu3DModelLink(lbl_1_bss_F0[0].unk_42); + } + var_r31->unk_42 = var_r30; + Hu3DModelCameraSet(var_r30, 1 << var_r31->unk_48); + Hu3DModelShadowMapSet(var_r30); + Hu3DModelAttrSet(var_r30, 1); + Hu3DModelPosSet(var_r30, 2000.0f * (var_r28 % 2), 0.0f, 2000.0f * (var_r28 / 2)); + for (var_r29 = 0; var_r29 < 9; var_r29++) { + if (!var_r28) { + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 1) + lbl_1_data_68[var_r29], MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r27); + } else { + var_r30 = Hu3DModelLink(lbl_1_bss_F0->unk_00[var_r29]); + } + var_r31->unk_00[var_r29] = var_r30; + Hu3DModelRotSet(var_r30, 0.0f, 40.0f * var_r29, 0.0f); + Hu3DModelCameraSet(var_r30, 1 << var_r31->unk_48); + Hu3DModelAttrSet(var_r30, 0x4000); + Hu3DModelPosSet(var_r30, 2000.0f * (var_r28 % 2), 0.0f, 2000.0f * (var_r28 / 2)); + Hu3DModelAttrSet(var_r30, 0x40000002); + } + for (var_r29 = 0; var_r29 < 16; var_r29++) { + if (!var_r28 && !var_r29) { + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 6), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r27); + var_r23 = var_r30; + } else { + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 6), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r27); + var_r23 = var_r30; + } + Hu3DModelCameraSet(var_r30, 1 << var_r31->unk_48); + var_r31->unk_D4[var_r29] = var_r30; + Hu3DModelPosSet(var_r30, 2000.0f * (var_r28 % 2), 330.0f - (330.0f * (var_r29 & 1)), 2000.0f * (var_r28 / 2)); + Hu3DModelRotSet(var_r30, 0.0f, 40.0f * ((var_r29 + 2) / 2), 0.0f); + Hu3DModelAttrSet(var_r30, 0x4000); + Hu3DModelAttrSet(var_r30, 0x40000082); + Hu3DMotionSpeedSet(var_r30, 3.0f); + Hu3DMotionShapeSpeedSet(var_r30, 3.0f); + } + if (!var_r28) { + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 9), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r27); + } else { + var_r30 = Hu3DModelLink(lbl_1_bss_F0[0].unk_20); + } + var_r31->unk_20 = var_r30; + Hu3DModelPosSet(var_r30, 2000.0f * (var_r28 % 2), 0.0f, 2000.0f * (var_r28 / 2)); + Hu3DModelCameraSet(var_r30, 1 << var_r31->unk_48); + Hu3DModelShadowMapObjSet(var_r30, "m414_11_R-dai_1"); + for (var_r29 = 0; var_r29 < 5; var_r29++) { + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 10) + var_r29, MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r31->unk_22[var_r29] = Hu3DJointMotion(var_r30, var_r27); + } + Hu3DMotionSet(var_r30, var_r31->unk_22[0]); + Hu3DMotionTimeSet(var_r30, 0.0f); + Hu3DModelAttrSet(var_r30, 0x40000002); + Hu3DMotionSpeedSet(var_r30, 2.0f); + + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 15), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r21 = HuSprAnimRead(var_r27); + var_r30 = HuSprCreate(var_r21, 0x4000, 0); + var_r31->unk_2C = HuSprGrpCreate(1); + HuSprGrpMemberSet(var_r31->unk_2C, 0, var_r30); + HuSprAttrSet(var_r31->unk_2C, 0, 4); + HuSprColorSet(var_r31->unk_2C, 0, lbl_1_data_C4[GWPlayerCfg[var_r28].character][0], lbl_1_data_C4[GWPlayerCfg[var_r28].character][1], + lbl_1_data_C4[GWPlayerCfg[var_r28].character][2]); + HuSprTPLvlSet(var_r31->unk_2C, 0, 0.9f); + HuSprGrpPosSet(var_r31->unk_2C, 320.0f, 240.0f); + if (!var_r28) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 16) + var_r29, MEMORY_DEFAULT_NUM, HEAP_DATA); + sp8[var_r29] = HuSprAnimRead(var_r27); + } + } + var_r31->unk_2E = HuSprGrpCreate(8); + var_r30 = HuSprCreate(sp8[2], 0x4000, 0); + HuSprGrpMemberSet(var_r31->unk_2E, 0, var_r30); + HuSprPosSet(var_r31->unk_2E, 0, 0.0f, 0.0f); + var_r30 = HuSprCreate(sp8[3], 0x4000, 0); + HuSprGrpMemberSet(var_r31->unk_2E, 1, var_r30); + HuSprPosSet(var_r31->unk_2E, 1, 0.0f, 0.0f); + HuSprTPLvlSet(var_r31->unk_2E, 1, 0.5f); + + for (var_r29 = 2; var_r29 < 8; var_r29++) { + var_r30 = HuSprCreate(sp8[var_r29 & 1], 0x4000, 0); + HuSprGrpMemberSet(var_r31->unk_2E, var_r29, var_r30); + if (var_r29 & 1) { + HuSprAttrSet(var_r31->unk_2E, var_r29, 4); + } + HuSprPosSet(var_r31->unk_2E, var_r29, -62.0f + (30.0f * (var_r29 / 2)), -2.0f); + } + HuSprGrpPosSet(var_r31->unk_2E, lbl_1_data_A4[var_r31->unk_44], lbl_1_data_B4[var_r31->unk_44]); + HuSprGrpScaleSet(var_r31->unk_2E, 0.0f, 0.0f); + var_f31 = 0.0f; + if (!var_r28) { + for (var_r29 = 0; var_r29 < 6; var_r29++) { + sp18[var_r29] = -1; + } + } + var_f31 += 40.0f; + for (var_r29 = 0; var_r29 < 16; var_r29++) { + if (!var_r28) { + if (sp18[lbl_1_bss_938[var_r29]] == -1) { + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 22) + lbl_1_bss_938[var_r29], MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r27); + sp18[lbl_1_bss_938[var_r29]] = var_r30; + } else { + var_r30 = Hu3DModelLink(sp18[lbl_1_bss_938[var_r29]]); + } + } else { + var_r30 = Hu3DModelLink(sp18[lbl_1_bss_938[var_r29]]); + } + var_r31->unk_94[var_r29] = var_r30; + var_r31->unk_F4[var_r29] = 0; + Hu3DModelCameraSet(var_r30, 1 << var_r31->unk_48); + Hu3DModelAttrSet(var_r30, 0x40000001); + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 34) + lbl_1_bss_938[var_r29], MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r31->unk_B4[var_r29] = Hu3DJointMotion(var_r30, var_r27); + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 28) + lbl_1_bss_938[var_r29], MEMORY_DEFAULT_NUM, HEAP_DATA); + Hu3DMotionSet(var_r30, Hu3DJointMotion(var_r30, var_r27)); + Hu3DModelAttrSet(var_r30, 0x40000001); + Hu3DModelAttrSet(var_r30, 0x4000); + var_f29 = -950.0 * sind(var_f31); + var_f29 = var_f29; + var_f28 = -950.0 * cosd(var_f31); + var_f28 = var_f28; + if (var_r29 & 1) { + var_f30 = 220.0f; + var_f31 += 40.0f; + } else { + var_f30 = 570.0f; + } + if (!lbl_1_bss_938[var_r29]) { + var_f30 += 70.0f; + } + HuSetVecF(&var_r31->unk_134[var_r29], var_f29, var_f30, var_f28); + if (lbl_1_bss_938[var_r29]) { + (void)var_r29; + } else { + (void)var_r29; + } + Hu3DModelPosSet(var_r30, var_f29 + (2000.0f * (var_r28 % 2)), var_f30, var_f28 + (2000.0f * (var_r28 / 2))); + Hu3DModelRotSet(var_r30, 0.0f, atan2d(-var_f29, -var_f28), 0.0f); + if (lbl_1_bss_938[var_r29] == 4 || lbl_1_bss_938[var_r29] == 5) { + Hu3DModelScaleSet(var_r30, 0.6f, 0.6f, 0.6f); + } + if (lbl_1_bss_938[var_r29] == 2) { + Hu3DModelScaleSet(var_r30, 1.2f, 1.2f, 1.2f); + } + } + fn_1_5780(var_r31, lbl_1_bss_920[var_r31->unk_44]); + var_r31->unk_12 = CharModelCreate(lbl_1_data_30[GWPlayerCfg[var_r28].character], 8); + Hu3DModelCameraSet(var_r31->unk_12, 1 << var_r31->unk_48); + var_r31->unk_6C = var_r31->unk_74 = var_r31->unk_70 = 0.0f; + var_r31->unk_90 = 0.0f; + var_r31->unk_60 = 37.0 * sind(var_r31->unk_70); + var_r31->unk_64 = 70.0f; + var_r31->unk_68 = 37.0 * cosd(var_r31->unk_70); + Hu3DModelPosSet(var_r31->unk_12, var_r31->unk_60 + (2000.0f * (var_r28 % 2)), var_r31->unk_64, var_r31->unk_68 + (2000.0f * (var_r28 / 2))); + Hu3DModelRotSet(var_r31->unk_12, var_r31->unk_6C, var_r31->unk_70, var_r31->unk_74); + Hu3DModelShadowSet(var_r31->unk_12); + for (var_r29 = 0; var_r29 < 6; var_r29++) { + var_r31->unk_14[var_r29] = CharModelMotionCreate(lbl_1_data_30[GWPlayerCfg[var_r28].character], lbl_1_data_50[var_r29]); + } + CharModelMotionSet(lbl_1_data_30[GWPlayerCfg[var_r28].character], var_r31->unk_14[0]); + Hu3DModelAttrSet(var_r31->unk_12, 0x40000001); + CharModelMotionDataClose(lbl_1_data_30[GWPlayerCfg[var_r28].character]); + + var_r25 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_EFFECT, 0), MEMORY_DEFAULT_NUM)); + HuDataDirClose(DATA_MAKE_NUM(DATADIR_EFFECT, 0)); + var_r30 = Hu3DParticleCreate(var_r25, 100); + Hu3DModelPosSet(var_r30, 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(var_r30, 1.0f, 1.0f, 1.0f); + Hu3DModelLayerSet(var_r30, 1); + Hu3DParticleColSet(var_r30, 255, 255, 0); + Hu3DParticleScaleSet(var_r30, 0.0f); + Hu3DParticleHookSet(var_r30, lbl_1_data_0[var_r31->unk_44]); + Hu3DModelCameraSet(var_r30, 1 << var_r31->unk_48); + + var_r25 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M414, 20), MEMORY_DEFAULT_NUM)); + var_r30 = Hu3DParticleCreate(var_r25, 1); + Hu3DModelPosSet(var_r30, 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(var_r30, 1.0f, 1.0f, 1.0f); + Hu3DModelLayerSet(var_r30, 1); + Hu3DParticleColSet(var_r30, 255, 255, 255); + Hu3DParticleScaleSet(var_r30, 0.0f); + Hu3DParticleHookSet(var_r30, lbl_1_data_10[var_r31->unk_44]); + Hu3DModelCameraSet(var_r30, 1 << var_r31->unk_48); + + var_r25 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M414, 21), MEMORY_DEFAULT_NUM)); + var_r30 = Hu3DParticleCreate(var_r25, 8); + Hu3DModelPosSet(var_r30, 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(var_r30, 1.0f, 1.0f, 1.0f); + Hu3DModelLayerSet(var_r30, 1); + Hu3DParticleColSet(var_r30, 255, 255, 0); + Hu3DParticleScaleSet(var_r30, 0.0f); + Hu3DParticleHookSet(var_r30, lbl_1_data_20[var_r31->unk_44]); + Hu3DModelCameraSet(var_r30, 1 << var_r31->unk_48); + var_r26 = HuPrcChildCreate(fn_1_6644, 8192, 12288, 0, HuPrcCurrentGet()); + var_r26->user_data = var_r31; + lbl_1_bss_E0[var_r28] = var_r26; + } + for (var_r28 = 0; var_r28 < 4; var_r28++) { + var_r31 = &lbl_1_bss_F0[var_r28]; + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 40), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r27); + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 41) + lbl_1_bss_978, MEMORY_DEFAULT_NUM, HEAP_DATA); + Hu3DAnimCreate(var_r27, var_r30, "gsp000"); + Hu3DModelPosSet(var_r30, 2000.0f * (var_r28 % 2), 520.0f, -820.0f + (2000.0f * (var_r28 / 2))); + Hu3DModelCameraSet(var_r30, 1 << var_r31->unk_48); + } + for (var_r28 = 0; var_r28 < 16; var_r28++) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + lbl_1_bss_990[var_r28][var_r29] = frandmod(120) + 60; + } + } + for (var_r28 = 0; var_r28 < 4; var_r28++) { + for (var_r29 = 0; var_r29 < 16; var_r29++) { + var_r26 = HuPrcChildCreate(fn_1_3ECC, 8192, 4096, 0, HuPrcCurrentGet()); + var_r26->user_data = (void *)(var_r29 + (var_r28 << 16)); + } + } + + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 7), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r27); + lbl_1_bss_A10 = var_r30; + Hu3DModelScaleSet(var_r30, 0.5f, 0.5f, 0.5f); + Hu3DModelCameraSet(var_r30, 16); + Hu3DModelAttrSet(var_r30, 0x40000002); + + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 40), MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r30 = Hu3DModelCreate(var_r27); + + var_r27 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M414, 41) + lbl_1_bss_978, MEMORY_DEFAULT_NUM, HEAP_DATA); + Hu3DAnimCreate(var_r27, var_r30, "gsp000"); + Hu3DModelPosSet(var_r30, 0.0f, 260.0f, -410.0f); + Hu3DModelScaleSet(var_r30, 0.5f, 0.5f, 0.5f); + Hu3DModelCameraSet(var_r30, 16); + HuPrcChildCreate(fn_1_8A10, 4096, 4096, 0, HuPrcCurrentGet()); +} + +void fn_1_397C(void) +{ + float var_f31; + + s32 var_r31; + UnkM414BssF0Struct *var_r30; + s32 var_r29; + + for (var_r29 = 0, var_f31 = 0.0f; var_r29 < 15; var_r29++) { + var_f31 += 0.06666667f; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = &lbl_1_bss_F0[var_r31]; + HuSprGrpScaleSet(var_r30->unk_2E, var_f31, var_f31); + } + HuPrcVSleep(); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = &lbl_1_bss_F0[var_r31]; + HuSprGrpScaleSet(var_r30->unk_2E, 1.0f, 1.0f); + } + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_3A58(void) +{ + float var_f31; + s32 var_r29; + s32 var_r31; + UnkM414BssF0Struct *var_r30; + + for (var_r29 = 0, var_f31 = 1.0f; var_r29 < 15; var_r29++) { + var_f31 -= 0.06666667f; + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = &lbl_1_bss_F0[var_r31]; + HuSprGrpScaleSet(var_r30->unk_2E, var_f31, var_f31); + } + HuPrcVSleep(); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r30 = &lbl_1_bss_F0[var_r31]; + HuSprGrpScaleSet(var_r30->unk_2E, 0.0f, 0.0f); + } + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_3B34(void) +{ + float var_f31; + float var_f30; + double var_f29; + + UnkM414BssF0Struct *var_r31; + s32 var_r30; + s32 var_r29; + + var_r31 = HuPrcCurrentGet()->user_data; + HuAudFXPlay(9); + for (var_r30 = 30; var_r30 != 0; var_r30--) { + var_f31 = 1.0f - ((var_r30 - 1) / 30.0f); + var_f31 = (0.5 * var_f31) + (0.5 * (1.0f - ((1.0f - var_f31) * (1.0f - var_f31)))); + if (var_f31 < 0.75) { + var_f29 = var_f31 / 0.75; + } else { + var_f29 = 1.0; + } + var_f30 = var_f29; + var_f31 = 1.0f - ((1.0f - var_f31) * (1.0f - var_f31)); + var_f30 = 1.0f - ((1.0f - var_f30) * (1.0f - var_f30)); + var_r29 = (var_r31->unk_5C * 2) + 3; + HuSprTPLvlSet(var_r31->unk_2E, var_r29, var_f30); + HuSprScaleSet(var_r31->unk_2E, var_r29, 4.0f - (3.0f * var_f31), 4.0f - (3.0f * var_f31)); + HuPrcVSleep(); + } + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_3D48(s32 arg0, s32 arg1) +{ + UnkM414BssF0Struct *var_r31; + s32 var_r30; + Process *var_r29; + s32 var_r28; + + var_r31 = &lbl_1_bss_F0[arg0]; + var_r28 = lbl_1_bss_97C[var_r31->unk_44]; + if (arg1 == 0) { + lbl_1_bss_97C[var_r31->unk_44]++; + } else { + lbl_1_bss_97C[var_r31->unk_44]--; + } + for (var_r30 = 0; var_r30 < 3; var_r30++) { + if (var_r30 < lbl_1_bss_97C[var_r31->unk_44]) { + if (arg1 == 0 && var_r28 == var_r30) { + var_r29 = HuPrcChildCreate(fn_1_3B34, 8192, 8192, 0, lbl_1_bss_DC); + var_r29->user_data = var_r31; + var_r31->unk_5C = var_r30; + } + HuSprAttrSet(var_r31->unk_2E, (var_r30 * 2) + 2, 4); + HuSprAttrReset(var_r31->unk_2E, (var_r30 * 2) + 3, 4); + } else { + HuSprAttrReset(var_r31->unk_2E, (var_r30 * 2) + 2, 4); + HuSprAttrSet(var_r31->unk_2E, (var_r30 * 2) + 3, 4); + } + } +} + +void fn_1_3ECC(void) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + + UnkM414BssF0Struct *var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + + var_r30 = (s32)HuPrcCurrentGet()->user_data; + var_r27 = (var_r30 >> 16); + var_r30 = (u16)var_r30; + + while (lbl_1_bss_98C == 0) { + HuPrcVSleep(); + } + var_r31 = &lbl_1_bss_F0[var_r27]; + var_r29 = 0; + while (TRUE) { + HuPrcSleep(lbl_1_bss_990[var_r30][var_r29++]); + if (var_r29 >= 4) { + var_r29 = 0; + } + if (var_r31->unk_1F8 == var_r30) { + continue; + } + if (lbl_1_bss_98C == 5) { + break; + } + + var_f31 = 40.0f * ((var_r30 + 2) / 2); + if (var_r31->unk_70 - var_f31 >= 0.0f) { + var_f29 = var_r31->unk_70 - var_f31; + } else { + var_f29 = -(var_r31->unk_70 - var_f31); + } + if (var_f29 < 45.0f || (0.0f == var_r31->unk_70 && var_r30 >= 14)) { + if (var_r30 == fn_1_654C(var_r31->unk_44, 0) || var_r30 == fn_1_654C(var_r31->unk_44, 1)) { + if (var_r31->unk_44 & 1) { + HuAudFXPlay(1434); + } else { + HuAudFXPlay(1433); + } + } else { + HuAudFXPlay(1450); + } + } + Hu3DModelAttrReset(var_r31->unk_D4[var_r30], 0x40000186); + do { + var_r28 = lbl_1_bss_990[var_r30][var_r29++]; + if (var_r29 >= 4) { + var_r29 = 0; + } + while (var_r28) { + if (lbl_1_bss_98C == 5) { + break; + } + HuPrcVSleep(); + var_r28--; + } + } while (lbl_1_bss_98C != 5 && var_r31->unk_1F8 != -1 && lbl_1_bss_978 == lbl_1_bss_938[var_r31->unk_1F8]); + + Hu3DModelAttrReset(var_r31->unk_D4[var_r30], 0x40000082); + Hu3DModelAttrSet(var_r31->unk_D4[var_r30], 0x40000104); + HuPrcSleep(10); + var_f30 = 40.0f * ((var_r30 + 2) / 2); + if (var_r31->unk_70 - var_f30 >= 0.0f) { + var_f28 = var_r31->unk_70 - var_f30; + } else { + var_f28 = -(var_r31->unk_70 - var_f30); + } + if (var_f28 < 45.0f || (0.0f == var_r31->unk_70 && var_r30 >= 14)) { + if (var_r30 == fn_1_654C(var_r31->unk_44, 0) || var_r30 == fn_1_654C(var_r31->unk_44, 1)) { + if (var_r31->unk_44 & 1) { + HuAudFXPlay(1436); + } else { + HuAudFXPlay(1435); + } + } else { + HuAudFXPlay(1452); + } + } + } + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_42AC(void) +{ + s32 sp8[1]; + + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + float var_f24; + float var_f23; + float var_f22; + + UnkM414BssF0Struct *var_r31; + UnkM414Struct2 *var_r30; + s32 var_r28; + s32 var_r27; + + var_r30 = HuPrcCurrentGet()->user_data; + var_r31 = var_r30->unk_00; + var_r27 = var_r30->unk_00->unk_44; + HuPrcSleep(30); + if (var_r31->unk_44 & 1) { + HuAudFXPlay(1444); + } else { + HuAudFXPlay(1443); + } + if (var_r31->unk_44 & 1) { + HuAudFXPlay(1448); + } else { + HuAudFXPlay(1447); + } + if (var_r30->unk_08) { + var_f24 = -200.0 * (sind(lbl_1_bss_920[var_r27]) * cos(0.0)); + var_f26 = 150.0 + (-200.0 * sin(0.0)); + var_f23 = -200.0 * (cos(0.0) * cosd(lbl_1_bss_920[var_r27])); + } else { + var_f24 = -200.0 * (sind(lbl_1_bss_920[var_r27]) * cos(0.3490658503988659)); + var_f26 = 150.0 + (-200.0 * sin(-0.3490658503988659)); + var_f23 = -200.0 * (cos(-0.3490658503988659) * cosd(lbl_1_bss_920[var_r27])); + } + if (!lbl_1_bss_938[var_r30->unk_04]) { + var_f26 += 70.0f; + } + var_f31 = var_r31->unk_134[var_r30->unk_04].x; + var_f30 = var_r31->unk_134[var_r30->unk_04].y; + var_f29 = var_r31->unk_134[var_r30->unk_04].z; + + var_f28 = (var_f24 - var_f31) / 30.0f; + var_f22 = (var_f26 - var_f30) / 30.0f; + var_f27 = (var_f23 - var_f29) / 30.0f; + + for (var_r28 = 0; var_r28 < 30; var_r28++) { + var_f31 += var_f28; + var_f30 += var_f22; + var_f29 += var_f27; + Hu3DModelPosSet(var_r31->unk_94[var_r30->unk_04], var_f31 + (2000.0f * (var_r27 % 2)), var_f30, var_f29 + (2000.0f * (var_r27 / 2))); + HuPrcVSleep(); + } + HuPrcSleep(10); + HuAudFXPlay(lbl_1_data_8C[lbl_1_bss_978]); + var_f28 = 500.0 * sind(lbl_1_bss_920[var_r27] - 20.0f); + var_f28 = var_f28; + var_f27 = 500.0 * cosd(lbl_1_bss_920[var_r27] - 20.0f); + var_f27 = var_f27; + var_f28 /= 30.0f; + var_f27 /= 30.0f; + + for (var_r28 = 0, var_f25 = -20.0f; var_r28 < 30.0f; var_r28++) { + var_f31 += var_f28; + var_f30 -= var_f25; + var_f29 += var_f27; + var_f25 += 2.0f; + Hu3DModelPosSet(var_r31->unk_94[var_r30->unk_04], var_f31 + (2000.0f * (var_r27 % 2)), var_f30, var_f29 + (2000.0f * (var_r27 / 2))); + HuPrcVSleep(); + } + var_r31->unk_F4[var_r30->unk_04] = 1; + Hu3DModelAttrSet(var_r31->unk_94[var_r30->unk_04], 1); + for (var_r28 = 0, sp8[0] = 0; var_r28 < 4; var_r28++) { + if (lbl_1_bss_97C[var_r28] >= 3) { + break; + } + } + if (var_r28 >= 4) { + fn_1_3D48(var_r31->unk_44, 0); + } + CharModelMotionSpeedSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], 1.0f); + if (var_r30->unk_08) { + CharModelMotionShiftSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], var_r31->unk_14[1], 60.0f, 5.0f, 0); + } else { + CharModelMotionShiftSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], var_r31->unk_14[1], 0.0f, 5.0f, 0); + } + HuPrcSleep(5); + Hu3DModelAttrSet(var_r31->unk_12, 0x40000002); + CharModelMotionSpeedSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], 2.0f); + var_r30->unk_0C = 0; + HuPrcSleep(5); + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +u32 fn_1_4C04(s32 arg0, s32 arg1, s32 arg2) +{ + switch (GWPlayerCfg[arg0].diff) { + case 0: + arg1 *= 12; + break; + case 1: + arg1 *= 10; + break; + case 2: + arg1 *= 10; + break; + default: + arg1 *= 8; + break; + } + if (arg2) { + arg1 / 2; + } + return arg1; +} + +s32 fn_1_4C74(UnkM414BssF0Struct *arg0) +{ + s32 sp8[4]; + + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r27; + s32 var_r26; + s32 var_r25; + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + sp8[var_r31] = -1; + } + + for (var_r31 = var_r30 = 0; var_r31 < 16; var_r31++) { + if (lbl_1_bss_978 == lbl_1_bss_938[var_r31] && !arg0->unk_F4[var_r31]) { + sp8[var_r30++] = var_r31 / 2; + } + } + var_r29 = fn_1_654C(arg0->unk_44, 0) / 2; + if (fn_1_654C(arg0->unk_44, 0) == -1) { + var_r29 = 8; + } + for (var_r31 = 0, var_r30 = 100, var_r26 = -1; var_r31 < 3; var_r31++) { + if (sp8[var_r31] == -1) { + break; + } + if (var_r29 - sp8[var_r31] >= 0) { + var_r25 = var_r29 - sp8[var_r31]; + } else { + var_r25 = -(var_r29 - sp8[var_r31]); + } + var_r27 = var_r25; + if (var_r30 > var_r27) { + var_r30 = var_r27; + var_r26 = var_r31; + } + } + if (!var_r31) { + return 0; + } + return var_r29 - sp8[var_r26]; +} + +inline s32 fn_1_4C74_inline(UnkM414BssF0Struct *arg0) +{ + s32 sp8[4]; + + s32 var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r27; + s32 var_r26; + + for (var_r31 = 0; var_r31 < 3; var_r31++) { + sp8[var_r31] = -1; + } + + for (var_r31 = var_r30 = 0; var_r31 < 16; var_r31++) { + if (lbl_1_bss_978 == lbl_1_bss_938[var_r31] && !arg0->unk_F4[var_r31]) { + sp8[var_r30++] = var_r31 / 2; + } + } + var_r29 = fn_1_654C(arg0->unk_44, 0) / 2; + if (fn_1_654C(arg0->unk_44, 0) == -1) { + var_r29 = 8; + } + for (var_r31 = 0, var_r30 = 100, var_r26 = -1; var_r31 < 3; var_r31++) { + if (sp8[var_r31] == -1) { + break; + } + var_r27 = ABS_INV(var_r29 - sp8[var_r31]); + if (var_r30 > var_r27) { + var_r30 = var_r27; + var_r26 = var_r31; + } + } + + if (!var_r31) { + return 0; + } + + return var_r29 - sp8[var_r26]; +} + +void fn_1_4E10(UnkM414BssF0Struct *arg0) +{ + float var_f31; + + u32 var_r21; + + arg0->unk_1FC = arg0->unk_1FD = 0; + arg0->unk_1FF = arg0->unk_1FE = 0; + arg0->unk_200 = 0; + + switch (GWPlayerCfg[arg0->unk_44].diff) { + case 0: + var_r21 = 45; + break; + case 1: + var_r21 = 55; + break; + case 2: + var_r21 = 70; + break; + default: + var_r21 = 80; + break; + } + if (arg0->unk_204) { + arg0->unk_204--; + return; + } + var_f31 = fn_1_4C74_inline(arg0); + if (var_f31 > 0.0f) { + arg0->unk_1FE = 50; + arg0->unk_204 = fn_1_4C04(arg0->unk_44, 5, 1) + 20 + fn_1_4C04(arg0->unk_44, frandmod(10), 0); + } + if (var_f31 < 0.0f) { + arg0->unk_1FF = 50; + arg0->unk_204 = fn_1_4C04(arg0->unk_44, 5, 1) + 20 + fn_1_4C04(arg0->unk_44, frandmod(10), 0); + } + if (0.0f == var_f31) { + arg0->unk_204 = fn_1_4C04(arg0->unk_44, 1, 1) + 10 + fn_1_4C04(arg0->unk_44, frandmod(5), 0); + + if (arg0->unk_1F4 == 1) { + if (lbl_1_bss_978 == lbl_1_bss_938[fn_1_654C(arg0->unk_44, 0)] && !arg0->unk_F4[fn_1_654C(arg0->unk_44, 0)]) { + if (!(Hu3DModelMotionAttrGet(arg0->unk_D4[fn_1_654C(arg0->unk_44, 0)]) & 0x40000004)) { + arg0->unk_200 = 256; + } + } else { + arg0->unk_1FD = -50; + } + } else if (lbl_1_bss_978 == lbl_1_bss_938[fn_1_654C(arg0->unk_44, 1)] && !arg0->unk_F4[fn_1_654C(arg0->unk_44, 1)]) { + if (!(Hu3DModelMotionAttrGet(arg0->unk_D4[fn_1_654C(arg0->unk_44, 1)]) & 0x40000004)) { + arg0->unk_200 = 256; + } + } else { + arg0->unk_1FD = 50; + } + } + if (frandmod(100) > var_r21) { + switch (frandmod(5)) { + case 0: + arg0->unk_1FE = 50; + break; + case 1: + arg0->unk_1FF = 50; + break; + case 2: + break; + case 3: + arg0->unk_1FD = -50; + break; + default: + arg0->unk_1FD = -50; + break; + } + } +} + +s8 fn_1_5554(s32 arg0, s32 arg1) // identical to m411Dll/main.c::fn_1_5D58 +{ + UnkM414BssF0Struct *var_r31; + s8 var_r30; + s8 var_r29; + s8 var_r28; + + var_r31 = &lbl_1_bss_F0[arg0]; + var_r30 = 0; + if (lbl_1_bss_98C < 4) { + if (!GWPlayerCfg[arg0].iscom) { + if (arg1) { + var_r30 = HuPadStkY[var_r31->unk_4C]; + var_r29 = var_r30; + } else { + var_r30 = HuPadStkX[var_r31->unk_4C]; + var_r29 = var_r30; + } + (void)var_r31; + } else if (arg1) { + var_r30 = var_r31->unk_1FD; + var_r28 = var_r30; + } else { + var_r30 = var_r31->unk_1FC; + var_r28 = var_r30; + } + } + return var_r30; +} + + +static inline s8 fn_1_5554_inline(s32 arg0, s32 arg1) // identical to m411Dll/main.c::fn_1_5D58 +{ + UnkM414BssF0Struct *var_r31; + s8 var_r30; + var_r31 = &lbl_1_bss_F0[arg0]; + var_r30 = 0; + if (lbl_1_bss_98C < 4) { + if (!GWPlayerCfg[arg0].iscom) { + if (arg1) { + var_r30 = HuPadStkY[var_r31->unk_4C]; + } else { + var_r30 = HuPadStkX[var_r31->unk_4C]; + } + } else if (arg1) { + var_r30 = var_r31->unk_1FD; + } else { + var_r30 = var_r31->unk_1FC; + } + } + return var_r30; +} + +u8 fn_1_5624(s32 arg0, s32 arg1) +{ + UnkM414BssF0Struct *var_r31; + s8 var_r30; + s8 var_r29; + s8 var_r28; + + var_r31 = &lbl_1_bss_F0[arg0]; + var_r30 = 0; + if (lbl_1_bss_98C < 4) { + if (!GWPlayerCfg[arg0].iscom) { + if (arg1) { + var_r29 = var_r30 = HuPadTrigR[var_r31->unk_4C]; + } else { + var_r29 = var_r30 = HuPadTrigL[var_r31->unk_4C]; + } + (void)var_r31; + } else if (arg1) { + var_r28 = var_r30 = var_r31->unk_1FE; + } else { + var_r28 = var_r30 = var_r31->unk_1FF; + } + } + return var_r30; +} + +static inline u8 fn_1_5624_inline(s32 arg0, s32 arg1) +{ + UnkM414BssF0Struct *var_r31; + s8 var_r30; + + var_r31 = &lbl_1_bss_F0[arg0]; + var_r30 = 0; + if (lbl_1_bss_98C < 4) { + if (!GWPlayerCfg[arg0].iscom) { + if (arg1) { + var_r30 = HuPadTrigR[var_r31->unk_4C]; + } else { + var_r30 = HuPadTrigL[var_r31->unk_4C]; + } + } else if (arg1) { + var_r30 = var_r31->unk_1FE; + } else { + var_r30 = var_r31->unk_1FF; + } + } + return var_r30; +} + +u16 fn_1_56FC(s32 arg0) +{ + UnkM414BssF0Struct *var_r31; + u16 var_r30; + + var_r31 = &lbl_1_bss_F0[arg0]; + var_r30 = 0; + if (lbl_1_bss_98C < 4) { + if (!GWPlayerCfg[arg0].iscom) { + var_r30 = HuPadBtnDown[var_r31->unk_4C]; + } else { + var_r30 = var_r31->unk_200; + } + } + (void)var_r31; + (void)var_r31; + (void)var_r31; + (void)var_r31; + return var_r30; +} + +void fn_1_5780(UnkM414BssF0Struct *arg0, float arg8) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + + s32 var_r31; + + var_f29 = 60.0f; + var_f31 = 180.0f + arg8; + if (var_f31 > 360.0f) { + var_f31 -= 360.0f; + } + for (var_r31 = 0, var_f30 = 40.0f; var_r31 < 16; var_r31++) { + if (var_f30 < var_f29 || var_f31 < var_f29) { + var_f30 += var_f29; + var_f31 += var_f29; + } + if (var_f30 - var_f31 >= 0.0f) { + var_f27 = var_f30 - var_f31; + } else { + var_f27 = -(var_f30 - var_f31); + } + var_f28 = var_f27; + if (var_f28 < var_f29 || arg0->unk_F4[var_r31] == 1) { + Hu3DModelAttrSet(arg0->unk_94[var_r31], 1); + } else { + Hu3DModelAttrReset(arg0->unk_94[var_r31], 1); + } + if (var_f28 < var_f29) { + Hu3DModelAttrSet(arg0->unk_D4[var_r31], 1); + } else { + Hu3DModelAttrReset(arg0->unk_D4[var_r31], 1); + } + if (var_r31 & 1) { + var_f30 += 40.0f; + } + } + var_f31 = 180.0f + arg8; + if (var_f31 > 360.0f) { + var_f31 -= 360.0f; + } + for (var_r31 = 0, var_f30 = 0.0f; var_r31 < 9; var_f30 += 40.0f, var_r31++) { + if (var_f30 < var_f29 || var_f31 < var_f29) { + var_f30 += var_f29; + var_f31 += var_f29; + } + if (var_f30 - var_f31 >= 0.0f) { + var_f26 = var_f30 - var_f31; + } else { + var_f26 = -(var_f30 - var_f31); + } + var_f28 = var_f26; + if (var_f28 < var_f29) { + Hu3DModelAttrSet(arg0->unk_00[var_r31], 1); + } else { + Hu3DModelAttrReset(arg0->unk_00[var_r31], 1); + } + } +} + +void fn_1_5A3C(void) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + + UnkM414Struct4 *var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r31 = HuPrcCurrentGet()->user_data; + HuPrcSleep(10); + var_r28 = var_r31->unk_00->unk_44; + var_f26 = lbl_1_bss_920[var_r28]; + fn_1_5780(var_r31->unk_00, lbl_1_bss_920[var_r28]); + + if (var_r31->unk_04) { + var_f30 = 40.0f + lbl_1_bss_920[var_r28]; + var_f29 = 40.0f; + } else { + var_f30 = lbl_1_bss_920[var_r28] - 40.0f; + var_f29 = -40.0f; + } + if (var_f30 >= 360.0f) { + var_f30 -= 360.0f; + } + if (var_f30 < 0.0f) { + var_f30 += 360.0f; + } + for (var_r30 = 0; var_r30 < 9; var_r30++) { + Hu3DModelAttrSet(var_r31->unk_00->unk_00[var_r30], 0x40000002); + } + for (var_r30 = 0, var_f28 = 0.0f; var_r30 < 10; var_r30++, var_f28 += 9.0f) { + var_f27 = (var_f29/2) * (1.0 - cosd(var_f28)); + lbl_1_bss_920[var_r28] = var_f26 + var_f27; + for (var_r29 = 0; var_r29 < 9; var_r29++) { + if (!var_r31->unk_04) { + var_f31 = (var_f27 / var_f29) * Hu3DMotionMaxTimeGet(var_r31->unk_00->unk_00[var_r29]); + } else { + var_f31 = Hu3DMotionMaxTimeGet(var_r31->unk_00->unk_00[var_r29]) + - (var_f27 / var_f29) * Hu3DMotionMaxTimeGet(var_r31->unk_00->unk_00[var_r29]); + } + Hu3DMotionTimeSet(var_r31->unk_00->unk_00[var_r29], var_f31 >= 0.0f ? var_f31 : -var_f31); + } + HuPrcVSleep(); + } + for (var_r30 = 0, var_f28 = 0.0f; var_r30 < 10; var_r30++, var_f28 += 9.0f) { + var_f27 = (var_f29/2) + ((var_f29/2) * sind(var_f28)); + lbl_1_bss_920[var_r28] = var_f26 + var_f27; + for (var_r29 = 0; var_r29 < 9; var_r29++) { + if (!var_r31->unk_04) { + var_f31 = (var_f27 / var_f29) * Hu3DMotionMaxTimeGet(var_r31->unk_00->unk_00[var_r29]); + } else { + var_f31 = Hu3DMotionMaxTimeGet(var_r31->unk_00->unk_00[var_r29]) + - (var_f27 / var_f29) * Hu3DMotionMaxTimeGet(var_r31->unk_00->unk_00[var_r29]); + } + Hu3DMotionTimeSet(var_r31->unk_00->unk_00[var_r29], var_f31 >= 0.0f ? var_f31 : -var_f31); + } + HuPrcVSleep(); + } + if (!var_r31->unk_04) { + for (var_r30 = 0; var_r30 < 9; var_r30++) { + Hu3DMotionTimeSet(var_r31->unk_00->unk_00[var_r30], Hu3DMotionMaxTimeGet(var_r31->unk_00->unk_00[var_r30])); + } + } else { + for (var_r30 = 0; var_r30 < 9; var_r30++) { + Hu3DMotionTimeSet(var_r31->unk_00->unk_00[var_r30], 0.0f); + } + } + lbl_1_bss_920[var_r28] = var_f30; + *var_r31->unk_08_ptr = 0; + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_5EE8(void) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + + UnkM414Struct4 *var_r31; + s32 var_r30; + s32 var_r29; + + var_r31 = HuPrcCurrentGet()->user_data; + var_r29 = var_r31->unk_00->unk_44; + var_f28 = lbl_1_bss_920[var_r29]; + if (var_r31->unk_04) { + var_f31 = 40.0f + lbl_1_bss_920[var_r29]; + var_f29 = 40.0f; + } else { + var_f31 = lbl_1_bss_920[var_r29] - 40.0f; + var_f29 = -40.0f; + } + if (var_f31 >= 360.0f) { + var_f31 -= 360.0f; + } + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + for (var_r30 = 0, var_f30 = 0.0f; var_r30 < 15; var_r30++, var_f30 += 6.0f) { + var_r31->unk_00->unk_70 = var_f28 + ((var_f29/2) * (1.0 - cosd(var_f30))); + HuPrcVSleep(); + } + for (var_r30 = 0, var_f30 = 0.0f; var_r30 < 15; var_r30++, var_f30 += 6.0f) { + var_r31->unk_00->unk_70 = (var_f29/2) + (var_f28 + ((var_f29/2) * sind(var_f30))); + HuPrcVSleep(); + } + var_r31->unk_00->unk_70 = var_f31; + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_6134(void) +{ + float var_f31; + float var_f30; + float var_f29; + + UnkM414BssF0Struct *var_r31; + s32 var_r30; + + var_r31 = HuPrcCurrentGet()->user_data; + for (var_r30 = 0, var_f31 = 0.0f; var_r30 < 10; var_r30++, var_f31 += 18.0f) { + var_f30 = 50.0 * sind(lbl_1_bss_920[var_r31->unk_44]) * sind(var_f31); + var_f29 = 50.0 * cosd(lbl_1_bss_920[var_r31->unk_44]) * sind(var_f31); + Hu3DModelPosSet(var_r31->unk_12, (2000.0f * (var_r31->unk_44 % 2)) + (var_r31->unk_60 + var_f30), var_r31->unk_64, + (2000.0f * (var_r31->unk_44 / 2)) + (var_r31->unk_68 + var_f29)); + Hu3DModelPosSet(var_r31->unk_20, var_f30 + (2000.0f * (var_r31->unk_44 % 2)), 0.0f, var_f29 + (2000.0f * (var_r31->unk_44 / 2))); + HuPrcVSleep(); + } + Hu3DModelPosSet( + var_r31->unk_12, var_r31->unk_60 + (2000.0f * (var_r31->unk_44 % 2)), var_r31->unk_64, var_r31->unk_68 + (2000.0f * (var_r31->unk_44 / 2))); + Hu3DModelPosSet(var_r31->unk_20, 2000.0f * (var_r31->unk_44 % 2), 0.0f, 2000.0f * (var_r31->unk_44 / 2)); + HuPrcKill(HuPrcCurrentGet()); + while (TRUE) { + HuPrcVSleep(); + } +} + +s32 fn_1_654C(s32 arg0, s32 arg1) +{ + float var_f31; + s32 var_r31; + + for (var_r31 = 0, var_f31 = 40.0f; var_r31 < 16; var_f31 += 40.0f, var_r31 += 2) { + if (var_f31 == lbl_1_bss_920[arg0]) { + if (arg1) { + var_r31++; + } + break; + } + } + if (var_r31 >= 16) { + var_r31 = -1; + } + (void)var_r31; + (void)var_r31; + return var_r31; +} + +s32 fn_1_65DC(UnkM414BssF0Struct *arg0, s32 arg1) +{ + s32 var_r31; + + var_r31 = 1; + if (Hu3DModelMotionAttrGet(arg0->unk_D4[arg1]) & 0x40000004) { + var_r31 = 0; + } + return var_r31; +} + +void fn_1_6644(void) +{ + UnkM414Struct4 sp9C; + UnkM414Struct2 sp8C; + + UnkM414BssF0Struct *var_r31; + Process *var_r30; + s32 var_r29; + s32 var_r28; + + var_r31 = HuPrcCurrentGet()->user_data; + var_r31->unk_50 = 0; + var_r31->unk_1F4 = 1; + var_r31->unk_1F8 = -1; + var_r31->unk_204 = 0; + + while (!lbl_1_bss_98C) { + HuPrcVSleep(); + } + lbl_1_bss_98C = 2; + + while (lbl_1_bss_98C == 2) { + HuPrcVSleep(); + } + var_r31->unk_58 = 0; + lbl_1_bss_97C[var_r31->unk_44] = 0; + + while (TRUE) { + lbl_1_bss_930[0] = lbl_1_bss_930[1] = 0; + if (GWPlayerCfg[var_r31->unk_44].iscom == 1) { + fn_1_4E10(var_r31); + } + if (var_r31->unk_1F4 == 3 && Hu3DMotionEndCheck(var_r31->unk_20)) { + if (0.0f == Hu3DMotionTimeGet(var_r31->unk_20)) { + Hu3DMotionSet(var_r31->unk_20, var_r31->unk_22[0]); + var_r31->unk_1F4 = 1; + } else { + var_r31->unk_1F4 = 2; + Hu3DMotionSet(var_r31->unk_20, var_r31->unk_22[0]); + Hu3DMotionTimeSet(var_r31->unk_20, Hu3DMotionMaxTimeGet(var_r31->unk_20)); + } + } + if (var_r31->unk_1F4 == 4 && Hu3DMotionEndCheck(var_r31->unk_20)) { + var_r31->unk_1F4 = 1; + var_r31->unk_1F8 = -1; + Hu3DMotionSet(var_r31->unk_20, var_r31->unk_22[0]); + Hu3DModelAttrSet(var_r31->unk_20, 0x40000002); + Hu3DModelAttrReset(var_r31->unk_20, 0x40000004); + Hu3DMotionSpeedSet(var_r31->unk_20, 2.0f); + } + if (var_r31->unk_1F4 == 5 && Hu3DMotionEndCheck(var_r31->unk_20)) { + var_r31->unk_1F4 = 2; + var_r31->unk_1F8 = -1; + Hu3DMotionSet(var_r31->unk_20, var_r31->unk_22[0]); + Hu3DModelAttrReset(var_r31->unk_20, 0x40000004); + Hu3DMotionTimeSet(var_r31->unk_20, Hu3DMotionMaxTimeGet(var_r31->unk_20)); + Hu3DMotionSpeedSet(var_r31->unk_20, 2.0f); + } + if ((fn_1_56FC(var_r31->unk_44) & PAD_BUTTON_A) && !var_r31->unk_58) { + if (fn_1_654C(var_r31->unk_44, 0) != -1) { + if (var_r31->unk_1F4 == 1) { + var_r29 = fn_1_654C(var_r31->unk_44, 0); + if (!var_r31->unk_F4[var_r29]) { + if (var_r31->unk_44 & 1) { + HuAudFXPlay(1442); + } else { + HuAudFXPlay(1441); + } + omVibrate(var_r31->unk_44, 12, 6, 6); + var_r31->unk_1F4 = 4; + var_r31->unk_1F8 = var_r29; + Hu3DMotionSet(var_r31->unk_20, var_r31->unk_22[1]); + Hu3DModelAttrReset(var_r31->unk_20, 0x40000006); + Hu3DMotionSpeedSet(var_r31->unk_20, 1.0f); + var_r30 = HuPrcChildCreate(fn_1_6134, 8192, 8192, 0, HuPrcCurrentGet()); + var_r30->user_data = var_r31; + if (lbl_1_bss_978 == lbl_1_bss_938[var_r29] && fn_1_65DC(var_r31, var_r29)) { + Hu3DModelAttrReset(var_r31->unk_D4[var_r29], 0x40000186); + var_r30 = HuPrcChildCreate(fn_1_42AC, 8192, 8192, 0, HuPrcCurrentGet()); + var_r30->user_data = &sp8C; + sp8C.unk_00 = var_r31; + sp8C.unk_08 = 0; + sp8C.unk_0C = 1; + sp8C.unk_04 = fn_1_654C(var_r31->unk_44, sp8C.unk_08); + while (sp8C.unk_0C) { + HuPrcVSleep(); + } + } else { + HuPrcSleep(10); + Hu3DModelAttrReset(var_r31->unk_D4[var_r29], 0x40000082); + Hu3DModelAttrSet(var_r31->unk_D4[var_r29], 0x40000104); + HuPrcSleep(10); + omVibrate(var_r31->unk_44, 12, 4, 2); + var_r30 = HuPrcChildCreate(fn_1_1C48, 8192, 8192, 0, HuPrcCurrentGet()); + var_r30->user_data = var_r31; + + fn_1_CD8(0, var_r31->unk_44, 5.0f); + Hu3DModelAttrSet(var_r31->unk_20, 0x40000004); + HuPrcSleep(10); + if (var_r31->unk_44 & 1) { + HuAudFXPlay(1444); + } else { + HuAudFXPlay(1443); + } + Hu3DModelAttrReset(var_r31->unk_D4[var_r29], 0x40000004); + HuPrcSleep(10); + } + } + } else if (var_r31->unk_1F4 == 2) { + var_r29 = fn_1_654C(var_r31->unk_44, 1); + if (!var_r31->unk_F4[var_r29]) { + if (var_r31->unk_44 & 1) { + HuAudFXPlay(1442); + } else { + HuAudFXPlay(1441); + } + omVibrate(var_r31->unk_44, 12, 6, 6); + var_r31->unk_1F4 = 5; + var_r31->unk_1F8 = var_r29; + Hu3DMotionSet(var_r31->unk_20, var_r31->unk_22[2]); + Hu3DMotionSpeedSet(var_r31->unk_20, 1.0f); + var_r30 = HuPrcChildCreate(fn_1_6134, 8192, 8192, 0, HuPrcCurrentGet()); + var_r30->user_data = var_r31; + if (lbl_1_bss_978 == lbl_1_bss_938[var_r29] && fn_1_65DC(var_r31, var_r29)) { + Hu3DModelAttrReset(var_r31->unk_D4[var_r29], 0x40000186); + var_r30 = HuPrcChildCreate(fn_1_42AC, 8192, 8192, 0, HuPrcCurrentGet()); + var_r30->user_data = &sp8C; + sp8C.unk_00 = var_r31; + sp8C.unk_08 = 1; + sp8C.unk_0C = 1; + sp8C.unk_04 = fn_1_654C(var_r31->unk_44, sp8C.unk_08); + while (sp8C.unk_0C) { + HuPrcVSleep(); + } + } else { + HuPrcSleep(10); + Hu3DModelAttrReset(var_r31->unk_D4[var_r29], 0x40000082); + Hu3DModelAttrSet(var_r31->unk_D4[var_r29], 0x40000104); + HuPrcSleep(10); + omVibrate(var_r31->unk_44, 12, 4, 2); + var_r30 = HuPrcChildCreate(fn_1_1C48, 8192, 8192, 0, HuPrcCurrentGet()); + var_r30->user_data = var_r31; + fn_1_CD8(0, var_r31->unk_44, 5.0f); + Hu3DModelAttrSet(var_r31->unk_20, 0x40000004); + HuPrcSleep(15); + if (var_r31->unk_44 & 1) { + HuAudFXPlay(1444); + } else { + HuAudFXPlay(1443); + } + Hu3DModelAttrReset(var_r31->unk_D4[var_r29], 0x40000004); + HuPrcSleep(15); + } + } + } + } + } + if (fn_1_5554_inline(var_r31->unk_44, 1) > 20 && (var_r31->unk_1F4 == 2 || var_r31->unk_1F4 == 0)) { // wrong + Hu3DModelAttrReset(var_r31->unk_20, 0x40000002); + Hu3DModelAttrSet(var_r31->unk_20, 0x40000004); + var_r31->unk_1F4 = 3; + Hu3DModelAttrReset(var_r31->unk_12, 0x40000002); + Hu3DModelAttrSet(var_r31->unk_12, 0x40000004); + Hu3DMotionSpeedSet(var_r31->unk_12, 2.0f); + } + if (fn_1_5554_inline(var_r31->unk_44, 1) < -20 && (var_r31->unk_1F4 == 1 || var_r31->unk_1F4 == 0)) { // wrong + Hu3DModelAttrReset(var_r31->unk_20, 0x40000006); + var_r31->unk_1F4 = 3; + Hu3DModelAttrReset(var_r31->unk_12, 0x40000006); + Hu3DMotionSpeedSet(var_r31->unk_12, 2.0f); + } + if (!var_r31->unk_58) { + var_r28 = -1; + if (fn_1_5624_inline(var_r31->unk_44, 0) > 20 && var_r28 == -1) { // wrong + var_r28 = 1; + } + if (fn_1_5624_inline(var_r31->unk_44, 1) > 20 && var_r28 == -1) { // wrong + var_r28 = 0; + } + if (var_r28 != -1) { + if (var_r28) { + if (var_r31->unk_44 & 1) { + HuAudFXPlay(1440); + } else { + HuAudFXPlay(1439); + } + } else if (var_r31->unk_44 & 1) { + HuAudFXPlay(1438); + } else { + HuAudFXPlay(1437); + } + var_r31->unk_58 = 1; + var_r30 = HuPrcChildCreate(fn_1_5A3C, 8192, 8192, 0, HuPrcCurrentGet()); + var_r30->user_data = &sp9C; + sp9C.unk_00 = var_r31; + sp9C.unk_04 = var_r28; + sp9C.unk_08_ptr = &var_r31->unk_58; + var_r30 = HuPrcChildCreate(fn_1_5EE8, 8192, 8192, 0, HuPrcCurrentGet()); + var_r30->user_data = &sp9C; + sp9C.unk_00 = var_r31; + sp9C.unk_04 = var_r28; + (void)var_r28; + (void)var_r28; + } + } + var_r31->unk_60 = 37.0 * sind(var_r31->unk_70); + var_r31->unk_68 = 37.0 * cosd(var_r31->unk_70); + + Hu3DModelPosSet(var_r31->unk_12, var_r31->unk_60 + (2000.0f * (var_r31->unk_44 % 2)), var_r31->unk_64, + var_r31->unk_68 + (2000.0f * (var_r31->unk_44 / 2))); + Hu3DModelRotSet(var_r31->unk_12, var_r31->unk_6C, var_r31->unk_70 + var_r31->unk_90, var_r31->unk_74); + Hu3DModelRotSet(var_r31->unk_20, var_r31->unk_6C, var_r31->unk_70, var_r31->unk_74); + HuPrcVSleep(); + } +} + +void fn_1_76F4(void) +{ + Vec sp14; + Vec sp8; + + float var_f31; + float var_f30; + float var_f29; + + UnkM414BssF0Struct *var_r31; + + var_r31 = HuPrcCurrentGet()->user_data; + + while (TRUE) { + if (var_r31->unk_1F4 != 4 && var_r31->unk_1F4 != 5) { + sp14.x = (2000.0f * (var_r31->unk_44 % 2)) + (-950.0 * sind(var_r31->unk_70)); + sp14.z = (2000.0f * (var_r31->unk_44 / 2)) + (-950.0 * cosd(var_r31->unk_70)); + var_f29 = Hu3DMotionMaxTimeGet(var_r31->unk_20); + sp14.y = 220.0f + (350.0f * (1.0f - (Hu3DMotionTimeGet(var_r31->unk_20) / var_f29))); + Hu3D3Dto2D(&sp14, 1 << var_r31->unk_48, &sp8); + var_f31 = (282.0f * (var_r31->unk_44 % 2)) + (sp8.x /2); + var_f30 = (225.0f * (var_r31->unk_44 / 2)) + (sp8.y /2); + var_f31 += 3.0f; + var_f30 -= 15.0f; + HuSprGrpPosSet(var_r31->unk_2C, var_f31, var_f30); + } + HuPrcVSleep(); + } +} +void fn_1_79A8(void) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + + UnkM414BssF0Struct *var_r31; + s32 var_r30; + s32 var_r29; + UnkM414BssF0Struct *var_r28; + Process *var_r27; + + HuAudFXPlay(lbl_1_data_8C[lbl_1_bss_978]); + HuPrcSleep(60); + HuAudFXPlay(1449); + var_f31 = var_f30 = 0.0f; + var_f29 = 640.0f; + var_f28 = 480.0f; + for (var_r29 = 0; var_r29 < 30; var_r29++) { + Hu3DCameraViewportSet(16, var_f31, var_f30, var_f29, var_f28, 0.0f, 1.0f); + Hu3DCameraScissorSet(16, var_f31, var_f30, var_f29, var_f28); + var_f31 += 10.666667f; + var_f30 += 8.0f; + var_f29 -= 21.333334f; + var_f28 -= 16.0f; + HuPrcVSleep(); + } + Hu3DCameraViewportSet(16, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f); + Hu3DCameraScissorSet(16, 0, 0, 0, 0); + Hu3DModelAttrSet(lbl_1_bss_A10, 1); + HuPrcSleep(30); + for (var_r29 = 0; var_r29 < 45; var_r29++) { + for (var_r30 = 0; var_r30 < 4; var_r30++) { + lbl_1_bss_910[var_r30] -= 23.777779f; + lbl_1_bss_A0[var_r30].y -= 3.5555556f; + lbl_1_bss_64[var_r30].y -= 6.2222223f; + } + HuPrcVSleep(); + } + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r31 = &lbl_1_bss_F0[var_r30]; + CharModelMotionSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], var_r31->unk_14[5]); + CharModelMotionTimeSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], 61.0f); + CharModelMotionSpeedSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], 2.0f); + } + for (var_r29 = 0; var_r29 < 30; var_r29++) { + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r31 = &lbl_1_bss_F0[var_r30]; + var_r31->unk_90 += 6.0f; + Hu3DModelRotSet(var_r31->unk_12, var_r31->unk_6C, var_r31->unk_70 + var_r31->unk_90, var_r31->unk_74); + } + HuPrcVSleep(); + } + var_r31->unk_90 = 180.0f; + Hu3DModelRotSet(var_r31->unk_12, var_r31->unk_6C, var_r31->unk_70 + var_r31->unk_90, var_r31->unk_74); + CharModelMotionSpeedSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], 1.0f); + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r31 = &lbl_1_bss_F0[var_r30]; + CharModelMotionShiftSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], var_r31->unk_14[1], 0.0f, 5.0f, 0); + } + HuPrcSleep(5); + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r31 = &lbl_1_bss_F0[var_r30]; + Hu3DModelAttrSet(var_r31->unk_12, 1073741826); + } + HuPrcChildCreate(fn_1_397C, 4096, 8192, 0, HuPrcCurrentGet()); + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r28 = &lbl_1_bss_F0[var_r30]; + var_r27 = HuPrcChildCreate(fn_1_76F4, 8192, 8192, 0, HuPrcCurrentGet()); + var_r27->user_data = var_r28; + HuSprAttrReset(var_r28->unk_2C, 0, 4); + } + for (var_r29 = 0, var_f27 = 0.0f; var_r29 < 15; var_r29++) { + var_f27 += 0.06666667f; + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r28 = &lbl_1_bss_F0[var_r30]; + HuSprScaleSet(var_r28->unk_2C, 0, var_f27, var_f27); + } + HuPrcVSleep(); + } +} + +void fn_1_7FC8(s32 arg0) +{ + float var_f31; + float var_f30; + float var_f29; + float var_f28; + + UnkM414BssF0Struct *var_r31; + UnkM414BssF0Struct *var_r30; + s32 var_r29; + s32 var_r28; + s32 var_r27; + + if (arg0 != -1) { + for (var_r28 = 0, var_r29 = 0; var_r28 < 16; var_r28++) { + if (lbl_1_bss_978 == lbl_1_bss_938[var_r28]) { + var_r30 = &lbl_1_bss_F0[arg0]; + switch (var_r29) { + case 0: + var_f30 = 35.0f + var_r30->unk_70; + var_f28 = 240.0f; + break; + case 1: + var_f30 = var_r30->unk_70 - 35.0f; + var_f28 = 240.0f; + break; + default: + var_f30 = var_r30->unk_70; + var_f28 = 240.0f; + break; + } + Hu3DMotionSet(var_r30->unk_94[var_r28], var_r30->unk_B4[var_r28]); + var_f31 = 0.0f; + if (!lbl_1_bss_938[var_r28]) { + var_f31 += 70.0f; + } + Hu3DModelPosSet(var_r30->unk_94[var_r28], (2000.0f * (arg0 % 2) + (250.0 * sind(var_f30))), var_f31, + (2000.0f * (arg0 / 2)) + (250.0 * cosd(var_f30))); + Hu3DModelRotSet(var_r30->unk_94[var_r28], var_r30->unk_6C, var_r30->unk_70, var_r30->unk_74); + if (lbl_1_bss_978 == 2) { + Hu3DModelScaleSet(var_r30->unk_94[var_r28], 1.0f, 1.0f, 1.0f); + } + Hu3DModelAttrReset(var_r30->unk_94[var_r28], 1); + Hu3DModelShadowSet(var_r30->unk_94[var_r28]); + if (var_r29++ >= 2) { + break; + } + } + } + } + for (var_r27 = 0; var_r27 < 4; var_r27++) { + var_r30 = &lbl_1_bss_F0[var_r27]; + var_f31 = 40.0f + lbl_1_bss_920[var_r30->unk_44]; + if (var_f31 >= 360.0f) { + var_f31 -= 360.0f; + } + var_r29 = 2.0f + (lbl_1_bss_920[var_r30->unk_44] / 40.0f); + if (var_r29 >= 9) { + var_r29 -= 9; + } + for (var_r28 = 0; var_r28 < 6; var_r28++) { + Hu3DModelAttrSet(var_r30->unk_30[var_r29], 1); + var_r29++; + if (var_r29 >= 9) { + var_r29 = 0; + } + } + Hu3DModelAttrReset(var_r30->unk_42, 1); + Hu3DModelRotSet(var_r30->unk_42, 0.0f, lbl_1_bss_920[var_r30->unk_44], 0.0f); + } + for (var_r28 = 0; var_r28 < 30; var_r28++) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + lbl_1_bss_64[var_r29].y -= 7.6666665f; + } + HuPrcVSleep(); + } + HuAudFXPlay(lbl_1_data_8C[lbl_1_bss_978]); + for (var_r29 = 0; var_r29 < 4; var_r29++) { + var_r31 = &lbl_1_bss_F0[var_r29]; + CharModelMotionShiftSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], var_r31->unk_14[0], 0.0f, 5.0f, 0x40000001); + } + HuPrcSleep(5); + for (var_r29 = 0; var_r29 < 4; var_r29++) { + var_r31 = &lbl_1_bss_F0[var_r29]; + CharModelMotionSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], var_r31->unk_14[5]); + Hu3DModelAttrReset(var_r31->unk_12, 0x40000001); + CharModelMotionTimeSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], 61.0f); + CharModelMotionSpeedSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], 2.0f); + } + for (var_f29 = 37.0f, var_r28 = 0; var_r28 < 30; var_r28++, var_f29 += 1.6666666f) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + var_r31 = &lbl_1_bss_F0[var_r29]; + var_r31->unk_90 += 6.0f; + Hu3DModelRotSet(var_r31->unk_12, var_r31->unk_6C, var_r31->unk_70 + var_r31->unk_90, var_r31->unk_74); + var_r31->unk_60 = var_f29 * sind(var_r31->unk_70); + var_r31->unk_68 = var_f29 * cosd(var_r31->unk_70); + Hu3DModelPosSet(var_r31->unk_12, var_r31->unk_60 + (2000.0f * (var_r31->unk_44 % 2)), var_r31->unk_64, + var_r31->unk_68 + (2000.0f * (var_r31->unk_44 / 2))); + } + HuPrcVSleep(); + } + var_r31->unk_90 = 0.0f; + Hu3DModelRotSet(var_r31->unk_12, var_r31->unk_6C, var_r31->unk_70 + var_r31->unk_90, var_r31->unk_74); + CharModelMotionSpeedSet(lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], 1.0f); + for (var_r29 = 0; var_r29 < 4; var_r29++) { + var_r31 = &lbl_1_bss_F0[var_r29]; + CharModelMotionShiftSet( + lbl_1_data_30[GWPlayerCfg[var_r31->unk_44].character], var_r31->unk_14[var_r31->unk_44 == arg0 ? 3 : 4], 0.0f, 5.0f, 0); + } +} + +void fn_1_88D4(void) +{ + UnkM414BssF0Struct *var_r31; + + var_r31 = HuPrcCurrentGet()->user_data; + while (TRUE) { + if (var_r31->unk_1F4 == 4 || var_r31->unk_1F4 == 5 || var_r31->unk_58) { + HuPrcVSleep(); + } else { + break; + } + } + HuPrcCurrentGet()->user_data = NULL; + HuPrcKill(lbl_1_bss_E0[var_r31->unk_44]); + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_894C(void) +{ + Process *sp8[4]; + + s32 var_r31; + s32 var_r30; + + for (var_r31 = 0; var_r31 < 4; var_r31++) { + sp8[var_r31] = HuPrcChildCreate(fn_1_88D4, 8192, 8192, 0, HuPrcCurrentGet()); + sp8[var_r31]->user_data = &lbl_1_bss_F0[var_r31]; + } + while (TRUE) { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (sp8[var_r31]->user_data) { + break; + } + } + if (var_r31 < 4) { + HuPrcVSleep(); + } else { + break; + } + } + HuPrcCurrentGet()->user_data = NULL; + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_8A10(void) +{ + while (TRUE) { + if (omSysExitReq == 1) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuAudFadeOut(1000); + HuPrcSleep(60); + MGSeqKillAll(); + omOvlReturnEx(1, 1); + while (TRUE) { + HuPrcVSleep(); + } + } + HuPrcVSleep(); + } +} + +void fn_1_8A70(void) +{ + float var_f31; + + s32 var_r31; + s32 var_r30; + s32 var_r29; + s16 var_r28; + s16 var_r27; + s32 var_r26; + Process *var_r25; + s16 var_r24; + UnkM414BssF0Struct *var_r23; + s32 var_r22; + UnkM414BssF0Struct *var_r21; + + lbl_1_bss_98C = 0; + HuPrcSleep(1.0f + wipeData.duration); + fn_1_79A8(); + HuPrcSleep(30); + lbl_1_bss_98C = 1; + + while (lbl_1_bss_98C == 1) { + HuPrcVSleep(); + } + + var_r22 = HuAudSeqPlay(72); + var_r28 = MGSeqCreate(3, 0); + while (MGSeqStatGet(var_r28)) { + HuPrcVSleep(); + } + var_r27 = 3659; + var_r24 = MGSeqCreate(1, var_r27 / 60, -1, -1); + lbl_1_bss_98C = 3; + while (TRUE) { + for (var_r31 = 0, var_r30 = 0; var_r31 < 4; var_r31++) { + var_r21 = &lbl_1_bss_F0[var_r31]; + if (lbl_1_bss_97C[var_r31] >= 3) { + var_r30++; + var_r29 = var_r31; + } + } + if (var_r30 > 0) { + break; + } + if (var_r27 < 59) { + var_r29 = -1; + break; + } + MGSeqParamSet(var_r24, 1, var_r27-- / 60); + HuPrcVSleep(); + } + lbl_1_bss_98C = 4; + HuAudSeqFadeOut(var_r22, 100); + MGSeqParamSet(var_r24, 2, -1); + var_r28 = MGSeqCreate(3, 1); + var_r25 = HuPrcChildCreate(fn_1_894C, 8192, 8192, 0, HuPrcCurrentGet()); + var_r25->user_data = (void *)1; + + while (var_r25->user_data) { + HuPrcVSleep(); + } + for (var_r31 = 0, var_r30 = 0; var_r31 < 4; var_r31++) { + var_r21 = &lbl_1_bss_F0[var_r31]; + if (lbl_1_bss_97C[var_r31] >= 3) { + var_r30++; + var_r29 = var_r31; + } + } + + while (MGSeqStatGet(var_r28)) { + HuPrcVSleep(); + } + lbl_1_bss_98C = 5; + HuPrcChildCreate(fn_1_3A58, 4096, 8192, 0, HuPrcCurrentGet()); + for (var_r31 = 0, var_f31 = 1.0f; var_r31 < 15; var_r31++) { + for (var_f31 -= 0.06666667f, var_r26 = 0; var_r26 < 4; var_r26++) { + var_r23 = &lbl_1_bss_F0[var_r26]; + HuSprScaleSet(var_r23->unk_2C, 0, var_f31, var_f31); + } + HuPrcVSleep(); + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + HuSprAttrSet(lbl_1_bss_F0[var_r31].unk_2C, 0, 4); + } + HuPrcSleep(15); + fn_1_7FC8(var_r29); + if (var_r29 != -1) { + HuAudSStreamPlay(1); + GWPlayerCoinWinSet(var_r29, 10); + var_r28 = MGSeqCreate(5, 3, GWPlayerCfg[var_r29].character, -1, -1, -1); + } else { + HuAudSStreamPlay(4); + var_r28 = MGSeqCreate(3, 2); + } + HuPrcSleep(210); + WipeCreate(2, 0, 60); + HuPrcSleep(60); + HuAudFadeOut(1); + MGSeqKillAll(); + omOvlReturnEx(1, 1); + while (TRUE) { + HuPrcVSleep(); + } +} diff --git a/src/REL/m416Dll/main.c b/src/REL/m416Dll/main.c new file mode 100644 index 00000000..689f8bf5 --- /dev/null +++ b/src/REL/m416Dll/main.c @@ -0,0 +1,1843 @@ +#include "game/object.h" +#include "game/objsub.h" +#include "game/hsfman.h" +#include "game/hsfanim.h" +#include "game/hsfmotion.h" +#include "game/audio.h" +#include "game/wipe.h" +#include "game/sprite.h" +#include "game/chrman.h" +#include "game/pad.h" +#include "game/gamework_data.h" +#include "game/minigame_seq.h" +#include "game/frand.h" + +#include "math.h" +#include "ext_math.h" + + +#include "REL/m416Dll.h" + +#include "rel_sqrt_consts.h" + +typedef struct camera_view_params { + float zoom; + Vec pos; + Vec rot; +} CameraViewParams; + +CameraViewParams lbl_1_data_0[2] = { + { 1676.6, { 0, 172, 123 }, { -18, 0, 0 } }, + { 1200, { 0, 0, -600 }, { -24, 0, 0 } } +}; + +GXColor lbl_1_data_38 = { 255, 255, 255, 255 }; +GXColor lbl_1_data_3C = { 255, 160, 96, 255 }; + +typedef struct struct_bss_14 { + float unk0; + float unk4; + u8 unk8; + float unkC; +} StructBss14; + +s32 lbl_1_bss_960; +s16 lbl_1_bss_95C; +omObjData *lbl_1_bss_958; +omObjData *lbl_1_bss_954; +omObjData *lbl_1_bss_950; +omObjData *lbl_1_bss_930[2][4]; +s16 lbl_1_bss_92E; +s16 lbl_1_bss_92A[2]; +s16 lbl_1_bss_928; +s16 lbl_1_bss_926; +s16 lbl_1_bss_924; +float lbl_1_bss_920; +s16 lbl_1_bss_91A[2]; +s16 lbl_1_bss_918; +AnimData *lbl_1_bss_914; +StructBss14 lbl_1_bss_14[12][12]; +s16 lbl_1_bss_12; +s16 lbl_1_bss_10; +s32 lbl_1_bss_4[3]; +s32 lbl_1_bss_0; + +void fn_1_458(omObjData *object); +void fn_1_4FC(omObjData *object); + +void fn_1_1260(Process *objman); +void fn_1_6E5C(omObjData *object); + +void ModuleProlog(void) +{ + Process *objman; + Vec pos; + Vec up; + Vec target; + OSReport("******* M416ObjectSetup *********\n"); + objman = omInitObjMan(50, 8192); + omGameSysInit(objman); + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 30, 20, 25000, 1.2); + Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); + lbl_1_bss_950 = omAddObjEx(objman, 32730, 0, 0, -1, omOutView); + lbl_1_bss_958 = omAddObjEx(objman, 0, 0, 0, -1, fn_1_458); + fn_1_1260(objman); + lbl_1_bss_954 = omAddObjEx(objman, 10, 0, 0, -1, fn_1_6E5C); + pos.x = 0; + pos.y = 3000; + pos.z = 1; + up.x = 0; + up.y = 1; + up.z = 0; + target.x = 0; + target.y = 0; + target.z = 0; + Hu3DShadowCreate(30, 20, 25000); + Hu3DShadowTPLvlSet(0.9f); + Hu3DShadowPosSet(&pos, &up, &target); + Hu3DLightAllKill(); + lbl_1_bss_91A[0] = Hu3DGLightCreate(-700, 1200, 700, 0, -0.5, -1, lbl_1_data_38.r, lbl_1_data_38.g, lbl_1_data_38.b); + Hu3DGLightStaticSet(lbl_1_bss_91A[0], 1); + Hu3DGLightInfinitytSet(lbl_1_bss_91A[0]); + lbl_1_bss_91A[1] = Hu3DGLightCreate(0, 0, 0, 0, 0, 0, 0, 0, 0); + Hu3DGLightStaticSet(lbl_1_bss_91A[1], 1); + Hu3DGLightPointSet(lbl_1_bss_91A[1], 0, 0, 3); + lbl_1_bss_918 = 0; + HuAudSndGrpSet(41); + Hu3DBGColorSet(0, 0, 0); + fn_1_79D0(objman); +} + +void fn_1_458(omObjData *object) +{ + lbl_1_bss_928 = 30; + lbl_1_bss_926 = 60; + fn_1_1250(0); + lbl_1_bss_924 = -1; + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + lbl_1_bss_920 = 1; + fn_1_8FF4(1); + object->func = fn_1_4FC; +} + +typedef struct bss_930_work_4c { + u8 field_0_bit0 : 1; + float unk4; + float unk8; + float unkC; + s16 unk10; +} Bss930Work4C; + +typedef struct bss_930_work { + u8 field_0_bit0 : 1; + u8 field_0_bit1 : 1; + u8 field_0_bit2 : 1; + u8 field_0_bit3 : 1; + u8 field_0_bit4 : 1; + s16 unk02; + s16 unk04; + s8 unk06; + s8 unk07; + u16 unk08; + u16 unk0A; + s16 unk0C; + s16 unk0E; + s16 unk10; + s16 unk12; + s16 unk14; + float unk18; + Vec unk1C; + s32 unk28; + s32 unk2C; + u32 unk30; + u32 unk34; + float unk38; + u32 unk3C; + s16 unk40; + s16 unk42; + s16 unk44; + s16 unk46; + omObjFunc unk48; + Bss930Work4C *unk4C; + s16 unk50; + Vec unk54; + s16 unk60; + Vec unk64; + s16 unk70; + Vec unk74; + float unk80; + float unk84; +} Bss930Work; + +s32 lbl_1_data_64 = -1; + +void fn_1_11E8(omObjData *object); +s32 fn_1_14E8(void); +void fn_1_52BC(void); + +void fn_1_4FC(omObjData *object) +{ + Bss930Work *temp_r31; + s32 temp_r30; + s16 temp_r29; + Vec sp1C; + Vec sp10; + s16 sp8[4]; + + switch(fn_1_1240()) { + case 0: + if(!WipeStatGet()) { + HuAudFXPlay(1471); + fn_1_1250(1); + lbl_1_bss_95C = 30; + } + break; + + case 1: + if(--lbl_1_bss_95C == 0) { + fn_1_1250(2); + lbl_1_bss_95C = 84; + } + break; + + case 2: + if(lbl_1_bss_95C) { + if(--lbl_1_bss_95C == 0) { + HuAudFXPlay(1470); + } + } else { + if(lbl_1_bss_920 > 0) { + lbl_1_bss_920 -= 0.020000001f; + if(lbl_1_bss_920 < 0) { + lbl_1_bss_920 = 0; + } + Hu3DGLightColorSet(lbl_1_bss_91A[0], lbl_1_data_38.r*lbl_1_bss_920, lbl_1_data_38.g*lbl_1_bss_920, lbl_1_data_38.b*lbl_1_bss_920, 255); + } + if(lbl_1_bss_920 < 0.1f) { + if(lbl_1_bss_0 == 0) { + temp_r31 = lbl_1_bss_930[0][0]->data; + HuAudCharVoicePlay(temp_r31->unk0C, 296); + lbl_1_bss_0 = 1; + } + } + if(lbl_1_bss_920 <= 0.0f) { + fn_1_1250(3); + lbl_1_bss_95C = 60; + } + } + break; + + case 3: + if(--lbl_1_bss_95C == 0) { + fn_1_1250(4); + lbl_1_bss_95C = 60; + Hu3DGLightColorSet(lbl_1_bss_91A[1], lbl_1_data_3C.r, lbl_1_data_3C.g, lbl_1_data_3C.b, lbl_1_data_3C.a); + fn_1_8FF4(0.0625f); + Hu3DShadowData.unk_08.x = 135; + MTXLightPerspective(Hu3DShadowData.unk_68, Hu3DShadowData.unk_08.x, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); + lbl_1_bss_918 = 1; + HuAudFXEmiterPlay(1464, &lbl_1_bss_930[0][0]->trans); + } + break; + + case 4: + if(--lbl_1_bss_95C == 0) { + fn_1_1250(5); + lbl_1_bss_12 = MGSeqStartCreate(); + } + break; + + case 5: + if(MGSeqStatGet(lbl_1_bss_12) == 0) { + lbl_1_bss_10 = MGSeqTimerCreate(30); + fn_1_1250(6); + } + if(lbl_1_data_64 < 0 && (MGSeqStatGet(lbl_1_bss_12) & 0x10)) { + lbl_1_data_64 = HuAudSeqPlay(73); + } + break; + + case 6: + if(--lbl_1_bss_926 == 0) { + lbl_1_bss_928--; + MGSeqParamSet(lbl_1_bss_10, 1, lbl_1_bss_928); + lbl_1_bss_926 = 60; + } + if(lbl_1_bss_928 == 0 || lbl_1_bss_924 >= 0) { + lbl_1_bss_12 = MGSeqFinishCreate(); + fn_1_1250(7); + HuAudSeqAllFadeOut(100); + } + break; + + case 7: + if(lbl_1_bss_10 >= 0) { + MGSeqParamSet(lbl_1_bss_10, 2, -1); + lbl_1_bss_10 = -1; + } + if(MGSeqStatGet(lbl_1_bss_12) == 0) { + lbl_1_bss_95C = 60; + fn_1_1250(8); + } + break; + + case 8: + if(lbl_1_bss_95C) { + if(--lbl_1_bss_95C == 0) { + Hu3DShadowData.unk_08.x = 30; + MTXLightPerspective(Hu3DShadowData.unk_68, Hu3DShadowData.unk_08.x, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f); + lbl_1_bss_918 = 0; + sp1C.x = 0; + sp1C.y = 3000; + sp1C.z = 1; + sp10.x = 0; + sp10.y = 0; + sp10.z = 0; + Hu3DShadowPosSet(&sp1C, &Hu3DShadowData.unk_2C, &sp10); + HuAudFXPlay(1470); + } + } else { + lbl_1_bss_920 += 0.020000001f; + if(lbl_1_bss_920 >= 1.0f) { + lbl_1_bss_920 = 1.0f; + fn_1_1250(9); + lbl_1_bss_95C = 60; + fn_1_52BC(); + } + fn_1_8FF4(lbl_1_bss_920); + Hu3DGLightColorSet(lbl_1_bss_91A[0], lbl_1_data_38.r*lbl_1_bss_920, lbl_1_data_38.g*lbl_1_bss_920, lbl_1_data_38.b*lbl_1_bss_920, 255); + if(lbl_1_bss_91A[1] >= 0) { + Hu3DGLightColorSet(lbl_1_bss_91A[1], lbl_1_data_3C.r*(1.0f-lbl_1_bss_920), lbl_1_data_3C.g*(1.0f-lbl_1_bss_920), lbl_1_data_3C.b*(1.0f-lbl_1_bss_920), lbl_1_data_3C.a*(1.0f-lbl_1_bss_920)); + } + } + break; + + case 9: + if(fn_1_14E8()) { + if(--lbl_1_bss_95C == 0) { + fn_1_1250(10); + lbl_1_bss_95C = 210; + for(temp_r30=0; temp_r30<4; temp_r30++) { + sp8[temp_r30] = -1; + } + temp_r29 = 0; + if(lbl_1_bss_924 < 0) { + temp_r31 = lbl_1_bss_930[0][0]->data; + sp8[temp_r29++] = temp_r31->unk0C; + GWPlayerCoinWinSet(temp_r31->unk02, 10); + } else { + for(temp_r30=0; temp_r30<3; temp_r30++) { + temp_r31 = lbl_1_bss_930[1][temp_r30]->data; + sp8[temp_r29++] = temp_r31->unk0C; + GWPlayerCoinWinSet(temp_r31->unk02, 10); + } + } + lbl_1_bss_12 = MGSeqWinCreate(sp8[0], sp8[1], sp8[2], sp8[3]); + HuAudSStreamPlay(1); + } + } + break; + + case 10: + if(--lbl_1_bss_95C == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_11E8; + } + break; + } + if(omSysExitReq && !WipeStatGet()) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_11E8; + } + fn_1_8F60(lbl_1_bss_920); +} + +void fn_1_11E8(omObjData *object) +{ + if(!WipeStatGet()) { + MGSeqKillAll(); + HuAudFadeOut(1); + fn_1_7A54(); + omOvlReturnEx(1, 1); + OSReport("******* M416Exit *********\n"); + } +} + +s32 fn_1_1240(void) +{ + return lbl_1_bss_960; +} + +void fn_1_1250(s32 arg0) +{ + lbl_1_bss_960 = arg0; +} + +void fn_1_156C(omObjData *object); +void fn_1_2930(omObjData *object); + +void fn_1_1260(Process *objman) +{ + s32 i; + s32 j; + + lbl_1_bss_92E = 0; + lbl_1_bss_92A[0] = lbl_1_bss_92A[1] = 0; + omMakeGroupEx(objman, 0, 4); + for(i=0; i<4; i++) { + omAddObjEx(objman, 5, 5, 50, 0, fn_1_156C); + } + lbl_1_bss_914 = HuSprAnimReadFile(0x2F0005); + memset(lbl_1_bss_14, 0, sizeof(lbl_1_bss_14)); + for(i=0; i<10; i++) { + for(j=0; j<10; j++) { + lbl_1_bss_14[i+1][j+1].unk0 = ((0.5f+(j-5))*1100)/9; + lbl_1_bss_14[i+1][j+1].unk4 = ((0.5f+(i-5))*1100)/9; + } + } + omAddObjEx(objman, 6, 0, 0, -1, fn_1_2930); +} + +void fn_1_5D18(omObjData *object); + +void fn_1_1480(void) +{ + s32 i; + omObjData **group; + group = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + if(group == NULL) { + return; + } + for(i=0; i<4; i++) { + fn_1_5D18(group[i]); + } +} + +s32 fn_1_14E8(void) +{ + s32 i; + omObjData **group; + group = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + for(i=0; i<4; i++) { + Bss930Work *work = group[i]->data; + if(!work->field_0_bit3) { + return 0; + } + } + return 1; +} + +void fn_1_1964(omObjData *object); +void fn_1_1ADC(omObjData *object); +void fn_1_1D84(omObjData *object); + +void fn_1_6AE8(ModelData *model, ParticleData *particle, Mtx matrix); + +float lbl_1_data_B0[4][4] = { + 0, 0, -400, 0, + -340, 0, 200, 155, + 0, 0, 400, 180, + 340, 0, 200, 205 +}; + +void fn_1_156C(omObjData *object) +{ + Bss930Work *work; + s32 player; + work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Bss930Work), MEMORY_DEFAULT_NUM); + object->data = work; + memset(work, 0, sizeof(Bss930Work)); + work->unk02 = lbl_1_bss_92E++; + work->unk04 = GWPlayerCfg[work->unk02].pad_idx; + work->unk0C = GWPlayerCfg[work->unk02].character; + work->unk0E = GWPlayerCfg[work->unk02].diff; + work->unk10 = GWPlayerCfg[work->unk02].group; + object->model[0] = CharModelCreate(work->unk0C, 4); + Hu3DModelAttrSet(object->model[0], 0x40000001); + Hu3DModelShadowSet(object->model[0]); + work->field_0_bit2 = 1; + work->field_0_bit4 = 1; + work->unk28 = 0; + work->unk2C = -1; + work->unk34 = 0; + work->unk38 = 50; + if(!work->unk10) { + fn_1_1964(object); + lbl_1_bss_930[0][lbl_1_bss_92A[0]] = object; + player = lbl_1_bss_92A[0]; + work->unk12 = lbl_1_bss_92A[0]; + lbl_1_bss_92A[0]++; + } else { + fn_1_1ADC(object); + lbl_1_bss_930[1][lbl_1_bss_92A[1]] = object; + player = lbl_1_bss_92A[1]+1; + work->unk12 = lbl_1_bss_92A[1]; + lbl_1_bss_92A[1]++; + } + Hu3DModelHookSet(object->model[0], "test11_tex_we-itemhook-r", object->model[1]); + Hu3DModelShadowSet(object->model[1]); + Hu3DModelLayerSet(object->model[0], 3); + Hu3DModelLayerSet(object->model[1], 3); + fn_1_8EB4(object->model[0]); + fn_1_8EB4(object->model[1]); + Hu3DMotionSet(object->model[0], object->motion[0]); + Hu3DModelAttrSet(object->model[0], 0x40000001); + CharModelMotionIndexSet(work->unk0C, object->motion[1], 0x5F0002); + CharModelMotionIndexSet(work->unk0C, object->motion[2], 0x5F0002); + CharModelMotionDataClose(work->unk0C); + object->model[4] = Hu3DParticleCreate(lbl_1_bss_914, 2); + Hu3DParticleHookSet(object->model[4], fn_1_6AE8); + Hu3DParticleBlendModeSet(object->model[4], 1); + Hu3DModelLayerSet(object->model[4], 6); + Hu3DModelAttrSet(object->model[4], 1); + object->trans.x = lbl_1_data_B0[player][0]; + object->trans.y = lbl_1_data_B0[player][1]; + object->trans.z = lbl_1_data_B0[player][2]; + object->rot.y = lbl_1_data_B0[player][3]; + object->rot.x = object->rot.z = 0; + object->scale.x = object->scale.y = object->scale.z = 1; + work->unk84 = object->rot.y; + object->func = fn_1_1D84; +} + +u32 lbl_1_data_10C[9][2] = { + 0x002F0008, 1, + 0x002F0010, 1, + 0x002F0018, 1, + 0x002F0020, 1, + 0, 0, + 0x005F0000, 0, + 0x005F0017, 0, + 0x005F0018, 0, + 0x005F0002, 0 +}; + +void fn_1_29DC(omObjData *object); + + + + +void fn_1_1964(omObjData *object) +{ + Bss930Work *work; + s32 i; + work = object->data; + for(i=0; i<9; i++) { + if(!lbl_1_data_10C[i][1]) { + object->motion[i] = CharModelMotionCreate(work->unk0C, lbl_1_data_10C[i][0]); + } else { + object->motion[i] = CharModelMotionCreate(work->unk0C, work->unk0C+lbl_1_data_10C[i][0]); + } + } + object->model[1] = Hu3DModelCreateFile(0x2F0003); + object->model[2] = Hu3DParticleCreate(HuSprAnimReadFile(0x2F0006), 100); + Hu3DParticleHookSet(object->model[2], fn_1_613C); + Hu3DParticleBlendModeSet(object->model[2], 1); + Hu3DModelLayerSet(object->model[2], 6); + Hu3DModelAttrSet(object->model[2], 2); + Hu3DModelAttrSet(object->model[2], 1); + work->unk44 = 5; + work->unk48 = fn_1_29DC; +} + +void fn_1_2EA4(omObjData *object); +void fn_1_6640(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_6DEC(s16 arg0, u32 arg1); + +s32 lbl_1_data_154[9] = { + 0x005F0030, + 0x005F0031, + 0x005F0032, + 0x005F002D, + 0x005F002E, + 0x005F0000, + 0x005F0017, + 0x005F0018, + 0x005F0002 +}; + + +void fn_1_1ADC(omObjData *object) +{ + Bss930Work *work; + s32 i; + work = object->data; + for(i=0; i<9; i++) { + object->motion[i] = CharModelMotionCreate(work->unk0C, lbl_1_data_154[i]); + } + object->model[1] = Hu3DModelCreateFile(0x2F0004); + object->model[2] = Hu3DModelCreateFile(0x2F0002); + Hu3DModelLayerSet(object->model[2], 3); + fn_1_6DEC(object->model[2], 16); + Hu3DModelAttrSet(object->model[2], 1); + Hu3DMotionSpeedSet(object->model[2], 0); + Hu3DAnimCreate(HuDataReadNum(0x2F0007, MEMORY_DEFAULT_NUM), object->model[2], "sb00"); + object->model[3] = Hu3DParticleCreate(lbl_1_bss_914, 50); + Hu3DParticleHookSet(object->model[3], fn_1_6640); + Hu3DModelLayerSet(object->model[3], 3); + Hu3DModelAttrSet(object->model[3], 1); + work->unk4C = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Bss930Work4C), MEMORY_DEFAULT_NUM); + memset(work->unk4C, 0, sizeof(Bss930Work4C)); + + work->unk48 = fn_1_2EA4; +} + +float fn_1_1C80(float arg1, float arg2, float arg3) +{ + float temp_f31; + float temp_f30; + temp_f31 = fmod(arg2-arg1, 360); + if(temp_f31 < 0.0f) { + temp_f31 += 360.0f; + } + if(temp_f31 > 180.0f) { + temp_f31 -= 360.0f; + } + temp_f30 = fmod(arg1+(arg3*temp_f31), 360); + if(temp_f30 < 0.0f) { + temp_f30 += 360.0f; + } + return temp_f30; +} + +void fn_1_389C(omObjData *object); +s32 fn_1_5530(omObjData *arg0, Vec *arg1, Vec *arg2); + +void fn_1_1D84(omObjData *object) +{ + float temp_f31; + float temp_f30; + float temp_f28; + float temp_f27; + float temp_f23; + Bss930Work *temp_r31; + s32 temp_r29; + u32 temp_r28; + s32 temp_r27; + Vec sp40; + Vec sp34; + temp_r31 = object->data; + temp_r29 = temp_r31->unk28; + temp_r28 = temp_r31->unk30; + switch(temp_r31->unk14) { + case 0: + if(fn_1_1240() >= 6) { + if(fn_1_1240() == 7) { + temp_r31->unk14 = 1; + temp_r31->unk40 = 60; + temp_r31->unk08 = temp_r31->unk0A = 0; + temp_r31->unk06 = temp_r31->unk07 = 0; + } else { + if(!GWPlayerCfg[temp_r31->unk02].iscom) { + temp_r31->unk06 = HuPadStkX[temp_r31->unk04]; + temp_r31->unk07 = HuPadStkY[temp_r31->unk04]; + temp_r31->unk08 = HuPadBtn[temp_r31->unk04]; + temp_r31->unk0A = HuPadBtnDown[temp_r31->unk04]; + } else { + temp_r31->unk08 = temp_r31->unk0A = 0; + temp_r31->unk06 = temp_r31->unk07 = 0; + fn_1_389C(object); + } + temp_f31 = temp_r31->unk06; + temp_f30 = -(float)temp_r31->unk07; + if(temp_r31->field_0_bit1) { + temp_f31 = temp_f30 = 0; + } + temp_f28 = sqrtf((temp_f31*temp_f31)+(temp_f30*temp_f30)); + if(temp_f28 > 0) { + temp_f31 /= temp_f28; + temp_f30 /= temp_f28; + if(temp_f28 > 72) { + temp_f28 = 72; + } + temp_r31->unk18 = (10*temp_f28)/72; + temp_r31->unk1C.x = temp_f31*temp_r31->unk18; + temp_r31->unk1C.z = temp_f30*temp_r31->unk18; + object->rot.y = fn_1_1C80(object->rot.y, atan2d(temp_r31->unk1C.x, temp_r31->unk1C.z), 0.4f); + if(temp_r31->unk18 < 7.5f) { + temp_r29 = 1; + } else { + temp_r29 = 2; + } + temp_r28 = 0x40000001; + } else { + temp_r31->unk1C.x = temp_r31->unk1C.z = 0; + temp_r29 = 0; + temp_r28 = 0x40000001; + } + object->trans.x += temp_r31->unk1C.x; + object->trans.z += temp_r31->unk1C.z; + } + } + break; + + case 1: + if(fn_1_1240() == 9) { + if(--temp_r31->unk40 == 0){ + temp_r31->unk14 = 2; + temp_r31->unk40 = 300; + temp_r31->unk2C = -1; + } + } + if(!temp_r31->field_0_bit2) { + temp_r29 = 5; + } else { + temp_r29 = 0; + } + temp_r28 = 0x40000001; + break; + + case 2: + if(fn_1_1240() == 10) { + temp_r31->unk14 = 3; + } else { + VECSubtract(&temp_r31->unk64, &object->trans, &sp34); + temp_f28 = VECMag(&sp34); + if(temp_f28 < 20 || temp_r31->unk40 == 0) { + temp_r29 = 5; + temp_r28 = 0x40000001; + object->rot.y = fn_1_1C80(object->rot.y, 0, 0.2f); + temp_r31->field_0_bit3 = 1; + } else { + if(!temp_r31->field_0_bit3) { + temp_r27 = fn_1_5530(object, &temp_r31->unk64, &sp40); + } else { + sp40.x = temp_r31->unk64.x; + sp40.y = temp_r31->unk64.y; + sp40.z = temp_r31->unk64.z; + temp_r27 = 0; + } + VECSubtract(&sp40, &object->trans, &sp34); + object->rot.y = fn_1_1C80(object->rot.y, atan2d(sp34.x, sp34.z), 0.2f); + if(!temp_r27) { + if(temp_f28 < 100.0f) { + temp_f23 = 7.5f*(temp_f28/100.0f); + } else { + temp_f23 = 7.5f; + } + } else { + temp_f23 = 3.75f; + } + temp_r31->unk1C.x = temp_f23*sind(object->rot.y); + temp_r31->unk1C.z = temp_f23*cosd(object->rot.y); + object->trans.x += temp_r31->unk1C.x; + object->trans.z += temp_r31->unk1C.z; + temp_r29 = 8; + temp_r28 = 0x40000001; + + } + if(temp_r31->unk40) { + temp_r31->unk40--; + } + } + break; + + case 3: + if(fn_1_1240() < 10) { + temp_r29 = 0; + temp_r28 = 0x40000001; + } else { + if((!temp_r31->unk10 && lbl_1_bss_924 < 0) || (temp_r31->unk10 && lbl_1_bss_924 >= 0)) { + temp_r29 = 6; + } else { + temp_r29 = 7; + } + temp_r28 = 0; + object->rot.y = fn_1_1C80(object->rot.y, 0, 0.2f); + Hu3DModelAttrReset(object->model[0], 0x40000001); + } + break; + } + if(temp_r31->unk2C >= 0) { + temp_r29 = temp_r31->unk2C; + temp_r28 = temp_r31->unk34; + } + if((temp_r29 >= 0 && temp_r29 != temp_r31->unk28) || temp_r28 != temp_r31->unk30) { + temp_r31->unk28 = temp_r29; + temp_r31->unk30 = temp_r28; + CharModelMotionShiftSet(temp_r31->unk0C, object->motion[temp_r31->unk28], 0, 8, temp_r28); + } +} + +void fn_1_5004(void); + +void fn_1_361C(omObjData *object); + +void fn_1_2930(omObjData *object) +{ + Bss930Work *temp_r31; + s32 temp_r30; + omObjData *temp_r29; + omObjData **temp_r28; + temp_r28 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + fn_1_5004(); + for(temp_r30=0; temp_r30<4; temp_r30++) { + temp_r29 = temp_r28[temp_r30]; + temp_r31 = temp_r29->data; + if(temp_r31->unk48 != NULL) { + temp_r31->unk48(temp_r29); + } + if(temp_r31->field_0_bit4) { + fn_1_361C(temp_r29); + } + } +} + +float lbl_1_data_180[6] = { + 0, + 0.3, + 0.7, + 1.0, + 1.3, + 1.6 +}; + +float lbl_1_data_198[6][2] = { + 100.0f, 0.75f, + 110.0f, 0.8f, + 120.000008f, 0.85f, + 130.0f, 0.9f, + 140.0f, 0.95f, + 150.0f, 0.99f +}; + +void fn_1_29DC(omObjData *object) +{ + Mtx sp50; + Mtx sp20; + Vec sp14; + Vec sp8; + Bss930Work *temp_r31; + ModelData *temp_r29; + temp_r31 = object->data; + if(temp_r31->unk44 > 0 && temp_r31->field_0_bit0) { + if(--temp_r31->unk44 == 0) { + lbl_1_bss_924 = 1; + Hu3DGLightKill(lbl_1_bss_91A[1]); + lbl_1_bss_91A[1] = -1; + Hu3DModelAttrSet(object->model[2], 1); + HuAudFXEmiterPlay(1469, &object->trans); + HuAudCharVoicePlay(temp_r31->unk0C, 291); + } else { + HuAudFXEmiterPlay(1466, &object->trans); + HuAudCharVoicePlay(temp_r31->unk0C, 296); + } + temp_r31->field_0_bit0 = 0; + temp_r31->field_0_bit1 = 1; + temp_r31->unk2C = 3; + temp_r31->unk34 = 0; + temp_r31->unk46 = 60; + temp_r31->unk60 = 30; + omVibrate(temp_r31->unk02, 12, 6, 6); + } + if(temp_r31->unk46 > 0) { + if(temp_r31->unk60) { + if(--temp_r31->unk60 == 0) { + temp_r31->unk2C = -1; + temp_r31->field_0_bit1 = 0; + } + } else { + if((temp_r31->unk46 & 0x2) == 0) { + Hu3DModelAttrReset(object->model[0], 1); + } else { + Hu3DModelAttrSet(object->model[0], 1); + } + temp_r31->unk46--; + } + } + if(temp_r31->field_0_bit2) { + Hu3DModelObjMtxGet(object->model[0], "test11_tex_we-itemhook-r", sp50); + MTXTrans(sp20, 0, 52, 0); + MTXConcat(sp50, sp20, sp50); + Hu3DModelPosSet(object->model[2], sp50[0][3], sp50[1][3], sp50[2][3]); + Hu3DModelScaleSet(object->model[2], lbl_1_data_180[temp_r31->unk44], lbl_1_data_180[temp_r31->unk44], lbl_1_data_180[temp_r31->unk44]); + } + if(fn_1_1240() >= 4 && fn_1_1240() <= 8 && lbl_1_bss_91A[1] >= 0) { + Hu3DGLightPointSet(lbl_1_bss_91A[1], (15*sind(object->work[0]))+lbl_1_data_198[temp_r31->unk44][0], lbl_1_data_198[temp_r31->unk44][1], 3); + temp_r29 = &Hu3DData[object->model[2]]; + sp8 = temp_r29->pos; + sp14 = sp8; + sp14.y = 800; + sp8.y = 0; + sp14.z += 1; + Hu3DGLightPosSet(lbl_1_bss_91A[1], temp_r29->pos.x, 140, temp_r29->pos.z, 0, 1, 0); + if(lbl_1_bss_918) { + Hu3DShadowPosSet(&sp14, &Hu3DShadowData.unk_2C, &sp8); + } + object->work[0] += 10.0f; + Hu3DModelAttrReset(object->model[2], 1); + } else { + Hu3DModelAttrSet(object->model[2], 1); + } +} + +void fn_1_5C34(omObjData *object); + + +void fn_1_2EA4(omObjData *object) +{ + Bss930Work *temp_r30; + Bss930Work4C *temp_r29; + ParticleData *temp_r28; + ModelData *temp_r27; + Mtx sp3C; + Mtx spC; + temp_r30 = object->data; + temp_r29 = temp_r30->unk4C; + switch(temp_r30->unk50) { + case 0: + if(temp_r30->unk0A & PAD_BUTTON_A) { + temp_r30->field_0_bit1 = 1; + temp_r30->unk50 = 1; + temp_r30->unk60 = 15; + temp_r30->unk2C = 3; + temp_r30->unk34 = 0; + HuAudFXEmiterPlay(1465, &object->trans); + } + break; + + case 1: + if(--temp_r30->unk60 == 0) { + Hu3DModelObjMtxGet(object->model[0], "test11_tex_we-itemhook-r", sp3C); + MTXTrans(spC, 0, 2, 50); + MTXConcat(sp3C, spC, sp3C); + Hu3DModelPosSet(object->model[2], sp3C[0][3], sp3C[1][3], sp3C[2][3]); + Hu3DModelScaleSet(object->model[2], 0.5f, 0.5f, 0.5f); + Hu3DModelAttrReset(object->model[2], 1); + Hu3DMotionTimeSet(object->model[2], 0); + Hu3DMotionSpeedSet(object->model[2], 2.0f); + Hu3DModelRotSet(object->model[2], 0, 180.0f+object->rot.y, 0); + Hu3DData[object->model[2]].unk_94 = 0; + Hu3DData[object->model[2]].unk_98 = 2; + Hu3DModelAttrReset(object->model[3], 1); + Hu3DModelPosSet(object->model[3], sp3C[0][3], sp3C[1][3], sp3C[2][3]); + temp_r27 = &Hu3DData[object->model[3]]; + temp_r28 = temp_r27->unk_120; + temp_r28->unk_00 = 0; + temp_r28->unk_04.x = sp3C[0][3]; + temp_r28->unk_04.y = sp3C[1][3]; + temp_r28->unk_04.z = sp3C[2][3]; + temp_r28->unk_10.x = object->rot.y; + temp_r28->unk_3C = 30-(sqrtf((2.0f*temp_r28->unk_04.y)/1.0000001f)/2.0f); + temp_r29->field_0_bit0 = 1; + temp_r30->unk50 = 2; + temp_r30->unk60 = 20; + } + break; + + case 2: + if(--temp_r30->unk60 == 0) { + temp_r30->unk2C = 4; + temp_r30->unk34 = 0; + temp_r29->field_0_bit0 = 0; + temp_r30->unk50 = 3; + temp_r30->unk60 = 30; + } + Hu3DModelObjMtxGet(object->model[0], "test11_tex_we-itemhook-r", sp3C); + MTXTrans(spC, 0, 2, 50); + MTXConcat(sp3C, spC, sp3C); + Hu3DModelPosSet(object->model[2], sp3C[0][3], sp3C[1][3], sp3C[2][3]); + Hu3DModelPosSet(object->model[3], sp3C[0][3], sp3C[1][3], sp3C[2][3]); + fn_1_5C34(object); + break; + + case 3: + if(--temp_r30->unk60 == 0) { + Hu3DModelAttrSet(object->model[2], 1); + Hu3DData[object->model[2]].unk_0E = -1; + temp_r30->field_0_bit1 = 0; + temp_r30->unk2C = -1; + temp_r30->unk50 = 0; + } + break; + } + if(temp_r30->unk50 && fn_1_1240() > 6 && lbl_1_bss_924 < 0) { + temp_r29->field_0_bit0 = 0; + Hu3DModelAttrSet(object->model[2], 1); + Hu3DModelAttrSet(object->model[3], 1); + } + if(temp_r29->field_0_bit0) { + temp_r29->unk4 = object->trans.x+(((float)temp_r29->unk10*(200*sind(object->rot.y)))/4); + temp_r29->unk8 = 75; + temp_r29->unkC = object->trans.z+(((float)temp_r29->unk10*(200*cosd(object->rot.y)))/4); + temp_r29->unk4 = object->trans.x+(200.0*sind(object->rot.y)); + temp_r29->unk8 = 120.00001f; + temp_r29->unkC = object->trans.z+(200.0*cosd(object->rot.y)); + if(temp_r29->unk10 < 4) { + temp_r29->unk10++; + } + } + +} + +void fn_1_361C(omObjData *object) +{ + Bss930Work *temp_r30; + ModelData *temp_r29; + temp_r30 = object->data; + if(temp_r30->field_0_bit2) { + if(fn_1_1240() == 9) { + temp_r30->field_0_bit2 = 0; + temp_r30->unk48 = 0; + temp_r30->unk54.x = 6*sind(object->rot.y); + temp_r30->unk54.y = 20; + temp_r30->unk54.z = 6*cosd(object->rot.y); + temp_r30->unk60 = 30; + temp_r29 = &Hu3DData[object->model[1]]; + temp_r29->rot.y = object->rot.y; + Hu3DModelObjPosGet(object->model[0], "test11_tex_we-itemhook-r", &temp_r29->pos); + Hu3DModelHookReset(object->model[0]); + Hu3DModelAttrReset(object->model[1], 0x8000); + Hu3DModelShadowReset(object->model[1]); + Hu3DModelAttrReset(object->model[0], 1); + } + } else { + temp_r29 = &Hu3DData[object->model[1]]; + temp_r29->pos.x += temp_r30->unk54.x; + temp_r29->pos.y += temp_r30->unk54.y; + temp_r29->pos.z += temp_r30->unk54.z; + temp_r30->unk54.y += -1.0000001f; + temp_r29->rot.x += 30.0f; + if(--temp_r30->unk60 == 0) { + Hu3DModelAttrSet(object->model[1], 1); + Hu3DModelPosSet(object->model[4], temp_r29->pos.x, temp_r29->pos.y, temp_r29->pos.z); + Hu3DModelAttrReset(object->model[4], 1); + if(!temp_r30->unk10) { + HuAudFXPlay(1468); + } + temp_r30->field_0_bit4 = 0; + } + } +} + +void fn_1_38F0(omObjData *object); +void fn_1_49C4(omObjData *object); + +void fn_1_389C(omObjData *object) +{ + Bss930Work *temp_r30; + temp_r30 = object->data; + if(!temp_r30->unk10) { + fn_1_38F0(object); + } else { + fn_1_49C4(object); + } +} + +typedef struct unkstruct_38F0 { + s16 unk0; + s16 unk2; +} UnkStruct38F0; + +UnkStruct38F0 lbl_1_data_1C8[8] = { + -1, -1, + 0, -1, + 1, -1, + 1, 0, + 1, 1, + 0, 1, + -1, 1, + -1, 0 +}; + + +void fn_1_38F0(omObjData *object) +{ + float temp_f31; + float temp_f30; + float temp_f26; + float temp_f25; + float temp_f22; + + s32 temp_r31; + s32 temp_r30; + Bss930Work *temp_r29; + s16 temp_r27; + s32 temp_r26; + s16 temp_r25; + s16 temp_r24; + u8 temp_r23; + + UnkStruct38F0 sp80[100]; + UnkStruct38F0 sp58[10]; + UnkStruct38F0 sp30[10]; + UnkStruct38F0 sp20[4]; + + temp_r29 = object->data; + temp_f25 = 1; + sp20[3].unk0 = 1+(5+((9*object->trans.x)/1100)); + sp20[3].unk2 = 1+(5+((9*object->trans.z)/1100)); + for(temp_r31=1; temp_r31<11; temp_r31++) { + for(temp_r30=1; temp_r30<11; temp_r30++) { + lbl_1_bss_14[temp_r31][temp_r30].unk8 = 0; + temp_f22 = VECMagPoint(lbl_1_bss_14[temp_r31][temp_r30].unk0, lbl_1_bss_14[temp_r31][temp_r30].unk4, 0); + if(temp_f22 <= 550) { + lbl_1_bss_14[temp_r31][temp_r30].unkC = 0; + for(temp_r26=0; temp_r26trans.x; + temp_f30 = lbl_1_bss_14[temp_r31][temp_r30].unk4-lbl_1_bss_930[1][temp_r26]->trans.z; + temp_f22 = VECMagPoint(temp_f31, temp_f30, 0); + if(temp_f22 <= 1100) { + temp_f26 = cosd(90*(temp_f22/1100)); + temp_f26 = temp_f26*temp_f26; + if(temp_f26 > lbl_1_bss_14[temp_r31][temp_r30].unkC) { + lbl_1_bss_14[temp_r31][temp_r30].unkC = temp_f26; + } + } + } + } else { + lbl_1_bss_14[temp_r31][temp_r30].unkC = -1; + } + } + } + lbl_1_bss_14[sp20[3].unk2][sp20[3].unk0].unk8 = 1; + sp80[0] = sp20[3]; + temp_r27=0; + temp_r25=1; + do { + for(temp_r31=0; temp_r31<8u; temp_r31++) { + sp20[2].unk0 = sp80[temp_r27].unk0+lbl_1_data_1C8[temp_r31].unk0; + sp20[2].unk2 = sp80[temp_r27].unk2+lbl_1_data_1C8[temp_r31].unk2; + if(sp20[2].unk0 < 1 || sp20[2].unk0 >= 11 || sp20[2].unk2 < 1 || sp20[2].unk2 >= 11) { + continue; + } + if(lbl_1_bss_14[sp20[2].unk2][sp20[2].unk0].unk8) { + continue; + } + if(lbl_1_bss_14[sp20[2].unk2][sp20[2].unk0].unkC >= 0) { + lbl_1_bss_14[sp20[2].unk2][sp20[2].unk0].unk8 = lbl_1_bss_14[sp80[temp_r27].unk2][sp80[temp_r27].unk0].unk8+1; + sp80[temp_r25].unk0 = sp20[2].unk0; + sp80[temp_r25].unk2 = sp20[2].unk2; + temp_r25++; + } + } + temp_r27++; + } while(temp_r27 != temp_r25); + temp_f25 = 1.0f; + sp20[0].unk0 = -1; + for(temp_r31=1; temp_r31<11; temp_r31++) { + for(temp_r30=1; temp_r30<11; temp_r30++) { + if(lbl_1_bss_14[temp_r31][temp_r30].unk8 == 0 || lbl_1_bss_14[temp_r31][temp_r30].unk8 > 5) { + continue; + } + if(lbl_1_bss_14[temp_r31][temp_r30].unkC >= 0.0f && lbl_1_bss_14[temp_r31][temp_r30].unkC < temp_f25) { + temp_f25 = lbl_1_bss_14[temp_r31][temp_r30].unkC; + sp20[0].unk0 = temp_r30; + sp20[0].unk2 = temp_r31; + } + } + } + temp_r23 = lbl_1_bss_14[sp20[0].unk2][sp20[0].unk0].unk8; + if(temp_r23 == 1) { + if(lbl_1_bss_14[sp20[3].unk2][sp20[3].unk0].unkC > 0.8f) { + temp_f25 = 1.0f; + for(temp_r31=0; temp_r31<8u; temp_r31++) { + sp20[2].unk0 = sp20[3].unk0+lbl_1_data_1C8[temp_r31].unk0; + sp20[2].unk2 = sp20[3].unk2+lbl_1_data_1C8[temp_r31].unk2; + if(lbl_1_bss_14[sp20[2].unk2][sp20[2].unk0].unkC >= 0.0f && lbl_1_bss_14[sp20[2].unk2][sp20[2].unk0].unkC < temp_f25) { + temp_f25 = lbl_1_bss_14[sp20[2].unk2][sp20[2].unk0].unkC; + sp20[1] = sp20[2]; + } + } + sp30[1].unk0 = sp20[1].unk0; + sp30[1].unk2 = sp20[1].unk2; + } else { + return; + } + } else { + for(temp_r31=1; temp_r31<11; temp_r31++) { + for(temp_r30=1; temp_r30<11; temp_r30++) { + if(lbl_1_bss_14[temp_r31][temp_r30].unk8 >= temp_r23) { + lbl_1_bss_14[temp_r31][temp_r30].unk8 = 0; + } + } + } + lbl_1_bss_14[sp20[0].unk2][sp20[0].unk0].unk8 = temp_r23; + sp80[0] = sp20[3]; + temp_r24 = 1; + temp_f25 = 1.0f; + do { + sp20[1] = sp80[--temp_r24]; + sp58[lbl_1_bss_14[sp20[1].unk2][sp20[1].unk0].unk8 -1] = sp20[1]; + if(sp20[1].unk0 == sp20[0].unk0 && sp20[1].unk2 == sp20[0].unk2) { + temp_f26 = 0; + for(temp_r31=1; temp_r31 temp_f26) { + temp_f26 = lbl_1_bss_14[sp58[temp_r31].unk2][sp58[temp_r31].unk0].unkC; + } + } + if(temp_f26 < temp_f25) { + temp_f25 = temp_f26; + memcpy(sp30, sp58, temp_r23*sizeof(UnkStruct38F0)); + + } + continue; + } + for(temp_r31=0; temp_r31<8u; temp_r31++) { + sp20[2].unk0 = sp20[1].unk0+lbl_1_data_1C8[temp_r31].unk0; + sp20[2].unk2 = sp20[1].unk2+lbl_1_data_1C8[temp_r31].unk2; + if(lbl_1_bss_14[sp20[2].unk2][sp20[2].unk0].unk8-1 == lbl_1_bss_14[sp20[1].unk2][sp20[1].unk0].unk8) { + sp80[temp_r24++] = sp20[2]; + } + } + } while(temp_r24); + } + if(sp20[0].unk0 >= 0) { + temp_f31 = lbl_1_bss_14[sp30[1].unk2][sp30[1].unk0].unk0-object->trans.x; + temp_f30 = lbl_1_bss_14[sp30[1].unk2][sp30[1].unk0].unk4-object->trans.z; + temp_f22 = VECMagPoint(temp_f31, temp_f30, 0); + if(temp_f22 >= 50.0f) { + temp_r29->unk84 = fn_1_1C80(temp_r29->unk84, atan2d(temp_f31, temp_f30), 0.1f); + temp_r29->unk06 = (69.0f+temp_r29->unk0E)*sind(temp_r29->unk84); + temp_r29->unk07 = (69.0f+temp_r29->unk0E)*-cosd(temp_r29->unk84); + } + } +} + +void fn_1_49C4(omObjData *object) +{ + float temp_f31; + float temp_f28; + float temp_f27; + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + + Bss930Work *temp_r31; + omObjData *temp_r30; + Bss930Work *temp_r28; + temp_r30 = lbl_1_bss_930[0][0]; + temp_r31 = object->data; + temp_r28 = temp_r30->data; + if(temp_r31->field_0_bit1) { + return; + } + switch(temp_r31->unk70) { + case 0: + temp_f28 = (frand16()*360)>>16; + temp_f31 = (frand16()*550)>>16; + temp_r31->unk74.x = temp_f31*sind(temp_f28); + temp_r31->unk74.y = 0; + temp_r31->unk74.z = temp_f31*cosd(temp_f28); + temp_r31->unk70 = 1; + temp_r31->unk80 = 0; + + case 1: + sp20.x = temp_r30->trans.x+((60.0f*temp_r28->unk1C.x)/4.0f); + sp20.z = temp_r30->trans.z+((60.0f*temp_r28->unk1C.z)/4.0f); + sp2C.x = temp_r31->unk74.x+(temp_r31->unk80*(sp20.x-temp_r31->unk74.x)); + sp2C.y = 0; + sp2C.z = temp_r31->unk74.z+(temp_r31->unk80*(sp20.z-temp_r31->unk74.z)); + VECSubtract(&sp2C, &object->trans, &sp14); + temp_f31 = VECMag(&sp14); + if(temp_f31 > 0.0f) { + if(temp_r31->unk80 < 1.0f) { + if(temp_f31 < 10.0f) { + temp_r31->unk80 += (10.0f/temp_f31); + } else { + temp_r31->unk80 += (2.0f/temp_f31); + } + if(temp_r31->unk80 > 1.0f) { + temp_r31->unk80 = 1.0f; + } + } else { + if(((s32)frand() & 0x1F) == 0) { + temp_r31->unk70 = 0; + } + } + } + temp_f27 = 60.0f+(2.0f*temp_r31->unk0E); + temp_r31->unk84 = fn_1_1C80(temp_r31->unk84, atan2d(sp14.x, sp14.z), 0.1f); + temp_r31->unk06 = temp_f27*sind(temp_r31->unk84); + temp_r31->unk07 = temp_f27*-cosd(temp_r31->unk84); + VECSubtract(&temp_r30->trans, &object->trans, &sp14); + if(VECMag(&sp14) < 200.0f) { + VECNormalize(&sp14, &sp14); + sp8.x = sind(object->rot.y); + sp8.y = 0; + sp8.z = cosd(object->rot.y); + if(VECDotProduct(&sp14, &sp8) >= 0.8f) { + temp_r31->unk0A |= PAD_BUTTON_A; + temp_r31->unk70 = 0; + } + } + if(((s32)frand() & 0x3FF) < 4-temp_r31->unk0E) { + temp_r31->unk0A |= PAD_BUTTON_A; + temp_r31->unk70 = 0; + } + break; + } +} + +s32 fn_1_5058(void); + +void fn_1_5004(void) +{ + s32 i = 0; + omObjData **sp8 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + while(fn_1_5058() && i < 50) { + i++; + } +} + +s32 fn_1_5058(void) +{ + Vec sp14[4]; + Vec sp8; + float temp_f31; + float temp_f30; + s32 temp_r31; + omObjData *temp_r30; + s32 temp_r29; + omObjData **temp_r28; + s32 temp_r27; + omObjData *temp_r26; + omObjData *temp_r25; + temp_r27 = 0; + temp_r28 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + for(temp_r31=0; temp_r31<4; temp_r31++) { + sp14[temp_r31].x = sp14[temp_r31].y = sp14[temp_r31].z = 0; + } + for(temp_r31=0; temp_r31<3; temp_r31++) { + temp_r26 = temp_r28[temp_r31]; + for(temp_r29=temp_r31+1; temp_r29<4; temp_r29++) { + temp_r25 = temp_r28[temp_r29]; + VECSubtract(&temp_r26->trans, &temp_r25->trans, &sp8); + temp_f31 = VECMag(&sp8); + if(temp_f31 < 100.0) { + VECNormalize(&sp8, &sp8); + temp_f30 = 0.0001f+(0.5f*(100.0-temp_f31)); + VECScale(&sp8, &sp8, temp_f30); + VECAdd(&sp14[temp_r31], &sp8, &sp14[temp_r31]); + VECSubtract(&sp14[temp_r29], &sp8, &sp14[temp_r29]); + temp_r27++; + } + } + } + for(temp_r31=0; temp_r31<4; temp_r31++) { + temp_r30 = temp_r28[temp_r31]; + VECAdd(&temp_r30->trans, &sp14[temp_r31], &temp_r30->trans); + sp8.x = temp_r30->trans.x; + sp8.y = 0; + sp8.z = temp_r30->trans.z; + temp_f31 = VECMag(&sp8); + if(temp_f31 > 500.0) { + VECNormalize(&sp8, &sp8); + temp_r30->trans.x = 500.0*sp8.x; + temp_r30->trans.z = 500.0*sp8.z; + } + } + return temp_r27; +} + +Vec lbl_1_data_1E8 = { 0, 0, 200 }; +Vec lbl_1_data_1F4[3] = { + { -300, 0, -200 }, + { 0, 0, -200 }, + { 300, 0, -200 } +}; +s32 lbl_1_data_218[6][3] = { + { 0, 1, 2 }, + { 0, 2, 1 }, + { 1, 0, 2 }, + { 1, 2, 0 }, + { 2, 0, 1 }, + { 2, 1, 0 } +}; + +void fn_1_52BC(void) +{ + float sp14[3]; + Vec sp8; + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + + s32 temp_r31; + s32 temp_r30; + Bss930Work *temp_r29; + s32 temp_r28; + temp_r29 = lbl_1_bss_930[0][0]->data; + temp_r29->unk64 = lbl_1_data_1E8; + temp_f29 = -1; + for(temp_r30=0; temp_r30<6; temp_r30++) { + temp_f31 = 0; + for(temp_r31=0; temp_r31<3; temp_r31++) { + VECSubtract(&lbl_1_data_1F4[temp_r31], &lbl_1_bss_930[1][lbl_1_data_218[temp_r30][temp_r31]]->trans, &sp8); + sp14[temp_r31] = VECMag(&sp8); + temp_f31 += sp14[temp_r31]; + } + temp_f28 = temp_f31/3; + temp_f30 = 0; + for(temp_r31=0; temp_r31<3; temp_r31++) { + temp_f30 += fabs(sp14[temp_r31]-temp_f28); + } + if(temp_f29 < 0 || temp_f30+temp_f31 < temp_f29) { + temp_f29 = temp_f30+temp_f31; + temp_r28 = temp_r30; + } + } + for(temp_r30=0; temp_r30<3; temp_r30++) { + temp_r29 = lbl_1_bss_930[1][lbl_1_data_218[temp_r28][temp_r30]]->data; + temp_r29->unk64 = lbl_1_data_1F4[temp_r30]; + } +} + +typedef struct unkstruct_5530 { + s32 unk0; + float unk4; + float unk8; + Vec unkC; +} UnkStruct5530; + +s32 fn_1_5530(omObjData *arg0, Vec *arg1, Vec *arg2) +{ + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + + s32 temp_r30; + s32 temp_r29; + omObjData *temp_r28; + s32 temp_r27; + + omObjData **temp_r24; + s32 temp_r23; + + UnkStruct5530 spB4[4]; + Mtx sp84; + Vec sp78; + Vec sp6C; + Vec sp60; + Vec sp54; + Vec sp48; + Vec sp3C; + Vec sp30; + Vec sp24; + s32 sp14[4]; + float spC[2]; + Bss930Work *sp8; + sp8 = arg0->data; + temp_r24 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + temp_r23 = 0; + sp54.x = arg1->x; + sp54.y = arg1->y; + sp54.z = arg1->z; + VECSubtract(&sp54, &arg0->trans, &sp48); + temp_f30 = VECMag(&sp48); + for(temp_r30=0; temp_r30<4; temp_r30++) { + sp14[temp_r30] = 0; + } + while(1) { + for(temp_r30=0, temp_r29=0; temp_r30<4; temp_r30++) { + temp_r28 = temp_r24[temp_r30]; + if(arg0 == temp_r28 || sp14[temp_r30]) { + continue; + } + temp_f31 = ((temp_r28->trans.x*sp48.x)-(arg0->trans.x*sp48.x)+(temp_r28->trans.y*sp48.y)-(arg0->trans.y*sp48.y)+(temp_r28->trans.z*sp48.z)-(arg0->trans.z*sp48.z))/VECMag2Point(&sp48); + if(temp_f31 < 0.0f || temp_f31 >= 1.0f) { + continue; + } + VECSubtract(&temp_r28->trans, &arg0->trans, &sp3C); + VECCrossProduct(&sp48, &sp3C, &sp24); + sp60.x = (temp_f31*sp48.x)+arg0->trans.x; + sp60.y = (temp_f31*sp48.y)+arg0->trans.y; + sp60.z = (temp_f31*sp48.z)+arg0->trans.z; + spB4[temp_r29].unkC = sp60; + VECSubtract(&temp_r28->trans, &sp60, &sp3C); + if(sp24.y < 0.0f) { + spB4[temp_r29].unk8 = VECMag(&sp3C); + } else { + spB4[temp_r29].unk8 = -VECMag(&sp3C); + } + VECSubtract(&sp60, &arg0->trans, &sp3C); + spB4[temp_r29].unk4 = VECMag(&sp3C); + spB4[temp_r29].unk0 = temp_r30; + temp_r29++; + } + if(temp_r29 == 0) { + break; + } + for(temp_r30=0; temp_r30 spB4[temp_r27].unk4) { + spB4[3] = spB4[temp_r30]; + spB4[temp_r30] = spB4[temp_r27]; + spB4[temp_r27] = spB4[3]; + } + } + } + for(temp_r30=0; temp_r30 50.0) { + sp14[spB4[temp_r30].unk0] = 1; + VECSubtract(&temp_r24[spB4[temp_r30].unk0]->trans, &arg0->trans, &sp3C); + temp_f28 = VECMag(&sp3C); + if(0.0f != temp_f28) { + VECNormalize(&sp3C, &sp3C); + temp_f31 = 100.0/temp_f28; + if(temp_f31 < 0.0f) { + temp_f31 = 0.0f; + } else if(temp_f31 > 1.0f) { + temp_f31 = 1.0f; + } + temp_f29 = asinf(temp_f31); + MTXRotRad(sp84, 'Y', -temp_f29); + MTXMultVec(sp84, &sp3C, &sp30); + sp6C.x = arg0->trans.x+(sp30.x*temp_f30); + sp6C.y = arg0->trans.y+(sp30.y*temp_f30); + sp6C.z = arg0->trans.z+(sp30.z*temp_f30); + VECSubtract(&sp54, &sp6C, &sp30); + spC[0] = VECMag(&sp30); + MTXRotRad(sp84, 'Y', temp_f29); + MTXMultVec(sp84, &sp3C, &sp30); + sp78.x = arg0->trans.x+(sp30.x*temp_f30); + sp78.y = arg0->trans.y+(sp30.y*temp_f30); + sp78.z = arg0->trans.z+(sp30.z*temp_f30); + VECSubtract(&sp54, &sp78, &sp30); + spC[1] = VECMag(&sp30); + if(spC[0] < spC[1]) { + sp54 = sp6C; + } else { + sp54 = sp78; + } + temp_r23 = 1; + break; + } + } + } + if(temp_r30 >= temp_r29) { + break; + } + VECSubtract(&sp54, &arg0->trans, &sp48); + } + arg2->x = sp54.x; + arg2->y = sp54.y; + arg2->z = sp54.z; + return temp_r23; +} + +float fn_1_5D78(float arg8, float arg9, float argA, float argB, float argC, float argD, float argE); + +void fn_1_5C34(omObjData *object) +{ + float temp_f31; + omObjData *temp_r31; + Bss930Work4C *temp_r30; + Bss930Work *temp_r28; + Bss930Work *temp_r27; + temp_r31 = lbl_1_bss_930[0][0]; + temp_r27 = object->data; + temp_r28 = temp_r31->data; + temp_r30 = temp_r27->unk4C; + if(temp_r28->unk46 > 0 || !temp_r30->field_0_bit0) { + return; + } + temp_f31 = fn_1_5D78(object->trans.x, object->trans.z, temp_r30->unk4, temp_r30->unkC, temp_r31->trans.x, temp_r31->trans.z, 50.0f); + if(temp_f31 >= 0.0f && temp_f31 < 1.0f) { + temp_r28->field_0_bit0 = 1; + } +} + +void fn_1_5D18(omObjData *object) +{ + Bss930Work *temp_r31; + temp_r31 = object->data; + CharModelKill(temp_r31->unk0C); + if(temp_r31->unk4C != NULL) { + HuMemDirectFree(temp_r31->unk4C); + } + HuMemDirectFree(temp_r31); + temp_r31 = NULL; +} + +float fn_1_5D78(float arg8, float arg9, float argA, float argB, float argC, float argD, float argE) +{ + float spC; + float temp_f30; + float temp_f29; + float temp_f28; + float temp_f27; + float temp_f26; + float temp_f25; + temp_f26 = (arg9 * arg9) + (((argB * argB) + ((arg8 * arg8) + ((argA * argA) - (2.0f * arg8 * argA)))) - (2.0f * arg9 * argB)); + temp_f27 = 2.0f * (((arg9 * argD) + (((arg9 * argB) + (((arg8 * argC) + ((arg8 * argA) - (argA * argC))) - (arg8 * arg8))) - (argB * argD))) - (arg9 * arg9)); + temp_f25 = ((argD * argD) + (((arg9 * arg9) + ((argC * argC) + ((arg8 * arg8) - (2.0f * arg8 * argC)))) - (2.0f * arg9 * argD))) - (argE * argE); + if(0.0f == temp_f26) { + if(0.0f != temp_f27) { + return -temp_f25/temp_f27; + } else { + return -1; + } + } else { + temp_f30 = (temp_f27 * temp_f27) - (4.0f * temp_f26 * temp_f25); + if(temp_f30 < 0.0) { + return -1; + } + temp_f30 = sqrtf(temp_f30); + temp_f29 = (-temp_f27 + temp_f30) / (2.0f * temp_f26); + temp_f28 = (-temp_f27 - temp_f30) / (2.0f * temp_f26); + if(temp_f29 < temp_f28) { + if(temp_f29 >= 0.0f && temp_f29 < 1.0f) { + return temp_f29; + } else { + if(temp_f28 >= 0.0f && temp_f28 < 1.0f) { + return temp_f28; + } + } + } else { + if(temp_f28 >= 0.0f && temp_f28 < 1.0f) { + return temp_f28; + } else { + if(temp_f29 >= 0.0f && temp_f29 < 1.0f) { + return temp_f29; + } + } + } + return -1; + } +} + +void fn_1_613C(ModelData *model, ParticleData *particle, Mtx matrix) +{ + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + HsfanimStruct01 *temp_r31; + s32 temp_r29; + + if(!particle->unk_00) { + particle->unk_00 = 1; + temp_r31 = particle->unk_48; + for(temp_r29=0; temp_r29unk_30; temp_r31++, temp_r29++) { + temp_r31->unk08.x = (4.0f*((1.0f/256.0f)*frand8()))+8; + temp_r31->unk34.x = (4.0f*(((1.0f/256.0f)*((s32)frand() & 0x1FF))-1)); + temp_r31->unk34.y = (64.0f*((1.0f/256.0f)*frand8())); + temp_r31->unk34.z = (4.0f*(((1.0f/256.0f)*((s32)frand() & 0x1FF))-1)); + temp_r31->unk30 = 360.0f*((1.0f/256.0f)*frand8()); + temp_r31->unk00_s16 = frand8(); + temp_r31->unk02 = (frand() & 0x3)+4; + } + temp_f29 = temp_f28 = 0; + } else { + temp_f29 = (particle->unk_04.x-model->pos.x); + temp_f28 = (particle->unk_04.z-model->pos.z); + } + temp_r31 = particle->unk_48; + for(temp_r29=0; temp_r29unk_30; temp_r31++, temp_r29++) { + temp_f30 = temp_r31->unk00_s16/255.0f; + temp_f31 = temp_f30*temp_f30; + temp_r31->unk34.x += temp_f29*temp_f31; + temp_r31->unk34.y = 60.0f*temp_f30; + temp_r31->unk34.z += temp_f28*temp_f31; + temp_r31->unk40.a = 255.0f*(1.0f-temp_f30); + temp_f31 = 0.5*(1+sind(270.0f*temp_f30)); + temp_r31->unk2C = temp_f31*(temp_r31->unk08.x*temp_f31); + temp_r31->unk00_s16 += temp_r31->unk02; + if(temp_r31->unk00_s16 > 255) { + temp_r31->unk34.x = (4.0f*(((1.0f/256.0f)*((s32)frand() & 0x1FF))-1)); + temp_r31->unk34.y = 0; + temp_r31->unk34.z = (4.0f*(((1.0f/256.0f)*((s32)frand() & 0x1FF))-1)); + temp_r31->unk00_s16 = 0; + } + } + DCStoreRangeNoSync(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); + particle->unk_04.x = model->pos.x; + particle->unk_04.z = model->pos.z; +} + +void fn_1_6640(ModelData *model, ParticleData *particle, Mtx matrix) +{ + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + HsfanimStruct01 *temp_r31; + s32 temp_r28; + s32 temp_r27; + GXColor sp8 = { 0, 0, 0, 255 }; + if(!particle->unk_00) { + particle->unk_00 = 1; + temp_r31 = particle->unk_48; + for(temp_r28=0; temp_r28unk_30; temp_r31++, temp_r28++) { + temp_r31->unk2C = 15; + temp_r31->unk34.x = temp_r31->unk34.y = temp_r31->unk34.z = 0; + temp_f31 = particle->unk_10.x+(10.0f*(((1.0f/256.0f)*((s32)frand() & 0x1FF))-1.0f)); + temp_f30 = 100.0f*(0.1f*((1.0f/256.0f)*((s32)frand() & 0xFF)))+10; + temp_r31->unk08.x = temp_f30*sind(temp_f31); + temp_r31->unk08.y = 100.0f*(0.02f*(((1.0f/256.0f)*((s32)frand() & 0x1FF))-1.0f)); + temp_r31->unk08.z = temp_f30*cosd(temp_f31); + temp_r31->unk40.r = temp_r31->unk40.g = temp_r31->unk40.b = 255; + temp_r31->unk40.a = 0; + temp_r31->unk00_s16 = ((float)particle->unk_3C)*((float)temp_r28/(float)particle->unk_30); + } + } else { + temp_f29 = (particle->unk_04.x-model->pos.x); + temp_f28 = (particle->unk_04.z-model->pos.z); + } + temp_r27 = 0; + temp_r31 = particle->unk_48; + for(temp_r28=0; temp_r28unk_30; temp_r31++, temp_r28++) { + if(temp_r31->unk00_s16 >= 0) { + if(temp_r31->unk00_s16 == 0) { + temp_r31->unk34.x += temp_r31->unk08.x+temp_f29; + temp_r31->unk34.y += temp_r31->unk08.y; + temp_r31->unk34.z += temp_r31->unk08.z+temp_f28; + temp_r31->unk08.y += -1.0000001f; + if(temp_r31->unk40.a) { + if(--temp_r31->unk40.a == 0) { + temp_r31->unk00_s16 = -1; + } + } + if(temp_r31->unk34.y < 0.0f) { + temp_r31->unk34.y = 0; + temp_r31->unk00_s16 = -1; + temp_r31->unk40.a = 0; + } + } else { + if(--temp_r31->unk00_s16 == 0) { + temp_r31->unk40.a = 255; + } + } + } else { + temp_r27++; + } + } + if(temp_r27 == particle->unk_30) { + model->attr |= 0x1; + } + DCStoreRangeNoSync(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); + particle->unk_04.x = model->pos.x; + particle->unk_04.z = model->pos.z; +} + +void fn_1_6AE8(ModelData *model, ParticleData *particle, Mtx matrix) +{ + HsfanimStruct01 *temp_r31; + s32 temp_r29; + s16 temp_r28; + s32 temp_r27; + if(!particle->unk_00) { + particle->unk_00 = 1; + temp_r31 = particle->unk_48; + for(temp_r29=0; temp_r29unk_30; temp_r31++, temp_r29++) { + temp_r31->unk2C = 50; + temp_r31->unk34.x = 0; + temp_r31->unk34.y = 0; + temp_r31->unk34.z = 0; + temp_r31->unk08.x = 100.0f*(0.05f*(((1.0f/256.0f)*((s32)frand() & 0x1FF))-1.0f)); + temp_r31->unk08.y = 100.0f*(0.05f*(((1.0f/256.0f)*((s32)frand() & 0x1FF))-1.0f)); + temp_r31->unk08.z = 100.0f*(0.05f*(((1.0f/256.0f)*((s32)frand() & 0x1FF))-1.0f)); + temp_r31->unk40.a = 128; + temp_r31->unk00_s16 = 0; + } + } + temp_r31 = particle->unk_48; + for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { + if(temp_r31->unk00_s16 < 0) { + temp_r27++; + continue; + } + temp_r31->unk34.x += temp_r31->unk08.x; + temp_r31->unk34.y += temp_r31->unk08.y; + temp_r31->unk34.z += temp_r31->unk08.z; + temp_r31->unk08.x *= 0.92f; + temp_r31->unk08.y *= 0.92f; + temp_r31->unk08.z *= 0.92f; + temp_r28 = temp_r31->unk40.a; + temp_r28 -= 4; + if(temp_r28 < 0) { + temp_r31->unk00_s16 = -1; + temp_r28 = 0; + } + temp_r31->unk40.a = temp_r28; + } + if(temp_r27 == particle->unk_30) { + model->attr |= 0x1; + } + DCStoreRangeNoSync(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); +} + +void fn_1_6DEC(s16 arg0, u32 arg1) +{ + HsfData *temp_r31; + HsfMaterial *temp_r30; + s32 temp_r29; + ModelData *temp_r28; + temp_r28 = &Hu3DData[arg0]; + temp_r31 = temp_r28->hsfData; + temp_r30 = temp_r31->material; + for(temp_r29=0; temp_r29materialCnt; temp_r29++, temp_r30++) { + temp_r30->flags |= arg1; + } + +} + +void fn_1_709C(s32 arg0, s32 arg1, float arg2); + +void fn_1_72EC(omObjData *object); + +void fn_1_6E5C(omObjData *object) +{ + Vec sp14; + Vec sp8; + + fn_1_709C(0, 0, 0); + sp14.x = (((sind(CRot.y)*cosd(CRot.x))*CZoom)+Center.x); + sp14.y = (-sind(CRot.x)*CZoom)+Center.y; + sp14.z = ((cosd(CRot.y)*cosd(CRot.x))*CZoom)+Center.z; + VECSubtract(&Center, &sp14, &sp8); + VECNormalize(&sp8, &sp8); + HuAudFXListnerSetEX(&sp14, &sp8, 10000, 566.6667, 0, 300, 300); + object->func = fn_1_72EC; +} + +void fn_1_709C(s32 arg0, s32 arg1, float arg2) +{ + CZoom = lbl_1_data_0[arg0].zoom+(arg2*(lbl_1_data_0[arg1].zoom-lbl_1_data_0[arg0].zoom)); + Center.x = lbl_1_data_0[arg0].pos.x+(arg2*(lbl_1_data_0[arg1].pos.x-lbl_1_data_0[arg0].pos.x)); + Center.y = lbl_1_data_0[arg0].pos.y+(arg2*(lbl_1_data_0[arg1].pos.y-lbl_1_data_0[arg0].pos.y)); + Center.z = lbl_1_data_0[arg0].pos.z+(arg2*(lbl_1_data_0[arg1].pos.z-lbl_1_data_0[arg0].pos.z)); + CRot.x = lbl_1_data_0[arg0].rot.x+(arg2*(lbl_1_data_0[arg1].rot.x-lbl_1_data_0[arg0].rot.x)); + CRot.y = lbl_1_data_0[arg0].rot.y+(arg2*(lbl_1_data_0[arg1].rot.y-lbl_1_data_0[arg0].rot.y)); + CRot.z = lbl_1_data_0[arg0].rot.z+(arg2*(lbl_1_data_0[arg1].rot.z-lbl_1_data_0[arg0].rot.z)); +} + +float lbl_1_data_260[2] = { 0, 0 }; + +void fn_1_72EC(omObjData *object) +{ + Vec sp14; + Vec sp8; + switch(fn_1_1240()) { + case 2: + fn_1_709C(0, 1, sind(90.0f*lbl_1_data_260[0])); + if(lbl_1_data_260[0] < 1.0f) { + lbl_1_data_260[0] += 5.0f/240.0f; + if(lbl_1_data_260[0] > 1.0f) { + lbl_1_data_260[0] = 1.0f; + } + } + break; + + case 5: + fn_1_709C(1, 0, sind(90.0f*lbl_1_data_260[1])); + if(lbl_1_data_260[1] < 1.0f) { + lbl_1_data_260[1] += 10.0f/360.0f; + if(lbl_1_data_260[1] > 1.0f) { + lbl_1_data_260[1] = 1.0f; + } + } + break; + } + sp14.x = (((sind(CRot.y)*cosd(CRot.x))*CZoom)+Center.x); + sp14.y = (-sind(CRot.x)*CZoom)+Center.y; + sp14.z = ((cosd(CRot.y)*cosd(CRot.x))*CZoom)+Center.z; + VECSubtract(&Center, &sp14, &sp8); + VECNormalize(&sp8, &sp8); + HuAudFXListnerUpdate(&sp14, &sp8); +} \ No newline at end of file diff --git a/src/REL/m416Dll/map.c b/src/REL/m416Dll/map.c new file mode 100644 index 00000000..76dd799c --- /dev/null +++ b/src/REL/m416Dll/map.c @@ -0,0 +1,331 @@ +#include "game/object.h" +#include "game/objsub.h" +#include "game/hsfman.h" +#include "game/hsfanim.h" +#include "game/hsfmotion.h" +#include "game/audio.h" +#include "game/wipe.h" +#include "game/sprite.h" +#include "game/chrman.h" +#include "game/pad.h" +#include "game/gamework_data.h" +#include "game/minigame_seq.h" +#include "game/frand.h" + +#include "math.h" +#include "ext_math.h" + +#include "REL/m416Dll.h" + +GXColor lbl_1_data_268 = { 0, 0, 0, 255 }; +Vec lbl_1_data_26C[8] = { + { 70, 0, 70 }, + { 70, 0, -70 }, + { -70, 0, -70 }, + { -70, 0, 70 }, + { 70, 0, 70 }, + { 70, 0, -70 }, + { -70, 0, -70 }, + { -70, 0, 70 }, +}; +Vec lbl_1_data_2CC[2] = { + { 370, 615, -245 }, + { -370, 615, -245 } +}; +float lbl_1_data_2E4[2] = { + 0, 1 +}; + +omObjData *lbl_1_bss_118C; +omObjData *lbl_1_bss_1188; +u32 lbl_1_bss_1184; +void *lbl_1_bss_1180; +float lbl_1_bss_117C; +s16 lbl_1_bss_1174[4]; +float lbl_1_bss_116C[2]; +s16 lbl_1_bss_1168; +s16 lbl_1_bss_968[256][4]; + +void fn_1_7A74(omObjData *object); +void fn_1_7D74(omObjData *object); +void fn_1_7F30(omObjData *object); +void fn_1_83B4(omObjData *object); + +void fn_1_89BC(ModelData *model, Mtx mtx); + +void fn_1_8EA0(void); +void fn_1_8FF0(void); + +void fn_1_79D0(Process *objman) +{ + lbl_1_bss_118C = omAddObjEx(objman, 20, 2, 0, -1, fn_1_7A74); + lbl_1_bss_1188 = omAddObjEx(objman, 20, 10, 0, -1, fn_1_7F30); + fn_1_8EA0(); +} + +void fn_1_7A54(void) +{ + fn_1_8FF0(); +} + +void fn_1_7A74(omObjData *object) +{ + s16 i; + object->model[0] = Hu3DModelCreateFile(0x2F0000); + Hu3DModelShadowMapSet(object->model[0]); + Hu3DModelLayerSet(object->model[0], 0); + object->trans.x = 0; + object->trans.y = 0; + object->trans.z = 0; + fn_1_8EB4(object->model[0]); + for(i=0; i<2; i++) { + lbl_1_bss_1174[i+2] = Hu3DLLightCreate(object->model[0], 0, 0, 0, 0, 0, 0, 0, 0, 0); + Hu3DLLightStaticSet(object->model[0], lbl_1_bss_1174[i+2], 1); + Hu3DLLightPointSet(object->model[0], lbl_1_bss_1174[i+2], 45, 0.8, 3); + Hu3DLLightColorSet(object->model[0], lbl_1_bss_1174[i+2], 255, 160, 0, 255); + Hu3DLLightPosSet(object->model[0], lbl_1_bss_1174[i+2], lbl_1_data_2CC[i].x, 475, lbl_1_data_2CC[i].z, 0, 1, 0); + } + object->model[1] = Hu3DHookFuncCreate(fn_1_89BC); + Hu3DModelLayerSet(object->model[1], 1); + lbl_1_bss_1184 = GXGetTexBufferSize(640, 480, GX_TF_RGBA8, GX_FALSE, 0); + lbl_1_bss_1180 = HuMemDirectMallocNum(HEAP_DATA, lbl_1_bss_1184, MEMORY_DEFAULT_NUM); + memset(lbl_1_bss_1180, 0, lbl_1_bss_1184); + object->func = fn_1_7D74; +} + +void fn_1_7D74(omObjData *object) +{ + s32 i; + for(i=0; i<2; i++) { + Hu3DLLightPointSet(object->model[0], lbl_1_bss_1174[i+2], (15*sind(object->work[i]))+45, 0.8, 3); + object->work[i] += 8.0f; + if(object->work[i] > 360.0f) { + object->work[i] -= 360.0f; + } + } +} + +void fn_1_7F30(omObjData *object) +{ + Mtx sp68; + Mtx sp38; + Mtx sp8; + s32 temp_r30; + Vec *temp_r29; + s32 temp_r28; + s32 temp_r27; + s16 temp_r26; + s16 temp_r25; + s16 temp_r24; + AnimData *temp_r23; + object->stat |= 0x100; + for(temp_r30=0; temp_r30<2; temp_r30++) { + if(temp_r30 == 0) { + temp_r25 = Hu3DModelCreateFile(0x2F0001); + temp_r26 = temp_r25; + } else { + temp_r24 = Hu3DModelLink(temp_r25); + temp_r26 = temp_r24; + } + object->model[temp_r30] = temp_r26; + Hu3DModelLayerSet(temp_r26, 2); + fn_1_8EB4(object->model[temp_r30]); + Hu3DModelPosSet(object->model[temp_r30], lbl_1_data_2CC[temp_r30].x, lbl_1_data_2CC[temp_r30].y, lbl_1_data_2CC[temp_r30].z); + } + temp_r23 = HuSprAnimReadFile(0x2F0006); + temp_r29 = &lbl_1_data_26C[0]; + for(temp_r30=0; temp_r30<2; temp_r30++) { + for(temp_r27=0; temp_r27<4; temp_r27++, temp_r29++) { + temp_r28 = (temp_r30*4)+2; + temp_r28 = temp_r27+temp_r28; + object->model[temp_r28] = Hu3DParticleCreate(temp_r23, 50); + Hu3DParticleHookSet(object->model[temp_r28], fn_1_613C); + Hu3DParticleBlendModeSet(object->model[temp_r28], 1); + Hu3DModelLayerSet(object->model[temp_r28], 6); + Hu3DModelScaleSet(object->model[temp_r28], 0.5f, 0.7f, 0.5f); + MTXTrans(sp68, lbl_1_data_2CC[temp_r30].x, lbl_1_data_2CC[temp_r30].y, lbl_1_data_2CC[temp_r30].z); + MTXTrans(sp38, 0, -150, 0); + MTXConcat(sp68, sp38, sp68); + MTXTrans(sp8, temp_r29->x, temp_r29->y, temp_r29->z); + MTXConcat(sp68, sp8, sp68); + Hu3DModelPosSet(object->model[temp_r28], sp68[0][3], sp68[1][3], sp68[2][3]); + } + } + for(temp_r30=0; temp_r30<2; temp_r30++) { + lbl_1_bss_1174[temp_r30] = Hu3DLLightCreate(object->model[temp_r30], 0, 0, 0, 0, 0, 0, 0, 0, 0); + Hu3DLLightStaticSet(object->model[temp_r30], lbl_1_bss_1174[temp_r30], 1); + Hu3DLLightPointSet(object->model[temp_r30], lbl_1_bss_1174[temp_r30], 1000, 0.8, 3); + Hu3DLLightColorSet(object->model[temp_r30], lbl_1_bss_1174[temp_r30], 255, 160, 0, 255); + Hu3DLLightPosSet(object->model[temp_r30], lbl_1_bss_1174[temp_r30], lbl_1_data_2CC[temp_r30].x, 475, lbl_1_data_2CC[temp_r30].z, 0, 1, 0); + } + object->work[0] = 0; + object->work[1] = 45; + lbl_1_bss_117C = 0; + object->func = fn_1_83B4; +} + +void fn_1_83B4(omObjData *object) +{ + float temp_f31; + + s32 temp_r31; + Vec *temp_r29; + s32 temp_r28; + s32 temp_r27; + ModelData *temp_r26; + + Mtx sp130[2]; + Mtx sp100; + Mtx spD0; + Mtx spA0; + Mtx sp70; + Mtx sp40; + Mtx sp10; + float sp8[2]; + MTXIdentity(sp100); + MTXIdentity(sp130[0]); + MTXIdentity(sp130[1]); + MTXIdentity(spD0); + MTXIdentity(spA0); + MTXIdentity(sp70); + MTXIdentity(sp40); + MTXIdentity(sp10); + lbl_1_bss_117C = fmod(1+lbl_1_bss_117C, 360); + sp8[0] = 20*sind(lbl_1_bss_117C); + sp8[1] = 20*cosd(lbl_1_bss_117C); + if(fn_1_1240() == 6) { + for(temp_r31=0; temp_r31<2; temp_r31++) { + temp_f31 = sp8[temp_r31]-lbl_1_bss_116C[temp_r31]; + if(temp_f31*lbl_1_data_2E4[temp_r31] <= 0.0f) { + temp_r26 = &Hu3DData[object->model[temp_r31]]; + HuAudFXEmiterPlay(1467, &temp_r26->pos); + } + lbl_1_data_2E4[temp_r31] = temp_f31; + } + } + lbl_1_bss_116C[0] = sp8[0]; + lbl_1_bss_116C[1] = sp8[1]; + temp_r29 = &lbl_1_data_26C[0]; + for(temp_r31=0; temp_r31<2; temp_r31++) { + MTXRotDeg(sp130[temp_r31], 'y', lbl_1_bss_116C[temp_r31]); + for(temp_r28=0; temp_r28<4; temp_r28++, temp_r29++) { + temp_r27 = (temp_r31*4)+2; + temp_r27 = temp_r28+temp_r27; + MTXTrans(spA0, lbl_1_data_2CC[temp_r31].x, lbl_1_data_2CC[temp_r31].y, lbl_1_data_2CC[temp_r31].z); + MTXTrans(sp70, 0, -150, 0); + MTXConcat(spA0, sp70, spA0); + MTXTrans(sp40, temp_r29->x, temp_r29->y, temp_r29->z); + MTXConcat(sp130[temp_r31], sp40, sp10); + MTXConcat(spA0, sp10, spA0); + Hu3DModelPosSet(object->model[temp_r27], spA0[0][3], spA0[1][3], spA0[2][3]); + } + } + Hu3DModelRotSet(object->model[0], 0, lbl_1_bss_116C[0], 0); + Hu3DModelRotSet(object->model[1], 0, lbl_1_bss_116C[1], 0); + for(temp_r31=0; temp_r31<2; temp_r31++) { + Hu3DLLightPointSet(object->model[temp_r31], lbl_1_bss_1174[temp_r31], (15*sind(object->work[temp_r31]))+45, 0.9, 3); + object->work[temp_r31] += 8.0f; + if(object->work[temp_r31] > 360.0f) { + object->work[temp_r31] -= 360.0f; + } + } +} + +void fn_1_8904(void *arg0, u8 arg1) +{ + GXSetTexCopySrc(0, 0, 640, 480); + GXSetTexCopyDst(640, 480, GX_TF_RGBA8, GX_FALSE); + GXSetCopyClear(BGColor, 0xFFFFFF); + GXCopyTex(arg0, arg1); + DCFlushRange(arg0, lbl_1_bss_1184); +} + +void fn_1_89BC(ModelData *model, Mtx mtx) +{ + Mtx44 sp34; + GXTexObj sp14; + MTXOrtho(sp34, 0, 480, 0, 576, 0, 1000); + GXSetProjection(sp34, GX_ORTHOGRAPHIC); + MTXIdentity(mtx); + GXLoadPosMtxImm(mtx, GX_PNMTX0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); + GXSetChanAmbColor(GX_COLOR0A0, lbl_1_data_268); + GXSetChanMatColor(GX_COLOR0A0, lbl_1_data_268); + GXSetNumTexGens(1); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + GXSetNumTevStages(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD0, GX_TEXMAP1, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_RASA); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXInitTexObj(&sp14, lbl_1_bss_1180, 640, 480, GX_TF_RGBA8, GX_CLAMP, GX_CLAMP, GX_FALSE); + GXLoadTexObj(&sp14, GX_TEXMAP0); + GXSetBlendMode(GX_BM_BLEND, GX_BL_INVSRCALPHA, GX_BL_SRCALPHA, GX_LO_NOOP); + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3f32(0, 0, -10); + GXTexCoord2f32(0, 0); + GXPosition3f32(576, 0, -10); + GXTexCoord2f32(1, 0); + GXPosition3f32(576, 480, -10); + GXTexCoord2f32(1, 1); + GXPosition3f32(0, 480, -10); + GXTexCoord2f32(0, 1); + GXEnd(); + fn_1_8904(lbl_1_bss_1180, GX_FALSE); +} + +void fn_1_8EA0(void) +{ + lbl_1_bss_1168 = 0; +} + +void fn_1_8EB4(s16 model) +{ + HsfMaterial *temp_r31; + HsfData *temp_r30; + s32 temp_r29; + ModelData *temp_r28; + s16 *temp_r27; + s16 temp_r26; + temp_r28 = &Hu3DData[model]; + temp_r30 = temp_r28->hsfData; + temp_r26 = temp_r30->materialCnt; + temp_r27 = &lbl_1_bss_968[lbl_1_bss_1168][0]; + *temp_r27 = model; + temp_r31 = temp_r30->material; + for(temp_r29=0; temp_r29vtxMode = 1; + } + lbl_1_bss_1168++; +} + +void fn_1_8F60(float arg0) +{ + s16 *temp_r31; + s32 temp_r30; + temp_r31 = &lbl_1_bss_968[0][0]; + for(temp_r30=0; temp_r30unk_00 |= 32768; + lbl_1_bss_28 = 0.0f; + var_r31 = omInitObjMan(50, 8192); + lbl_1_bss_98 = var_r31; + omGameSysInit(var_r31); + HuAudSndGrpSet(51); + fn_1_73DC(); + lbl_1_bss_94 = omAddObjEx(var_r31, 255, 2, 0, -1, fn_1_20C); + Hu3DShadowCreate(35.0f, 2000.0f, 25000.0f); + Hu3DShadowTPLvlSet(0.5f); + Hu3DShadowPosSet(&lbl_1_data_A0, &lbl_1_data_AC, &lbl_1_data_B8); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); +} + +void fn_1_20C(omObjData *object) +{ + object->model[0] = Hu3DHookFuncCreate(fn_1_8E48); + Hu3DModelLayerSet(object->model[0], 1); + fn_1_EB8(); + fn_1_4EC4(); + fn_1_36C4(); + fn_1_5E6C(); + fn_1_6594(); + fn_1_69E4(); + lbl_1_bss_5C = 0; + lbl_1_bss_58 = 0; + lbl_1_bss_54 = 0; + lbl_1_bss_48 = -1; + lbl_1_bss_44 = 1; + lbl_1_bss_40 = 0; + lbl_1_bss_3C = 0; + lbl_1_bss_38 = 0; + lbl_1_bss_34 = 2.0f; + lbl_1_bss_1C[0] = lbl_1_bss_1C[1] = 10; + object->func = fn_1_330; +} + +void fn_1_330(omObjData *object) +{ + float sp10[16]; + + float var_f31; + + s32 var_r31; + UnkM426Struct *var_r30; + UnkM426Struct2 *var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + + var_r28 = -1; + { + s32 sp8[2] = { 0, 1 }; + switch (lbl_1_bss_54) { + case 0: + if (!WipeStatGet()) { + lbl_1_bss_54 = 1; + lbl_1_bss_58 = 0; + lbl_1_bss_30 = 120; + } + break; + case 1: + if (++lbl_1_bss_58 >= 15.0f) { + lbl_1_bss_54 = 2; + lbl_1_bss_58 = 0; + lbl_1_bss_38 = 1; + } + break; + case 2: + var_f31 = 0.007246377f * lbl_1_bss_58; + var_f31 = sind(90.0f * var_f31); + var_f31 *= var_f31; + for (var_r31 = 0; var_r31 < 7; var_r31++) { + sp10[var_r31] = fn_1_98E4(var_f31, lbl_1_data_4C[1][var_r31], lbl_1_data_4C[2][var_r31], lbl_1_data_4C[0][var_r31]); + } + CRot.x = sp10[0]; + CRot.y = sp10[1]; + CRot.z = sp10[2]; + Center.x = sp10[3]; + Center.y = sp10[4]; + Center.z = sp10[5]; + CZoom = sp10[6]; + if (++lbl_1_bss_58 >= 138.0f) { + CRot.x = lbl_1_data_4C[0][0]; + CRot.y = lbl_1_data_4C[0][1]; + CRot.z = lbl_1_data_4C[0][2]; + Center.x = lbl_1_data_4C[0][3]; + Center.y = lbl_1_data_4C[0][4]; + Center.z = lbl_1_data_4C[0][5]; + CZoom = lbl_1_data_4C[1][6]; + lbl_1_bss_54 = 3; + lbl_1_bss_58 = 0; + } + break; + case 3: + if (++lbl_1_bss_58 >= 30.0f) { + lbl_1_bss_50 = MGSeqCreate(3, 0); + lbl_1_bss_54 = 4; + lbl_1_bss_58 = 0; + } + break; + case 4: + if (lbl_1_bss_50 != -1) { + var_r26 = MGSeqStatGet(lbl_1_bss_50); + if ((var_r26 & 16) && lbl_1_bss_48 == -1) { + lbl_1_bss_48 = HuAudSeqPlay(70); + } + } else { + var_r26 = 0; + } + if (lbl_1_bss_50 == -1 || !var_r26) { + lbl_1_bss_50 = -1; + lbl_1_bss_40 = 1; + lbl_1_bss_3C = 1; + lbl_1_bss_54 = 5; + lbl_1_bss_58 = 1800; + fn_1_7328(1); + lbl_1_bss_4C = MGSeqCreate(1, lbl_1_bss_58 / 60, -1, -1); + } + break; + case 5: + var_r25 = (lbl_1_bss_58 + 59) / 60; + if (var_r25 < 0) { + var_r25 = 0; + } + MGSeqParamSet(lbl_1_bss_4C, 1, var_r25); + if (lbl_1_bss_58 == 600) { + lbl_1_bss_34 = 3.0f; + } else if (lbl_1_bss_58 == 1200) { + lbl_1_bss_34 = 2.5f; + } + if (--lbl_1_bss_58 < -1 || lbl_1_bss_1C[0] <= 0 || lbl_1_bss_1C[1] <= 0) { + MGSeqParamSet(lbl_1_bss_4C, 2, -1); + lbl_1_bss_4C = -1; + HuAudSeqAllFadeOut(100); + lbl_1_bss_50 = MGSeqCreate(3, 1); + lbl_1_bss_40 = 0; + lbl_1_bss_3C = 0; + lbl_1_bss_54 = 6; + lbl_1_bss_58 = 0; + } + break; + case 6: + if (lbl_1_bss_50 == -1 || !MGSeqStatGet(lbl_1_bss_50)) { + lbl_1_bss_50 = -1; + var_r28 = fn_1_5D3C(); + if (var_r28 >= 0) { + if (fn_1_2EDC()) { + if (lbl_1_bss_1C[0] == lbl_1_bss_1C[1]) { + var_r28 = 2; + } else if (lbl_1_bss_1C[0] > lbl_1_bss_1C[1]) { + var_r28 = 0; + } else { + var_r28 = 1; + } + if (var_r28 < 2) { + var_r30 = lbl_1_bss_8C[var_r28]->data; + for (var_r31 = 0; var_r31 < 2; var_r31++) { + GWPlayerCoinWinAdd(var_r30->unk_0C[var_r31], 10); + var_r29 = var_r30->unk_04[var_r31]->data; + sp8[var_r31] = var_r29->unk_0C; + var_r29->unk_24 = 8; + } + var_r30 = lbl_1_bss_8C[~var_r28 & 1]->data; + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r29 = var_r30->unk_04[var_r31]->data; + var_r29->unk_24 = 9; + } + lbl_1_bss_50 = MGSeqCreate(5, 3, sp8[0], sp8[1], -1, -1); + HuAudSStreamPlay(1); + } else { + for (var_r27 = 0; var_r27 < 2; var_r27++) { + var_r30 = lbl_1_bss_8C[var_r27]->data; + for (var_r31 = 0; var_r31 < 2; var_r31++) { + var_r29 = var_r30->unk_04[var_r31]->data; + var_r29->unk_24 = 9; + } + } + lbl_1_bss_50 = MGSeqCreate(3, 2); + HuAudSStreamPlay(4); + } + lbl_1_bss_54 = 7; + lbl_1_bss_58 = 0; + } + } + } + break; + case 7: + if (++lbl_1_bss_58 > 210.0f) { + lbl_1_bss_50 = -1; + lbl_1_bss_54 = 8; + lbl_1_bss_58 = 0; + } + break; + case 8: + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_DB8; + break; + default: + break; + } + } + lbl_1_bss_5C++; + fn_1_E18(object); +} + +s32 lbl_1_data_10C = 66051; + +s32 lbl_1_data_110[16] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + +s32 lbl_1_data_150[8] = { + 6225920, + 1703936, + 7143424, + 9043968, + 1114112, + 8716288, + 8454144, + 851968, +}; + +UnkM426Struct13 lbl_1_data_170[12] = { + { 6225920, 0xFFFFFFFF }, + { 6225922, 0xFFFFFFFF }, + { 6225923, 0xFFFFFFFF }, + { 6225925, 0xFFFFFFFF }, + { 6225926, 0xFFFFFFFF }, + { 6225940, 0xFFFFFFFF }, + { 6225942, 0xFFFFFFFF }, + { 6225945, 0xFFFFFFFF }, + { 0, 0 }, + { 0, 1 }, + { 6225943, 0xFFFFFFFF }, + { 6226034, 0xFFFFFFFF }, +}; + +s32 lbl_1_data_1D0[2] = { 3735584, 3735592 }; + +void fn_1_DB8(omObjData *arg0) +{ + if (!WipeStatGet()) { + fn_1_7278(); + fn_1_6844(); + fn_1_61E0(); + fn_1_4644(); + fn_1_5B48(); + fn_1_2ADC(); + fn_1_75BC(); + MGSeqKillAll(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + } +} + +void fn_1_E18(omObjData *object) +{ + s32 var_r30; + + var_r30 = 0; + if (WipeStatGet() || object->func == fn_1_DB8) { + return; + } + if (omSysExitReq) { + var_r30 = 1; + } + if (var_r30) { + WipeCreate(2, 0, 60); + HuAudSeqAllFadeOut(100); + object->func = fn_1_DB8; + } +} + +void fn_1_EB8(void) +{ + s32 var_r31; + s32 var_r30; + + for (var_r31 = 0, var_r30 = 0; var_r31 < 4; var_r31++) { + if (!GWPlayerCfg[var_r31].group) { + lbl_1_bss_18[var_r30] = var_r31; + var_r30++; + } + } + if (var_r30 != 2) { + memcpy(&lbl_1_bss_18, &lbl_1_data_10C, 4); + } else { + for (var_r31 = 0; var_r31 < 4; var_r31++) { + if (GWPlayerCfg[var_r31].group) { + lbl_1_bss_18[var_r30] = var_r31; + var_r30++; + } + } + } + for (var_r31 = 0; var_r31 < 2; var_r31++) { + lbl_1_bss_8C[var_r31] = omAddObjEx(lbl_1_bss_98, 32, 0, 0, -1, fn_1_1004); + lbl_1_bss_8C[var_r31]->work[0] = var_r31; + } +} + +void fn_1_1004(omObjData *object) +{ + UnkM426Struct *var_r31; + s32 var_r30; + + var_r31 = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM426Struct), MEMORY_DEFAULT_NUM); + memset(var_r31, 0, sizeof(UnkM426Struct)); + var_r31->unk_00 = object->work[0]; + var_r31->unk_0C[0] = lbl_1_bss_18[var_r31->unk_00 * 2]; + var_r31->unk_0C[1] = lbl_1_bss_18[var_r31->unk_00 * 2 + 1]; + for (var_r30 = 0; var_r30 < 6; var_r30++) { + var_r31->unk_0E[var_r30] = 255; + } + for (var_r30 = 0; var_r30 < 2; var_r30++) { + var_r31->unk_04[var_r30] = lbl_1_bss_7C[var_r31->unk_0C[var_r30]] = omAddObjEx(lbl_1_bss_98, 36, 1, 12, -1, fn_1_125C); + var_r31->unk_04[var_r30]->work[0] = var_r31->unk_0C[var_r30]; + var_r31->unk_04[var_r30]->work[1] = var_r31->unk_00; + var_r31->unk_04[var_r30]->work[2] = var_r30; + } + omSetStatBit(object, 160); + object->func = fn_1_117C; +} + +void fn_1_117C(omObjData *object) +{ + UnkM426Struct *var_r31; + + var_r31 = object->data; + if (lbl_1_bss_5C & 1) { + fn_1_16F8(var_r31->unk_04[0]); + fn_1_16F8(var_r31->unk_04[1]); + return; + } + fn_1_16F8(var_r31->unk_04[1]); + fn_1_16F8(var_r31->unk_04[0]); +} + +void fn_1_11EC(omObjData *object) // TODO this probably gets inlined +{ + s32 var_r30; + UnkM426Struct *var_r29; + + var_r29 = object->data; + for (var_r30 = 0; var_r30 < 2; var_r30++) { + fn_1_2AC8(var_r29->unk_04[var_r30]); + } + object->data = NULL; + object->func = NULL; +} + +void fn_1_125C(omObjData *object) +{ + UnkM426Struct2 *var_r31; + s32 var_r29; + UnkM426Struct *var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + + var_r31 = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(UnkM426Struct2), MEMORY_DEFAULT_NUM); + memset(var_r31, 0, sizeof(UnkM426Struct2)); + var_r31->unk_00 = object->work[1]; + var_r31->unk_04 = object->work[0]; + var_r31->unk_08 = object->work[2]; + var_r26 = GWPlayerCfg[var_r31->unk_04].character; + var_r31->unk_0C = var_r26; + var_r31->unk_10 = GWPlayerCfg[var_r31->unk_04].pad_idx; + var_r31->unk_14 = GWPlayerCfg[var_r31->unk_04].iscom; + var_r31->unk_18 = GWPlayerCfg[var_r31->unk_04].diff; + var_r26 = 0; + var_r27 = var_r31->unk_08 + (var_r31->unk_00 * 2); + var_r31->unk_B0 = -1; + var_r31->unk_B4 = 0; + var_r31->unk_B8 = frand() % 15; + var_r31->unk_BC = 0; + var_r31->unk_1C = 0; + var_r31->unk_20 = 0; + var_r31->unk_24 = 0; + var_r31->unk_28 = 0; + var_r31->unk_2C = 0; + var_r31->unk_30 = 0; + var_r31->unk_34 = 0; + var_r31->unk_38 = 0; + var_r31->unk_3C = 0; + var_r31->unk_40 = lbl_1_data_0[var_r27].x; + if (var_r31->unk_40 < 0.0f) { + var_r31->unk_44 = 90.0f; + } else { + var_r31->unk_44 = -90.0f; + } + var_r31->unk_48 = lbl_1_bss_8C[var_r31->unk_00]; + var_r28 = var_r31->unk_48->data; + if (object != var_r28->unk_04[0]) { + var_r31->unk_4C = var_r28->unk_04[0]; + } else { + var_r31->unk_4C = var_r28->unk_04[1]; + } + memset(&var_r31->unk_50, 0, 0x3C); + var_r31->unk_8C = 0; + var_r31->unk_90 = fn_1_48F0(lbl_1_data_0[var_r27].z); + var_r31->unk_94 = -1; + var_r31->unk_98 = 0.0f; + var_r28->unk_0E[var_r31->unk_90] = var_r31->unk_04; + var_r31->unk_A8 = fn_1_6248(&lbl_1_data_0[var_r27]); + var_r31->unk_AC = 0; + object->trans.x = lbl_1_data_0[var_r27].x; + object->trans.y = lbl_1_data_0[var_r27].y; + object->trans.z = lbl_1_data_0[var_r27].z; + var_r25 = CharModelCreate(var_r31->unk_0C, 4); + object->model[0] = var_r25; + Hu3DModelLayerSet(object->model[0], 2); + Hu3DModelShadowSet(object->model[0]); + CharModelStepTypeSet(var_r31->unk_0C, 0); + for (var_r29 = 0; var_r29 < 12; var_r29++) { + if (lbl_1_data_170[var_r29].unk_04 == -1) { + if ((var_r29 == 11) && (var_r31->unk_0C == 4)) { + object->motion[var_r29] = CharModelMotionCreate(var_r31->unk_0C, DATA_MAKE_NUM(DATADIR_MARIOMOT, 114)); + } else { + object->motion[var_r29] = CharModelMotionCreate(var_r31->unk_0C, lbl_1_data_170[var_r29].unk_00); + } + if (var_r29 == 5) { + CharModelVoiceEnableSet(var_r31->unk_0C, object->motion[var_r29], 0); + } + } else { + object->motion[var_r29] = Hu3DJointMotion( + object->model[0], HuDataSelHeapReadNum(var_r31->unk_0C + lbl_1_data_1D0[lbl_1_data_170[var_r29].unk_04], 268435456, HEAP_DATA)); + } + } + CharModelMotionDataClose(var_r31->unk_0C); + CharModelMotionSet(var_r31->unk_0C, object->motion[var_r31->unk_28]); + Hu3DModelAttrSet(var_r25, 0x40000001); + HuDataDirClose(lbl_1_data_110[var_r26] & 0xFFFF0000); + object->func = NULL; +} + +void fn_1_16F8(omObjData *object) +{ + s32 spA8[3]; + void *sp28; + GXColor sp24; + float sp20; + float sp1C; + s32 sp18; + s32 sp14; + s32 sp10; + GXColor spC; + + float var_f31; + float var_f30; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + float var_f24; + float var_f23; + float var_f22; + float var_f21; + + UnkM426Struct2 *var_r31; + s32 var_r29; + UnkM426Struct2 *var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + s32 var_r23; + s32 var_r22; + s32 var_r21; // this is weird, used as a temporary + + sp18 = 0; + sp14 = 0; + var_r31 = object->data; + var_r28 = var_r31->unk_4C->data; + sp28 = lbl_1_bss_8C[var_r31->unk_00]->data; + var_r24 = object->model[0]; + if (omPauseChk()) { + Hu3DModelTPLvlSet(var_r24, 1.0f); + return; + } + if (var_r31->unk_14) { + sp20 = sp1C = 0.0f; + sp10 = var_r21 = 0; + fn_1_2F5C(object, &sp20, &sp1C, &sp10); + } else { + sp20 = HuPadStkX[var_r31->unk_10]; + sp1C = HuPadStkY[var_r31->unk_10]; + var_r21 = HuPadBtn[var_r31->unk_10]; + sp10 = HuPadBtnDown[var_r31->unk_10]; + } + var_f30 = var_f31 = 0.0f; + var_r27 = var_r25 = -1; + var_f22 = object->trans.x; + var_f21 = object->trans.z; + if (!lbl_1_bss_60) { + switch (var_r31->unk_24) { + case 0: + case 1: + if (var_r31->unk_90 == -1) { + var_r31->unk_90 = fn_1_48F0(object->trans.z); + } else { + if (!lbl_1_bss_40) { + sp20 = sp1C = 0.0f; + + sp10 = var_r21 = 0; + } + if (fabs(sp20) > 8.0) { + var_f30 = 0.25f * sp20; + } + if (fabs(sp1C) > 8.0) { + var_f31 = -(0.25f * sp1C); + } + if (var_r31->unk_3C) { + var_r31->unk_3C--; + } + if (var_r31->unk_94 != -1) { + var_f27 = 16.0f; + } else { + var_f27 = 0.0f; + } + var_r31->unk_50[var_r31->unk_8C] = var_f27; + if (++var_r31->unk_8C >= 15) { + var_r31->unk_8C = 0; + } + for (var_r29 = 0, var_f28 = 0.0f; var_r29 < 15; var_r29++) { + var_f28 += var_r31->unk_50[var_r29]; + } + var_f28 *= 0.06666667f; + if (var_r31->unk_98 != 0.0f) { + var_r26 = 3; + } else if (var_f28 <= 0.0f) { + if (lbl_1_bss_54 == 5) { + var_r26 = 8; + } else { + var_r26 = 0; + } + } else if (var_f28 < 10.0f) { + var_r26 = 1; + } else { + var_r26 = 2; + } + if (var_r26 != var_r31->unk_28) { + var_r31->unk_28 = var_r26; + if (var_r26 == 3) { + CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_28], 0.0f, 8.0f, 0); + } else { + CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_28], 0.0f, 8.0f, 0x40000001); + } + } + if (var_r31->unk_94 == -1) { + if (fabs(var_f31) > 2.0) { + if (var_f31 < 0.0f) { + var_r27 = var_r31->unk_90 - 1; + var_r25 = var_r31->unk_90 - 2; + } else { + var_r27 = var_r31->unk_90 + 1; + var_r25 = var_r31->unk_90 + 2; + } + if ((var_r27 >= 0) && (var_r27 < 6) + && (((var_r28->unk_90 != var_r27) && (var_r28->unk_94 != var_r27)) + || ((var_r28->unk_90 == var_r27) && (var_r28->unk_94 == var_r25) && (var_r25 >= 0) && (var_r25 < 6)) + || ((var_r28->unk_98 != 0.0f) && (var_r28->unk_90 == var_r27)))) { + var_r31->unk_94 = var_r27; + } + } + } + if (var_r31->unk_98 != 0.0f) { + object->trans.y = object->trans.y + var_r31->unk_98; + var_r31->unk_98 -= 3.103333333333333; + if (object->trans.y <= 0.0f) { + var_r31->unk_98 = 0.0f; + object->trans.y = 0.0f; + } + } + if (var_r31->unk_94 != -1) { + var_f25 = var_r31->unk_40; + var_f24 = fn_1_4A68(var_r31->unk_94); + var_f30 = var_f25 - object->trans.x; + var_f31 = var_f24 - object->trans.z; + + var_f27 = sqrtf((var_f30 * var_f30) + (var_f31 * var_f31)); + + if (var_f27 <= var_f28) { + var_r31->unk_90 = var_r31->unk_94; + var_r31->unk_94 = -1; + if (var_r31->unk_3C) { + sp10 |= 256; + } + var_r31->unk_3C = 0; + object->trans.x = var_f25; + object->trans.z = var_f24; + } else if (var_f27 != 0.0f) { + var_f27 = 1.0f / var_f27; + object->trans.x += var_f28 * (var_f30 * var_f27); + object->trans.z += var_f28 * (var_f31 * var_f27); + } + } + var_f30 = object->trans.x - var_f22; + var_f31 = object->trans.z - var_f21; + if (fabs(var_f30) > 8.0 || fabs(var_f31) > 8.0) { + var_f26 = atan2d(var_f30, var_f31); + } else { + if (fabs(sp20) > 8.0 || fabs(sp1C) > 8.0) { + var_f26 = atan2d(sp20, -sp1C); + var_f26 = var_f26; + } else { + var_f26 = object->rot.y; + } + } + object->rot.y = fn_1_770C(var_f26, object->rot.y, 20.0f); + if (var_r31->unk_94 == -1 && var_r31->unk_98 == 0.0f) { + if (sp10 & 256) { + var_r31->unk_2C = 0; + var_r31->unk_24 = 2; + var_r31->unk_28 = 9; + CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_28], 8.0f, 8.0f, 0); + } + } else if (sp10 & 256) { + var_r31->unk_3C = 20; + } + } + break; + case 2: + object->rot.y = fn_1_770C(var_r31->unk_44, object->rot.y, 20.0f); + var_r31->unk_2C++; + if (var_r31->unk_2C == 17) { + lbl_1_bss_C.x = object->trans.x; + lbl_1_bss_C.y = object->trans.y; + lbl_1_bss_C.z = object->trans.z; + if (fn_1_4AF4(&lbl_1_bss_C, object->rot.y, 1)) { + if (!var_r31->unk_00) { + HuAudFXPlay(1601); + } else { + HuAudFXPlay(1602); + } + } + } else if (var_r31->unk_2C >= 20) { + var_r31->unk_24 = 0; + var_r31->unk_2C = 0; + var_r31->unk_28 = 8; + CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_28], 0.0f, 8.0f, 0x40000001); + } + break; + case 3: + object->rot.y = fn_1_770C(var_r31->unk_44, object->rot.y, 20.0f); + object->trans.x += 4.0f * var_r31->unk_9C.x; + object->trans.z += 4.0f * var_r31->unk_9C.z; + object->trans.y += var_r31->unk_9C.y; + var_r31->unk_9C.y -= 3.103333333333333; + if ((object->rot.x -= 30.0f) <= 0.0f) { + object->rot.y += 360.0f; + } + if (fabs(object->trans.x) > 750.0) { + if (object->trans.x > 0.0f) { + object->trans.x = 750.0f; + } else { + object->trans.x = -750.0f; + } + } + if (object->trans.y <= 0.0f) { + HuAudCharVoicePlay(var_r31->unk_0C, 281); + var_r31->unk_9C.x = var_r31->unk_9C.z = 0.0f; + var_r31->unk_9C.y = 28.0f; + object->trans.y = 0.0f; + object->rot.x = 0.0f; + var_r31->unk_24 = 5; + } + break; + case 5: + object->trans.y += var_r31->unk_9C.y; + var_r31->unk_9C.y -= 3.103333333333333; + if (object->trans.y <= 0.0f) { + object->trans.y = 0.0f; + var_r31->unk_9C.y = 0.0f; + var_r31->unk_24 = 6; + var_r31->unk_2C = 0; + HuAudCharVoicePlay(var_r31->unk_0C, 281); + var_r31->unk_28 = 6; + CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_28], 0.0f, 8.0f, 0x40000001); + } + break; + case 6: + var_r31->unk_2C++; + if (var_r31->unk_2C < 60.0f) { + if (lbl_1_bss_40 == 0) { + var_r31->unk_2C = 59; + } + } else if (var_r31->unk_2C == 60.0f) { + var_r31->unk_28 = 7; + CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_28], 0.0f, 8.0f, 0); + } else if (var_r31->unk_2C >= 90.0f) { + var_r31->unk_24 = 7; + var_r31->unk_28 = 8; + CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_28], 0.0f, 8.0f, 0x40000001); + } + break; + case 7: + var_r27 = fn_1_48F0(object->trans.z); + spA8[0] = var_r27; + spA8[1] = var_r27 + 1; + spA8[2] = var_r27 - 1; + if (spA8[1] >= 6) { + spA8[1] = var_r27 - 2; + } + if (spA8[2] < 0) { + spA8[2] = var_r27 + 2; + } + for (var_r29 = 0, var_r31->unk_94 = -1; var_r29 < 3; var_r29++) { + if (var_r28->unk_90 != spA8[var_r29] && var_r28->unk_94 != spA8[var_r29] && spA8[var_r29] >= 0 && spA8[var_r29] < 6) { + var_r31->unk_94 = spA8[var_r29]; + break; + } + } + if (var_r31->unk_94 != -1) { + var_r31->unk_24 = 1; + var_r31->unk_2C = 0; + } + break; + case 8: + case 9: + object->rot.y = fn_1_770C(0.0f, object->rot.y, 10.0f); + if (var_r31->unk_24 == 8) { + var_r26 = 10; + } else { + var_r26 = 11; + } + if (var_r26 != var_r31->unk_28) { + var_r31->unk_28 = var_r26; + CharModelMotionShiftSet(var_r31->unk_0C, object->motion[var_r31->unk_28], 0.0f, 8.0f, 0); + } + break; + } + if (var_r31->unk_AC) { + var_r31->unk_AC--; + } + var_r22 = var_r31->unk_AC / 2; + if (var_r22 > 16) { + var_r22 = 16; + } + for (var_r29 = 0; var_r29 < var_r22; var_r29++) { + lbl_1_bss_C.y = object->trans.y + ((frand() % 70) + 35); + lbl_1_bss_C.x = object->trans.x + ((frand() % 50) + 25); + lbl_1_bss_C.z = object->trans.z + ((frand() % 50) + 25); + lbl_1_bss_0.x = 0.0f; + lbl_1_bss_0.z = 0.0f; + lbl_1_bss_0.y = 0.0f; + + var_r23 = (frand() & 63) + 128; + + sp24.r = var_r23; + sp24.g = var_r23; + sp24.b = var_r23; + sp24.a = 64; + + fn_1_63B8(var_r31->unk_A8, &lbl_1_bss_C, NULL, 100.0f, sp24); + } + if (var_r31->unk_30) { + if (++var_r31->unk_38 > 1) { + var_r31->unk_38 = 0; + var_r31->unk_34 = var_r31->unk_34 ^ 1; + } + } + if (((var_r21 = var_r31->unk_24) == 0 || var_r31->unk_24 == 1 || var_r31->unk_24 == 2) && var_r31->unk_30) { + if (var_r31->unk_30) { + var_r31->unk_30 = var_r31->unk_30 - 1; + } + if (var_r31->unk_34) { + Hu3DModelTPLvlSet(var_r24, 0.25f); + return; + } + Hu3DModelTPLvlSet(var_r24, 1.0f); + return; + } + Hu3DModelTPLvlSet(var_r24, 1.0f); + } +} + +Vec lbl_1_data_200[2] = { + { -473.71, 432.536, -569.82 }, + { 473.71, 432.536, -569.82 }, +}; + +s32 lbl_1_data_218[2] = { 6357019, 6357020 }; + +s16 lbl_1_data_220[6] = { 11, 31, 0, 0, -33, -9 }; + +Vec lbl_1_data_22C[4] = { + { -0.5f, 0.5f, 0.0f }, + { 0.5f, 0.5f, 0.0f }, + { 0.5f, -0.5f, 0.0f }, + { -0.5f, -0.5f, 0.0f }, +}; + +Vec2f lbl_1_data_25C[4] = { + { 0.0f, 0.0f }, + { 0.25f, 0.0f }, + { 0.25f, 0.25f }, + { 0.0f, 0.25f }, +}; + +s32 lbl_1_data_27C[] = { + 0xC2480000, + 0x42480000, + 0x00000000, + 0x42480000, + 0x42480000, + 0x00000000, + 0x42480000, + 0xC2480000, + 0x00000000, + 0xC2480000, + 0xC2480000, + 0x00000000, +}; + +s32 lbl_1_data_2AC[] = { + 0xFFFFA080, + 0xFFFFFFFF, + 0xFFFFFFFF, + 0xFFFFFFFF, +}; + +s32 lbl_1_data_2BC[] = { + 0x00000000, + 0x00000000, + 0x3F800000, + 0x00000000, + 0x3F800000, + 0x3F800000, + 0x00000000, + 0x3F800000, +}; + +void fn_1_2AC8(omObjData *object) +{ + object->data = NULL; + object->func = NULL; +} + +void fn_1_2ADC(void) +{ + omObjData *var_r31; + s32 var_r30; + s32 var_r29; + UnkM426Struct *var_r27; + omObjData *var_r28; + + for (var_r30 = 0; var_r30 < 2; var_r30++) { + var_r31 = lbl_1_bss_8C[var_r30]; + var_r27 = var_r31->data; + for (var_r29 = 0; var_r29 < 2; var_r29++) { + var_r28 = var_r27->unk_04[var_r29]; + var_r28->data = 0; + var_r28->func = 0; + } + var_r31->data = NULL; + var_r31->func = NULL; + } +} + +void fn_1_2B74(Vec *arg0) +{ + Vec spC; + void *sp8; + + UnkM426Struct2 *var_r31; + omObjData *var_r30; + UnkM426Struct *var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + + if (arg0->x < 0.0f) { + var_r26 = 0; + } else { + var_r26 = 1; + } + if (lbl_1_bss_8C[var_r26]) { + var_r29 = lbl_1_bss_8C[var_r26]->data; + if (var_r29) { + for (var_r28 = 0; var_r28 < 2; var_r28++) { + var_r30 = var_r29->unk_04[var_r28]; + var_r31 = var_r30->data; + sp8 = var_r31->unk_4C->data; + if (var_r31 && var_r31->unk_24 <= 2) { + if (fabs(var_r30->trans.z - arg0->z) < 140.0 && !var_r31->unk_30) { + var_r31->unk_2C = 0; + var_r31->unk_24 = 3; + var_r31->unk_AC = 32; + var_r31->unk_30 = 90; + var_r31->unk_90 = var_r31->unk_94 = -1; + if (!var_r29->unk_00) { + var_r31->unk_9C.x = -1.0f; + } else { + var_r31->unk_9C.x = 1.0f; + } + if (fabs(var_r31->unk_4C->trans.z - var_r30->trans.z) < 100.0) { + var_r31->unk_90 = fn_1_48F0(var_r30->trans.z); + if (var_r31->unk_90 == 5) { + var_r31->unk_9C.z = -1.0f; + } else if (!var_r31->unk_90) { + var_r31->unk_9C.z = 1.0f; + } else if ((var_r31->unk_4C->trans.z - var_r30->trans.z) < 0.0f) { + var_r31->unk_9C.z = 1.0f; + } else { + var_r31->unk_9C.z = -1.0f; + } + } else { + var_r31->unk_9C.z = 0.0f; + } + var_r31->unk_9C.y = 45.5f; + var_r31->unk_28 = 5; + CharModelMotionShiftSet(var_r31->unk_0C, var_r30->motion[var_r31->unk_28], 0.0f, 8.0f, 0); + spC.x = var_r30->trans.x; + spC.y = var_r30->trans.y; + spC.z = var_r30->trans.z; + fn_1_6310(var_r31->unk_A8, &spC); + var_r27 = HuAudFXPlay(1606); + if (var_r27 != -1) { + HuAudFXPanning(var_r27, var_r29->unk_00 * 64 + 32); + } + HuAudCharVoicePlay(var_r31->unk_0C, 291); + if (var_r27 != -1) { + HuAudFXPanning(var_r27, var_r29->unk_00 * 64 + 32); + } + } + } + } + } + } +} + +s32 fn_1_2EDC(void) +{ + UnkM426Struct2 *var_r31; + s32 var_r30; + + for (var_r30 = 0; var_r30 < 4; var_r30++) { + var_r31 = lbl_1_bss_7C[var_r30]->data; + if ((var_r31->unk_24 != 0 && var_r31->unk_24 != 1) || var_r31->unk_94 != -1) { + break; + } + } + if (var_r30 < 4) { + return 0; + } + return 1; +} + +void fn_1_2F5C(omObjData *object, float *arg1, float *arg2, s32 *arg3) +{ + s32 sp14[6]; + s32 spC[2]; + UnkM426Struct *sp8; + + float var_f31; + + UnkM426Struct2 *var_r31; + s32 var_r30; + s32 var_r29; + UnkM426Struct2 *var_r28; + s32 var_r27; + s32 var_r26; + omObjData *var_r24; + UnkM426Struct *var_r23; + s32 var_r22; + s32 var_r21; + s32 var_r20; + + var_r27 = 0; + var_r22 = 0; + var_r31 = object->data; + var_r28 = var_r31->unk_4C->data; + sp8 = lbl_1_bss_8C[var_r31->unk_00]->data; + + var_r23 = lbl_1_bss_8C[var_r31->unk_00 ^ 1]->data; + var_r24 = var_r23->unk_04[0]; + spC[0] = fn_1_48F0(var_r24->trans.z); + var_r24 = var_r23->unk_04[1]; + spC[1] = fn_1_48F0(var_r24->trans.z); + var_r29 = var_r28->unk_90; + + if (var_r29 == -1) { + var_r29 = var_r28->unk_94; + } + if (lbl_1_bss_54 == 5) { + if (var_r31->unk_24 != 0 && var_r31->unk_24 != 1 && var_r31->unk_24 != 2) { + var_r22 = 1; + } + if (var_r31->unk_B0 != -1 && var_r29 != -1 + && ((var_r29 <= var_r31->unk_90 && var_r31->unk_B0 <= var_r29) || (var_r29 >= var_r31->unk_90 && var_r31->unk_B0 >= var_r29))) { + var_r22 = 1; + } + if (var_r22) { + var_r31->unk_B0 = -1; + var_r31->unk_B8 = 0; + var_r31->unk_B4 = 0; + var_r31->unk_BC = 3; + return; + } + switch (var_r31->unk_BC) { + case 0: + if (var_r31->unk_24 != 0 && var_r31->unk_24 != 1 && var_r31->unk_24 != 2) { + var_r31->unk_B8 = 0; + } + if (--var_r31->unk_B8 <= 0) { + var_r31->unk_B8 = 0; + var_r31->unk_B4 = 0; + var_r31->unk_BC = 3; + return; + } + break; + case 1: + if (var_r31->unk_B0 != -1) { + if (++var_r31->unk_B4 < 120.0f) { + if (var_r31->unk_90 == var_r31->unk_B0) { + var_r31->unk_B0 = -1; + return; + } + if (var_r31->unk_90 < var_r31->unk_B0) { + *arg2 = -64.0f; + return; + } + *arg2 = 64.0f; + return; + } + } + var_r31->unk_B8 = 0; + var_r31->unk_B4 = 0; + var_r31->unk_BC = 3; + return; + case 2: + if (var_r31->unk_B0 != -1) { + if (++var_r31->unk_B4 < 120.0f && var_r31->unk_B0 != var_r28->unk_B0) { + if (var_r31->unk_90 == var_r31->unk_B0) { + *arg3 |= 256; + var_r31->unk_B0 = -1; + var_r31->unk_B4 = 0; + var_r31->unk_B8 = (50.0f + (frand() % 15)) - (var_r31->unk_18 * 10); + var_r31->unk_BC = 0; + return; + } + if (var_r31->unk_90 < var_r31->unk_B0) { + *arg2 = -64.0f; + return; + } + *arg2 = 64.0f; + return; + } + var_r31->unk_B0 = -1; + var_r31->unk_B4 = 0; + return; + } + var_r31->unk_B8 = 0; + var_r31->unk_B4 = 0; + var_r31->unk_BC = 3; + return; + case 3: + var_r31->unk_B0 = -1; + if (var_r29 == -1) { + for (var_r30 = 0; var_r30 < 6; var_r27++, var_r30++) { + sp14[var_r27] = var_r30; + } + } else { + if (var_r31->unk_90 < var_r29) { + for (var_r30 = 0; var_r30 < 3; var_r27++, var_r30++) { + sp14[var_r27] = var_r30; + } + } else { + for (var_r30 = 3; var_r30 < 6; var_r27++, var_r30++) { + sp14[var_r27] = var_r30; + } + } + if (var_r31->unk_18 < var_r28->unk_18) { + for (var_r30 = 0; var_r30 < 6; var_r30++) { + if (sp14[var_r30] == 3) { + sp14[var_r30] = -1; + } + } + } + } + for (var_r30 = 0, var_r21 = 256; var_r30 < var_r27; var_r30++) { + if (sp14[var_r30] >= 0) { + var_r20 = fn_1_4894(sp14[var_r30]); + if (var_r20 != var_r31->unk_00) { + var_r26 = (frand() % 5) - var_r31->unk_18; + if (var_r26 < 0) { + var_r26 = 0; + } + var_r26 += (s32)fabs(var_r28->unk_90 - var_r31->unk_B0); + if (spC[0] == sp14[var_r30] || spC[1] == sp14[var_r30]) { + var_r26 += var_r31->unk_18 * 2; + } + if (var_r21 > var_r26) { + var_r31->unk_B0 = sp14[var_r30]; + var_r21 = var_r26; + } + } + } + } + if (var_r31->unk_B0 == -1) { + if (var_r29 == -1) { + if (var_r31->unk_90 < 3) { + var_r31->unk_B0 = 1; + } else { + var_r31->unk_B0 = 4; + } + } else if (var_r29 > var_r31->unk_90) { + var_r31->unk_B0 = 1; + } else { + var_r31->unk_B0 = 4; + } + var_r31->unk_BC = 1; + } else { + var_r31->unk_BC = 2; + } + var_r31->unk_B8 = 0; + var_r31->unk_B4 = 0; + break; + } + } +} + +void fn_1_3654(s32 arg0) +{ + omVibrate(lbl_1_bss_18[arg0 * 2], 12, 6, 6); + omVibrate(lbl_1_bss_18[arg0 * 2 + 1], 12, 6, 6); +} + +void fn_1_36C4(void) +{ + lbl_1_bss_78 = omAddObjEx(lbl_1_bss_98, 64, 14, 0, -1, fn_1_3714); +} + +void fn_1_3714(omObjData *object) +{ + Vec sp8; + + UnkM426Struct3 *var_r31; + s32 var_r29; + UnkM426Struct3 *var_r28; + s32 var_r27; + ModelData *var_r26; + s32 var_r25; + + var_r31 = var_r28 = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, 6 * sizeof(UnkM426Struct3), MEMORY_DEFAULT_NUM); + memset(var_r31, 0, 6 * sizeof(UnkM426Struct3)); + lbl_1_bss_30 = 0; + object->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M426, 2)); + object->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M426, 3)); + object->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M426, 20)); + object->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M426, 21)); + object->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M426, 11)); + object->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M426, 12)); + object->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M426, 13)); + object->model[7] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M426, 22)); + object->model[8] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M426, 14)); + object->model[9] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M426, 15)); + object->model[10] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M426, 16)); + object->model[11] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M426, 17)); + object->model[12] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M426, 18)); + object->model[13] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M426, 19)); + Hu3DModelAttrSet(object->model[4], 1); + Hu3DModelAttrSet(object->model[5], 1); + Hu3DModelAttrSet(object->model[6], 1); + Hu3DModelAttrSet(object->model[8], 1); + Hu3DModelAttrSet(object->model[9], 1); + Hu3DModelAttrSet(object->model[11], 1); + Hu3DModelAttrSet(object->model[13], 1); + for (var_r29 = 0; var_r29 < 14; var_r29++) { + Hu3DModelLayerSet(object->model[var_r29], 2); + } + Hu3DModelShadowMapSet(object->model[0]); + Hu3DModelShadowMapSet(object->model[1]); + object->work[0] = 0; + object->work[1] = 0; + object->work[2] = 0; + object->work[3] = 0; + for (var_r29 = 0; var_r29 < 6; var_r29++, var_r31++) { + var_r31->unk_00 = var_r29; + var_r31->unk_04 = -1; + var_r31->unk_08 = var_r29 & 1; + var_r31->unk_0C = 0; + if (var_r29 == 0) { + var_r31->unk_10 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M426, 23)); + Hu3DModelShadowMapSet(var_r31->unk_10); + var_r31->unk_14 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M426, 5)); + var_r31->unk_18 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M426, 4)); + var_r31->unk_1C = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M426, 7)); + var_r31->unk_20 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M426, 6)); + var_r31->unk_24 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M426, 8)); + var_r31->unk_28 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M426, 9)); + } else { + var_r31->unk_10 = Hu3DModelLink(var_r28->unk_10); + Hu3DModelShadowMapSet(var_r31->unk_10); + var_r31->unk_14 = Hu3DModelLink(var_r28->unk_14); + var_r31->unk_18 = Hu3DModelLink(var_r28->unk_18); + var_r31->unk_1C = Hu3DModelLink(var_r28->unk_1C); + var_r31->unk_20 = Hu3DModelLink(var_r28->unk_20); + var_r31->unk_24 = Hu3DModelLink(var_r28->unk_24); + var_r31->unk_28 = Hu3DModelLink(var_r28->unk_28); + } + Hu3DModelLayerSet(var_r31->unk_10, 2); + Hu3DModelLayerSet(var_r31->unk_14, 4); + Hu3DModelLayerSet(var_r31->unk_18, 4); + Hu3DModelLayerSet(var_r31->unk_1C, 2); + Hu3DModelLayerSet(var_r31->unk_20, 2); + Hu3DModelLayerSet(var_r31->unk_24, 2); + Hu3DModelLayerSet(var_r31->unk_28, 2); + var_r31->unk_34 = -1; + var_r31->unk_38 = -425.0f + (140.0f * var_r29); + Hu3DModelPosSet(var_r31->unk_10, 0.0f, 50.0f, var_r31->unk_38); + Hu3DModelPosSet(var_r31->unk_14, 0.0f, 50.0f, var_r31->unk_38); + Hu3DModelPosSet(var_r31->unk_18, 0.0f, 50.0f, var_r31->unk_38); + Hu3DModelPosSet(var_r31->unk_1C, -500.0f, 30.000002f, var_r31->unk_38); + Hu3DModelPosSet(var_r31->unk_20, -500.0f, 50.0f, var_r31->unk_38); + Hu3DModelPosSet(var_r31->unk_24, 500.0f, 50.0f, var_r31->unk_38); + Hu3DModelPosSet(var_r31->unk_28, 500.0f, 30.000002f, var_r31->unk_38); + fn_1_4738(var_r29, var_r31->unk_08); + sp8.x = 0.0f; + sp8.y = 500.0f; + sp8.z = var_r31->unk_38; + var_r25 = 0.3f * (var_r31->unk_00 * 60); + var_r31->unk_34 = fn_1_5C6C(var_r31->unk_00, var_r25, &sp8); + } + lbl_1_bss_24 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M426, 1), MEMORY_DEFAULT_NUM)); + for (var_r29 = 0; var_r29 < 2; var_r29++) { + var_r27 = Hu3DHookFuncCreate(fn_1_88B4); + var_r26 = &Hu3DData[var_r27]; + var_r26->unk_120 = (ParticleData *)lbl_1_bss_24; // TODO fix this? + Hu3DModelPosSetV(var_r27, &lbl_1_data_200[var_r29]); + Hu3DModelScaleSet(var_r27, 4.0f, 4.0f, 4.0f); + Hu3DModelLayerSet(var_r27, 4); + } + object->func = fn_1_3EFC; +} + +void fn_1_3EFC(omObjData *object) +{ + float var_f31; + float var_f30; + float var_f29; + + UnkM426Struct3 *var_r30; + LightData *var_r29; + s32 var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + s32 var_r24; + + var_r30 = object->data; + for (var_r28 = 0; var_r28 < 6; var_r28++, var_r30++) { + if (var_r30->unk_04 != -1) { + var_r30->unk_0C++; + var_f31 = 0.5f * var_r30->unk_0C; + if (!var_r30->unk_04) { + var_f29 = 30.000002f + (19.999998f * var_f31); + var_f30 = 50.0f + (-19.999998f * var_f31); + Hu3DModelPosSet(var_r30->unk_20, -500.0f, var_f30, var_r30->unk_38); + Hu3DModelPosSet(var_r30->unk_28, 500.0f, var_f29, var_r30->unk_38); + } else { + var_f29 = 50.0f + (-19.999998f * var_f31); + var_f30 = 30.000002f + (19.999998f * var_f31); + Hu3DModelPosSet(var_r30->unk_1C, -500.0f, var_f30, var_r30->unk_38); + Hu3DModelPosSet(var_r30->unk_24, 500.0f, var_f29, var_r30->unk_38); + } + if (var_r30->unk_0C >= 2) { + if (var_r30->unk_04 == 0) { + HuAudFXPlay(1600); + } else { + HuAudFXPlay(1599); + } + fn_1_4738(var_r28, var_r30->unk_04); + var_r30->unk_04 = -1; + var_r30->unk_0C = 0; + Hu3DModelPosSet(var_r30->unk_1C, -500.0f, 30.000002f, var_r30->unk_38); + Hu3DModelPosSet(var_r30->unk_20, -500.0f, 50.0f, var_r30->unk_38); + Hu3DModelPosSet(var_r30->unk_24, 500.0f, 50.0f, var_r30->unk_38); + Hu3DModelPosSet(var_r30->unk_28, 500.0f, 30.000002f, var_r30->unk_38); + } + } + } + Hu3DModelAttrSet(object->model[3], 1); + Hu3DModelAttrSet(object->model[4], 1); + Hu3DModelAttrSet(object->model[5], 1); + Hu3DModelAttrSet(object->model[6], 1); + Hu3DModelAttrSet(object->model[7], 1); + Hu3DModelAttrSet(object->model[8], 1); + Hu3DModelAttrSet(object->model[9], 1); + Hu3DModelAttrSet(object->model[10], 1); + Hu3DModelAttrSet(object->model[11], 1); + Hu3DModelAttrSet(object->model[12], 1); + Hu3DModelAttrSet(object->model[13], 1); + + if (lbl_1_bss_30) { + if (++object->work[0] >= 20) { + object->work[0] = 0; + } + if (++object->work[1] >= 15) { + object->work[1] = 0; + } + if (++object->work[2] >= 20) { + object->work[2] = 0; + } + lbl_1_bss_30--; + } else { + if (object->work[0]) { + if (++object->work[0] >= 20) { + object->work[0] = 0; + } + } + if (object->work[1]) { + if (++object->work[1] >= 15) { + object->work[1] = 0; + } + } + if (object->work[2]) { + if (++object->work[2] >= 20) { + object->work[2] = 0; + } + } + } + if (++object->work[3] >= 20) { + object->work[3] = 0; + } + Hu3DModelAttrReset(object->model[(object->work[0] / 5) + 3], 1); + Hu3DModelAttrReset(object->model[(object->work[1] / 5) + 7], 1); + Hu3DModelAttrReset(object->model[(object->work[2] / 10) + 10], 1); + Hu3DModelAttrReset(object->model[(object->work[3] / 10) + 12], 1); + + var_r29 = &Hu3DGlobalLight[lbl_1_bss_2C]; + var_r27 = lbl_1_data_48.r + (s32)(255.0f * lbl_1_bss_28); + if (var_r27 > 255) { + var_r27 = 255; + } + var_r26 = lbl_1_data_48.g + (s32)(255.0f * lbl_1_bss_28); + if (var_r26 > 255) { + var_r26 = 255; + } + var_r25 = lbl_1_data_48.b + (s32)(255.0f * lbl_1_bss_28); + if (var_r25 > 255) { + var_r25 = 255; + } + var_r24 = lbl_1_data_48.a + (s32)(255.0f * lbl_1_bss_28); + if (var_r24 > 255) { + var_r24 = 255; + } + + var_r29->color.r = var_r27; + var_r29->color.g = var_r26; + var_r29->color.b = var_r25; + var_r29->color.a = var_r24; + + if (lbl_1_bss_28 > 0.0f) { + if ((lbl_1_bss_28 -= 0.05f) < 0.0f) { + lbl_1_bss_28 = 0.0f; + } + } +} + +void fn_1_45FC(omObjData *object) +{ + fn_1_8E10(lbl_1_bss_24); + object->data = NULL; + object->func = NULL; +} + +void fn_1_4644(void) +{ + omObjData *var_r31; + + var_r31 = lbl_1_bss_78; + fn_1_45FC(var_r31); + lbl_1_bss_78 = NULL; +} + +void fn_1_46A4(s32 arg0, s32 arg1) +{ + UnkM426Struct3 *var_r31; + + if (!lbl_1_bss_78 || arg0 < 0 || arg0 >= 6) { + return; + } + var_r31 = lbl_1_bss_78->data; + var_r31 = &var_r31[arg0]; + if (var_r31->unk_04 == -1) { + if (var_r31->unk_08 != arg1) { + var_r31->unk_04 = arg1; + } + var_r31->unk_0C = 0; + return; + } + if (var_r31->unk_04 != arg1) { + var_r31->unk_04 = arg1; + var_r31->unk_0C = 0; + } +} + +void fn_1_4738(s32 arg0, s32 arg1) +{ + UnkM426Struct3 *var_r31; + + if (!lbl_1_bss_78 || arg0 < 0 || arg0 >= 6) { + return; + } + var_r31 = lbl_1_bss_78->data; + var_r31 = &var_r31[arg0]; + var_r31->unk_08 = arg1; + switch (arg1) { + case 0: + Hu3DModelAttrReset(var_r31->unk_14, 1); + Hu3DModelAttrReset(var_r31->unk_1C, 1); + Hu3DModelAttrReset(var_r31->unk_24, 1); + Hu3DModelAttrSet(var_r31->unk_18, 1); + Hu3DModelAttrSet(var_r31->unk_20, 1); + Hu3DModelAttrSet(var_r31->unk_28, 1); + break; + case 1: + Hu3DModelAttrSet(var_r31->unk_14, 1); + Hu3DModelAttrSet(var_r31->unk_1C, 1); + Hu3DModelAttrSet(var_r31->unk_24, 1); + Hu3DModelAttrReset(var_r31->unk_18, 1); + Hu3DModelAttrReset(var_r31->unk_20, 1); + Hu3DModelAttrReset(var_r31->unk_28, 1); + break; + default: + break; + } +} + +s32 fn_1_4894(s32 arg0) +{ + UnkM426Struct3 *var_r31; + + if (!lbl_1_bss_78 || arg0 < 0 || arg0 >= 6) { + return 0; + } + var_r31 = lbl_1_bss_78->data; + var_r31 = &var_r31[arg0]; + return var_r31->unk_08; +} + +s32 fn_1_48F0(float arg8) +{ + float var_f31; + + UnkM426Struct3 *var_r31; + s32 var_r30; + s32 var_r29; + + if (!lbl_1_bss_78) { + return -1; + } + var_r31 = lbl_1_bss_78->data; + if (!lbl_1_bss_78->data) { + return -1; + } + var_f31 = fabs(var_r31->unk_38 - arg8); + var_r29 = 0; + var_r31++; + for (var_r30 = 1; var_r30 < 6; var_r30++, var_r31++) { + if (var_f31 > fabs(var_r31->unk_38 - arg8)) { + var_f31 = fabs(var_r31->unk_38 - arg8); + var_r29 = var_r30; + } + } + return var_r29; +} + +float fn_1_4A68(s32 arg0) +{ + UnkM426Struct3 *var_r31; + + if (!lbl_1_bss_78 || arg0 < 0 || arg0 >= 6) { + return 0.0f; + } + var_r31 = lbl_1_bss_78->data; + if (!lbl_1_bss_78->data) { + return 0.0f; + } + return var_r31[arg0].unk_38; +} + +s32 fn_1_4AF4(Vec *arg0, float arg8, s32 arg1) +{ + float var_f31; + float var_f30; + float var_f28; + float var_f26; + float var_f25; + float var_f24; + + UnkM426Struct3 *var_r30; + s32 var_r29; + + if (!lbl_1_bss_78) { + return 0; + } + var_r30 = lbl_1_bss_78->data; + if (arg0->x < 0.0f) { + var_f28 = -500.0f; + } else { + var_f28 = 500.0f; + } + for (var_r29 = 0; var_r29 < 6; var_r29++, var_r30++) { + var_f24 = var_r30->unk_38; + var_f31 = var_f28 - arg0->x; + var_f30 = var_f24 - arg0->z; + + var_f25 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + var_f26 = atan2d(var_f31, var_f30); + if (var_f25 < 150.0f && (fabs(fn_1_75F4(var_f26, arg8)) < 30.0f)) { + break; + } + } + if (var_r29 >= 6) { + return 0; + } + if (arg0->x < 0.0f) { + if (!var_r30->unk_08) { + return 0; + } + } else if (var_r30->unk_08 == 1) { + return 0; + } + if (arg1) { + fn_1_46A4(var_r29, var_r30->unk_08 ^ 1); + } + return 1; +} + +void fn_1_4EC4(void) +{ + lbl_1_bss_74 = omAddObjEx(lbl_1_bss_98, 64, 0, 0, -1, fn_1_4F14); +} + +void fn_1_4F14(omObjData *object) +{ + UnkM426Struct4 *var_r31; + UnkM426Struct4 *var_r30; + s32 var_r29; + + var_r31 = var_r30 = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, 6 * sizeof(UnkM426Struct4), MEMORY_DEFAULT_NUM); + memset(var_r31, 0, 6 * sizeof(UnkM426Struct4)); + for (var_r29 = 0; var_r29 < 6; var_r29++, var_r31++) { + if (var_r29 == 0) { + var_r31->unk_00 = Hu3DModelCreateFile(3735579); + } else { + var_r31->unk_00 = Hu3DModelLink(var_r30->unk_00); + } + Hu3DModelShadowSet(var_r31->unk_00); + Hu3DModelLayerSet(var_r31->unk_00, 2); + if (var_r29 == 0) { + var_r31->unk_08 = Hu3DJointMotion(var_r31->unk_00, HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M426, 28), MEMORY_DEFAULT_NUM, HEAP_DATA)); + var_r31->unk_0C = Hu3DJointMotion(var_r31->unk_00, HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_M426, 29), MEMORY_DEFAULT_NUM, HEAP_DATA)); + } else { + var_r31->unk_08 = var_r30->unk_08; + var_r31->unk_0C = var_r30->unk_0C; + } + var_r31->unk_18 = var_r31->unk_1C = 2; + var_r31->unk_38 = 0; + var_r31->unk_20 = var_r29; + var_r31->unk_24 = -1; + var_r31->unk_28 = 5; + var_r31->unk_2C = 0; + var_r31->unk_30 = 0; + var_r31->unk_34 = 0.0f; + var_r31->unk_3C = var_r31->unk_40 = var_r31->unk_44 = 0.0f; + var_r31->unk_48 = 0.0f; + var_r31->unk_4C = 0.0f; + Hu3DModelAttrSet(var_r31->unk_00, 1); + Hu3DModelScaleSet(var_r31->unk_00, 0.8f, 0.8f, 0.8f); + } + object->func = fn_1_5134; +} + +void fn_1_5134(omObjData *object) +{ + Vec sp8; + + float var_f31; + + UnkM426Struct4 *var_r31; + s32 var_r27; + s32 var_r26; + + var_r31 = object->data; + for (var_r27 = 0; var_r27 < 6; var_r27++, var_r31++) { + var_r26 = fn_1_4894(var_r31->unk_24); + switch (var_r31->unk_28) { + case 0: + if (lbl_1_bss_38) { + if (--var_r31->unk_2C <= 0) { + if (!var_r31->unk_38) { + Hu3DModelAttrReset(var_r31->unk_00, 1); + } + Hu3DMotionSet(var_r31->unk_00, var_r31->unk_08); + Hu3DModelAttrSet(var_r31->unk_00, 1073741825); + HuAudFXPlay(1607); + var_r31->unk_2C = 0; + var_r31->unk_28 = 1; + } + } + break; + case 1: + if ((var_r31->unk_40 -= 50.0f) <= 50.0f) { + if (lbl_1_bss_54 <= 4) { + fn_1_3654(0); + fn_1_3654(1); + } + HuAudFXPlay(1598); + var_r31->unk_40 = 50.0f; + var_r31->unk_30 = 0; + var_r31->unk_28 = 2; + } + break; + case 2: + if (lbl_1_bss_3C) { + var_r31->unk_30 = 0; + var_r31->unk_28 = 3; + Hu3DMotionShiftSet(var_r31->unk_00, var_r31->unk_0C, 0.0f, 8.0f, 0x40000001); + } else { + var_r31->unk_48 = fn_1_770C(0.0f, var_r31->unk_48, 10.0f); + } + break; + case 3: + if (!var_r26) { + var_f31 = 90.0f; + } else { + var_f31 = 270.0f; + } + if (fabs(fn_1_75F4(var_f31, var_r31->unk_48)) < 5.0) { + var_r31->unk_48 = var_f31; + if ((var_r31->unk_34 += 0.1f) > lbl_1_bss_34) { + var_r31->unk_34 = lbl_1_bss_34; + } + } else { + var_r31->unk_48 = fn_1_770C(var_f31, var_r31->unk_48, 10.0f); + if ((var_r31->unk_34 -= 0.1f) < 0.0f) { + var_r31->unk_34 = 0.0f; + } + } + if (var_r31->unk_34 > 0.0f) { + var_r31->unk_3C = var_r31->unk_3C + (var_r31->unk_34 * sind(var_r31->unk_48)); + } + Hu3DMotionSpeedSet(var_r31->unk_00, 1.4f * (0.33333334f * var_r31->unk_34)); + if (lbl_1_bss_3C == 0) { + Hu3DMotionShiftSet(var_r31->unk_00, var_r31->unk_08, 0.0f, 8.0f, 1073741825); + var_r31->unk_2C = 0; + var_r31->unk_30 = 0; + var_r31->unk_28 = 2; + } + if (fabs(var_r31->unk_3C) >= 400.0) { + var_r31->unk_34 = 0.0f; + if (var_r31->unk_3C > 0.0f) { + var_r31->unk_3C = 399.0f; + } else { + var_r31->unk_3C = -399.0f; + } + var_r31->unk_18 = 0; + sp8.x = var_r31->unk_3C; + sp8.y = var_r31->unk_40; + sp8.z = var_r31->unk_44; + fn_1_6888(&sp8); + if (var_r31->unk_3C < 0.0f) { + lbl_1_bss_1C[0]--; + fn_1_3654(0); + HuAudFXPlay(1603); + } else { + lbl_1_bss_1C[1]--; + fn_1_3654(1); + HuAudFXPlay(1604); + } + if (lbl_1_bss_1C[0] < 0) { + lbl_1_bss_1C[0] = 0; + } + if (lbl_1_bss_1C[1] < 0) { + lbl_1_bss_1C[1] = 0; + } + lbl_1_bss_30 = 60; + lbl_1_bss_28 = 1.0f; + var_r31->unk_30 = 0; + var_r31->unk_28 = 4; + } + break; + case 4: + if (++var_r31->unk_30 >= 20) { + sp8.x = var_r31->unk_3C; + sp8.y = var_r31->unk_40; + sp8.z = var_r31->unk_44; + + fn_1_2B74(&sp8); + if (var_r31->unk_3C < 0.0f) { + fn_1_46A4(var_r31->unk_24, 0); + } else { + fn_1_46A4(var_r31->unk_24, 1); + } + var_r31->unk_28 = 5; + + if (var_r26 == 0) { + var_r31->unk_4C += 30.000002f; + } else { + var_r31->unk_4C -= 30.000002f; + } + if (fabs(var_r31->unk_4C) > 150.0) { + if (!var_r26) { + var_r31->unk_4C = 150.0f; + } else { + var_r31->unk_4C = -150.0f; + } + } + sp8.x = var_r31->unk_4C; + sp8.y = 500.0f; + sp8.z = var_r31->unk_44; + fn_1_5C6C(var_r31->unk_24, 0, &sp8); + } + break; + case 5: + break; + default: + break; + } + if (var_r31->unk_18 != var_r31->unk_1C) { + if (var_r31->unk_18 < 0 || var_r31->unk_18 > 7) { + var_r31->unk_18 = 2; + } + Hu3DModelLayerSet(var_r31->unk_00, var_r31->unk_18); + var_r31->unk_1C = var_r31->unk_18; + } + if (var_r31->unk_28 != 5 && var_r31->unk_28) { + if (!var_r31->unk_38) { + Hu3DModelPosSet(var_r31->unk_00, var_r31->unk_3C, var_r31->unk_40, var_r31->unk_44); + Hu3DModelRotSet(var_r31->unk_00, 0.0f, var_r31->unk_48, 0.0f); + } else { + Hu3DModelAttrSet(var_r31->unk_00, 1); + } + } + } +} + +void fn_1_5B34(omObjData *object) +{ + object->data = NULL; + object->func = NULL; +} + +void fn_1_5B48(void) +{ + omObjData *var_r31; + + var_r31 = lbl_1_bss_74; + fn_1_5B34(var_r31); + lbl_1_bss_74 = NULL; +} + +void fn_1_5B88(s32 arg0) // probably gets inlined +{ + UnkM426Struct4 *var_r31; + s32 var_r28; + s32 var_r30; + + if (lbl_1_bss_74) { + var_r31 = lbl_1_bss_74->data; + for (var_r30 = 0; var_r30 < 6; var_r30++, var_r31++) { + var_r28 = var_r31->unk_38; + var_r31->unk_38 = arg0; + if (var_r28 != arg0 && !arg0) { + Hu3DModelAttrReset(var_r31->unk_00, 1); + Hu3DModelPosSet(var_r31->unk_00, var_r31->unk_3C, var_r31->unk_40, var_r31->unk_44); + Hu3DModelRotSet(var_r31->unk_00, 0.0f, var_r31->unk_48, 0.0f); + } + } + } +} + +s32 fn_1_5C6C(s32 arg0, s32 arg1, Vec *arg2) +{ + UnkM426Struct4 *var_r31; + s32 var_r30; + + if (!lbl_1_bss_74) { + return -1; + } + var_r31 = lbl_1_bss_74->data; + for (var_r30 = 0; var_r30 < 6; var_r30++, var_r31++) { + if (var_r31->unk_28 == 5) { + break; + } + } + if (var_r30 >= 6) { + return -1; + } + var_r31->unk_24 = arg0; + var_r31->unk_28 = 0; + var_r31->unk_2C = arg1; + var_r31->unk_34 = 0.0f; + var_r31->unk_3C = arg2->x; + var_r31->unk_40 = arg2->y; + var_r31->unk_44 = arg2->z; + var_r31->unk_48 = 0.0f; + var_r31->unk_18 = 2; + return var_r30; +} + +s32 fn_1_5D3C(void) +{ + UnkM426Struct4 *var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + if (!lbl_1_bss_74) { + return -1; + } + var_r31 = lbl_1_bss_74->data; + for (var_r28 = 0, var_r30 = var_r29 = 0; var_r28 < 6; var_r28++, var_r31++) { + if (var_r31->unk_28 != 2 && var_r31->unk_28 != 3) { + break; + } + if (var_r31->unk_3C < 0.0f) { + var_r30++; + } else if (var_r31->unk_3C > 0.0f) { + var_r29++; + } else if (frand() & 1) { + var_r30++; + } else { + var_r29++; + } + } + if (var_r28 < 6) { + return -1; + } + if (var_r30 > var_r29) { + return 1; + } + if (var_r30 < var_r29) { + return 0; + } + return 2; +} + +void fn_1_5E6C(void) +{ + lbl_1_bss_70 = omAddObjEx(lbl_1_bss_98, 0, 0, 0, -1, fn_1_5EBC); +} + +void fn_1_5EBC(omObjData *object) +{ + UnkM426Struct5 *var_r31; + s32 var_r30; + UnkM426Struct5 *var_r29; + UnkModelDataUnk120Struct *var_r27; + ModelData *var_r26; + + var_r29 = var_r31 = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, 4 * sizeof(UnkM426Struct5), MEMORY_DEFAULT_NUM); + memset(var_r31, 0, 4 * sizeof(UnkM426Struct5)); + for (var_r30 = 0; var_r30 < 4; var_r30++, var_r31++) { + if (var_r30 == 0) { + var_r31->unk_08 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_M426, 0), MEMORY_DEFAULT_NUM)); + var_r31->unk_04 = fn_1_795C(var_r31->unk_08, 512); + } else { + var_r31->unk_08 = var_r29->unk_08; + var_r31->unk_04 = fn_1_7DC8(var_r29->unk_04); + } + Hu3DModelLayerSet(var_r31->unk_04, 5); + var_r26 = &Hu3DData[var_r31->unk_04]; + var_r27 = (UnkModelDataUnk120Struct *)var_r26->unk_120; // TODO fix + var_r27->unk_20 = 0; + Hu3DModelAttrSet(var_r31->unk_04, 1); + var_r31->unk_00 = var_r30; + var_r31->unk_0C = 0; + var_r31->unk_10 = 0; + var_r31->unk_14.x = var_r31->unk_14.y = var_r31->unk_14.z = 0.0f; + var_r31->unk_20 = 1.0f; + } + object->func = fn_1_6008; +} + +void fn_1_6008(omObjData *object) +{ + UnkM426Struct8 *var_r31; + UnkM426Struct5 *var_r30; + UnkModelDataUnk120Struct *var_r29; + s32 var_r28; + s32 var_r27; + ModelData *var_r26; + s32 var_r25; + + var_r30 = object->data; + if (var_r30) { + for (var_r28 = 0; var_r28 < 4; var_r28++, var_r30++) { + if (!var_r30->unk_0C) { + continue; + } + if (var_r30->unk_10 <= 0) { + Hu3DModelAttrSet(var_r30->unk_04, 1); + } else { + Hu3DModelAttrReset(var_r30->unk_04, 1); + var_r26 = &Hu3DData[var_r30->unk_04]; + var_r29 = (UnkModelDataUnk120Struct *)var_r26->unk_120; + var_r31 = var_r29->unk_3C; + for (var_r27 = var_r25 = 0; var_r27 < var_r29->unk_24; var_r27++, var_r31++) { + if (var_r31->unk_28 <= 0.0f) { + continue; + } + var_r31->unk_30.x += var_r31->unk_04.x; + var_r31->unk_30.y += var_r31->unk_04.y; + var_r31->unk_30.z += var_r31->unk_04.z; + var_r25++; + var_r31->unk_00++; + var_r31->unk_40 = var_r31->unk_00; + if (var_r31->unk_40 >= 16) { + var_r31->unk_40 = 0; + var_r31->unk_28 = 0.0f; + var_r30->unk_10--; + } + } + Hu3DModelPosSet(var_r30->unk_04, var_r30->unk_14.x, var_r30->unk_14.y, var_r30->unk_14.z); + } + } + } +} + +void fn_1_6180(omObjData *object) +{ + UnkM426Struct5 *var_r30; + + if (object && object->data) { + var_r30 = object->data; + fn_1_8E10(var_r30->unk_08); + fn_1_5B34(object); + } +} + +void fn_1_61E0(void) +{ + fn_1_6180(lbl_1_bss_70); +} + +s32 fn_1_6248(Vec *arg0) +{ + UnkM426Struct5 *var_r31; + s32 var_r30; + + if (!lbl_1_bss_70) { + return -1; + } + var_r31 = lbl_1_bss_70->data; + if (!var_r31) { + return; + } + for (var_r30 = 0; var_r30 < 4; var_r30++, var_r31++) { + if (!var_r31->unk_0C) { + break; + } + } + if (var_r30 >= 4) { + return -1; + } + var_r31->unk_0C = 1; + var_r31->unk_10 = 0; + fn_1_6310(var_r31->unk_00, arg0); + var_r31->unk_20 = 1.0f; + return var_r31->unk_00; +} + +void fn_1_6310(s32 arg0, Vec *arg1) +{ + UnkM426Struct5 *var_r31; + + if (lbl_1_bss_70) { + var_r31 = lbl_1_bss_70->data; + if (!var_r31) { + return; + } + var_r31 = &var_r31[arg0]; + if (var_r31->unk_0C) { + var_r31->unk_14.x = arg1->x; + var_r31->unk_14.y = arg1->y; + var_r31->unk_14.z = arg1->z; + Hu3DModelPosSet(var_r31->unk_04, var_r31->unk_14.x, var_r31->unk_14.y, var_r31->unk_14.z); + } + } +} + +s32 fn_1_63B8(s32 arg0, Vec *arg1, Vec *arg2, float arg8, GXColor arg3) +{ + UnkM426Struct8 *var_r31; + UnkM426Struct5 *var_r30; + UnkModelDataUnk120Struct *var_r29; + s32 var_r28; + ModelData *var_r27; + + if (!lbl_1_bss_70) { + return -1; + } + + var_r30 = lbl_1_bss_70->data; + if (!var_r30) { + return -1; + } + + var_r30 = &var_r30[arg0]; + if (!var_r30->unk_0C) { + return -1; + } + var_r27 = &Hu3DData[var_r30->unk_04]; + var_r29 = (UnkModelDataUnk120Struct *)var_r27->unk_120; + var_r31 = var_r29->unk_3C; + + for (var_r28 = 0; var_r28 < var_r29->unk_24; var_r28++, var_r31++) { + if (var_r31->unk_28 <= 0.0f) { + break; + } + } + if (var_r28 >= var_r29->unk_24) { + return -1; + } + var_r31->unk_00 = var_r31->unk_02 = 0; + + if (arg1) { + var_r31->unk_30.x = arg1->x - var_r30->unk_14.x; + var_r31->unk_30.y = arg1->y - var_r30->unk_14.y; + var_r31->unk_30.z = arg1->z - var_r30->unk_14.z; + } else { + var_r31->unk_30.x = var_r30->unk_14.x; + var_r31->unk_30.y = var_r30->unk_14.y; + var_r31->unk_30.z = var_r30->unk_14.z; + } + + if (arg2) { + var_r31->unk_04.x = arg2->x; + var_r31->unk_04.y = arg2->y; + var_r31->unk_04.z = arg2->z; + } else { + var_r31->unk_04.x = var_r31->unk_04.y = var_r31->unk_04.z = 0.0f; + } + + var_r31->unk_28 = arg8; + var_r31->unk_3C.r = arg3.r; + var_r31->unk_3C.g = arg3.g; + var_r31->unk_3C.b = arg3.b; + var_r31->unk_3C.a = arg3.a; + var_r31->unk_2C = 0.0f; + var_r31->unk_40 = 0; + var_r31->unk_00 = 0; + var_r30->unk_10++; + + return var_r28; +} + +void fn_1_6594(void) +{ + lbl_1_bss_6C = omAddObjEx(lbl_1_bss_98, 0, 0, 0, -1, fn_1_65E4); +} + +void fn_1_65E4(omObjData *object) +{ + HsfData *sp8; + + UnkM426Struct6 *var_r31; + s32 var_r30; + ModelData *var_r28; + + var_r31 = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, 16 * sizeof(UnkM426Struct6), MEMORY_DEFAULT_NUM); + memset(var_r31, 0, 16 * sizeof(UnkM426Struct6)); + for (var_r30 = 0; var_r30 < 16; var_r30++, var_r31++) { + var_r31->unk_00 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M426, 30)); + var_r28 = &Hu3DData[var_r31->unk_00]; + sp8 = var_r28->hsfData; + Hu3DModelLayerSet(var_r31->unk_00, 5); + Hu3DModelAttrSet(var_r31->unk_00, 1); + var_r31->unk_04 = 0; + var_r31->unk_08 = 0; + var_r31->unk_0C = var_r31->unk_10 = var_r31->unk_14 = 0.0f; + var_r31->unk_18 = 1.0f; + } + object->func = fn_1_6704; +} + +void fn_1_6704(omObjData *object) +{ + UnkM426Struct6 *var_r31; + s32 var_r30; + + var_r31 = object->data; + if (!var_r31) { + return; + } + for (var_r30 = 0; var_r30 < 16; var_r30++, var_r31++) { + if (var_r31->unk_04) { + Hu3DModelPosSet(var_r31->unk_00, var_r31->unk_0C, var_r31->unk_10, var_r31->unk_14); + Hu3DModelRotSet(var_r31->unk_00, CRot.x, CRot.y, CRot.z); + if (++var_r31->unk_08 >= 120.0f) { + Hu3DModelAttrSet(var_r31->unk_00, 1); + var_r31->unk_04 = 0; + var_r31->unk_08 = 0; + } + } + } +} + +void fn_1_681C(omObjData *object) +{ + if (object && object->data) { + fn_1_5B34(object); + } +} + +void fn_1_6844(void) +{ + fn_1_681C(lbl_1_bss_6C); +} + +s32 fn_1_6888(Vec *arg0) +{ + UnkM426Struct6 *var_r31; + s32 var_r30; + + if (!lbl_1_bss_6C) { + return; + } + var_r31 = lbl_1_bss_6C->data; + if (!var_r31) { + return; + } + for (var_r30 = 0; var_r30 < 16; var_r30++, var_r31++) { + if (!var_r31->unk_04) { + break; + } + } + if (var_r30 >= 16) { + return -1; + } + var_r31->unk_04 = 1; + var_r31->unk_08 = 0; + var_r31->unk_0C = arg0->x; + var_r31->unk_10 = arg0->y; + var_r31->unk_14 = arg0->z; + Hu3DMotionTimeSet(var_r31->unk_00, 0.0f); + Hu3DMotionSpeedSet(var_r31->unk_00, 0.5f); + Hu3DModelAttrSet(var_r31->unk_00, 0); + Hu3DModelPosSet(var_r31->unk_00, var_r31->unk_0C, var_r31->unk_10, var_r31->unk_14); + Hu3DModelScaleSet(var_r31->unk_00, 1.0f, 1.0f, 1.0f); + Hu3DModelAttrReset(var_r31->unk_00, 1); + return var_r30; +} + +void fn_1_69E4(void) +{ + lbl_1_bss_68 = omAddObjEx(lbl_1_bss_98, 254, 0, 0, -1, fn_1_6A34); +} + +void fn_1_6A34(omObjData *object) +{ + UnkM426Struct7 *var_r31; + s32 var_r30; + s32 var_r29; + + var_r31 = object->data = HuMemDirectMallocNum(HEAP_SYSTEM, 2 * sizeof(UnkM426Struct7), MEMORY_DEFAULT_NUM); + memset(var_r31, 0, 2 * sizeof(UnkM426Struct7)); + for (var_r29 = 0; var_r29 < 2; var_r29++, var_r31++) { + if (var_r29 == 0) { + var_r31->unk_00 = 100; + } else { + var_r31->unk_00 = 490; + } + var_r31->unk_04 = 65; + var_r31->unk_08 = 10; + var_r31->unk_0C = 0; + var_r31->unk_BC = 21; + var_r31->unk_C0 = 0; + var_r31->unk_10 = 1; + for (var_r30 = 0; var_r30 < 6; var_r30++) { + var_r31->unk_2C[var_r30][0] = lbl_1_data_220[var_r30]; + var_r31->unk_2C[var_r30][1] = 0; + switch (var_r30) { + case 0: + case 1: + var_r31->unk_14[var_r30] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 51), 64, 0); + var_r31->unk_74[var_r30][0] = var_r31->unk_2C[var_r30][0] - var_r31->unk_BC; + var_r31->unk_74[var_r30][1] = var_r31->unk_2C[var_r30][1] - var_r31->unk_C0; + break; + case 2: + var_r31->unk_14[var_r30] = espEntry(lbl_1_data_218[var_r29], 255, 0); + break; + case 3: + var_r31->unk_14[var_r30] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 29), 256, 0); + espTPLvlSet(var_r31->unk_14[var_r30], 0.6f); + espColorSet(var_r31->unk_14[var_r30], 0, 0, 0); + break; + case 4: + var_r31->unk_14[var_r30] = espEntry(DATA_MAKE_NUM(DATADIR_MGCONST, 9), 128, 0); + break; + case 5: + var_r31->unk_14[var_r30] = espEntry(DATA_MAKE_NUM(DATADIR_M426, 31), 128, 0); + espZRotSet(var_r31->unk_14[var_r30], 45.0f); + break; + default: + break; + } + espDispOn(var_r31->unk_14[var_r30]); + espDrawNoSet(var_r31->unk_14[var_r30], 0); + espAttrSet(var_r31->unk_14[var_r30], 1); + espPosSet(var_r31->unk_14[var_r30], var_r31->unk_00 + var_r31->unk_2C[var_r30][0], var_r31->unk_04 + var_r31->unk_2C[var_r30][1]); + } + } + fn_1_7328(0); + object->func = fn_1_6DC0; +} + +void fn_1_6DC0(omObjData *object) +{ + s32 sp8[3]; + + float var_f31; + float var_f30; + float var_f29; + + UnkM426Struct7 *var_r31; + s32 var_r30; + s32 var_r29; + s32 var_r28; + + var_r31 = object->data; + for (var_r29 = 0; var_r29 < 2; var_r29++, var_r31++) { + if (!var_r31->unk_10) { + continue; + } + if (var_r31->unk_08 != lbl_1_bss_1C[var_r29]) { + var_r31->unk_08 = lbl_1_bss_1C[var_r29]; + var_r31->unk_0C = 20; + } + if (var_r31->unk_0C) { + var_f31 = 1.0 + (0.8f * sind((180.0f * (var_r31->unk_0C / 20.0f)))); + var_r31->unk_0C--; + } else { + var_f31 = 1.0f; + } + var_r28 = lbl_1_bss_1C[var_r29]; + if ((sp8[0] = var_r28 / 10) > 9) { + sp8[0] = 9; + } + var_r28 -= sp8[0] * 10; + sp8[1] = var_r28; + if (var_r28 > 9) { + sp8[1] = 9; + } + for (var_r30 = 0; var_r30 < 2; var_r30++) { + var_f30 = (var_r31->unk_00 + var_r31->unk_BC) + (var_r31->unk_74[var_r30][0] * var_f31); + var_f29 = (var_r31->unk_04 + var_r31->unk_C0) + (var_r31->unk_74[var_r30][1] * var_f31); + if (sp8[var_r30] < 0) { + sp8[var_r30] = 0; + } + espPosSet(var_r31->unk_14[var_r30], var_f30, var_f29); + espScaleSet(var_r31->unk_14[var_r30], var_f31, var_f31); + espBankSet(var_r31->unk_14[var_r30], sp8[var_r30]); + } + for (var_r30 = 2; var_r30 < 6; var_r30++) { + var_f30 = var_r31->unk_00 + var_r31->unk_2C[var_r30][0]; + var_f29 = var_r31->unk_04 + var_r31->unk_2C[var_r30][1]; + espPosSet(var_r31->unk_14[var_r30], var_f30, var_f29); + espScaleSet(var_r31->unk_14[var_r30], 1.0f, 1.0f); + } + } +} + +void fn_1_71D0(omObjData *object) +{ + UnkM426Struct7 *var_r30; + s32 var_r29; + s32 var_r28; + + if (object && object->data) { + var_r30 = object->data; + for (var_r28 = 0; var_r28 < 2; var_r28++, var_r30++) { + for (var_r29 = 0; var_r29 < 6; var_r29++) { + espKill(var_r30->unk_14[var_r29]); + } + } + fn_1_5B34(object); + } +} + +void fn_1_7278(void) +{ + fn_1_71D0(lbl_1_bss_68); +} + +void fn_1_7328(s32 arg0) +{ + UnkM426Struct7 *var_r31; + s32 var_r30; + s32 var_r29; + + var_r31 = lbl_1_bss_68->data; + for (var_r29 = 0; var_r29 < 2; var_r29++, var_r31++) { + var_r31->unk_10 = arg0; + for (var_r30 = 0; var_r30 < 6; var_r30++) { + if (arg0) { + espDispOn(var_r31->unk_14[var_r30]); + } else { + espDispOff(var_r31->unk_14[var_r30]); + } + } + } +} + +void fn_1_73DC(void) +{ + Hu3DCameraCreate(1); + Hu3DCameraPerspectiveSet(1, 45.0f, 100.0f, 50000.0f, 1.2f); + Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + omAddObjEx(lbl_1_bss_98, 32730, 0, 0, -1, omOutView); + CRot.x = lbl_1_data_4C[1][0]; + CRot.y = lbl_1_data_4C[1][1]; + CRot.z = lbl_1_data_4C[1][2]; + Center.x = lbl_1_data_4C[1][3]; + Center.y = lbl_1_data_4C[1][4]; + Center.z = lbl_1_data_4C[1][5]; + CZoom = lbl_1_data_4C[1][6]; + lbl_1_bss_64 = omAddObjEx(lbl_1_bss_98, 254, 0, 0, -1, fn_1_758C); +} + +void fn_1_758C(omObjData *object) +{ + lbl_1_bss_60 = 0; + object->func = fn_1_75AC; +} + +void fn_1_75AC(omObjData *arg0) { } + +void fn_1_75B0(UnkM426Struct9 *arg0) +{ + arg0->unk_14 = 0; +} + +void fn_1_75BC(void) +{ + omObjData *var_r31; + + var_r31 = lbl_1_bss_64; + var_r31->func = NULL; + lbl_1_bss_64 = NULL; +} + +float fn_1_75F4(float arg8, float arg9) +{ + float var_f31; + + if (arg8 >= 360.0f) { + arg8 -= 360.0f; + } else if (arg8 < 0.0f) { + arg8 += 360.0f; + } + if (arg9 >= 360.0f) { + arg9 -= 360.0f; + } else if (arg9 < 0.0f) { + arg9 += 360.0f; + } + var_f31 = arg8 - arg9; + if (var_f31 <= -180.0f) { + var_f31 += 360.0f; + } else if (var_f31 >= 180.0f) { + var_f31 -= 360.0f; + } + return var_f31; +} + +float fn_1_770C(float arg8, float arg9, float argA) +{ + float var_f31; + float var_f30; + + if (arg8 >= 360.0) { + arg8 -= 360.0; + } else if (arg8 < 0.0) { + arg8 += 360.0; + } + if (arg9 >= 360.0) { + arg9 -= 360.0; + } else if (arg9 < 0.0) { + arg9 += 360.0; + } + var_f30 = 360.0 + (arg8 - arg9); + if (fabs(var_f30) >= 360.0) { + var_f30 = fmod(var_f30, 360.0); + } + if (var_f30 < 180.0) { + if (var_f30 <= argA) { + var_f31 = var_f30; + } else { + var_f31 = argA; + } + } else if ((360.0 - var_f30) <= argA) { + var_f31 = -(360.0 - var_f30); + } else { + var_f31 = -argA; + } + var_f31 += arg9; + if (var_f31 >= 360.0) { + var_f31 -= 360.0; + var_f31 = var_f31; + } else if (var_f31 < 0.0) { + var_f31 += 360.0; + var_f31 = var_f31; + } + return var_f31; +} + +s16 fn_1_795C(AnimData *arg0, s16 arg1) +{ + UnkModelDataUnk120Struct *var_r31; + s16 var_r30; + Vec2f *var_r29; + UnkM426Struct8 *var_r28; + ModelData *var_r27; + Vec *var_r26; + void *var_r24; + s16 var_r23; + void *var_r22; + + var_r23 = Hu3DHookFuncCreate(fn_1_80DC); + var_r27 = &Hu3DData[var_r23]; + var_r31 = HuMemDirectMallocNum(HEAP_DATA, sizeof(UnkModelDataUnk120Struct), (u32)var_r27->unk_48); + var_r27->unk_120 = (ParticleData *)var_r31; + var_r31->unk_38 = arg0; + var_r31->unk_24 = arg1; + var_r31->unk_20 = 0; + var_r31->unk_4C = NULL; + var_r31->unk_50 = NULL; + var_r31->unk_28 = 0.0f; + var_r31->unk_21 = 0; + var_r31->unk_30 = 0; + var_r31->unk_00 = var_r31->unk_02 = 0; + var_r28 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(UnkM426Struct8), (u32)var_r27->unk_48); + var_r31->unk_3C = var_r28; + for (var_r30 = 0; var_r30 < arg1; var_r30++, var_r28++) { + var_r28->unk_28 = 0.0f; + var_r28->unk_2C = 0.0f; + var_r28->unk_30.x = ((frand() & 127) - 64) * 20; + var_r28->unk_30.y = ((frand() & 127) - 64) * 30; + var_r28->unk_30.z = ((frand() & 127) - 64) * 20; + var_r28->unk_3C.r = var_r28->unk_3C.g = var_r28->unk_3C.b = var_r28->unk_3C.a = 255; + var_r28->unk_40 = 0; + } + var_r26 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(Vec) * 4, (u32)var_r27->unk_48); + var_r31->unk_40 = var_r26; + for (var_r30 = 0; var_r30 < arg1 * 4; var_r30++, var_r26++) { + var_r26->x = var_r26->y = var_r26->z = 0.0f; + } + var_r29 = HuMemDirectMallocNum(HEAP_DATA, arg1 * sizeof(Vec2f) * 4, (u32)var_r27->unk_48); + var_r31->unk_44 = var_r29; + for (var_r30 = 0; var_r30 < arg1; var_r30++) { + var_r29->x = 0.0f; + var_r29->y = 0.0f; + var_r29++; + var_r29->x = 1.0f; + var_r29->y = 0.0f; + var_r29++; + var_r29->x = 1.0f; + var_r29->y = 1.0f; + var_r29++; + var_r29->x = 0.0f; + var_r29->y = 1.0f; + var_r29++; + } + var_r24 = HuMemDirectMallocNum(HEAP_DATA, 0x4000, (u32)var_r27->unk_48); + var_r22 = var_r24; + DCFlushRange(var_r24, 0x4000); + GXBeginDisplayList(var_r22, 0x4000); + GXBegin(GX_QUADS, GX_VTXFMT0, arg1 * 4); + for (var_r30 = 0; var_r30 < arg1; var_r30++) { + GXPosition1x16(var_r30 * 4); + GXColor1x16(var_r30); + GXTexCoord1x16(var_r30 * 4); + + GXPosition1x16(var_r30 * 4 + 1); + GXColor1x16(var_r30); + GXTexCoord1x16(var_r30 * 4 + 1); + + GXPosition1x16(var_r30 * 4 + 2); + GXColor1x16(var_r30); + GXTexCoord1x16(var_r30 * 4 + 2); + + GXPosition1x16(var_r30 * 4 + 3); + GXColor1x16(var_r30); + GXTexCoord1x16(var_r30 * 4 + 3); + } + var_r31->unk_34 = GXEndDisplayList(); + var_r31->unk_48 = HuMemDirectMallocNum(HEAP_DATA, var_r31->unk_34, (u32)var_r27->unk_48); + memcpy(var_r31->unk_48, var_r24, var_r31->unk_34); + DCFlushRange(var_r31->unk_48, var_r31->unk_34); + HuMemDirectFree(var_r24); + return var_r23; +} + +s16 fn_1_7DC8(s16 arg0) +{ + UnkModelDataUnk120Struct *var_r31; + Vec2f *var_r30; + UnkM426Struct8 *var_r29; + s16 var_r28; + ModelData *var_r27; + UnkModelDataUnk120Struct *var_r26; + Vec *var_r25; + s32 var_r24; + ModelData *var_r23; + s16 var_r22; + + var_r23 = &Hu3DData[arg0]; + var_r26 = (UnkModelDataUnk120Struct *)var_r23->unk_120; + var_r22 = Hu3DHookFuncCreate(var_r23->hook); + var_r27 = &Hu3DData[var_r22]; + var_r31 = HuMemDirectMallocNum(HEAP_DATA, sizeof(UnkModelDataUnk120Struct), (u32)var_r27->unk_48); // TODO fix + var_r27->unk_120 = (ParticleData *)var_r31; + var_r31->unk_38 = var_r26->unk_38; + var_r31->unk_24 = var_r26->unk_24; + var_r24 = var_r31->unk_24; + var_r31->unk_20 = 0; + var_r31->unk_4C = NULL; + var_r31->unk_50 = NULL; + var_r31->unk_28 = 0; + var_r31->unk_21 = 0; + var_r31->unk_30 = 0; + var_r31->unk_00 = var_r31->unk_02 = 0; + var_r29 = HuMemDirectMallocNum(HEAP_DATA, var_r24 * sizeof(UnkM426Struct8), (u32)var_r27->unk_48); + var_r31->unk_3C = var_r29; + for (var_r28 = 0; var_r28 < var_r24; var_r28++, var_r29++) { + var_r29->unk_28 = 0.0f; + var_r29->unk_2C = 0.0f; + var_r29->unk_30.x = ((frand() & 127) - 64) * 20; + var_r29->unk_30.y = ((frand() & 127) - 64) * 30; + var_r29->unk_30.z = ((frand() & 127) - 64) * 20; + var_r29->unk_3C.r = var_r29->unk_3C.g = var_r29->unk_3C.b = var_r29->unk_3C.a = 255; + var_r29->unk_40 = 0; + } + + var_r25 = HuMemDirectMallocNum(HEAP_DATA, var_r24 * sizeof(Vec) * 4, (u32)var_r27->unk_48); + var_r31->unk_40 = var_r25; + for (var_r28 = 0; var_r28 < (4 * var_r24); var_r28++, var_r25++) { + var_r25->x = var_r25->y = var_r25->z = 0.0f; + } + var_r30 = HuMemDirectMallocNum(HEAP_DATA, var_r24 * sizeof(Vec2f) * 4, (u32)var_r27->unk_48); + var_r31->unk_44 = var_r30; + for (var_r28 = 0; var_r28 < var_r24; var_r28++) { + var_r30->x = 0.0f; + var_r30->y = 0.0f; + var_r30++; + var_r30->x = 1.0f; + var_r30->y = 0.0f; + var_r30++; + var_r30->x = 1.0f; + var_r30->y = 1.0f; + var_r30++; + var_r30->x = 0.0f; + var_r30->y = 1.0f; + var_r30++; + } + var_r31->unk_34 = var_r26->unk_34; + var_r31->unk_48 = var_r26->unk_48; + (void)var_r26; + + return var_r22; +} + +void fn_1_80DC(ModelData *arg0, Mtx arg1) +{ + Mtx sp128; + Mtx spF8; + Mtx spC8; + Vec sp98[4]; + Vec sp68[4]; + Vec sp38[4]; + ROMtx sp8; + + UnkModelDataUnk120Struct *var_r31; + Vec *var_r30; + UnkM426Struct8 *var_r29; + Vec *var_r28; + Vec *var_r27; + Vec2f *var_r26; + s16 var_r25; + s16 var_r23; + s16 var_r21; + s16 var_r20; + s16 var_r19; + UnkModelDataUnk120Hook var_r18; + + var_r31 = (UnkModelDataUnk120Struct *)arg0->unk_120; + if ((var_r31->unk_2C != GlobalCounter) || shadowModelDrawF) { + if ((var_r31->unk_50) && (var_r31->unk_50 != arg0)) { + fn_1_80DC(var_r31->unk_50, arg1); + } + GXLoadPosMtxImm(arg1, 0); + GXSetNumTevStages(1); + GXSetNumTexGens(1); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 60, GX_FALSE, 125); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + if (shadowModelDrawF != 0) { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ONE, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + } else { + var_r21 = var_r31->unk_38->bmp->dataFmt & 15; + if (var_r21 == 7 || var_r21 == 8) { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ONE, GX_CC_RASC, GX_CC_ZERO); + } else { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); + } + if (arg0->attr & 2) { + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + } else { + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); + } + } + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + HuSprTexLoad(var_r31->unk_38, 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZCompLoc(GX_FALSE); + switch (var_r31->unk_20) { + case 0: + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + break; + case 1: + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_NOOP); + break; + case 2: + GXSetBlendMode(GX_BM_BLEND, GX_BL_ZERO, GX_BL_INVDSTCLR, GX_LO_NOOP); + break; + } + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetArray(GX_VA_POS, var_r31->unk_40, 12); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, &var_r31->unk_3C->unk_3C, 68); + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_TEX0, var_r31->unk_44, 8); + if (!HmfInverseMtxF3X3(arg1, sp128)) { + PSMTXIdentity(sp128); + } + PSMTXReorder(sp128, sp8); + if (var_r31->unk_4C) { + var_r18 = var_r31->unk_4C; + var_r18(arg0, var_r31, arg1); + } + var_r29 = var_r31->unk_3C; + var_r30 = var_r31->unk_40; + var_r26 = var_r31->unk_44; + PSMTXROMultVecArray(sp8, lbl_1_data_22C, &sp38[0], 4); + for (var_r23 = 0; var_r23 < var_r31->unk_24; var_r23++, var_r29++) { + if (!var_r29->unk_28) { + var_r30->x = var_r30->y = var_r30->z = 0.0f; + var_r30++; + var_r30->x = var_r30->y = var_r30->z = 0.0f; + var_r30++; + var_r30->x = var_r30->y = var_r30->z = 0.0f; + var_r30++; + var_r30->x = var_r30->y = var_r30->z = 0.0f; + var_r30++; + } else { + if (!var_r29->unk_2C) { + var_r28 = sp98; + var_r27 = sp38; + PSVECScale(var_r27++, var_r28, var_r29->unk_28); + PSVECAdd(var_r28++, &var_r29->unk_30, var_r30++); + PSVECScale(var_r27++, var_r28, var_r29->unk_28); + PSVECAdd(var_r28++, &var_r29->unk_30, var_r30++); + PSVECScale(var_r27++, var_r28, var_r29->unk_28); + PSVECAdd(var_r28++, &var_r29->unk_30, var_r30++); + PSVECScale(var_r27++, var_r28, var_r29->unk_28); + PSVECAdd(var_r28++, &var_r29->unk_30, var_r30++); + } else { + PSVECScale(&lbl_1_data_22C[0], &sp98[0], var_r29->unk_28); + PSVECScale(&lbl_1_data_22C[1], &sp98[1], var_r29->unk_28); + PSVECScale(&lbl_1_data_22C[2], &sp98[2], var_r29->unk_28); + PSVECScale(&lbl_1_data_22C[3], &sp98[3], var_r29->unk_28); + PSMTXRotRad(spC8, 90, var_r29->unk_2C); + PSMTXConcat(sp128, spC8, &spF8[0]); + PSMTXMultVecArray(spF8, &sp98[0], &sp68[0], 4); + PSVECAdd(&sp68[0], &var_r29->unk_30, var_r30++); + PSVECAdd(&sp68[1], &var_r29->unk_30, var_r30++); + PSVECAdd(&sp68[2], &var_r29->unk_30, var_r30++); + PSVECAdd(&sp68[3], &var_r29->unk_30, var_r30++); + } + var_r20 = var_r29->unk_40 & 3; + var_r19 = (var_r29->unk_40 >> 2) & 3; + for (var_r25 = 0; var_r25 < 4; var_r25++, var_r26++) { + var_r26->x = (0.25f * var_r20) + lbl_1_data_25C[var_r25].x; + var_r26->y = (0.25f * var_r19) + lbl_1_data_25C[var_r25].y; + } + } + } + DCFlushRangeNoSync(var_r31->unk_40, var_r31->unk_24 * sizeof(Vec) * 4); + DCFlushRangeNoSync(var_r31->unk_44, var_r31->unk_24 * sizeof(Vec2f) * 4); + PPCSync(); + GXCallDisplayList(var_r31->unk_48, var_r31->unk_34); + if (!shadowModelDrawF) { + if ((var_r31->unk_21 & 2) == 0) { + var_r31->unk_28++; + } + if (var_r31->unk_30 && (var_r31->unk_30 <= var_r31->unk_28)) { + if (var_r31->unk_21 & 1) { + var_r31->unk_28 = 0.0f; + } + var_r31->unk_28 = var_r31->unk_30; + } + var_r31->unk_2C = GlobalCounter; + } + } +} + +void fn_1_88B4(ModelData *arg0, Mtx arg1) +{ + float var_f31; + float var_f30; + float var_f28; + float var_f27; + float var_f26; + + CameraData *var_r30; + AnimData *var_r29; + s16 var_r28; + + var_r30 = Hu3DCamera; + var_f31 = var_r30->pos.x - arg0->pos.x; + var_f27 = var_r30->pos.y - arg0->pos.y; + var_f30 = var_r30->pos.z - arg0->pos.z; + var_f26 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + arg0->rot.x = (atan2d(var_f26, var_f27)) - 90.0; + arg0->rot.y = atan2d(var_f31, var_f30); + var_r29 = (AnimData *)arg0->unk_120; // AnimData ?! + GXLoadPosMtxImm(arg1, 0); + GXSetNumTevStages(1); + GXSetNumTexGens(1); + GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 60, GX_FALSE, 125); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); + if (shadowModelDrawF) { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ONE, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + } else { + var_r28 = var_r29->bmp->dataFmt & 15; + if (var_r28 == 7 || var_r28 == 8) { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ONE, GX_CC_RASC, GX_CC_ZERO); + } else { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); + } + GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); + } + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + HuSprTexLoad(var_r29, 0, 0, GX_REPEAT, GX_REPEAT, GX_LINEAR); + GXSetAlphaCompare(GX_GEQUAL, 1, GX_AOP_AND, GX_GEQUAL, 1); + GXSetZCompLoc(GX_FALSE); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_POS, lbl_1_data_27C, 12); + GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + GXSetArray(GX_VA_CLR0, lbl_1_data_2AC, 4); + GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0); + GXSetArray(GX_VA_TEX0, lbl_1_data_2BC, 8); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + + GXPosition1x16(0); + GXColor1x16(0); + GXTexCoord1x16(0); + + GXPosition1x16(1); + GXColor1x16(0); + GXTexCoord1x16(1); + + GXPosition1x16(2); + GXColor1x16(0); + GXTexCoord1x16(2); + + GXPosition1x16(3); + GXColor1x16(0); + GXTexCoord1x16(3); +} + +void fn_1_8E10(AnimData *arg0) +{ + arg0->useNum = 0; + HuSprAnimKill(arg0); +} + +void fn_1_8E48(ModelData *arg0, Mtx arg1) +{ + CameraData *var_r31; + + Mtx sp50; + Mtx44 sp10; + GXColor spC = { 255, 0, 0, 128 }; + + var_r31 = Hu3DCamera; + GXSetScissor(var_r31->scissor_x, var_r31->scissor_y, var_r31->scissor_w, var_r31->scissor_h); + GXSetViewport(0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); + C_MTXOrtho(sp10, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, 1.0f); + GXSetProjection(sp10, GX_ORTHOGRAPHIC); + GXSetTevColor(GX_TEVREG0, spC); + GXSetNumTexGens(0); + GXSetNumTevStages(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + PSMTXIdentity(sp50); + GXLoadPosMtxImm(sp50, 0); + GXSetZMode(GX_FALSE, GX_ALWAYS, GX_TRUE); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, 0, GX_DF_CLAMP, GX_AF_NONE); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_U8, 0); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition3u8(0, 0, 0); + GXPosition3u8(1, 0, 0); + GXPosition3u8(1, 1, 0); + GXPosition3u8(0, 1, 0); +} +#pragma dont_inline on +void fn_1_9130(s32 arg0, UnkM426Struct10 *arg1, s32 arg2) +{ + switch (arg1->unk_04) { + case 0: + fn_1_9544(arg0, arg1, arg2); + return; + case 1: + fn_1_9798(arg0, arg1, arg2); + return; + case 2: + fn_1_9868(arg0, arg1, arg2); + return; + case 3: + fn_1_9230(arg0, arg1, arg2); + return; + case 4: + fn_1_97EC(arg0, arg1, arg2); + return; + case 5: + fn_1_971C(arg0, arg1, arg2); + return; + case 6: + fn_1_9544(arg0, arg1, arg2); + return; + default: + fn_1_9544(arg0, arg1, arg2); + return; + } +} +#pragma dont_inline reset + +void fn_1_9230(s32 arg0, UnkM426Struct10 *arg1, s32 arg2) +{ + UnkM426Struct10 *var_r29; + UnkM426Struct10 *var_r28; + UnkM426Struct10 *var_r27; + u32 var_r25; + u32 var_r24; + u32 var_r23; + u32 var_r22; + + arg1->unk_0C &= ~arg2; + for (var_r25 = 0; var_r25 < arg1->unk_14; var_r25++) { + var_r29 = arg1->unk_18[var_r25]; + switch (var_r29->unk_04) { + case 0: + fn_1_9544(arg0, var_r29, arg2); + break; + case 1: + fn_1_9798(arg0, var_r29, arg2); + break; + case 2: + fn_1_9868(arg0, var_r29, arg2); + break; + case 3: + var_r29->unk_0C &= ~arg2; + for (var_r24 = 0; var_r24 < var_r29->unk_14; var_r24++) { + var_r28 = var_r29->unk_18[var_r24]; + switch (var_r28->unk_04) { + case 0: + fn_1_9544(arg0, var_r28, arg2); + break; + case 1: + fn_1_9798(arg0, var_r28, arg2); + break; + case 2: + fn_1_9868(arg0, var_r28, arg2); + break; + case 3: + var_r28->unk_0C &= ~arg2; + for (var_r23 = 0; var_r23 < var_r28->unk_14; var_r23++) { + var_r27 = var_r28->unk_18[var_r23]; + switch (var_r27->unk_04) { + case 0: + fn_1_9544(arg0, var_r27, arg2); + break; + case 1: + fn_1_9798(arg0, var_r27, arg2); + break; + case 2: + fn_1_9868(arg0, var_r27, arg2); + break; + case 3: + var_r27->unk_0C &= ~arg2; + for (var_r22 = 0; var_r22 < var_r27->unk_14; var_r22++) { + fn_1_9130(arg0, var_r27->unk_18[var_r22], arg2); + } + break; + case 4: + fn_1_97EC(arg0, var_r27, arg2); + break; + case 5: + fn_1_971C(arg0, var_r27, arg2); + break; + case 6: + fn_1_9544(arg0, var_r27, arg2); + break; + default: + fn_1_9544(arg0, var_r27, arg2); + break; + } + } + break; + case 4: + fn_1_97EC(arg0, var_r28, arg2); + break; + case 5: + fn_1_971C(arg0, var_r28, arg2); + break; + case 6: + fn_1_9544(arg0, var_r28, arg2); + break; + default: + fn_1_9544(arg0, var_r28, arg2); + break; + } + } + break; + case 4: + fn_1_97EC(arg0, var_r29, arg2); + break; + case 5: + fn_1_971C(arg0, var_r29, arg2); + break; + case 6: + fn_1_9544(arg0, var_r29, arg2); + break; + default: + fn_1_9544(arg0, var_r29, arg2); + break; + } + } +} + +void fn_1_9544(s32 arg0, UnkM426Struct10 *arg1, s32 arg2) +{ + UnkM426Struct10 *var_r31; + u32 var_r27; + u32 var_r26; + u32 var_r25; + u32 var_r24; + u32 var_r23; + + arg1->unk_0C &= ~arg2; + for (var_r27 = 0; var_r27 < arg1->unk_14; var_r27++) { + var_r31 = arg1->unk_18[var_r27]; + switch (var_r31->unk_04) { + case 0: + var_r31->unk_0C = var_r31->unk_0C & ~arg2; + for (var_r26 = 0; var_r26 < var_r31->unk_14; var_r26++) { + fn_1_9130(arg0, var_r31->unk_18[var_r26], arg2); + } + break; + case 1: + fn_1_9798(arg0, var_r31, arg2); + break; + case 2: + fn_1_9868(arg0, var_r31, arg2); + break; + case 3: + var_r31->unk_0C = var_r31->unk_0C & ~arg2; + for (var_r25 = 0; var_r25 < var_r31->unk_14; var_r25++) { + fn_1_9130(arg0, var_r31->unk_18[var_r25], arg2); + } + break; + case 4: + fn_1_97EC(arg0, var_r31, arg2); + break; + case 5: + fn_1_971C(arg0, var_r31, arg2); + break; + case 6: + var_r31->unk_0C = var_r31->unk_0C & ~arg2; + for (var_r24 = 0; var_r24 < var_r31->unk_14; var_r24++) { + fn_1_9130(arg0, var_r31->unk_18[var_r24], arg2); + } + break; + default: + var_r31->unk_0C = var_r31->unk_0C & ~arg2; + for (var_r23 = 0; var_r23 < var_r31->unk_14; var_r23++) { + fn_1_9130(arg0, var_r31->unk_18[var_r23], arg2); + } + break; + } + } +} + +void fn_1_971C(s32 arg0, UnkM426Struct10 *arg1, s32 arg2) +{ + u32 var_r30; + + arg1->unk_0C = arg1->unk_0C & ~arg2; + for (var_r30 = 0; var_r30 < arg1->unk_14; var_r30++) { + fn_1_9130(arg0, arg1->unk_18[var_r30], arg2); + } +} + +void fn_1_9798(s32 arg0, UnkM426Struct10 *arg1, s32 arg2) +{ + arg1->unk_0C = arg1->unk_0C & ~arg2; + fn_1_9130(arg0, arg1->unk_64, arg2); +} + +void fn_1_97EC(s32 arg0, UnkM426Struct10 *arg1, s32 arg2) +{ + u32 var_r30; + + arg1->unk_0C &= ~arg2; + for (var_r30 = 0; var_r30 < arg1->unk_14; var_r30++) { + fn_1_9130(arg0, arg1->unk_18[var_r30], arg2); + } +} + +void fn_1_9868(s32 arg0, UnkM426Struct10 *arg1, s32 arg2) +{ + u32 var_r30; + + arg1->unk_0C &= ~arg2; + for (var_r30 = 0; var_r30 < arg1->unk_14; var_r30++) { + fn_1_9130(arg0, arg1->unk_18[var_r30], arg2); + } +} + +float fn_1_98E4(float arg8, float arg9, float argA, float argB) +{ + float var_f31; + float var_f30; + + var_f31 = 1.0 - arg8; + var_f30 = (argB * (arg8 * arg8)) + ((arg9 * (var_f31 * var_f31)) + (2.0 * (argA * (var_f31 * arg8)))); + + return var_f30; +} + +void fn_1_995C(s16 arg0) +{ + UnkM426Struct11 sp8; + + UnkM426Struct12 *var_r31; + HsfBuffer *var_r30; + ModelData *var_r29; + HsfData *var_r28; + s32 var_r27; + s32 var_r26; + + var_r29 = &Hu3DData[arg0]; + var_r28 = var_r29->hsfData; + var_r30 = var_r28->face; + for (var_r27 = 0; var_r27 < var_r28->faceCnt; var_r27++, var_r30++) { + var_r31 = var_r30->data; + for (var_r26 = 0; var_r26 < var_r30->count; var_r26++, var_r31++) { + switch (var_r31->unk_00 & 7) { + case 2: + case 3: + sp8 = var_r31->unk_0C; + var_r31->unk_0C = var_r31->unk_14; + var_r31->unk_14 = sp8; + break; + default: + break; + } + } + DCStoreRangeNoSync(var_r30->data, var_r30->count * sizeof(UnkM426Struct12)); + } + HuMemDirectFreeNum(HEAP_DATA, (u32)var_r29->unk_48); + MakeDisplayList(arg0, var_r29->unk_48); +} diff --git a/src/REL/m446Dll/main.c b/src/REL/m446Dll/main.c index c7ed352b..bbc5f6f2 100644 --- a/src/REL/m446Dll/main.c +++ b/src/REL/m446Dll/main.c @@ -383,7 +383,7 @@ void fn_1_CA0(unkStruct* arg0) { arg0->unk10 = 2; case 2: if (fn_1_5678(var_r30, &arg0->unk34, 0) == 0) { - if ((arg0->unkC-- % 60) == 0) { + if ((--arg0->unkC % 60) == 0) { MGSeqParamSet(arg0->unk6, 1, arg0->unkC / 60); } if (arg0->unkC == 0) { @@ -423,7 +423,7 @@ void fn_1_CA0(unkStruct* arg0) { } else break; case 7: if (fn_1_4088(arg0->unk20, var_r30->unk64, var_r30->unk66, arg0->unk1C == 1, &arg0->unk34, 0) == 0) { - if ((arg0->unkC-- % 60) == 0) { + if ((--arg0->unkC % 60) == 0) { MGSeqParamSet(arg0->unk6, 1, arg0->unkC / 60); } if (arg0->unkC <= 0) { diff --git a/src/REL/m451Dll/m451.c b/src/REL/m451Dll/m451.c new file mode 100644 index 00000000..ee49c65b --- /dev/null +++ b/src/REL/m451Dll/m451.c @@ -0,0 +1,1418 @@ +#include "game/frand.h" +#include "game/object.h" +#include "game/hsfman.h" +#include "game/wipe.h" +#include "game/sprite.h" +#include "game/audio.h" +#include "game/hsfanim.h" +#include "game/hsfmotion.h" +#include "game/minigame_seq.h" +#include "game/pad.h" + +#include "math.h" +#include "ext_math.h" + +#include "game/objsub.h" +#include "game/gamework.h" + +#include "game/gamework_data.h" + +#include "rel_sqrt_consts.h" + +typedef struct bss_348_data { + s16 unk0[5]; + s16 unkA; + s16 unkC[20]; + s32 unk34; + s32 unk38; + s32 unk3C; + s32 unk40; + s32 unk44; + float unk48[9]; + HsfObject *unk6C[40]; + HsfObject *unk10C[40]; + HsfObject *unk1AC[40]; + HsfTransform unk24C[40]; + u32 unk7EC[2]; + s8 unk7F4; + s8 unk7F5; + s8 unk7F6; + s8 unk7F7; + u16 unk7F8; + s16 unk7FA[5]; + s32 unk804; + s32 unk808; +} Bss348Data; + +typedef struct camera_view_params { + Vec rot; + Vec pos; + float zoom; +} CameraViewParams; + +s16 lbl_1_bss_CB4; +s16 lbl_1_bss_CB0[2]; +s16 lbl_1_bss_CAE; +s16 lbl_1_bss_CAC; +s32 lbl_1_bss_CA8; +s32 lbl_1_bss_CA4; +s32 lbl_1_bss_C04[40]; +s32 lbl_1_bss_B64[40]; +s32 lbl_1_bss_B60; +s32 lbl_1_bss_B5C; +s32 lbl_1_bss_B58; +s32 lbl_1_bss_B54; +Bss348Data lbl_1_bss_348[1]; +s32 lbl_1_bss_C[207]; +omObjData *lbl_1_bss_8; +Process *lbl_1_bss_4[1]; +s32 lbl_1_bss_0; + + +CameraViewParams lbl_1_data_0[3] = { + { { -64, 0, 0 }, { 0, 0, 0 }, 5000 }, + { { -9.5, 0, 0 }, { 0, 0, -510 }, 1860 }, + { { -5, 0, 0 }, { 0, 0, -2870 }, 5060 } +}; + +s32 lbl_1_data_54[3] = { + 0x520001, + 0x520002, + 0x520003 +}; + +s32 lbl_1_data_60[3] = { + 0x520005, + 0x520006, + 0x520007 +}; + +char *lbl_1_data_78[3] = { + "puzzle00", + "puzzle00", + "puzzle00" +}; + +char *lbl_1_data_464[3][40] = { + { + "puzzle2001", + "puzzle2002", + "puzzle2003", + "puzzle2004", + "puzzle2005", + "puzzle2006", + "puzzle2007", + "puzzle2008", + "puzzle2009", + "puzzle2010", + "puzzle2011", + "puzzle2012", + "puzzle2013", + "puzzle2014", + "puzzle2015", + "puzzle2016", + "puzzle2017", + "puzzle2018", + "puzzle2019", + "puzzle2020", + }, + { + "puzzle3001", + "puzzle3002", + "puzzle3003", + "puzzle3004", + "puzzle3005", + "puzzle3006", + "puzzle3007", + "puzzle3008", + "puzzle3009", + "puzzle3010", + "puzzle3011", + "puzzle3012", + "puzzle3013", + "puzzle3014", + "puzzle3015", + "puzzle3016", + "puzzle3017", + "puzzle3018", + "puzzle3019", + "puzzle3020", + "puzzle3021", + "puzzle3022", + "puzzle3023", + "puzzle3024", + "puzzle3025", + "puzzle3026", + "puzzle3027", + "puzzle3028", + "puzzle3029", + "puzzle3030", + }, + { + "puzzle4001", + "puzzle4002", + "puzzle4003", + "puzzle4004", + "puzzle4005", + "puzzle4006", + "puzzle4007", + "puzzle4008", + "puzzle4009", + "puzzle4010", + "puzzle4011", + "puzzle4012", + "puzzle4013", + "puzzle4014", + "puzzle4015", + "puzzle4016", + "puzzle4017", + "puzzle4018", + "puzzle4019", + "puzzle4020", + "puzzle4021", + "puzzle4022", + "puzzle4023", + "puzzle4024", + "puzzle4025", + "puzzle4026", + "puzzle4027", + "puzzle4028", + "puzzle4029", + "puzzle4030", + "puzzle4031", + "puzzle4032", + "puzzle4033", + "puzzle4034", + "puzzle4035", + "puzzle4036", + "puzzle4037", + "puzzle4038", + "puzzle4039", + "puzzle4040", + }, +}; + +s32 lbl_1_data_644[] = { + 0, 1, 2, 3, + 4, 5, 6, 7, + 0x5E0000, 0x190000, 0x6C0000, 0x890000, + 0x840000, 0x100000, 0x0C0000, 0x800000, + 0x5F0000, 0x5F0001, 0x5F0002, 0x5F0005, + 0x5F0006, 0x5F001B, 0x5F0020, 0x5F0021, + 0x5F0017, 0x5F0000, 0x1A0000, 0x6D0000, + 0x8A0000, 0x850000, 0x110000, 0x0D0000, + 0x810000, +}; + +s32 lbl_1_data_6C8[] = { + 6, + 7, + 8 +}; + +float lbl_1_data_6D4[][2] = { + -52, -9, + 53, -8, + 35, -8, + 23, -8, + 9, -8, + -9, -8, + -17, -8, + -31, -8, + 53, 8, + 35, 8, + 23, 8, + 9, 8, + -9, 8, + -17, 8, + -31, 8 +}; + +s32 lbl_1_data_74C[] = { + 3600, + 7200, + 10800 +}; + +s32 lbl_1_data_758[] = { + 58, + 54, + 48 +}; + +void fn_1_7BC(void); +void fn_1_B2C(void); +void fn_1_48C4(void); + +void ModuleProlog(void) +{ + Vec pos; + Vec up; + Vec target; + s32 i; + Process *objman; + s32 type; + type = GWSystem.mg_type; + lbl_1_bss_B60 = type; + if(type == -1) { + lbl_1_bss_B60 = frandmod(3); + } + lbl_1_bss_B5C = lbl_1_bss_B60; + switch(lbl_1_bss_B5C) { + case 0: + lbl_1_bss_B58 = 20; + break; + + case 1: + lbl_1_bss_B58 = 30; + break; + + default: + lbl_1_bss_B58 = 40; + break; + } + objman = omInitObjMan(50, 8192); + omGameSysInit(objman); + Hu3DCameraCreate(3); + Hu3DCameraPerspectiveSet(1, 15, 20, 25000, 1.2); + Hu3DCameraPerspectiveSet(2, 15, 20, 25000, 1.2); + Hu3DCameraViewportSet(1, 0, 0, 320, 240, 0, 1); + Hu3DCameraViewportSet(2, 0, 0, 640, 480, 0, 1); + Hu3DCameraScissorSet(1, 0, 0, 320, 240); + Hu3DCameraScissorSet(2, 0, 0, 640, 480); + lbl_1_bss_8 = omAddObjEx(objman, 32730, 0, 0, -1, omOutViewMulti); + lbl_1_bss_8->work[0] = 2; + for(i=0; i<1; i++) { + CRotM[i].x = lbl_1_data_0[lbl_1_bss_B60].rot.x; + CRotM[i].y = lbl_1_data_0[lbl_1_bss_B60].rot.y; + CRotM[i].z = lbl_1_data_0[lbl_1_bss_B60].rot.z; + CenterM[i].x = lbl_1_data_0[lbl_1_bss_B60].pos.x; + CenterM[i].y = lbl_1_data_0[lbl_1_bss_B60].pos.y; + CenterM[i].z = lbl_1_data_0[lbl_1_bss_B60].pos.z; + CZoomM[i] = lbl_1_data_0[lbl_1_bss_B60].zoom; + } + for(i=1; iwork[0]; i++) { + CRotM[i].x = 0; + CRotM[i].y = 0; + CRotM[i].z = 0; + CenterM[i].x = 0; + CenterM[i].y = 10; + CenterM[i].z = 0; + CZoomM[i] = 1900; + } + Hu3DLighInit(); + lbl_1_bss_CB4 = Hu3DGLightCreate(10000, 0, 10000, -1, 0, -1, 255, 255, 255); + Hu3DGLightPosAimSet(lbl_1_bss_CB4, 0, 6796.88f, 9706.95f, 0, 0, 0); + Hu3DGLightInfinitytSet(lbl_1_bss_CB4); + pos.x = -1800; + pos.y = 3600; + pos.z = 0; + up.x = up.z = 0; + up.y = 1; + target.x = -100; + target.y = 0; + target.z = 0; + Hu3DShadowCreate(30, 20, 10000); + Hu3DShadowTPLvlSet(0.4f); + Hu3DShadowPosSet(&pos, &up, &target); + Hu3DBGColorSet(0, 0, 0); + fn_1_B2C(); + HuPrcSetStat(HuPrcChildCreate(fn_1_7BC, 4096, 4096, 0, HuPrcCurrentGet()), 12); + HuPrcChildCreate(fn_1_48C4, 4096, 8192, 0, HuPrcCurrentGet()); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); +} + +void fn_1_7BC(void) +{ + Bss348Data *data = &lbl_1_bss_348[0]; + while(1) { + if(omPauseChk()) { + Hu3DModelAttrSet(data->unk0[0], 1); + Hu3DModelAttrSet(data->unk0[1], 1); + Hu3DModelAttrSet(data->unk0[2], 1); + HuSprAttrSet(data->unkA, 0, HUSPR_ATTR_DISPOFF); + } else { + Hu3DModelAttrReset(data->unk0[0], 1); + Hu3DModelAttrReset(data->unk0[1], 1); + Hu3DModelAttrReset(data->unk0[2], 1); + HuSprAttrReset(data->unkA, 0, HUSPR_ATTR_DISPOFF); + } + HuPrcVSleep(); + } +} + +void fn_1_858(void) +{ + s32 i; + float angle = 0; + while(1) { + float scale; + angle += 16.0f; + scale = (0.2f*sind(angle))+1.0; + for(i=0; i<8; i++) { + HuSprScaleSet(lbl_1_bss_CAE, i+1, scale, scale); + } + HuPrcVSleep(); + } +} + +void fn_1_918(s16 group, s16 base_member, u32 value, s32 state) +{ + s32 member; + u32 time[3]; + if(state != 2) { + time[0] = (value % 60); + value = (value-time[0])/60; + time[0] = 100.0f*(time[0]/60.0f); + time[1] = value%60; + value = (value-time[1])/60; + time[2] = value; + } else { + time[0] = 99; + time[1] = 59; + time[2] = 9; + } + member = base_member; + if(state != 0) { + member += 7; + } + HuSprBankSet(group, member, time[0]%10); + HuSprBankSet(group, member+1, time[0]/10); + HuSprBankSet(group, member+3, time[1]%10); + HuSprBankSet(group, member+4, time[1]/10); + HuSprBankSet(group, member+6, time[2]%10); +} + +void fn_1_1B64(ModelData *model, ParticleData *particle, Mtx matrix); +void fn_1_37C4(void); +void fn_1_4864(void); + +void fn_1_B2C(void) +{ + Bss348Data *temp_r31; + s32 temp_r30; + void *temp_r29; + s32 temp_r28; + HsfTransform *temp_r27; + s16 temp_r26; + HsfTransform *temp_r25; + Process *temp_r18; + s32 temp_r17; + AnimData *sp2C[4]; + s32 sp10; + AnimData *spC; + AnimData *sp8; + HuAudSndGrpSet(36); + for(temp_r30=0; temp_r30<1; temp_r30++) { + temp_r31 = &lbl_1_bss_348[temp_r30]; + temp_r31->unk34 = temp_r30; + temp_r31->unk3C = GWPlayerCfg[temp_r30].pad_idx; + temp_r31->unk38 = temp_r30+1; + temp_r31->unk44 = 0; + temp_r31->unk804 = -1; + temp_r29 = HuDataSelHeapReadNum(lbl_1_data_54[lbl_1_bss_B5C], MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unk0[0] = Hu3DModelCreate(temp_r29); + temp_r29 = HuDataSelHeapReadNum(lbl_1_data_60[lbl_1_bss_B60], MEMORY_DEFAULT_NUM, HEAP_DATA); + Hu3DAnimCreate(temp_r29, temp_r31->unk0[0], lbl_1_data_78[lbl_1_bss_B5C]); + Hu3DModelCameraSet(temp_r31->unk0[0], 1 << temp_r31->unk38); + Hu3DModelPosSet(temp_r31->unk0[0], 0, 0, 0); + Hu3DModelRotSet(temp_r31->unk0[0], 0, 0, 0); + Hu3DModelAttrSet(temp_r31->unk0[0], 0x4000); + temp_r29 = HuDataSelHeapReadNum(lbl_1_data_54[lbl_1_bss_B5C], MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unk0[1] = Hu3DModelCreate(temp_r29); + temp_r29 = HuDataSelHeapReadNum(0x52000D, MEMORY_DEFAULT_NUM, HEAP_DATA); + Hu3DAnimCreate(temp_r29, temp_r31->unk0[1], lbl_1_data_78[lbl_1_bss_B5C]); + Hu3DModelCameraSet(temp_r31->unk0[1], 1 << temp_r31->unk38); + Hu3DModelPosSet(temp_r31->unk0[1], 0, 0, 0); + Hu3DModelRotSet(temp_r31->unk0[1], 0, 0, 0); + temp_r29 = HuDataSelHeapReadNum(lbl_1_data_54[lbl_1_bss_B5C], MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unk0[2] = Hu3DModelCreate(temp_r29); + Hu3DModelCameraSet(temp_r31->unk0[2], 1 << temp_r31->unk38); + Hu3DModelPosSet(temp_r31->unk0[2], 0, 0, 0); + Hu3DModelRotSet(temp_r31->unk0[2], 0, 0, 0); + Hu3DModelTPLvlSet(temp_r31->unk0[2], 128); + Hu3DModelAttrSet(temp_r31->unk0[2], 0x4000); + for(temp_r28=0; temp_r28unk6C[temp_r28] = Hu3DModelObjPtrGet(temp_r31->unk0[0], lbl_1_data_464[lbl_1_bss_B5C][temp_r28]); + if(!temp_r31->unk6C[temp_r28]) { + OSReport("PeaceNo %d\n", lbl_1_bss_B5C); + OSReport("objname %s\n", lbl_1_data_464[lbl_1_bss_B5C][temp_r28]); + OSPanic("m451.c", 543, "ObjPtr1"); + } + temp_r25 = &temp_r31->unk24C[temp_r28]; + temp_r27 = &temp_r31->unk6C[temp_r28]->data.base; + temp_r27->pos.z += -10; + temp_r25->pos.x = temp_r27->pos.x; + temp_r25->pos.y = temp_r27->pos.y; + temp_r25->pos.z = temp_r27->pos.z; + temp_r25->rot.x = temp_r27->rot.x; + temp_r25->rot.y = temp_r27->rot.y; + temp_r25->rot.z = temp_r27->rot.z; + temp_r25->scale.x = temp_r27->scale.x; + temp_r25->scale.y = temp_r27->scale.y; + temp_r25->scale.z = temp_r27->scale.z; + temp_r31->unk10C[temp_r28] = Hu3DModelObjPtrGet(temp_r31->unk0[2], lbl_1_data_464[lbl_1_bss_B5C][temp_r28]); + if(!temp_r31->unk10C[temp_r28]) { + OSReport("objname %s\n", lbl_1_data_464[lbl_1_bss_B5C][temp_r28]); + OSPanic("m451.c", 555, "ObjPtr2"); + } + temp_r31->unk1AC[temp_r28] = Hu3DModelObjPtrGet(temp_r31->unk0[1], lbl_1_data_464[lbl_1_bss_B5C][temp_r28]); + if(!temp_r31->unk1AC[temp_r28]) { + OSReport("objname %s\n", lbl_1_data_464[lbl_1_bss_B5C][temp_r28]); + OSPanic("m451.c", 561, "ObjPtr3"); + } + } + temp_r29 = HuDataSelHeapReadNum(0x520000, MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r26 = Hu3DModelCreate(temp_r29); + Hu3DModelCameraSet(temp_r26, 1 << temp_r31->unk38); + Hu3DModelPosSet(temp_r26, 0, 0, 0); + Hu3DModelRotSet(temp_r26, 0, 0, 0); + temp_r29 = HuDataSelHeapReadNum(0x520004, MEMORY_DEFAULT_NUM, HEAP_DATA); + temp_r31->unk0[4] = Hu3DModelCreate(temp_r29); + Hu3DModelCameraSet(temp_r31->unk0[4], 1 << temp_r31->unk38); + Hu3DModelPosSet(temp_r31->unk0[4], 0, 0, 0); + Hu3DModelRotSet(temp_r31->unk0[4], 0, 0, 0); + temp_r29 = HuDataSelHeapReadNum(0x520008+lbl_1_bss_B5C, MEMORY_DEFAULT_NUM, HEAP_DATA); + Hu3DAnimCreate(temp_r29, temp_r31->unk0[4], "s3puzzle00"); + temp_r29 = HuDataSelHeapReadNum(0x610038+GWPlayerCfg[temp_r30].character, MEMORY_DEFAULT_NUM, HEAP_DATA); + spC = HuSprAnimRead(temp_r29); + temp_r26 = HuSprCreate(spC, 16384, 0); + temp_r31->unkA = HuSprGrpCreate(1); + HuSprGrpMemberSet(temp_r31->unkA, 0, temp_r26); + HuSprAttrSet(temp_r31->unkA, 0, 7); + sp8 = HuSprAnimRead(HuDataReadNum(0x52000C, MEMORY_DEFAULT_NUM)); + temp_r26 = Hu3DParticleCreate(sp8, 100); + Hu3DModelPosSet(temp_r26, 0, 0, 0); + Hu3DModelScaleSet(temp_r26, 1, 1, 1); + Hu3DModelLayerSet(temp_r26, 1); + Hu3DParticleHookSet(temp_r26, fn_1_1B64); + Hu3DModelCameraSet(temp_r26, 1 << temp_r31->unk38); + temp_r18 = HuPrcChildCreate(fn_1_37C4, 8192, 12288, 0, HuPrcCurrentGet()); + temp_r18->user_data = temp_r31; + lbl_1_bss_4[temp_r30] = temp_r18; + } + temp_r29 = HuDataSelHeapReadNum(0x610030, MEMORY_DEFAULT_NUM, HEAP_DATA); + sp2C[0] = HuSprAnimRead(temp_r29); + temp_r29 = HuDataSelHeapReadNum(0x610031, MEMORY_DEFAULT_NUM, HEAP_DATA); + sp2C[1] = HuSprAnimRead(temp_r29); + temp_r29 = HuDataSelHeapReadNum(0x610037, MEMORY_DEFAULT_NUM, HEAP_DATA); + sp2C[2] = HuSprAnimRead(temp_r29); + temp_r29 = HuDataSelHeapReadNum(0x52000B, MEMORY_DEFAULT_NUM, HEAP_DATA); + sp2C[3] = HuSprAnimRead(temp_r29); + lbl_1_bss_CAE = HuSprGrpCreate(16); + temp_r26 = HuSprCreate(sp2C[3], 16385, 0); + HuSprGrpMemberSet(lbl_1_bss_CAE, 0, temp_r26); + HuSprPosSet(lbl_1_bss_CAE, 0, 0, 0); + HuSprTPLvlSet(lbl_1_bss_CAE, 0, 0.5f); + HuSprColorSet(lbl_1_bss_CAE, 0, 0, 0, 0); + for(temp_r30=0; temp_r30<14; temp_r30++) { + if(temp_r30 >= 7) { + temp_r26 = HuSprCreate(sp2C[1], 16384, 0); + } else { + temp_r26 = HuSprCreate(sp2C[0], 16384, 0); + } + HuSprGrpMemberSet(lbl_1_bss_CAE, temp_r30+2, temp_r26); + HuSprPosSet(lbl_1_bss_CAE, temp_r30+2, lbl_1_data_6D4[temp_r30+1][0], lbl_1_data_6D4[temp_r30+1][1]); + temp_r28 = 0; + if(temp_r30 == 2 || temp_r30 == 9) { + temp_r28 = 11; + } + if(temp_r30 == 5 || temp_r30 == 12) { + temp_r28 = 10; + } + HuSprBankSet(lbl_1_bss_CAE, temp_r30+2, temp_r28); + } + temp_r26 = HuSprCreate(sp2C[2], 16384, 0); + HuSprGrpMemberSet(lbl_1_bss_CAE, 1, temp_r26); + HuSprPosSet(lbl_1_bss_CAE, 1, lbl_1_data_6D4[0][0], lbl_1_data_6D4[0][1]); + HuSprGrpPosSet(lbl_1_bss_CAE, 280, 61); + fn_1_918(lbl_1_bss_CAE, 2, GWMGRecordGet(lbl_1_data_6C8[lbl_1_bss_B5C]), 0); + fn_1_918(lbl_1_bss_CAE, 2, 0, 1); + for(temp_r30=0; temp_r30unk_34 == 0) { + temp_r31 = particle->unk_48; + for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { + temp_r31->unk14.x = temp_r31->unk2C = 0; + temp_r31->unk40.r = 255; + temp_r31->unk40.g = 255; + temp_r31->unk40.b = 0; + } + } + temp_r31 = particle->unk_48; + temp_r28 = &lbl_1_bss_348[0]; + if(temp_r28->unk44 == 1) { + for(temp_r27=0; temp_r27<4; temp_r27++) { + temp_f28 = 1.0f; + for(temp_r26=0, temp_f30=0; temp_r26<24; temp_r26++, temp_f30 += 15.0f) { + for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { + if(0.0f == temp_r31->unk14.x) { + break; + } + } + if(temp_r29 == particle->unk_30) { + break; + } + temp_f31 = temp_f30; + temp_f29 = temp_f28+(5.0f*frandf()); + temp_r31->unk34.x = temp_r28->unk48[7]+((temp_r27*10.0f)*sind(temp_f31)); + temp_r31->unk34.y = temp_r28->unk48[8]+((temp_r27*10.0f)*cosd(temp_f31)); + temp_r31->unk34.z = 50; + temp_r31->unk08.x = temp_f29*sind(temp_f31); + temp_r31->unk08.y = temp_f29*cosd(temp_f31); + temp_r31->unk08.z = 0; + temp_r31->unk14.x = 30.0f; + temp_r31->unk14.y = 360.0f*frandf(); + temp_r31->unk14.z = 225; + temp_r31->unk2C = (5.0f*frandf())+25.0f; + temp_r31->unk40.r = 255; + temp_r31->unk40.g = 255; + temp_r31->unk40.b = 0; + temp_r31->unk40.a = 255; + + } + } + temp_r28->unk44++; + DCStoreRangeNoSync(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01)); + } + temp_r31 = particle->unk_48; + for(temp_r29=0; temp_r29unk_30; temp_r29++, temp_r31++) { + if(0.0f == temp_r31->unk14.x) { + continue; + } + VECAdd(&temp_r31->unk08, &temp_r31->unk34, &temp_r31->unk34); + temp_r31->unk08.x *= 0.95f; + temp_r31->unk08.y *= 0.95f; + temp_r31->unk14.y += 20.0f; + if(temp_r31->unk14.y >= 180.0f && temp_r31->unk14.y < 200.0f) { + temp_r31->unk14.z *= 0.4f; + } + if(temp_r31->unk14.y >= 360.0f && temp_r31->unk14.y < 380.0f) { + temp_r31->unk14.z *= 0.4f; + } + if(temp_r31->unk14.y >= 360.0f) { + temp_r31->unk14.y -= 360.0f; + } + temp_r25 = (30.0*sind(temp_r31->unk14.y))+temp_r31->unk14.z; + if(temp_r25 < 0) { + temp_r25 = 0; + temp_r31->unk14.x = 0; + } + temp_r31->unk40.a = temp_r25; + if(0.0f == temp_r31->unk14.x) { + temp_r31->unk2C = 0; + } + } + PPCSync(); +} + +s8 fn_1_20FC(s32 arg0, s32 arg1) +{ + Bss348Data *temp_r31 = &lbl_1_bss_348[arg0]; + s8 temp_r30; + s8 temp_r29; + s8 temp_r28; + if(!GWPlayerCfg[arg0].iscom) { + if(arg1) { + temp_r29 = temp_r30 = HuPadStkY[temp_r31->unk3C]; + } else { + temp_r29 = temp_r30 = HuPadStkX[temp_r31->unk3C]; + } + (void)temp_r29; + } else { + if(arg1) { + temp_r28 = temp_r30 = temp_r31->unk7F5; + } else { + temp_r28 = temp_r30 = temp_r31->unk7F4; + } + } + return temp_r30; +} + +u8 fn_1_21B4(s32 arg0, s32 arg1) +{ + Bss348Data *temp_r31 = &lbl_1_bss_348[arg0]; + s8 temp_r30; + s8 temp_r29; + s8 temp_r28; + if(!GWPlayerCfg[arg0].iscom) { + if(arg1) { + temp_r29 = temp_r30 = HuPadTrigR[temp_r31->unk3C]; + } else { + temp_r29 = temp_r30 = HuPadTrigL[temp_r31->unk3C]; + } + (void)temp_r29; + } else { + if(arg1) { + temp_r28 = temp_r30 = temp_r31->unk7F6; + } else { + temp_r28 = temp_r30 = temp_r31->unk7F7; + } + } + return temp_r30; +} + +static inline s8 fn_1_20FC_inline(s32 arg0, s32 arg1) +{ + Bss348Data *temp_r31 = &lbl_1_bss_348[arg0]; + s8 temp_r30; + if(!GWPlayerCfg[arg0].iscom) { + if(arg1) { + temp_r30 = HuPadStkY[temp_r31->unk3C]; + } else { + temp_r30 = HuPadStkX[temp_r31->unk3C]; + } + } else { + if(arg1) { + temp_r30 = temp_r31->unk7F5; + } else { + temp_r30 = temp_r31->unk7F4; + } + } + return temp_r30; +} + +static inline u8 fn_1_21B4_inline(s32 arg0, s32 arg1) +{ + Bss348Data *temp_r31 = &lbl_1_bss_348[arg0]; + s8 temp_r30; + if(!GWPlayerCfg[arg0].iscom) { + if(arg1) { + temp_r30 = HuPadTrigR[temp_r31->unk3C]; + } else { + temp_r30 = HuPadTrigL[temp_r31->unk3C]; + } + } else { + if(arg1) { + temp_r30 = temp_r31->unk7F6; + } else { + temp_r30 = temp_r31->unk7F7; + } + } + return temp_r30; +} + + +u16 fn_1_2274(s32 arg0) +{ + Bss348Data *temp_r31 = &lbl_1_bss_348[arg0]; + u16 temp_r30; + + //Hacks to stop spilling in fn_1_37C4 + (void)temp_r31; + (void)temp_r31; + (void)temp_r31; + (void)temp_r31; + + if(!GWPlayerCfg[arg0].iscom) { + temp_r30 = HuPadBtnDown[temp_r31->unk3C]; + } else { + temp_r30 = temp_r31->unk7F8; + } + return temp_r30; +} + +void fn_1_22E0(Bss348Data *arg0, s32 arg1) +{ + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + float temp_f27; + + Vec *temp_r31; + Vec *temp_r29; + Vec *temp_r28; + s32 temp_r27; + Vec *temp_r26; + s32 temp_r25; + + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + temp_r31 = &arg0->unk6C[arg1]->data.base.pos; + temp_r26 = &arg0->unk10C[arg1]->data.base.pos; + temp_r28 = &arg0->unk1AC[arg1]->data.base.pos; + temp_r29 = &arg0->unk24C[arg1].pos; + temp_f29 = (temp_r29->x-temp_r31->x)/15.0f; + temp_f27 = (temp_r29->z-temp_r31->z)/30.0f; + temp_f28 = (temp_r29->y-temp_r31->y)/15.0f; + temp_f31 = 20; + temp_f30 = -20; + HuSprAttrSet(arg0->unkA, 0, 64); + omVibrate(arg0->unk34, 12, 6, 6); + temp_r25 =0; + for(temp_r27=0; temp_r27<30; temp_r27++) { + temp_r31->z += temp_f27; + temp_r28->z = temp_r26->z = temp_r31->z-5.0f; + if(temp_r27 < 15) { + temp_r31->x += temp_f29; + temp_r31->y += temp_f28; + temp_r28->x = temp_r31->x; + temp_r28->y = temp_r31->y; + sp2C.x = 30.0f+temp_r31->x; + sp2C.z = 50.0f; + sp2C.y = -30.0f+temp_r31->y; + Hu3D3Dto2D(&sp2C, (1 << arg0->unk38), &sp20); + HuSprGrpPosSet(arg0->unkA, sp20.x, sp20.y); + } + temp_r26->x = temp_r31->x+temp_f31; + temp_r26->y = temp_r31->y+temp_f30; + temp_f31 -= (4.0f/7.0f); + temp_f30 -= (-4.0f/7.0f); + temp_r28->z += 10.0f; + if(temp_r27 < 14) { + temp_r25 += 17; + } else if(temp_r27 < 28) { + temp_r25 -= 17; + } + Hu3DModelTPLvlSet(arg0->unk0[1], 255-temp_r25); + HuPrcVSleep(); + } + temp_r31->x = temp_r29->x; + temp_r31->y = temp_r29->y; + temp_r31->z = temp_r29->z; + sp14.x = 30.0f+temp_r31->x; + sp14.z = 50; + sp14.y = -30.0f+temp_r31->y; + Hu3D3Dto2D(&sp14, (1 << arg0->unk38), &sp8); + HuSprGrpPosSet(arg0->unkA, sp8.x, sp8.y); + temp_r28->x = 5000; +} + +void fn_1_263C(Bss348Data *arg0, s32 arg1) +{ + HsfTransform *temp_r31; + HsfTransform *temp_r30; + HsfTransform *temp_r29; + float temp_f31; + temp_r31 = &arg0->unk6C[arg1]->data.base; + temp_r29 = &arg0->unk10C[arg1]->data.base; + temp_r30 = &arg0->unk24C[arg1]; + for(temp_f31 = 0; temp_f31<180; temp_f31 += 10) { + temp_r31->scale.x = (temp_r30->scale.x*0.8f)+(0.2f*(temp_r30->scale.x*(1.0-sind(temp_f31)))); + temp_r31->scale.y = (temp_r30->scale.y*0.8f)+(0.2f*(temp_r30->scale.y*(1.0-sind(temp_f31)))); + temp_r31->scale.z = (temp_r30->scale.z*0.8f)+(0.2f*(temp_r30->scale.z*(1.0-sind(temp_f31)))); + temp_r29->scale.x = temp_r31->scale.x; + temp_r29->scale.y = temp_r31->scale.y; + temp_r29->scale.z = 0.8f*temp_r31->scale.z; + HuPrcVSleep(); + } + for(temp_f31 = 180; temp_f31<360; temp_f31 += 20) { + temp_r31->scale.x = (temp_r30->scale.x*0.9f)+(0.1f*(temp_r30->scale.x*(1.0-sind(temp_f31)))); + temp_r31->scale.y = (temp_r30->scale.y*0.9f)+(0.1f*(temp_r30->scale.y*(1.0-sind(temp_f31)))); + temp_r31->scale.z = (temp_r30->scale.z*0.9f)+(0.1f*(temp_r30->scale.z*(1.0-sind(temp_f31)))); + temp_r29->scale.x = temp_r31->scale.x; + temp_r29->scale.y = temp_r31->scale.y; + temp_r29->scale.z = 0.8f*temp_r31->scale.z; + HuPrcVSleep(); + } + temp_r31->scale.x = temp_r30->scale.x; + temp_r31->scale.y = temp_r30->scale.y; + temp_r31->scale.z = temp_r30->scale.z; + temp_r29->scale.x = temp_r31->scale.x; + temp_r29->scale.y = temp_r31->scale.y; + temp_r29->scale.z = 0.8f*temp_r31->scale.z; +} + +void fn_1_2A34(Bss348Data *arg0, s32 arg1, s32 arg2) +{ + HsfTransform *temp_r31; + HsfTransform *temp_r30; + s32 temp_r28; + + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + + temp_r31 = &arg0->unk6C[arg1]->data.base; + temp_r30 = &arg0->unk10C[arg1]->data.base; + temp_f30 = temp_r31->scale.x; + temp_f29 = temp_r31->scale.y; + temp_f28 = temp_r31->scale.z; + temp_r31->scale.x = temp_r31->scale.y = temp_r31->scale.z = 0; + temp_r30->scale.x = temp_r30->scale.y = temp_r30->scale.z = 0; + for(temp_r28=0, temp_f31=0; temp_r28<30; temp_r28++, temp_f31 += (1.0f/30.0f)) { + temp_r31->scale.x += temp_f30/30.0f; + temp_r31->scale.y += temp_f29/30.0f; + temp_r31->scale.z += temp_f28/30.0f; + temp_r30->scale.x = temp_r31->scale.x; + temp_r30->scale.y = temp_r31->scale.y; + temp_r30->scale.z = 0.8f*temp_r31->scale.z; + if(arg2 == 0) { + HuSprGrpScaleSet(arg0->unkA, temp_f31, temp_f31); + } + HuPrcVSleep(); + } + temp_r31->scale.x = temp_f30; + temp_r31->scale.y = temp_f29; + temp_r31->scale.z = temp_f28; + temp_r30->scale.x = temp_r31->scale.x; + temp_r30->scale.y = temp_r31->scale.y; + temp_r30->scale.z = 0.8f*temp_r31->scale.z; + if(arg2 == 0) { + HuSprAttrReset(arg0->unkA, 0, 1); + HuSprGrpScaleSet(arg0->unkA, 1, 1); + } else { + HuSprAttrReset(arg0->unkA, 0, 64); + } +} + +typedef struct work_2C50 { + Bss348Data *unk0; + s32 unk4; + s32 unk8; + s32 *unkC; +} Work2C50; + +void fn_1_2C50(void) +{ + HsfTransform *temp_r31; + Work2C50 *temp_r30; + s32 temp_r29; + HsfTransform *temp_r28; + s32 temp_r27; + + float temp_f31; + float temp_f30; + float temp_f29; + temp_r30 = HuPrcCurrentGet()->user_data; + temp_r31 = &temp_r30->unk0->unk6C[temp_r30->unk4]->data.base; + temp_r28 = &temp_r30->unk0->unk10C[temp_r30->unk4]->data.base; + HuAudFXPlay(1401); + if(temp_r30->unk8) { + temp_f30 = temp_r31->rot.z+90.0f; + } else { + temp_f30 = temp_r31->rot.z-90.0f; + } + if(temp_f30 >= 360.0f) { + temp_f30 -= 360.0f; + } + if(temp_f30 < 0.0f) { + temp_f30 += 360.0f; + } + temp_f29 = temp_r31->rot.z; + temp_f31 = 0; + for(temp_r29=0, temp_r27=15; temp_r29unk8) { + temp_r31->rot.z = temp_f29+(100.0*sind(temp_f31)); + } else { + temp_r31->rot.z = temp_f29-(100.0*sind(temp_f31)); + } + temp_r28->rot.z = temp_r31->rot.z; + temp_f31 += 6.0f; + HuPrcVSleep(); + } + temp_f31 = 90.0f; + for(temp_r29=0, temp_r27=3; temp_r29unk8) { + temp_r31->rot.z = temp_f29+(100.0*sind(temp_f31)); + } else { + temp_r31->rot.z = temp_f29-(100.0*sind(temp_f31)); + } + temp_r28->rot.z = temp_r31->rot.z; + HuPrcVSleep(); + } + temp_r31->rot.z = temp_r28->rot.z = temp_f30; + *temp_r30->unkC = 0; + HuPrcKill(HuPrcCurrentGet()); + while(1) { + HuPrcVSleep(); + } +} + +void fn_1_2F08(void) +{ + Vec *temp_r31 = HuPrcCurrentGet()->user_data; + float temp_f31; + float temp_f30; + HuPrcSleep(frandmod(24)); + temp_f30 = temp_r31->x/100.0f; + temp_f31 = -7.0f; + while(1) { + temp_r31->y -= temp_f31; + if(temp_r31->y < -500.0f) { + break; + } + temp_f31 += 0.5f; + if(temp_f31 > 20.0f) { + temp_f31 = 20.0f; + } + temp_r31->x += temp_f30; + temp_r31->z += 10.0f; + HuPrcVSleep(); + } + HuPrcKill(HuPrcCurrentGet()); + while(1) { + HuPrcVSleep(); + } +} + +void fn_1_2FEC(Bss348Data *arg0, s32 arg1) +{ + Vec *temp_r31 = &arg0->unk6C[arg1]->data.base.pos; + if(temp_r31->x > 230.0f) { + temp_r31->x = 230.0f; + } + if(temp_r31->x < -230.0f) { + temp_r31->x = -230.0f; + } + if(temp_r31->y > 170.0f) { + temp_r31->y = 170.0f; + } + if(temp_r31->y < -170.0f) { + temp_r31->y = -170.0f; + } +} + +void fn_1_30B0(s32 arg0, s32 arg1) +{ + switch(GWPlayerCfg[arg0].diff) { + case 0: + arg1 *= 8; + break; + + case 1: + arg1 *= 4; + break; + + case 2: + arg1 *= 2; + break; + } + if(arg1 <= 1) { + HuPrcVSleep(); + } else { + HuPrcSleep(frandmod(arg1/2)+arg1); + } +} + +void fn_1_3154(Bss348Data *arg0, s32 arg1, s32 arg2) +{ + HsfTransform *temp_r30; + s32 temp_r29; + HsfTransform *temp_r25; + s32 temp_r23; + float temp_f29; + Vec sp24; + Vec sp18; + Vec spC; + arg1 = lbl_1_bss_C04[arg2]; + temp_r30 = &arg0->unk6C[arg1]->data.base; + arg0->unk7F4 = arg0->unk7F5 = 0; + arg0->unk7F7 = arg0->unk7F6 = 0; + arg0->unk7F8 = 0; + switch(GWPlayerCfg[arg0->unk34].diff) { + case 0: + temp_r29 = (arg2*2)+60; + break; + + case 1: + temp_r29 = arg2+80; + break; + + case 2: + temp_r29 = arg2+90; + break; + + default: + temp_r29 = arg2+95; + break; + } + if(temp_r29 > 100) { + temp_r29 = 100; + } + if(arg0->unk804 == -1) { + if(frandmod(100) < temp_r29 || lbl_1_bss_B58 == arg2+1) { + arg0->unk804 = arg1; + } else { + temp_r23 = frandmod(lbl_1_bss_B58-arg2); + arg0->unk804 = lbl_1_bss_C04[arg2+temp_r23]; + } + arg0->unk808 = -1; + if(GWPlayerCfg[arg0->unk34].diff == 2 || GWPlayerCfg[arg0->unk34].diff == 3) { + if(frandmod(100) < temp_r29 || lbl_1_bss_B58 == arg2+1) { + arg0->unk808 = 10; + } + } + fn_1_30B0(arg0->unk34, 10); + } + temp_r25 = &arg0->unk24C[arg0->unk804]; + HuSetVecF(&sp24, temp_r25->pos.x, temp_r25->pos.y, 0.0); + HuSetVecF(&sp18, temp_r30->pos.x, temp_r30->pos.y, 0.0); + HuSubVecF(&spC, &sp24, &sp18); + if(VECMagXY(&spC) >= 40.0f) { + temp_f29 = atan2d(spC.x, spC.y); + arg0->unk7F4 = 50*sind(temp_f29); + arg0->unk7F5 = 50*cosd(temp_f29); + if(arg0->unk808 >= 0 && arg0->unk808-- == 0 && temp_r30->rot.z != 0.0f) { + arg0->unk808 = 10; + if(0.0f == (temp_r30->rot.z-90.0f)) { + arg0->unk7F6 = 50; + } else { + arg0->unk7F7 = 50; + } + } + } else { + fn_1_30B0(arg0->unk34, 1); + if(frandmod(100) < temp_r29 || lbl_1_bss_B58 == arg2+1) { + if(0.0f != temp_r30->rot.z) { + if(0.0f == (temp_r30->rot.z-90.0f)) { + arg0->unk7F6 = 50; + } else { + arg0->unk7F7 = 50; + } + } else { + arg0->unk7F8 = PAD_BUTTON_A; + arg0->unk804 = -1; + } + + } else { + switch(frandmod(3)) { + case 0: + arg0->unk7F6 = 50; + break; + + case 1: + arg0->unk7F6 = 50; + break; + + default: + arg0->unk7F8 = PAD_BUTTON_A; + arg0->unk804 = -1; + break; + } + if(frandmod(100) < temp_r29) { + arg0->unk804 = -1; + } + } + } +} + +void fn_1_37C4(void) +{ + Bss348Data *temp_r31; + HsfTransform *temp_r30; + s32 temp_r29; + HsfTransform *temp_r28; + s32 temp_r26; + HsfTransform *temp_r25; + Process *temp_r24; + s32 temp_r23; + Vec spCC; + Vec spC0; + Vec spB4; + Work2C50 spA4; + Vec sp98; + Vec sp8C; + Vec sp80; + Vec sp74; + s32 sp70; + s32 sp58; + s32 sp48; + float temp_f27; + float temp_f26; + + + + temp_r31 = HuPrcCurrentGet()->user_data; + temp_r31->unk40 = 0; + for(temp_r29=0; temp_r29unk10C[temp_r29]->data.base; + temp_r30->pos.x = 5000; + temp_r30 = &temp_r31->unk1AC[temp_r29]->data.base; + temp_r30->pos.x = 5000; + } + while(lbl_1_bss_CA8 == 0) { + HuPrcVSleep(); + } + HuPrcSleep(180); + HuAudFXPlay(1391); + for(temp_r29=0; temp_r29unk6C[temp_r29]->data.base; + temp_f26 = atan2d(temp_r30->pos.x, temp_r30->pos.y); + temp_f27 = VECMagXY(&temp_r30->pos); + temp_f27 *= 1.05f; + temp_r30->pos.x = temp_f27*sind(temp_f26); + temp_r30->pos.y = temp_f27*cosd(temp_f26); + } + omVibrate(temp_r31->unk34, 12, 6, 6); + HuPrcSleep(30); + HuAudFXPlay(1387); + for(temp_r29=0; temp_r29unk6C[temp_r29]->data.base; + temp_r24->user_data = temp_r30; + } + HuPrcSleep(120); + lbl_1_bss_CA8 = 2; + for(temp_r29=0; temp_r29unk44 = 0; + temp_r31->unk804 = -1; + temp_r26 = lbl_1_bss_C04[temp_r29]; + temp_r30 = &temp_r31->unk6C[temp_r26]->data.base; + temp_r28 = &temp_r31->unk10C[temp_r26]->data.base; + if(temp_r29 != 0) { + temp_r25 = &temp_r31->unk24C[lbl_1_bss_C04[temp_r29-1]]; + temp_r30->pos.x = temp_r25->pos.x; + temp_r30->pos.y = temp_r25->pos.y; + temp_r28->pos.x = 20+temp_r30->pos.x; + temp_r28->pos.y = -20+temp_r30->pos.y; + } else { + temp_r30->pos.x = temp_r30->pos.y = 0; + temp_r28->pos.x = 20+temp_r30->pos.x; + temp_r28->pos.y = -20+temp_r30->pos.y; + sp98.x = temp_r30->pos.x+30; + sp98.z = 50; + sp98.y = -30+temp_r30->pos.y; + Hu3D3Dto2D(&sp98, (1 << temp_r31->unk38), &sp8C); + HuSprGrpPosSet(temp_r31->unkA, sp8C.x, sp8C.y); + HuSprAttrReset(temp_r31->unkA, 0, HUSPR_ATTR_DISPOFF); + } + temp_r30->pos.z = 50; + temp_r28->pos.z = temp_r30->pos.z-5; + temp_r30->rot.z = temp_r28->rot.z = 90.0f*lbl_1_bss_B64[temp_r29]; + fn_1_2A34(temp_r31, temp_r26, temp_r29); + if(temp_r29 == 0) { + while(lbl_1_bss_CA8 != 3) { + HuPrcVSleep(); + } + } + while(1) { + if(GWPlayerCfg[temp_r31->unk34].iscom == 1) { + fn_1_3154(temp_r31, temp_r26, temp_r29); + } + if(!sp70) { + temp_r23 = -1; + if(fn_1_21B4_inline(temp_r31->unk34, 0) > 20) { + temp_r23 = 1; + } + if(fn_1_21B4_inline(temp_r31->unk34, 1) > 20) { + temp_r23 = 0; + } + if(temp_r23 != -1) { + sp70 = 1; + temp_r24 = HuPrcChildCreate(fn_1_2C50, 8192, 8192, 0, HuPrcCurrentGet()); + temp_r24->user_data = &spA4; + spA4.unk0 = temp_r31; + spA4.unk4 = temp_r26; + spA4.unk8 = temp_r23; + spA4.unkC = &sp70; + } + } + if((fn_1_2274(temp_r31->unk34) & PAD_BUTTON_A) && !sp70) { + if(0.0f == temp_r30->rot.z) { + temp_r25 = &temp_r31->unk24C[temp_r26]; + HuSetVecF(&spCC, temp_r25->pos.x, temp_r25->pos.y, 0.0f); + HuSetVecF(&spC0, temp_r30->pos.x, temp_r30->pos.y, 0.0f); + HuSubVecF(&spB4, &spCC, &spC0); + if(VECMagXY(&spB4) < 40.0f) { + HuAudFXPlay(1402); + temp_r31->unk44 = 1; + temp_r31->unk48[7] = temp_r30->pos.x; + temp_r31->unk48[8] = temp_r30->pos.y; + fn_1_22E0(temp_r31, temp_r26); + goto end; + } + } + fn_1_263C(temp_r31, temp_r26); + } + temp_r31->unk48[6] = -1.0f; + if(ABS_INV(fn_1_20FC_inline(temp_r31->unk34, 0)) > 20 || ABS_INV(fn_1_20FC_inline(temp_r31->unk34,1)) > 20) { + temp_r31->unk48[6] = atan2d(fn_1_20FC_inline(temp_r31->unk34, 0), fn_1_20FC_inline(temp_r31->unk34, 1)); + } + if(-1.0f != temp_r31->unk48[6]) { + temp_r30->pos.x += 5.0f*sind(temp_r31->unk48[6]); + temp_r30->pos.y += 5.0f*cosd(temp_r31->unk48[6]); + fn_1_2FEC(temp_r31, temp_r26); + temp_r28->pos.x = 20.0f+temp_r30->pos.x; + temp_r28->pos.y = -20.0f+temp_r30->pos.y; + sp80.x = 30.0f+temp_r30->pos.x; + sp80.z = 50; + sp80.y = -30.0f+temp_r30->pos.y; + Hu3D3Dto2D(&sp80, (1 << temp_r31->unk38), &sp74); + HuSprGrpPosSet(temp_r31->unkA, sp74.x, sp74.y); + } + HuPrcVSleep(); + } + + end: + (void)temp_r31; + } + temp_r31->unk40 = 4; + //Hacks to Stop Spilling + (void)temp_r26; + (void)temp_r26; + (void)temp_r24; + (void)temp_r24; + (void)temp_r24; + (void)temp_r23; + (void)temp_r23; + (void)temp_r23; + (void)temp_r23; + while(1) { + HuPrcVSleep(); + } +} + +void fn_1_4768(s32 arg0) +{ + float temp_f31; + s32 temp_r31; + s32 temp_r30; + Bss348Data *spC = &lbl_1_bss_348[arg0]; + Bss348Data *temp_r29; + + for(temp_r31=0, temp_f31=1; temp_r31<15; temp_r31++) { + temp_f31 -= (1.0f/15.0f); + for(temp_r30=0; temp_r30<1; temp_r30++) { + temp_r29 = &lbl_1_bss_348[temp_r30]; + HuSprGrpScaleSet(temp_r29->unkA, temp_f31, temp_f31); + } + HuPrcVSleep(); + } + for(temp_r31=0; temp_r31<1; temp_r31++) { + HuSprAttrSet(lbl_1_bss_348[temp_r31].unkA, 0, HUSPR_ATTR_DISPOFF); + } +} + +void fn_1_4864(void) +{ + while(1) { + if(omSysExitReq == 1) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuAudFadeOut(1000); + HuPrcSleep(60); + MGSeqKillAll(); + omOvlReturnEx(1, 1); + while(1) { + HuPrcVSleep(); + } + } + HuPrcVSleep(); + } +} + +void fn_1_48C4(void) +{ + u32 temp_r31; + s32 temp_r30; + s32 temp_r29; + s16 temp_r21; + s32 sp14; + s32 sp10; + + lbl_1_bss_CA8 = 0; + temp_r31 = 0; + lbl_1_bss_CA8 = 1; + while(lbl_1_bss_CA8 == 1) { + HuPrcVSleep(); + } + sp10 = HuAudSeqPlay(69); + temp_r21 = MGSeqStartCreate(); + while(MGSeqStatGet(temp_r21)) { + HuPrcVSleep(); + } + lbl_1_bss_CA8 = 3; + while(1) { + for(temp_r30=0, sp14=0; temp_r30<1; temp_r30++) { + if(lbl_1_bss_348[temp_r30].unk40 == 4) { + temp_r29 = temp_r30; + sp14++; + } + } + if(sp14 != 0) { + break; + } + temp_r31++; + fn_1_918(lbl_1_bss_CAE, 2, temp_r31, 1); + if(temp_r31 >= 35999) { + temp_r29 = -1; + break; + } + HuPrcVSleep(); + } + if(temp_r29 == -1) { + fn_1_918(lbl_1_bss_CAE, 2, 0, 2); + } + HuAudSeqFadeOut(sp10, 100); + for(temp_r30=0; temp_r30<1; temp_r30++) { + HuPrcKill(lbl_1_bss_4[temp_r30]); + } + temp_r21 = MGSeqFinishCreate(); + while(MGSeqStatGet(temp_r21)) { + HuPrcVSleep(); + } + if(temp_r29 == -1 || temp_r31 >= GWMGRecordGet(lbl_1_data_6C8[lbl_1_bss_B5C])) { + if(temp_r29 != -1) { + HuAudSStreamPlay(1); + } else { + HuAudSStreamPlay(4); + } + } + if(temp_r29 != -1) { + lbl_1_bss_CA8 = 4; + lbl_1_bss_CA4 = temp_r29; + fn_1_4768(temp_r29); + } + mgRecordExtra = temp_r31; + if(temp_r29 != -1) { + if(lbl_1_data_74C[lbl_1_bss_B5C] >= temp_r31) { + GWGameStat.present[lbl_1_data_758[lbl_1_bss_B5C]] = 1; + OSReport("time %d no %d\n", lbl_1_data_74C[lbl_1_bss_B5C], lbl_1_data_758[lbl_1_bss_B5C]); + } + if(temp_r31 < GWMGRecordGet(lbl_1_data_6C8[lbl_1_bss_B5C])) { + GWMGRecordSet(lbl_1_data_6C8[lbl_1_bss_B5C], temp_r31); + temp_r21 = MGSeqRecordCreate(temp_r31); + HuPrcChildCreate(fn_1_858, 4096, 4096, 0, HuPrcCurrentGet()); + fn_1_918(lbl_1_bss_CAE, 2, temp_r31, 0); + while(MGSeqStatGet(temp_r21)) { + HuPrcVSleep(); + } + HuAudSStreamPlay(1); + } + HuPrcSleep(180); + } else { + mgRecordExtra = 36000; + HuPrcSleep(210); + } + HuPrcSleep(30); + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + HuPrcSleep(60); + HuAudFadeOut(1); + MGSeqKillAll(); + omOvlReturnEx(1, 1); + while(1) { + HuPrcVSleep(); + } +} \ No newline at end of file diff --git a/src/REL/modeltestDll/modeltest00.c b/src/REL/modeltestDll/modeltest00.c index cb6e51fc..9438febb 100644 --- a/src/REL/modeltestDll/modeltest00.c +++ b/src/REL/modeltestDll/modeltest00.c @@ -228,7 +228,4 @@ void fn_1_46F0(void) // -------------------------------------------------------------------------- // -const Point3d lbl_1_rodata_1C8 = {0.0f, 0.0f, 0.0f}; -const Point3d lbl_1_rodata_1D4 = {0.0f, 0.0f, -1.0f}; - // -------------------------------------------------------------------------- // \ No newline at end of file diff --git a/src/REL/modeltestDll/modeltest01.c b/src/REL/modeltestDll/modeltest01.c index e69de29b..d30e6c6a 100644 --- a/src/REL/modeltestDll/modeltest01.c +++ b/src/REL/modeltestDll/modeltest01.c @@ -0,0 +1,753 @@ +#include "game/object.h" +#include "game/hsfman.h" +#include "game/hsfload.h" +#include "game/hsfdraw.h" +#include "game/printfunc.h" + +#include "game/hsfmotion.h" + +#include "game/wipe.h" +#include "game/audio.h" +#include "game/msm.h" +#include "game/pad.h" +#include "game/process.h" +#include "game/gamework_data.h" + +#include "math.h" +#include "ext_math.h" + +typedef struct unk_bss_a18 { + u32 unk0; + Vec unk4; + Vec unk10; + u8 unk1C[0x88]; +} UnkBssA18; + +omObjData *lbl_1_bss_AC4; +omObjData *lbl_1_bss_AC0; +omObjData *lbl_1_bss_ABC; +UnkBssA18 lbl_1_bss_A18; +s32 lbl_1_bss_A14; +float lbl_1_bss_A10; +float lbl_1_bss_A0C; +s16 lbl_1_bss_A08; +Process *lbl_1_bss_A04; +Process *lbl_1_bss_A00; + +void fn_1_4DF8(omObjData *object); +void fn_1_5A60(omObjData *object); +void fn_1_5DA8(void); +void fn_1_6AE0(ModelData *model, Mtx mtx); +void fn_1_83B4(void); + + +static const Vec lbl_1_rodata_1C8 = {0.0f, 0.0f, 0.0f}; +static const Vec lbl_1_rodata_1D4 = {0.0f, 0.0f, -1.0f}; + +void fn_1_4AC8(void) +{ + Vec sp14; + Vec sp8; + Process *objman; + OSReport("******* MODELTESTObjectSetup *********\n"); + objman = omInitObjMan(50, 8192); + CRot.x = -22; + CRot.y = 0; + CRot.z = 0; + Center.x = 0; + Center.y = 100; + Center.z = 0; + CZoom = 400; + Hu3DCameraCreate(1); + lbl_1_bss_A0C = 45; + Hu3DCameraPerspectiveSet(1, lbl_1_bss_A0C, 20, 5000, 1.2f); + Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); + Hu3DCameraScissorSet(1, 0, 0, 640, 480); + lbl_1_bss_ABC = omAddObjEx(objman, 0, 32, 32, -1, fn_1_4DF8); + lbl_1_bss_AC0 = omAddObjEx(objman, 32730, 0, 0, -1, fn_1_5A60); + lbl_1_bss_A00 = HuPrcCreate(fn_1_5DA8, 100, 8192, 0); + Hu3DBGColorSet(16, 16, 16); + Hu3DHookFuncCreate(fn_1_6AE0); + HuPrcChildCreate(fn_1_83B4, 100, 12288, 0, objman); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 30); + sp14 = lbl_1_rodata_1C8; + sp8 = lbl_1_rodata_1D4; + lbl_1_bss_A18.unk0 = 64; + lbl_1_bss_A18.unk10.x = 0; + lbl_1_bss_A18.unk10.y = 0; + lbl_1_bss_A18.unk10.z = 0; + msmSeSetListener(&sp14, &sp8, 2000, 1000, 0); +} + +void fn_1_4DF8(omObjData *object) +{ + float temp_f31; + Vec pos; + Vec offset; + Vec dir; + Vec y_offset; + + s8 temp_r31; + + if(HuPadBtnDown[0] & PAD_BUTTON_START) { + if(lbl_1_bss_A00) { + HuPrcKill(lbl_1_bss_A00); + } + if(lbl_1_bss_A04) { + HuPrcKill(lbl_1_bss_A04); + } + HuAudFXListnerKill(); + omOvlReturnEx(1, 1); + return; + } + CRot.y += 0.1f*HuPadStkX[0]; + CRot.x += 0.1f*HuPadStkY[0]; + CZoom += HuPadTrigL[0]/2; + CZoom -= HuPadTrigR[0]/2; + if(CZoom < 100) { + CZoom = 100; + } + if(CZoom > 2000) { + CZoom = 2000; + } + pos.x = Center.x + (CZoom * (sind(CRot.y) * cosd(CRot.x))); + pos.y = (Center.y + (CZoom * -sind(CRot.x))); + pos.z = (Center.z + (CZoom * (cosd(CRot.y) * cosd(CRot.x)))); + offset.x = Center.x - pos.x; + offset.y = Center.y - pos.y; + offset.z = Center.z - pos.z; + dir.x = (sind(CRot.y) * sind(CRot.x)); + dir.y = cosd(CRot.x); + dir.z = (cosd(CRot.y) * sind(CRot.x)); + temp_f31 = CRot.z; + y_offset.x = dir.x * (offset.x * offset.x + (1.0f - offset.x * offset.x) * cosd(temp_f31)) + + dir.y * (offset.x * offset.y * (1.0f - cosd(temp_f31)) - offset.z * sind(temp_f31)) + + dir.z * (offset.x * offset.z * (1.0f - cosd(temp_f31)) + offset.y * sind(temp_f31)); + + y_offset.y = dir.y * (offset.y * offset.y + (1.0f - offset.y * offset.y) * cosd(temp_f31)) + + dir.x * (offset.x * offset.y * (1.0f - cosd(temp_f31)) + offset.z * sind(temp_f31)) + + dir.z * (offset.y * offset.z * (1.0f - cosd(temp_f31)) - offset.x * sind(temp_f31)); + + y_offset.z = dir.z * (offset.z * offset.z + (1.0f - offset.z * offset.z) * cosd(temp_f31)) + + (dir.x * (offset.x * offset.z * (1.0 - cosd(temp_f31)) - offset.y * sind(temp_f31)) + + dir.y * (offset.y * offset.z * (1.0 - cosd(temp_f31)) + offset.x * sind(temp_f31))); + VECCrossProduct(&dir, &offset, &offset); + VECNormalize(&offset, &offset); + temp_r31 = (HuPadSubStkX[0] & 0xF8); + if (temp_r31 != 0) { + Center.x += 0.05f * (offset.x * temp_r31); + Center.y += 0.05f * (offset.y * temp_r31); + Center.z += 0.05f * (offset.z * temp_r31); + } + PSVECNormalize(&y_offset, &offset); + temp_r31 = -(HuPadSubStkY[0] & 0xF8); + if (temp_r31 != 0) { + Center.x += 0.05f * (offset.x * temp_r31); + Center.y += 0.05f * (offset.y * temp_r31); + Center.z += 0.05f * (offset.z * temp_r31); + } + Hu3DCameraPerspectiveSet(1, lbl_1_bss_A0C, 20, 5000, 1.2f); +} + +void fn_1_5A60(omObjData *object) +{ + Mtx rotAxis; + Vec pos, target, up; + float x, y, z; + + x = CRot.x; + y = CRot.y; + z = CRot.z; + + pos.x = (((sind(y)*cosd(x))*CZoom)+Center.x); + pos.y = (-sind(x)*CZoom)+Center.y; + pos.z = ((cosd(y)*cosd(x))*CZoom)+Center.z; + target.x = Center.x; + target.y = Center.y; + target.z = Center.z; + up.x = sind(y)*sind(x); + up.y = cosd(x); + up.z = cosd(y)*sind(x); + Hu3DCameraPosSet(1, pos.x, pos.y, pos.z, up.x, up.y, up.z, target.x, target.y, target.z); + MTXRotDeg(rotAxis, 'y', -y); + MTXMultVec(rotAxis, &pos, &up); + VECSubtract(&target, &pos, &up); + VECNormalize(&up, &up); + HuAudFXListnerUpdate(&pos, &up); +} + +u32 lbl_1_data_3B0[] = { + 0x005D0000, 0x00000000, + 0x005E0000, 0x00000000, + 0x005E0001, 0x00000000, + 0x005F0006, 0x00000001, + 0x005F0000, 0x00000001, + 0x005F0002, 0x00000001, + 0x005F0003, 0x00000001, + 0x005F0005, 0x00000000, + 0x005F0017, 0x00000000, + 0x005F0018, 0x00000000, + 0x00000000, 0x00000000 +}; + +u32 lbl_1_data_408[] = { + 0x00170000, 0x00000000, + 0x00170002, 0x00000000, + 0x00170003, 0x00000000, + 0x0017000D, 0x00000001, + 0x00170005, 0x00000001, + 0x00170007, 0x00000001, + 0x00170008, 0x00000001, + 0x0017000C, 0x00000000, + 0x00170028, 0x00000000, + 0x00170029, 0x00000000, + 0x00000000, 0x00000000 +}; + +u32 lbl_1_data_460[] = { + 0x006A0000, 0x00000000, + 0x006A0002, 0x00000000, + 0x006A0003, 0x00000000, + 0x006A000D, 0x00000001, + 0x006A0005, 0x00000001, + 0x006A0007, 0x00000001, + 0x006A0008, 0x00000001, + 0x006A000C, 0x00000000, + 0x006A0028, 0x00000000, + 0x006A0029, 0x00000000, + 0x00000000, 0x00000000 +}; + +u32 lbl_1_data_4B8[] = { + 0x00870000, 0x00000000, + 0x00870002, 0x00000000, + 0x00870003, 0x00000000, + 0x0087000D, 0x00000001, + 0x00870005, 0x00000001, + 0x00870007, 0x00000001, + 0x00870008, 0x00000001, + 0x0087000C, 0x00000000, + 0x00870028, 0x00000000, + 0x00870029, 0x00000000, + 0x00000000, 0x00000000 +}; + +u32 lbl_1_data_510[] = { + 0x00820000, 0x00000000, + 0x00820002, 0x00000000, + 0x00820003, 0x00000000, + 0x0082000D, 0x00000001, + 0x00820005, 0x00000001, + 0x00820007, 0x00000001, + 0x00820008, 0x00000001, + 0x0082000C, 0x00000000, + 0x00820028, 0x00000000, + 0x00820029, 0x00000000, + 0x00000000, 0x00000000 +}; + +u32 lbl_1_data_568[] = { + 0x000E0000, 0x00000000, + 0x000E0002, 0x00000000, + 0x000E0003, 0x00000000, + 0x000E000D, 0x00000001, + 0x000E0005, 0x00000001, + 0x000E0007, 0x00000001, + 0x000E0008, 0x00000001, + 0x000E000C, 0x00000000, + 0x000E0028, 0x00000000, + 0x000E0029, 0x00000000, + 0x00000000, 0x00000000 +}; + +u32 lbl_1_data_5C0[] = { + 0x000A0000, 0x00000000, + 0x000A0002, 0x00000000, + 0x000A0003, 0x00000000, + 0x000A000D, 0x00000001, + 0x000A0005, 0x00000001, + 0x000A0007, 0x00000001, + 0x000A0008, 0x00000001, + 0x000A000C, 0x00000000, + 0x000A0028, 0x00000000, + 0x000A0029, 0x00000000, + 0x00000000, 0x00000000 +}; + +u32 lbl_1_data_618[] = { + 0x007E0000, 0x00000000, + 0x007E0002, 0x00000000, + 0x007E0003, 0x00000000, + 0x007E000D, 0x00000001, + 0x007E0005, 0x00000001, + 0x007E0007, 0x00000001, + 0x007E0008, 0x00000001, + 0x007E000C, 0x00000000, + 0x007E0028, 0x00000000, + 0x007E0029, 0x00000000, + 0x00000000, 0x00000000 +}; + +u32 *lbl_1_data_670[] = { + lbl_1_data_3B0, + lbl_1_data_408, + lbl_1_data_460, + lbl_1_data_4B8, + lbl_1_data_510, + lbl_1_data_568, + lbl_1_data_5C0, + lbl_1_data_618 +}; + +void fn_1_69C8(s16 arg0, s16 arg1, s16 arg2); + +void fn_1_5DA8(void) +{ + u32 *temp_r31; + s16 temp_r30; + s16 temp_r29; + s16 temp_r28; + s16 temp_r27; + s16 temp_r26; + s16 temp_r25; + + s32 temp_r24 = 0; + s16 sp40[3][32]; + Vec sp34; + + Vec sp28 = { 0, 0, 0 }; + Vec sp1C = { 0, 1, 0 }; + s16 sp16[3]; + s16 sp10[3]; + float spC; + s16 sp8 = 0; + Hu3DGLightCreate(0, 500, 1000, 0, -0.5, -1, 255, 255, 255); + temp_r28 = GWPlayerCfg[0].character; + temp_r31 = lbl_1_data_670[temp_r28]; + sp16[0] = Hu3DModelCreateFile(temp_r31[0]); + sp16[1] = Hu3DModelCreateFile(temp_r31[2]); + sp16[2] = Hu3DModelCreateFile(temp_r31[4]); + HuDataDirClose(temp_r31[0]); + HuDataDirClose(temp_r31[2]); + HuDataDirClose(temp_r31[4]); + temp_r27 = 0; + temp_r29 = 0; + while(1) { + if(temp_r31[(temp_r29*2)+8] == 0) { + if(temp_r27 == 0) { + temp_r27 = temp_r29; + } + break; + } + if(temp_r31[(temp_r29*2)+8] == 0xFFFFFFFF) { + temp_r27 = temp_r29; + } else { + sp40[0][temp_r29] = Hu3DJointMotionFile(sp16[0], temp_r31[(temp_r29*2)+8]); + sp40[1][temp_r29] = Hu3DJointMotionFile(sp16[1], temp_r31[(temp_r29*2)+8]); + sp40[2][temp_r29] = Hu3DJointMotionFile(sp16[2], temp_r31[(temp_r29*2)+8]); + } + temp_r29++; + } + sp10[0] = Hu3DJointMotionFile(sp16[0], temp_r31[6]); + sp10[1] = Hu3DJointMotionFile(sp16[1], temp_r31[6]); + sp10[2] = Hu3DJointMotionFile(sp16[2], temp_r31[6]); + temp_r26 = 0; + temp_r30 = 0; + Hu3DMotionSet(sp16[0], sp40[0][temp_r30]); + Hu3DModelAttrSet(sp16[0], 0x40000001); + Hu3DMotionSet(sp16[1], sp40[1][temp_r30]); + Hu3DModelAttrSet(sp16[1], 0x40000001); + Hu3DMotionSet(sp16[2], sp40[2][temp_r30]); + Hu3DModelAttrSet(sp16[2], 0x40000001); + Hu3DModelAttrSet(sp16[1], 0x1); + Hu3DModelAttrSet(sp16[2], 0x1); + while(1) { + temp_r25 = 0; + if(HuPadBtnDown[0] & PAD_BUTTON_X) { + temp_r30++; + if(temp_r30 >= temp_r27) { + temp_r30 = 0; + } + Hu3DMotionSet(sp16[0], sp40[0][temp_r30]); + Hu3DMotionSet(sp16[1], sp40[1][temp_r30]); + Hu3DMotionSet(sp16[2], sp40[2][temp_r30]); + if(temp_r31[(temp_r30*2)+9] != 0) { + Hu3DModelAttrSet(sp16[0], 0x40000001); + Hu3DModelAttrSet(sp16[1], 0x40000001); + Hu3DModelAttrSet(sp16[2], 0x40000001); + } else { + Hu3DModelAttrReset(sp16[0], 0x40000001); + Hu3DModelAttrReset(sp16[1], 0x40000001); + Hu3DModelAttrReset(sp16[2], 0x40000001); + } + fn_1_69C8(temp_r28, sp16[0], 0); + fn_1_69C8(temp_r28, sp16[1], 1); + fn_1_69C8(temp_r28, sp16[2], 2); + temp_r25 = 1; + } + if(HuPadBtnDown[0] & PAD_BUTTON_Y) { + temp_r30--; + if(temp_r30 < 0) { + temp_r30 = temp_r27-1; + } + Hu3DMotionSet(sp16[0], sp40[0][temp_r30]); + Hu3DMotionSet(sp16[1], sp40[1][temp_r30]); + Hu3DMotionSet(sp16[2], sp40[2][temp_r30]); + if(temp_r31[(temp_r30*2)+9] != 0) { + Hu3DModelAttrSet(sp16[0], 0x40000001); + Hu3DModelAttrSet(sp16[1], 0x40000001); + Hu3DModelAttrSet(sp16[2], 0x40000001); + } else { + Hu3DModelAttrReset(sp16[0], 0x40000001); + Hu3DModelAttrReset(sp16[1], 0x40000001); + Hu3DModelAttrReset(sp16[2], 0x40000001); + } + fn_1_69C8(temp_r28, sp16[0], 0); + fn_1_69C8(temp_r28, sp16[1], 1); + fn_1_69C8(temp_r28, sp16[2], 2); + temp_r25 = 1; + } + if(temp_r31[(temp_r30*2)+9] == 0) { + if(HuPadBtn[0] & PAD_BUTTON_A) { + Hu3DModelAttrSet(sp16[0], 0x40000001); + Hu3DModelAttrSet(sp16[1], 0x40000001); + Hu3DModelAttrSet(sp16[2], 0x40000001); + temp_r25 = 1; + } else { + if(temp_r30 != 3 && temp_r30 != 2) { + Hu3DModelAttrReset(sp16[0], 0x40000001); + Hu3DModelAttrReset(sp16[1], 0x40000001); + Hu3DModelAttrReset(sp16[2], 0x40000001); + } + } + } + if(temp_r25 != 0) { + if(temp_r30 == 3) { + Hu3DMotionSet(sp16[0], sp40[0][temp_r30]); + Hu3DMotionSet(sp16[1], sp40[1][temp_r30]); + Hu3DMotionSet(sp16[2], sp40[2][temp_r30]); + Hu3DModelAttrReset(sp16[0], 0x40000001); + Hu3DModelAttrReset(sp16[1], 0x40000001); + Hu3DModelAttrReset(sp16[2], 0x40000001); + for(temp_r29=0; temp_r29<=30; temp_r29++) { + Hu3DModelPosSet(sp16[0], 0, sind(temp_r29*6.0f)*150, 0); + Hu3DModelPosSet(sp16[1], 0, sind(temp_r29*6.0f)*150, 0); + Hu3DModelPosSet(sp16[2], 0, sind(temp_r29*6.0f)*150, 0); + if(temp_r29 == 25) { + Hu3DMotionSet(sp16[0], sp10[0]); + Hu3DMotionSet(sp16[1], sp10[1]); + Hu3DMotionSet(sp16[2], sp10[2]); + } + HuPrcVSleep(); + } + while(!Hu3DMotionEndCheck(sp16[0])) { + HuPrcVSleep(); + } + fn_1_69C8(temp_r28, sp16[0], 0); + fn_1_69C8(temp_r28, sp16[1], 1); + fn_1_69C8(temp_r28, sp16[2], 2); + Hu3DMotionShiftSet(sp16[0], sp40[0][0], 0, 16, 0x40000001); + Hu3DMotionShiftSet(sp16[1], sp40[1][0], 0, 16, 0x40000001); + Hu3DMotionShiftSet(sp16[2], sp40[2][0], 0, 16, 0x40000001); + } + temp_r24 = 0; + } + sp34.x = Center.x + (CZoom * (sind(CRot.y) * cosd(CRot.x))); + sp34.y = (Center.y + (CZoom * -sind(CRot.x))); + sp34.z = (Center.z + (CZoom * (cosd(CRot.y) * cosd(CRot.x)))); + + spC = VECMag(&sp34); + if(HuPadBtnDown[0] & PAD_BUTTON_B) { + temp_r26++; + if(temp_r26 >= 3) { + temp_r26 = 0; + } + } + Hu3DModelAttrSet(sp16[0], 1); + Hu3DModelAttrSet(sp16[1], 1); + Hu3DModelAttrSet(sp16[2], 1); + switch(temp_r26) { + case 0: + Hu3DModelAttrReset(sp16[0], 1); + break; + + case 1: + Hu3DModelAttrReset(sp16[1], 1); + break; + + case 2: + Hu3DModelAttrReset(sp16[2], 1); + break; + } + HuPrcVSleep(); + } +} + +char *lbl_1_data_6F4[] = { + "s3_mario_eyes_1", + "mario_eyes_2", + "mario_eyes_2", + "S3c001m0_eye", + "S3c001m1_eye", + "c001m3_eye", + "GC-eyes", + "s3tc_GC-eyes_2", + "s3tc_GC-eyes_2", + "S3c003m1", + "S3c003m1", + "S3c003m1", + "GC-eyes", + "s3tc_GC-eyes_2", + "s3tc_GC-eyes_2", + "GC-eyes", + "s3tc_GC-eyes_2", + "s3tc_GC-eyes_2", + "GC-eyes", + "s3tc_GC-eyes_2", + "s3tc_GC-eyes_2", + "GC-eyes", + "s3tc_GC-eyes_2", + "s3tc_GC-eyes_2", +}; + +void fn_1_69C8(s16 arg0, s16 arg1, s16 arg2) +{ + HsfdrawStruct01 *temp_r31; + HsfAttribute *temp_r30; + ModelData *temp_r29; + s16 temp_r28; + char *temp_r27; + temp_r29 = &Hu3DData[arg1]; + temp_r30 = temp_r29->hsfData->attribute; + temp_r27 = MakeObjectName(lbl_1_data_6F4[arg2+(arg0*3)]); + for(temp_r28=0; temp_r28hsfData->attributeCnt; temp_r28++, temp_r30++) { + if(temp_r30->bitmap->name[0] == temp_r27[0] && strcmp(temp_r30->bitmap->name, temp_r27) == 0 && temp_r30->unk04) { + temp_r31 = temp_r30->unk04; + temp_r31->unk08 = temp_r31->unk0C = temp_r31->unk10 = 0; + temp_r31->unk14 = temp_r31->unk18 = temp_r31->unk1C = 0; + } + } +} + +s32 lbl_1_data_754 = 20; + +void fn_1_6AE0(ModelData *model, Mtx mtx) +{ + s32 temp_r31; + u8 temp_r30, temp_r29, temp_r28; + s32 sp84 = 0; + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGB, GX_RGB8, 0); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_RASC, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_KONST, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetNumTexGens(0); + GXSetNumTevStages(1); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + GXLoadPosMtxImm(mtx, GX_PNMTX0); + GXBegin(GX_LINES, GX_VTXFMT0, (lbl_1_data_754+1)*4); + for(temp_r31=0; temp_r31<=lbl_1_data_754; temp_r31++) { + temp_r30 = temp_r29 = temp_r28 = 255; + GXPosition3f32((temp_r31*100)-((lbl_1_data_754/2)*100), 0, (-(lbl_1_data_754/2))*100); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32((temp_r31*100)-((lbl_1_data_754/2)*100), 0, (lbl_1_data_754/2)*100); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32(-(lbl_1_data_754/2)*100, 0, (temp_r31*100)-((lbl_1_data_754/2)*100)); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32((lbl_1_data_754/2)*100, 0, (temp_r31*100)-((lbl_1_data_754/2)*100)); + GXColor3u8(temp_r30, temp_r29, temp_r28); + } + GXBegin(GX_LINES, GX_VTXFMT0, (lbl_1_data_754+1)*4); + for(temp_r31=0; temp_r31<=lbl_1_data_754; temp_r31++) { + temp_r30 = temp_r29 = temp_r28 = 255; + GXPosition3f32((temp_r31*100)-((lbl_1_data_754/2)*100), lbl_1_data_754*100, (-(lbl_1_data_754/2))*100); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32((temp_r31*100)-((lbl_1_data_754/2)*100), 0, -(lbl_1_data_754/2)*100); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32(-(lbl_1_data_754/2)*100, temp_r31*100, -(lbl_1_data_754/2)*100); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32((lbl_1_data_754/2)*100, temp_r31*100, -(lbl_1_data_754/2)*100); + GXColor3u8(temp_r30, temp_r29, temp_r28); + } + GXBegin(GX_LINES, GX_VTXFMT0, (lbl_1_data_754+1)*4); + for(temp_r31=0; temp_r31<=lbl_1_data_754; temp_r31++) { + temp_r30 = temp_r29 = temp_r28 = 255; + GXPosition3f32((temp_r31*100)-((lbl_1_data_754/2)*100), lbl_1_data_754*100, (lbl_1_data_754/2)*100); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32((temp_r31*100)-((lbl_1_data_754/2)*100), 0, (lbl_1_data_754/2)*100); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32(-(lbl_1_data_754/2)*100, temp_r31*100, (lbl_1_data_754/2)*100); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32((lbl_1_data_754/2)*100, temp_r31*100, (lbl_1_data_754/2)*100); + GXColor3u8(temp_r30, temp_r29, temp_r28); + } + GXBegin(GX_LINES, GX_VTXFMT0, (lbl_1_data_754+1)*4); + for(temp_r31=0; temp_r31<=lbl_1_data_754; temp_r31++) { + temp_r30 = temp_r29 = temp_r28 = 255; + GXPosition3f32((lbl_1_data_754/2)*100, lbl_1_data_754*100, (temp_r31*100)-((lbl_1_data_754/2)*100)); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32((lbl_1_data_754/2)*100, 0, (temp_r31*100)-((lbl_1_data_754/2)*100)); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32((lbl_1_data_754/2)*100, temp_r31*100, -(lbl_1_data_754/2)*100); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32((lbl_1_data_754/2)*100, temp_r31*100, (lbl_1_data_754/2)*100); + GXColor3u8(temp_r30, temp_r29, temp_r28); + } + GXBegin(GX_LINES, GX_VTXFMT0, (lbl_1_data_754+1)*4); + for(temp_r31=0; temp_r31<=lbl_1_data_754; temp_r31++) { + temp_r30 = temp_r29 = temp_r28 = 255; + GXPosition3f32(-(lbl_1_data_754/2)*100, lbl_1_data_754*100, (temp_r31*100)-((lbl_1_data_754/2)*100)); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32(-(lbl_1_data_754/2)*100, 0, (temp_r31*100)-((lbl_1_data_754/2)*100)); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32(-(lbl_1_data_754/2)*100, temp_r31*100, -(lbl_1_data_754/2)*100); + GXColor3u8(temp_r30, temp_r29, temp_r28); + GXPosition3f32(-(lbl_1_data_754/2)*100, temp_r31*100, (lbl_1_data_754/2)*100); + GXColor3u8(temp_r30, temp_r29, temp_r28); + } +} + +s16 lbl_1_data_758[] = { + 1, + 3, + 2, + 13, + 14, + 15, + 16, + 68, + -1 +}; + +s16 lbl_1_data_76A[] = { + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + -1 +}; + +void fn_1_814C(void) +{ + s16 temp_r31 = 0; + s16 temp_r30 = 0; + s16 temp_r29 = 0; + s16 temp_r28; + Vec sp8 = { 0, 0, 0 }; + while(1) { + lbl_1_bss_A14 = HuAudFXEmiterPlay(1282, &sp8); + HuPrcSleep(60); + if(HuPadBtnDown[1] & PAD_BUTTON_A) { + HuAudSeqFadeOut(temp_r28, 60); + temp_r28 = HuAudSeqPlay(lbl_1_data_758[temp_r31]); + temp_r31++; + if(lbl_1_data_758[temp_r31] == -1) { + temp_r31 = 0; + } + temp_r29 = 30; + } + if(HuPadBtnDown[1] & PAD_BUTTON_B) { + HuAudFXPlay(lbl_1_data_76A[temp_r30]); + temp_r30++; + if(lbl_1_data_76A[temp_r30] == -1) { + temp_r30 = 0; + } + temp_r29 = 30; + } + if(temp_r29) { + temp_r29--; + print8(16, 430, 2.0f, "MusicNo:%d SENo:%d", temp_r31, temp_r30); + } + HuPrcVSleep(); + } +} + +s16 lbl_1_data_7AC = -1; + +u32 fn_1_82C8(void) +{ + s16 temp_r31; + temp_r31 = HuPadBtn[0]; + if(lbl_1_bss_A08) { + lbl_1_bss_A08--; + if(!temp_r31) { + lbl_1_bss_A08 = 0; + } else { + temp_r31 = 0; + } + } else if(temp_r31) { + if(lbl_1_data_7AC == temp_r31) { + lbl_1_bss_A08 = 3; + } else { + lbl_1_bss_A08 = 20; + } + lbl_1_data_7AC = temp_r31; + } else { + lbl_1_data_7AC = 0; + } + return temp_r31; +} + +void fn_1_83B4(void) +{ + u32 temp_r29; + Process *temp_r28; + temp_r28 = HuPrcCurrentGet(); + HuPrcSetStat(temp_r28, 0xC); + while(1) { + temp_r29 = fn_1_82C8(); + if(HuPadBtn[0] & PAD_BUTTON_RIGHT) { + while(1) { + temp_r29 = fn_1_82C8(); + if(HuPadBtn[0] & PAD_BUTTON_LEFT) { + break; + } + if(!temp_r29) { + HuPrcAllPause(1); + Hu3DPauseSet(1); + } else { + HuPrcAllPause(0); + Hu3DPauseSet(0); + } + HuPrcVSleep(); + } + HuPrcAllPause(0); + Hu3DPauseSet(0); + } + if(temp_r29 & PAD_BUTTON_UP) { + if(lbl_1_bss_A0C < 120.0f) { + lbl_1_bss_A0C++; + } + } + if(temp_r29 & PAD_BUTTON_DOWN) { + if(lbl_1_bss_A0C > 5.0f) { + lbl_1_bss_A0C--; + } + } + HuPrcVSleep(); + } +} \ No newline at end of file diff --git a/src/REL/w02Dll/dice.c b/src/REL/w02Dll/dice.c new file mode 100644 index 00000000..637189ea --- /dev/null +++ b/src/REL/w02Dll/dice.c @@ -0,0 +1,228 @@ +#include "REL/w02Dll.h" + +/* DATA */ +extern char lbl_1_data_2A8[0x12]; +extern char lbl_1_data_2BA[0x0D]; +extern char lbl_1_data_2C8[0x10]; + +/* RODATA*/ +extern f32 lbl_1_rodata_38; +extern f32 lbl_1_rodata_3C; +extern f32 lbl_1_rodata_40; +extern f32 lbl_1_rodata_44; +extern f32 lbl_1_rodata_48; +extern f32 lbl_1_rodata_4C; + +/* STRUCTS*/ +typedef struct { + /* 0x00 */ s16 unk00; + /* 0x02 */ s16 unk02; + /* 0x04 */ s32 unk04; + /* 0x08 */ u8 unk08[0x04]; + /* 0x0C */ Vec unk0C; + /* 0x18 */ s16 unk18; + /* 0x1A */ s16 unk1A; + /* 0x1C */ u8 unk1C[0x6]; + /* 0x22 */ s16 unk22; + /* 0x24 */ f32 unk24; + /* 0x28 */ s16 unk28; + /* 0x2A */ u8 unk2A[0x2]; + /* 0x2C */ Process* unk2C; + /* 0x30 */ s16 unk30[3]; + /* 0x36 */ s16 unk36[3]; + /* 0x3C */ omObjData* unk3C[3]; + /* 0x48 */ s16 unk48[3]; + /* 0x4E */ u8 unk4E[0x2]; + /* 0x50 */ s32 unk50[3]; + /* 0x5C */ u8 unk5C[0x08]; + /* 0x64 */ Vec unk64; + /* 0x70 */ Vec unk70; + /* 0x7C */ Vec unk7C; + /* 0x88 */ s32 unk88[3]; + /* 0x94 */ s16 unk94; + /* 0x96 */ s16 unk96; + /* 0x98 */ f32 unk98; + /* 0x9C */ s16 unk9C; +} unkW02Dice; + +typedef struct { + union { +/* 0x00 */ struct { + u8 unk7 : 1; + u8 unk6 : 1; + u8 unk3 : 3; + u8 unk1 : 2; + u8 unk0 : 1; + }; + u8 unk00; + }; +/* 0x01 */ u8 unk01; +/* 0x02 */ u8 unk02; +/* 0x03 */ u8 unk03; +/* 0x04 */ u16 unk04; +} unkW02DiceBitfields; + +/* EXTERN FUNCTIONS */ +void fn_1_13D0(void); +void fn_1_1574(unkW02Dice*); /* extern */ +void fn_1_1794(unkW02Dice*); /* extern */ +void fn_1_1850(omObjData*); /* extern */ +void fn_1_2030(unkW02Dice*); /* extern */ +void fn_1_2220(unkW02Dice*); /* extern */ +s32 fn_1_233C(unkW02Dice*); /* extern */ +void fn_1_23B4(unkW02Dice*, s32 i); /* extern */ +void fn_1_272C(unkW02Dice*); /* extern */ + +/* LOCAL FUNCTIONS */ +void fn_1_1254(unkW02Dice* arg0) { + Vec sp8; + s32 i; + + OSReport(lbl_1_data_2A8); + arg0->unk2C = HuPrcChildCreate(&fn_1_13D0, 0x2005, 0x2000, 0, boardMainProc); + arg0->unk2C->user_data = arg0; + arg0->unk94 = 0; + arg0->unk9C = 0; + arg0->unk28 = 0; + Hu3D3Dto2D(&arg0->unk0C, 1, &sp8); + + /* Initialize Matrix */ + arg0->unk64 = arg0->unk70 = arg0->unk7C = sp8; + arg0->unk7C.y = arg0->unk70.y = arg0->unk64.y = lbl_1_rodata_38; + arg0->unk7C.z = arg0->unk70.z = arg0->unk64.z = lbl_1_rodata_3C; + arg0->unk96 = -1; + + for (i = 0; i < 3; i++) { + arg0->unk3C[i] = 0; + arg0->unk50[i] = 0; + arg0->unk30[i] = -1; + arg0->unk48[i] = -1; + arg0->unk88[i] = -1; + } +} + +void fn_1_13D0(void) { + s32 var_r29; + s32 i; + s32 var_r30_2; + unkW02Dice* temp_r31; + + temp_r31 = HuPrcCurrentGet()->user_data; + temp_r31->unk36[0] = temp_r31->unk36[1] = temp_r31->unk36[2] = 0; + var_r29 = 0; + temp_r31->unk96 = 0; + while (temp_r31->unk96 < temp_r31->unk00) { + fn_1_1574(temp_r31); + fn_1_1794(temp_r31); + while (temp_r31->unk9C == 0) { + HuPrcVSleep(); + } + fn_1_2220(temp_r31); + while (temp_r31->unk9C != 0) { + HuPrcVSleep(); + } + temp_r31->unk96 += 1; + } + + for ( i = 0; i < temp_r31->unk00; i++) { + var_r29 += temp_r31->unk36[i]; + } + OSReport(lbl_1_data_2BA, var_r29); + + while (fn_1_233C(temp_r31) == 0) { + HuPrcVSleep(); + } + temp_r31->unk94 = (s16) var_r29; + temp_r31->unk28 = 1; + if (temp_r31->unk22 != 0) { + for (i = 0; i < temp_r31->unk00; i++) { + fn_1_23B4(temp_r31, i); + } + temp_r31->unk2C = NULL; + HuPrcEnd(); + } + while (TRUE) { + HuPrcVSleep(); + } +} + +void fn_1_1518(unkW02Dice* arg0) { + OSReport(lbl_1_data_2C8); + if (arg0->unk2C) { + HuPrcKill(arg0->unk2C); + } + fn_1_2030(arg0); + fn_1_272C(arg0); +} + +void fn_1_1574(unkW02Dice* arg0) { + Vec sp8; + f32 temp_f0; + omObjData* temp_r3; + s32 temp_r28; + unkW02DiceBitfields* temp_r29; + + temp_r28 = arg0->unk96; + arg0->unk30[temp_r28] = BoardModelCreate(arg0->unk04, NULL, 0); + arg0->unk98 = lbl_1_rodata_40 + BoardRandMod(arg0->unk1A); + BoardModelMotionStart(arg0->unk30[temp_r28], 0, 0x40000001U); + BoardModelMotionSpeedSet(arg0->unk30[temp_r28], lbl_1_rodata_44); + BoardModelMotionTimeSet(arg0->unk30[temp_r28], arg0->unk98); + temp_r3 = omAddObjEx(boardObjMan, 0x102, 0U, 0U, -1, fn_1_1850); + temp_r29 = (unkW02DiceBitfields*) temp_r3->work; + + temp_r29->unk7 = 0; + temp_r29->unk6 = 0; + temp_r29->unk3 = 0; + temp_r29->unk1 = temp_r28; + + temp_r29->unk04 = 0; + temp_r29->unk01 = 3; + temp_r29->unk02 = 0; + temp_r3->unk10 = (u32) arg0; + arg0->unk3C[temp_r28] = temp_r3; + sp8 = arg0->unk0C; + sp8.y += (lbl_1_rodata_48 * arg0->unk24); + temp_r3->trans.x = sp8.x; + temp_r3->trans.y = sp8.y; + temp_r3->trans.z = sp8.z; + temp_r3->scale.x = lbl_1_rodata_44; + temp_r3->scale.y = lbl_1_rodata_44; + temp_r3->scale.z = lbl_1_rodata_44; + sp8.z += lbl_1_rodata_4C; + HuAudFXPlay(0x302); +} + +void fn_1_1794(unkW02Dice* arg0) { + unkW02DiceBitfields* temp_r30; + + temp_r30 = (unkW02DiceBitfields*) arg0->unk3C[arg0->unk96]->work; + while (temp_r30->unk3 != 1) { + HuPrcVSleep(); + } +} + +s32 fn_1_17F4(unkW02Dice* arg0) { + unkW02DiceBitfields* temp; + if ( arg0->unk96 < 0) { + return 0; + } + temp = (unkW02DiceBitfields*) arg0->unk3C[arg0->unk96]->work; + if (temp->unk3 != 1) { + return 0; + } + return 1; +} + +void fn_1_1F94(unkW02Dice* arg0, s32 arg1) { + if (arg0->unk30[arg1] != -1) { + BoardModelKill(arg0->unk30[arg1]); + arg0->unk30[arg1] = -1; + } + + if (arg0->unk48[arg1] != -1) { + Hu3DParManKill(arg0->unk48[arg1]); + arg0->unk48[arg1] = -1; + + } +} \ No newline at end of file diff --git a/src/game/audio.c b/src/game/audio.c index 1348bd5b..6d06279b 100644 --- a/src/game/audio.c +++ b/src/game/audio.c @@ -68,7 +68,7 @@ void HuAudInit(void) { musicOffF = 0; } -s32 HuAudStreamPlay(void) { +s32 HuAudStreamPlay(char *name, s32 arg1) { return 0; } diff --git a/src/game/board/item.c b/src/game/board/item.c index e9486df6..76563ee2 100755 --- a/src/game/board/item.c +++ b/src/game/board/item.c @@ -1943,7 +1943,7 @@ static void LampParticleUpdate(ModelData *model, ParticleData *particle, Mtx mat var_r31->unk2C = 0.0f; var_r31->unk40.a = 0; } - particle->unk_04 = 0.0f; + particle->unk_04.x = 0.0f; particle->unk_00 = 0; } if (particle->unk_00 == 0) { diff --git a/src/game/hsfanim.c b/src/game/hsfanim.c index bede6b2d..c005ec35 100755 --- a/src/game/hsfanim.c +++ b/src/game/hsfanim.c @@ -827,7 +827,7 @@ static void _Hu3DParticleAttrReset(ModelData *arg0, Mtx arg1) { GXSetArray(GX_VA_POS, temp_r31->unk_4C, 0xC); GXSetVtxDesc(GX_VA_CLR0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); - GXSetArray(GX_VA_CLR0, (u8*) temp_r31->unk_48 + 0x40, 0x44); + GXSetArray(GX_VA_CLR0, &temp_r31->unk_48->unk40, 0x44); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_RGBA6, 0); GXSetArray(GX_VA_TEX0, baseST, 8); diff --git a/src/game/hsfdraw.c b/src/game/hsfdraw.c index cca2d8bf..6bea3dfb 100755 --- a/src/game/hsfdraw.c +++ b/src/game/hsfdraw.c @@ -6,42 +6,34 @@ #include "ext_math.h" #include "string.h" -typedef struct { - /* 0x00 */ ModelData *unk00; - /* 0x04 */ HsfObject *unk04; - /* 0x08 */ float unk08; - /* 0x0C */ Mtx unk0C; - /* 0x3C */ Vec unk3C; -} HsfdrawStruct00; // Size 0x48 - -typedef struct { - s32 unk00; - s32 unk04; - u16 unk08; - char unk0A[2]; - u32 unk0C; -} DrawDataStruct; // Size 0x10 +typedef struct hsf_draw_object { + /* 0x00 */ ModelData *model; + /* 0x04 */ HsfObject *object; + /* 0x08 */ float z; + /* 0x0C */ Mtx matrix; + /* 0x3C */ Vec scale; +} HsfDrawObject; static void objCall(ModelData *arg0, HsfObject *arg1); static void objMesh(ModelData *arg0, HsfObject *arg1); -static void FaceDraw(HsfdrawStruct00 *arg0, HsfFace *arg1); -static void SetTevStageNoTex(HsfdrawStruct00 *arg0, HsfMaterial *arg1); -static void SetTevStageTex(HsfdrawStruct00 *arg0, HsfMaterial *arg1); +static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1); +static void SetTevStageNoTex(HsfDrawObject *arg0, HsfMaterial *arg1); +static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1); static GXTevKColorSel SetKColor(GXTevStageID arg0, u8 arg1); static GXTevKColorSel SetKColorRGB(GXTevStageID arg0, GXColor *arg1); static void FlushKColor(void); -static void SetReflect(HsfdrawStruct00 *arg0, s16 arg1, s16 arg2, u8 arg3); -static void SetProjection(HsfdrawStruct00 *arg0, s16 arg1, s16 arg2, s16 arg3, GXTexMapID arg4, u32 arg5); +static void SetReflect(HsfDrawObject *arg0, s16 arg1, s16 arg2, u8 arg3); +static void SetProjection(HsfDrawObject *arg0, s16 arg1, s16 arg2, s16 arg3, GXTexMapID arg4, u32 arg5); static void SetShadowTex(void); -static void SetShadow(HsfdrawStruct00 *arg0, s16 arg1, s16 arg2); -static void FaceDrawShadow(HsfdrawStruct00 *arg0, HsfFace *arg1); +static void SetShadow(HsfDrawObject *arg0, s16 arg1, s16 arg2); +static void FaceDrawShadow(HsfDrawObject *arg0, HsfFace *arg1); static void LoadTexture(ModelData *arg0, HsfBitmap *arg1, HsfAttribute *arg2, s16 arg3); static void objNull(ModelData *arg0, HsfObject *arg1); static void objRoot(ModelData *arg0, HsfObject *arg1); static void objJoint(ModelData *arg0, HsfObject *arg1); static void objMap(ModelData *arg0, HsfObject *arg1); static void objReplica(ModelData *arg0, HsfObject *arg1); -static void ObjDraw(HsfdrawStruct00 *arg0); +static void ObjDraw(HsfDrawObject *arg0); static void MDObjCall(HsfData *arg0, HsfObject *arg1); static void MDObjMesh(HsfData *arg0, HsfObject *arg1); static void MDFaceDraw(HsfObject *arg0, HsfFace *arg1); @@ -53,7 +45,7 @@ void GXResetWriteGatherPipe(void); static const Vec lbl_8011DD20 = { 0.0f, 0.0f, -1.0f }; -static HsfdrawStruct00 DrawObjData[512]; +static HsfDrawObject DrawObjData[512]; static HsfAttribute *BmpPtrBak[8]; static Mtx MTXBuf[96]; static Vec scaleBuf[96]; @@ -71,7 +63,7 @@ static u8 polyTypeBak; static s32 shadingBak; static void *DLBufP; static void *DLBufStartP; -static DrawDataStruct *DrawData; +static HsfDrawData *DrawData; static s32 drawCnt; static s16 lightBit; static s16 DrawObjIdx; @@ -134,7 +126,7 @@ void Hu3DDrawPreInit(void) { } void Hu3DDraw(ModelData *arg0, Mtx arg1, Vec *arg2) { - HsfdrawStruct00 *temp_r31; + HsfDrawObject *temp_r31; HsfData *temp_r28; float temp_f31; Vec sp8; @@ -143,13 +135,13 @@ void Hu3DDraw(ModelData *arg0, Mtx arg1, Vec *arg2) { temp_r28 = arg0->hsfData; if (arg0->attr & 0x10) { temp_r31 = &DrawObjData[DrawObjIdx]; - PSMTXCopy(arg1, temp_r31->unk0C); - sp8.x = temp_r31->unk0C[0][3]; - sp8.y = temp_r31->unk0C[1][3]; - sp8.z = temp_r31->unk0C[2][3]; + PSMTXCopy(arg1, temp_r31->matrix); + sp8.x = temp_r31->matrix[0][3]; + sp8.y = temp_r31->matrix[1][3]; + sp8.z = temp_r31->matrix[2][3]; temp_f31 = PSVECMag(&sp8); - temp_r31->unk08 = temp_f31; - temp_r31->unk00 = arg0; + temp_r31->z = temp_f31; + temp_r31->model = arg0; DrawObjIdx++; return; } @@ -209,7 +201,7 @@ static void objCall(ModelData *arg0, HsfObject *arg1) { } static void objMesh(ModelData *arg0, HsfObject *arg1) { - HsfdrawStruct00 *temp_r29; + HsfDrawObject *temp_r29; HsfConstData *temp_r25; HsfTransform *var_r30; HsfData *temp_r20; @@ -252,14 +244,14 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) { temp_r28->x = temp_r24->x * var_r30->scale.x; temp_r28->y = temp_r24->y * var_r30->scale.y; temp_r28->z = temp_r24->z * var_r30->scale.z; - temp_r29->unk3C = *temp_r28; + temp_r29->scale = *temp_r28; if (arg1->flags & 1) { PSMTXInverse(MTXBuf[MTXIdx], sp1C); sp1C[0][3] = sp1C[1][3] = sp1C[2][3] = 0.0f; - PSMTXConcat(MTXBuf[MTXIdx], sp1C, temp_r29->unk0C); - mtxScaleCat(temp_r29->unk0C, temp_r28->x, temp_r28->y, temp_r28->z); + PSMTXConcat(MTXBuf[MTXIdx], sp1C, temp_r29->matrix); + mtxScaleCat(temp_r29->matrix, temp_r28->x, temp_r28->y, temp_r28->z); } else { - PSMTXCopy(MTXBuf[MTXIdx], temp_r29->unk0C); + PSMTXCopy(MTXBuf[MTXIdx], temp_r29->matrix); } MTXIdx++; var_r18 = 1; @@ -267,16 +259,16 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) { if (arg1->flags & 1) { PSMTXInverse(MTXBuf[MTXIdx - 1], sp1C); sp1C[0][3] = sp1C[1][3] = sp1C[2][3] = 0.0f; - PSMTXConcat(MTXBuf[MTXIdx - 1], sp1C, temp_r29->unk0C); - mtxScaleCat(temp_r29->unk0C, scaleBuf[MTXIdx - 1].x, scaleBuf[MTXIdx - 1].y, scaleBuf[MTXIdx - 1].z); + PSMTXConcat(MTXBuf[MTXIdx - 1], sp1C, temp_r29->matrix); + mtxScaleCat(temp_r29->matrix, scaleBuf[MTXIdx - 1].x, scaleBuf[MTXIdx - 1].y, scaleBuf[MTXIdx - 1].z); } else { - PSMTXCopy(MTXBuf[MTXIdx - 1], temp_r29->unk0C); + PSMTXCopy(MTXBuf[MTXIdx - 1], temp_r29->matrix); } - temp_r29->unk3C = scaleBuf[MTXIdx - 1]; + temp_r29->scale = scaleBuf[MTXIdx - 1]; CancelTRXF = 0; var_r18 = 0; } - PSMTXCopy(temp_r29->unk0C, temp_r25->unk10); + PSMTXCopy(temp_r29->matrix, temp_r25->matrix); if (temp_r25->hook != -1) { temp_r31 = &Hu3DData[temp_r25->hook]; if (!(temp_r31->attr & 1)) { @@ -292,7 +284,7 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) { mtxRotCat(sp1C, temp_r31->rot.x, temp_r31->rot.y, temp_r31->rot.z); mtxTransCat(sp1C, temp_r31->pos.x, temp_r31->pos.y, temp_r31->pos.z); PSMTXConcat(sp1C, temp_r31->unk_F0, sp1C); - PSMTXConcat(temp_r29->unk0C, sp1C, MTXBuf[MTXIdx]); + PSMTXConcat(temp_r29->matrix, sp1C, MTXBuf[MTXIdx]); temp_r28 = &scaleBuf[MTXIdx]; temp_r24 = temp_r28 - 1; temp_r28->x = temp_r24->x * temp_r31->scale.x; @@ -306,7 +298,7 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) { } } else { if (arg0->attr & 0x4000) { - var_r19 = ObjCullCheck(arg0->hsfData, arg1, temp_r29->unk0C); + var_r19 = ObjCullCheck(arg0->hsfData, arg1, temp_r29->matrix); } else { var_r19 = 1; } @@ -314,17 +306,17 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) { var_r19 = 0; } if (var_r19 != 0 && (var_r30->scale.x != 0.0f || var_r30->scale.y != 0.0f || var_r30->scale.z != 0.0f)) { - temp_r29->unk00 = arg0; - temp_r29->unk04 = arg1; + temp_r29->model = arg0; + temp_r29->object = arg1; if ((temp_r25->flags & 0x10801) && shadowModelDrawF == 0) { - sp10.x = temp_r29->unk0C[0][3]; - sp10.y = temp_r29->unk0C[1][3]; - sp10.z = temp_r29->unk0C[2][3]; + sp10.x = temp_r29->matrix[0][3]; + sp10.y = temp_r29->matrix[1][3]; + sp10.z = temp_r29->matrix[2][3]; temp_f31 = PSVECMag(&sp10); if (temp_r25->flags & 0x10000) { - temp_r29->unk08 = -(900000.0f - temp_f31); + temp_r29->z = -(900000.0f - temp_f31); } else { - temp_r29->unk08 = -(1000000.0f - temp_f31); + temp_r29->z = -(1000000.0f - temp_f31); } DrawObjIdx++; if (DrawObjIdx > 0x200) { @@ -332,7 +324,7 @@ static void objMesh(ModelData *arg0, HsfObject *arg1) { DrawObjIdx--; } } else if (arg0->attr & 0x400000) { - temp_r29->unk08 = -1000000.0f; + temp_r29->z = -1000000.0f; DrawObjIdx++; if (DrawObjIdx > 0x200) { OSReport("Error: DrawObjIdx Over\n"); @@ -418,7 +410,7 @@ s32 ObjCullCheck(HsfData *arg0, HsfObject *arg1, Mtx arg2) { } // TODO: not matching (https://decomp.me/scratch/54Pjw) -static void FaceDraw(HsfdrawStruct00 *arg0, HsfFace *arg1) { +static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) { GXColor sp2C; void *sp28; Hu3DTexAnimDataStruct *sp24; @@ -438,8 +430,8 @@ static void FaceDraw(HsfdrawStruct00 *arg0, HsfFace *arg1) { ModelData *temp_r29; HsfdrawStruct01 *temp_r23; - temp_r28 = arg0->unk04; - temp_r29 = arg0->unk00; + temp_r28 = arg0->object; + temp_r29 = arg0->model; temp_r20 = temp_r28->constData; kColorIdx = 0; temp_r30 = &temp_r28->data.material[arg1->mat & 0xFFF]; @@ -554,7 +546,7 @@ static void FaceDraw(HsfdrawStruct00 *arg0, HsfFace *arg1) { hiliteMapNo = 3; } if ((temp_r29->attr & 0x20000) || (temp_r19 & 0x100)) { - if (temp_r20->hilite_map == 0) { + if (temp_r20->hiliteMap == 0) { if (temp_r30->flags != 0) { var_r18 = (temp_r30->pass >> 4) & 0xF; } else { @@ -562,14 +554,14 @@ static void FaceDraw(HsfdrawStruct00 *arg0, HsfFace *arg1) { } HuSprTexLoad(hiliteAnim[var_r18], 0, hiliteMapNo, GX_CLAMP, GX_CLAMP, GX_LINEAR); } else { - HuSprTexLoad(temp_r20->hilite_map, 0, hiliteMapNo, GX_CLAMP, GX_CLAMP, GX_LINEAR); + HuSprTexLoad(temp_r20->hiliteMap, 0, hiliteMapNo, GX_CLAMP, GX_CLAMP, GX_LINEAR); } BmpPtrBak[hiliteMapNo] = (HsfAttribute*) -1; } SetTevStageNoTex(arg0, temp_r30); } else { var_r22 = (temp_r30->vtxMode == 5) ? 5 : 1; - if (DrawData[drawCnt].unk0C & 2) { + if (DrawData[drawCnt].flags & 2) { var_r22 |= 2; } if (var_r22 != vtxModeBak) { @@ -610,7 +602,7 @@ static void FaceDraw(HsfdrawStruct00 *arg0, HsfFace *arg1) { temp_r23 = temp_r26->unk04; sp24 = &Hu3DTexAnimData[temp_r23->unk02]; if ((temp_r23->unk00 & 1) && !(sp24->unk00 & 4)) { - if (Hu3DAnimSet(arg0->unk00, temp_r26, (s16) var_r31) != 0) { + if (Hu3DAnimSet(arg0->model, temp_r26, (s16) var_r31) != 0) { BmpPtrBak[var_r31] = (HsfAttribute*) -1; totalTexCnt++; continue; @@ -618,10 +610,10 @@ static void FaceDraw(HsfdrawStruct00 *arg0, HsfFace *arg1) { } else if (temp_r23->unk00 & 8) { temp_r27 = temp_r23->unk3C; if (temp_r27->dataFmt != 0xB) { - LoadTexture(arg0->unk00, temp_r27, temp_r26, (s16) var_r31); + LoadTexture(arg0->model, temp_r27, temp_r26, (s16) var_r31); } else { - LoadTexture(arg0->unk00, temp_r23->unk3C, temp_r26, (s16) var_r31); - LoadTexture(arg0->unk00, temp_r23->unk3C, temp_r26, var_r21 | 0x8000); + LoadTexture(arg0->model, temp_r23->unk3C, temp_r26, (s16) var_r31); + LoadTexture(arg0->model, temp_r23->unk3C, temp_r26, var_r21 | 0x8000); texCol[var_r31].r = (s16) var_r21; texCol[var_r31].a = 2; var_r21++; @@ -646,10 +638,10 @@ static void FaceDraw(HsfdrawStruct00 *arg0, HsfFace *arg1) { } else { texCol[var_r31].a = 0; if (temp_r27->dataFmt != 0xB) { - LoadTexture(arg0->unk00, temp_r27, temp_r26, (s16) var_r31); + LoadTexture(arg0->model, temp_r27, temp_r26, (s16) var_r31); } else { - LoadTexture(arg0->unk00, temp_r27, temp_r26, (s16) var_r31); - LoadTexture(arg0->unk00, temp_r27, temp_r26, var_r21 | 0x8000); + LoadTexture(arg0->model, temp_r27, temp_r26, (s16) var_r31); + LoadTexture(arg0->model, temp_r27, temp_r26, var_r21 | 0x8000); texCol[var_r31].r = (s16) var_r21; texCol[var_r31].a = 2; var_r21++; @@ -706,7 +698,7 @@ static void FaceDraw(HsfdrawStruct00 *arg0, HsfFace *arg1) { hiliteMapNo = projectionMapNo; } if ((temp_r29->attr & 0x20000) || (temp_r19 & 0x100)) { - if (temp_r20->hilite_map == 0) { + if (temp_r20->hiliteMap == 0) { if (temp_r30->flags != 0) { var_r18 = (temp_r30->pass >> 4) & 0xF; } else { @@ -714,22 +706,22 @@ static void FaceDraw(HsfdrawStruct00 *arg0, HsfFace *arg1) { } HuSprTexLoad(hiliteAnim[var_r18], 0, hiliteMapNo, GX_CLAMP, GX_CLAMP, GX_LINEAR); } else { - HuSprTexLoad(temp_r20->hilite_map, 0, hiliteMapNo, GX_CLAMP, GX_CLAMP, GX_LINEAR); + HuSprTexLoad(temp_r20->hiliteMap, 0, hiliteMapNo, GX_CLAMP, GX_CLAMP, GX_LINEAR); } BmpPtrBak[toonMapNo] = (HsfAttribute*) -1; } SetTevStageTex(arg0, temp_r30); } - sp28 = (u8*) DLBufStartP + DrawData[drawCnt].unk00; - GXCallDisplayList(sp28, DrawData[drawCnt].unk04); + sp28 = (u8*) DLBufStartP + DrawData[drawCnt].dlOfs; + GXCallDisplayList(sp28, DrawData[drawCnt].dlSize); } else { - sp28 = (u8*) DLBufStartP + DrawData[drawCnt].unk00; - GXCallDisplayList(sp28, DrawData[drawCnt].unk04); + sp28 = (u8*) DLBufStartP + DrawData[drawCnt].dlOfs; + GXCallDisplayList(sp28, DrawData[drawCnt].dlSize); } drawCnt++; } -static void SetTevStageNoTex(HsfdrawStruct00 *arg0, HsfMaterial *arg1) { +static void SetTevStageNoTex(HsfDrawObject *arg0, HsfMaterial *arg1) { GXColor sp1C; ModelData *temp_r28; HsfObject *var_r21; @@ -750,8 +742,8 @@ static void SetTevStageNoTex(HsfdrawStruct00 *arg0, HsfMaterial *arg1) { var_r30 = 1; var_r29 = 0; - var_r21 = arg0->unk04; - temp_r28 = arg0->unk00; + var_r21 = arg0->object; + temp_r28 = arg0->model; sp18 = var_r21->flags | arg1->flags; if (arg1->vtxMode == 2 || arg1->vtxMode == 3) { var_r26 = 1; @@ -859,7 +851,7 @@ static void SetTevStageNoTex(HsfdrawStruct00 *arg0, HsfMaterial *arg1) { } else { var_f30 = 0.0f; } - lightBit = Hu3DLightSet(arg0->unk00, &Hu3DCameraMtx, &Hu3DCameraMtxXPose, var_f30); + lightBit = Hu3DLightSet(arg0->model, &Hu3DCameraMtx, &Hu3DCameraMtxXPose, var_f30); } if (var_r26 != 0) { GXSetNumChans(2); @@ -902,11 +894,7 @@ static Mtx refMtx = { { 0.0f, 0.0f, 0.25f, -0.5f } }; -static inline void SetTevStageTexInlineFunc(u16 arg0, u32 arg1) { - GXSetTexCoordGen2(arg0, GX_TG_MTX2x4, GX_TG_TEX0, arg1, GX_FALSE, GX_PTIDENTITY); -} - -static void SetTevStageTex(HsfdrawStruct00 *arg0, HsfMaterial *arg1) { +static void SetTevStageTex(HsfDrawObject *arg0, HsfMaterial *arg1) { GXColor sp50; GXTexMapID sp4C; GXTevStageID sp48; @@ -934,8 +922,8 @@ static void SetTevStageTex(HsfdrawStruct00 *arg0, HsfMaterial *arg1) { sp8 = 0; var_r20 = -1; - temp_r19 = arg0->unk04; - temp_r25 = arg0->unk00; + temp_r19 = arg0->object; + temp_r25 = arg0->model; sp40 = temp_r19->flags | arg1->flags; if (arg1->vtxMode == 2 || arg1->vtxMode == 3) { var_r21 = 1; @@ -963,11 +951,11 @@ static void SetTevStageTex(HsfdrawStruct00 *arg0, HsfMaterial *arg1) { PSMTXScale(sp54, 1.0f / temp_r29->unk28, 1.0f / temp_r29->unk2C, 1.0f); mtxTransCat(sp54, -temp_r29->unk30, -temp_r29->unk34, 0.0f); GXLoadTexMtxImm(sp54, texMtxTbl[var_r30], GX_MTX2x4); - SetTevStageTexInlineFunc(GX_TEXCOORD0, texMtxTbl[var_r30]); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, texMtxTbl[var_r30]); } else if (temp_r29->unk30 != 0.0f || temp_r29->unk34 != 0.0f) { PSMTXTrans(sp54, -temp_r29->unk30, -temp_r29->unk34, 0.0f); GXLoadTexMtxImm(sp54, texMtxTbl[var_r30], GX_MTX2x4); - SetTevStageTexInlineFunc(GX_TEXCOORD0, texMtxTbl[var_r30]); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, texMtxTbl[var_r30]); } else { GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); } @@ -1152,7 +1140,7 @@ static void SetTevStageTex(HsfdrawStruct00 *arg0, HsfMaterial *arg1) { temp_r28 = temp_r29->unk04; if (temp_r28->unk00 & 2) { GXLoadTexMtxImm(Hu3DTexScrData[temp_r28->unk04].unk3C, texMtxTbl[var_r30], GX_MTX2x4); - SetTevStageTexInlineFunc(var_r30, texMtxTbl[var_r30]); + GXSetTexCoordGen(var_r30, GX_TG_MTX2x4, GX_TG_TEX0, texMtxTbl[var_r30]); temp_r23 = (u16) var_r30; var_r30++; } else if (temp_r28->unk00 & 4) { @@ -1160,14 +1148,14 @@ static void SetTevStageTex(HsfdrawStruct00 *arg0, HsfMaterial *arg1) { mtxRotCat(sp54, temp_r28->unk14, temp_r28->unk18, temp_r28->unk1C); mtxTransCat(sp54, -temp_r28->unk08, -temp_r28->unk0C, -temp_r28->unk10); GXLoadTexMtxImm(sp54, texMtxTbl[var_r30], GX_MTX2x4); - SetTevStageTexInlineFunc(var_r30, texMtxTbl[var_r30]); + GXSetTexCoordGen(var_r30, GX_TG_MTX2x4, GX_TG_TEX0, texMtxTbl[var_r30]); temp_r23 = (u16) var_r30; var_r30++; } else if (temp_r28->unk00 & 1) { PSMTXScale(sp54, temp_r28->unk2C, temp_r28->unk30, 1.0f); mtxTransCat(sp54, temp_r28->unk34, temp_r28->unk38, 0.0f); GXLoadTexMtxImm(sp54, texMtxTbl[var_r30], GX_MTX2x4); - SetTevStageTexInlineFunc(var_r30, texMtxTbl[var_r30]); + GXSetTexCoordGen(var_r30, GX_TG_MTX2x4, GX_TG_TEX0, texMtxTbl[var_r30]); temp_r23 = (u16) var_r30; var_r30++; } else { @@ -1180,11 +1168,11 @@ static void SetTevStageTex(HsfdrawStruct00 *arg0, HsfMaterial *arg1) { PSMTXScale(sp54, 1.0f / temp_r29->unk28, 1.0f / temp_r29->unk2C, 1.0f); mtxTransCat(sp54, -temp_r29->unk30, -temp_r29->unk34, 0.0f); GXLoadTexMtxImm(sp54, texMtxTbl[var_r30], GX_MTX2x4); - SetTevStageTexInlineFunc(var_r30, texMtxTbl[var_r30]); + GXSetTexCoordGen(var_r30, GX_TG_MTX2x4, GX_TG_TEX0, texMtxTbl[var_r30]); } else if (temp_r29->unk30 != 0.0f || temp_r29->unk34 != 0.0f) { PSMTXTrans(sp54, -temp_r29->unk30, -temp_r29->unk34, 0.0f); GXLoadTexMtxImm(sp54, texMtxTbl[var_r30], GX_MTX2x4); - SetTevStageTexInlineFunc(var_r30, texMtxTbl[var_r30]); + GXSetTexCoordGen(var_r30, GX_TG_MTX2x4, GX_TG_TEX0, texMtxTbl[var_r30]); } else { GXSetTexCoordGen2(var_r30, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); } @@ -1323,8 +1311,8 @@ static void SetTevStageTex(HsfdrawStruct00 *arg0, HsfMaterial *arg1) { GXSetTevAlphaIn(var_r31, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_APREV); GXSetTevAlphaOp(var_r31, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); } - PSMTXScale(sp54, 1.0f / arg0->unk3C.x, 1.0f / arg0->unk3C.y, 1.0f / arg0->unk3C.z); - PSMTXConcat(arg0->unk0C, sp54, sp54); + PSMTXScale(sp54, 1.0f / arg0->scale.x, 1.0f / arg0->scale.y, 1.0f / arg0->scale.z); + PSMTXConcat(arg0->matrix, sp54, sp54); sp54[0][3] = sp54[1][3] = sp54[2][3] = 0.0f; PSMTXConcat(sp54, Hu3DCameraMtxXPose, sp54); PSMTXConcat(refMtx, sp54, sp54); @@ -1423,7 +1411,7 @@ static void SetTevStageTex(HsfdrawStruct00 *arg0, HsfMaterial *arg1) { } else { var_f30 = 0.0f; } - lightBit = Hu3DLightSet(arg0->unk00, &Hu3DCameraMtx, &Hu3DCameraMtxXPose, var_f30); + lightBit = Hu3DLightSet(arg0->model, &Hu3DCameraMtx, &Hu3DCameraMtxXPose, var_f30); } if (var_r21 != 0) { GXSetNumChans(2); @@ -1545,7 +1533,7 @@ static void FlushKColor(void) { } } -static void SetReflect(HsfdrawStruct00 *arg0, s16 arg1, s16 arg2, u8 arg3) { +static void SetReflect(HsfDrawObject *arg0, s16 arg1, s16 arg2, u8 arg3) { GXTevKColorSel var_r27; Mtx sp3C; Mtx spC; @@ -1576,15 +1564,15 @@ static void SetReflect(HsfdrawStruct00 *arg0, s16 arg1, s16 arg2, u8 arg3) { GXSetTevColorOp(arg1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); GXSetTevAlphaIn(arg1, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_APREV); GXSetTevAlphaOp(arg1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); - PSMTXScale(sp3C, 1.0f / arg0->unk3C.x, 1.0f / arg0->unk3C.y, 1.0f / arg0->unk3C.z); - PSMTXConcat(arg0->unk0C, sp3C, spC); + PSMTXScale(sp3C, 1.0f / arg0->scale.x, 1.0f / arg0->scale.y, 1.0f / arg0->scale.z); + PSMTXConcat(arg0->matrix, sp3C, spC); spC[0][3] = spC[1][3] = spC[2][3] = 0.0f; PSMTXConcat(spC, Hu3DCameraMtxXPose, sp3C); PSMTXConcat(refMtx, sp3C, spC); GXLoadTexMtxImm(spC, GX_TEXMTX8, GX_MTX2x4); } -static void SetProjection(HsfdrawStruct00 *arg0, s16 arg1, s16 arg2, s16 arg3, GXTexMapID arg4, u32 arg5) { +static void SetProjection(HsfDrawObject *arg0, s16 arg1, s16 arg2, s16 arg3, GXTexMapID arg4, u32 arg5) { GXTevKColorSel var_r26; u8 temp_r30; @@ -1631,7 +1619,7 @@ static void SetShadowTex(void) { GXLoadTexObj(&sp8, shadowMapNo); } -static void SetShadow(HsfdrawStruct00 *arg0, s16 arg1, s16 arg2) { +static void SetShadow(HsfDrawObject *arg0, s16 arg1, s16 arg2) { GXSetTexCoordGen2(arg2, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX9, GX_FALSE, GX_PTIDENTITY); GXSetTevOrder(arg1, arg2, shadowMapNo, GX_COLOR0A0); GXSetTevColorIn(arg1, GX_CC_CPREV, GX_CC_ZERO, GX_CC_TEXC, GX_CC_ZERO); @@ -1640,7 +1628,7 @@ static void SetShadow(HsfdrawStruct00 *arg0, s16 arg1, s16 arg2) { GXSetTevAlphaOp(arg1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); } -static void FaceDrawShadow(HsfdrawStruct00 *arg0, HsfFace *arg1) { +static void FaceDrawShadow(HsfDrawObject *arg0, HsfFace *arg1) { HsfObject *temp_r31; ModelData *temp_r28; HsfConstData *temp_r27; @@ -1649,8 +1637,8 @@ static void FaceDrawShadow(HsfdrawStruct00 *arg0, HsfFace *arg1) { GXColor spC; s16 var_r30; - temp_r31 = arg0->unk04; - temp_r28 = arg0->unk00; + temp_r31 = arg0->object; + temp_r28 = arg0->model; temp_r27 = temp_r31->constData; temp_r29 = &temp_r31->data.material[arg1->mat & 0xFFF]; if (temp_r29 != materialBak) { @@ -1694,7 +1682,7 @@ static void FaceDrawShadow(HsfdrawStruct00 *arg0, HsfFace *arg1) { GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); } else { var_r30 = (temp_r29->vtxMode == 5) ? 5 : 1; - if (DrawData[drawCnt].unk0C & 2) { + if (DrawData[drawCnt].flags & 2) { var_r30 |= 2; } if (var_r30 != vtxModeBak) { @@ -1736,15 +1724,15 @@ static void FaceDrawShadow(HsfdrawStruct00 *arg0, HsfFace *arg1) { } GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE); GXSetChanCtrl(GX_COLOR1A1, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE); - var_r26 = (u8*) DLBufStartP + DrawData[drawCnt].unk00; - GXCallDisplayList(var_r26, DrawData[drawCnt].unk04); + var_r26 = (u8*) DLBufStartP + DrawData[drawCnt].dlOfs; + GXCallDisplayList(var_r26, DrawData[drawCnt].dlSize); } else { if (!(temp_r27->flags & 0x400)) { drawCnt++; return; } - var_r26 = (u8*) DLBufStartP + DrawData[drawCnt].unk00; - GXCallDisplayList(var_r26, DrawData[drawCnt].unk04); + var_r26 = (u8*) DLBufStartP + DrawData[drawCnt].dlOfs; + GXCallDisplayList(var_r26, DrawData[drawCnt].dlSize); } drawCnt++; } @@ -2053,7 +2041,7 @@ void Hu3DDrawPost(void) { s16 spA; s16 sp8; HsfBuffer *temp_r24; - HsfdrawStruct00 *temp_r28; + HsfDrawObject *temp_r28; s16 var_r21; s16 var_r20; s16 var_r19; @@ -2089,10 +2077,10 @@ void Hu3DDrawPost(void) { while ((var_r25 /= 3) >= 1) { for (i = var_r25; i < DrawObjIdx; i++) { var_r20 = DrawObjNum[i]; - temp_f29 = DrawObjData[DrawObjNum[i]].unk08; + temp_f29 = DrawObjData[DrawObjNum[i]].z; var_r26 = i - var_r25; while (var_r26 >= 0) { - if (DrawObjData[DrawObjNum[var_r26]].unk08 < temp_f29) { + if (DrawObjData[DrawObjNum[var_r26]].z < temp_f29) { DrawObjNum[var_r26 + var_r25] = DrawObjNum[var_r26]; var_r26 -= var_r25; } else { @@ -2104,7 +2092,7 @@ void Hu3DDrawPost(void) { } for (i = 0; i < DrawObjIdx - 1; i++) { for (var_r26 = i + 1; var_r26 < DrawObjIdx; var_r26++) { - if (DrawObjData[DrawObjNum[i]].unk08 != DrawObjData[DrawObjNum[var_r26]].unk08) { + if (DrawObjData[DrawObjNum[i]].z != DrawObjData[DrawObjNum[var_r26]].z) { break; } if (DrawObjNum[var_r26] < DrawObjNum[i]) { @@ -2124,24 +2112,24 @@ void Hu3DDrawPost(void) { GXSetCullMode(GX_CULL_BACK); for (var_r23 = 0; var_r23 < DrawObjIdx; var_r23++) { temp_r28 = &DrawObjData[DrawObjNum[var_r23]]; - if (temp_r28->unk00->attr & 0x10) { - sp28 = (void*) temp_r28->unk00->hsfData; - sp28(temp_r28->unk00, temp_r28->unk0C); + if (temp_r28->model->attr & 0x10) { + sp28 = (void*) temp_r28->model->hsfData; + sp28(temp_r28->model, temp_r28->matrix); for (i = 0; i < 8; i++) { BmpPtrBak[i] = (HsfAttribute*) -1; } materialBak = (HsfMaterial*) -1; Hu3DCameraSet(Hu3DCameraNo, Hu3DCameraMtx); } else { - Hu3DObjInfoP = temp_r28->unk04->constData; - DLBufStartP = Hu3DObjInfoP->unk0C; - DrawData = Hu3DObjInfoP->unk08; - GXLoadPosMtxImm(temp_r28->unk0C, GX_PNMTX0); - PSMTXInvXpose(temp_r28->unk0C, sp120); + Hu3DObjInfoP = temp_r28->object->constData; + DLBufStartP = Hu3DObjInfoP->dlBuf; + DrawData = Hu3DObjInfoP->drawData; + GXLoadPosMtxImm(temp_r28->matrix, GX_PNMTX0); + PSMTXInvXpose(temp_r28->matrix, sp120); GXLoadNrmMtxImm(sp120, 0); if (Hu3DShadowF != 0 && Hu3DShadowCamBit != 0 && (Hu3DObjInfoP->flags & 8)) { PSMTXInverse(Hu3DCameraMtx, spF0); - PSMTXConcat(spF0, temp_r28->unk0C, sp120); + PSMTXConcat(spF0, temp_r28->matrix, sp120); PSMTXConcat(Hu3DShadowData.unk_68, Hu3DShadowData.unk_38, sp150); PSMTXConcat(sp150, sp120, sp120); GXLoadTexMtxImm(sp120, GX_TEXMTX9, GX_MTX3x4); @@ -2149,22 +2137,22 @@ void Hu3DDrawPost(void) { } else { var_r19 = 0; } - if (temp_r28->unk00->unk_02 != 0) { + if (temp_r28->model->unk_02 != 0) { if (var_r19 == 0) { PSMTXInverse(Hu3DCameraMtx, spF0); } for (i = 0, var_r21 = 1; i < 4; i++, var_r21 <<= 1) { - if (var_r21 & temp_r28->unk00->unk_02) { - PSMTXConcat(spF0, temp_r28->unk0C, sp120); + if (var_r21 & temp_r28->model->unk_02) { + PSMTXConcat(spF0, temp_r28->matrix, sp120); PSMTXConcat(Hu3DProjection[i].unk_68, Hu3DProjection[i].unk_38, sp150); PSMTXConcat(sp150, sp120, sp120); GXLoadTexMtxImm(sp120, texMtxTbl[i + 3], GX_MTX3x4); } } } - if ((temp_r28->unk00->attr & 0x20000) || (Hu3DObjInfoP->flags & 0x8000)) { + if ((temp_r28->model->attr & 0x20000) || (Hu3DObjInfoP->flags & 0x8000)) { sp54 = lbl_8011DD20; - temp_r22 = &Hu3DGlobalLight[temp_r28->unk00->unk_03]; + temp_r22 = &Hu3DGlobalLight[temp_r28->model->unk_03]; sp30 = temp_r22->unk_28; if (temp_r22->unk_00 & 0x8000) { PSMTXMultVecSR(Hu3DCameraMtx, &sp30, &sp30); @@ -2179,8 +2167,8 @@ void Hu3DDrawPost(void) { sp3C.x = -sp3C.x; sp3C.y = -sp3C.y; sp3C.z = -sp3C.z; - PSMTXScale(sp60, 1.0f / temp_r28->unk3C.x, 1.0f / temp_r28->unk3C.y, 1.0f / temp_r28->unk3C.z); - PSMTXConcat(temp_r28->unk0C, sp60, spC0); + PSMTXScale(sp60, 1.0f / temp_r28->scale.x, 1.0f / temp_r28->scale.y, 1.0f / temp_r28->scale.z); + PSMTXConcat(temp_r28->matrix, sp60, spC0); spC0[0][3] = spC0[1][3] = spC0[2][3] = 0.0f; PSMTXInvXpose(spC0, sp90); if (sp8 == 10000) { @@ -2198,7 +2186,7 @@ void Hu3DDrawPost(void) { PSMTXConcat(spC0, sp60, hiliteMtx); } } - temp_r24 = temp_r28->unk04->data.face; + temp_r24 = temp_r28->object->data.face; var_r27 = temp_r24->data; drawCnt = 0; shadingBak = -1; @@ -2208,13 +2196,13 @@ void Hu3DDrawPost(void) { for (i = 0; i < temp_r24->count;) { FaceDraw(temp_r28, var_r27); if (var_r27->type == 4) { - totalPolyCnt += DrawData[drawCnt - 1].unk08; + totalPolyCnt += DrawData[drawCnt - 1].polyCnt; i++; var_r27++; } else { - totalPolyCnt += DrawData[drawCnt - 1].unk08 * ((var_r27->type & 7) == 3 ? 2 : 1); - i += DrawData[drawCnt - 1].unk08; - var_r27 += DrawData[drawCnt - 1].unk08; + totalPolyCnt += DrawData[drawCnt - 1].polyCnt * ((var_r27->type & 7) == 3 ? 2 : 1); + i += DrawData[drawCnt - 1].polyCnt; + var_r27 += DrawData[drawCnt - 1].polyCnt; } } } else { @@ -2230,8 +2218,8 @@ void Hu3DDrawPost(void) { i++; var_r27++; } else { - i += DrawData[drawCnt - 1].unk08; - var_r27 += DrawData[drawCnt - 1].unk08; + i += DrawData[drawCnt - 1].polyCnt; + var_r27 += DrawData[drawCnt - 1].polyCnt; } } } @@ -2247,7 +2235,7 @@ void Hu3DDrawPost(void) { (void)var_r19; // required to match } -static void ObjDraw(HsfdrawStruct00 *arg0) { +static void ObjDraw(HsfDrawObject *arg0) { Vec sp44; Vec sp38; Vec sp2C; @@ -2265,7 +2253,7 @@ static void ObjDraw(HsfdrawStruct00 *arg0) { float temp_f27; float temp_f26; LightData *temp_r24; - DrawDataStruct *temp_r25; + HsfDrawData *temp_r25; HsfFace *var_r27; Mtx sp140; Mtx sp110; @@ -2274,16 +2262,16 @@ static void ObjDraw(HsfdrawStruct00 *arg0) { Mtx sp80; Mtx sp50; - Hu3DObjInfoP = arg0->unk04->constData; - DLBufStartP = Hu3DObjInfoP->unk0C; - DrawData = Hu3DObjInfoP->unk08; - GXLoadPosMtxImm(arg0->unk0C, GX_PNMTX0); - PSMTXInvXpose(arg0->unk0C, sp110); + Hu3DObjInfoP = arg0->object->constData; + DLBufStartP = Hu3DObjInfoP->dlBuf; + DrawData = Hu3DObjInfoP->drawData; + GXLoadPosMtxImm(arg0->matrix, GX_PNMTX0); + PSMTXInvXpose(arg0->matrix, sp110); GXLoadNrmMtxImm(sp110, 0); GXInvalidateVtxCache(); if (Hu3DShadowF != 0 && Hu3DShadowCamBit != 0 && (Hu3DObjInfoP->flags & 8)) { PSMTXInverse(Hu3DCameraMtx, spE0); - PSMTXConcat(spE0, arg0->unk0C, sp110); + PSMTXConcat(spE0, arg0->matrix, sp110); PSMTXConcat(Hu3DShadowData.unk_68, Hu3DShadowData.unk_38, sp140); PSMTXConcat(sp140, sp110, sp110); GXLoadTexMtxImm(sp110, GX_TEXMTX9, GX_MTX3x4); @@ -2291,22 +2279,22 @@ static void ObjDraw(HsfdrawStruct00 *arg0) { } else { var_r22 = 0; } - if (arg0->unk00->unk_02 != 0) { + if (arg0->model->unk_02 != 0) { if (var_r22 == 0) { PSMTXInverse(Hu3DCameraMtx, spE0); } for (i = 0, var_r23 = 1; i < 4; i++, var_r23 <<= 1) { - if (var_r23 & arg0->unk00->unk_02) { - PSMTXConcat(spE0, arg0->unk0C, sp110); + if (var_r23 & arg0->model->unk_02) { + PSMTXConcat(spE0, arg0->matrix, sp110); PSMTXConcat(Hu3DProjection[i].unk_68, Hu3DProjection[i].unk_38, sp140); PSMTXConcat(sp140, sp110, sp110); GXLoadTexMtxImm(sp110, texMtxTbl[i + 3], GX_MTX3x4); } } } - if ((arg0->unk00->attr & 0x20000) || (Hu3DObjInfoP->flags & 0x8000)) { + if ((arg0->model->attr & 0x20000) || (Hu3DObjInfoP->flags & 0x8000)) { sp44 = lbl_8011DD20; - temp_r24 = &Hu3DGlobalLight[arg0->unk00->unk_03]; + temp_r24 = &Hu3DGlobalLight[arg0->model->unk_03]; sp20 = temp_r24->unk_28; if (temp_r24->unk_00 & 0x8000) { PSMTXMultVecSR(Hu3DCameraMtx, &sp20, &sp20); @@ -2321,8 +2309,8 @@ static void ObjDraw(HsfdrawStruct00 *arg0) { sp2C.x = -sp2C.x; sp2C.y = -sp2C.y; sp2C.z = -sp2C.z; - PSMTXScale(sp50, 1.0f / arg0->unk3C.x, 1.0f / arg0->unk3C.y, 1.0f / arg0->unk3C.z); - PSMTXConcat(arg0->unk0C, sp50, spB0); + PSMTXScale(sp50, 1.0f / arg0->scale.x, 1.0f / arg0->scale.y, 1.0f / arg0->scale.z); + PSMTXConcat(arg0->matrix, sp50, spB0); spB0[0][3] = spB0[1][3] = spB0[2][3] = 0.0f; PSMTXInvXpose(spB0, sp80); if (var_r21 == 10000) { @@ -2340,7 +2328,7 @@ static void ObjDraw(HsfdrawStruct00 *arg0) { PSMTXConcat(spB0, sp50, hiliteMtx); } } - temp_r26 = arg0->unk04->data.face; + temp_r26 = arg0->object->data.face; var_r27 = temp_r26->data; drawCnt = 0; shadingBak = -1; @@ -2350,7 +2338,7 @@ static void ObjDraw(HsfdrawStruct00 *arg0) { for (i = 0; i < temp_r26->count;) { FaceDraw(arg0, var_r27); if (var_r27->type == 4) { - totalPolyCnt += DrawData[drawCnt - 1].unk08; + totalPolyCnt += DrawData[drawCnt - 1].polyCnt; i++; var_r27++; } else { @@ -2360,9 +2348,9 @@ static void ObjDraw(HsfdrawStruct00 *arg0) { } else { var_r20 = 1; } - totalPolyCnt += temp_r25->unk08 * var_r20; - i += temp_r25->unk08; - var_r27 += temp_r25->unk08; + totalPolyCnt += temp_r25->polyCnt * var_r20; + i += temp_r25->polyCnt; + var_r27 += temp_r25->polyCnt; } } } else { @@ -2378,8 +2366,8 @@ static void ObjDraw(HsfdrawStruct00 *arg0) { i++; var_r27++; } else { - i += DrawData[drawCnt - 1].unk08; - var_r27 += DrawData[drawCnt - 1].unk08; + i += DrawData[drawCnt - 1].polyCnt; + var_r27 += DrawData[drawCnt - 1].polyCnt; } } } @@ -2446,8 +2434,8 @@ static void MDObjMesh(HsfData *arg0, HsfObject *arg1) { } DLTotalNum = (DLTotalNum + 0x40) & ~0x1F; Hu3DObjInfoP = ObjConstantMake(arg1, mallocNo); - Hu3DObjInfoP->unk08 = DrawData = HuMemDirectMallocNum(HEAP_DATA, matChgCnt * sizeof(DrawDataStruct), mallocNo); - memset(DrawData, 0, matChgCnt * sizeof(DrawDataStruct)); + Hu3DObjInfoP->drawData = DrawData = HuMemDirectMallocNum(HEAP_DATA, matChgCnt * sizeof(HsfDrawData), mallocNo); + memset(DrawData, 0, matChgCnt * sizeof(HsfDrawData)); DLBufP = DLBufStartP = HuMemDirectMallocNum(HEAP_DATA, DLTotalNum, mallocNo); DCInvalidateRange(DLBufStartP, DLTotalNum); DLFirstF = 0; @@ -2471,10 +2459,10 @@ static void MDObjMesh(HsfData *arg0, HsfObject *arg1) { for (i = 0; i < temp_r29->count; i++, var_r28++) { MDFaceDraw(arg1, var_r28); } - Hu3DObjInfoP->unk0C = DLBufStartP; + Hu3DObjInfoP->dlBuf = DLBufStartP; if (DLTotalNum < totalSize) { OSReport("DLBuf Over >>>>>>>>>>>>>"); - OSReport("%x:%x:%x\n", Hu3DObjInfoP->unk0C, totalSize, DLTotalNum); + OSReport("%x:%x:%x\n", Hu3DObjInfoP->dlBuf, totalSize, DLTotalNum); } for (i = 0; i < arg1->data.childrenCount; i++) { MDObjCall(arg0, arg1->data.children[i]); @@ -2488,7 +2476,7 @@ HsfConstData *ObjConstantMake(HsfObject *arg0, u32 arg1) { arg0->constData = temp_r3; temp_r3->flags = 0; temp_r3->hook = -1; - temp_r3->hilite_map = NULL; + temp_r3->hiliteMap = NULL; return temp_r3; } @@ -2507,7 +2495,7 @@ static void MDFaceDraw(HsfObject *arg0, HsfFace *arg1) { if (temp_r30 != materialBak || polyTypeBak != (arg1->type & 7) || (arg1->type & 7) == 4) { polyTypeBak = arg1->type & 7; materialBak = temp_r30; - DrawData[drawCnt].unk00 = (u32) DLBufP - (u32) DLBufStartP; + DrawData[drawCnt].dlOfs = (u32) DLBufP - (u32) DLBufStartP; GXBeginDisplayList(DLBufP, 0x20000); GXResetWriteGatherPipe(); if (temp_r30->numAttrs == 0) { @@ -2517,7 +2505,7 @@ static void MDFaceDraw(HsfObject *arg0, HsfFace *arg1) { for (var_r27 = 0; var_r27 < temp_r30->numAttrs; var_r27++) { if (arg0->data.attribute[temp_r30->attrs[var_r27]].unk14 != 0.0) { Hu3DObjInfoP->flags |= 2; - DrawData[drawCnt].unk0C |= 2; + DrawData[drawCnt].flags |= 2; var_r26 = var_r27; } } @@ -2748,8 +2736,8 @@ static void MDFaceDraw(HsfObject *arg0, HsfFace *arg1) { break; } temp_r3 = GXEndDisplayList(); - DrawData[drawCnt].unk04 = temp_r3; - DrawData[drawCnt].unk08 = faceCnt; + DrawData[drawCnt].dlSize = temp_r3; + DrawData[drawCnt].polyCnt = faceCnt; totalSize += temp_r3; drawCnt++; DLBufP = (u8*) DLBufP + temp_r3; @@ -3232,14 +3220,14 @@ void Hu3DModelObjDrawInit(void) { } void Hu3DModelObjDraw(s16 arg0, char *arg1, Mtx arg2) { - HsfdrawStruct00 sp14; + HsfDrawObject sp14; HsfConstData *sp10; HsfObject *temp_r3; - sp14.unk00 = &Hu3DData[arg0]; - sp14.unk04 = temp_r3 = Hu3DModelObjPtrGet(arg0, arg1); + sp14.model = &Hu3DData[arg0]; + sp14.object = temp_r3 = Hu3DModelObjPtrGet(arg0, arg1); sp10 = temp_r3->constData; - PSMTXCopy(arg2, sp14.unk0C); - sp14.unk3C.x = sp14.unk3C.y = sp14.unk3C.z = 1.0f; + PSMTXCopy(arg2, sp14.matrix); + sp14.scale.x = sp14.scale.y = sp14.scale.z = 1.0f; ObjDraw(&sp14); } diff --git a/src/game/hsfman.c b/src/game/hsfman.c index 2108aeb2..ad679e66 100644 --- a/src/game/hsfman.c +++ b/src/game/hsfman.c @@ -824,7 +824,7 @@ void Hu3DModelHiliteMapSet(s16 arg0, AnimData *arg1) { copy->flags |= 0x100; temp_r25 = copy->constData; temp_r25->flags |= 0x8000; - temp_r25->hilite_map = arg1; + temp_r25->hiliteMap = arg1; } } }