Matched REL/m447dll

This commit is contained in:
mrshigure 2024-08-07 01:14:29 -07:00
parent 5da66370b2
commit 7a1043966e
9 changed files with 3425 additions and 168 deletions

View file

@ -114,182 +114,182 @@ fn_1_A240 = .text:0x0000A240; // type:function size:0x34
_ctors = .ctors:0x00000000; // type:label scope:global data:4byte _ctors = .ctors:0x00000000; // type:label scope:global data:4byte
_dtors = .dtors: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:0x64 lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x64
lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0xC data:4byte lbl_1_rodata_74 = .rodata:0x00000074; // type:object size:0xC scope:local data:float
lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0xC data:4byte lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0xC scope:local data:float
lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0xC data:4byte lbl_1_rodata_8C = .rodata:0x0000008C; // type:object size:0xC scope:local data:float
lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x4 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 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 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 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 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 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:0x18 lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x18 scope:local data:float
lbl_1_rodata_C8 = .rodata:0x000000C8; // type:object size:0x4 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 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 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:0xC lbl_1_rodata_D8 = .rodata:0x000000D8; // type:object size:0xC scope:local data:float
lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0xC lbl_1_rodata_E4 = .rodata:0x000000E4; // type:object size:0xC scope:local data:float
lbl_1_rodata_F0 = .rodata:0x000000F0; // type:object size:0x4 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:0x18 data:4byte lbl_1_rodata_F4 = .rodata:0x000000F4; // type:object size:0x18 scope:local data:4byte
lbl_1_rodata_10C = .rodata:0x0000010C; // type:object size:0x4 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 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 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 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 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 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 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 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 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 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 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:0x58 lbl_1_rodata_138 = .rodata:0x00000138; // type:object size:0x58
lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x3C lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x3C data:float
lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 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 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 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 data:float lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 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:0x4 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 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 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 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 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 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 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 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:0x1 data:byte lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x4 scope:local data:byte
lbl_1_rodata_20C = .rodata:0x0000020C; // type:object size:0x4 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 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 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:0x8 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 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:0x8 data:double lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x8 scope:local data:double
lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x8 data:float lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float
lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 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:0x4 data:float lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float
lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float
lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float
lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float
lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float
lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 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 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 data:double lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x8 scope:local data:double
lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 data:double lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x8 scope:local data:double
lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 data:float lbl_1_rodata_278 = .rodata:0x00000278; // type:object size:0x4 scope:local data:float
lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 data:double lbl_1_rodata_280 = .rodata:0x00000280; // type:object size:0x8 scope:local data:double
lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 data:float lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data:float
lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x8 data:double lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x8 scope:local data:double
lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x8 data:float lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float
lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x144 lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x144
lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x24 lbl_1_rodata_3E4 = .rodata:0x000003E4; // type:object size:0x24 data:float
lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x60 lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x60 data:float
lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x14 lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x14 data:byte
lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 data:float lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 data:float lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x4 scope:local data:float
lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 data:float lbl_1_rodata_484 = .rodata:0x00000484; // type:object size:0x4 scope:local data:float
lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float
lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 data:float lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 data:float lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 scope:local data:float
lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x8 data:double lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x8 scope:local data:double
lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x8 data:double lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x8 scope:local data:double
lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x8 data:double lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x8 scope:local data:double
lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x8 data:double lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x8 scope:local data:double
lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x8 data:double lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x8 scope:local data:double
lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 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 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:0x8 data:double lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x8 scope:local data:double
lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 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 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 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 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 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:0x20 lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x20 scope:local
lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 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:0x60 lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x60 scope:local
lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 data:float lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 scope:local data:float
lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x4 data:float lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x4 scope:local data:float
lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 data:float lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 scope:local data:float
lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 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:0x4 data:float lbl_1_rodata_580 = .rodata:0x00000580; // type:object size:0x4 scope:local data:float
lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 data:float lbl_1_rodata_584 = .rodata:0x00000584; // type:object size:0x4 scope:local data:float
lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 data:float lbl_1_rodata_588 = .rodata:0x00000588; // type:object size:0x4 scope:local data:float
lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 data:float lbl_1_rodata_58C = .rodata:0x0000058C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 data:float lbl_1_rodata_590 = .rodata:0x00000590; // type:object size:0x4 scope:local data:float
lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 data:float lbl_1_rodata_594 = .rodata:0x00000594; // type:object size:0x4 scope:local data:float
lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x8 data:float lbl_1_rodata_598 = .rodata:0x00000598; // type:object size:0x4 scope:local data:float
lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x4 data:float lbl_1_rodata_5A0 = .rodata:0x000005A0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_5A4 = .rodata:0x000005A4; // type:object size:0x4 data:float lbl_1_rodata_5A4 = .rodata:0x000005A4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 data:float lbl_1_rodata_5A8 = .rodata:0x000005A8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 data:float lbl_1_rodata_5AC = .rodata:0x000005AC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 data:float lbl_1_rodata_5B0 = .rodata:0x000005B0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 data:float lbl_1_rodata_5B4 = .rodata:0x000005B4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x8 data:double lbl_1_rodata_5B8 = .rodata:0x000005B8; // type:object size:0x8 scope:local data:double
lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x8 data:double lbl_1_rodata_5C0 = .rodata:0x000005C0; // type:object size:0x8 scope:local data:double
lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x8 data:double lbl_1_rodata_5C8 = .rodata:0x000005C8; // type:object size:0x8 scope:local data:double
lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x8 data:double lbl_1_rodata_5D0 = .rodata:0x000005D0; // type:object size:0x8 scope:local data:double
lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x4 data:float lbl_1_rodata_5D8 = .rodata:0x000005D8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x8 data:double lbl_1_rodata_5E0 = .rodata:0x000005E0; // type:object size:0x8 scope:local data:double
lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x8 data:double lbl_1_rodata_5E8 = .rodata:0x000005E8; // type:object size:0x8 scope:local data:double
lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x8 data:float lbl_1_rodata_5F0 = .rodata:0x000005F0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x50 lbl_1_rodata_5F8 = .rodata:0x000005F8; // type:object size:0x50
lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x50 lbl_1_rodata_648 = .rodata:0x00000648; // type:object size:0x50 data:float
lbl_1_rodata_698 = .rodata:0x00000698; // type:object size:0x4 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 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 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 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 data:float lbl_1_rodata_6A8 = .rodata:0x000006A8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_6AC = .rodata:0x000006AC; // type:object size:0x4 data:float lbl_1_rodata_6AC = .rodata:0x000006AC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_6B0 = .rodata:0x000006B0; // type:object size:0x4 data:float lbl_1_rodata_6B0 = .rodata:0x000006B0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_6B4 = .rodata:0x000006B4; // type:object size:0x4 data:float lbl_1_rodata_6B4 = .rodata:0x000006B4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_6B8 = .rodata:0x000006B8; // type:object size:0x8 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 data:float lbl_1_rodata_6C0 = .rodata:0x000006C0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_6C8 = .rodata:0x000006C8; // type:object size:0x8 data:double lbl_1_rodata_6C8 = .rodata:0x000006C8; // type:object size:0x8 scope:local data:double
lbl_1_rodata_6D0 = .rodata:0x000006D0; // type:object size:0x4 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 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 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 data:float lbl_1_rodata_6DC = .rodata:0x000006DC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_6E0 = .rodata:0x000006E0; // type:object size:0x4 data:float lbl_1_rodata_6E0 = .rodata:0x000006E0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_6E4 = .rodata:0x000006E4; // type:object size:0x4 data:float lbl_1_rodata_6E4 = .rodata:0x000006E4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_6E8 = .rodata:0x000006E8; // type:object size:0x4 data:float lbl_1_rodata_6E8 = .rodata:0x000006E8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_6EC = .rodata:0x000006EC; // type:object size:0x4 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:0x8 data:double lbl_1_rodata_6F0 = .rodata:0x000006F0; // type:object size:0x8 scope:local data:double
lbl_1_rodata_6F8 = .rodata:0x000006F8; // type:object size:0x4 data:float lbl_1_rodata_6F8 = .rodata:0x000006F8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_700 = .rodata:0x00000700; // type:object size:0x8 data:double lbl_1_rodata_700 = .rodata:0x00000700; // type:object size:0x8 scope:local data:double
lbl_1_rodata_708 = .rodata:0x00000708; // type:object size:0x4 data:float lbl_1_rodata_708 = .rodata:0x00000708; // type:object size:0x4 scope:local data:float
lbl_1_rodata_710 = .rodata:0x00000710; // type:object size:0x8 data:double lbl_1_rodata_710 = .rodata:0x00000710; // type:object size:0x8 scope:local data:double
lbl_1_rodata_718 = .rodata:0x00000718; // type:object size:0x4 data:float lbl_1_rodata_718 = .rodata:0x00000718; // type:object size:0x4 scope:local data:float
lbl_1_rodata_720 = .rodata:0x00000720; // type:object size:0x8 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 data:float lbl_1_rodata_728 = .rodata:0x00000728; // type:object size:0x4 scope:local data:float
lbl_1_rodata_72C = .rodata:0x0000072C; // type:object size:0x4 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 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:0x1 data:byte lbl_1_rodata_734 = .rodata:0x00000734; // type:object size:0x4 scope:local data:byte
lbl_1_rodata_738 = .rodata:0x00000738; // type:object size:0x4 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 data:float lbl_1_rodata_73C = .rodata:0x0000073C; // type:object size:0x4 scope:local data:float
lbl_1_data_0 = .data:0x00000000; // type:object size:0x1C lbl_1_data_0 = .data:0x00000000; // type:object size:0x19 scope:local data:string
lbl_1_data_1C = .data:0x0000001C; // type:object size:0x14 lbl_1_data_1C = .data:0x0000001C; // type:object size:0x14
jumptable_1_data_30 = .data:0x00000030; // type:object size:0x28 scope:local jumptable_1_data_30 = .data:0x00000030; // type:object size:0x28 scope:local
jumptable_1_data_58 = .data:0x00000058; // type:object size:0x28 scope:local jumptable_1_data_58 = .data:0x00000058; // type:object size:0x28 scope:local
jumptable_1_data_80 = .data:0x00000080; // type:object size:0x20 scope:local jumptable_1_data_80 = .data:0x00000080; // type:object size:0x20 scope:local
lbl_1_data_A0 = .data:0x000000A0; // type:object size:0xA8 lbl_1_data_A0 = .data:0x000000A0; // type:object size:0xA8
lbl_1_data_148 = .data:0x00000148; // type:object size:0x14 lbl_1_data_148 = .data:0x00000148; // type:object size:0x14
lbl_1_data_160 = .data:0x00000160; // type:object size:0x1E data:string lbl_1_data_160 = .data:0x00000160; // type:object size:0x1E scope:local data:string
lbl_1_data_17E = .data:0x0000017E; // type:object size:0x1E data:string lbl_1_data_17E = .data:0x0000017E; // type:object size:0x1E scope:local data:string
lbl_1_data_19C = .data:0x0000019C; // type:object size:0x14 lbl_1_data_19C = .data:0x0000019C; // type:object size:0x10 scope:local data:string
lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x1C lbl_1_data_1B0 = .data:0x000001B0; // type:object size:0x1B scope:local data:string
lbl_1_data_1CC = .data:0x000001CC; // type:object size:0x2C lbl_1_data_1CC = .data:0x000001CC; // type:object size:0x2C
jumptable_1_data_1F8 = .data:0x000001F8; // type:object size:0x24 scope:local jumptable_1_data_1F8 = .data:0x000001F8; // type:object size:0x24 scope:local
lbl_1_data_21C = .data:0x0000021C; // type:object size:0x40 lbl_1_data_21C = .data:0x0000021C; // type:object size:0x40 data:float
lbl_1_data_25C = .data:0x0000025C; // type:object size:0x18 lbl_1_data_25C = .data:0x0000025C; // type:object size:0x18 data:float
lbl_1_data_278 = .data:0x00000278; // type:object size:0x1A data:string lbl_1_data_278 = .data:0x00000278; // type:object size:0x1A scope:local data:string
lbl_1_data_294 = .data:0x00000294; // type:object size:0x18 lbl_1_data_294 = .data:0x00000294; // type:object size:0x18
lbl_1_data_2AC = .data:0x000002AC; // type:object size:0x37 data:string lbl_1_data_2AC = .data:0x000002AC; // type:object size:0x37 scope:local data:string
lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte
lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte
lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x8 data:4byte lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte
lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x8 data:4byte lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte
lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:float lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:float
lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:float lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:float
lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:float lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:float

View file

@ -1203,12 +1203,12 @@ config.libs = [
"m447dll", # Archaeologuess "m447dll", # Archaeologuess
objects={ objects={
Object(Matching, "REL/executor.c"), Object(Matching, "REL/executor.c"),
Object(NonMatching, "REL/m447dll/main.c"), Object(Matching, "REL/m447dll/main.c"),
Object(NonMatching, "REL/m447dll/stage.c"), Object(Matching, "REL/m447dll/stage.c"),
Object(NonMatching, "REL/m447dll/camera.c"), Object(Matching, "REL/m447dll/camera.c"),
Object(NonMatching, "REL/m447dll/player.c"), Object(Matching, "REL/m447dll/player.c"),
Object(NonMatching, "REL/m447dll/player_col.c"), Object(Matching, "REL/m447dll/player_col.c"),
Object(NonMatching, "REL/m447dll/block.c"), Object(Matching, "REL/m447dll/block.c"),
}, },
), ),
Rel( Rel(

158
include/REL/m447dll.h Executable file
View file

@ -0,0 +1,158 @@
#ifndef M447DLL_H
#define M447DLL_H
#include "game/animdata.h"
#include "game/process.h"
typedef struct {
/* 0x00 */ Process* unk00;
/* 0x04 */ Process* unk04;
/* 0x08 */ s32 unk08;
/* 0x0C */ s32 unk0C;
/* 0x10 */ s32 unk10;
/* 0x14 */ s32 unk14;
/* 0x18 */ s32 unk18;
/* 0x1C */ s32 unk1C;
/* 0x20 */ s32 unk20;
/* 0x24 */ s32 unk24;
/* 0x28 */ s32 unk28;
/* 0x2C */ s32 unk2C;
/* 0x30 */ s16 unk30;
/* 0x32 */ s16 unk32;
/* 0x34 */ s16 unk34[25];
/* 0x66 */ char unk66[0xA];
/* 0x70 */ s32 unk70;
} UnkM447Struct_00; // Size 0x74
typedef struct {
/* 0x00 */ s16 unk00[22];
/* 0x2C */ s16 unk2C[6];
/* 0x38 */ s32 unk38;
/* 0x3C */ s32 unk3C;
/* 0x40 */ s32 unk40;
/* 0x44 */ s32 unk44;
/* 0x48 */ float unk48;
/* 0x4C */ float unk4C;
/* 0x50 */ AnimData* unk50;
/* 0x54 */ s32 unk54[5];
/* 0x68 */ s32 unk68[5];
/* 0x7C */ Process* unk7C;
} UnkM447Struct_06; // Size 0x80
typedef struct {
/* 0x00 */ s32 unk00;
/* 0x04 */ s32 unk04;
/* 0x08 */ s32 unk08;
/* 0x0C */ s32 unk0C;
/* 0x10 */ Vec unk10;
/* 0x1C */ Vec unk1C;
/* 0x28 */ Vec unk28;
/* 0x34 */ float unk34;
/* 0x38 */ float unk38;
/* 0x3C */ float unk3C;
/* 0x40 */ float unk40;
/* 0x44 */ float unk44;
/* 0x48 */ float unk48;
/* 0x4C */ float unk4C;
/* 0x50 */ float unk50;
/* 0x54 */ float unk54;
/* 0x58 */ s16 unk58[23];
/* 0x86 */ char unk86[2];
/* 0x88 */ float unk88;
/* 0x8C */ float unk8C;
/* 0x90 */ float unk90;
/* 0x94 */ float unk94;
/* 0x98 */ float unk98;
/* 0x9C */ float unk9C;
/* 0xA0 */ AnimData* unkA0;
/* 0xA4 */ Process* unkA4;
/* 0xA8 */ Vec unkA8;
/* 0xB4 */ float unkB4;
/* 0xB8 */ float unkB8;
/* 0xBC */ float unkBC;
/* 0xC0 */ float unkC0;
/* 0xC4 */ float unkC4;
/* 0xC8 */ float unkC8;
} UnkM447Struct_01; // Size 0xCC
typedef struct {
/* 0x00 */ s16 unk00;
/* 0x02 */ char unk02[2];
/* 0x04 */ s32 unk04;
/* 0x08 */ s32 unk08;
/* 0x0C */ s32 unk0C;
/* 0x10 */ s32 unk10;
/* 0x14 */ s32 unk14;
/* 0x18 */ u8 unk18;
/* 0x19 */ u8 unk19;
/* 0x1A */ u8 unk1A;
/* 0x1B */ u8 unk1B;
/* 0x1C */ s32 unk1C;
/* 0x20 */ s16 unk20;
/* 0x22 */ char unk22[2];
/* 0x24 */ s32 unk24;
/* 0x28 */ Vec unk28;
/* 0x34 */ float unk34;
/* 0x38 */ float unk38;
/* 0x3C */ float unk3C;
/* 0x40 */ float unk40;
/* 0x44 */ float unk44;
/* 0x48 */ float unk48;
/* 0x4C */ float unk4C;
/* 0x50 */ float unk50;
/* 0x54 */ char unk54[0xC];
/* 0x60 */ s32 unk60;
/* 0x64 */ s32 unk64;
/* 0x68 */ s16 unk68;
/* 0x6A */ s16 unk6A[9];
/* 0x7C */ s16 unk7C[2];
/* 0x80 */ char unk80[0x24];
/* 0xA4 */ s32 unkA4;
/* 0xA8 */ UnkM447Struct_01* unkA8;
/* 0xAC */ Process* unkAC;
/* 0xB0 */ Process* unkB0;
/* 0xB4 */ Process* unkB4;
} UnkM447Struct_04; // Size 0xB8
UnkM447Struct_06* fn_1_1D90(void);
void fn_1_1E70(UnkM447Struct_06* arg0);
void fn_1_1EB0(UnkM447Struct_06* arg0, s32 arg1);
BOOL fn_1_1EC0(UnkM447Struct_06* arg0);
void fn_1_1ED4(s32 arg0, Vec* arg1);
void fn_1_1F00(UnkM447Struct_06* arg0, s32 arg1);
s32 fn_1_1F9C(UnkM447Struct_06* arg0);
void fn_1_1FEC(UnkM447Struct_06* arg0, s32 arg1);
s32 fn_1_3130(void);
void fn_1_32E0(void);
void fn_1_330C(const Vec* arg0, s32 arg1);
void fn_1_33C8(const Vec* arg0, s32 arg1);
void fn_1_3484(float arg0, s32 arg1);
void fn_1_351C(Vec* arg0);
void fn_1_3540(Vec* arg0);
void fn_1_3F84(void);
UnkM447Struct_04* fn_1_3FC4(s32 arg0);
void fn_1_43CC(UnkM447Struct_04* arg0, s32 arg1);
void fn_1_7A6C(UnkM447Struct_04* arg0);
void fn_1_7AA4(UnkM447Struct_04* arg0, s32 arg1, s32 arg2);
void fn_1_7B54(Vec* arg0, Vec* arg1, s32 arg2, float arg3);
s32 fn_1_80BC(float* arg0, float* arg1, float* arg2);
s32 fn_1_879C(float* arg0, float* arg1, s32 arg2, s32 arg3);
UnkM447Struct_01* fn_1_8DF8(void);
void fn_1_8FF4(UnkM447Struct_01* arg0, s32 arg1);
void fn_1_9004(UnkM447Struct_01* arg0, s32 arg1, s32 arg2);
void fn_1_90FC(s32 arg0);
void fn_1_A230(s32 arg0);
s32 fn_1_A240(void);
extern UnkM447Struct_06* lbl_1_bss_10;
extern UnkM447Struct_00* lbl_1_bss_8;
extern Process* lbl_1_bss_4;
extern UnkM447Struct_04* lbl_1_bss_98[2];
extern const float lbl_1_rodata_648[20];
extern UnkM447Struct_01* lbl_1_bss_A4[5];
#endif

458
src/REL/m447dll/block.c Executable file
View file

@ -0,0 +1,458 @@
#include "REL/m447dll.h"
#include "game/audio.h"
#include "game/hsfanim.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/memory.h"
#include "game/sprite.h"
#include "ext_math.h"
void fn_1_8F7C(void* arg0);
void fn_1_910C(void);
void fn_1_9158(UnkM447Struct_01* arg0);
void fn_1_9320(UnkM447Struct_01* arg0);
void fn_1_9374(UnkM447Struct_01* arg0);
void fn_1_9538(UnkM447Struct_01* arg0);
void fn_1_953C(UnkM447Struct_01* arg0);
void fn_1_9758(UnkM447Struct_01* arg0);
void fn_1_991C(UnkM447Struct_01* arg0);
void fn_1_9BCC(UnkM447Struct_01* arg0);
void fn_1_9CEC(UnkM447Struct_01* arg0);
void fn_1_9EEC(UnkM447Struct_01* arg0);
void fn_1_9F40(ModelData* model, ParticleData* particle, Mtx matrix);
u32 lbl_1_bss_B8; // Maybe part of another file with fn_1_A230 and fn_1_A240.
UnkM447Struct_01* lbl_1_bss_A4[5];
s32 lbl_1_bss_A0;
const s32 lbl_1_rodata_5F8[] = {
DATA_MAKE_NUM(DATADIR_M447, 12),
DATA_MAKE_NUM(DATADIR_M447, 13),
DATA_MAKE_NUM(DATADIR_M447, 10),
DATA_MAKE_NUM(DATADIR_M447, 11),
DATA_MAKE_NUM(DATADIR_M447, 4),
DATA_MAKE_NUM(DATADIR_M447, 5),
DATA_MAKE_NUM(DATADIR_M447, 16),
DATA_MAKE_NUM(DATADIR_M447, 17),
DATA_MAKE_NUM(DATADIR_M447, 8),
DATA_MAKE_NUM(DATADIR_M447, 9),
DATA_MAKE_NUM(DATADIR_M447, 6),
DATA_MAKE_NUM(DATADIR_M447, 7),
DATA_MAKE_NUM(DATADIR_M447, 18),
DATA_MAKE_NUM(DATADIR_M447, 19),
DATA_MAKE_NUM(DATADIR_M447, 20),
DATA_MAKE_NUM(DATADIR_M447, 21),
DATA_MAKE_NUM(DATADIR_M447, 22),
DATA_MAKE_NUM(DATADIR_M447, 23),
DATA_MAKE_NUM(DATADIR_M447, 14),
DATA_MAKE_NUM(DATADIR_M447, 15)
};
const float lbl_1_rodata_648[20] = {
30.0f, 30.0f, 80.0f, 30.0f,
80.0f, 80.0f, 60.0f, 60.0f,
80.0f, 80.0f, 30.0f, 30.0f,
45.0f, 45.0f, 50.0f, 50.0f,
30.0f, 30.0f, 75.0f, 50.0f
};
UnkM447Struct_01* fn_1_8DF8(void) {
UnkM447Struct_01* temp_r3;
temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r3), MEMORY_DEFAULT_NUM);
if (!temp_r3) {
OSReport("M447BlockCreate ERROR...\n");
return NULL;
}
temp_r3->unk04 = 0;
temp_r3->unk00 = 0;
temp_r3->unk08 = 0;
temp_r3->unk0C = 0;
temp_r3->unk10.x = 0.0f;
temp_r3->unk10.y = 0.0f;
temp_r3->unk10.z = 0.0f;
temp_r3->unk40 = 0.0f;
temp_r3->unk44 = 0.0f;
temp_r3->unk48 = 0.0f;
temp_r3->unk4C = 0.0f;
temp_r3->unk50 = 0.0f;
temp_r3->unk54 = 0.0f;
temp_r3->unk1C.x = 0.0f;
temp_r3->unk1C.y = 0.0f;
temp_r3->unk1C.z = 0.0f;
temp_r3->unk8C = 1.0f;
fn_1_9158(temp_r3);
temp_r3->unkA4 = HuPrcChildCreate(fn_1_910C, 105, 0x3000, 0, lbl_1_bss_4);
temp_r3->unkA4->user_data = temp_r3;
return temp_r3;
}
void fn_1_8F7C(void* arg0) {
fn_1_8F7C(arg0);
HuMemDirectFree(arg0);
}
void fn_1_8FF4(UnkM447Struct_01* arg0, s32 arg1) {
arg0->unk04 = arg1;
arg0->unk0C = 0;
}
void fn_1_9004(UnkM447Struct_01* arg0, s32 arg1, s32 arg2) {
if (lbl_1_bss_A0 != 0) {
arg0->unk00 = arg1 * 2 + (arg2 != 0 ? 0 : 1);
} else {
arg0->unk00 = arg1 * 2 + (arg2 != 0 ? 1 : 0);
}
arg0->unk08 = arg2;
arg0->unk8C = 1.0f;
arg0->unk4C = 1.0f;
arg0->unk50 = 1.0f;
arg0->unk54 = 1.0f;
Hu3DModelAttrSet(arg0->unk58[arg0->unk00], 1);
Hu3DModelAttrSet(arg0->unk58[21], 1);
}
void fn_1_90FC(s32 arg0) {
lbl_1_bss_A0 = arg0;
}
void (*lbl_1_data_294[])(UnkM447Struct_01*) = {
fn_1_9538,
fn_1_953C,
fn_1_9758,
fn_1_991C,
fn_1_9BCC,
fn_1_9CEC
};
void fn_1_910C(void) {
UnkM447Struct_01* temp_r31;
temp_r31 = HuPrcCurrentGet()->user_data;
while (TRUE) {
lbl_1_data_294[temp_r31->unk04](temp_r31);
fn_1_9374(temp_r31);
HuPrcVSleep();
}
}
void fn_1_9158(UnkM447Struct_01* arg0) {
s32 i;
for (i = 0; i <= 19; i++) {
arg0->unk58[i] = Hu3DModelCreateFile(lbl_1_rodata_5F8[i]);
Hu3DModelAttrSet(arg0->unk58[i], 2);
Hu3DModelLayerSet(arg0->unk58[i], 7);
}
arg0->unk58[20] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M447, 30));
Hu3DModelLayerSet(arg0->unk58[20], 7);
arg0->unk58[21] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M447, 25));
Hu3DModelLayerSet(arg0->unk58[21], 7);
arg0->unkA0 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M447, 57));
arg0->unk58[22] = Hu3DParticleCreate(arg0->unkA0, 64);
Hu3DParticleHookSet(arg0->unk58[22], fn_1_9F40);
Hu3DParticleBlendModeSet(arg0->unk58[22], 1);
Hu3DModelLayerSet(arg0->unk58[22], 6);
Hu3DModelAttrSet(arg0->unk58[22], 1);
for (i = 0; i <= 19; i++) {
Hu3DModelAttrSet(arg0->unk58[i], 1);
}
Hu3DModelAttrReset(arg0->unk58[arg0->unk00], 1);
Hu3DModelAttrSet(arg0->unk58[20], 1);
Hu3DModelAttrSet(arg0->unk58[21], 1);
for (i = 0; i <= 19; i++) {
Hu3DModelShadowSet(arg0->unk58[i]);
}
}
void fn_1_9320(UnkM447Struct_01* arg0) {
s32 i;
for (i = 0; i < 23; i++) {
Hu3DModelKill(arg0->unk58[i]);
}
}
void fn_1_9374(UnkM447Struct_01* arg0) {
ModelData* temp_r30;
Mtx sp8;
temp_r30 = &Hu3DData[arg0->unk58[arg0->unk00]];
PSMTXIdentity(temp_r30->unk_F0);
PSMTXRotRad(sp8, 'x', MTXDegToRad(arg0->unk1C.x));
PSMTXConcat(temp_r30->unk_F0, sp8, temp_r30->unk_F0);
PSMTXRotRad(sp8, 'y', MTXDegToRad(arg0->unk1C.y));
PSMTXConcat(temp_r30->unk_F0, sp8, temp_r30->unk_F0);
PSMTXRotRad(sp8, 'z', MTXDegToRad(arg0->unk1C.z));
PSMTXConcat(temp_r30->unk_F0, sp8, temp_r30->unk_F0);
Hu3DModelPosSet(arg0->unk58[arg0->unk00], arg0->unk10.x, arg0->unk10.y, arg0->unk10.z);
Hu3DModelPosSet(arg0->unk58[20], arg0->unk10.x, arg0->unk10.y - 100.0f, arg0->unk10.z);
Hu3DModelPosSet(arg0->unk58[21], arg0->unk10.x, arg0->unk10.y, arg0->unk10.z + 120.0f * arg0->unk54);
Hu3DModelRotSet(arg0->unk58[arg0->unk00], arg0->unk40, arg0->unk44, arg0->unk48);
Hu3DModelScaleSet(arg0->unk58[arg0->unk00], arg0->unk4C, arg0->unk50, arg0->unk54);
Hu3DModelScaleSet(arg0->unk58[21], arg0->unk4C, arg0->unk50, arg0->unk54);
Hu3DModelTPLvlSet(arg0->unk58[arg0->unk00], arg0->unk8C);
}
void fn_1_9538(UnkM447Struct_01* arg0) {
}
void fn_1_953C(UnkM447Struct_01* arg0) {
float temp_f31;
switch (arg0->unk0C) {
case 0:
arg0->unk90 = 0.0f;
arg0->unk98 = 0.016666668f;
arg0->unk10.y = -100.0f;
arg0->unk44 = 0.0f;
arg0->unk4C = 0.0f;
arg0->unk50 = 0.0f;
arg0->unk54 = 0.0f;
arg0->unk88 = -50.0f;
Hu3DModelAttrReset(arg0->unk58[arg0->unk00], 1);
arg0->unk0C = 1;
/* fallthrough */
case 1:
arg0->unk44 += arg0->unk88;
temp_f31 = sind(90.0f * arg0->unk90);
arg0->unk10.y = -100.0f + 500.0f * temp_f31;
arg0->unk4C = arg0->unk90;
arg0->unk50 = arg0->unk90;
arg0->unk54 = arg0->unk90;
arg0->unk8C = temp_f31;
arg0->unk90 += arg0->unk98;
if (arg0->unk90 < 1.0f) {
break;
}
arg0->unk10.y = 400.0f;
arg0->unk4C = 1.0f;
arg0->unk50 = 1.0f;
arg0->unk54 = 1.0f;
arg0->unk8C = 1.0f;
arg0->unk0C = 2;
/* fallthrough */
case 2:
fn_1_8FF4(arg0, 2);
break;
}
}
void fn_1_9758(UnkM447Struct_01* arg0) {
float temp_f31;
switch (arg0->unk0C) {
case 0:
arg0->unk90 = 0.1f * (fn_1_A240() % 10);
arg0->unk98 = 0.011111111f;
arg0->unk0C = 1;
/* fallthrough */
case 1:
if (arg0->unk88 < -8.0f) {
arg0->unk88 += 0.05f;
}
temp_f31 = sind(180.0f * arg0->unk90);
temp_f31 *= temp_f31;
arg0->unk10.y = 400.0f + temp_f31 * 25.0f;
arg0->unk44 += arg0->unk88;
arg0->unk90 += arg0->unk98;
if (arg0->unk90 < 1.0f) {
break;
}
arg0->unk90 = 0.0f;
break;
case 2:
fn_1_8FF4(arg0, 0);
break;
}
}
void fn_1_991C(UnkM447Struct_01* arg0) {
float temp_f31;
switch (arg0->unk0C) {
case 0:
arg0->unk90 = 0.0f;
arg0->unk98 = 0.5f;
arg0->unk94 = 0.0f;
arg0->unk9C = 0.05f;
arg0->unk8C = 1.0f;
arg0->unk10.y = 400.0f;
arg0->unk28 = arg0->unk1C;
arg0->unk34 = 0.0f;
arg0->unk38 = arg0->unk1C.y;
arg0->unk3C = 0.0f;
arg0->unk0C = 1;
/* fallthrough */
case 1:
temp_f31 = arg0->unk94;
arg0->unk1C.x = arg0->unk28.x + temp_f31 * (arg0->unk34 - arg0->unk28.x);
arg0->unk1C.y = arg0->unk28.y + temp_f31 * (arg0->unk38 - arg0->unk28.y);
arg0->unk1C.z = arg0->unk28.z + temp_f31 * (arg0->unk3C - arg0->unk28.z);
if (arg0->unk94 < 1.0f) {
arg0->unk94 += arg0->unk9C;
if (arg0->unk94 > 1.0f) {
arg0->unk94 = 1.0f;
}
}
temp_f31 = arg0->unk90;
arg0->unk10.y = 400.0 + 50.0f * temp_f31 * sind(90) - 4.9f * temp_f31 * temp_f31;
arg0->unk90 += arg0->unk98;
if (arg0->unk10.y >= lbl_1_rodata_648[arg0->unk00]) {
break;
}
arg0->unk10.y = lbl_1_rodata_648[arg0->unk00];
HuAudFXPlay(0x785);
fn_1_1FEC(lbl_1_bss_10, 30);
arg0->unk0C = 2;
/* fallthrough */
case 2:
Hu3DModelAttrReset(arg0->unk58[20], 1);
Hu3DMotionTimeSet(arg0->unk58[20], 0.0f);
fn_1_8FF4(arg0, 4);
break;
}
}
void fn_1_9BCC(UnkM447Struct_01* arg0) {
switch (arg0->unk0C) {
case 0:
arg0->unk90 = 0.0f;
arg0->unk98 = 0.016666668f;
arg0->unk0C = 1;
/* fallthrough */
case 1:
arg0->unk8C = 1.0 - sind(90.0f * arg0->unk90);
arg0->unk90 += arg0->unk98;
if (arg0->unk90 < 1.0f) {
break;
}
arg0->unk0C = 2;
/* fallthrough */
case 2:
Hu3DModelAttrSet(arg0->unk58[arg0->unk00], 1);
fn_1_8FF4(arg0, 0);
break;
}
}
void fn_1_9CEC(UnkM447Struct_01* arg0) {
float temp_f31;
switch (arg0->unk0C) {
case 0:
arg0->unk90 = 0.0f;
arg0->unk98 = 0.008333334f;
Hu3DModelAttrReset(arg0->unk58[21], 1);
Hu3DMotionTimeSet(arg0->unk58[21], 0.0f);
Hu3DModelAttrSet(arg0->unk58[21], 0x40000001);
arg0->unkA8 = arg0->unk10;
arg0->unkB4 = 0.0f;
arg0->unkB8 = 200.0f;
arg0->unkBC = -700.0f - arg0->unk10.z / 2;
arg0->unkC0 = 0.0f;
arg0->unkC4 = 400.0f;
arg0->unkC8 = -700.0f;
fn_1_9EEC(arg0);
HuAudFXPlay(0x781);
arg0->unk0C = 1;
/* fallthrough */
case 1:
temp_f31 = arg0->unk90;
arg0->unk4C = 1.0f - temp_f31;
arg0->unk50 = 1.0f - temp_f31;
arg0->unk54 = 1.0f - temp_f31;
fn_1_7B54(&arg0->unk10, &arg0->unkA8, 3, temp_f31);
arg0->unk90 += arg0->unk98;
if (arg0->unk90 < 1.0f) {
break;
}
arg0->unk0C = 2;
/* fallthrough */
case 2:
fn_1_1EB0(lbl_1_bss_10, 2);
fn_1_8FF4(arg0, 0);
break;
}
}
void fn_1_9EEC(UnkM447Struct_01* arg0) {
ModelData* temp_r30;
ParticleData* temp_r31;
temp_r30 = &Hu3DData[arg0->unk58[22]];
temp_r31 = temp_r30->unk_120;
temp_r30->attr &= ~1;
temp_r31->unk_00 = 0;
temp_r31->unk_02 = 1;
temp_r31->unk_1C = arg0;
}
void fn_1_9F40(ModelData* model, ParticleData* particle, Mtx matrix) {
GXColor sp8 = { 0xFF, 0xFF, 0xFF, 0xFF };
UnkM447Struct_01* temp_r29;
HsfanimStruct01* var_r31;
s32 var_r27;
s32 i;
if (particle->unk_02 == 0) {
return;
}
temp_r29 = particle->unk_1C;
if (particle->unk_00 == 0) {
particle->unk_00 = 1;
for (i = 0, var_r31 = particle->unk_48; i < particle->unk_30; i++, var_r31++) {
var_r31->unk00_s16 = i * 5;
var_r31->unk02 = 0;
var_r31->unk2C = 0.0f;
var_r31->unk40.r = sp8.r;
var_r31->unk40.g = sp8.g;
var_r31->unk40.b = sp8.b;
var_r31->unk40.a = sp8.a;
}
}
for (i = 0, var_r27 = 0, var_r31 = particle->unk_48; i < particle->unk_30; i++, var_r31++) {
if (var_r31->unk00_s16 > 0 && --var_r31->unk00_s16 > 0) {
continue;
}
if (var_r31->unk02 == 0 && temp_r29->unk04 == 5 && temp_r29->unk10.z > -700.0f) {
var_r31->unk34.x = temp_r29->unk10.x;
var_r31->unk34.y = temp_r29->unk10.y;
var_r31->unk34.z = temp_r29->unk10.z;
var_r31->unk2C = 20.0f;
var_r31->unk02 = 1;
} else if (var_r31->unk02 == 1) {
var_r31->unk34.y -= 1.0f;
var_r31->unk34.z += 3.0f;
var_r31->unk2C = 20.0f + fn_1_A240() % 60;
if (var_r31->unk40.a > 10) {
var_r31->unk40.a -= 4;
} else {
var_r31->unk40.a = 0;
var_r31->unk02 = 2;
}
} else {
var_r27++;
}
}
if (var_r27 == particle->unk_30) {
OSReport("*****************************************************\n");
OSReport("*****************************************************\n");
OSReport("*****************************************************\n");
OSReport("*****************************************************\n");
OSReport("*****************************************************\n");
OSReport("*****************************************************\n");
OSReport("*****************************************************\n");
OSReport("*****************************************************\n");
particle->unk_02 = 0;
}
}
void fn_1_A230(s32 arg0) {
lbl_1_bss_B8 = arg0;
}
s32 fn_1_A240(void) {
return ((lbl_1_bss_B8 = lbl_1_bss_B8 * 0x41C64E6D + 0x3039) >> 16) % (1 << 15);
}

151
src/REL/m447dll/camera.c Executable file
View file

@ -0,0 +1,151 @@
#include "REL/m447dll.h"
#include "game/hsfman.h"
#include "game/pad.h"
#include "game/printfunc.h"
#include "game/process.h"
#include "ext_math.h"
typedef struct {
/* 0x00 */ Vec unk00;
/* 0x0C */ Vec unk0C;
/* 0x18 */ float unk18;
} UnkM447Struct_05; // Size 0x1C
void fn_1_3564(void);
void fn_1_3C7C(void);
void fn_1_3EA8(void);
Process* lbl_1_bss_90;
UnkM447Struct_05 lbl_1_bss_74;
UnkM447Struct_05 lbl_1_bss_58;
UnkM447Struct_05 lbl_1_bss_3C;
s32 lbl_1_bss_38;
s32 lbl_1_bss_34;
s32 lbl_1_bss_30;
float lbl_1_bss_2C;
float lbl_1_bss_28;
float lbl_1_bss_24;
float lbl_1_bss_20;
float lbl_1_bss_1C;
float lbl_1_bss_18;
s32 fn_1_3130(void) {
Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f);
Hu3DCameraPerspectiveSet(1, 55.0f, 10.0f, 8000.0f, 1.2f);
lbl_1_bss_74.unk00.x = 0.0f;
lbl_1_bss_74.unk00.y = 400.0f;
lbl_1_bss_74.unk00.z = 0.0f;
lbl_1_bss_74.unk0C.x = 0.0f;
lbl_1_bss_74.unk0C.y = 0.0f;
lbl_1_bss_74.unk0C.z = 0.0f;
lbl_1_bss_74.unk18 = 200.0f;
lbl_1_bss_38 = 0;
lbl_1_bss_34 = 0;
lbl_1_bss_30 = 0;
lbl_1_bss_90 = HuPrcChildCreate(fn_1_3564, 100, 0x2000, 0, lbl_1_bss_4);
return 1;
}
void fn_1_32E0(void) {
HuPrcKill(lbl_1_bss_90);
}
void fn_1_330C(const Vec* arg0, s32 arg1) {
lbl_1_bss_3C.unk00 = *arg0;
lbl_1_bss_58.unk00 = lbl_1_bss_74.unk00;
lbl_1_bss_2C = 0.0f;
lbl_1_bss_20 = 1.0f / arg1;
lbl_1_bss_38 = 1;
}
void fn_1_33C8(const Vec* arg0, s32 arg1) {
lbl_1_bss_3C.unk0C = *arg0;
lbl_1_bss_58.unk0C = lbl_1_bss_74.unk0C;
lbl_1_bss_28 = 0.0f;
lbl_1_bss_1C = 1.0f / arg1;
lbl_1_bss_34 = 1;
}
void fn_1_3484(float arg0, s32 arg1) {
lbl_1_bss_3C.unk18 = arg0;
lbl_1_bss_58.unk18 = lbl_1_bss_74.unk18;
lbl_1_bss_24 = 0.0f;
lbl_1_bss_18 = 1.0f / arg1;
lbl_1_bss_30 = 1;
}
void fn_1_351C(Vec* arg0) {
*arg0 = lbl_1_bss_74.unk00;
}
void fn_1_3540(Vec* arg0) {
lbl_1_bss_74.unk00 = *arg0;
}
void fn_1_3564(void) {
Vec sp28;
Vec sp1C;
Vec sp10;
float temp_f31;
while (TRUE) {
if (lbl_1_bss_38 != 0) {
temp_f31 = sind(90.0f * lbl_1_bss_2C);
temp_f31 *= temp_f31;
lbl_1_bss_74.unk00.x = lbl_1_bss_58.unk00.x + temp_f31 * (lbl_1_bss_3C.unk00.x - lbl_1_bss_58.unk00.x);
lbl_1_bss_74.unk00.y = lbl_1_bss_58.unk00.y + temp_f31 * (lbl_1_bss_3C.unk00.y - lbl_1_bss_58.unk00.y);
lbl_1_bss_74.unk00.z = lbl_1_bss_58.unk00.z + temp_f31 * (lbl_1_bss_3C.unk00.z - lbl_1_bss_58.unk00.z);
if ((lbl_1_bss_2C += lbl_1_bss_20) >= 1.0f) {
lbl_1_bss_74.unk00 = lbl_1_bss_3C.unk00;
lbl_1_bss_38 = 0;
}
}
if (lbl_1_bss_34 != 0) {
temp_f31 = sind(90.0f * lbl_1_bss_28);
temp_f31 *= temp_f31;
lbl_1_bss_74.unk0C.x = lbl_1_bss_58.unk0C.x + temp_f31 * (lbl_1_bss_3C.unk0C.x - lbl_1_bss_58.unk0C.x);
lbl_1_bss_74.unk0C.y = lbl_1_bss_58.unk0C.y + temp_f31 * (lbl_1_bss_3C.unk0C.y - lbl_1_bss_58.unk0C.y);
lbl_1_bss_74.unk0C.z = lbl_1_bss_58.unk0C.z + temp_f31 * (lbl_1_bss_3C.unk0C.z - lbl_1_bss_58.unk0C.z);
if ((lbl_1_bss_28 += lbl_1_bss_1C) >= 1.0f) {
lbl_1_bss_74.unk0C = lbl_1_bss_3C.unk0C;
lbl_1_bss_34 = 0;
}
}
if (lbl_1_bss_30 != 0) {
temp_f31 = sind(90.0f * lbl_1_bss_24);
temp_f31 *= temp_f31;
lbl_1_bss_74.unk18 = lbl_1_bss_58.unk18 + temp_f31 * (lbl_1_bss_3C.unk18 - lbl_1_bss_58.unk18);
if ((lbl_1_bss_24 += lbl_1_bss_18) >= 1.0f) {
lbl_1_bss_74.unk18 = lbl_1_bss_3C.unk18;
lbl_1_bss_30 = 0;
}
}
sp28.x = lbl_1_bss_74.unk00.x + sind(lbl_1_bss_74.unk0C.y) * cosd(lbl_1_bss_74.unk0C.x) * lbl_1_bss_74.unk18;
sp28.y = lbl_1_bss_74.unk00.y + -sind(lbl_1_bss_74.unk0C.x) * lbl_1_bss_74.unk18;
sp28.z = lbl_1_bss_74.unk00.z + cosd(lbl_1_bss_74.unk0C.y) * cosd(lbl_1_bss_74.unk0C.x) * lbl_1_bss_74.unk18;
sp10.x = sind(lbl_1_bss_74.unk0C.y) * sind(lbl_1_bss_74.unk0C.x);
sp10.y = cosd(lbl_1_bss_74.unk0C.x);
sp10.z = cosd(lbl_1_bss_74.unk0C.y) * sind(lbl_1_bss_74.unk0C.x);
sp1C = lbl_1_bss_74.unk00;
Hu3DCameraPosSet(1, sp28.x, sp28.y, sp28.z, sp10.x, sp10.y, sp10.z, sp1C.x, sp1C.y, sp1C.z);
HuPrcVSleep();
}
}
void fn_1_3C7C(void) {
if (HuPadBtn[0] & 4) {
lbl_1_bss_74.unk00.x += 0.02f * HuPadStkX[0];
lbl_1_bss_74.unk00.y += 0.02f * HuPadStkY[0];
lbl_1_bss_74.unk0C.y -= 0.02f * HuPadSubStkX[0];
lbl_1_bss_74.unk0C.x += 0.02f * HuPadSubStkY[0];
lbl_1_bss_74.unk18 += 0.02f * HuPadTrigL[0];
lbl_1_bss_74.unk18 -= 0.02f * HuPadTrigR[0];
}
}
void fn_1_3EA8(void) {
print8(32, 132, 1.5f, "LOOKAT : x=%.2f y=%.2f z=%.2f", lbl_1_bss_74.unk00.x, lbl_1_bss_74.unk00.y, lbl_1_bss_74.unk00.z);
print8(32, 148, 1.5f, "ANGLE : x=%.2f y=%.2f z=%.2f", lbl_1_bss_74.unk0C.x, lbl_1_bss_74.unk0C.y, lbl_1_bss_74.unk0C.z);
print8(32, 164, 1.5f, "ZOOM : x=%.2f", lbl_1_bss_74.unk18);
}

713
src/REL/m447dll/main.c Executable file
View file

@ -0,0 +1,713 @@
#include "REL/m447dll.h"
#include "REL/executor.h"
#include "game/esprite.h"
#include "game/frand.h"
#include "game/gamework_data.h"
#include "game/hsfman.h"
#include "game/memory.h"
#include "game/minigame_seq.h"
#include "game/object.h"
#include "game/objsub.h"
#include "game/window.h"
#include "game/wipe.h"
#include "rel_sqrt_consts.h"
typedef struct {
/* 0x00 */ s16 unk00;
/* 0x02 */ char unk02[2];
/* 0x04 */ float unk04;
/* 0x08 */ float unk08;
} UnkM447Struct_03; // Size 0xC
void fn_1_12C(void);
UnkM447Struct_00* fn_1_1B8(void);
void fn_1_43C(UnkM447Struct_00* arg0);
BOOL fn_1_490(UnkM447Struct_00* arg0);
void fn_1_4A0(UnkM447Struct_00* arg0, s32 arg1);
void fn_1_4B0(void);
void fn_1_544(UnkM447Struct_00* arg0);
void fn_1_7A8(UnkM447Struct_00* arg0);
void fn_1_B5C(UnkM447Struct_00* arg0);
void fn_1_F34(UnkM447Struct_00* arg0);
void fn_1_1068(UnkM447Struct_00* arg0);
void fn_1_1394(UnkM447Struct_00* arg0, s16 arg1, s32 arg2);
s32 fn_1_141C(UnkM447Struct_00* arg0, s16 arg1, s32 arg2, s32 arg3, s32 arg4);
void fn_1_1484(void);
void fn_1_1754(UnkM447Struct_00* arg0);
void fn_1_1830(UnkM447Struct_00* arg0);
void fn_1_1884(UnkM447Struct_00* arg0);
void fn_1_1AFC(UnkM447Struct_00* arg0, s32 arg1, s32 arg2);
void fn_1_1BF8(void);
void fn_1_1CE0(UnkM447Struct_00* arg0);
void fn_1_1D34(UnkM447Struct_00* arg0);
UnkM447Struct_06* lbl_1_bss_10;
char lbl_1_bss_C_pad[4];
UnkM447Struct_00* lbl_1_bss_8;
Process* lbl_1_bss_4;
Process* lbl_1_bss_0;
const s32 lbl_1_rodata_10[] = {
DATA_MAKE_NUM(DATADIR_M447, 53),
DATA_MAKE_NUM(DATADIR_M447, 53),
DATA_MAKE_NUM(DATADIR_M447, 54),
DATA_MAKE_NUM(DATADIR_M447, 54),
DATA_MAKE_NUM(DATADIR_M447, 55),
DATA_MAKE_NUM(DATADIR_M447, 55),
DATA_MAKE_NUM(DATADIR_M447, 55),
DATA_MAKE_NUM(DATADIR_M447, 56),
DATA_MAKE_NUM(DATADIR_M447, 56),
DATA_MAKE_NUM(DATADIR_M447, 56),
DATA_MAKE_NUM(DATADIR_M447, 55),
DATA_MAKE_NUM(DATADIR_M447, 55),
DATA_MAKE_NUM(DATADIR_M447, 55),
DATA_MAKE_NUM(DATADIR_M447, 56),
DATA_MAKE_NUM(DATADIR_M447, 56),
DATA_MAKE_NUM(DATADIR_M447, 56),
DATA_MAKE_NUM(DATADIR_M447, 44),
DATA_MAKE_NUM(DATADIR_M447, 45),
DATA_MAKE_NUM(DATADIR_M447, 46),
DATA_MAKE_NUM(DATADIR_M447, 47),
DATA_MAKE_NUM(DATADIR_M447, 48),
DATA_MAKE_NUM(DATADIR_M447, 49),
DATA_MAKE_NUM(DATADIR_M447, 50),
DATA_MAKE_NUM(DATADIR_M447, 51),
DATA_MAKE_NUM(DATADIR_M447, 52)
};
void ObjectSetup(void) {
lbl_1_bss_4 = omInitObjMan(10, 0x2000);
omGameSysInit(lbl_1_bss_4);
HuWinInit(1);
lbl_1_bss_0 = HuPrcChildCreate(fn_1_12C, 1000, 0x2000, 0, lbl_1_bss_4);
lbl_1_bss_8 = fn_1_1B8();
}
void fn_1_12C(void) {
while (omSysExitReq == 0) {
HuPrcVSleep();
}
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60);
while (WipeStatGet() != 0) {
HuPrcVSleep();
}
HuAudFadeOut(100);
fn_1_43C(lbl_1_bss_8);
HuPrcVSleep();
omOvlReturnEx(1, 1);
HuPrcEnd();
}
UnkM447Struct_00* fn_1_1B8(void) {
Vec sp2C;
Vec sp20 = { 0.0f, 3000.0f, 1.0f };
Vec sp14 = { 0.0f, 1.0f, 0.0f };
Vec sp8 = { 0.0f, 0.0f, 0.0f };
UnkM447Struct_00* temp_r3;
s32 i;
temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r3), MEMORY_DEFAULT_NUM);
if (!temp_r3) {
OSReport("M447FlowCreate ERROR...\n");
return NULL;
}
Hu3DShadowCreate(30.0f, 20.0f, 5000.0f);
Hu3DShadowTPLvlSet(0.45f);
Hu3DShadowPosSet(&sp20, &sp14, &sp8);
fn_1_A230(frand());
temp_r3->unk08 = 0;
fn_1_3130();
lbl_1_bss_10 = fn_1_1D90();
sp2C.x = 0.0f;
sp2C.y = -1000.0f;
sp2C.z = 0.0f;
for (i = 0; i < 5; i++) {
lbl_1_bss_A4[i] = fn_1_8DF8();
lbl_1_bss_A4[i]->unk10 = sp2C;
}
fn_1_3F84();
for (i = 0; i < 2; i++) {
lbl_1_bss_98[i] = fn_1_3FC4(i);
}
fn_1_1D34(temp_r3);
fn_1_1754(temp_r3);
temp_r3->unk14 = 0;
temp_r3->unk1C = 0;
temp_r3->unk24 = 0;
temp_r3->unk28 = 0;
temp_r3->unk2C = 0;
temp_r3->unk10 = 0;
temp_r3->unk70 = -1;
temp_r3->unk30 = -1;
temp_r3->unk32 = -1;
temp_r3->unk00 = HuPrcChildCreate(fn_1_4B0, 100, 0x4000, 0, lbl_1_bss_4);
temp_r3->unk00->user_data = temp_r3;
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60);
return temp_r3;
}
void fn_1_43C(UnkM447Struct_00* arg0) {
fn_1_1830(arg0);
fn_1_1E70(lbl_1_bss_10);
fn_1_32E0();
HuPrcKill(arg0->unk00);
HuMemDirectFree(arg0);
}
BOOL fn_1_490(UnkM447Struct_00* arg0) {
return arg0->unk08 == 0;
}
void fn_1_4A0(UnkM447Struct_00* arg0, s32 arg1) {
arg0->unk14 = arg1;
arg0->unk1C = 0;
}
void (*lbl_1_data_1C[])(UnkM447Struct_00*) = {
fn_1_544,
fn_1_7A8,
fn_1_B5C,
fn_1_F34,
fn_1_1068
};
void fn_1_4B0(void) {
UnkM447Struct_00* temp_r31;
temp_r31 = HuPrcCurrentGet()->user_data;
while (omSysExitReq == 0 || !fn_1_490(temp_r31)) {
lbl_1_data_1C[temp_r31->unk14](temp_r31);
HuPrcVSleep();
}
omSysExitReq = 1;
temp_r31->unk08 = 1;
HuPrcEnd();
}
const Vec lbl_1_rodata_B0[2] = {
{ 0.0f, 300.0f, 0.0f },
{ -0.12f, 176.0f, 0.0f }
};
void fn_1_544(UnkM447Struct_00* arg0) {
s32 i;
switch (arg0->unk1C) {
case 0:
arg0->unk20 = 0;
arg0->unk1C = 1;
break;
case 1:
WipeStatGet();
arg0->unk1C = 2;
break;
case 2:
if (arg0->unk20++ >= 60) {
arg0->unk1C = 3;
}
break;
case 3:
fn_1_1EB0(lbl_1_bss_10, 1);
arg0->unk20 = 0;
arg0->unk1C = 4;
break;
case 4:
if (!fn_1_1EC0(lbl_1_bss_10)) {
arg0->unk1C = 5;
}
break;
case 5:
if (lbl_1_bss_98[1]->unk18 == 8) {
arg0->unk70 = HuAudSeqPlay(0x3D);
}
fn_1_3484(860.0f, 60);
fn_1_330C(&lbl_1_rodata_B0[1], 60);
arg0->unk20 = 0;
arg0->unk1C = 6;
break;
case 6:
if (arg0->unk20++ >= 60) {
if (lbl_1_bss_98[1]->unk18 == 8) {
arg0->unk1C = 7;
} else {
arg0->unk1C = 9;
}
}
break;
case 7:
arg0->unk04 = HuPrcChildCreate(fn_1_1484, 100, 0x2000, 0, lbl_1_bss_4);
arg0->unk04->user_data = arg0;
arg0->unk0C = 1;
arg0->unk1C = 8;
break;
case 8:
if (arg0->unk0C != 0) {
break;
}
arg0->unk04 = NULL;
arg0->unk1C = 9;
/* fallthrough */
case 9:
if (arg0->unk70 != -1) {
HuAudSeqFadeOut(arg0->unk70, 1000);
}
fn_1_3484(1150.0f, 60);
fn_1_330C(&lbl_1_rodata_B0[0], 60);
for (i = 0; i < 2; i++) {
fn_1_43CC(lbl_1_bss_98[i], 6);
}
fn_1_4A0(arg0, 1);
break;
}
}
void fn_1_7A8(UnkM447Struct_00* arg0) {
Vec sp14;
Vec sp8;
s32 temp_r29;
s32 temp_r28;
s32 i;
switch (arg0->unk1C) {
case 0:
arg0->unk1C = 1;
/* fallthrough */
case 1:
fn_1_1EB0(lbl_1_bss_10, 3);
arg0->unk20 = 0;
arg0->unk1C = 2;
/* fallthrough */
case 2:
if (arg0->unk20++ < 110) {
break;
}
arg0->unk1C = 3;
/* fallthrough */
case 3:
fn_1_90FC(fn_1_A240() % 10 > 5);
temp_r29 = arg0->unk2C * 2 + fn_1_A240() % 2;
temp_r28 = fn_1_A240() % 5;
for (i = 0; i < 5; i++) {
fn_1_9004(lbl_1_bss_A4[i], temp_r29, temp_r28 == i);
fn_1_1ED4(i, &sp8);
lbl_1_bss_A4[i]->unk10 = sp8;
sp14.x = fn_1_A240() % 360;
sp14.y = 0.0f;
sp14.z = fn_1_A240() % 360;
lbl_1_bss_A4[i]->unk1C = sp14;
fn_1_8FF4(lbl_1_bss_A4[i], 1);
}
arg0->unk20 = 0;
arg0->unk1C = 4;
/* fallthrough */
case 4:
if (arg0->unk20++ < 60) {
break;
}
for (i = 0; i < 5; i++) {
fn_1_8FF4(lbl_1_bss_A4[i], 2);
}
/* fallthrough */
arg0->unk1C = 5;
case 5:
fn_1_1EB0(lbl_1_bss_10, 4);
arg0->unk20 = 0;
arg0->unk1C = 6;
/* fallthrough */
case 6:
if (!fn_1_1EC0(lbl_1_bss_10)) {
if (arg0->unk10 != 0) {
arg0->unk1C = 9;
} else {
arg0->unk1C = 7;
}
}
break;
case 7:
arg0->unk70 = HuAudSeqPlay(0x3E);
arg0->unk30 = MGSeqStartCreate();
arg0->unk1C = 8;
/* fallthrough */
case 8:
if (MGSeqStatGet(arg0->unk30) != 0) {
break;
}
arg0->unk10 = 1;
arg0->unk1C = 9;
/* fallthrough */
case 9:
fn_1_4A0(arg0, 2);
break;
}
}
void fn_1_B5C(UnkM447Struct_00* arg0) {
s32 temp_r26;
s32 var_r27;
s32 i;
switch (arg0->unk1C) {
case 0:
fn_1_1884(arg0);
arg0->unk24 = 900;
arg0->unk32 = MGSeqCreate(1, arg0->unk24 / 60, -1, -1);
for (i = 0; i < 2; i++) {
fn_1_43CC(lbl_1_bss_98[i], 1);
lbl_1_bss_98[i]->unk04 = 1;
}
arg0->unk1C = 1;
/* fallthrough */
case 1:
temp_r26 = fn_1_1F9C(lbl_1_bss_10);
if (arg0->unk24 > 0 && temp_r26 > 0 && --arg0->unk24 % 60 == 0) {
MGSeqParamSet(arg0->unk32, 1, arg0->unk24 / 60);
}
if (arg0->unk24 > 0 && temp_r26 > 0) {
break;
}
arg0->unk1C = 2;
/* fallthrough */
case 2:
for (i = 0; i < 2; i++) {
lbl_1_bss_98[i]->unk04 = 0;
fn_1_7A6C(lbl_1_bss_98[i]);
}
arg0->unk1C = 3;
break;
case 3:
if (arg0->unk32 != -1) {
MGSeqParamSet(arg0->unk32, 2, -1);
arg0->unk32 = -1;
}
for (i = 0; i < 2; i++) {
if (lbl_1_bss_98[i]->unk24 != 1 && lbl_1_bss_98[i]->unk24 != 0) {
return;
}
}
for (i = 0; i < 5; i++) {
if (lbl_1_bss_A4[i]->unk04 != 0 && lbl_1_bss_A4[i]->unk04 != 2) {
return;
}
}
arg0->unk1C = 4;
/* fallthrough */
case 4:
for (i = 0; i < 2; i++) {
if (lbl_1_bss_98[i]->unk14 != 0) {
fn_1_1AFC(arg0, i, lbl_1_bss_98[i]->unk1B - 1);
}
}
arg0->unk2C++;
for (i = 0, var_r27 = 0; i < 2; i++) {
if (lbl_1_bss_98[i]->unk1B > var_r27) {
var_r27 = lbl_1_bss_98[i]->unk1B;
}
}
if (var_r27 >= 3 || arg0->unk2C >= 5) {
fn_1_4A0(lbl_1_bss_8, 4);
} else {
fn_1_4A0(lbl_1_bss_8, 3);
}
break;
}
}
void fn_1_F34(UnkM447Struct_00* arg0) {
s32 i;
switch (arg0->unk1C) {
case 0:
for (i = 0; i < 2; i++) {
fn_1_43CC(lbl_1_bss_98[i], 6);
}
arg0->unk1C = 1;
/* fallthrough */
case 1:
for (i = 0; i < 5; i++) {
if (lbl_1_bss_A4[i]->unk04 != 0) {
fn_1_8FF4(lbl_1_bss_A4[i], 4);
}
}
arg0->unk20 = 0;
arg0->unk1C = 2;
/* fallthrough */
case 2:
if (arg0->unk20++ < 160) {
break;
}
arg0->unk1C = 3;
/* fallthrough */
case 3:
fn_1_4A0(lbl_1_bss_8, 1);
break;
}
}
const Vec lbl_1_rodata_D8 = { 0.0f, 150.0f, 0.0f };
const Vec lbl_1_rodata_E4 = { 6.0f, 0.0f, 0.0f };
void fn_1_1068(UnkM447Struct_00* arg0) {
s32 temp_r29;
s32 temp_r28;
s32 i;
switch (arg0->unk1C) {
case 0:
for (i = 0; i < 5; i++) {
if (lbl_1_bss_A4[i]->unk04 != 0) {
fn_1_8FF4(lbl_1_bss_A4[i], 4);
}
}
arg0->unk1C = 1;
/* fallthrough */
case 1:
// Bug: HuAudSeqFadeOut takes two arguments.
HuAudSeqFadeOut(arg0->unk70);
arg0->unk30 = MGSeqCreate(3, 1);
arg0->unk1C = 2;
/* fallthrough */
case 2:
if (MGSeqStatGet(arg0->unk30) != 0) {
break;
}
arg0->unk1C = 3;
/* fallthrough */
case 3:
for (i = 0; i < 2; i++) {
fn_1_43CC(lbl_1_bss_98[i], 7);
}
fn_1_330C(&lbl_1_rodata_D8, 180);
fn_1_3484(300.0f, 180);
fn_1_33C8(&lbl_1_rodata_E4, 180);
arg0->unk20 = 0;
arg0->unk1C = 4;
/* fallthrough */
case 4:
if (arg0->unk20++ < 180) {
break;
}
arg0->unk1C = 5;
/* fallthrough */
case 5:
temp_r29 = lbl_1_bss_98[0]->unk1B;
temp_r28 = lbl_1_bss_98[1]->unk1B;
if (lbl_1_bss_98[1]->unk18 != 8 && temp_r29 == temp_r28) {
fn_1_43CC(lbl_1_bss_98[0], 10);
fn_1_43CC(lbl_1_bss_98[1], 10);
HuAudSStreamPlay(4);
} else if (temp_r29 > temp_r28) {
fn_1_43CC(lbl_1_bss_98[0], 9);
fn_1_43CC(lbl_1_bss_98[1], 10);
GWPlayerCoinWinAdd(0, 10);
HuAudSStreamPlay(1);
} else {
fn_1_43CC(lbl_1_bss_98[0], 10);
fn_1_43CC(lbl_1_bss_98[1], 9);
GWPlayerCoinWinAdd(1, 10);
if (lbl_1_bss_98[1]->unk18 == 8) {
HuAudSStreamPlay(3);
} else {
HuAudSStreamPlay(1);
}
}
arg0->unk20 = 0;
arg0->unk1C = 6;
/* fallthrough */
case 6:
if (arg0->unk20++ < 210) {
break;
}
arg0->unk1C = 7;
/* fallthrough */
case 7:
omSysExitReq = 1;
arg0->unk08 = 1;
break;
}
}
void fn_1_1394(UnkM447Struct_00* arg0, s16 arg1, s32 arg2) {
HuWinComKeyReset();
if (arg0->unk18 == 2) {
HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, arg2);
}
winData[arg1].active_pad = 1;
HuWinMesWait(arg1);
}
s32 fn_1_141C(UnkM447Struct_00* arg0, s16 arg1, s32 arg2, s32 arg3, s32 arg4) {
if (arg0->unk18 == 2) {
HuPrcSleep(arg4);
return arg3;
}
return HuWinChoiceGet(arg1, arg2);
}
const s32 lbl_1_rodata_F4[] = {
MAKE_MESSID(42, 3),
MAKE_MESSID(42, 4),
MAKE_MESSID(42, 5),
MAKE_MESSID(42, 6),
MAKE_MESSID(42, 7),
0
};
void fn_1_1484(void) {
UnkM447Struct_00* temp_r30;
s16 temp_r3;
s16 var_r29;
s32 var_r28;
u32 temp_r26;
temp_r30 = HuPrcCurrentGet()->user_data;
temp_r3 = HuWinExCreateStyled(-10000.0f, 40.0f, 280, 120, -1, 1);
HuWinExAnimIn(temp_r3);
HuWinBGTPLvlSet(temp_r3, 0.8f);
HuWinMesSpeedSet(temp_r3, 1);
HuWinMesColSet(temp_r3, 0);
HuWinMesSet(temp_r3, MAKE_MESSID(42, 1));
fn_1_1394(temp_r30, temp_r3, 60);
if (temp_r30->unk18 < 2) {
HuWinMesColSet(temp_r3, 0);
HuWinMesSet(temp_r3, MAKE_MESSID(42, 2));
var_r29 = fn_1_141C(temp_r30, temp_r3, 0, 1, 60);
} else {
var_r29 = 1;
}
if (var_r29 == 0) {
var_r28 = 0;
while ((temp_r26 = lbl_1_rodata_F4[var_r28++]) != 0) {
HuWinMesColSet(temp_r3, 0);
HuWinMesSet(temp_r3, temp_r26);
fn_1_1394(temp_r30, temp_r3, 60);
}
HuWinMesColSet(temp_r3, 0);
HuWinMesSet(temp_r3, MAKE_MESSID(42, 8));
fn_1_1394(temp_r30, temp_r3, 60);
} else {
HuWinMesColSet(temp_r3, 0);
HuWinMesSet(temp_r3, MAKE_MESSID(42, 9));
fn_1_1394(temp_r30, temp_r3, 60);
}
HuWinExAnimOut(temp_r3);
HuWinExCleanup(temp_r3);
temp_r30->unk0C = 0;
HuPrcEnd();
while (TRUE) {
HuPrcVSleep();
}
}
void fn_1_1754(UnkM447Struct_00* arg0) {
s32 i;
for (i = 0; i < 25; i++) {
arg0->unk34[i] = espEntry(lbl_1_rodata_10[i], 0, 0);
espDispOff(arg0->unk34[i]);
espPriSet(arg0->unk34[i], 100);
}
espPriSet(arg0->unk34[7], 99);
espPriSet(arg0->unk34[8], 99);
espPriSet(arg0->unk34[9], 99);
espPriSet(arg0->unk34[13], 99);
espPriSet(arg0->unk34[14], 99);
espPriSet(arg0->unk34[15], 99);
}
void fn_1_1830(UnkM447Struct_00* arg0) {
s32 i;
for (i = 0; i < 25; i++) {
espKill(arg0->unk34[i]);
}
}
void fn_1_1884(UnkM447Struct_00* arg0) {
s16 temp_r28;
s32 sp8;
s32 i;
s32 j;
espDispOn(arg0->unk34[0]);
espPosSet(arg0->unk34[0], 96.0f, 64.0f);
espDispOn(arg0->unk34[2]);
espPosSet(arg0->unk34[2], 96.0f, 63.0f);
espTPLvlSet(arg0->unk34[2], 0.5f);
espColorSet(arg0->unk34[2], 0, 0, 0);
espDispOn(arg0->unk34[1]);
espPosSet(arg0->unk34[1], 480.0f, 64.0f);
espDispOn(arg0->unk34[3]);
espPosSet(arg0->unk34[3], 480.0f, 63.0f);
espTPLvlSet(arg0->unk34[3], 0.5f);
espColorSet(arg0->unk34[3], 0, 0, 0);
for (i = 0; i < 2; i++) {
temp_r28 = lbl_1_bss_98[i]->unk18 + 16;
espDispOn(arg0->unk34[temp_r28]);
espPosSet(arg0->unk34[temp_r28], i * 384 + 46, 63.0f);
}
for (j = 0; j < 2; j++) {
sp8 = lbl_1_bss_98[j]->unk1B;
for (i = 0; i < 3; i++) {
temp_r28 = i + 4 + j * 6;
espDispOn(arg0->unk34[temp_r28]);
espPosSet(arg0->unk34[temp_r28], j * 384 + 80 + i * 32, 63.0f);
}
}
}
void fn_1_1AFC(UnkM447Struct_00* arg0, s32 arg1, s32 arg2) {
UnkM447Struct_03* temp_r3;
Process* var_r30;
temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r3), MEMORY_DEFAULT_NUM);
temp_r3->unk00 = arg0->unk34[arg2 + 7 + arg1 * 6];
espPosSet(temp_r3->unk00, arg1 * 384 + 80 + arg2 * 32, 63.0f);
temp_r3->unk04 = 0.0f;
temp_r3->unk08 = 0.05f;
var_r30 = HuPrcChildCreate(fn_1_1BF8, 100, 0x1000, 0, lbl_1_bss_4);
var_r30->user_data = temp_r3;
}
void fn_1_1BF8(void) {
float temp_f31;
UnkM447Struct_03* temp_r31;
temp_r31 = HuPrcCurrentGet()->user_data;
espDispOn(temp_r31->unk00);
while (TRUE) {
if ((temp_r31->unk04 += temp_r31->unk08) > 1.0f) {
temp_r31->unk04 = 1.0f;
break;
}
temp_f31 = 1.0f + 1.5f * (1.0f - temp_r31->unk04);
espScaleSet(temp_r31->unk00, temp_f31, temp_f31);
HuPrcVSleep();
}
espScaleSet(temp_r31->unk00, 1.0f, 1.0f);
HuAudFXPlay(9);
HuMemDirectFree(temp_r31);
HuPrcEnd();
while (TRUE) {
HuPrcVSleep();
}
}
void fn_1_1CE0(UnkM447Struct_00* arg0) {
s32 i;
for (i = 0; i <= 25; i++) {
espDispOff(arg0->unk34[i]);
}
}
void fn_1_1D34(UnkM447Struct_00* arg0) {
s32 i;
arg0->unk18 = 0;
for (i = 0; i < 2; i++) {
if (lbl_1_bss_98[i]->unk08 != 0) {
arg0->unk18++;
}
}
}

1107
src/REL/m447dll/player.c Executable file

File diff suppressed because it is too large Load diff

199
src/REL/m447dll/player_col.c Executable file
View file

@ -0,0 +1,199 @@
#include "REL/m447dll.h"
#include "ext_math.h"
float fn_1_7D94(float* arg0, float* arg1);
void fn_1_7F64(float* arg0, float arg1, float* arg2, float* arg3);
s32 fn_1_89BC(float* arg0, float* arg1);
void fn_1_7B54(Vec* arg0, Vec* arg1, s32 arg2, float arg3) {
float temp_f29;
float var_f30;
float var_f31;
s32 temp_r29;
s32 var_r30;
s32 i;
temp_r29 = arg2 - 1;
arg0->x = 0.0f;
arg0->y = 0.0f;
arg0->z = 0.0f;
arg3 = (arg2 + 1) * arg3 - 1.0f;
for (i = -2; i <= temp_r29 + 2; i++) {
var_r30 = i;
if (i < 0) {
var_r30 = 0;
}
if (i > temp_r29) {
var_r30 = temp_r29;
}
var_f31 = arg3 - i;
if (var_f31 < 0.0f) {
var_f31 = -var_f31;
}
if (var_f31 < 1.0f) {
var_f30 = (3.0f * var_f31 * var_f31 * var_f31 - 6.0f * var_f31 * var_f31 + 4.0f) / 6.0f;
} else if (var_f31 < 2.0f) {
temp_f29 = var_f31 - 2.0f;
var_f30 = -temp_f29 * temp_f29 * temp_f29 / 6.0f;
} else {
var_f30 = 0.0f;
}
arg0->x += var_f30 * arg1[var_r30].x;
arg0->y += var_f30 * arg1[var_r30].y;
arg0->z += var_f30 * arg1[var_r30].z;
}
}
float fn_1_7D94(float* arg0, float* arg1) {
float var_f30;
float var_f31;
float temp_f29;
float var_f28;
s32 var_r31;
var_f30 = arg1[0] - arg0[0];
var_f31 = arg1[1] - arg0[1];
if (var_f30 >= 0.0f) {
if (var_f31 >= 0.0f) {
var_r31 = 0;
} else {
var_r31 = 3;
temp_f29 = var_f30;
var_f30 = -var_f31;
var_f31 = temp_f29;
}
} else {
if (var_f31 >= 0.0f) {
var_r31 = 1;
temp_f29 = var_f30;
var_f30 = var_f31;
var_f31 = -temp_f29;
} else {
var_r31 = 2;
var_f30 = -var_f30;
var_f31 = -var_f31;
}
}
if (var_f31 > var_f30) {
var_f28 = M_PI / 2 - atan2d(var_f30, var_f31);
} else {
var_f28 = atan2d(var_f31, var_f30);
}
return var_f28 + (M_PI / 2) * var_r31;
}
void fn_1_7F64(float* arg0, float arg1, float* arg2, float* arg3) {
float temp_f31;
float temp_f30;
float temp_f29;
float temp_f28;
// 57.29578 = 180 / M_PI (1 rad in degrees)
temp_f31 = cosd(-(57.29578f * arg1));
temp_f30 = sind(-(57.29578f * arg1));
temp_f29 = arg2[0] - arg0[0];
temp_f28 = arg2[1] - arg0[1];
arg3[0] = temp_f29 * temp_f31 + temp_f28 * temp_f30 + arg0[0];
arg3[1] = -temp_f29 * temp_f30 + temp_f28 * temp_f31 + arg0[1];
}
s32 fn_1_80BC(float* arg0, float* arg1, float* arg2) {
float sp40[2];
float sp38[2];
float sp30[2];
float sp2C;
float var_f26;
sp40[0] = 0.0f;
sp40[1] = 0.0f;
sp38[0] = arg0[0] - arg1[0];
sp38[1] = arg0[1] - arg1[1];
sp2C = fn_1_7D94(arg1, &arg1[2]);
fn_1_7F64(sp40, -sp2C, sp38, sp30);
if (ABS(sp30[1]) > arg0[2]) {
return 0;
}
var_f26 = sqrtf(arg0[2] * arg0[2] - sp30[1] * sp30[1]);
sp38[0] = arg0[0] + var_f26;
sp38[1] = arg0[1] - sp30[1];
fn_1_7F64(arg0, sp2C, sp38, arg2);
if (var_f26 == 0.0f) {
return 1;
}
sp38[0] = arg0[0] - var_f26;
sp38[1] = arg0[1] - sp30[1];
fn_1_7F64(arg0, sp2C, sp38, &arg2[2]);
return 2;
}
s32 fn_1_879C(float* arg0, float* arg1, s32 arg2, s32 arg3) {
float spC[2];
float var_f28;
spC[0] = arg0[0] - arg1[0];
spC[1] = arg0[1] - arg1[1];
var_f28 = sqrtf(spC[0] * spC[0] + spC[1] * spC[1]);
if (var_f28 < arg0[2] + arg1[2]) {
if (var_f28 == 0.0f) {
spC[0] = 0.0f;
spC[1] = -1.0f;
} else {
spC[0] /= var_f28;
spC[1] /= var_f28;
if (arg3 != 0) {
arg1[0] -= spC[0];
arg1[1] -= spC[1];
}
}
if (arg2 != 0) {
arg0[0] = arg1[0] + spC[0] * (arg0[2] + arg1[2]);
arg0[1] = arg1[1] + spC[1] * (arg0[2] + arg1[2]);
}
return 1;
}
return 0;
}
s32 fn_1_89BC(float* arg0, float* arg1) {
float temp_f30;
float temp_f29;
float temp_f28;
float temp_f26;
float temp_f27;
float temp_f24;
temp_f26 = arg0[2] * arg0[2] - 2.0f * arg0[0] * arg0[2] + arg0[0] * arg0[0] + arg0[3] * arg0[3] - 2.0f * arg0[1] * arg0[3] + arg0[1] * arg0[1];
temp_f27 = 2.0f * (arg0[0] * arg0[2] - arg0[2] * arg1[0] + arg0[0] * arg0[0] + arg0[1] * arg0[3] - arg0[3] * arg1[1] + arg0[1] * arg0[1]);
temp_f24 = arg0[0] * arg0[0] - 2.0f * arg0[0] * arg1[0] + arg1[0] * arg1[0] + arg0[1] * arg0[1] - 2.0f * arg0[1] * arg1[1] + arg1[1] * arg1[1] - arg1[2] * arg1[2];
if (temp_f26 == 0.0f) {
if (temp_f27 != 0.0f) {
return 1;
} else {
return 0;
}
}
temp_f30 = temp_f27 * temp_f27 - 4.0f * temp_f26 * temp_f24;
if (temp_f30 < 0.0f) {
return 0;
}
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 1;
}
if (temp_f28 >= 0.0f && temp_f28 < 1.0f) {
return 1;
}
} else {
if (temp_f28 >= 0.0f && temp_f28 < 1.0f) {
return 1;
}
if (temp_f29 >= 0.0f && temp_f29 < 1.0f) {
return 1;
}
}
return 0;
}

471
src/REL/m447dll/stage.c Executable file
View file

@ -0,0 +1,471 @@
#include "REL/m447dll.h"
#include "game/audio.h"
#include "game/data.h"
#include "game/hsfanim.h"
#include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/memory.h"
#include "game/process.h"
#include "game/sprite.h"
#include "ext_math.h"
typedef struct {
/* 0x00 */ Vec unk00;
/* 0x0C */ Vec unk0C;
/* 0x18 */ GXColor unk18;
} UnkM447Struct_07; // Size 0x1C
void fn_1_1FF4(void);
void fn_1_2164(UnkM447Struct_06* arg0);
void fn_1_231C(UnkM447Struct_06* arg0);
void fn_1_236C(UnkM447Struct_06* arg0);
void fn_1_2490(UnkM447Struct_06* arg0);
void fn_1_2494(UnkM447Struct_06* arg0);
void fn_1_25E4(UnkM447Struct_06* arg0);
void fn_1_2700(UnkM447Struct_06* arg0);
void fn_1_2A3C(UnkM447Struct_06* arg0);
void fn_1_2D08(UnkM447Struct_06* arg0);
void fn_1_2DAC(ModelData* model, ParticleData* particle, Mtx matrix);
const s32 lbl_1_rodata_138[] = {
DATA_MAKE_NUM(DATADIR_M447, 0),
DATA_MAKE_NUM(DATADIR_M447, 2),
DATA_MAKE_NUM(DATADIR_M447, 3),
DATA_MAKE_NUM(DATADIR_M447, 1),
DATA_MAKE_NUM(DATADIR_M447, 1),
DATA_MAKE_NUM(DATADIR_M447, 1),
DATA_MAKE_NUM(DATADIR_M447, 1),
DATA_MAKE_NUM(DATADIR_M447, 1),
DATA_MAKE_NUM(DATADIR_M447, 24),
DATA_MAKE_NUM(DATADIR_M447, 24),
DATA_MAKE_NUM(DATADIR_M447, 24),
DATA_MAKE_NUM(DATADIR_M447, 24),
DATA_MAKE_NUM(DATADIR_M447, 24),
DATA_MAKE_NUM(DATADIR_M447, 25),
DATA_MAKE_NUM(DATADIR_M447, 26),
DATA_MAKE_NUM(DATADIR_M447, 28),
DATA_MAKE_NUM(DATADIR_M447, 29),
DATA_MAKE_NUM(DATADIR_M447, 29),
DATA_MAKE_NUM(DATADIR_M447, 29),
DATA_MAKE_NUM(DATADIR_M447, 29),
DATA_MAKE_NUM(DATADIR_M447, 29),
0
};
const Vec lbl_1_rodata_190[] = {
{ 0.0f, 0.1f, 0.0f },
{ 400.0f, 0.1f, 0.0f },
{ -400.0f, 0.1f, 0.0f },
{ 200.0f, 0.1f, -400.0f },
{ -200.0f, 0.1f, -400.0f }
};
UnkM447Struct_07 lbl_1_data_A0[] = {
{ { 0.0f, 2500.0f, 0.0f }, { 0.0f, -0.5f, 0.0f }, { 0xFF, 0xFF, 0xFF, 0xFF } },
{ { 0.0f, -100.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, { 0xFF, 0xFF, 0xFF, 0xFF } },
{ { 400.0f, -100.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, { 0xFF, 0xFF, 0xFF, 0xFF } },
{ { -400.0f, -100.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, { 0xFF, 0xFF, 0xFF, 0xFF } },
{ { 200.0f, -100.0f, -400.0f }, { 0.0f, 1.0f, 0.0f }, { 0xFF, 0xFF, 0xFF, 0xFF } },
{ { -200.0f, -100.0f, -400.0f }, { 0.0f, 1.0f, 0.0f }, { 0xFF, 0xFF, 0xFF, 0xFF } }
};
UnkM447Struct_06* fn_1_1D90(void) {
UnkM447Struct_06* temp_r3;
s32 i;
temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(*temp_r3), MEMORY_DEFAULT_NUM);
if (!temp_r3) {
return NULL;
}
temp_r3->unk38 = 0;
temp_r3->unk50 = NULL;
temp_r3->unk44 = 0;
for (i = 0; i < 5; i++) {
temp_r3->unk54[i] = 0;
temp_r3->unk68[i] = 0;
}
fn_1_2164(temp_r3);
fn_1_236C(temp_r3);
temp_r3->unk7C = HuPrcChildCreate(fn_1_1FF4, 0x65, 0x3000, 0, lbl_1_bss_4);
temp_r3->unk7C->user_data = temp_r3;
return temp_r3;
}
void fn_1_1E70(UnkM447Struct_06* arg0) {
fn_1_231C(arg0);
HuPrcKill(arg0->unk7C);
HuMemDirectFree(arg0);
}
void fn_1_1EB0(UnkM447Struct_06* arg0, s32 arg1) {
arg0->unk38 = arg1;
arg0->unk3C = 0;
}
BOOL fn_1_1EC0(UnkM447Struct_06* arg0) {
return arg0->unk38 != 0;
}
void fn_1_1ED4(s32 arg0, Vec* arg1) {
*arg1 = lbl_1_rodata_190[arg0];
}
void fn_1_1F00(UnkM447Struct_06* arg0, s32 arg1) {
s16 temp_r31;
temp_r31 = arg0->unk00[arg1 + 3];
Hu3DModelAttrReset(temp_r31, 0x40000002);
Hu3DMotionTimeSet(temp_r31, 0.0f);
Hu3DMotionStartEndSet(temp_r31, 0.0f, 40.0f);
arg0->unk54[arg1] = 1;
}
s32 fn_1_1F9C(UnkM447Struct_06* arg0) {
s32 var_r30;
s32 i;
var_r30 = 0;
for (i = 0; i < 5; i++) {
if (arg0->unk54[i] == 0) {
var_r30++;
}
}
return var_r30;
}
void fn_1_1FEC(UnkM447Struct_06* arg0, s32 arg1) {
arg0->unk44 = arg1;
}
void (*lbl_1_data_148[])(UnkM447Struct_06*) = {
fn_1_2490,
fn_1_2494,
fn_1_25E4,
fn_1_2700,
fn_1_2A3C,
NULL // padding?
};
void fn_1_1FF4(void) {
Vec sp8;
UnkM447Struct_06* temp_r31;
s16 temp_r29;
s32 i;
temp_r31 = HuPrcCurrentGet()->user_data;
while (TRUE) {
if (lbl_1_data_148[temp_r31->unk38]) {
lbl_1_data_148[temp_r31->unk38](temp_r31);
}
for (i = 0; i < 5; i++) {
temp_r29 = temp_r31->unk00[i + 3];
if (Hu3DMotionEndCheck(temp_r29)) {
Hu3DMotionStartEndSet(temp_r29, 20.0f, 40.0f);
Hu3DModelAttrSet(temp_r29, 0x40000001);
}
}
if (temp_r31->unk44 > 0) {
fn_1_351C(&sp8);
if (--temp_r31->unk44 == 0) {
sp8.y = 300.0f;
} else {
sp8.y = fn_1_A240() % 20 - 10 + 300.0f;
}
fn_1_3540(&sp8);
}
HuPrcVSleep();
}
}
void fn_1_2164(UnkM447Struct_06* arg0) {
s32 i;
for (i = 0; i <= 20; i++) {
arg0->unk00[i] = Hu3DModelCreateFile(lbl_1_rodata_138[i]);
Hu3DModelLayerSet(arg0->unk00[i], 0);
}
arg0->unk50 = HuSprAnimReadFile(DATA_MAKE_NUM(DATADIR_M447, 57));
arg0->unk00[21] = Hu3DParticleCreate(arg0->unk50, 64);
Hu3DParticleHookSet(arg0->unk00[21], fn_1_2DAC);
Hu3DParticleBlendModeSet(arg0->unk00[21], 1);
Hu3DModelLayerSet(arg0->unk00[21], 0);
Hu3DModelAttrSet(arg0->unk00[21], 1);
Hu3DModelShadowMapSet(arg0->unk00[2]);
for (i = 0; i < 5; i++) {
Hu3DModelPosSet(arg0->unk00[i + 3], lbl_1_rodata_190[i].x, lbl_1_rodata_190[i].y, lbl_1_rodata_190[i].z);
Hu3DModelAttrSet(arg0->unk00[i + 3], 0x40000002);
Hu3DModelShadowMapSet(arg0->unk00[i + 3]);
}
for (i = 8; i <= 15; i++) {
Hu3DModelAttrSet(arg0->unk00[i], 1);
}
for (i = 16; i <= 20; i++) {
Hu3DModelAttrSet(arg0->unk00[i], 1);
}
}
void fn_1_231C(UnkM447Struct_06* arg0) {
s32 i;
for (i = 0; i < 22; i++) {
Hu3DModelKill(arg0->unk00[i]);
}
}
void fn_1_236C(UnkM447Struct_06* arg0) {
s32 i;
Hu3DLighInit();
for (i = 0; i < 6; i++) {
arg0->unk2C[i] = Hu3DGLightCreateV(&lbl_1_data_A0[i].unk00, &lbl_1_data_A0[i].unk0C, &lbl_1_data_A0[i].unk18);
switch (i) {
case 0:
Hu3DGLightInfinitytSet(arg0->unk2C[i]);
Hu3DGLightStaticSet(arg0->unk2C[i], 1);
break;
case 1:
case 2:
case 3:
case 4:
case 5:
Hu3DGLightStaticSet(arg0->unk2C[i], 1);
Hu3DGLightSpotSet(arg0->unk2C[i], 20.0f, 2);
Hu3DGLightColorSet(arg0->unk2C[i], 0, 0, 0, 0);
break;
}
}
}
void fn_1_2490(UnkM447Struct_06* arg0) {
}
void fn_1_2494(UnkM447Struct_06* arg0) {
s32 i;
switch (arg0->unk3C) {
case 0:
arg0->unk3C = 1;
break;
case 1:
Hu3DModelPosSet(arg0->unk00[14], 0.0f, 0.0f, 0.0f);
Hu3DMotionTimeSet(arg0->unk00[14], 0.0f);
Hu3DModelAttrReset(arg0->unk00[14], 1);
Hu3DModelAttrSet(arg0->unk00[14], 0x40000001);
arg0->unk40 = 0;
arg0->unk3C = 2;
HuAudFXPlay(0x77E);
for (i = 0; i < 2; i++) {
fn_1_7AA4(lbl_1_bss_98[i], 0, 0x3C);
}
break;
case 2:
if (arg0->unk40++ >= 60) {
arg0->unk3C = 3;
}
break;
case 3:
Hu3DModelAttrSet(arg0->unk00[14], 1);
arg0->unk38 = 0;
arg0->unk3C = 0;
break;
}
}
void fn_1_25E4(UnkM447Struct_06* arg0) {
switch (arg0->unk3C) {
case 0:
arg0->unk3C = 1;
break;
case 1:
fn_1_2D08(arg0);
Hu3DModelPosSet(arg0->unk00[15], 0.0f, 0.0f, 0.0f);
Hu3DMotionTimeSet(arg0->unk00[15], 0.0f);
Hu3DModelAttrReset(arg0->unk00[15], 1);
Hu3DModelAttrSet(arg0->unk00[15], 0x40000001);
arg0->unk40 = 0;
arg0->unk3C = 2;
HuAudFXPlay(0x782);
break;
case 2:
if (arg0->unk40++ >= 60) {
arg0->unk3C = 3;
}
break;
case 3:
Hu3DModelAttrSet(arg0->unk00[15], 1);
arg0->unk38 = 0;
arg0->unk3C = 0;
break;
}
}
void fn_1_2700(UnkM447Struct_06* arg0) {
float temp_f31;
s16 temp_r29;
s32 i;
switch (arg0->unk3C) {
case 0:
arg0->unk48 = 0.0f;
arg0->unk4C = 0.011111111f;
arg0->unk3C = 1;
HuAudFXPlay(0x77F);
break;
case 1:
temp_f31 = -90.0f * arg0->unk48;
for (i = 0; i < 5; i++) {
Hu3DModelPosSet(arg0->unk00[i + 3], lbl_1_rodata_190[i].x, temp_f31, lbl_1_rodata_190[i].z);
}
arg0->unk48 += arg0->unk4C;
if (arg0->unk48 < 1.0f) {
break;
}
for (i = 0; i < 5; i++) {
Hu3DMotionTimeSet(arg0->unk00[i + 3], 0.0f);
Hu3DModelAttrSet(arg0->unk00[i + 3], 0x40000002);
arg0->unk54[i] = 0;
arg0->unk68[i] = 0;
}
arg0->unk3C = 2;
break;
case 2:
for (i = 0; i < 5; i++) {
temp_r29 = arg0->unk00[i + 8];
Hu3DModelPosSet(temp_r29, lbl_1_rodata_190[i].x, lbl_1_rodata_190[i].y, lbl_1_rodata_190[i].z);
Hu3DMotionTimeSet(temp_r29, 0.0f);
Hu3DModelAttrReset(temp_r29, 1);
Hu3DGLightColorSet(arg0->unk2C[i + 1], lbl_1_data_A0[i + 1].unk18.r, lbl_1_data_A0[i + 1].unk18.g, lbl_1_data_A0[i + 1].unk18.b, lbl_1_data_A0[i + 1].unk18.a);
}
arg0->unk40 = 0;
arg0->unk3C = 3;
HuAudFXPlay(0x780);
break;
case 3:
if (arg0->unk40++ >= 60) {
for (i = 0; i < 5; i++) {
Hu3DModelAttrSet(arg0->unk00[i + 8], 1);
Hu3DGLightColorSet(arg0->unk2C[i + 1], 0, 0, 0, 0);
}
arg0->unk3C = 4;
}
break;
case 4:
arg0->unk38 = 0;
arg0->unk3C = 0;
break;
}
}
void fn_1_2A3C(UnkM447Struct_06* arg0) {
float temp_f31;
s16 temp_r29;
s32 i;
switch (arg0->unk3C) {
case 0:
arg0->unk48 = 0.0f;
arg0->unk4C = 0.033333335f;
arg0->unk3C = 1;
HuAudFXPlay(0x77F);
break;
case 1:
temp_f31 = 90.0f * arg0->unk48 + -90.0f + 0.1f;
for (i = 0; i < 5; i++) {
Hu3DModelPosSet(arg0->unk00[i + 3], lbl_1_rodata_190[i].x, temp_f31, lbl_1_rodata_190[i].z);
}
arg0->unk48 += arg0->unk4C;
if (arg0->unk48 < 1.0f) {
break;
}
for (i = 0; i < 5; i++) {
Hu3DModelPosSet(arg0->unk00[i + 3], lbl_1_rodata_190[i].x, lbl_1_rodata_190[i].y, lbl_1_rodata_190[i].z);
}
HuAudFXPlay(0x783);
arg0->unk3C = 2;
break;
case 2:
for (i = 0; i < 5; i++) {
temp_r29 = arg0->unk00[i + 16];
Hu3DModelPosSet(temp_r29, lbl_1_rodata_190[i].x, lbl_1_rodata_190[i].y, lbl_1_rodata_190[i].z);
Hu3DMotionTimeSet(temp_r29, 0.0f);
Hu3DModelAttrReset(temp_r29, 0x40000001);
Hu3DModelAttrReset(temp_r29, 1);
}
arg0->unk40 = 0;
arg0->unk3C = 3;
break;
case 3:
if (arg0->unk40++ >= 20) {
for (i = 0; i < 5; i++) {
Hu3DModelAttrSet(arg0->unk00[i + 16], 1);
}
arg0->unk3C = 4;
break;
}
break;
case 4:
arg0->unk38 = 0;
arg0->unk3C = 0;
break;
}
}
void fn_1_2D08(UnkM447Struct_06* arg0) {
ModelData* temp_r30;
ParticleData* temp_r31;
temp_r30 = &Hu3DData[arg0->unk00[21]];
temp_r31 = temp_r30->unk_120;
temp_r30->attr &= ~1;
temp_r31->unk_00 = 0;
temp_r31->unk_02 = 1;
temp_r31->unk_04.x = 0.0f;
temp_r31->unk_04.y = 350.0f;
temp_r31->unk_04.z = -700.0f;
HuAudFXPlay(0x780);
}
void fn_1_2DAC(ModelData* model, ParticleData* particle, Mtx matrix) {
GXColor sp8 = { 0xFF, 0xFF, 0xFF, 0xFF };
HsfanimStruct01* var_r31;
s32 i;
if (particle->unk_02 == 0) {
return;
}
if (particle->unk_00 == 0) {
particle->unk_00 = 1;
particle->unk_04.z = 0.0f;
particle->unk_10.z = 0.016666668f;
for (i = 0, var_r31 = particle->unk_48; i < particle->unk_30; i++, var_r31++) {
var_r31->unk00 = 0;
var_r31->unk2C = 20.0f;
var_r31->unk40.r = sp8.r;
var_r31->unk40.g = sp8.g;
var_r31->unk40.b = sp8.b;
var_r31->unk40.a = sp8.a;
var_r31->unk34.x = particle->unk_04.x;
var_r31->unk34.y = particle->unk_04.y;
var_r31->unk34.z = particle->unk_04.z;
var_r31->unk08.x = -8.0f + 0.1f * (fn_1_A240() % 160);
var_r31->unk08.y = -8.0f + 0.1f * (fn_1_A240() % 160);
var_r31->unk08.z = 0.0f;
}
}
for (i = 0, var_r31 = particle->unk_48; i < particle->unk_30; i++, var_r31++) {
if (var_r31->unk00_s16 < 0) {
continue;
}
var_r31->unk34.x += var_r31->unk08.x;
var_r31->unk34.y += var_r31->unk08.y;
var_r31->unk34.z = -700.0 + 500.0 * sind(90.0f * particle->unk_04.z);
var_r31->unk40.a = 255.0f * (1.0f - particle->unk_04.z);
var_r31->unk2C = 20.0f + fn_1_A240() % 30;
}
particle->unk_04.z += particle->unk_10.z;
if (particle->unk_04.z >= 1.0f) {
model->attr |= 1;
particle->unk_02 = 0;
}
}