diff --git a/config/GMPE01_00/rels/E3setupDLL/symbols.txt b/config/GMPE01_00/rels/E3setupDLL/symbols.txt index 67dc878c..da0474aa 100644 --- a/config/GMPE01_00/rels/E3setupDLL/symbols.txt +++ b/config/GMPE01_00/rels/E3setupDLL/symbols.txt @@ -9,7 +9,7 @@ UpdateMGInterface = .text:0x00001138; // type:function size:0x14 scope:local CreateMGInterface = .text:0x0000114C; // type:function size:0x1F0 scope:local _prolog = .text:0x0000133C; // type:function size:0x54 scope:global _epilog = .text:0x00001390; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000013DC; // type:function size:0x108 +ObjectSetup = .text:0x000013DC; // type:function size:0x108 E3MainInit = .text:0x000014E4; // type:function size:0x514 E3LightInit = .text:0x000019F8; // type:function size:0x1AC GetStickX = .text:0x00001BA4; // type:function size:0x7C scope:local diff --git a/config/GMPE01_00/rels/_minigameDll/symbols.txt b/config/GMPE01_00/rels/_minigameDll/symbols.txt index 177e5b44..f663bd3d 100644 --- a/config/GMPE01_00/rels/_minigameDll/symbols.txt +++ b/config/GMPE01_00/rels/_minigameDll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x2C +ObjectSetup = .text:0x000000A0; // type:function size:0x2C fn_1_CC = .text:0x000000CC; // type:function size:0x24 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte diff --git a/config/GMPE01_00/rels/bootDll/symbols.txt b/config/GMPE01_00/rels/bootDll/symbols.txt index a3607705..b576a34e 100644 --- a/config/GMPE01_00/rels/bootDll/symbols.txt +++ b/config/GMPE01_00/rels/bootDll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x1CC +ObjectSetup = .text:0x000000A0; // type:function size:0x1CC BootProc = .text:0x0000026C; // type:function size:0x78C scope:local UpdateDemoMess = .text:0x000009F8; // type:function size:0xC8 scope:local ProgressiveProc = .text:0x00000AC0; // type:function size:0x6B8 scope:local diff --git a/config/GMPE01_00/rels/instDll/symbols.txt b/config/GMPE01_00/rels/instDll/symbols.txt index c4ead039..0580b867 100644 --- a/config/GMPE01_00/rels/instDll/symbols.txt +++ b/config/GMPE01_00/rels/instDll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x8F4 +ObjectSetup = .text:0x000000A0; // type:function size:0x8F4 fn_1_994 = .text:0x00000994; // type:function size:0xE50 scope:local fn_1_17E4 = .text:0x000017E4; // type:function size:0xA28 scope:local fn_1_220C = .text:0x0000220C; // type:function size:0x5F8 scope:local diff --git a/config/GMPE01_00/rels/m401Dll/symbols.txt b/config/GMPE01_00/rels/m401Dll/symbols.txt index bdfc8937..610f18c6 100644 --- a/config/GMPE01_00/rels/m401Dll/symbols.txt +++ b/config/GMPE01_00/rels/m401Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x66C +ObjectSetup = .text:0x000000A0; // type:function size:0x66C fn_2_70C = .text:0x0000070C; // type:function size:0x304 fn_2_A10 = .text:0x00000A10; // type:function size:0x88 fn_2_A98 = .text:0x00000A98; // type:function size:0x54 diff --git a/config/GMPE01_00/rels/m402Dll/symbols.txt b/config/GMPE01_00/rels/m402Dll/symbols.txt index 7976e2db..e0a893f9 100644 --- a/config/GMPE01_00/rels/m402Dll/symbols.txt +++ b/config/GMPE01_00/rels/m402Dll/symbols.txt @@ -52,7 +52,7 @@ fn_1_7E84 = .text:0x00007E84; // type:function size:0x1C4 scope:local fn_1_8048 = .text:0x00008048; // type:function size:0x1D0 scope:local fn_1_8218 = .text:0x00008218; // type:function size:0xE40 scope:local fn_1_9058 = .text:0x00009058; // type:function size:0x1EC scope:local -ModuleProlog = .text:0x00009244; // type:function size:0x8B0 +ObjectSetup = .text:0x00009244; // type:function size:0x8B0 fn_1_9AF4 = .text:0x00009AF4; // type:function size:0xD0 scope:local _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte diff --git a/config/GMPE01_00/rels/m403Dll/symbols.txt b/config/GMPE01_00/rels/m403Dll/symbols.txt index d46cc4f0..0e674479 100644 --- a/config/GMPE01_00/rels/m403Dll/symbols.txt +++ b/config/GMPE01_00/rels/m403Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x384 +ObjectSetup = .text:0x000000A0; // type:function size:0x384 fn_1_424 = .text:0x00000424; // type:function size:0x20 scope:local fn_1_444 = .text:0x00000444; // type:function size:0x3E8 scope:local fn_1_82C = .text:0x0000082C; // type:function size:0x9E8 scope:local diff --git a/config/GMPE01_00/rels/m404Dll/symbols.txt b/config/GMPE01_00/rels/m404Dll/symbols.txt index 2f84190a..97dbc88d 100644 --- a/config/GMPE01_00/rels/m404Dll/symbols.txt +++ b/config/GMPE01_00/rels/m404Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x2DC +ObjectSetup = .text:0x000000A0; // type:function size:0x2DC fn_1_37C = .text:0x0000037C; // type:function size:0x10 fn_1_38C = .text:0x0000038C; // type:function size:0x10 fn_1_39C = .text:0x0000039C; // type:function size:0x64 diff --git a/config/GMPE01_00/rels/m405Dll/symbols.txt b/config/GMPE01_00/rels/m405Dll/symbols.txt index 9fbc2081..83fb1752 100644 --- a/config/GMPE01_00/rels/m405Dll/symbols.txt +++ b/config/GMPE01_00/rels/m405Dll/symbols.txt @@ -55,7 +55,7 @@ fn_1_81B4 = .text:0x000081B4; // type:function size:0x93C fn_1_8AF0 = .text:0x00008AF0; // type:function size:0x798 fn_1_9288 = .text:0x00009288; // type:function size:0x1A88 fn_1_AD10 = .text:0x0000AD10; // type:function size:0x3CC -ModuleProlog = .text:0x0000B0DC; // type:function size:0x4EC +ObjectSetup = .text:0x0000B0DC; // type:function size:0x4EC fn_1_B5C8 = .text:0x0000B5C8; // type:function size:0x16C _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte diff --git a/config/GMPE01_00/rels/m406Dll/symbols.txt b/config/GMPE01_00/rels/m406Dll/symbols.txt index 0676ffe9..ae6d271c 100644 --- a/config/GMPE01_00/rels/m406Dll/symbols.txt +++ b/config/GMPE01_00/rels/m406Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x318 +ObjectSetup = .text:0x000000A0; // type:function size:0x318 fn_1_3B8 = .text:0x000003B8; // type:function size:0x54 fn_1_40C = .text:0x0000040C; // type:function size:0xD00 fn_1_110C = .text:0x0000110C; // type:function size:0x5C @@ -372,23 +372,23 @@ lbl_1_data_8DC = .data:0x000008DC; // type:object size:0x4 lbl_1_data_8E0 = .data:0x000008E0; // type:object size:0x30 lbl_1_data_910 = .data:0x00000910; // type:object size:0x20 lbl_1_data_930 = .data:0x00000930; // type:object size:0x30 -lbl_1_data_960 = .data:0x00000960; // type:object size:0x348 -lbl_1_data_CA8 = .data:0x00000CA8; // type:object size:0x348 +lbl_1_data_960 = .data:0x00000960; // type:object size:0x348 data:float +lbl_1_data_CA8 = .data:0x00000CA8; // type:object size:0x348 data:float lbl_1_data_FF0 = .data:0x00000FF0; // type:object size:0x10 lbl_1_data_1000 = .data:0x00001000; // type:object size:0x19 data:string lbl_1_data_1019 = .data:0x00001019; // type:object size:0x19 data:string lbl_1_data_1032 = .data:0x00001032; // type:object size:0x1A data:string -lbl_1_data_104C = .data:0x0000104C; // type:object size:0x1C +lbl_1_data_104C = .data:0x0000104C; // type:object size:0x1C data:string lbl_1_data_1068 = .data:0x00001068; // type:object size:0x10 lbl_1_data_1078 = .data:0x00001078; // type:object size:0x28 -lbl_1_data_10A0 = .data:0x000010A0; // type:object size:0x80 +lbl_1_data_10A0 = .data:0x000010A0; // type:object size:0x80 data:4byte lbl_1_data_1120 = .data:0x00001120; // type:object size:0x20 lbl_1_data_1140 = .data:0x00001140; // type:object size:0x8 lbl_1_data_1148 = .data:0x00001148; // type:object size:0x1C data:string -lbl_1_data_1164 = .data:0x00001164; // type:object size:0x90 +lbl_1_data_1164 = .data:0x00001164; // type:object size:0x90 data:float lbl_1_data_11F4 = .data:0x000011F4; // type:object size:0x4 data:4byte -lbl_1_data_11F8 = .data:0x000011F8; // type:object size:0x20 -lbl_1_data_1218 = .data:0x00001218; // type:object size:0x18 +lbl_1_data_11F8 = .data:0x000011F8; // type:object size:0x20 data:float +lbl_1_data_1218 = .data:0x00001218; // type:object size:0x18 data:float lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte @@ -421,7 +421,8 @@ lbl_1_bss_C8 = .bss:0x000000C8; // type:object size:0x4 data:4byte lbl_1_bss_CC = .bss:0x000000CC; // type:object size:0x4 data:4byte lbl_1_bss_D0 = .bss:0x000000D0; // type:object size:0x4 data:4byte lbl_1_bss_D4 = .bss:0x000000D4; // type:object size:0x4 data:4byte -lbl_1_bss_D8 = .bss:0x000000D8; // type:object size:0x8 data:4byte +lbl_1_bss_D8 = .bss:0x000000D8; // type:object size:0x4 data:4byte +lbl_1_bss_DC = .bss:0x000000DC; // type:object size:0x4 data:4byte lbl_1_bss_E0 = .bss:0x000000E0; // type:object size:0x18 data:float lbl_1_bss_F8 = .bss:0x000000F8; // type:object size:0x8 data:4byte lbl_1_bss_100 = .bss:0x00000100; // type:object size:0x4 data:float diff --git a/config/GMPE01_00/rels/m407dll/symbols.txt b/config/GMPE01_00/rels/m407dll/symbols.txt index 09f20087..91eb10a7 100644 --- a/config/GMPE01_00/rels/m407dll/symbols.txt +++ b/config/GMPE01_00/rels/m407dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x54 +ObjectSetup = .text:0x000000A0; // type:function size:0x54 fn_1_F4 = .text:0x000000F4; // type:function size:0xA0 fn_1_194 = .text:0x00000194; // type:function size:0x50 fn_1_1E4 = .text:0x000001E4; // type:function size:0x54 diff --git a/config/GMPE01_00/rels/m408Dll/symbols.txt b/config/GMPE01_00/rels/m408Dll/symbols.txt index aeb6eba8..6423f8f8 100644 --- a/config/GMPE01_00/rels/m408Dll/symbols.txt +++ b/config/GMPE01_00/rels/m408Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x47C +ObjectSetup = .text:0x000000A0; // type:function size:0x47C fn_1_51C = .text:0x0000051C; // type:function size:0x50 fn_1_56C = .text:0x0000056C; // type:function size:0x438 fn_1_9A4 = .text:0x000009A4; // type:function size:0x4C diff --git a/config/GMPE01_00/rels/m409Dll/symbols.txt b/config/GMPE01_00/rels/m409Dll/symbols.txt index 7cc0e253..b79b1e92 100644 --- a/config/GMPE01_00/rels/m409Dll/symbols.txt +++ b/config/GMPE01_00/rels/m409Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x394 +ObjectSetup = .text:0x000000A0; // type:function size:0x394 fn_1_434 = .text:0x00000434; // type:function size:0xA8 fn_1_4DC = .text:0x000004DC; // type:function size:0x48 fn_1_524 = .text:0x00000524; // type:function size:0x65C diff --git a/config/GMPE01_00/rels/m410Dll/symbols.txt b/config/GMPE01_00/rels/m410Dll/symbols.txt index eda76b5c..0ddbcbb6 100644 --- a/config/GMPE01_00/rels/m410Dll/symbols.txt +++ b/config/GMPE01_00/rels/m410Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x444 +ObjectSetup = .text:0x000000A0; // type:function size:0x444 fn_1_4E4 = .text:0x000004E4; // type:function size:0xC4 fn_1_5A8 = .text:0x000005A8; // type:function size:0x94 fn_1_63C = .text:0x0000063C; // type:function size:0x16C diff --git a/config/GMPE01_00/rels/m411Dll/symbols.txt b/config/GMPE01_00/rels/m411Dll/symbols.txt index 4fdb3f11..bf5b0d38 100644 --- a/config/GMPE01_00/rels/m411Dll/symbols.txt +++ b/config/GMPE01_00/rels/m411Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0xDE0 +ObjectSetup = .text:0x000000A0; // type:function size:0xDE0 fn_1_E80 = .text:0x00000E80; // type:function size:0x10C fn_1_F8C = .text:0x00000F8C; // type:function size:0xE8 fn_1_1074 = .text:0x00001074; // type:function size:0x424 diff --git a/config/GMPE01_00/rels/m412Dll/symbols.txt b/config/GMPE01_00/rels/m412Dll/symbols.txt index 8dd659e7..6731c9cb 100644 --- a/config/GMPE01_00/rels/m412Dll/symbols.txt +++ b/config/GMPE01_00/rels/m412Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x64C +ObjectSetup = .text:0x000000A0; // type:function size:0x64C fn_1_6EC = .text:0x000006EC; // type:function size:0x50 fn_1_73C = .text:0x0000073C; // type:function size:0x80 fn_1_7BC = .text:0x000007BC; // type:function size:0xD8 diff --git a/config/GMPE01_00/rels/m413Dll/symbols.txt b/config/GMPE01_00/rels/m413Dll/symbols.txt index 131092fc..0da93366 100644 --- a/config/GMPE01_00/rels/m413Dll/symbols.txt +++ b/config/GMPE01_00/rels/m413Dll/symbols.txt @@ -18,12 +18,15 @@ fn_1_B6C4 = .text:0x0000B6C4; // type:function size:0x101C fn_1_C6E0 = .text:0x0000C6E0; // type:function size:0x4D4 fn_1_CBB4 = .text:0x0000CBB4; // type:function size:0x78C fn_1_D340 = .text:0x0000D340; // type:function size:0x60 -ModuleProlog = .text:0x0000D3A0; // type:function size:0x360 +ObjectSetup = .text:0x0000D3A0; // type:function size:0x360 fn_1_D700 = .text:0x0000D700; // type:function size:0x64 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte lbl_1_rodata_0 = .rodata:0x00000000; // type:object size:0x10 data:double -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x38 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x18 data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x18 data:float +lbl_1_rodata_44 = .rodata:0x00000044; // 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:0x8 data:double lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x8 data:double @@ -172,7 +175,8 @@ lbl_1_rodata_A30 = .rodata:0x00000A30; // type:object size:0x4 data:float lbl_1_rodata_A34 = .rodata:0x00000A34; // type:object size:0x4 data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x4 data:4byte lbl_1_data_4 = .data:0x00000004; // type:object size:0x8 data:4byte -lbl_1_data_C = .data:0x0000000C; // type:object size:0x2C data:4byte +lbl_1_data_C = .data:0x0000000C; // type:object size:0x10 data:4byte +lbl_1_data_1C = .data:0x0000001C; // type:object size:0x1C data:float lbl_1_data_38 = .data:0x00000038; // type:object size:0x9 data:string lbl_1_data_41 = .data:0x00000041; // type:object size:0x19 data:string lbl_1_data_5A = .data:0x0000005A; // type:object size:0x1B data:string @@ -189,13 +193,15 @@ lbl_1_data_10D = .data:0x0000010D; // type:object size:0xF data:string lbl_1_data_11C = .data:0x0000011C; // type:object size:0x19 data:string lbl_1_data_135 = .data:0x00000135; // type:object size:0x24 data:string 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_4 = .bss:0x00000004; // type:object size:0x4 data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x8 data:4byte lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x2 data:2byte lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x2 data:2byte -lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x8 data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:4byte lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:float lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:4byte lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x10 data:4byte diff --git a/config/GMPE01_00/rels/m414Dll/symbols.txt b/config/GMPE01_00/rels/m414Dll/symbols.txt index e65b7a95..698bc7e0 100644 --- a/config/GMPE01_00/rels/m414Dll/symbols.txt +++ b/config/GMPE01_00/rels/m414Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x87C +ObjectSetup = .text:0x000000A0; // type:function size:0x87C fn_1_91C = .text:0x0000091C; // type:function size:0x268 fn_1_B84 = .text:0x00000B84; // type:function size:0x154 fn_1_CD8 = .text:0x00000CD8; // type:function size:0x7C diff --git a/config/GMPE01_00/rels/m415Dll/symbols.txt b/config/GMPE01_00/rels/m415Dll/symbols.txt index b21ccf37..d67685cf 100644 --- a/config/GMPE01_00/rels/m415Dll/symbols.txt +++ b/config/GMPE01_00/rels/m415Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x39C +ObjectSetup = .text:0x000000A0; // type:function size:0x39C fn_1_43C = .text:0x0000043C; // type:function size:0x74 fn_1_4B0 = .text:0x000004B0; // type:function size:0x328 fn_1_7D8 = .text:0x000007D8; // type:function size:0xCE8 diff --git a/config/GMPE01_00/rels/m416Dll/symbols.txt b/config/GMPE01_00/rels/m416Dll/symbols.txt index 29a36a1d..092b8a8b 100644 --- a/config/GMPE01_00/rels/m416Dll/symbols.txt +++ b/config/GMPE01_00/rels/m416Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x3B8 +ObjectSetup = .text:0x000000A0; // type:function size:0x3B8 fn_1_458 = .text:0x00000458; // type:function size:0xA4 fn_1_4FC = .text:0x000004FC; // type:function size:0xCEC fn_1_11E8 = .text:0x000011E8; // type:function size:0x58 diff --git a/config/GMPE01_00/rels/m417Dll/symbols.txt b/config/GMPE01_00/rels/m417Dll/symbols.txt index e54124fd..cd432a44 100644 --- a/config/GMPE01_00/rels/m417Dll/symbols.txt +++ b/config/GMPE01_00/rels/m417Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x438 +ObjectSetup = .text:0x000000A0; // type:function size:0x438 fn_1_4D8 = .text:0x000004D8; // type:function size:0xD8 fn_1_5B0 = .text:0x000005B0; // type:function size:0x250 fn_1_800 = .text:0x00000800; // type:function size:0x190 diff --git a/config/GMPE01_00/rels/m419Dll/symbols.txt b/config/GMPE01_00/rels/m419Dll/symbols.txt index 81dc2a21..1a40f379 100644 --- a/config/GMPE01_00/rels/m419Dll/symbols.txt +++ b/config/GMPE01_00/rels/m419Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x400 +ObjectSetup = .text:0x000000A0; // type:function size:0x400 fn_1_4A0 = .text:0x000004A0; // type:function size:0xDC fn_1_57C = .text:0x0000057C; // type:function size:0x2CC fn_1_848 = .text:0x00000848; // type:function size:0x288 diff --git a/config/GMPE01_00/rels/m420dll/symbols.txt b/config/GMPE01_00/rels/m420dll/symbols.txt index 6b768699..415bc67d 100644 --- a/config/GMPE01_00/rels/m420dll/symbols.txt +++ b/config/GMPE01_00/rels/m420dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x78 +ObjectSetup = .text:0x000000A0; // type:function size:0x78 fn_1_118 = .text:0x00000118; // type:function size:0x80 fn_1_198 = .text:0x00000198; // type:function size:0x23C fn_1_3D4 = .text:0x000003D4; // type:function size:0x68 diff --git a/config/GMPE01_00/rels/m421Dll/symbols.txt b/config/GMPE01_00/rels/m421Dll/symbols.txt index 65960f62..cb29a8cd 100644 --- a/config/GMPE01_00/rels/m421Dll/symbols.txt +++ b/config/GMPE01_00/rels/m421Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x400 +ObjectSetup = .text:0x000000A0; // type:function size:0x400 fn_1_4A0 = .text:0x000004A0; // type:function size:0xD8 fn_1_578 = .text:0x00000578; // type:function size:0x20C fn_1_784 = .text:0x00000784; // type:function size:0x134 diff --git a/config/GMPE01_00/rels/m422Dll/symbols.txt b/config/GMPE01_00/rels/m422Dll/symbols.txt index 8982eb2e..f4f38637 100644 --- a/config/GMPE01_00/rels/m422Dll/symbols.txt +++ b/config/GMPE01_00/rels/m422Dll/symbols.txt @@ -9,7 +9,7 @@ fn_1_9410 = .text:0x00009410; // type:function size:0x4F0 fn_1_9900 = .text:0x00009900; // type:function size:0x134C fn_1_AC4C = .text:0x0000AC4C; // type:function size:0x3B8 fn_1_B004 = .text:0x0000B004; // type:function size:0x54 -ModuleProlog = .text:0x0000B058; // type:function size:0x428 +ObjectSetup = .text:0x0000B058; // type:function size:0x428 fn_1_B480 = .text:0x0000B480; // type:function size:0xAC _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte diff --git a/config/GMPE01_00/rels/m423Dll/symbols.txt b/config/GMPE01_00/rels/m423Dll/symbols.txt index 44d2ba2e..bd1d1367 100644 --- a/config/GMPE01_00/rels/m423Dll/symbols.txt +++ b/config/GMPE01_00/rels/m423Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x278 +ObjectSetup = .text:0x000000A0; // type:function size:0x278 fn_1_318 = .text:0x00000318; // type:function size:0x98 fn_1_3B0 = .text:0x000003B0; // type:function size:0xA4C fn_1_DFC = .text:0x00000DFC; // type:function size:0x64 diff --git a/config/GMPE01_00/rels/m424Dll/symbols.txt b/config/GMPE01_00/rels/m424Dll/symbols.txt index b5d92d3a..987485bc 100644 --- a/config/GMPE01_00/rels/m424Dll/symbols.txt +++ b/config/GMPE01_00/rels/m424Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x1C4 +ObjectSetup = .text:0x000000A0; // type:function size:0x1C4 fn_1_264 = .text:0x00000264; // type:function size:0x1B8 fn_1_41C = .text:0x0000041C; // type:function size:0xAC4 fn_1_EE0 = .text:0x00000EE0; // type:function size:0x60 diff --git a/config/GMPE01_00/rels/m425Dll/symbols.txt b/config/GMPE01_00/rels/m425Dll/symbols.txt index 42f3f3da..4995965e 100644 --- a/config/GMPE01_00/rels/m425Dll/symbols.txt +++ b/config/GMPE01_00/rels/m425Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x3C0 +ObjectSetup = .text:0x000000A0; // type:function size:0x3C0 fn_1_460 = .text:0x00000460; // type:function size:0x20 fn_1_480 = .text:0x00000480; // type:function size:0x464 fn_1_8E4 = .text:0x000008E4; // type:function size:0x664 diff --git a/config/GMPE01_00/rels/m426Dll/symbols.txt b/config/GMPE01_00/rels/m426Dll/symbols.txt index 5f63b503..76e8528e 100644 --- a/config/GMPE01_00/rels/m426Dll/symbols.txt +++ b/config/GMPE01_00/rels/m426Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x16C +ObjectSetup = .text:0x000000A0; // type:function size:0x16C fn_1_20C = .text:0x0000020C; // type:function size:0x124 fn_1_330 = .text:0x00000330; // type:function size:0xA88 fn_1_DB8 = .text:0x00000DB8; // type:function size:0x60 diff --git a/config/GMPE01_00/rels/m427Dll/symbols.txt b/config/GMPE01_00/rels/m427Dll/symbols.txt index 531de390..a8b25f76 100644 --- a/config/GMPE01_00/rels/m427Dll/symbols.txt +++ b/config/GMPE01_00/rels/m427Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x1FC +ObjectSetup = .text:0x000000A0; // type:function size:0x1FC fn_1_29C = .text:0x0000029C; // type:function size:0x64 fn_1_300 = .text:0x00000300; // type:function size:0x1364 fn_1_1664 = .text:0x00001664; // type:function size:0x60 diff --git a/config/GMPE01_00/rels/m428Dll/symbols.txt b/config/GMPE01_00/rels/m428Dll/symbols.txt index e40ea36c..eef0a9df 100644 --- a/config/GMPE01_00/rels/m428Dll/symbols.txt +++ b/config/GMPE01_00/rels/m428Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x218 +ObjectSetup = .text:0x000000A0; // type:function size:0x218 fn_1_2B8 = .text:0x000002B8; // type:function size:0x1C0 fn_1_478 = .text:0x00000478; // type:function size:0x2154 fn_1_25CC = .text:0x000025CC; // type:function size:0x50 diff --git a/config/GMPE01_00/rels/m429Dll/symbols.txt b/config/GMPE01_00/rels/m429Dll/symbols.txt index baf92ef1..f04af3c7 100644 --- a/config/GMPE01_00/rels/m429Dll/symbols.txt +++ b/config/GMPE01_00/rels/m429Dll/symbols.txt @@ -65,7 +65,7 @@ fn_1_B01C = .text:0x0000B01C; // type:function size:0x738 fn_1_B754 = .text:0x0000B754; // type:function size:0x18C fn_1_B8E0 = .text:0x0000B8E0; // type:function size:0x1D08 fn_1_D5E8 = .text:0x0000D5E8; // type:function size:0x6B4 -ModuleProlog = .text:0x0000DC9C; // type:function size:0xCD0 +ObjectSetup = .text:0x0000DC9C; // type:function size:0xCD0 fn_1_E96C = .text:0x0000E96C; // type:function size:0x104 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte diff --git a/config/GMPE01_00/rels/m430Dll/symbols.txt b/config/GMPE01_00/rels/m430Dll/symbols.txt index f79d261a..b27b88e7 100644 --- a/config/GMPE01_00/rels/m430Dll/symbols.txt +++ b/config/GMPE01_00/rels/m430Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x5BC +ObjectSetup = .text:0x000000A0; // type:function size:0x5BC fn_1_65C = .text:0x0000065C; // type:function size:0xC4 fn_1_720 = .text:0x00000720; // type:function size:0x334 fn_1_A54 = .text:0x00000A54; // type:function size:0x144 diff --git a/config/GMPE01_00/rels/m431Dll/symbols.txt b/config/GMPE01_00/rels/m431Dll/symbols.txt index 8ff48a81..34b9eec0 100644 --- a/config/GMPE01_00/rels/m431Dll/symbols.txt +++ b/config/GMPE01_00/rels/m431Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x384 +ObjectSetup = .text:0x000000A0; // type:function size:0x384 fn_1_424 = .text:0x00000424; // type:function size:0x78 fn_1_49C = .text:0x0000049C; // type:function size:0xE0 fn_1_57C = .text:0x0000057C; // type:function size:0x234 diff --git a/config/GMPE01_00/rels/m433Dll/symbols.txt b/config/GMPE01_00/rels/m433Dll/symbols.txt index 39b3b5ba..528cefb2 100644 --- a/config/GMPE01_00/rels/m433Dll/symbols.txt +++ b/config/GMPE01_00/rels/m433Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x420 +ObjectSetup = .text:0x000000A0; // type:function size:0x420 fn_1_4C0 = .text:0x000004C0; // type:function size:0xC4 fn_1_584 = .text:0x00000584; // type:function size:0x94 fn_1_618 = .text:0x00000618; // type:function size:0x180 diff --git a/config/GMPE01_00/rels/m434Dll/symbols.txt b/config/GMPE01_00/rels/m434Dll/symbols.txt index 8ffa0589..63082c5e 100644 --- a/config/GMPE01_00/rels/m434Dll/symbols.txt +++ b/config/GMPE01_00/rels/m434Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x45C +ObjectSetup = .text:0x000000A0; // type:function size:0x45C fn_1_4FC = .text:0x000004FC; // type:function size:0x5C fn_1_558 = .text:0x00000558; // type:function size:0x70C fn_1_C64 = .text:0x00000C64; // type:function size:0x64 diff --git a/config/GMPE01_00/rels/m438Dll/symbols.txt b/config/GMPE01_00/rels/m438Dll/symbols.txt index 5d7edf49..e77fafa8 100644 --- a/config/GMPE01_00/rels/m438Dll/symbols.txt +++ b/config/GMPE01_00/rels/m438Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x43C +ObjectSetup = .text:0x000000A0; // type:function size:0x43C fn_1_4DC = .text:0x000004DC; // type:function size:0x20 fn_1_4FC = .text:0x000004FC; // type:function size:0x478 fn_1_974 = .text:0x00000974; // type:function size:0x800 diff --git a/config/GMPE01_00/rels/m439Dll/symbols.txt b/config/GMPE01_00/rels/m439Dll/symbols.txt index 4057b911..dac370b7 100644 --- a/config/GMPE01_00/rels/m439Dll/symbols.txt +++ b/config/GMPE01_00/rels/m439Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x2C4 +ObjectSetup = .text:0x000000A0; // type:function size:0x2C4 fn_1_364 = .text:0x00000364; // type:function size:0x10 fn_1_374 = .text:0x00000374; // type:function size:0x10 fn_1_384 = .text:0x00000384; // type:function size:0x84 diff --git a/config/GMPE01_00/rels/m440Dll/symbols.txt b/config/GMPE01_00/rels/m440Dll/symbols.txt index a07b1c3d..1457a3b2 100644 --- a/config/GMPE01_00/rels/m440Dll/symbols.txt +++ b/config/GMPE01_00/rels/m440Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x324 +ObjectSetup = .text:0x000000A0; // type:function size:0x324 fn_1_3C4 = .text:0x000003C4; // type:function size:0x70 fn_1_434 = .text:0x00000434; // type:function size:0x70 fn_1_4A4 = .text:0x000004A4; // type:function size:0x224 diff --git a/config/GMPE01_00/rels/m442Dll/symbols.txt b/config/GMPE01_00/rels/m442Dll/symbols.txt index 4799507b..f40c33b8 100644 --- a/config/GMPE01_00/rels/m442Dll/symbols.txt +++ b/config/GMPE01_00/rels/m442Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x2D4 +ObjectSetup = .text:0x000000A0; // type:function size:0x2D4 fn_1_374 = .text:0x00000374; // type:function size:0x10 fn_1_384 = .text:0x00000384; // type:function size:0x10 fn_1_394 = .text:0x00000394; // type:function size:0xB4 diff --git a/config/GMPE01_00/rels/m443Dll/symbols.txt b/config/GMPE01_00/rels/m443Dll/symbols.txt index 9b4cf5bb..76a2059a 100644 --- a/config/GMPE01_00/rels/m443Dll/symbols.txt +++ b/config/GMPE01_00/rels/m443Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x380 +ObjectSetup = .text:0x000000A0; // type:function size:0x380 fn_1_420 = .text:0x00000420; // type:function size:0xC4 fn_1_4E4 = .text:0x000004E4; // type:function size:0xA0 fn_1_584 = .text:0x00000584; // type:function size:0x14C diff --git a/config/GMPE01_00/rels/m444dll/symbols.txt b/config/GMPE01_00/rels/m444dll/symbols.txt index bf5a29ec..ca550b02 100644 --- a/config/GMPE01_00/rels/m444dll/symbols.txt +++ b/config/GMPE01_00/rels/m444dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x3D0 +ObjectSetup = .text:0x000000A0; // type:function size:0x3D0 fn_1_470 = .text:0x00000470; // type:function size:0x370C fn_1_3B7C = .text:0x00003B7C; // type:function size:0x1270 fn_1_4DEC = .text:0x00004DEC; // type:function size:0x7C4 diff --git a/config/GMPE01_00/rels/m445Dll/symbols.txt b/config/GMPE01_00/rels/m445Dll/symbols.txt index c24e16eb..0f826a14 100644 --- a/config/GMPE01_00/rels/m445Dll/symbols.txt +++ b/config/GMPE01_00/rels/m445Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x418 +ObjectSetup = .text:0x000000A0; // type:function size:0x418 fn_1_4B8 = .text:0x000004B8; // type:function size:0x54 fn_1_50C = .text:0x0000050C; // type:function size:0x4 fn_1_510 = .text:0x00000510; // type:function size:0x10 diff --git a/config/GMPE01_00/rels/m446dll/symbols.txt b/config/GMPE01_00/rels/m446dll/symbols.txt index 0900c8ff..e9879dc0 100644 --- a/config/GMPE01_00/rels/m446dll/symbols.txt +++ b/config/GMPE01_00/rels/m446dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x9C +ObjectSetup = .text:0x000000A0; // type:function size:0x9C fn_1_13C = .text:0x0000013C; // type:function size:0x168 m446FlowCreate = .text:0x000002A4; // type:function size:0x158 fn_1_3FC = .text:0x000003FC; // type:function size:0xB8 diff --git a/config/GMPE01_00/rels/m447dll/symbols.txt b/config/GMPE01_00/rels/m447dll/symbols.txt index 96e6cbe2..189f63b5 100644 --- a/config/GMPE01_00/rels/m447dll/symbols.txt +++ b/config/GMPE01_00/rels/m447dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x8C +ObjectSetup = .text:0x000000A0; // type:function size:0x8C fn_1_12C = .text:0x0000012C; // type:function size:0x8C fn_1_1B8 = .text:0x000001B8; // type:function size:0x284 fn_1_43C = .text:0x0000043C; // type:function size:0x54 diff --git a/config/GMPE01_00/rels/m448Dll/symbols.txt b/config/GMPE01_00/rels/m448Dll/symbols.txt index 2a23384d..d04f9849 100644 --- a/config/GMPE01_00/rels/m448Dll/symbols.txt +++ b/config/GMPE01_00/rels/m448Dll/symbols.txt @@ -12,7 +12,7 @@ fn_1_7DC4 = .text:0x00007DC4; // type:function size:0x3FC fn_1_81C0 = .text:0x000081C0; // type:function size:0xC10 fn_1_8DD0 = .text:0x00008DD0; // type:function size:0x738 fn_1_9508 = .text:0x00009508; // type:function size:0x154 -ModuleProlog = .text:0x0000965C; // type:function size:0x4A4 +ObjectSetup = .text:0x0000965C; // type:function size:0x4A4 fn_1_9B00 = .text:0x00009B00; // type:function size:0x120 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte diff --git a/config/GMPE01_00/rels/m449Dll/symbols.txt b/config/GMPE01_00/rels/m449Dll/symbols.txt index 7a40993d..b43a66db 100644 --- a/config/GMPE01_00/rels/m449Dll/symbols.txt +++ b/config/GMPE01_00/rels/m449Dll/symbols.txt @@ -14,7 +14,7 @@ fn_1_7ECC = .text:0x00007ECC; // type:function size:0xC8 fn_1_7F94 = .text:0x00007F94; // type:function size:0x5A4 fn_1_8538 = .text:0x00008538; // type:function size:0xFC0 fn_1_94F8 = .text:0x000094F8; // type:function size:0xE0 -ModuleProlog = .text:0x000095D8; // type:function size:0x460 +ObjectSetup = .text:0x000095D8; // type:function size:0x460 fn_1_9A38 = .text:0x00009A38; // type:function size:0x9C _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte diff --git a/config/GMPE01_00/rels/m451Dll/symbols.txt b/config/GMPE01_00/rels/m451Dll/symbols.txt index c7b6f300..f9cf4633 100644 --- a/config/GMPE01_00/rels/m451Dll/symbols.txt +++ b/config/GMPE01_00/rels/m451Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x71C +ObjectSetup = .text:0x000000A0; // type:function size:0x71C fn_1_7BC = .text:0x000007BC; // type:function size:0x9C fn_1_858 = .text:0x00000858; // type:function size:0xC0 fn_1_918 = .text:0x00000918; // type:function size:0x214 diff --git a/config/GMPE01_00/rels/m453Dll/symbols.txt b/config/GMPE01_00/rels/m453Dll/symbols.txt index 985ae585..19f422d2 100644 --- a/config/GMPE01_00/rels/m453Dll/symbols.txt +++ b/config/GMPE01_00/rels/m453Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x3A0 +ObjectSetup = .text:0x000000A0; // type:function size:0x3A0 fn_1_440 = .text:0x00000440; // type:function size:0x20 fn_1_460 = .text:0x00000460; // type:function size:0x3E8 fn_1_848 = .text:0x00000848; // type:function size:0x7B4 diff --git a/config/GMPE01_00/rels/m455Dll/symbols.txt b/config/GMPE01_00/rels/m455Dll/symbols.txt index 0a170a1c..0038cefd 100644 --- a/config/GMPE01_00/rels/m455Dll/symbols.txt +++ b/config/GMPE01_00/rels/m455Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x270 +ObjectSetup = .text:0x000000A0; // type:function size:0x270 fn_1_310 = .text:0x00000310; // type:function size:0x10 fn_1_320 = .text:0x00000320; // type:function size:0x10 fn_1_330 = .text:0x00000330; // type:function size:0x148 diff --git a/config/GMPE01_00/rels/m456Dll/symbols.txt b/config/GMPE01_00/rels/m456Dll/symbols.txt index a59886cd..18fc4b5a 100644 --- a/config/GMPE01_00/rels/m456Dll/symbols.txt +++ b/config/GMPE01_00/rels/m456Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x300 +ObjectSetup = .text:0x000000A0; // type:function size:0x300 fn_1_3A0 = .text:0x000003A0; // type:function size:0x10 fn_1_3B0 = .text:0x000003B0; // type:function size:0x10 fn_1_3C0 = .text:0x000003C0; // type:function size:0xD8 diff --git a/config/GMPE01_00/rels/m457Dll/symbols.txt b/config/GMPE01_00/rels/m457Dll/symbols.txt index 902702ec..02f3cb11 100644 --- a/config/GMPE01_00/rels/m457Dll/symbols.txt +++ b/config/GMPE01_00/rels/m457Dll/symbols.txt @@ -9,7 +9,7 @@ fn_1_59BC = .text:0x000059BC; // type:function size:0xB3C fn_1_64F8 = .text:0x000064F8; // type:function size:0xAB8 fn_1_6FB0 = .text:0x00006FB0; // type:function size:0x5F4 fn_1_75A4 = .text:0x000075A4; // type:function size:0xC0 -ModuleProlog = .text:0x00007664; // type:function size:0x480 +ObjectSetup = .text:0x00007664; // type:function size:0x480 fn_1_7AE4 = .text:0x00007AE4; // type:function size:0x9C _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte diff --git a/config/GMPE01_00/rels/m458Dll/symbols.txt b/config/GMPE01_00/rels/m458Dll/symbols.txt index 83e182ec..0a2dc8ab 100644 --- a/config/GMPE01_00/rels/m458Dll/symbols.txt +++ b/config/GMPE01_00/rels/m458Dll/symbols.txt @@ -9,7 +9,7 @@ fn_1_5014 = .text:0x00005014; // type:function size:0x9C8 fn_1_59DC = .text:0x000059DC; // type:function size:0x938 fn_1_6314 = .text:0x00006314; // type:function size:0x548 fn_1_685C = .text:0x0000685C; // type:function size:0xC0 -ModuleProlog = .text:0x0000691C; // type:function size:0x480 +ObjectSetup = .text:0x0000691C; // type:function size:0x480 fn_1_6D9C = .text:0x00006D9C; // type:function size:0xD0 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte diff --git a/config/GMPE01_00/rels/m459dll/symbols.txt b/config/GMPE01_00/rels/m459dll/symbols.txt index 3d72ada1..5520ff1e 100644 --- a/config/GMPE01_00/rels/m459dll/symbols.txt +++ b/config/GMPE01_00/rels/m459dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x138 +ObjectSetup = .text:0x000000A0; // type:function size:0x138 fn_1_1D8 = .text:0x000001D8; // type:function size:0x468 fn_1_640 = .text:0x00000640; // type:function size:0xFC fn_1_73C = .text:0x0000073C; // type:function size:0x73C diff --git a/config/GMPE01_00/rels/m460Dll/symbols.txt b/config/GMPE01_00/rels/m460Dll/symbols.txt index c53d06a2..0261cad3 100644 --- a/config/GMPE01_00/rels/m460Dll/symbols.txt +++ b/config/GMPE01_00/rels/m460Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x428 +ObjectSetup = .text:0x000000A0; // type:function size:0x428 fn_1_4C8 = .text:0x000004C8; // type:function size:0x128 fn_1_5F0 = .text:0x000005F0; // type:function size:0x20C fn_1_7FC = .text:0x000007FC; // type:function size:0x14C diff --git a/config/GMPE01_00/rels/m462Dll/symbols.txt b/config/GMPE01_00/rels/m462Dll/symbols.txt index 2f3d2619..d702b245 100644 --- a/config/GMPE01_00/rels/m462Dll/symbols.txt +++ b/config/GMPE01_00/rels/m462Dll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x400 +ObjectSetup = .text:0x000000A0; // type:function size:0x400 fn_1_4A0 = .text:0x000004A0; // type:function size:0x1014 fn_1_14B4 = .text:0x000014B4; // type:function size:0x80 fn_1_1534 = .text:0x00001534; // type:function size:0x80 diff --git a/config/GMPE01_00/rels/messDll/symbols.txt b/config/GMPE01_00/rels/messDll/symbols.txt index 5a124210..60abcf82 100644 --- a/config/GMPE01_00/rels/messDll/symbols.txt +++ b/config/GMPE01_00/rels/messDll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x21C +ObjectSetup = .text:0x000000A0; // type:function size:0x21C fn_1_2BC = .text:0x000002BC; // type:function size:0x44 scope:local fn_1_300 = .text:0x00000300; // type:function size:0xB88 scope:local fn_1_E88 = .text:0x00000E88; // type:function size:0x328 scope:local diff --git a/config/GMPE01_00/rels/mgmodedll/symbols.txt b/config/GMPE01_00/rels/mgmodedll/symbols.txt index a6578bfb..227d63cf 100644 --- a/config/GMPE01_00/rels/mgmodedll/symbols.txt +++ b/config/GMPE01_00/rels/mgmodedll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x3C4 +ObjectSetup = .text:0x000000A0; // type:function size:0x3C4 fn_1_464 = .text:0x00000464; // type:function size:0x294 fn_1_6F8 = .text:0x000006F8; // type:function size:0x6F8 fn_1_DF0 = .text:0x00000DF0; // type:function size:0xD1C diff --git a/config/GMPE01_00/rels/modeltestDll/symbols.txt b/config/GMPE01_00/rels/modeltestDll/symbols.txt index 4b7a4796..b833306a 100644 --- a/config/GMPE01_00/rels/modeltestDll/symbols.txt +++ b/config/GMPE01_00/rels/modeltestDll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x1FC +ObjectSetup = .text:0x000000A0; // type:function size:0x1FC fn_1_29C = .text:0x0000029C; // type:function size:0xC9C fn_1_F38 = .text:0x00000F38; // type:function size:0x64 fn_1_F9C = .text:0x00000F9C; // type:function size:0x1158 diff --git a/config/GMPE01_00/rels/modeseldll/symbols.txt b/config/GMPE01_00/rels/modeseldll/symbols.txt index a1142f6e..53057676 100644 --- a/config/GMPE01_00/rels/modeseldll/symbols.txt +++ b/config/GMPE01_00/rels/modeseldll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x374 +ObjectSetup = .text:0x000000A0; // type:function size:0x374 fn_1_414 = .text:0x00000414; // type:function size:0x5E0 fn_1_9F4 = .text:0x000009F4; // type:function size:0xFC fn_1_AF0 = .text:0x00000AF0; // type:function size:0x9C diff --git a/config/GMPE01_00/rels/option/symbols.txt b/config/GMPE01_00/rels/option/symbols.txt index eba33444..5eb11c4d 100644 --- a/config/GMPE01_00/rels/option/symbols.txt +++ b/config/GMPE01_00/rels/option/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0xC0 +ObjectSetup = .text:0x000000A0; // type:function size:0xC0 OptionFadeSprite = .text:0x00000160; // type:function size:0x110 FadeSprite = .text:0x00000270; // type:function size:0xE4 scope:local OptionFadeModel = .text:0x00000354; // type:function size:0x114 scope:local diff --git a/config/GMPE01_00/rels/present/symbols.txt b/config/GMPE01_00/rels/present/symbols.txt index d6e7f4bc..415738fe 100644 --- a/config/GMPE01_00/rels/present/symbols.txt +++ b/config/GMPE01_00/rels/present/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0xA4 +ObjectSetup = .text:0x000000A0; // type:function size:0xA4 fn_1_144 = .text:0x00000144; // type:function size:0x110 fn_1_254 = .text:0x00000254; // type:function size:0xE0 fn_1_334 = .text:0x00000334; // type:function size:0x128 diff --git a/config/GMPE01_00/rels/resultDll/symbols.txt b/config/GMPE01_00/rels/resultDll/symbols.txt index b9d8c84d..b0b7a9af 100644 --- a/config/GMPE01_00/rels/resultDll/symbols.txt +++ b/config/GMPE01_00/rels/resultDll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x438 +ObjectSetup = .text:0x000000A0; // type:function size:0x438 fn_1_4D8 = .text:0x000004D8; // type:function size:0x3B0 fn_1_888 = .text:0x00000888; // type:function size:0x2F0 fn_1_B78 = .text:0x00000B78; // type:function size:0x13D4 diff --git a/config/GMPE01_00/rels/selmenuDll/symbols.txt b/config/GMPE01_00/rels/selmenuDll/symbols.txt index 3f593825..199e2ba8 100644 --- a/config/GMPE01_00/rels/selmenuDll/symbols.txt +++ b/config/GMPE01_00/rels/selmenuDll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x4B8 +ObjectSetup = .text:0x000000A0; // type:function size:0x4B8 CopyPlayerCfg = .text:0x00000558; // type:function size:0x60 scope:local CalcBtns = .text:0x000005B8; // type:function size:0x324 scope:local DrawPage = .text:0x000008DC; // type:function size:0x170 scope:local diff --git a/config/GMPE01_00/rels/staffDll/symbols.txt b/config/GMPE01_00/rels/staffDll/symbols.txt index ad21899f..d56d4939 100644 --- a/config/GMPE01_00/rels/staffDll/symbols.txt +++ b/config/GMPE01_00/rels/staffDll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x218 +ObjectSetup = .text:0x000000A0; // type:function size:0x218 ExitProc = .text:0x000002B8; // type:function size:0x60 scope:local CreateStaff = .text:0x00000318; // type:function size:0x3DC scope:local MoveStaff = .text:0x000006F4; // type:function size:0x3AC scope:local @@ -9,10 +9,8 @@ ShowPicture = .text:0x00000BCC; // type:function size:0x1C4 scope:local MainProc = .text:0x00000D90; // type:function size:0x500 scope:local _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_0 = .rodata:0x00000000; // type:object size:0x4 scope:local data:float -lbl_1_rodata_4 = .rodata:0x00000004; // type:object size:0x4 scope:local data:float -lbl_1_rodata_8 = .rodata:0x00000008; // type:object size:0x4 scope:local data:float -lbl_1_rodata_C = .rodata:0x0000000C; // type:object size:0x4 scope:local 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 diff --git a/config/GMPE01_00/rels/subchrselDll/symbols.txt b/config/GMPE01_00/rels/subchrselDll/symbols.txt index f39a0d47..de91b3f2 100644 --- a/config/GMPE01_00/rels/subchrselDll/symbols.txt +++ b/config/GMPE01_00/rels/subchrselDll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x6C +ObjectSetup = .text:0x000000A0; // type:function size:0x6C GetBtns = .text:0x0000010C; // type:function size:0x58 scope:local SubchrMain = .text:0x00000164; // type:function size:0x654 scope:local _ctors = .ctors:0x00000000; // type:label scope:global data:4byte diff --git a/config/GMPE01_00/rels/ztardll/symbols.txt b/config/GMPE01_00/rels/ztardll/symbols.txt index 2c9ea7ba..6e398a8c 100644 --- a/config/GMPE01_00/rels/ztardll/symbols.txt +++ b/config/GMPE01_00/rels/ztardll/symbols.txt @@ -1,6 +1,6 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -ModuleProlog = .text:0x000000A0; // type:function size:0x384 +ObjectSetup = .text:0x000000A0; // type:function size:0x384 fn_1_424 = .text:0x00000424; // type:function size:0x1350 fn_1_1774 = .text:0x00001774; // type:function size:0x57C fn_1_1CF0 = .text:0x00001CF0; // type:function size:0xB0 diff --git a/configure.py b/configure.py index e8a541da..6d6cd6e1 100644 --- a/configure.py +++ b/configure.py @@ -862,7 +862,7 @@ config.libs = [ Object(Matching, "REL/executor.c"), Object(Matching, "REL/m406Dll/main.c"), Object(Matching, "REL/m406Dll/map.c"), - Object(NonMatching, "REL/m406Dll/player.c"), + Object(Matching, "REL/m406Dll/player.c"), }, ), Rel( diff --git a/include/REL/executor.h b/include/REL/executor.h index f6ed3f1d..64b161ed 100644 --- a/include/REL/executor.h +++ b/include/REL/executor.h @@ -14,7 +14,7 @@ typedef void (*VoidFunc)(void); extern const VoidFunc _ctors[]; extern const VoidFunc _dtors[]; -extern void ModuleProlog(void); +extern void ObjectSetup(void); extern void ModuleEpilog(void); #ifdef __cplusplus diff --git a/include/REL/m406Dll.h b/include/REL/m406Dll.h index 656521ae..64862a57 100644 --- a/include/REL/m406Dll.h +++ b/include/REL/m406Dll.h @@ -4,16 +4,36 @@ #include "game/object.h" #include "game/process.h" +typedef struct UnkM406Struct2 { + /* 0x00 */ float unk_00; + /* 0x04 */ float unk_04; + /* 0x08 */ Vec unk_08; + /* 0x14 */ Vec unk_14; +} UnkM406Struct2; /* size = 0x20 */ + s32 fn_1_122C(void); +void fn_1_123C(void); +void fn_1_1274(s32 arg0); +void fn_1_1284(void); +void fn_1_12BC(void); + omObjData *fn_1_2308(Process *arg0); void fn_1_2BEC(void); void fn_1_3064(s32 arg0); void fn_1_696C(float arg8); void fn_1_6B5C(void); +void fn_1_69C0(Vec *arg0); +s32 fn_1_6A44(Vec arg0); +void fn_1_6BB4(Vec *arg0); +void fn_1_82C8(Mtx arg0, s32 arg1, float arg8); +s32 fn_1_94C0(Mtx arg0, s32 arg1, s32 arg2); void fn_1_B104(float arg8); void fn_1_B25C(void); void fn_1_B41C(void); void fn_1_D65C(Process *arg0); void fn_1_D8B0(void); +extern UnkM406Struct2 *lbl_1_bss_B8; +extern s32 lbl_1_bss_B4; + #endif diff --git a/include/REL/m440Dll.h b/include/REL/m440Dll.h index fef1113e..1a64053e 100644 --- a/include/REL/m440Dll.h +++ b/include/REL/m440Dll.h @@ -297,7 +297,7 @@ extern f32 lbl_1_data_250; ////// FUNCTIONS ////// // main.c -extern void ModuleProlog(void); +extern void ObjectSetup(void); extern void fn_1_3C4(omObjData* object); extern void fn_1_434(omObjData* object); extern s32 fn_1_4A4(void); @@ -393,4 +393,4 @@ extern void fn_1_F168(void); extern void fn_1_F228(void); extern u16 fn_1_F4C0(unkObjStruct*, u16); extern void fn_1_F4D4(unkObjStruct*, u16, u16); -extern s32 fn_1_F4FC(s32); \ No newline at end of file +extern s32 fn_1_F4FC(s32); diff --git a/include/REL/m446Dll.h b/include/REL/m446Dll.h index df708146..ed3e8df3 100644 --- a/include/REL/m446Dll.h +++ b/include/REL/m446Dll.h @@ -234,7 +234,7 @@ extern Vec lbl_1_data_4B4[3]; ////// PROTOTYPES ////// // main.c -extern void ModuleProlog(void); +extern void ObjectSetup(void); extern void fn_1_13C(omObjData*); extern unkStruct* m446FlowCreate(void); extern void fn_1_3FC(unkStruct*); @@ -363,4 +363,4 @@ extern unkStruct9* m446StageCreate(void); extern void fn_1_83F0(unkStruct9*); extern void fn_1_84AC(unkStruct9*); extern void fn_1_852C(unkStruct9*); -extern void fn_1_860C(unkStruct9*); \ No newline at end of file +extern void fn_1_860C(unkStruct9*); diff --git a/include/REL/staffDll.h b/include/REL/staffDll.h deleted file mode 100644 index 21e81970..00000000 --- a/include/REL/staffDll.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef STAFFDLL_H -#define STAFFDLL_H - -#include "dolphin/types.h" - -typedef struct UnkStaffDllStruct { - /* 0x00 */ u32 unk_00; - /* 0x04 */ s32 unk_04; - /* 0x08 */ float unk_08; - /* 0x0C */ u32 unk_0C; - /* 0x10 */ s32 unk_10; - /* 0x14 */ s32 unk_14; -} UnkStaffDllStruct; - -#endif diff --git a/include/game/hsfformat.h b/include/game/hsfformat.h index 9f7e344c..04f3d458 100644 --- a/include/game/hsfformat.h +++ b/include/game/hsfformat.h @@ -156,7 +156,7 @@ typedef struct hsf_face { } strip; s16 indices[4][4]; }; - float nbt[3]; + Vec nbt; } HsfFace; typedef struct hsf_transform { diff --git a/include/game/hsfman.h b/include/game/hsfman.h index 0c7ee048..0d20b256 100644 --- a/include/game/hsfman.h +++ b/include/game/hsfman.h @@ -187,8 +187,8 @@ s16 Hu3DGLightCreate(f32, f32, f32, f32, f32, f32, u8, u8, u8); s16 Hu3DGLightCreateV(Vec*, Vec*, GXColor*); s16 Hu3DLLightCreate(s16, f32, f32, f32, f32, f32, f32, u8, u8, u8); s16 Hu3DLLightCreateV(s16, Vec*, Vec*, GXColor*); -void Hu3DGLightSpotSet(s16, u16, f32); -void Hu3DLLightSpotSet(s16, s16, u16, f32); +void Hu3DGLightSpotSet(s16, f32, u16); +void Hu3DLLightSpotSet(s16, s16, f32, u16); void Hu3DGLightInfinitytSet(s16); void Hu3DLLightInfinitytSet(s16, s16); void Hu3DGLightPointSet(s16, f32, f32, u16); diff --git a/src/REL/E3setupDLL/main.c b/src/REL/E3setupDLL/main.c index fc5b2372..8794d41c 100644 --- a/src/REL/E3setupDLL/main.c +++ b/src/REL/E3setupDLL/main.c @@ -100,7 +100,7 @@ static s32 charSfxTbl[] = { 743 }; -void ModuleProlog(void) +void ObjectSetup(void) { e3EvtNo = omovlevtno; HuAudSndGrpSetSet(0); @@ -1699,4 +1699,4 @@ struct unkstruct_4C0 { struct unkstruct_4C0 lbl_2_data_4C0[] = { lbl_2_data_478, 60, lbl_2_data_49C, 60 -}; \ No newline at end of file +}; diff --git a/src/REL/_minigameDLL/_minigameDLL.c b/src/REL/_minigameDLL/_minigameDLL.c index 436f2b7b..d252a50b 100644 --- a/src/REL/_minigameDLL/_minigameDLL.c +++ b/src/REL/_minigameDLL/_minigameDLL.c @@ -2,10 +2,10 @@ #include "dolphin/os.h" #include "rel_sqrt_consts.h" -void ModuleProlog(void) { +void ObjectSetup(void) { OSReport("minigame dll setup\n"); } unsigned char fn_1_CC(void) { return rand8(); -} \ No newline at end of file +} diff --git a/src/REL/bootDll/main.c b/src/REL/bootDll/main.c index 199b450d..9e9ccda2 100644 --- a/src/REL/bootDll/main.c +++ b/src/REL/bootDll/main.c @@ -48,7 +48,7 @@ static BOOL TitleProc(void); void *logoReadNintendo(void); -void ModuleProlog(void) +void ObjectSetup(void) { omOvlHisData *history; OSReport("******* Boot ObjectSetup *********\n"); @@ -549,4 +549,3 @@ static BOOL TitleProc(void) HuSprAttrSet(titleGroup, 3, HUSPR_ATTR_DISPOFF); return 0; } - diff --git a/src/REL/executor.c b/src/REL/executor.c index 4acadcff..57e72dda 100644 --- a/src/REL/executor.c +++ b/src/REL/executor.c @@ -6,7 +6,7 @@ s32 _prolog(void) { (**ctors)(); ctors++; } - ModuleProlog(); + ObjectSetup(); return 0; } diff --git a/src/REL/instDll/main.c b/src/REL/instDll/main.c index b5e83a73..09b2be94 100644 --- a/src/REL/instDll/main.c +++ b/src/REL/instDll/main.c @@ -50,7 +50,7 @@ static void fn_1_2FA0(void); static void fn_1_4174(omObjData *object); static void fn_1_4528(omObjData *object); -void ModuleProlog(void) +void ObjectSetup(void) { s32 i; omOvlHisData *his; @@ -1175,4 +1175,4 @@ static void fn_1_5B64(ModelData *model, Mtx mtx) GXPosition3f32(2000.0f, 0, 2000.0f); GXPosition3f32(-2000.0f, 0, 2000.0f); GXEnd(); -} \ No newline at end of file +} diff --git a/src/REL/m401Dll/main.c b/src/REL/m401Dll/main.c index 57778356..40820a67 100644 --- a/src/REL/m401Dll/main.c +++ b/src/REL/m401Dll/main.c @@ -120,7 +120,7 @@ void fn_2_D088(omObjData *object); void fn_2_DBCC(s16 arg0); -void ModuleProlog(void) +void ObjectSetup(void) { s32 i; omObjData *object; @@ -3496,4 +3496,4 @@ void fn_2_FF98(omObjData *object) omDelObjEx(HuPrcCurrentGet(), object); } -} \ No newline at end of file +} diff --git a/src/REL/m402Dll/main.c b/src/REL/m402Dll/main.c index 6b21f7cf..cdc19ce8 100755 --- a/src/REL/m402Dll/main.c +++ b/src/REL/m402Dll/main.c @@ -1852,7 +1852,7 @@ static void fn_1_9058(omObjData *arg0) { arg0->func = fn_1_8218; } -void ModuleProlog(void) { +void ObjectSetup(void) { Vec sp20; omObjData *temp_r30; s32 i; diff --git a/src/REL/m403Dll/main.c b/src/REL/m403Dll/main.c index 4447b3ac..3550b015 100755 --- a/src/REL/m403Dll/main.c +++ b/src/REL/m403Dll/main.c @@ -165,7 +165,7 @@ static Vec lbl_1_data_20_unused = { 0.0f, 4000.0f, -2000.0f }; static Vec lbl_1_data_2C_unused = { 0.0f, 1.0f, 0.0f }; static u8 lbl_1_data_38_unused[0xC] = { 0 }; -void ModuleProlog(void) { +void ObjectSetup(void) { LightData *var_r28; Process *temp_r31; omObjData *var_r29; diff --git a/src/REL/m404Dll/main.c b/src/REL/m404Dll/main.c index 6cd5b3f1..1a79708d 100644 --- a/src/REL/m404Dll/main.c +++ b/src/REL/m404Dll/main.c @@ -233,7 +233,7 @@ void fn_1_6440(omObjData *object); void fn_1_648C(s32 arg0, s32 arg1, float arg8); void fn_1_66DC(omObjData *object); -void ModuleProlog(void) +void ObjectSetup(void) { CameraData *var_r30; Process *var_r31; diff --git a/src/REL/m405Dll/main.c b/src/REL/m405Dll/main.c index 41783a22..2837051e 100755 --- a/src/REL/m405Dll/main.c +++ b/src/REL/m405Dll/main.c @@ -2380,7 +2380,7 @@ void fn_1_AD10(omObjData *arg0) { arg0->func = fn_1_9288; } -void ModuleProlog(void) { +void ObjectSetup(void) { Vec sp8; s32 temp_r29; s32 i; diff --git a/src/REL/m406Dll/main.c b/src/REL/m406Dll/main.c index bba597cb..dcd78522 100644 --- a/src/REL/m406Dll/main.c +++ b/src/REL/m406Dll/main.c @@ -108,7 +108,7 @@ s32 lbl_1_bss_8; omObjData *lbl_1_bss_4; s32 lbl_1_bss_0; -void ModuleProlog(void) +void ObjectSetup(void) { Vec sp14; Vec sp8; diff --git a/src/REL/m406Dll/map.c b/src/REL/m406Dll/map.c index 01786521..ede77b39 100644 --- a/src/REL/m406Dll/map.c +++ b/src/REL/m406Dll/map.c @@ -21,13 +21,6 @@ typedef struct UnkM406Struct { /* 0x2C */ float unk_2C; } UnkM406Struct; /* size = 0x30 */ -typedef struct UnkM406Struct2 { - /* 0x00 */ float unk_00; - /* 0x04 */ float unk_04; - /* 0x08 */ Vec unk_08; - /* 0x14 */ Vec unk_14; -} UnkM406Struct2; /* size = 0x20 */ - typedef struct UnkM406Struct3 { /* 0x00 */ s32 unk_00; /* 0x04 */ float unk_04; @@ -492,7 +485,8 @@ omObjData *fn_1_2308(Process *arg0) if (var_r31 < 6) { var_r30 = Hu3DModelCreateFile(lbl_1_data_7C4[var_r31]); lbl_1_bss_CC->model[var_r31 + 7] = var_r30; - } else { + } + else { var_r30 = -1; lbl_1_bss_CC->model[var_r31 + 7] = var_r30; } @@ -519,7 +513,8 @@ omObjData *fn_1_2308(Process *arg0) for (var_r31 = 0; var_r31 < 3; var_r31++) { if (var_r31 == 0) { lbl_1_bss_C4->model[var_r31] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M406, 34)); - } else { + } + else { lbl_1_bss_C4->model[var_r31] = Hu3DModelLink(*lbl_1_bss_C4->model); } Hu3DModelShadowSet(lbl_1_bss_C4->model[var_r31]); @@ -599,7 +594,8 @@ void fn_1_2C24(omObjData *object) if (object->model[var_r29] != -1) { Hu3DModelAttrSet(object->model[var_r29], 1); } - } else { + } + else { if (object->model[var_r30] != -1) { Hu3DModelAttrReset(object->model[var_r30], 1); } @@ -614,7 +610,8 @@ void fn_1_2C24(omObjData *object) var_f31 = 25000.0f; if (fabs(Center.z - var_f31) < 15000.0) { Hu3DModelAttrSet(object->model[var_r29], 1); - } else { + } + else { Hu3DModelAttrReset(object->model[var_r29], 1); } } @@ -625,7 +622,8 @@ void fn_1_2C24(omObjData *object) for (var_r30 = 0; var_r30 < 3; var_r30++) { if (fabs(Center.z - lbl_1_data_780[var_r30].z) > 10000.0) { Hu3DModelAttrSet(lbl_1_bss_C4->model[var_r30], 1); - } else { + } + else { Hu3DModelAttrReset(lbl_1_bss_C4->model[var_r30], 1); } } @@ -749,7 +747,8 @@ void fn_1_3158(void) } if (var_r29 == 1 || var_r29 == 103) { var_r27->unk_14 = 0.6f; - } else { + } + else { var_r27->unk_14 = 1.0f; } var_r27->unk_18.x = var_r27->unk_18.y = var_r27->unk_18.z = 0.0f; @@ -842,22 +841,26 @@ void fn_1_3158(void) var_r30->unk_01 = 1; if (var_r29 < 6) { var_r30->unk_08 = (6 - var_r29) / 6.0f; - } else { + } + else { var_r30->unk_08 = 1.0f; } - } else { + } + else { var_r30->unk_01 = 0; var_r30->unk_08 = 0.0f; } if (!var_r25 || var_r25 == 34 || !var_r29) { var_r30->unk_00 = 0; var_r30->unk_04 = 0.0f; - } else { + } + else { var_r30->unk_00 = 1; if (var_r29 < 3) { var_r30->unk_04 = 0.5f + (0.5f * (var_r29 / 3.0f)); var_r30->unk_04 = sind(90.0f * var_r30->unk_04); - } else { + } + else { var_r30->unk_04 = 1.0f; } } @@ -870,7 +873,8 @@ void fn_1_3158(void) var_f31 = var_r25 / 6.0f; var_r30->unk_04 = var_r30->unk_04 * sind(90.0f * var_f31); var_r30->unk_0C = var_r30->unk_0C * sind(90.0f * var_f31); - } else if (var_r25 > 28) { + } + else if (var_r25 > 28) { var_f31 = (var_r25 - 28) / 6.0f; var_r30->unk_04 = var_r30->unk_04 * cosd(90.0f * var_f31); var_r30->unk_0C = var_r30->unk_0C * cosd(90.0f * var_f31); @@ -996,13 +1000,15 @@ void fn_1_4084(void) sp28.y = 0.5f * (var_r31->unk_34.y + var_r31->unk_40.y); sp28.z = 0.5f * (var_r31->unk_34.z + var_r31->unk_40.z); var_r31->unk_20 = HuAudFXEmiterPlay(1337, &sp28); - } else if (var_r31->unk_20 != -1) { + } + else if (var_r31->unk_20 != -1) { sp28.x = 0.5f * (var_r31->unk_34.x + var_r31->unk_40.x); sp28.y = 0.5f * (var_r31->unk_34.y + var_r31->unk_40.y); sp28.z = 0.5f * (var_r31->unk_34.z + var_r31->unk_40.z); HuAudFXEmiterUpDate(var_r31->unk_20, &sp28); } - } else if (var_r31->unk_20 != -1) { + } + else if (var_r31->unk_20 != -1) { HuAudFXStop(var_r31->unk_20); var_r31->unk_20 = -1; } @@ -1010,7 +1016,8 @@ void fn_1_4084(void) if (var_r31->unk_0C > var_r31->unk_18) { var_r31->unk_1C = var_r31->unk_0C - var_r31->unk_18; var_r31->unk_0C = var_r31->unk_18; - } else { + } + else { var_r31->unk_1C = 0.0f; } var_r28 = var_r31->unk_84; @@ -1025,10 +1032,12 @@ void fn_1_4084(void) var_r30 = 0; sp1C = lbl_1_data_F0[var_r30]; sp10 = lbl_1_data_438[var_r30]; - } else if (var_r30 < (lbl_1_bss_B4 - 1)) { + } + else if (var_r30 < (lbl_1_bss_B4 - 1)) { fn_1_D488(sp8, &lbl_1_data_F0[var_r30], &lbl_1_data_F0[var_r30 + 1], &sp1C); fn_1_D488(sp8, &lbl_1_data_438[var_r30], &lbl_1_data_438[var_r30 + 1], &sp10); - } else { + } + else { var_r30 = lbl_1_bss_B4 - 1; sp1C = lbl_1_data_F0[var_r30]; sp10 = lbl_1_data_438[var_r30]; @@ -1151,11 +1160,11 @@ void fn_1_4964(ModelData *arg0) GXColor *var_r19; var_r30 = arg0->unk_120; - (void)var_f31; - (void)var_f31; - (void)var_f31; - (void)var_f31; - + (void)var_f31; + (void)var_f31; + (void)var_f31; + (void)var_f31; + if (var_r30->unk_28) { if (!omPauseChk()) { fn_1_67CC(arg0); @@ -1241,12 +1250,13 @@ void fn_1_4964(ModelData *arg0) fn_1_71C4(spC4, spA0, 100.0f + (50.0f * (0.007874016f * (frand() & 0x7F))), -0.1f, sp3C); } var_r29 = var_r30->unk_2C; - memset(lbl_1_bss_48, 0, sizeof(UnkM406Struct5)); + memset(lbl_1_bss_48, 0, sizeof(UnkM406Struct5)); for (var_r27 = 0; var_r27 < 105; var_r27++, var_r29++) { fn_1_D488(var_r29->unk_04, &var_r30->unk_84[var_r29->unk_00], &var_r30->unk_84[var_r29->unk_00 + 1], &var_r29->unk_18); if (var_r29->unk_08 >= 0) { var_r29->unk_08--; - } else { + } + else { var_r29->unk_24 = fn_1_7B2C(var_r29->unk_0C); if (var_r29->unk_24 == NULL) { var_r29->unk_24 = &lbl_1_bss_48; @@ -1261,12 +1271,14 @@ void fn_1_4964(ModelData *arg0) sp3C.a = 0xFF; if (frand() & 1) { var_f31 = 0.05f; - } else { + } + else { var_f31 = -0.05f; } var_r29->unk_10 = 0.01f * (100.0f * (0.007874016f * (frand() & 0x7F))); var_r29->unk_0C = fn_1_79F8(spC4, spA0, 75.0f + (var_r29->unk_14 * (75.0f * (0.007874016f * (frand() & 0x7F)))), var_f31, sp3C); - } else { + } + else { var_r29->unk_18.y += var_r29->unk_10; var_r29->unk_24->unk_30 = var_r29->unk_18; } @@ -1277,13 +1289,15 @@ void fn_1_4964(ModelData *arg0) if ((frand() & 3) == 0) { var_f31 = 45.0f + (30.0f * (0.007874016f * (frand() & 0x7F))); var_f29 = 0.75f + (0.75f * (0.007874016f * (frand() & 0x7F))); - } else { + } + else { var_f31 = -(15.0f * (0.007874016f * (frand() & 0x7F))); var_f29 = 1.75f + (0.75f * (0.007874016f * (frand() & 0x7F))); } if (var_r30->unk_10 != 0.0f) { var_f30 = 15.000001f / var_r30->unk_10; - } else { + } + else { var_f30 = 1.0f; } spA0.y = var_f30 * ((7.5000005f * var_f29) * sind(var_f31)); @@ -1324,49 +1338,52 @@ void fn_1_4964(ModelData *arg0) default: break; } - } else { + } + else { Hu3DModelAttrSet(var_r31->unk_00, 1); var_r31->unk_08 = -1; var_r31->unk_0C--; } - } else if (var_r31->unk_08 >= 0) { + } + else if (var_r31->unk_08 >= 0) { var_r24 = fn_1_66F4(var_r30->unk_0C + var_r31->unk_18, &sp38); if (var_r24 >= 0 && var_r24 < (lbl_1_bss_B4 - 1)) { - fn_1_D488(sp38, &lbl_1_data_F0[var_r24], &lbl_1_data_F0[var_r24+1], &spB8); + fn_1_D488(sp38, &lbl_1_data_F0[var_r24], &lbl_1_data_F0[var_r24 + 1], &spB8); fn_1_D488(sp38, &lbl_1_data_438[var_r24], &lbl_1_data_438[var_r24 + 1], &spAC); fn_1_D488(var_r31->unk_10, &spB8, &spAC, &var_r31->unk_3C); Hu3DModelAttrReset(var_r31->unk_00, 1); - } else { + } + else { Hu3DModelAttrSet(var_r31->unk_00, 1); var_r31->unk_08 = -1; - continue; + continue; + } + + switch (var_r31->unk_04) { + case 0: + var_r31->unk_18 = var_r31->unk_1C * sind(5.0f * var_r31->unk_08); + var_r31->unk_20 = var_r31->unk_20 - var_r31->unk_2C; + Hu3DModelPosSet(var_r31->unk_00, var_r31->unk_3C.x, var_r31->unk_3C.y, var_r31->unk_3C.z); + Hu3DModelRotSet(var_r31->unk_00, var_r31->unk_20, var_r31->unk_24, 0.0f); + break; + case 1: + var_r31->unk_18 = var_r31->unk_1C * sind((float)var_r31->unk_08); + var_r31->unk_20 = var_r31->unk_20 - var_r31->unk_2C; + var_r31->unk_14 = var_r31->unk_14 + var_r31->unk_28; + if (var_r31->unk_14 < 0.0f) { + var_f30 = 0.65 + (0.15 * (0.007874016f * (frand() & 0x7F))); + var_f30 = var_f30; + var_r31->unk_14 = 0.0f; + var_r31->unk_28 = var_r31->unk_28 * -var_f30; + } + var_r31->unk_28 = var_r31->unk_28 - 0.32666668f; + var_r31->unk_3C.y += var_r31->unk_14; + Hu3DModelPosSet(var_r31->unk_00, var_r31->unk_3C.x, var_r31->unk_3C.y, var_r31->unk_3C.z); + Hu3DModelRotSet(var_r31->unk_00, var_r31->unk_20, var_r31->unk_24, 0.0f); + break; + default: + break; } - - switch (var_r31->unk_04) { - case 0: - var_r31->unk_18 = var_r31->unk_1C * sind(5.0f * var_r31->unk_08); - var_r31->unk_20 = var_r31->unk_20 - var_r31->unk_2C; - Hu3DModelPosSet(var_r31->unk_00, var_r31->unk_3C.x, var_r31->unk_3C.y, var_r31->unk_3C.z); - Hu3DModelRotSet(var_r31->unk_00, var_r31->unk_20, var_r31->unk_24, 0.0f); - break; - case 1: - var_r31->unk_18 = var_r31->unk_1C * sind((float)var_r31->unk_08); - var_r31->unk_20 = var_r31->unk_20 - var_r31->unk_2C; - var_r31->unk_14 = var_r31->unk_14 + var_r31->unk_28; - if (var_r31->unk_14 < 0.0f) { - var_f30 = 0.65 + (0.15 * (0.007874016f * (frand() & 0x7F))); - var_f30 = var_f30; - var_r31->unk_14 = 0.0f; - var_r31->unk_28 = var_r31->unk_28 * -var_f30; - } - var_r31->unk_28 = var_r31->unk_28 - 0.32666668f; - var_r31->unk_3C.y += var_r31->unk_14; - Hu3DModelPosSet(var_r31->unk_00, var_r31->unk_3C.x, var_r31->unk_3C.y, var_r31->unk_3C.z); - Hu3DModelRotSet(var_r31->unk_00, var_r31->unk_20, var_r31->unk_24, 0.0f); - break; - default: - break; - } } if (var_r31->unk_18 < (-0.1f * var_r31->unk_1C)) { var_r31->unk_08 = -1; @@ -1444,7 +1461,8 @@ void fn_1_64F8(UnkM406Struct2 *arg0) PSVECSubtract(&var_r28->unk_14, &var_r31->unk_14, &var_r31->unk_08); var_r31->unk_00 = PSVECMag(&var_r31->unk_08); PSVECNormalize(&var_r31->unk_08, &var_r31->unk_08); - } else { + } + else { var_r31->unk_00 = 100000.0f; var_r31->unk_08.x = 0.0f; var_r31->unk_08.y = 0.0f; @@ -1490,7 +1508,8 @@ void fn_1_67CC(ModelData *arg0) if (var_r31->unk_04 != 3 || var_r31->unk_0C > 0) { Hu3DModelAttrSet(var_r31->unk_00, 1); var_r31->unk_0C--; - } else { + } + else { var_r31->unk_20 = var_r31->unk_20 - var_r31->unk_2C; var_r31->unk_3C.x += var_r31->unk_30.x; var_r31->unk_3C.y += var_r31->unk_30.y; @@ -1533,7 +1552,7 @@ void fn_1_69C0(Vec *arg0) } } -s32 fn_1_6A44(Vec *arg0) +s32 fn_1_6A44(Vec arg0) { Vec sp20; Vec sp14; @@ -1553,7 +1572,7 @@ s32 fn_1_6A44(Vec *arg0) PSVECScale(&sp8, &sp8, 0.5f); PSVECSubtract(&var_r31->unk_34, &sp8, &sp20); PSVECSubtract(&var_r31->unk_40, &sp8, &sp14); - var_f31 = fn_1_D5CC(&sp20, &sp14, arg0->x - sp8.x, arg0->z - sp8.z); + var_f31 = fn_1_D5CC(&sp20, &sp14, arg0.x - sp8.x, arg0.z - sp8.z); if (var_f31 <= 0.0f) { return 0; } @@ -1795,7 +1814,8 @@ void fn_1_77F0(void) var_r31 = var_r29->unk_3C; if (fn_1_122C() < 3) { var_r29->unk_22 |= 1; - } else { + } + else { var_r29->unk_22 &= 0xFFFFFFFE; } for (var_r28 = 0; var_r28 < var_r29->unk_26; var_r28++, var_r31++) { @@ -2039,24 +2059,23 @@ void fn_1_7F80(void) void fn_1_8100(void) { } - s32 fn_1_8104(Vec arg0, Vec arg1, float arg8, GXColor arg2) { UnkM406Struct5 *var_r31; UnkM406Unk120Struct2 *var_r30; - UnkM406Struct6 *var_r28; + UnkM406Struct6 *var_r28; s32 var_r29; - + ModelData *var_r27; - - var_r28 = lbl_1_bss_A4; - + + var_r28 = lbl_1_bss_A4; + var_r27 = &Hu3DData[var_r28->unk_00]; var_r30 = var_r27->unk_120; var_r31 = var_r30->unk_3C; for (var_r29 = 0; var_r29 < var_r30->unk_26; var_r29++, var_r31++) { if (var_r31->unk_28 <= 0.0f) { - + break; } } @@ -2090,7 +2109,6 @@ s32 fn_1_8104(Vec arg0, Vec arg1, float arg8, GXColor arg2) return var_r29; } - void fn_1_8244(s32 arg0, s32 arg1, float arg8, float arg9) { UnkM406Struct5 *var_r31; @@ -2212,7 +2230,8 @@ void fn_1_8F98(void) PSMTXIdentity(var_r31->unk_1C); if (var_r30 == 0) { var_r31->unk_04 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M406, 59)); - } else { + } + else { var_r31->unk_04 = Hu3DModelLink(lbl_1_bss_A0->unk_04); } Hu3DModelLayerSet(var_r31->unk_04, 3); @@ -2230,7 +2249,8 @@ void fn_1_8F98(void) PSMTXIdentity(var_r31->unk_1C); if (var_r30 == 0) { var_r31->unk_04 = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M406, 60)); - } else { + } + else { var_r31->unk_04 = Hu3DModelLink(lbl_1_bss_A0[64].unk_04); } Hu3DModelLayerSet(var_r31->unk_04, 3); @@ -2338,7 +2358,8 @@ s32 fn_1_94C0(Mtx arg0, s32 arg1, s32 arg2) sp40.y += sp64.y; sp40.z += sp64.z; mtxRotCat(spA0, 0.0f, 180.0f + (45.0f * (0.007874016f * (frand() & 0x7F))), 0.0f); - } else { + } + else { sp4C = sp64; sp4C.x = -25.0f; sp4C.z = -50.0f; @@ -2380,7 +2401,8 @@ s32 fn_1_94C0(Mtx arg0, s32 arg1, s32 arg2) if (var_r28 >= 64) { return -1; } - } else { + } + else { for (var_r28 = 0, var_r31 = &lbl_1_bss_A0[64]; var_r28 < 64; var_r28++, var_r31++) { if (!var_r31->unk_00) { break; @@ -2533,15 +2555,17 @@ void fn_1_A2C8(ModelData *arg0, UnkM406Unk120Struct2 *arg1, Mtx arg2) var_r31->unk_30.y = -27000.0f + (var_f26 * sp18.y); var_r31->unk_30.z = -63000.0f + (var_f26 * sp18.z); var_r31->unk_28 = (0.3f + (0.7f * (var_f25 * var_f25))) - * (lbl_1_data_8A4[var_r29->unk_02] * (0.699999988079071 + (0.30000001192092896 * (1.52587890625e-05 * (float)(frand() & 0xFFFF))))); + * (lbl_1_data_8A4[var_r29->unk_02] + * (0.699999988079071 + (0.30000001192092896 * (1.52587890625e-05 * (float)(frand() & 0xFFFF))))); var_r31->unk_3C.r = (s32)(160.0 * (1.52587890625e-05 * (float)(frand() & 0xFFFF))) + 0x20; var_r31->unk_3C.g = (s32)(96.0 * (1.52587890625e-05 * (float)(frand() & 0xFFFF))) + 0x20; var_r31->unk_3C.b = (s32)(128.0 * (1.52587890625e-05 * (float)(frand() & 0xFFFF))) + 0x20; - var_r31->unk_3C.a - = ((1.0 - (0.4 * var_f25)) * (255.0f * lbl_1_data_8B4[var_r29->unk_02])) - (int)(16.0 * (1.52587890625e-05 * (float)(frand() & 0xFFFF))); + var_r31->unk_3C.a = ((1.0 - (0.4 * var_f25)) * (255.0f * lbl_1_data_8B4[var_r29->unk_02])) + - (int)(16.0 * (1.52587890625e-05 * (float)(frand() & 0xFFFF))); } var_r29->unk_04++; - } else { + } + else { var_r31->unk_30.x = 0.0f; var_r31->unk_30.y = -27000.0f; var_r31->unk_30.z = -63000.0f; @@ -2881,18 +2905,22 @@ void fn_1_BC18(ModelData *arg0, float (*arg1)[4]) 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 { + } + else { var_r21 = var_r31->unk_38->bmp->dataFmt & 0xF; if (var_r21 == 7 || var_r21 == 8) { GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ONE, GX_CC_RASC, GX_CC_ZERO); - } else { + } + else { GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); } if (var_r31->unk_22 & 1) { GXSetZMode(GX_FALSE, GX_LEQUAL, GX_FALSE); - } else if (arg0->attr & 2) { + } + else if (arg0->attr & 2) { GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); - } else { + } + else { GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); } } @@ -2947,7 +2975,8 @@ void fn_1_BC18(ModelData *arg0, float (*arg1)[4]) var_r30++; var_r30->x = var_r30->y = var_r30->z = 0.0f; var_r30++; - } else if (!var_r29->unk_2C) { + } + else if (!var_r29->unk_2C) { var_r27 = &sp98[0]; var_r24 = &sp38[0]; PSVECScale(var_r24++, var_r27, var_r29->unk_28); @@ -2958,7 +2987,8 @@ void fn_1_BC18(ModelData *arg0, float (*arg1)[4]) PSVECAdd(var_r27++, &var_r29->unk_30, var_r30++); PSVECScale(var_r24++, var_r27, var_r29->unk_28); PSVECAdd(var_r27++, &var_r29->unk_30, var_r30++); - } else { + } + else { PSVECScale(lbl_1_data_8E0, &sp98[0], var_r29->unk_28); PSVECScale(&lbl_1_data_8E0[1], &sp98[1], var_r29->unk_28); PSVECScale(&lbl_1_data_8E0[2], &sp98[2], var_r29->unk_28); @@ -2983,7 +3013,8 @@ void fn_1_BC18(ModelData *arg0, float (*arg1)[4]) var_r28->y = (0.25f * var_r19) + lbl_1_data_910[var_r25].y; } } - } else { + } + else { for (var_r26 = 0; var_r26 < var_r31->unk_26; var_r26++, var_r29++) { for (var_r25 = 0; var_r25 < 4; var_r25++, var_r28++) { var_r28->x = 4.0f * lbl_1_data_910[var_r25].x; @@ -3113,7 +3144,8 @@ void fn_1_C86C(ModelData *arg0, Mtx arg1) GXSetZCompLoc(GX_FALSE); if (arg0->attr & 2) { GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); - } else { + } + else { GXSetZMode(GX_TRUE, GX_LEQUAL, GX_FALSE); } switch (var_r31->unk_20) { @@ -3156,7 +3188,8 @@ void fn_1_C86C(ModelData *arg0, Mtx arg1) var_r30++; var_r30->x = var_r30->y = var_r30->z = 0.0f; var_r30++; - } else { + } + else { var_r28 = (Vec *)&sp6C; var_r27 = (Vec *)&sp3C; PSVECScale(var_r27++, var_r28, var_r29->unk_28); @@ -3332,13 +3365,15 @@ void fn_1_D13C(LightData *arg0, s16 arg1, Mtx arg2, Mtx arg3, float arg8) PSMTXMultVec(arg2, &arg0->unk_28, &sp24); PSMTXMultVec(arg3, &arg0->unk_1C, &sp18); GXInitLightPos(&sp30, sp18.x, sp18.y, sp18.z); - } else { + } + else { GXInitLightPos(&sp30, arg0->unk_1C.x, arg0->unk_1C.y, arg0->unk_1C.z); sp24 = arg0->unk_28; } if (arg8 == 0.0f) { GXInitLightDir(&sp30, sp24.x, sp24.y, sp24.z); - } else { + } + else { GXInitSpecularDir(&sp30, sp24.x, sp24.y, sp24.z); GXInitLightAttn(&sp30, 0.0f, 0.0f, 1.0f, arg8 / 2, 0.0f, 1.0f - (arg8 / 2)); } diff --git a/src/REL/m406Dll/player.c b/src/REL/m406Dll/player.c new file mode 100644 index 00000000..62e6e5da --- /dev/null +++ b/src/REL/m406Dll/player.c @@ -0,0 +1,2081 @@ +#include "ext_math.h" +#include "game/audio.h" +#include "game/chrman.h" +#include "game/gamework_data.h" +#include "game/hsfdraw.h" +#include "game/hsfload.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/objsub.h" +#include "game/pad.h" +#include "game/sprite.h" + +#include "REL/m406Dll.h" + +typedef struct UnkM406PlayerStruct { + /* 0x00 */ float unk_00; + /* 0x04 */ float unk_04; +} UnkM406PlayerStruct; /* size = 0x08 */ + +typedef struct UnkM406PlayerStruct2 { + /* 0x00 */ Vec *unk_00; + /* 0x04 */ HsfFace *unk_04; + /* 0x08 */ s16 unk_08; +} UnkM406PlayerStruct2; /* size = 0x084C */ + +typedef struct M406PlayerWork { + /* 0x00 */ union { + struct { + u8 unk_00_field0 : 1; + u8 unk_00_field1 : 1; + u8 unk_00_field2 : 1; + u8 unk_00_field3 : 1; + u8 unk_00_field4 : 1; + u8 unk_00_field5 : 1; + }; + s16 unk_00; + }; + s16 unk_02; + s16 unk_04; + s8 unk_06; + s8 unk_07; + u16 unk_08; + u16 unk_0A; + s16 unk_0C; + s16 unk_0E; + s16 unk_10; + s16 unk_12; + Vec unk_14; + char unk20[0xC]; + Vec unk_2C; + s32 unk_38; + u32 unk_3C; + float unk_40; + UnkM406PlayerStruct2 unk_44; + float unk_50; + float unk_54; + s16 unk_58; + s16 unk_5A; + s16 unk_5C; + s16 unk_5E; + s16 unk_60; + s16 unk_62; + s16 unk_64; + float unk_68; + float unk_6C; + float unk_70; + float unk_74; + float unk_78; + s32 unk_7C[2]; +} M406PlayerWork; /* size = 0x84 */ + +void fn_1_1065C(omObjData *object); +void fn_1_10744(omObjData *object); +void fn_1_11058(omObjData *object); +void fn_1_114A0(omObjData *object); +void fn_1_117BC(float arg8, float arg9, UnkM406PlayerStruct2 *arg0, Vec *arg1); +float fn_1_12194(Vec *arg0); +void fn_1_12270(omObjData *object); +void fn_1_1275C(); +s32 fn_1_127B8(); +s32 fn_1_129E4(omObjData *object); +void fn_1_12AB8(omObjData *object); +void fn_1_12B00(omObjData *object); +void fn_1_12B38(Vec *arg0); +void fn_1_12BC4(omObjData *); +void fn_1_13A88(s16 arg0, char *arg1, Mtx arg2); +float fn_1_13AF4(float arg8, float arg9, float argA); +s32 fn_1_13C10(Vec *arg0, Vec *arg1); +float fn_1_143F4(Vec *arg0, UnkM406PlayerStruct2 *arg1); +void fn_1_D90C(omObjData *object); +void fn_1_DD7C(omObjData *object, s32 arg1, float arg8, u32 arg2); +void fn_1_DE60(omObjData *object); +void fn_1_E214(omObjData *object); +void fn_1_F194(omObjData *object); +void fn_1_F694(omObjData *object); +void fn_1_FA50(ModelData *model, Mtx mtx); + +Vec lbl_1_data_960[70] = { + { -495.876f, 50.005f, -0.0f }, + { -500.023f, -2841.226f, -5007.74f }, + { -502.015f, -7170.411f, -12506.11f }, + { -515.622f, -8314.231f, -14487.27f }, + { -515.6f, -8761.908f, -15262.67f }, + { -508.661f, -9195.703f, -16014.02f }, + { -494.762f, -9629.499f, -16765.38f }, + { -473.947f, -10063.294f, -17516.73f }, + { -471.378f, -10495.727f, -18265.73f }, + { -495.719f, -10915.74f, -18993.21f }, + { -552.519f, -11337.781f, -19724.21f }, + { -621.485f, -11611.703f, -20198.66f }, + { -731.018f, -11887.653f, -20676.62f }, + { -950.131f, -12303.607f, -21397.07f }, + { -1209.766f, -12735.795f, -22145.64f }, + { -1469.474f, -13170.012f, -22897.73f }, + { -1627.69f, -13466.252f, -23410.83f }, + { -1757.595f, -13772.641f, -23941.51f }, + { -1838.731f, -14079.026f, -24472.19f }, + { -1871.186f, -14393.528f, -25016.92f }, + { -1834.734f, -14703.97f, -25554.62f }, + { -1749.541f, -15014.414f, -26092.33f }, + { -1623.78f, -15312.685f, -26608.94f }, + { -1384.433f, -15761.101f, -27385.62f }, + { -1124.798f, -16191.259f, -28130.68f }, + { -775.859f, -16769.535f, -29132.28f }, + { -568.923f, -17183.457f, -29849.22f }, + { -398.537f, -17621.73f, -30608.33f }, + { -187.485f, -18055.945f, -31360.41f }, + { 96.491f, -18634.223f, -32362.02f }, + { 254.886f, -19042.057f, -33068.41f }, + { 315.738f, -19315.977f, -33542.85f }, + { 331.965f, -19581.783f, -34003.24f }, + { 291.397f, -19839.473f, -34449.57f }, + { 189.969f, -20091.07f, -34885.35f }, + { -12.871f, -20340.645f, -35317.62f }, + { -325.245f, -20598.332f, -35763.96f }, + { -747.265f, -20870.219f, -36234.88f }, + { -1230.024f, -21152.258f, -36723.38f }, + { -2276.853f, -21730.535f, -37724.99f }, + { -2759.968f, -22028.799f, -38241.6f }, + { -3189.989f, -22343.3f, -38786.33f }, + { -3514.533f, -22669.979f, -39352.15f }, + { -3620.335f, -22840.408f, -39647.35f }, + { -3693.358f, -23018.965f, -39956.61f }, + { -3705.528f, -23193.463f, -40258.85f }, + { -3693.358f, -23367.96f, -40561.09f }, + { -3551.37f, -23698.695f, -41133.94f }, + { -3307.945f, -24019.275f, -41689.2f }, + { -2995.571f, -24323.633f, -42216.36f }, + { -2646.686f, -24621.904f, -42732.99f }, + { -1920.124f, -25200.174f, -43734.58f }, + { -1457.648f, -25612.07f, -44448.0f }, + { -1238.474f, -25871.78f, -44897.83f }, + { -1084.316f, -26137.584f, -45358.22f }, + { -958.555f, -26417.594f, -45843.21f }, + { -861.049f, -26697.596f, -46328.19f }, + { -783.97f, -26979.635f, -46816.69f }, + { -715.004f, -27261.672f, -47305.2f }, + { -617.584f, -27979.957f, -48549.3f }, + { -548.553f, -28700.271f, -49796.93f }, + { -491.712f, -29278.535f, -50798.51f }, + { -475.485f, -29856.814f, -51800.12f }, + { -479.514f, -30433.059f, -52798.2f }, + { -505.531f, -34619.363f, -60049.28f }, + { -513.632f, -34659.062f, -60100.39f }, + { -509.573f, -34721.215f, -60151.54f }, + { -509.589f, -34805.496f, -60191.15f }, + { -509.587f, -34970.055f, -60233.17f }, + { -509.591f, -45195.266f, -61377.84f }, +}; + +Vec lbl_1_data_CA8[70] = { + { 497.979f, 49.997f, 0.0f }, + { 501.235f, -2841.251f, -5007.79f }, + { 497.983f, -7170.06f, -12505.5f }, + { 479.876f, -8314.231f, -14487.27f }, + { 479.899f, -8761.908f, -15262.67f }, + { 486.837f, -9195.703f, -16014.02f }, + { 500.736f, -9629.499f, -16765.38f }, + { 521.552f, -10063.294f, -17516.73f }, + { 524.121f, -10495.727f, -18265.73f }, + { 503.13f, -10936.027f, -19028.35f }, + { 446.486f, -11379.887f, -19797.14f }, + { 364.665f, -11685.236f, -20326.02f }, + { 245.082f, -11987.438f, -20849.45f }, + { 18.48f, -12434.451f, -21623.7f }, + { -252.156f, -12875.162f, -22387.03f }, + { -497.617f, -13300.134f, -23123.1f }, + { -655.129f, -13580.305f, -23608.37f }, + { -768.419f, -13847.879f, -24071.83f }, + { -843.945f, -14131.193f, -24562.54f }, + { -875.687f, -14393.528f, -25016.92f }, + { -850.353f, -14653.739f, -25467.62f }, + { -768.533f, -14927.61f, -25941.98f }, + { -642.655f, -15201.48f, -26416.33f }, + { -428.664f, -15620.156f, -27141.5f }, + { -170.569f, -16051.424f, -27888.48f }, + { 188.182f, -16636.941f, -28902.62f }, + { 408.467f, -17083.947f, -29676.86f }, + { 572.186f, -17512.059f, -30418.37f }, + { 786.178f, -17940.18f, -31159.9f }, + { 1075.696f, -18525.695f, -32174.04f }, + { 1245.631f, -18972.703f, -32948.28f }, + { 1315.06f, -19274.898f, -33471.7f }, + { 1327.648f, -19592.842f, -34022.39f }, + { 1283.591f, -19907.637f, -34567.64f }, + { 1157.714f, -20235.021f, -35134.68f }, + { 887.077f, -20562.406f, -35701.73f }, + { 496.857f, -20883.496f, -36257.87f }, + { 31.029f, -21188.842f, -36786.75f }, + { -491.693f, -21487.889f, -37304.71f }, + { -1517.594f, -22057.664f, -38291.59f }, + { -1958.808f, -22331.527f, -38765.94f }, + { -2323.853f, -22595.953f, -39223.93f }, + { -2588.195f, -22850.938f, -39665.58f }, + { -2651.134f, -22964.264f, -39861.87f }, + { -2695.42f, -23074.441f, -40052.7f }, + { -2714.302f, -23187.768f, -40248.99f }, + { -2689.126f, -23316.832f, -40472.53f }, + { -2594.718f, -23552.928f, -40881.46f }, + { -2393.337f, -23814.195f, -41334.0f }, + { -2116.406f, -24081.771f, -41797.45f }, + { -1782.831f, -24371.38f, -42299.07f }, + { -1059.036f, -24941.158f, -43285.95f }, + { -561.404f, -25391.299f, -44065.62f }, + { -290.767f, -25709.24f, -44616.31f }, + { -108.245f, -26024.033f, -45161.55f }, + { 23.926f, -26323.088f, -45679.52f }, + { 130.922f, -26625.29f, -46202.95f }, + { 212.947f, -26918.023f, -46709.98f }, + { 275.886f, -27213.93f, -47222.51f }, + { 376.588f, -27941.104f, -48482.01f }, + { 452.187f, -28658.824f, -49725.14f }, + { 508.832f, -29241.193f, -50733.83f }, + { 521.5f, -29814.105f, -51726.14f }, + { 515.985f, -30433.059f, -52798.2f }, + { 503.81f, -34617.785f, -60046.38f }, + { 495.709f, -34657.49f, -60097.48f }, + { 499.768f, -34719.64f, -60148.64f }, + { 499.752f, -34803.92f, -60188.25f }, + { 499.754f, -34968.48f, -60230.3f }, + { 499.75f, -45193.69f, -61374.92f }, +}; + +float lbl_1_data_FF0[4] = { -300.0f, -100.0f, 100.0f, 300.0f }; + +char *lbl_1_data_1068[4] = { + "test11_tex_we-itemhook-l", + "test11_tex_we-itemhook-r", + "test11_tex_we-itemhook-fl", + "test11_tex_we-itemhook-fr", +}; + +s32 lbl_1_data_1078[10] = { + 0x5F0037, + 0x5F0055, + 0x5F0039, + 0x5F0054, + 0x5F0041, + 0x5F0056, + 0x5F0050, + 0x5F0016, + 0x5F0053, + 0x5F0023, +}; + +s32 lbl_1_data_10A0[8][4] = { + { 0x250000, 0x250001, 0x250010, 0x250011 }, + { 0x250002, 0x250003, 0x250012, 0x250013 }, + { 0x250004, 0x250005, 0x250014, 0x250015 }, + { 0x250006, 0x250007, 0x250016, 0x250017 }, + { 0x250008, 0x250009, 0x250018, 0x250019 }, + { 0x25000A, 0x25000B, 0x25001A, 0x25001B }, + { 0x25000C, 0x25000D, 0x25001C, 0x25001D }, + { 0x25000E, 0x25000F, 0x25001E, 0x25001F }, +}; + +s32 lbl_1_data_1120[8] = { + 0x250045, + 0x250046, + 0x250047, + 0x250048, + 0x250049, + 0x25004A, + 0x25004B, + 0x25004C, +}; + +s16 lbl_1_data_1140[4] = { 0, 40, 20, 90 }; + +omObjData *lbl_1_bss_1F8; +s16 lbl_1_bss_1F6; +s16 lbl_1_bss_1F4; +s16 lbl_1_bss_1E8[6]; +s16 lbl_1_bss_1DC[6]; +s16 lbl_1_bss_1D0[6]; +s32 lbl_1_bss_1CC; +Process *lbl_1_bss_1C8; +s32 lbl_1_bss_1C4; +Vec lbl_1_bss_104[16]; +float lbl_1_bss_100; +s32 lbl_1_bss_F8[2]; +Vec lbl_1_bss_E0[2]; +s32 lbl_1_bss_DC; +s32 lbl_1_bss_D8; + +void fn_1_D65C(Process *arg0) +{ + HsfMaterial *var_r31; + s32 var_r30; + s32 var_r29; + HsfData *var_r28; + omObjData **var_r26; + ModelData *var_r25; + s16 var_r24; + + lbl_1_bss_1CC = -1; + lbl_1_bss_1F6 = lbl_1_bss_1F4 = 0; + lbl_1_bss_1C8 = arg0; + omMakeGroupEx(arg0, 0, 4); + for (var_r30 = 0; var_r30 < 4; var_r30++) { + omAddObjEx(arg0, 0x40, 0xA, 0x32, 0, fn_1_D90C); + } + var_r24 = Hu3DHookFuncCreate(fn_1_FA50); + Hu3DModelLayerSet(var_r24, 7); + lbl_1_bss_1F8 = omAddObjEx(arg0, 0x45, 0, 0, -1, fn_1_12B00); + var_r26 = omGetGroupMemberListEx(HuPrcCurrentGet(), 2); + for (var_r30 = 0; var_r30 < 6; var_r30++) { + lbl_1_bss_1E8[var_r30] = lbl_1_bss_1DC[var_r30] = lbl_1_bss_1D0[var_r30] = -1; + var_r25 = &Hu3DData[(*var_r26)->model[var_r30]]; + var_r28 = var_r25->hsfData; + for (var_r29 = 0; var_r29 < var_r28->materialCnt; var_r29++) { + var_r31 = &var_r28->material[var_r29]; + if (var_r31->color[0] == 0xFF && var_r31->color[1] == 0 && var_r31->color[2] == 0) { + lbl_1_bss_1E8[var_r30] = var_r29; + } + if (var_r31->color[0] == 0 && var_r31->color[1] == 0xFF && var_r31->color[2] == 0) { + lbl_1_bss_1D0[var_r30] = var_r29; + } + if (var_r31->color[0] == 0 && var_r31->color[1] == 0 && var_r31->color[2] == 0xFF) { + lbl_1_bss_1DC[var_r30] = var_r29; + } + } + } +} + +void fn_1_D8B0(void) +{ + s32 var_r31; + omObjData **var_r30; + + var_r30 = omGetGroupMemberListEx(HuPrcCurrentGet(), 0); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + fn_1_12AB8(var_r30[var_r31]); + } +} + +void fn_1_D90C(omObjData *object) +{ + Mtx sp8; + + M406PlayerWork *var_r31; + s32 var_r29; + s32 var_r28; + + object->data = var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M406PlayerWork), MEMORY_DEFAULT_NUM); + memset(var_r31, 0, sizeof(M406PlayerWork)); + var_r31->unk_02 = lbl_1_bss_1F6++; + var_r31->unk_00_field0 = 0; + var_r31->unk_00_field1 = 1; + var_r31->unk_04 = GWPlayerCfg[var_r31->unk_02].pad_idx; + var_r28 = var_r31->unk_0C = GWPlayerCfg[var_r31->unk_02].character; + var_r31->unk_0E = GWPlayerCfg[var_r31->unk_02].diff; + var_r31->unk_10 = GWPlayerCfg[var_r31->unk_02].group; + object->model[0] = CharModelCreate(var_r28, 8); + for (var_r29 = 0; var_r29 < 4; var_r29++) { + object->model[var_r29 + 1] = Hu3DModelCreateFile(lbl_1_data_10A0[var_r28][var_r29]); + Hu3DModelHookSet(object->model[0], lbl_1_data_1068[var_r29], object->model[var_r29 + 1]); + } + Hu3DModelShadowSet(object->model[0]); + CharModelLayerSetAll(Hu3DData[object->model[0]].layer + 1); + object->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M406, 32)); + Hu3DModelHookSet(object->model[0], "test11_tex_we-itemhook-body", object->model[5]); + Hu3DModelAttrSet(object->model[5], 1); + fn_1_13A88(object->model[0], "test11_tex_we-itemhook-body", sp8); + var_r31->unk_68 = sp8[0][3]; + var_r31->unk_6C = sp8[1][3]; + var_r31->unk_70 = sp8[2][3]; + object->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M406, 33)); + Hu3DModelAttrSet(object->model[6], 1); + object->model[7] = Hu3DModelCreateFile(lbl_1_data_1120[var_r31->unk_0C]); + Hu3DModelAttrSet(object->model[7], 1); + for (var_r29 = 0; (u32)var_r29 < 10; var_r29++) { + object->motion[var_r29] = CharModelMotionCreate(var_r31->unk_0C, lbl_1_data_1078[var_r29]); + } + var_r31->unk_38 = -1; + var_r31->unk_58 = 0; + var_r31->unk_14.y = 0.0f; + var_r31->unk_14.z = 45.0f; + fn_1_DD7C(object, 0, 1.0f, 0x40000001); + object->trans.x = lbl_1_data_FF0[var_r31->unk_02]; + object->trans.z = -500.0f; + object->trans.y = fn_1_143F4(&object->trans, &var_r31->unk_44); + fn_1_117BC(var_r31->unk_14.x, 50.0f, &var_r31->unk_44, &var_r31->unk_2C); + object->rot.x = 30.0f; + object->rot.y = 180.0f; + object->work[3] = lbl_1_data_1140[var_r31->unk_02]; + CharModelDataClose(var_r31->unk_0C); + var_r31->unk_7C[0] = var_r31->unk_7C[1] = -1; + var_r31->unk_78 = 600.0f * ((frand() & 0x1FF) - 256.0f) / 256.0f; + object->func = fn_1_DE60; +} + +Vec lbl_1_data_1164[12] = { + { -100.0f, 0.0f, -1000.0f }, + { -200.0f, 0.0f, -2000.0f }, + { -100.0f, 0.0f, -3000.0f }, + { -50.0f, 0.0f, -1000.0f }, + { 100.0f, 0.0f, -1500.0f }, + { 0.0f, 0.0f, -3000.0f }, + { 100.0f, 0.0f, -1000.0f }, + { -100.0f, 0.0f, -2000.0f }, + { 200.0f, 0.0f, -3000.0f }, + { 200.0f, 0.0f, -1000.0f }, + { 300.0f, 0.0f, -1500.0f }, + { -100.0f, 0.0f, -3000.0f }, +}; + +s32 lbl_1_data_11F4 = 0xC0; + +UnkM406PlayerStruct lbl_1_data_11F8[4] = { + { -300.0f, -600.0f }, + { -100.0f, -400.0f }, + { 100.0f, -300.0f }, + { 450.0f, -900.0f }, +}; + +UnkM406PlayerStruct lbl_1_data_1218[3] = { + { -320.0f, -700.0f }, + { 250.0f, -1000.0f }, + { 380.0f, -500.0f }, +}; + +void fn_1_DD7C(omObjData *object, s32 arg1, float arg8, u32 arg2) +{ + ModelData *spC; + M406PlayerWork *var_r31; + + var_r31 = object->data; + spC = &Hu3DData[object->model[0]]; + if (arg1 != var_r31->unk_38) { + CharModelMotionShiftSet(var_r31->unk_0C, object->motion[arg1], 0.0f, 10.0f, arg2); + var_r31->unk_40 = -1.0f; + var_r31->unk_38 = arg1; + var_r31->unk_3C = arg2; + } + if (arg8 != var_r31->unk_40) { + CharModelMotionSpeedSet(var_r31->unk_0C, 1.0f); + } +} + +void fn_1_DE60(omObjData *object) +{ + float sp8; + + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + + M406PlayerWork *var_r30; + Vec *var_r29; + + var_r30 = object->data; + if (var_r30->unk_00_field4 == 0) { + if (fn_1_122C() <= 1 && var_r30->unk_7C[0] < 0) { + var_r30->unk_7C[0] = HuAudFXEmiterPlay(0x53A, &object->trans); + } + if (object->work[3] != 0) { + object->work[3] -= 1; + return; + } + var_r29 = &lbl_1_data_1164[object->work[0] + (var_r30->unk_02 * 3)]; + var_f31 = var_r29->x - object->trans.x; + var_f30 = var_r29->z - object->trans.z; + var_f27 = atan2d(-var_f31, -var_f30); + var_r30->unk_14.x += 0.1f * (var_f27 - var_r30->unk_14.x); + var_f26 = sqrtf((var_f31 * var_f31) + (var_f30 * var_f30)); + if (var_f26 < 100.0f) { + object->work[0]++; + if (object->work[0] > 2) { + var_r30->unk_00_field4 = 1; + var_r30->unk_14.x = 0.0f; + object->trans.x = lbl_1_data_FF0[var_r30->unk_02]; + object->trans.z = -3000.0f; + object->trans.y = fn_1_143F4(&object->trans, &var_r30->unk_44); + fn_1_117BC(var_r30->unk_14.x, 50.0f, &var_r30->unk_44, &var_r30->unk_2C); + object->func = fn_1_E214; + } + } + fn_1_F694(object); + object->trans.x += var_r30->unk_2C.x; + object->trans.y += var_r30->unk_2C.y; + object->trans.z += var_r30->unk_2C.z; + object->trans.y = fn_1_143F4(&object->trans, &var_r30->unk_44); + object->rot.x = 30.0f; + object->rot.y = 180.0f + var_r30->unk_14.x; + HuAudFXEmiterUpDate(var_r30->unk_7C[0], &object->trans); + } +} + +void fn_1_E214(omObjData *object) +{ + Mtx sp94; + Mtx sp64; + Mtx sp34; + Vec sp28; + Vec sp1C; + + float var_f31; + float var_f30; + float var_f29; + double var_f28; + + M406PlayerWork *var_r31; + u16 var_r27; + ModelData *var_r26; + u16 var_r25; + s32 var_r24; + s16 var_r23; + s16 var_r22; + + var_r31 = object->data; + var_r27 = 0xFFFF; + var_r25 = 0; + var_r26 = &Hu3DData[object->model[0]]; + + if (fn_1_122C() >= 2) { + if (var_r31->unk_00_field0 != 0) { + fn_1_DD7C(object, 9, 1.0f, 0); + if ((var_r26->attr & 1) == 0) { + Hu3D3Dto2D(&object->trans, 1, &sp28); + if (sp28.x < 0.0 || sp28.x >= 576.0f || sp28.y < 0.0 || sp28.y >= 480.0f) { + Hu3DModelAttrSet(object->model[0], 1); + } + } + return; + } + if (fn_1_122C() != 4) { + var_r31->unk_08 = var_r31->unk_0A = 0; + var_r31->unk_06 = var_r31->unk_07 = 0; + } + else if (!GWPlayerCfg[var_r31->unk_02].iscom) { + var_r31->unk_06 = HuPadStkX[var_r31->unk_04]; + var_r31->unk_07 = HuPadStkY[var_r31->unk_04]; + var_r31->unk_08 = HuPadBtn[var_r31->unk_04]; + var_r31->unk_0A = HuPadBtnDown[var_r31->unk_04]; + } + else { + var_r31->unk_08 = var_r31->unk_0A = 0; + var_r31->unk_06 = var_r31->unk_07 = 0; + fn_1_12270(object); + } + switch (var_r31->unk_12) { + case 0: + var_r23 = (var_r31->unk_06 * cosd(CRot.y)) - var_r31->unk_07 * sind(CRot.y); + var_r22 = (var_r31->unk_06 * sind(CRot.y)) + var_r31->unk_07 * cosd(CRot.y); + if (((var_r23 * var_r23) + (var_r22 * var_r22)) > 16.0f) { + var_f29 = 180.0 + (atan2d(var_r23, -var_r22)); + var_r31->unk_14.x = fn_1_13AF4(var_r31->unk_14.x, var_f29, 0.05f); + if (var_r31->unk_14.x >= 180.0f) { + var_r31->unk_14.x -= 360.0f; + } + if (var_r31->unk_14.x < -60.0f) { + var_r31->unk_14.x = -60.0f; + } + else if (var_r31->unk_14.x > 60.0f) { + var_r31->unk_14.x = 60.0f; + } + } + var_r27 = 0; + var_f31 = 1.0f; + var_r25 = 1; + if (var_r31->unk_00_field2 == 0 && var_r31->unk_58 == 0 && var_r31->unk_0A & 0x100) { + var_r31->unk_58 = 0x1E; + var_r31->unk_38 = -1; + var_r31->unk_62 = 0; + } + if (var_r31->unk_58 != 0) { + var_r27 = 1; + var_f31 = 1.0f; + var_r25 = 0; + var_r31->unk_58--; + if (var_r31->unk_58 == 5) { + HuAudFXPlay(0x540); + fn_1_117BC(var_r31->unk_14.x, 10.0f, &var_r31->unk_44, &sp1C); + PSVECAdd(&var_r31->unk_2C, &sp1C, &var_r31->unk_2C); + } + } + if (var_r31->unk_00_field2 == 0) { + if (var_r31->unk_44.unk_08 == 1) { + var_r31->unk_00_field2 = 1; + var_r31->unk_60 = 0x14; + PSVECScale(&var_r31->unk_2C, &var_r31->unk_2C, 1.5f); + if (PSVECMag(&var_r31->unk_2C) > 50.0f) { + PSVECNormalize(&var_r31->unk_2C, &var_r31->unk_2C); + PSVECScale(&var_r31->unk_2C, &var_r31->unk_2C, 50.0f); + } + HuAudFXPlay(0x53E); + HuAudFXVolSet(var_r31->unk_7C[0], 0); + HuAudCharVoicePlay(var_r31->unk_0C, 0x125); + } + if (fn_1_122C() == 4) { + var_r31->unk_62++; + if (var_r31->unk_62 > 240.0f) { + var_r31->unk_62 = 240; + } + } + } + else { + var_r27 = 4; + var_f31 = 2.0f; + var_r25 = 0; + if (var_r31->unk_60 == 0 && var_r31->unk_00_field1 != 0) { + var_r31->unk_00_field2 = 0; + HuAudFXPlay(0x53D); + HuAudFXVolSet(var_r31->unk_7C[0], 127); + } + if (var_r31->unk_60 != 0) { + var_r31->unk_60--; + } + } + if (fn_1_129E4(object) != 0) { + var_r31->unk_00_field3 = 1; + var_r31->unk_12 = 1; + var_r31->unk_5A = 10; + var_r31->unk_54 = 1.0f; + var_r31->unk_78 = 0.0f; + var_r31->unk_62 = 0; + fn_1_117BC(var_r31->unk_14.x, 50.0f, &var_r31->unk_44, &var_r31->unk_2C); + omVibrate(var_r31->unk_02, 12, 6, 6); + var_r31->unk_7C[1] = HuAudFXPlay(0x53C); + } + break; + case 1: + var_r27 = 6; + var_f31 = 1.0f; + var_r25 = 0; + if (--var_r31->unk_5A == 0) { + var_r31->unk_12 = 2; + var_r31->unk_5A = 60; + } + break; + case 2: + Hu3DModelAttrReset(object->model[5], 1); + if (var_r31->unk_5A < 20) { + var_r31->unk_54 = var_r31->unk_5A / 20.0f; + } + else { + var_r31->unk_54 = 1.0f; + } + var_f30 = (0x3C - var_r31->unk_5A) / 10.0f; + if (var_f30 > 1.0f) { + var_f30 = 1.0f; + } + Hu3DModelScaleSet(object->model[5], var_f30, var_f30, var_f30); + var_r31->unk_50 += PSVECMag(&var_r31->unk_2C) / 3.125f; + PSMTXTrans(sp94, -var_r31->unk_68, -var_r31->unk_6C, -var_r31->unk_70); + PSMTXRotRad(sp64, 0x78, 0.017453292f * var_r31->unk_50); + PSMTXConcat(sp64, sp94, sp34); + PSMTXTrans(sp94, var_r31->unk_68, var_r31->unk_6C, var_r31->unk_70); + PSMTXConcat(sp94, sp34, var_r26->unk_F0); + var_r27 = 6; + var_f31 = 2.0f; + var_r25 = 0; + if (--var_r31->unk_5A == 0) { + var_r31->unk_12 = 3; + if (var_r31->unk_7C[1] >= 0) { + HuAudFXStop(var_r31->unk_7C[1]); + var_r31->unk_7C[1] = -1; + } + } + break; + case 3: + if (var_r31->unk_5E == 0 && var_r31->unk_0A & 0x100) { + var_r31->unk_5E = 8; + } + if (var_r31->unk_00_field1) { + var_r31->unk_2C.x = var_r31->unk_2C.y = var_r31->unk_2C.z = 0.0f; + } + var_r31->unk_50 = fn_1_13AF4(var_r31->unk_50, 0.0f, 0.5f); + PSMTXTrans(sp94, -var_r31->unk_68, -var_r31->unk_6C, -var_r31->unk_70); + PSMTXRotRad(sp64, 0x78, 0.017453292f * var_r31->unk_50); + PSMTXConcat(sp64, sp94, sp34); + PSMTXTrans(sp94, var_r31->unk_68, var_r31->unk_6C, var_r31->unk_70); + PSMTXConcat(sp94, sp34, var_r26->unk_F0); + if (var_r31->unk_5E != 0) { + PSMTXTrans(sp94, 100.0f * (0.2f * (((var_r31->unk_5E & 1) * 2) - 1)), 0.0f, 0.0f); + PSMTXConcat(sp94, var_r26->unk_F0, var_r26->unk_F0); + if (--var_r31->unk_5E == 0) { + if (++var_r31->unk_5C >= 4) { + var_r31->unk_00_field3 = 0; + var_r31->unk_12 = 0; + var_r31->unk_5C = 0; + Hu3DModelAttrSet(object->model[5], 1); + Hu3DData[object->model[6]].unk_64 = 0.0f; + Hu3DModelPosSet(object->model[6], object->trans.x + var_r31->unk_68, object->trans.y + var_r31->unk_6C, + object->trans.z + var_r31->unk_70); + Hu3DModelAttrReset(object->model[6], 1); + PSMTXIdentity(var_r26->unk_F0); + fn_1_117BC(var_r31->unk_14.x, 25.0f, &var_r31->unk_44, &var_r31->unk_2C); + } + } + } + var_r27 = 7; + var_f31 = 1.0f; + var_r25 = 1; + break; + } + if (Hu3DMotionEndCheck(object->model[6])) { + Hu3DModelAttrSet(object->model[6], 1); + } + fn_1_DD7C(object, var_r27, var_f31, var_r25); + fn_1_F194(object); + if (object->trans.z + var_r31->unk_2C.z < -60000.0f) { + lbl_1_bss_1CC = var_r31->unk_02; + return; + } + sp28.x = object->trans.x; + sp28.y = object->trans.y; + sp28.z = object->trans.z; + if (fn_1_6A44(sp28) == 1) { + var_r31->unk_00_field0 = 1; + var_r26 = &Hu3DData[object->model[0]]; + PSMTXIdentity(var_r26->unk_F0); + omVibrate(var_r31->unk_02, 0xC, 4, 2); + HuAudCharVoicePlayPos(var_r31->unk_0C, 0x123, &object->trans); + for (var_r24 = 0; var_r24 < 2; var_r24++) { + if (var_r31->unk_7C[var_r24] >= 0) { + HuAudFXStop(var_r31->unk_7C[var_r24]); + var_r31->unk_7C[var_r24] = -1; + } + } + } + object->rot.y = 180.0f + var_r31->unk_14.x; + } +} + +void fn_1_F194(omObjData *object) +{ + Mtx sp80; + Mtx sp50; + Vec sp44; + Vec sp38; + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + + M406PlayerWork *var_r31; + ModelData *var_r30; + + var_r31 = object->data; + var_r30 = &Hu3DData[object->model[0]]; + if (var_r31->unk_00_field1 && var_r31->unk_44.unk_00 != NULL) { + var_f27 = !var_r31->unk_00_field3 ? 0.7f : 3.5f; + sp44.x = 0.0f; + sp44.y = -0.27222222f; + sp44.z = 0.0f; + var_f28 = 0.27222222f * var_r31->unk_44.unk_00[3].y; + PSVECScale(&var_r31->unk_44.unk_00[3], &sp38, var_f28); + PSVECAdd(&sp44, &sp38, &sp2C); + PSVECAdd(&var_r31->unk_2C, &sp2C, &var_r31->unk_2C); + sp20.x = sp20.y = sp20.z = 0.0f; + sp14.x = sp14.y = sp14.z = 0.0f; + var_f29 = PSVECMag(&var_r31->unk_2C); + if (var_f29 > 0.0f && fn_1_122C() == 4) { + PSVECNormalize(&var_r31->unk_2C, &sp8); + sp20.x = -sp8.x; + sp20.y = -sp8.y; + sp20.z = -sp8.z; + if (var_r31->unk_62 < 120.0f) { + PSVECScale(&sp20, &sp20, var_f28 * var_f27); + } + else { + PSVECScale(&sp20, &sp20, (0.15f * (var_r31->unk_62 / 240.0f)) + (var_f28 * var_f27)); + } + if (!var_r31->unk_00_field3) { + fn_1_117BC(var_r31->unk_14.x, 1.0f, &var_r31->unk_44, &sp44); + var_f30 = PSVECDotProduct(&sp44, &sp8); + var_f31 = 0.02f * var_f29; + sp14.x = (-sp8.x * var_f31) - (var_f30 * (-sp44.x * var_f31)); + sp14.y = (-sp8.y * var_f31) - (var_f30 * (-sp44.y * var_f31)); + sp14.z = (-sp8.z * var_f31) - (var_f30 * (-sp44.z * var_f31)); + if ((var_f30 < 0.9f) && (var_f29 >= 20.0f)) { + mtxRot(sp80, var_r30->rot.x, var_r30->rot.y, var_r30->rot.z); + mtxTransCat(sp80, var_r30->pos.x, var_r30->pos.y, var_r30->pos.z); + PSVECCrossProduct(&sp44, &sp8, &sp44); + if (sp44.y >= 0.0f) { + PSMTXTrans(sp50, -10.0f, 0.0f, 0.0f); + PSMTXConcat(sp50, sp80, sp80); + fn_1_94C0(sp80, 10, 0); + } + else { + PSMTXTrans(sp50, 10.0f, 0.0f, 0.0f); + PSMTXConcat(sp50, sp80, sp80); + fn_1_94C0(sp80, 10, 1); + } + } + } + } + PSVECAdd(&sp20, &sp14, &sp2C); + if (PSVECMag(&sp2C) > var_f29) { + var_r31->unk_2C.x = var_r31->unk_2C.y = var_r31->unk_2C.z = 0.0f; + return; + } + PSVECAdd(&var_r31->unk_2C, &sp2C, &var_r31->unk_2C); + return; + } + var_r31->unk_2C.y += -0.27222222f; +} + +void fn_1_F694(omObjData *object) +{ + Mtx sp68; + Mtx sp38; + Vec sp2C; + Vec sp20; + Vec sp14; + Vec sp8; + + float var_f31; + float var_f30; + float var_f29; + float var_f28; + + M406PlayerWork *var_r31; + ModelData *var_r30; + + var_r31 = object->data; + var_r30 = &Hu3DData[object->model[0]]; + var_r31->unk_2C.y += -1.0f; + if (var_r31->unk_00_field1 && var_r31->unk_44.unk_00 != NULL) { + sp2C.x = var_r31->unk_2C.x; + sp2C.y = var_r31->unk_2C.y; + sp2C.z = var_r31->unk_2C.z; + + var_f30 = -((var_r31->unk_44.unk_00[3].z * sp2C.z) + ((var_r31->unk_44.unk_00[3].x * sp2C.x) + (var_r31->unk_44.unk_00[3].y * sp2C.y))); + + sp2C.x += var_f30 * var_r31->unk_44.unk_00[3].x; + sp2C.y += var_f30 * var_r31->unk_44.unk_00[3].y; + sp2C.z += var_f30 * var_r31->unk_44.unk_00[3].z; + if (!var_r31->unk_00_field3) { + fn_1_117BC(var_r31->unk_14.x, 1.0f, &var_r31->unk_44, &sp20); + PSVECNormalize(&sp2C, &sp14); + var_f29 = PSVECDotProduct(&sp20, &sp14); + var_f31 = var_f29 * var_f29; + var_f31 *= var_f31; + if (var_f31 < 0.999f && PSVECMag(&var_r31->unk_2C) >= 10.0f) { + mtxRot(sp68, var_r30->rot.x, var_r30->rot.y, var_r30->rot.z); + mtxTransCat(sp68, var_r30->pos.x, var_r30->pos.y, var_r30->pos.z); + PSVECCrossProduct(&sp20, &sp14, &sp8); + if (sp8.y >= 0.0f) { + PSMTXTrans(sp38, -10.0f, 0.0f, 0.0f); + PSMTXConcat(sp38, sp68, sp68); + fn_1_94C0(sp68, 10, 0); + } + else { + PSMTXTrans(sp38, 10.0f, 0.0f, 0.0f); + PSMTXConcat(sp38, sp68, sp68); + fn_1_94C0(sp68, 10, 1); + } + } + var_f28 = PSVECMag(&sp2C); + PSVECScale(&sp20, &sp20, var_f28); + var_r31->unk_2C.x = sp2C.x + (0.9f * (sp20.x - sp2C.x)); + var_r31->unk_2C.y = sp2C.y + (0.9f * (sp20.y - sp2C.y)); + var_r31->unk_2C.z = sp2C.z + (0.9f * (sp20.z - sp2C.z)); + } + else { + var_r31->unk_2C.x = sp2C.x; + var_r31->unk_2C.y = sp2C.y; + var_r31->unk_2C.z = sp2C.z; + PSVECScale(&var_r31->unk_2C, &var_r31->unk_2C, var_r31->unk_54); + } + PSVECScale(&var_r31->unk_2C, &var_r31->unk_2C, 0.98f); + } +} + +void fn_1_FA50(ModelData *model, Mtx mtx) +{ + omObjData *sp2C[4]; + Vec sp20; + Vec sp14; + Vec sp8; + + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + + M406PlayerWork *var_r31; + omObjData *var_r30; + s32 var_r29; + omObjData **var_r28; + s32 var_r27; + s32 var_r26; + s32 var_r25; + omObjData *var_r24; + omObjData *var_r23; + M406PlayerWork *var_r22; + M406PlayerWork *var_r21; + + if (omPauseChk() == 0) { + var_r28 = omGetGroupMemberListEx(lbl_1_bss_1C8, 0); + switch (lbl_1_bss_D8) { + case 0: + if (--lbl_1_data_11F4 == 0) { + fn_1_123C(); + lbl_1_bss_D8++; + lbl_1_bss_F8[0] = lbl_1_bss_F8[1] = 0; + } + if ((lbl_1_data_11F4 % 6) == 0) { + for (var_r29 = 0; var_r29 < 4; var_r29++) { + var_r31 = var_r28[var_r29]->data; + omVibrate(var_r31->unk_02, 6, 2, 4); + } + return; + } + break; + case 1: + if (lbl_1_bss_1CC >= 0) { + fn_1_1274(lbl_1_bss_1CC); + for (var_r29 = 0; var_r29 < 4; var_r29++) { + var_r30 = var_r28[var_r29]; + var_r31 = var_r30->data; + if (var_r29 == lbl_1_bss_1CC) { + var_r30->func = fn_1_1065C; + } + else { + var_r30->func = fn_1_11058; + } + Hu3DModelAttrSet(*var_r30->model, 1); + for (var_r26 = 0; var_r26 < 2; var_r26++) { + if (var_r31->unk_7C[var_r26] >= 0) { + HuAudFXStop(var_r31->unk_7C[var_r26]); + var_r31->unk_7C[var_r26] = -1; + } + } + } + lbl_1_bss_D8++; + return; + } + for (var_r29 = 0; var_r29 < 4; var_r29++) { + var_r31 = var_r28[var_r29]->data; + if (!var_r31->unk_00_field0) { + break; + } + } + if (var_r29 >= 4) { + fn_1_1274(0x63); + for (var_r29 = 0; var_r29 < 4; var_r29++) { + var_r28[var_r29]->func = fn_1_11058; + } + lbl_1_bss_D8++; + return; + } + fn_1_1275C(); + for (var_r29 = 0; var_r29 < 4; var_r29++) { + var_r30 = var_r28[var_r29]; + var_r31 = var_r28[var_r29]->data; + if (!var_r31->unk_00_field0) { + var_r31->unk_14.y = PSVECMag(&var_r31->unk_2C); + if (!var_r31->unk_00_field3 && !var_r31->unk_00_field2 && (var_r31->unk_14.y > var_r31->unk_14.z)) { + var_r31->unk_14.y = var_r31->unk_14.z; + PSVECNormalize(&var_r31->unk_2C, &var_r31->unk_2C); + PSVECScale(&var_r31->unk_2C, &var_r31->unk_2C, var_r31->unk_14.y); + } + var_f31 = var_r31->unk_14.y; + PSVECNormalize(&var_r31->unk_2C, &sp14); + + while (var_f31 > 0.0f) { + if (var_f31 < 50.0f) { + var_r30->trans.x += sp14.x * var_f31; + var_r30->trans.y += sp14.y * var_f31; + var_r30->trans.z += sp14.z * var_f31; + } + else { + var_r30->trans.x += 50.0f * sp14.x; + var_r30->trans.y += 50.0f * sp14.y; + var_r30->trans.z += 50.0f * sp14.z; + } + sp8.x = var_r30->trans.x; + sp8.y = 10.0f + var_r30->trans.y; + sp8.z = var_r30->trans.z; + if (fn_1_13C10(&sp8, &sp20)) { + var_r30->trans.x = sp8.x; + var_r30->trans.z = sp8.z; + if (var_r31->unk_00_field2 == 0) { + PSVECNormalize(&var_r31->unk_2C, &sp14); + var_f26 = PSVECDotProduct(&sp14, &sp20); + if (var_f26 < -0.2f && var_r31->unk_14.y >= 10.0f) { + omVibrate(var_r31->unk_02, 12, 6, 6); + } + if (var_f26 < 0.0f) { + var_f28 + = 0.8f * (((-var_r31->unk_2C.x * sp20.x) - (var_r31->unk_2C.y * sp20.y)) - (var_r31->unk_2C.z * sp20.z)); + var_r31->unk_2C.x += (2.0f * sp20.x * var_f28); + var_r31->unk_2C.y += (2.0f * sp20.y * var_f28); + var_r31->unk_2C.z += (2.0f * sp20.z * var_f28); + } + } + } + var_f31 -= 50.0f; + } + var_f25 = fn_1_143F4(&var_r30->trans, &var_r31->unk_44); + if (var_r31->unk_44.unk_00 != NULL && var_r30->trans.y < (0.01f + var_f25)) { + var_r30->trans.y = var_f25; + var_r31->unk_00_field1 = 1; + } + else { + var_r31->unk_00_field1 = 0; + } + fn_1_12B38(&var_r30->trans); + if (var_r31->unk_7C[0] >= 0) { + HuAudFXEmiterUpDate(var_r31->unk_7C[0], &var_r30->trans); + } + } + } + for (var_r29 = 0; var_r29 < 4; var_r29++) { + sp2C[var_r29] = NULL; + } + for (var_r27 = 0, var_r29 = 0; var_r29 < 4; var_r29++) { + var_r24 = var_r28[var_r29]; + var_r22 = var_r24->data; + if (!var_r22->unk_00_field0) { + for (var_r25 = 0, var_r26 = 0; var_r26 < 4; var_r26++) { + var_r23 = var_r28[var_r26]; + var_r21 = var_r23->data; + if (var_r24 != var_r23 && (!var_r21->unk_00_field0 && var_r24->trans.z > var_r23->trans.z)) { + var_r25++; + } + } + while (sp2C[var_r25] != NULL) { + var_r25++; + } + sp2C[var_r25] = var_r24; + var_r27++; + } + } + if (var_r27 != 0) { + var_f29 = fn_1_12194(&sp2C[0]->trans) - 1500.0f; + if (var_f29 >= 0.0f) { + fn_1_696C(30.000002f + (0.005f * var_f29)); + } + else { + fn_1_696C(30.000002f); + } + lbl_1_bss_E0[0].x = sp2C[0]->trans.x; + lbl_1_bss_E0[0].y = sp2C[0]->trans.y; + lbl_1_bss_E0[0].z = sp2C[0]->trans.z - 1000.0f; + fn_1_12B38(&lbl_1_bss_E0[0]); + if (lbl_1_bss_F8[1] == 0) { + lbl_1_bss_E0[1].x = sp2C[var_r27 - 1]->trans.x; + lbl_1_bss_E0[1].y = sp2C[var_r27 - 1]->trans.y; + lbl_1_bss_E0[1].z = sp2C[var_r27 - 1]->trans.z; + lbl_1_bss_F8[1] = 1; + } + sp20.x = sp2C[var_r27 - 1]->trans.x - lbl_1_bss_E0[1].x; + sp20.y = sp2C[var_r27 - 1]->trans.y - lbl_1_bss_E0[1].y; + sp20.z = sp2C[var_r27 - 1]->trans.z - lbl_1_bss_E0[1].z; + var_f29 = PSVECMag(&sp20); + PSVECNormalize(&sp20, &sp20); + if (var_f29 < 100.0f) { + lbl_1_bss_E0[1].x = sp2C[var_r27 - 1]->trans.x; + lbl_1_bss_E0[1].y = sp2C[var_r27 - 1]->trans.y; + lbl_1_bss_E0[1].z = sp2C[var_r27 - 1]->trans.z; + } + else { + lbl_1_bss_E0[1].x += (100.0f * sp20.x); + lbl_1_bss_E0[1].y += (100.0f * sp20.y); + lbl_1_bss_E0[1].z += (100.0f * sp20.z); + } + fn_1_12B38(&lbl_1_bss_E0[1]); + if (fn_1_122C() == 2 || fn_1_122C() == 3) { + return; + } + for (var_r29 = 0; var_r29 < var_r27; var_r29++) { + var_r30 = sp2C[var_r29]; + var_r31 = var_r30->data; + if (!var_r31->unk_00_field0) { + var_f30 = sp2C[var_r27 - 1]->trans.z - var_r30->trans.z; + if (var_f30 > 3000.0f) { + if (var_f30 > 5000.0f) { + var_f30 = 5000.0f; + } + var_f27 = 45.0f - (9.0f * (var_f30 / 5000.0f)); + } + else { + var_f27 = 45.0f; + } + var_r31->unk_14.z += (0.2f * (var_f27 - var_r31->unk_14.z)); + } + } + return; + } + break; + case 2: + if (fn_1_122C() == 8 || fn_1_122C() == 10) { + lbl_1_bss_D8++; + lbl_1_data_11F4 = 210; + return; + } + break; + case 3: + if (--lbl_1_data_11F4 == 0) { + fn_1_12BC(); + } + break; + } + } +} + +void fn_1_1065C(omObjData *object) +{ + M406PlayerWork *var_r31 = object->data; + + var_r31->unk_12 = 0; + var_r31->unk_00 = 0; + var_r31->unk_54 = 1.0f; + var_r31->unk_14.x = 0.0f; + var_r31->unk_64 = 60; + object->trans.z = -60000.0f; + object->rot.x = object->rot.y = object->rot.z = 0.0f; + var_r31->unk_2C.x = var_r31->unk_2C.y = 0.0f; + var_r31->unk_2C.z = -20.0f; + Hu3DModelShadowReset(object->model[0]); + fn_1_6BB4(&object->trans); + Hu3DModelAttrReset(object->model[0], 1); + object->func = fn_1_10744; +} + +void fn_1_10744(omObjData *object) +{ + Mtx sp48; + Mtx sp18; + + float var_f31; + + M406PlayerWork *var_r31; + ModelData *var_r29; + s32 var_r24; + + var_r31 = object->data; + var_r29 = &Hu3DData[object->model[0]]; + switch (var_r31->unk_12) { + case 0: + fn_1_DD7C(object, 0, 1.0f, 0); + if (--var_r31->unk_64 == 0) { + fn_1_1284(); + var_r31->unk_12++; + } + if (var_r31->unk_64 == 54.0f) { + HuAudFXPlay(0x541); + } + mtxRot(sp48, var_r29->rot.x, var_r29->rot.y, var_r29->rot.z); + mtxTransCat(sp48, var_r29->pos.x, var_r29->pos.y, var_r29->pos.z); + if (var_r31->unk_64 < 0x1E) { + var_f31 = 0.0f; + } + else { + var_f31 = (255.0f * (var_r31->unk_64 - 0x1E)) / 30.0f; + } + fn_1_82C8(sp48, frand() & 0xF, var_f31); + break; + case 1: + if (fn_1_122C() == 8) { + var_r31->unk_12++; + var_r31->unk_14.x = 180.0f; + var_r31->unk_64 = 90; + var_r31->unk_2C.x = 100.0 * (0.10000000149011612 * sind(180.0f + var_r31->unk_14.x)); + var_r31->unk_2C.y = 0.0f; + var_r31->unk_2C.z = 100.0 * (0.10000000149011612 * cosd(180.0f + var_r31->unk_14.x)); + object->trans.x = 300.0f; + object->trans.z = -1000.0f; + object->trans.y = 1000.0f; + CharModelKill(var_r31->unk_0C); + object->model[0] = CharModelCreate(var_r31->unk_0C, 2); + for (var_r24 = 0; var_r24 < 4; var_r24++) { + Hu3DModelHookSet(object->model[0], lbl_1_data_1068[var_r24], object->model[var_r24 + 1]); + } + for (var_r24 = 0; var_r24 < 10U; var_r24++) { + object->motion[var_r24] = CharModelMotionCreate(var_r31->unk_0C, lbl_1_data_1078[var_r24]); + } + var_r31->unk_38 = -1; + fn_1_DD7C(object, 0, 1.0f, 0); + Hu3DModelShadowSet(object->model[0]); + return; + } + break; + case 2: + var_r31->unk_2C.y += -2.0f; + if (object->trans.y < 0.0f) { + object->trans.y = 0.0f; + var_r31->unk_12++; + var_r31->unk_2C.y = 0.0f; + fn_1_DD7C(object, 2, 1.0f, 0); + omVibrate(var_r31->unk_02, 0xC, 6, 6); + var_r31->unk_7C[0] = HuAudFXPlay(0x53B); + } + break; + case 3: + var_r31->unk_14.x -= 0.5f; + var_r31->unk_54 = 1.0f; + if (var_r31->unk_64 < 0x14) { + var_r31->unk_54 = var_r31->unk_64 / 20.0f; + } + if ((var_r31->unk_64 < 0x50) && (var_r31->unk_64 > 0x1E)) { + mtxRot(sp48, var_r29->rot.x, var_r29->rot.y, var_r29->rot.z); + mtxTransCat(sp48, var_r29->pos.x, var_r29->pos.y, var_r29->pos.z); + PSMTXTrans(sp18, 10.0f, 0.0f, 0.0f); + PSMTXConcat(sp18, sp48, sp48); + fn_1_94C0(sp48, 10, 0); + } + var_r31->unk_2C.x = var_r31->unk_54 * (100.0 * (0.10000000149011612 * sind(180.0f + var_r31->unk_14.x))); + var_r31->unk_2C.z = var_r31->unk_54 * (100.0 * (0.10000000149011612 * cosd(180.0f + var_r31->unk_14.x))); + if (var_r31->unk_64 == 48.0f) { + fn_1_DD7C(object, 8, 1.0f, 0); + } + if (--var_r31->unk_64 == 0) { + var_r31->unk_12 = -1; + var_r31->unk_2C.x = var_r31->unk_2C.z = 0.0f; + } + break; + default: + break; + } + object->trans.x += var_r31->unk_2C.x; + object->trans.y += var_r31->unk_2C.y; + object->trans.z += var_r31->unk_2C.z; + object->rot.y = 180.0f + var_r31->unk_14.x; +} + +void fn_1_11058(omObjData *object) +{ + ModelData *sp8; + + M406PlayerWork *var_r30; + void *var_r29; + s32 var_r28; + + var_r30 = object->data; + if (lbl_1_bss_1CC < 0) { + object->trans.x = lbl_1_data_11F8[lbl_1_bss_1F4].unk_00; + object->trans.z = lbl_1_data_11F8[lbl_1_bss_1F4].unk_04; + var_r30->unk_64 = 30.0f + (frand() & 0x1F); + } + else { + object->trans.x = lbl_1_data_1218[lbl_1_bss_1F4].unk_00; + object->trans.z = lbl_1_data_1218[lbl_1_bss_1F4].unk_04; + var_r30->unk_64 = 90.0f + (frand() & 0x1F); + } + for (var_r28 = 0; var_r28 < 8; var_r28++) { + Hu3DModelAttrSet(object->model[var_r28], 1); + Hu3DModelPosSet(object->model[var_r28], 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(object->model[var_r28], 0.0f, 0.0f, 0.0f); + Hu3DModelScaleSet(object->model[var_r28], 1.0f, 1.0f, 1.0f); + } + Hu3DModelHookReset(object->model[0]); + fn_1_DD7C(object, 0, 1.0f, 0); + var_r30->unk_00 = 0; + var_r30->unk_12 = 0; + var_r30->unk_00_field3 = 1; + var_r30->unk_50 = 360.0f * frandf(); + var_r30->unk_50 = 160.0f + ((frand() & 0x3F) - 0x20); + var_r30->unk_54 = 30.0f; + var_r30->unk_5A = 3; + object->trans.y = 1000.0f; + object->rot.x = object->rot.y = 0.0f; + object->rot.z = (frand() & 0x3F) - 0x20; + var_r30->unk_2C.x = var_r30->unk_2C.y = var_r30->unk_2C.z = 0.0f; + lbl_1_bss_1F4++; + object->func = fn_1_114A0; +} + +void fn_1_114A0(omObjData *object) +{ + Mtx sp9C; + Mtx sp6C; + Mtx sp3C; + Mtx spC; + ModelData *sp8; + M406PlayerWork *var_r31; + + var_r31 = object->data; + sp8 = &Hu3DData[object->model[0]]; + switch (var_r31->unk_12) { + case 0: + if (fn_1_122C() == 8 || fn_1_122C() == 10) { + var_r31->unk_12++; + } + return; + case 1: + if (var_r31->unk_64 != 0) { + if (--var_r31->unk_64 == 0) { + Hu3DModelAttrReset(object->model[5], 1); + Hu3DModelAttrReset(object->model[7], 1); + } + else { + return; + } + } + var_r31->unk_50 += var_r31->unk_54; + var_r31->unk_54 -= 0.5f; + if (var_r31->unk_54 < 0.0f) { + var_r31->unk_54 = 0.0f; + } + if (var_r31->unk_5A != 0) { + var_r31->unk_2C.y += -2.0f; + object->trans.y += var_r31->unk_2C.y; + if (object->trans.y < 0.0f) { + object->trans.y = 0.0f; + var_r31->unk_2C.y = 0.5f * -var_r31->unk_2C.y; + var_r31->unk_5A--; + if (!var_r31->unk_00_field5) { + omVibrate(var_r31->unk_02, 12, 4, 2); + var_r31->unk_00_field5 = 1; + HuAudFXPlay(0x53F); + } + } + } + break; + default: + break; + } + mtxRot(sp9C, object->rot.x, object->rot.y, object->trans.z); + mtxScaleCat(sp9C, object->scale.x, object->scale.y, object->scale.z); + PSMTXTrans(sp9C, object->trans.x, object->trans.y, object->trans.z); + PSMTXRotRad(sp6C, 0x78, 0.017453292f * var_r31->unk_50); + PSMTXConcat(sp9C, sp6C, sp9C); + PSMTXCopy(sp9C, spC); + mtxScaleCat(spC, 2.0f, 2.0f, 2.0f); + PSMTXCopy(spC, Hu3DData[object->model[5]].unk_F0); + PSMTXTrans(sp3C, 0.0f, 110.0f, 0.0f); + PSMTXConcat(sp9C, sp3C, spC); + PSMTXCopy(spC, Hu3DData[object->model[7]].unk_F0); +} + +void fn_1_117BC(float arg8, float arg9, UnkM406PlayerStruct2 *arg0, Vec *arg1) +{ + Vec sp10; + float spC; + + float var_f30; + Vec *var_r31; + + if (arg0->unk_00 == NULL) { + arg1->x = arg1->y = arg1->z = 0.0f; + return; + } + var_r31 = &arg0->unk_00[3]; + sp10.x = var_r31->y * sind((180.0f + arg8)); + sp10.z = var_r31->y * cosd((180.0f + arg8)); + var_f30 = 1.0f - (var_r31->y * var_r31->y); + sp10.y = -sqrtf(var_f30); + PSVECScale(&sp10, arg1, arg9); +} +s32 fn_1_119E4(Vec *arg0, UnkM406PlayerStruct *arg1) +{ + Vec sp8; + + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + float var_f26; + float var_f25; + float var_f24; + float var_f23; + float var_f22; + float var_f21; + float var_f20; + float var_f19; + float var_f18; + + s32 var_r31; + s32 var_r30; + + for (var_r31 = 0; var_r31 < lbl_1_bss_B4 - 1; var_r31++) { + var_r30 = var_r31 + 1; + var_f31 = lbl_1_data_960[var_r30].x - lbl_1_data_CA8[var_r31].x; + var_f30 = lbl_1_data_960[var_r30].z - lbl_1_data_CA8[var_r31].z; + if (((var_f31 * (arg0->z - lbl_1_data_CA8[var_r31].z)) - (var_f30 * (arg0->x - lbl_1_data_CA8[var_r31].x))) < 0.0f) { + var_f31 = lbl_1_data_960[var_r30].x - lbl_1_data_960[var_r31].x; + var_f28 = lbl_1_data_CA8[var_r31].x - lbl_1_data_960[var_r31].x; + var_f30 = lbl_1_data_960[var_r30].z - lbl_1_data_960[var_r31].z; + var_f27 = lbl_1_data_CA8[var_r31].z - lbl_1_data_960[var_r31].z; + var_f26 = 0.0f; + var_f25 = 1.0f; + var_f24 = 1.0f; + var_f23 = 0.0f; + var_f29 = (var_f31 * var_f27) - (var_f28 * var_f30); + var_f22 = ((var_f26 * var_f27) - (var_f25 * var_f30)) / var_f29; + var_f21 = ((var_f25 * var_f31) - (var_f26 * var_f28)) / var_f29; + var_f20 = ((var_f24 * var_f27) - (var_f23 * var_f30)) / var_f29; + var_f19 = ((var_f23 * var_f31) - (var_f24 * var_f28)) / var_f29; + sp8.z = -(var_f22 * lbl_1_data_960[var_r31].x) - (var_f21 * lbl_1_data_960[var_r31].z); + sp8.y = -(var_f20 * lbl_1_data_960[var_r31].x) - (var_f19 * lbl_1_data_960[var_r31].z); + } + else { + var_f31 = lbl_1_data_CA8[var_r30].x - lbl_1_data_960[var_r30].x; + var_f28 = lbl_1_data_CA8[var_r31].x - lbl_1_data_960[var_r30].x; + var_f30 = lbl_1_data_CA8[var_r30].z - lbl_1_data_960[var_r30].z; + var_f27 = lbl_1_data_CA8[var_r31].z - lbl_1_data_960[var_r30].z; + var_f26 = 1.0f; + var_f25 = 1.0f; + var_f24 = 0.0f; + var_f23 = -1.0f; + var_f29 = (var_f31 * var_f27) - (var_f28 * var_f30); + var_f22 = ((var_f26 * var_f27) - (var_f25 * var_f30)) / var_f29; + var_f21 = ((var_f25 * var_f31) - (var_f26 * var_f28)) / var_f29; + var_f20 = ((var_f24 * var_f27) - (var_f23 * var_f30)) / var_f29; + var_f19 = ((var_f23 * var_f31) - (var_f24 * var_f28)) / var_f29; + sp8.z = -(var_f22 * lbl_1_data_960[var_r30].x) - (var_f21 * lbl_1_data_960[var_r30].z); + sp8.y = (1.0f - (var_f20 * lbl_1_data_960[var_r30].x)) - (var_f19 * lbl_1_data_960[var_r30].z); + } + var_f18 = sp8.z + ((var_f22 * arg0->x) + (var_f21 * arg0->z)); + sp8.x = sp8.y + ((var_f20 * arg0->x) + (var_f19 * arg0->z)); + if ((var_f18 >= 0.0f) && (var_f18 < 1.0f) && (sp8.x >= 0.0f) && (sp8.x < 1.0f)) { + arg1->unk_00 = var_f18; + arg1->unk_04 = sp8.x; + return var_r31; + } + } + return -1; +} + +void fn_1_11FC4(Vec *arg0, float arg8, Vec *arg1) +{ + UnkM406PlayerStruct spC; + + float var_f30; + float var_f31; + float var_f29; + float var_f28; + + UnkM406Struct2 *var_r31; + s32 var_r29; + s32 var_r28; + + var_r29 = -1; + var_r29 = fn_1_119E4(arg0, &spC); + if (var_r29 >= 0) { + var_r31 = &lbl_1_bss_B8[var_r29]; + var_f31 = 0.0f; + var_f30 = var_r31->unk_00 * spC.unk_04; + var_f29 = var_r31->unk_00 - var_f30; + + for (var_r28 = var_r29; var_r28 < lbl_1_bss_B4 - 1; var_r28++) { + if (var_f31 + var_f29 >= 3000.0f) { + var_f28 = (3000.0f + var_f30) - var_f31; + arg1->x = (var_r31->unk_14.x + (var_r31->unk_08.x * var_f28)) - (var_r31->unk_08.z * arg8); + arg1->y = var_r31->unk_14.y + (var_r31->unk_08.y * var_f28); + arg1->z = var_r31->unk_14.z + (var_r31->unk_08.z * var_f28) + (var_r31->unk_08.x * arg8); + return; + } + var_f31 += var_f29; + var_f30 = 0.0f; + var_r31++; + var_f29 = var_r31->unk_00; + } + } + arg1->x = arg1->y = 0.0f; + arg1->z = -61000.0f; +} + +float fn_1_12194(Vec *arg0) +{ + Vec sp1C; + UnkM406PlayerStruct sp14; + UnkM406PlayerStruct spC; + + UnkM406Struct2 *var_r31; + UnkM406Struct2 *var_r30; + s32 var_r29; + s32 var_r28; + + fn_1_69C0(&sp1C); + var_r28 = fn_1_119E4(&sp1C, &sp14); + var_r29 = fn_1_119E4(arg0, &spC); + if (var_r28 < 0 || var_r29 < 0) { + return -1.0f; + } + var_r31 = &lbl_1_bss_B8[var_r28]; + var_r30 = &lbl_1_bss_B8[var_r29]; + return (var_r30->unk_04 + (var_r30->unk_00 * spC.unk_04)) - (var_r31->unk_04 + (var_r31->unk_00 * sp14.unk_04)); +} + +void fn_1_12270(omObjData *object) +{ + Vec sp1C; + Vec sp10; + UnkM406PlayerStruct sp8; + + float var_f31; + float var_f30; + float var_f29; + float var_f28; + float var_f27; + + M406PlayerWork *var_r31; + UnkM406Struct2 *var_r30; + s32 var_r29; + s32 var_r28; + + var_r31 = object->data; + if (!var_r31->unk_00_field3) { + if (var_r31->unk_14.y < 30.000002f) { + var_r31->unk_0A = 0x100; + } + else if ((frand() & 0x1FF) < (var_r31->unk_0E + 6)) { + var_r31->unk_0A = 0x100; + } + if ((frand() & 0xFF) == 0) { + var_r31->unk_78 = (400.0f + (100.0f * (4 - GWPlayerCfg[var_r31->unk_02].diff))) * ((frand() & 0x1FF) - 256.0f) / 256; + } + if (fabs(var_r31->unk_74 - var_r31->unk_78) > 10.0) { + var_r31->unk_74 = var_r31->unk_74 + (0.05f * (var_r31->unk_78 - var_r31->unk_74)); + } + var_f27 = var_r31->unk_74; + var_r29 = -1; + var_r29 = fn_1_119E4(&object->trans, &sp8); + if (var_r29 >= 0) { + var_r30 = &lbl_1_bss_B8[var_r29]; + var_f31 = 0.0f; + var_f28 = var_r30->unk_00 * sp8.unk_04; + var_f29 = var_r30->unk_00 - var_f28; + for (var_r28 = var_r29; var_r28 < lbl_1_bss_B4 - 1; var_r28++) { + if (var_f31 + var_f29 >= 3000.0f) { + var_f30 = (3000.0f + var_f28) - var_f31; + sp1C.x = (var_r30->unk_14.x + (var_r30->unk_08.x * var_f30)) - (var_r30->unk_08.z * var_f27); + sp1C.y = var_r30->unk_14.y + (var_r30->unk_08.y * var_f30); + sp1C.z = var_r30->unk_14.z + (var_r30->unk_08.z * var_f30) + (var_r30->unk_08.x * var_f27); + goto block_12270; // TODO + } + else { + var_f31 += var_f29; + var_f28 = 0.0f; + var_r30++; + var_f29 = var_r30->unk_00; + } + } + } + sp1C.x = sp1C.y = 0.0f; + sp1C.z = -61000.0f; + + block_12270: + PSVECSubtract(&sp1C, &object->trans, &sp10); + if (PSVECMag(&sp10) > 0.0f) { + PSVECNormalize(&sp10, &sp10); + var_r31->unk_06 = 72.0 * ((sp10.x * cosd(CRot.y)) - sp10.z * sind(CRot.y)); + var_r31->unk_07 = 72.0 * -((sp10.x * sind(CRot.y)) + sp10.z * cosd(CRot.y)); + } + } + else if ((frand() & 3) == 0) { + var_r31->unk_0A = 256; + } +} + +void fn_1_1275C(void) +{ + omObjData **sp8; + s32 var_r31; + + var_r31 = 0; + sp8 = omGetGroupMemberListEx(lbl_1_bss_1C8, 0); + + while (fn_1_127B8() != 0 && var_r31 < 10) { + var_r31++; + } +} + +s32 fn_1_127B8(void) +{ + Vec sp14[4]; + Vec sp8; + + float var_f31; + float var_f30; + + s32 var_r31; + s32 var_r30; + omObjData **var_r29; + omObjData *var_r28; + s32 var_r27; + omObjData *var_r26; + omObjData *var_r25; + M406PlayerWork *var_r24; + M406PlayerWork *var_r23; + M406PlayerWork *var_r22; + + var_r27 = 0; + var_r29 = omGetGroupMemberListEx(lbl_1_bss_1C8, 0); + for (var_r31 = 0; var_r31 < 4; var_r31++) { + sp14[var_r31].x = sp14[var_r31].y = sp14[var_r31].z = 0.0f; + } + for (var_r31 = 0; var_r31 < 3; var_r31++) { + var_r26 = var_r29[var_r31]; + var_r23 = var_r26->data; + if (!var_r23->unk_00_field0) { + for (var_r30 = var_r31 + 1; var_r30 < 4; var_r30++) { + var_r25 = var_r29[var_r30]; + var_r22 = var_r25->data; + if (!var_r22->unk_00_field0) { + PSVECSubtract(&var_r26->trans, &var_r25->trans, &sp8); + var_f31 = PSVECMag(&sp8); + if (var_f31 < 100.0f) { + PSVECNormalize(&sp8, &sp8); + var_f30 = 0.01f + (0.5f * (100.0f - var_f31)); + PSVECScale(&sp8, &sp8, var_f30); + PSVECAdd(&sp14[var_r31], &sp8, &sp14[var_r31]); + PSVECSubtract(&sp14[var_r30], &sp8, &sp14[var_r30]); + var_r27++; + } + } + } + } + } + for (var_r31 = 0; var_r31 < 4; var_r31++) { + var_r28 = var_r29[var_r31]; + var_r24 = var_r28->data; + if (!var_r24->unk_00_field0) { + PSVECAdd(&var_r28->trans, &sp14[var_r31], &var_r28->trans); + } + } + return var_r27; +} + +s32 fn_1_129E4(omObjData *object) +{ + Vec spC; + + float var_f31; + + s32 var_r31; + omObjData **var_r30; + ModelData *var_r29; + + var_r30 = omGetGroupMemberListEx(HuPrcCurrentGet(), 3); + for (var_r31 = 0; var_r31 < var_r30[0]->mdlcnt; var_r31++) { + var_r29 = &Hu3DData[(*var_r30)->model[var_r31]]; + PSVECSubtract(&var_r29->pos, &object->trans, &spC); + var_f31 = PSVECMag(&spC); + if (var_f31 < 100.0f) { + return 1; + } + } + return 0; +} + +void fn_1_12AB8(omObjData *object) +{ + if (object->data != NULL) { + HuMemDirectFree(object->data); + object->data = NULL; + } +} + +void fn_1_12B00(omObjData *object) +{ + lbl_1_bss_1C4 = 0; + lbl_1_bss_100 = -1.0f; + object->func = fn_1_12BC4; +} + +void fn_1_12B38(Vec *arg0) +{ + lbl_1_bss_104[lbl_1_bss_1C4].x = arg0->x; + lbl_1_bss_104[lbl_1_bss_1C4].y = arg0->y; + lbl_1_bss_104[lbl_1_bss_1C4].z = arg0->z; + lbl_1_bss_1C4++; +} + +void fn_1_12BC4(omObjData *object) +{ + Vec sp198[16]; + Vec spD8[16]; + Mtx spA8; + Vec sp9C; + Vec sp90; + Vec sp84; + Vec sp78; + + float var_f31; + float var_f30; + float var_f29; + float var_f28; + + s32 var_r31; + CameraData *var_r30 = Hu3DCamera; + + if (lbl_1_bss_1C4 != 0) { + if (fn_1_122C() == 4) { + var_f30 = 0.4f; + } + else { + var_f30 = 0.05f; + } + var_f31 = var_f30; + for (var_r31 = 0; var_r31 < lbl_1_bss_1C4; var_r31++) { + if (var_r31 == 0) { + sp9C = sp90 = lbl_1_bss_104[var_r31]; + } + else { + if (lbl_1_bss_104[var_r31].x < sp9C.x) { + sp9C.x = lbl_1_bss_104[var_r31].x; + } + else if (lbl_1_bss_104[var_r31].x > sp90.x) { + sp90.x = lbl_1_bss_104[var_r31].x; + } + if (lbl_1_bss_104[var_r31].y < sp9C.y) { + sp9C.y = lbl_1_bss_104[var_r31].y; + } + else if (lbl_1_bss_104[var_r31].y > sp90.y) { + sp90.y = lbl_1_bss_104[var_r31].y; + } + if (lbl_1_bss_104[var_r31].z < sp9C.z) { + sp9C.z = lbl_1_bss_104[var_r31].z; + } + else if (lbl_1_bss_104[var_r31].z > sp90.z) { + sp90.z = lbl_1_bss_104[var_r31].z; + } + } + } + var_f31 = 0.4f; + Center.x += var_f31 * ((0.5f * (sp9C.x + sp90.x)) - Center.x); + Center.y += var_f31 * ((0.5f * (sp9C.y + sp90.y)) - Center.y); + Center.z += var_f31 * ((0.5f * (sp9C.z + sp90.z)) - Center.z); + + var_r30->target.x = Center.x; + var_r30->target.y = Center.y; + var_r30->target.z = Center.z; + C_MTXLookAt(spA8, &var_r30->pos, &var_r30->up, &var_r30->target); + for (var_r31 = 0; var_r31 < lbl_1_bss_1C4; var_r31++) { + PSMTXMultVec(spA8, &lbl_1_bss_104[var_r31], &sp198[var_r31]); + spD8[var_r31].x = sp198[var_r31].x / (sp198[var_r31].z * (sind((var_r30->fov / 2)) / cosd((var_r30->fov / 2)))); + spD8[var_r31].y = sp198[var_r31].y / (sp198[var_r31].z * (sind((var_r30->fov / 2)) / cosd((var_r30->fov / 2)))); + } + sp90.x = 0.0f; + for (var_r31 = 0; var_r31 < lbl_1_bss_1C4; var_r31++) { + if (fabs(spD8[var_r31].x) > fabs(spD8[var_r31].y)) { + if (fabs(spD8[var_r31].x) > sp90.x) { + sp90.x = fabs(spD8[var_r31].x); + sp90.y = fabs(sp198[var_r31].x); + sp90.z = sp198[var_r31].z; + } + } + else { + if (fabs(spD8[var_r31].y) > sp90.x) { + sp90.x = fabs(spD8[var_r31].y); + sp90.y = fabs(sp198[var_r31].y); + sp90.z = sp198[var_r31].z; + } + } + } + var_f29 = -sp90.y / (sind((var_r30->fov / 2)) / cosd((var_r30->fov / 2))); + var_f28 = CZoom - (var_f29 - sp90.z); + var_f31 = 0.05f; + if (lbl_1_bss_100 >= 0.0f) { + lbl_1_bss_100 += var_f31 * (var_f28 - lbl_1_bss_100); + } + else { + lbl_1_bss_100 = CZoom - 500.0f; + } + CZoom = 500.0f + lbl_1_bss_100; + if (CZoom < 1500.0f) { + CZoom = 1500.0f; + } + lbl_1_bss_1C4 = 0; + if (fn_1_122C() >= 3) { + sp84.x = Center.x + (CZoom * (sind(CRot.y) * cosd(CRot.x))); + sp84.y = Center.y + (CZoom * -sind(CRot.x)); + sp84.z = Center.z + (CZoom * (cosd(CRot.y) * cosd(CRot.x))); + PSVECSubtract(&Center, &sp84, &sp78); + PSVECNormalize(&sp78, &sp78); + HuAudFXListnerUpdate(&sp84, &sp78); + } + } +} + +void fn_1_136A8(void) { } + +s32 fn_1_136AC(HsfObject *arg0, Mtx arg1, char *arg2, Mtx arg3) +{ + char sp4A4[256]; + Mtx sp174; + Mtx sp144; + u32 var_r23; + + HsfTransform *var_r31 = &arg0->data.curr; + + mtxRot(sp144, var_r31->rot.x, var_r31->rot.y, var_r31->rot.z); + PSMTXScale(sp174, var_r31->scale.x, var_r31->scale.y, var_r31->scale.z); + PSMTXConcat(sp144, sp174, sp174); + mtxTransCat(sp174, var_r31->pos.x, var_r31->pos.y, var_r31->pos.z); + PSMTXConcat(arg1, sp174, sp174); + strcpy(sp4A4, MakeObjectName(arg2)); + if (strcmp(sp4A4, arg0->name) == 0) { + PSMTXCopy(sp174, arg3); + return 1; + } + for (var_r23 = 0; var_r23 < arg0->data.childrenCount; var_r23++) { + s32 sp20 = fn_1_136AC(arg0->data.children[var_r23], sp174, arg2, arg3); + if (sp20) { + return 1; + } + } + return 0; +} + +void fn_1_13A88(s16 arg0, char *arg1, Mtx arg2) +{ + Mtx sp14; + + ModelData *var_r31; + HsfData *var_r30; + + var_r31 = &Hu3DData[arg0]; + var_r30 = var_r31->hsfData; + PSMTXIdentity(sp14); + fn_1_136AC(var_r30->root, sp14, arg1, arg2); +} + +float fn_1_13AF4(float arg8, float arg9, float argA) +{ + float var_f31; + float var_f30; + float var_f29; + + var_f30 = fmod(arg9 - arg8, 360.0); + var_f31 = var_f30; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + if (var_f31 > 180.0f) { + var_f31 -= 360.0f; + } + var_f29 = fmod(arg8 + (argA * var_f31), 360.0); + var_f31 = var_f29; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; + } + return var_f31; +} + +s32 fn_1_13C10(Vec *arg0, Vec *arg1) +{ + Vec *sp48[3]; + Vec sp3C; + Vec sp30; + Vec sp24; + Vec sp18; + Vec spC; + HsfBuffer *sp8; + + float var_f31; + float var_f30; + float var_f29; + float var_f28; + + HsfFace *var_r31; + s32 var_r29; + HsfFace *var_r28; + HsfObject *var_r27; + HsfBuffer *var_r26; + HsfBuffer *var_r24; + s32 var_r23; + s32 var_r22; + s32 var_r21; + omObjData **var_r20; + ModelData *var_r19; + + var_r20 = omGetGroupMemberListEx(lbl_1_bss_1C8, 2); + var_r21 = arg0->z / -10000.0f; + if (var_r21 >= 6) { + return; + } + var_r19 = &Hu3DData[(*var_r20)->model[var_r21]]; + var_f29 = 100000.0f; + var_r27 = var_r19->hsfData->root; + if (var_r27->type != 2) { + return; + } + var_r24 = var_r27->data.face; + var_r26 = var_r27->data.vertex; + sp8 = var_r27->data.normal; + var_r31 = var_r24->data; + for (var_r23 = 0; var_r23 < var_r24->count; var_r23++, var_r31++) { + if ((var_r31->type == 2) && ((var_r31->mat & 0xFFF) == lbl_1_bss_1E8[var_r21])) { + sp48[0] = &((Vec *)var_r26->data)[var_r31->indices[0][0]]; + sp48[1] = &((Vec *)var_r26->data)[var_r31->indices[1][0]]; + sp48[2] = &((Vec *)var_r26->data)[var_r31->indices[2][0]]; + + var_f28 = (var_r31->nbt.z * sp48[0]->z) + ((var_r31->nbt.x * sp48[0]->x) + (var_r31->nbt.y * sp48[0]->y)); + sp24.x = -var_r31->nbt.x; + sp24.y = 0.0f; + sp24.z = -var_r31->nbt.z; + PSVECNormalize(&sp24, &sp24); + var_f31 = (var_f28 + (((-var_r31->nbt.x * arg0->x) - (var_r31->nbt.y * arg0->y)) - (var_r31->nbt.z * arg0->z))) + / ((var_r31->nbt.x * sp24.x) + (var_r31->nbt.z * sp24.z)); + if (var_f31 <= 0.0) { + continue; + } + spC.x = arg0->x + (sp24.x * var_f31); + spC.y = arg0->y; + spC.z = arg0->z + (sp24.z * var_f31); + PSVECSubtract(sp48[1], sp48[0], &sp3C); + PSVECSubtract(&spC, sp48[1], &sp30); + PSVECCrossProduct(&sp3C, &sp30, &sp24); + if (!(PSVECDotProduct(&var_r31->nbt, &sp24) < 0.0f)) { + PSVECSubtract(sp48[2], sp48[1], &sp3C); + PSVECSubtract(&spC, sp48[2], &sp30); + PSVECCrossProduct(&sp3C, &sp30, &sp24); + if (!(PSVECDotProduct(&var_r31->nbt, &sp24) < 0.0f)) { + PSVECSubtract(sp48[0], sp48[2], &sp3C); + PSVECSubtract(&spC, sp48[0], &sp30); + PSVECCrossProduct(&sp3C, &sp30, &sp24); + if (!(PSVECDotProduct(&var_r31->nbt, &sp24) < 0.0f) && (var_f31 < var_f29)) { + var_f29 = var_f31; + sp18 = spC; + var_r28 = var_r31; + } + } + } + for (var_r29 = 0; var_r29 < 3; var_r29++) { + var_r22 = var_r29 + 1; + if (var_r22 > 2) { + var_r22 = 0; + } + PSVECSubtract(sp48[var_r22], sp48[var_r29], &sp3C); + if (sp3C.y != 0.0f) { + var_f30 = (arg0->y - sp48[var_r29]->y) / sp3C.y; + if ((var_f30 >= 0.0f) && (var_f30 < 1.0f)) { + spC.x = sp48[var_r29]->x + (var_f30 * sp3C.x); + spC.z = sp48[var_r29]->z + (var_f30 * sp3C.z); + PSVECSubtract(&spC, arg0, &sp3C); + sp3C.y = 0.0f; + var_f31 = PSVECMag(&sp3C); + if (var_f31 < var_f29) { + var_f29 = var_f31; + sp18 = spC; + var_r28 = var_r31; + } + } + } + var_f31 = (sp3C.x * sp3C.x) + (sp3C.z * sp3C.z); + if (var_f31 != 0.0f) { + var_f30 = (((arg0->z * sp3C.z) + ((arg0->x * sp3C.x) - (sp3C.x * sp48[var_r29]->x))) - (sp3C.z * sp48[var_r29]->z)) / var_f31; + if ((var_f30 >= 0.0f) && (var_f30 < 1.0f)) { + sp30.y = sp48[var_r29]->y + (var_f30 * sp3C.y); + if ((sp30.y >= arg0->y) && (sp30.y < (150.0f + arg0->y))) { + sp30.x = sp48[var_r29]->x + (var_f30 * sp3C.x); + sp30.z = sp48[var_r29]->z + (var_f30 * sp3C.z); + PSVECSubtract(&sp30, arg0, &sp3C); + sp3C.y = 0.0f; + var_f31 = PSVECMag(&sp3C); + if (var_f31 < var_f29) { + var_f29 = var_f31; + sp18 = sp30; + var_r28 = var_r31; + } + } + } + } + if ((sp48[var_r29]->y >= arg0->y) && (sp48[var_r29]->y < (150.0f + arg0->y))) { + PSVECSubtract(arg0, sp48[var_r29], &sp3C); + sp3C.y = 0.0f; + var_f31 = PSVECMag(&sp3C); + if (var_f31 < var_f29) { + var_f29 = var_f31; + sp18.x = sp48[var_r29]->x; + sp18.z = sp48[var_r29]->z; + var_r28 = var_r31; + } + } + } + } + } + if (var_f29 < 100.0f) { + PSVECSubtract(arg0, &sp18, &sp3C); + sp3C.y = 0.0f; + PSVECNormalize(&sp3C, &sp3C); + arg0->x = sp18.x + (100.001f * sp3C.x); + arg0->z = sp18.z + (100.001f * sp3C.z); + arg1->x = var_r28->nbt.x; + arg1->y = var_r28->nbt.y; + arg1->z = var_r28->nbt.z; + return 1; + } + return 0; +} + +float fn_1_143F4(Vec *arg0, UnkM406PlayerStruct2 *arg1) +{ + Vec *sp34[3]; + Vec sp28; + Vec sp1C; + Vec sp10; + HsfBuffer *spC; + float sp8; + + float var_f31; + float var_f30; + + HsfFace *var_r31; + HsfObject *var_r30; + HsfBuffer *var_r28; + s32 var_r27; + HsfBuffer *var_r25; + s32 var_r24; + omObjData **var_r23; + ModelData *var_r22; + s32 var_r21; + + arg1->unk_00 = NULL; + var_r23 = omGetGroupMemberListEx(lbl_1_bss_1C8, 2); + var_r27 = arg0->z / -10000.0f; + if (var_r27 >= 6) { + return sp8; + } + var_r22 = &Hu3DData[var_r23[0]->model[var_r27]]; + var_r30 = var_r22->hsfData->root; + if (var_r30->type != 2) { + return -100000.0f; + } + var_r25 = var_r30->data.face; + var_r28 = var_r30->data.vertex; + spC = var_r30->data.normal; + for (var_r31 = var_r25->data, var_r24 = 0; var_r24 < var_r25->count; var_r24++, var_r31++) { + if (var_r31->type == 2 && (((var_r31->mat & 0xFFF) == lbl_1_bss_1DC[var_r27]) || ((var_r31->mat & 0xFFF) == lbl_1_bss_1D0[var_r27]))) { + sp34[0] = &((Vec *)var_r28->data)[var_r31->indices[0][0]]; + sp34[1] = &((Vec *)var_r28->data)[var_r31->indices[1][0]]; + sp34[2] = &((Vec *)var_r28->data)[var_r31->indices[2][0]]; + PSVECSubtract(sp34[1], sp34[0], &sp28); + PSVECSubtract(arg0, sp34[1], &sp1C); + PSVECCrossProduct(&sp28, &sp1C, &sp10); + if (sp10.y < 0.0f) { + continue; + } + PSVECSubtract(sp34[2], sp34[1], &sp28); + PSVECSubtract(arg0, sp34[2], &sp1C); + PSVECCrossProduct(&sp28, &sp1C, &sp10); + if (sp10.y < 0.0f) { + continue; + } + PSVECSubtract(sp34[0], sp34[2], &sp28); + PSVECSubtract(arg0, sp34[0], &sp1C); + PSVECCrossProduct(&sp28, &sp1C, &sp10); + if (sp10.y < 0.0f) { + continue; + } + var_f30 = (var_r31->nbt.z * sp34[0]->z) + ((var_r31->nbt.x * sp34[0]->x) + (var_r31->nbt.y * sp34[0]->y)); + var_f31 = ((var_f30 - (var_r31->nbt.x * arg0->x)) - (var_r31->nbt.z * arg0->z)) / var_r31->nbt.y; + arg1->unk_00 = (Vec *)var_r31; + arg1->unk_08 = (var_r31->mat & 0xFFF) == lbl_1_bss_1D0[var_r27] ? 1 : 0; + return var_f31; + } + } + return -100000.0f; +} diff --git a/src/REL/m407dll/player.c b/src/REL/m407dll/player.c index faa6aeac..69fe3858 100644 --- a/src/REL/m407dll/player.c +++ b/src/REL/m407dll/player.c @@ -112,7 +112,7 @@ inline void SetDominationDataStuff(omObjData* arg0, s32 val0, s32 val1) { temp_r29->unk_20 = val1; } -void ModuleProlog(void) { +void ObjectSetup(void) { lbl_1_bss_0[0] = omInitObjMan(0x2F8, 0x2000); omGameSysInit(lbl_1_bss_0[0]); fn_1_4980(lbl_1_bss_0[0]); @@ -488,4 +488,4 @@ void fn_1_1460(omObjData* arg0) { CharModelVoiceEnableSet(temp_r30->unk_01, arg0->motion[7], 0); CharModelMotionShiftSet(temp_r30->unk_01, arg0->motion[7], 0.0f, 10.0f, 0); SetDominationDataStuff(arg0, 0, 0); -} \ No newline at end of file +} diff --git a/src/REL/m408Dll/main.c b/src/REL/m408Dll/main.c index 4268df6b..63e82391 100644 --- a/src/REL/m408Dll/main.c +++ b/src/REL/m408Dll/main.c @@ -79,7 +79,7 @@ void fn_1_9F0(omObjData *object); void fn_1_25D4(Process *objman); -void ModuleProlog(void) +void ObjectSetup(void) { s32 temp_r31; Process *temp_r30; @@ -1680,4 +1680,4 @@ float fn_1_883C(float arg0, float arg1, float arg2) temp_f31 += 360.0f; } return temp_f31; -} \ No newline at end of file +} diff --git a/src/REL/m410Dll/main.c b/src/REL/m410Dll/main.c index 145d9728..2b6b53a7 100644 --- a/src/REL/m410Dll/main.c +++ b/src/REL/m410Dll/main.c @@ -59,7 +59,7 @@ void fn_1_1A7C(omObjData *object); omObjFunc fn_1_216C(Process *objman, omObjData *object); void fn_1_2188(omObjData *object); -void ModuleProlog(void) +void ObjectSetup(void) { Mtx sp20; Vec sp14; diff --git a/src/REL/m413Dll/main.c b/src/REL/m413Dll/main.c new file mode 100644 index 00000000..395125bc --- /dev/null +++ b/src/REL/m413Dll/main.c @@ -0,0 +1,2195 @@ +#include "game/object.h" +#include "game/objsub.h" +#include "game/audio.h" +#include "game/wipe.h" +#include "game/minigame_seq.h" +#include "game/gamework_data.h" + +#include "game/sprite.h" +#include "game/pad.h" +#include "game/hsfman.h" +#include "game/hsfdraw.h" + +#include "game/hsfmotion.h" + +#include "ext_math.h" + +#include "rel_sqrt_consts.h" + +typedef struct struct_bss_2A6C StructBss2A6C; + +typedef struct struct_sp_14C8 StructSp14C8; + +typedef struct struct_sp_14C8 { + u8 unk0; + u8 unk1; + u8 unk2; + s32 unk4[4]; + StructBss2A6C *unk14; + StructBss2A6C *unk18; + StructSp14C8 *unk1C; +} StructSp14C8; + +typedef struct work_19C8 { + s32 unk0; + s32 unk4; + s32 unk8; + s32 unkC; + s32 unk10; + s32 unk14; + s32 unk18; + s32 unk1C; + s32 unk20; + s32 unk24; + s32 unk28; + s32 unk2C; + u8 unk30[0x10]; + float unk40; + s32 unk44; + StructBss2A6C *unk48[2]; + u8 unk50[8][2]; + u8 unk60; + u8 unk61; + u8 unk62; + u8 unk63[2]; + u8 unk65[2]; + s32 unk68; + s32 unk6C; + u8 unk70; + u8 unk71; + u8 unk72; + s32 unk74; + u8 unk78; + u8 unk79; + s32 unk7C; + s32 unk80; + s32 unk84; + s32 unk88; + s32 unk8C; + s32 unk90; + s32 unk94; + float unk98; + float unk9C; + float unkA0; + s16 unkA4; +} Work19C8; + +typedef struct struct_bss_2A6C { + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; + u8 unk4; + u8 unk5; + s32 unk8[4]; + union { + s8 unk18; + u8 unk18_u; + }; + + Vec unk1C; + u32 unk28; + StructSp14C8 *unk2C; + StructBss2A6C *unk30; + StructBss2A6C *unk34; + StructBss2A6C *unk38; + StructBss2A6C *unk3C; + StructBss2A6C *unk40; + StructBss2A6C *unk44; + StructBss2A6C *unk48; + StructBss2A6C *unk4C; + Work19C8 *unk50; +} StructBss2A6C; + +typedef struct struct_bss_2684 { + float unk0; + float unk4; + s32 unk8; + s32 unkC; + u8 unk10; +} StructBss2684; + +typedef struct struct_bss_100 { + u8 unk0; + Vec unk4; + Vec unk10; + u8 unk1C; + u8 unk1D; +} StructBss100; + +typedef struct struct_bss_b8 { + s32 unk0; + s32 unk4; + float unk8; + Vec unkC; +} StructBssB8; + +typedef struct struct_bss_48 { + s32 unk0; + float unk4[3]; +} StructBss48; + +StructBss2A6C *lbl_1_bss_7884[12]; +StructBss2A6C lbl_1_bss_2A6C[238]; +StructBss2684 lbl_1_bss_2684[50]; +s32 lbl_1_bss_2680; +StructBss100 lbl_1_bss_100[300]; +s32 lbl_1_bss_FC; +s32 lbl_1_bss_D4[5][2]; +s32 lbl_1_bss_D0; +StructBssB8 lbl_1_bss_B8; +StructBss48 lbl_1_bss_48[7]; +omObjData *lbl_1_bss_44; +omObjData *lbl_1_bss_34[4]; +omObjData *lbl_1_bss_30; +float lbl_1_bss_2C; +s32 lbl_1_bss_28; +Process *lbl_1_bss_24; +s16 lbl_1_bss_20; +s32 lbl_1_bss_1C; +s32 lbl_1_bss_18; +s16 lbl_1_bss_14; +s32 lbl_1_bss_10; +s32 lbl_1_bss_8[2]; +s32 lbl_1_bss_4; +s32 lbl_1_bss_0; + +s32 lbl_1_data_0 = -1; +s32 lbl_1_data_4[2] = { -1, -1 }; +s32 lbl_1_data_C[4] = { 0, 1, 2, 3 }; +float lbl_1_data_1C[7] = { 1000, 1000, 1000, 0, 0, 0, 30 }; + +const Vec lbl_1_rodata_10[2] = { + 0, 7955, 3436, + 0, -0.898794f, -0.43837115f +}; + +const GXColor lbl_1_rodata_28 = { + 0, 0, 0, 255 +}; + +const Vec lbl_1_rodata_2C[2] = { + 0, 5966.25f, 3436, + 0, -0.6740955f, -0.43837115f +}; + +const GXColor lbl_1_rodata_44 = { + 0, 0, 0, 255 +}; + +void fn_1_A0(s32 arg0) +{ + Mtx44 sp10C; + Mtx44 spCC; + Mtx44 sp8C; + Mtx44 sp4C; + Mtx44 spC; + CameraData *temp_r31; + s16 temp_r30; + s16 temp_r29; + s16 temp_r28; + s16 temp_r27; + s16 temp_r26; + s16 temp_r25; + + MTXRotDeg(sp8C, 'y', HuPadSubStkX[0]/16.0); + MTXRotDeg(spCC, 'x', HuPadSubStkY[0]/-16.0); + MTXTrans(spC, (((HuPadBtn[0] & PAD_BUTTON_RIGHT) != 0)-((HuPadBtn[0] & PAD_BUTTON_LEFT) != 0))*10.0, + (((HuPadBtn[0] & PAD_BUTTON_UP) != 0)-((HuPadBtn[0] & PAD_BUTTON_DOWN) != 0))*10.0, + ((HuPadTrigL[0]-HuPadTrigR[0])/128.0)*30.0); + MTXConcat(spCC, sp8C, sp4C); + MTXConcat(spC, sp4C, sp10C); + for(temp_r30=0, temp_r29=1; temp_r30<16; temp_r30++, temp_r29 <<= 1) { + if(arg0 & temp_r29) { + temp_r31 = &Hu3DCamera[temp_r30]; + MTXMultVec(sp10C, &temp_r31->pos, &temp_r31->pos); + MTXMultVec(sp4C, &temp_r31->up, &temp_r31->up); + MTXMultVec(sp10C, &temp_r31->target, &temp_r31->target); + } + } + (void)temp_r28; + (void)temp_r27; + (void)temp_r26; + (void)temp_r25; + (void)temp_r28; + (void)temp_r27; + (void)temp_r26; + (void)temp_r25; +} + +s32 fn_1_38C(u8 *arg0, s32 *arg1) +{ + s32 temp_r28; + s32 temp_r27 = rand8()%4; + + if(!arg0 || *arg0 == 0) { + return 0; + } + for(temp_r28=0; temp_r28<4; temp_r28++) { + s32 temp_r31 = (temp_r28+temp_r27)%4; + if(*arg0 & (1 << temp_r31)) { + *arg0 = 1 << temp_r31; + if(arg1) { + arg1[(temp_r31+1)%4] = arg1[(temp_r31+2)%4] = arg1[(temp_r31+3)%4] = 0; + } + return temp_r31; + } + } + return 0; +} + +s32 fn_1_4C0(u8 *arg0, s32 *arg1) +{ + s32 temp_r31; + + s32 temp_r28 = rand8()%4; + if(!arg0 || *arg0 == 0) { + return 0; + } + for(temp_r31=0; temp_r31<4; temp_r31++) { + s32 temp_r29 = (temp_r31+temp_r28)%4; + if(*arg0 & (1 << temp_r29)) { + return arg1[temp_r29]; + } + } + return 0; +} + +#pragma dont_inline on +s32 fn_1_57C(s8 arg0, float arg1, StructBss2A6C *arg2, StructBss2A6C **arg3) +{ + StructBss2A6C *temp_r31; + if(arg3) { + *arg3 = NULL; + } + if(arg0 < 0 || arg0 >= 12 || arg1 < 0 || arg1 > 16) { + return 1; + } + for(temp_r31 = lbl_1_bss_7884[arg0]; temp_r31;) { + if(arg2 == NULL || (temp_r31 != arg2 && (!(arg2->unk1 & 0x2) || !(temp_r31->unk1 & 0x2) || (arg2->unk2 != temp_r31->unk2)))) { + if(temp_r31->unk1C.y > arg1-1.0f && temp_r31->unk1C.y < arg1+1.0f) { + if(arg3) { + *arg3 = temp_r31; + } + return 1; + } + } + temp_r31 = temp_r31->unk48; + if(!temp_r31) { + continue; + } + if(temp_r31->unk1C.y >= arg1+1.0f) { + break; + } + } + return 0; +} +#pragma dont_inline off + + +static inline s32 fn_1_57C_inline(s8 arg0, float arg1, StructBss2A6C *arg2, StructBss2A6C **arg3) +{ + StructBss2A6C *temp_r31; + if(arg3) { + *arg3 = NULL; + } + if(arg0 < 0 || arg0 >= 12 || arg1 < 0 || arg1 > 16) { + return 1; + } + for(temp_r31 = lbl_1_bss_7884[arg0]; temp_r31;) { + if(arg2 == NULL || (temp_r31 != arg2 && (!(arg2->unk1 & 0x2) || !(temp_r31->unk1 & 0x2) || (arg2->unk2 != temp_r31->unk2)))) { + if(temp_r31->unk1C.y > arg1-1.0f && temp_r31->unk1C.y < arg1+1.0f) { + if(arg3) { + *arg3 = temp_r31; + } + return 1; + } + } + temp_r31 = temp_r31->unk48; + if(!temp_r31) { + continue; + } + if(temp_r31->unk1C.y >= arg1+1.0f) { + break; + } + } + return 0; +} + +void fn_1_6D0(s8 arg0, float arg1, StructBss2A6C *arg2) +{ + StructBss2A6C *temp_r31; + StructBss2A6C *temp_r30; + if(arg2->unk4C == NULL) { + lbl_1_bss_7884[arg2->unk18] = arg2->unk48; + } else { + arg2->unk4C->unk48 = arg2->unk48; + } + if(arg2->unk48 != NULL) { + arg2->unk48->unk4C = arg2->unk4C; + } + for(temp_r31=lbl_1_bss_7884[arg0], temp_r30 = NULL; temp_r31; temp_r31=temp_r31->unk48) { + if(temp_r31->unk1C.y > arg1) { + break; + } + temp_r30 = temp_r31; + } + arg2->unk18 = arg0; + arg2->unk1C.y = arg1; + arg2->unk48 = temp_r31; + if(arg2->unk48) { + arg2->unk48->unk4C = arg2; + } + arg2->unk4C = temp_r30; + if(arg2->unk4C) { + arg2->unk4C->unk48 = arg2; + } + if(lbl_1_bss_7884[arg0] == arg2->unk48) { + lbl_1_bss_7884[arg0] = arg2; + } +} + + +s32 fn_1_7F8(StructBss2A6C *arg0, StructSp14C8 *arg1) +{ + s32 temp_r29; + Work19C8 *temp_r28; + Work19C8 *temp_r27; + Work19C8 *temp_r26; + Work19C8 *temp_r25; + s32 temp_r23; + temp_r29 = 0; + if(!arg0) { + return temp_r29; + } + if(arg0->unk0 == 0) { + return temp_r29; + } + if(lbl_1_bss_7884[arg0->unk18] == arg0) { + lbl_1_bss_7884[arg0->unk18] = arg0->unk48; + } + if(arg0->unk4C) { + arg0->unk4C->unk48 = arg0->unk48; + } + if(arg0->unk48) { + arg0->unk48->unk4C = arg0->unk4C; + } + if(arg0->unk38) { + arg0->unk38->unk3C = NULL; + } + if(arg0->unk3C) { + arg0->unk3C->unk38 = NULL; + } + if(arg0->unk44) { + arg0->unk44->unk40 = NULL; + } + if(arg0->unk40) { + arg0->unk40->unk44 = NULL; + } + + if(arg0->unk0 >= 1 && arg0->unk0 <= 4) { + temp_r28 = lbl_1_bss_34[0]->data; + temp_r27 = lbl_1_bss_34[1]->data; + temp_r26 = lbl_1_bss_34[2]->data; + temp_r25 = lbl_1_bss_34[3]->data; + temp_r29 = (fn_1_4C0(&arg1->unk2, arg1->unk4) > 0) ? 2 : 1; + if(lbl_1_bss_18 == -1) { + if(arg1->unk2 & 0x1) { + temp_r28->unk24 += temp_r29; + temp_r28->unk68 += (arg0->unk1 & 0x10) ? 1 : 0; + } + if(arg1->unk2 & 0x2) { + temp_r27->unk24 += temp_r29; + temp_r27->unk68 += (arg0->unk1 & 0x10) ? 1 : 0; + } + if(arg1->unk2 & 0x4) { + temp_r26->unk24 += temp_r29; + temp_r26->unk68 += (arg0->unk1 & 0x10) ? 1 : 0; + } + if(arg1->unk2 & 0x8) { + temp_r25->unk24 += temp_r29; + temp_r25->unk68 += (arg0->unk1 & 0x10) ? 1 : 0; + } + } + for(temp_r23=0; temp_r23<2; temp_r23++) { + lbl_1_bss_100[lbl_1_bss_FC].unk0 = arg0->unk0; + lbl_1_bss_100[lbl_1_bss_FC].unk4.x = ((arg0->unk18*100)-500.0)-50.0; + lbl_1_bss_100[lbl_1_bss_FC].unk4.y = ((100.0f*arg0->unk1C.y)-500.0f)+50.0f; + lbl_1_bss_100[lbl_1_bss_FC].unk4.z = 120; + lbl_1_bss_100[lbl_1_bss_FC].unk10.x = ((rand8()/255.0)*24.0)-12; + lbl_1_bss_100[lbl_1_bss_FC].unk10.y = (rand8()/255.0)*16.0; + lbl_1_bss_100[lbl_1_bss_FC].unk10.z = ((rand8()/255.0)*10.0)+6; + lbl_1_bss_100[lbl_1_bss_FC].unk1C = rand8(); + lbl_1_bss_100[lbl_1_bss_FC].unk1D = rand8(); + lbl_1_bss_FC++; + lbl_1_bss_FC = (lbl_1_bss_FC >= 300) ? 0 : lbl_1_bss_FC; + } + } + arg0->unk0 = arg0->unk1 = arg0->unk2 = arg0->unk3 = 0; + arg0->unk48 = arg0->unk4C = NULL; + return temp_r29; +} + +void fn_1_EC0(Work19C8 *arg0) +{ + s32 temp_r30; + s32 temp_r29; + s32 temp_r28; + s32 temp_r26; + s32 temp_r27; + s32 temp_r25; + u8 temp_r24; + + for(temp_r30=0; temp_r30<8; temp_r30++) { + for(temp_r29=0; temp_r29<2; temp_r29++) { + arg0->unk50[temp_r30][temp_r29] = 1; + } + } + for(temp_r30=1; temp_r30<4; temp_r30++) { + for(temp_r29=0; temp_r29<4;) { + temp_r26 = rand8()%8; + temp_r28 = rand8()%2; + if(arg0->unk50[temp_r26][temp_r28] == 1) { + arg0->unk50[temp_r26][temp_r28] = temp_r30+1; + temp_r29++; + } + } + } + for(temp_r30=0; temp_r30<8; temp_r30++) { + if(arg0->unk50[temp_r30][0] == arg0->unk50[temp_r30][1]) { + do { + temp_r29 = rand8()%8; + } while(temp_r30 == temp_r29 || arg0->unk50[temp_r30][0] == arg0->unk50[temp_r29][0] || arg0->unk50[temp_r30][0] == arg0->unk50[temp_r29][1]); + + temp_r27 = rand8()%2; + temp_r25 = arg0->unk50[temp_r30][0]; + temp_r24 = arg0->unk50[temp_r29][temp_r27]; + arg0->unk50[temp_r30][rand8()%2] = temp_r24; + arg0->unk50[temp_r29][temp_r27] = temp_r25; + } + } +} + +void fn_1_10B8(Work19C8 *arg0) +{ + s32 temp_r31; + s32 temp_r30; + u8 sp16C[12][17] = {}; + u8 sp6C[12] = {}; + s32 temp_r22 = (arg0->unk48[0]->unk18-4 < 0) ? 0 : (arg0->unk48[0]->unk18-4); + s32 temp_r21 = (arg0->unk48[0]->unk18+4 > 11) ? 11 : (arg0->unk48[0]->unk18+4); + s32 sp44[2] = {}; + s32 sp3C[2] = {}; + s32 sp34[2] = { 9, 9 }; + s32 temp_r20 = 0; + s32 temp_r19 = 0; + s32 temp_r18 = 0; + u8 sp8[2]; + sp44[0] = sp44[1] = temp_r22; + sp3C[0] = sp3C[1] = temp_r21; + sp34[0] = arg0->unk48[0]->unk1C.y-0.5; + sp34[1] = arg0->unk48[0]->unk1C.y-1.5; + sp34[1] = (sp34[1] < 0) ? 0 : sp34[1]; + sp8[0] = arg0->unk48[0]->unk0; + sp8[1] = arg0->unk48[1]->unk0; + for(temp_r31=temp_r22; temp_r31<=temp_r21; temp_r31++) { + StructBss2A6C *temp_r27; + s32 temp_r26; + for(temp_r27 = lbl_1_bss_7884[temp_r31], temp_r26=0; temp_r27; temp_r27=temp_r27->unk48) { + if(temp_r27->unk1 & 0x2) { + continue; + } + sp16C[temp_r31][temp_r26] = temp_r27->unk0; + temp_r26++; + } + sp6C[temp_r31] = temp_r26; + for(temp_r30=0; temp_r30<2; temp_r30++) { + if(temp_r26 > sp34[temp_r30]) { + if(temp_r31 <= arg0->unk48[0]->unk18) { + sp44[temp_r30] = temp_r31+1; + } else { + sp3C[temp_r30] = temp_r31-1; + } + } + } + } + for(temp_r30=0; temp_r30<4; temp_r30++) { + for(temp_r31=sp44[temp_r30==2]; temp_r31<=sp3C[temp_r30==2]; temp_r31++) { + if(temp_r31 != sp44[temp_r30==2] || temp_r30 != 3) { + if(temp_r31 != sp3C[temp_r30==2]-1 || temp_r30 != 1) { + s32 temp_r25; + s32 spAC[4][12]; + for(temp_r25=0; temp_r25<2; temp_r25++) { + s32 sp5C[4] = { 0, 1, 0, -1 }; + s32 sp4C[4] = { 1, 0, -1, 0 }; + s32 temp_r29; + s32 temp_r28; + s32 temp_r24; + s32 temp_r23; + + spAC[temp_r30][temp_r31] = arg0->unk48[0]->unk18-temp_r31; + spAC[temp_r30][temp_r31] = (spAC[temp_r30][temp_r31] < 0) ? (-spAC[temp_r30][temp_r31]) : spAC[temp_r30][temp_r31]; + spAC[temp_r30][temp_r31] = (spAC[temp_r30][temp_r31] < 3) ? ((3-spAC[temp_r30][temp_r31])*(3-spAC[temp_r30][temp_r31])) : 0; + spAC[temp_r30][temp_r31] *= (arg0->unk20 == 0) ? 4 : ((arg0->unk20 == 1) ? 2 : 1); + temp_r24 = temp_r31+((temp_r25 == 1) ? sp5C[temp_r30] : 0); + for(temp_r28=temp_r24-2; temp_r28<=temp_r24+2; temp_r28++) { + temp_r23 = sp6C[temp_r24]+((temp_r25 == 1) ? sp4C[temp_r30] : 0); + for(temp_r29=temp_r23-2; temp_r29<=temp_r23+2; temp_r29++) { + if(temp_r28 < 0 || temp_r28 >= 12 || temp_r29 < 0 || temp_r29 >= 9) { + continue; + } + if(sp16C[temp_r28][temp_r29] != 5 && arg0->unk48[temp_r25]->unk0 == sp16C[temp_r28][temp_r29]) { + u8 sp91[5][5] = { + 0, 3, 0, 3, 0, + 2, 10, 24, 10, 2, + 10, 24, 0, 24, 10, + 2, 10, 24, 10, 2, + 0, 2, 10, 2, 0 + }; + spAC[temp_r30][temp_r31] += sp91[temp_r28-(temp_r24-2)][temp_r29-(temp_r23-2)]; + } + if(sp16C[temp_r28][temp_r29] == 5) { + u8 sp78[5][5] = { + 0, 0, 0, 0, 0, + 0, 40, 40, 40, 0, + 0, 40, 0, 40, 0, + 0, 40, 40, 40, 0, + 0, 0, 0, 0, 0 + }; + spAC[temp_r30][temp_r31] += sp78[temp_r28-(temp_r24-2)][temp_r29-(temp_r23-2)]/((arg0->unk20 == 0) ? 4 : 1); + } + } + } + } + if(spAC[temp_r30][temp_r31] > temp_r20) { + temp_r20 = spAC[temp_r30][temp_r31]; + temp_r18 = temp_r30; + temp_r19 = temp_r31; + } + } + } + } + } + arg0->unk7C = temp_r19; + arg0->unk80 = temp_r18; +} + +void fn_1_19C4(omObjData *object) +{ + +} + +void fn_1_19C8(omObjData *object) +{ + Work19C8 *temp_r31; + s32 sp19C; + s32 spC4; + s32 spC0; + + temp_r31 = object->data; + temp_r31->unk28 = temp_r31->unk24; + + temp_r31->unk65[0] = (temp_r31->unk65[0] == 0 || temp_r31->unk65[0] >= 15) ? 0 : temp_r31->unk65[0]+1; + if(temp_r31->unk1C != -1) { + sp19C = (HuPadStkX[temp_r31->unk1C] > 26)-(HuPadStkX[temp_r31->unk1C] < -26); + } else { + sp19C = (temp_r31->unk72 == 1 && temp_r31->unk7C != -1) ? ((temp_r31->unk48[0]) ? ((temp_r31->unk7C < temp_r31->unk48[0]->unk18) ? -1 : (temp_r31->unk7C > temp_r31->unk48[0]->unk18) ? 1 : 0) : 0) : 0; + } + temp_r31->unk88 = ((temp_r31->unk72 == 1 && temp_r31->unk48[0]) && temp_r31->unk7C == temp_r31->unk48[0]->unk18) ? (temp_r31->unk88+1) : 0; + if(sp19C != temp_r31->unk0){ + temp_r31->unkC = (sp19C == 0) ? 0 : 1; + } else { + temp_r31->unkC = (temp_r31->unk0 != 0) ? temp_r31->unkC+1 : 0; + } + temp_r31->unkC = (temp_r31->unkC >= 17) ? 14 : temp_r31->unkC; + temp_r31->unk0 = sp19C; + if(temp_r31->unk72 == 2) { + float temp_f30; + float temp_f24; + s32 temp_r25; + s32 temp_r23; + s32 temp_r22; + StructBss2A6C *sp198; + + for(temp_r23=0; temp_r23<3; temp_r23++) { + s32 sp24C[3] = { 1, 2, 0 }; + temp_r22 = (temp_r31->unk10*3)+((temp_r31->unk10 < 2) ? sp24C[temp_r23] : (2-sp24C[temp_r23])); + if(fn_1_57C_inline(temp_r22, 9.5f, NULL, NULL) == 0) { + if(fn_1_57C_inline(temp_r22, 8.5f, NULL, NULL) == 0) { + break; + } + } + } + temp_r22 = (temp_r23 == 3) ? ((temp_r31->unk10*3)+1) : temp_r22; + temp_f30 = (temp_r22*100)-490; + temp_r31->unkA0 = (temp_r31->unk74 == 0) ? temp_f30 : ((temp_r31->unkA0-10 > temp_f30) ? (temp_r31->unkA0-10) : (((temp_r31->unkA0 > temp_f30) ? temp_f30 : ((temp_r31->unkA0+10 < temp_f30) ? (temp_r31->unkA0+10) : ((temp_r31->unkA0 < temp_f30) ? temp_f30 : temp_r31->unkA0))))); + temp_r31->unk74++; + temp_f30 = temp_r31->unk74/24.0f; + temp_f30 = (temp_f30 > 1.0f) ? 1.0f : temp_f30; + temp_f30 = (0.5*sind((temp_f30*180.0f)+270.0f))+0.5; + temp_f24 = 1.0f-temp_f30; + if(lbl_1_bss_18 == -1) { + Vec sp240; + Vec sp234; + sp240.x = (temp_r31->unkA0*temp_f30)+(temp_r31->unk98*temp_f24); + sp240.y = (425.0f*temp_f30)+(temp_r31->unk9C*temp_f24); + sp240.z = 55; + Hu3D3Dto2D(&sp240, 1, &sp234); + HuSprPosSet(temp_r31->unkA4, 0, sp234.x, sp234.y); + } + if(lbl_1_bss_44->work[0] == 1002 && temp_r31->unk74 >= 24) { + for(temp_r23=0; temp_r23<3; temp_r23++) { + s32 sp228[3] = { 1, 2, 0 }; + temp_r22 = (temp_r31->unk10*3)+((temp_r31->unk10 < 2) ? sp228[temp_r23] : (2-sp228[temp_r23])); + if(fn_1_57C_inline(temp_r22, 9.5f, NULL, NULL) == 0) { + if(fn_1_57C_inline(temp_r22, 8.5f, NULL, NULL) == 0) { + break; + } + } + } + if(temp_r23 != 3) { + for(sp198 = lbl_1_bss_7884[temp_r22]; sp198 && sp198->unk48; sp198 = sp198->unk48); + for(temp_r23=0; temp_r23<2; temp_r23++) { + temp_r25 = (lbl_1_bss_0+1)%238; + while(temp_r25 != lbl_1_bss_0) { + if(lbl_1_bss_2A6C[temp_r25].unk0 == 0) { + break; + } + temp_r25++; + temp_r25 = temp_r25%238; + if(temp_r25 == 0) { + OSReport("looped.\n"); + } + } + if(temp_r25 == lbl_1_bss_0) { + OSReport("m413:error:block empty.\n"); + } + lbl_1_bss_0 = temp_r25; + temp_r31->unk48[temp_r23] = &lbl_1_bss_2A6C[temp_r25]; + lbl_1_bss_2A6C[temp_r25].unk0 = temp_r31->unk50[temp_r31->unk60][temp_r23]; + lbl_1_bss_2A6C[temp_r25].unk1 = 2; + lbl_1_bss_2A6C[temp_r25].unk3 = 1 << temp_r31->unk10; + lbl_1_bss_2A6C[temp_r25].unk2 = temp_r31->unk10; + lbl_1_bss_2A6C[temp_r25].unk18 = temp_r22; + lbl_1_bss_2A6C[temp_r25].unk1C.x = temp_r22; + lbl_1_bss_2A6C[temp_r25].unk1C.y = temp_r23+8.9375f; + lbl_1_bss_2A6C[temp_r25].unk1C.z = 0; + lbl_1_bss_2A6C[temp_r25].unk8[0] = lbl_1_bss_2A6C[temp_r25].unk8[1] = lbl_1_bss_2A6C[temp_r25].unk8[2] = lbl_1_bss_2A6C[temp_r25].unk8[3] = 0; + lbl_1_bss_2A6C[temp_r25].unk2C = 0; + lbl_1_bss_2A6C[temp_r25].unk30 = 0; + lbl_1_bss_2A6C[temp_r25].unk34 = 0; + lbl_1_bss_2A6C[temp_r25].unk50 = temp_r31; + } + temp_r31->unk48[1]->unk48 = NULL; + temp_r31->unk48[1]->unk4C = temp_r31->unk48[0]; + temp_r31->unk48[0]->unk48 = temp_r31->unk48[1]; + temp_r31->unk48[0]->unk4C = sp198; + if(!sp198) { + lbl_1_bss_7884[temp_r31->unk48[0]->unk18] = temp_r31->unk48[0]; + } else { + temp_r31->unk48[0]->unk4C->unk48 = temp_r31->unk48[0]; + } + temp_r31->unk60++; + if(temp_r31->unk60 >= 8) { + fn_1_EC0(temp_r31); + temp_r31->unk60 = 0; + } + temp_r31->unk63[0] = temp_r31->unk48[0]->unk0; + temp_r31->unk63[1] = temp_r31->unk48[1]->unk0; + temp_r31->unk65[0] = 1; + if(((temp_r31->unk68+5)/7) != ((temp_r31->unk6C+5)/7)) { + if(((temp_r31->unk68+5)/7)%4 == 2) { + temp_r31->unk50[temp_r31->unk60][0] = 5; + temp_r31->unk50[temp_r31->unk60][1] = 5; + } else { + temp_r31->unk50[temp_r31->unk60][rand8()%2] = 5; + } + } + temp_r31->unk6C = temp_r31->unk68; + temp_r31->unk72 = 1; + temp_r31->unk74 = 0; + temp_r31->unk71 = 20; + temp_r31->unk70 = 0; + temp_r31->unk7C = -1; + temp_r31->unk80 = -1; + if(temp_r31->unk1C == -1) { + temp_r31->unk84 = 0; + temp_r31->unk88 = 0; + temp_r31->unk8C = temp_r31->unk48[0]->unk18; + temp_r31->unk90 = 0; + } + temp_r31->unk78 = 0; + temp_r31->unk79 = 0; + HuSprAttrReset(temp_r31->unkA4, 0, HUSPR_ATTR_DISPOFF); + HuSprAttrReset(temp_r31->unkA4, 0, HUSPR_ATTR_REVERSE); + { + s32 sp258[12] = {}; + s32 sp194; + for(sp194=0; sp194<3; sp194++) { + StructBss2A6C *sp190; + for(sp190 = lbl_1_bss_7884[sp194+(temp_r31->unk10*3)]; sp190; sp190 = sp190->unk48) { + + sp258[sp194] += (sp190 && sp190->unk0 && (sp190->unk1 & 0x2) == 0 && sp258[sp194] < 9); + } + } + Hu3DModelRotSet(object->model[4], 0, ((sp258[0]+sp258[1]+sp258[2] >= 22) ? -90 : 0), 0); + } + } else { + s32 sp21C[3]; + s32 sp18C; + for(sp18C=0; sp18C<3; sp18C++) { + s32 sp188; + StructBss2A6C *sp184; + for(sp184 = lbl_1_bss_7884[sp18C+(temp_r31->unk10*3)], sp188=0; sp188<9; sp184 = sp184->unk48, sp188++) { + if(!sp184 || sp184->unk1 != 1) { + break; + } + } + sp21C[sp18C] = sp188; + } + if(sp21C[0] >= 9 && sp21C[1] >= 9 && sp21C[2] >= 9) { + temp_r31->unk78 += temp_r31->unk78 < 255; + Hu3DModelRotSet(object->model[4], 0, -90, 0); + temp_r31->unk79 = 1; + } else { + temp_r31->unk79 = 0; + } + } + } + + } else if(temp_r31->unk72 == 1) { + if(!temp_r31->unk48[0] || !temp_r31->unk48[1]) { + temp_r31->unk72 = 2; + temp_r31->unk74 = 0; + HuSprAttrSet(temp_r31->unkA4, 0, HUSPR_ATTR_REVERSE); + } else { + s32 temp_r26; + s32 sp180; + + sp180 = (temp_r31->unkC == 1 || temp_r31->unkC == 14) ? temp_r31->unk0 : 0; + temp_r26 = temp_r31->unk70; + if(temp_r31->unk1C != -1) { + temp_r26 = (HuPadBtnDown[temp_r31->unk1C] & (PAD_BUTTON_X|PAD_BUTTON_Y)) ? (temp_r31->unk70+2) : (temp_r31->unk70+((HuPadBtnDown[temp_r31->unk1C] & PAD_BUTTON_A) ? 1 : 0) + ((HuPadBtnDown[temp_r31->unk1C] & PAD_BUTTON_B) ? -1 : 0)); + } else { + if(temp_r31->unk80 != -1 && temp_r31->unk80 != temp_r31->unk70 && temp_r31->unk84 > 5) { + temp_r26 = temp_r31->unk80; + temp_r31->unk84 = 0; + } else { + temp_r31->unk84++; + } + } + temp_r26 = (temp_r26 >= 4) ? (temp_r26-4) : ((temp_r26 < 0) ? (temp_r26+4) : temp_r26); + temp_r31->unk74++; + if(temp_r31->unk1C == -1) { + s32 sp20C[4] = { 120, 50, 25, 2 }; + s32 sp200[3] = { 60, 45, 25 }; + temp_r31->unk90 = (temp_r31->unk8C == temp_r31->unk48[0]->unk18 && temp_r31->unk8C != temp_r31->unk7C) ? (temp_r31->unk90+1) : 0; + temp_r31->unk8C = temp_r31->unk48[0]->unk18; + if(temp_r31->unk7C == -1 && temp_r31->unk90 >= sp20C[temp_r31->unk20] || (temp_r31->unk20 >= 1 && (temp_r31->unk90 >= sp200[temp_r31->unk20-1]))) { + s32 sp1F0[4] = { 30, 30, 20, 10 }; + fn_1_10B8(temp_r31); + temp_r31->unk84 = 0; + temp_r31->unk88 = 0; + temp_r31->unk94 = (rand8()%sp1F0[temp_r31->unk20])-(sp1F0[temp_r31->unk20]/2); + } + } + if(lbl_1_bss_18 == -1) { + if(temp_r31->unk1C != -1) { + temp_r31->unk48[0]->unk1C.z = temp_r31->unk48[1]->unk1C.z = -0.03125f+((HuPadStkY[temp_r31->unk1C] < -36) ? (-0.26875f*((-HuPadStkY[temp_r31->unk1C]-36)/36.0f)) : 0); + temp_r31->unk4 = (HuPadStkY[temp_r31->unk1C] < -36) ? 1 : 0; + } else { + s32 sp1E4[3] = { 50, 30, 25 }; + s32 sp1D8[3] = { 90, 80, 70 }; + + temp_r31->unk4 = ((temp_r31->unk20 && (temp_r31->unk88 > temp_r31->unk94+sp1E4[temp_r31->unk20-1] || temp_r31->unk90 > sp1D8[temp_r31->unk20-1]))) ? 1 : 0; + temp_r31->unk48[0]->unk1C.z = temp_r31->unk48[1]->unk1C.z = -0.03125f+(temp_r31->unk4 ? -0.26875f : 0.0f); + } + } else { + temp_r31->unk48[0]->unk1C.z = temp_r31->unk48[1]->unk1C.z = 0; + } + if(lbl_1_bss_18 == -1 && sp180) { + if(fn_1_57C_inline(temp_r31->unk48[0]->unk18_u+sp180, temp_r31->unk48[0]->unk1C.y, temp_r31->unk48[0], NULL) == 0) { + if(fn_1_57C_inline(temp_r31->unk48[1]->unk18_u+sp180, temp_r31->unk48[1]->unk1C.y, temp_r31->unk48[1], NULL) == 0) { + float sp17C = temp_r31->unk48[0]->unk18; + float sp178 = temp_r31->unk48[1]->unk18; + fn_1_6D0(temp_r31->unk48[0]->unk18_u+sp180, temp_r31->unk48[0]->unk1C.y, temp_r31->unk48[0]); + fn_1_6D0(temp_r31->unk48[1]->unk18_u+sp180, temp_r31->unk48[1]->unk1C.y, temp_r31->unk48[1]); + temp_r31->unk48[0]->unk1C.x = (sp17C*0.5)+(0.5*temp_r31->unk48[0]->unk18); + temp_r31->unk48[1]->unk1C.x = (sp178*0.5)+(0.5*temp_r31->unk48[1]->unk18); + } + } + } + if(lbl_1_bss_18 != -1) { + temp_r26 = temp_r31->unk70; + } + if(temp_r26 != temp_r31->unk70) { + StructBss2A6C *temp_r29 = temp_r31->unk48[0]; + StructBss2A6C *temp_r30 = temp_r31->unk48[1]; + s32 sp174 = temp_r29->unk18; + float temp_f25 = temp_r29->unk1C.y; + s32 sp1C8[4] = { 0, 1, 0, -1 }; + s32 sp1B8[4] = { 1, 0, -1, 0 }; + StructBss2A6C *sp170; + if(fn_1_57C_inline(sp174+sp1C8[temp_r26], temp_f25+sp1B8[temp_r26], temp_r30, &sp170) == 0) { + if(temp_r31->unk70 != temp_r26) { + temp_r30->unk5 = 1; + temp_r30->unk4 = (((((temp_r26-temp_r31->unk70)+8)%4)-1)*4)+temp_r31->unk70+1; + } + temp_r31->unk70 = temp_r26; + fn_1_6D0(sp174+sp1C8[temp_r26], temp_f25+sp1B8[temp_r26], temp_r30); + temp_r30->unk1C.x = temp_r30->unk18; + } else { + float temp_f31; + s32 temp_r24; + if(temp_r26%2 == 0) { + s32 sp16C = (temp_r26 == 2) ? 1 : 0; + temp_f31 = temp_f25+((sp16C == 1) ? sp1B8[temp_r26] : sp1B8[temp_r26]); + fn_1_57C_inline(sp174, temp_f31, (sp16C == 0) ? temp_r30 : temp_r30, &sp170); + if(temp_r26 == 2) { + if(!sp170 || sp170->unk1C.y <= temp_f31) { + temp_f31 = ((sp16C == 1) ? 1.0f : 0.0f)+((sp170) ? sp170->unk1C.y+1.0f : 0.0f); + temp_r24 = sp174; + } else { + temp_f31 = (sp170->unk1C.y-1.0f)-(sp16C==0); + temp_r24 = sp174; + } + } else { + if(sp170->unk1C.y >= temp_f31) { + temp_f31 = ((sp16C == 1) ? 1.0f : 0.0f)+((sp170) ? sp170->unk1C.y-2.0f : 0.0f); + temp_r24 = sp174; + } else { + temp_f31 = (sp170->unk1C.y-1.0f)-(sp16C==0); + temp_r24 = sp174; + } + } + } else { + temp_r24 = sp174-sp1C8[temp_r26]; + temp_f31 = temp_f25; + } + if(fn_1_57C_inline(temp_r24, temp_f31, temp_r29, NULL) == 0) { + if(fn_1_57C_inline(temp_r24+sp1C8[temp_r26], temp_f31+sp1B8[temp_r26], temp_r30, NULL) == 0) { + float sp168 = temp_r31->unk48[0]->unk18; + float sp164 = temp_r31->unk48[1]->unk18; + if(temp_r31->unk70 != temp_r26) { + temp_r30->unk5 = 1; + temp_r30->unk4 = (((((temp_r26-temp_r31->unk70)+8)%4)-1)*4)+temp_r31->unk70+1; + } + temp_r31->unk70 = temp_r26; + if(temp_r26 == 2) { + fn_1_6D0(temp_r24, temp_f31+(0.5*(float)sp1B8[temp_r26]), temp_r29); + fn_1_6D0(temp_r24+sp1C8[temp_r26], temp_f31+sp1B8[temp_r26], temp_r30); + fn_1_6D0(temp_r24, temp_f31, temp_r29); + } else { + fn_1_6D0(temp_r24, temp_f31, temp_r29); + fn_1_6D0(temp_r24+sp1C8[temp_r26], temp_f31+sp1B8[temp_r26], temp_r30); + + } + temp_r31->unk48[0]->unk1C.x = (sp168*0.5)+(0.5*temp_r31->unk48[0]->unk18); + temp_r31->unk48[1]->unk1C.x = (sp164*0.5)+(0.5*temp_r31->unk48[1]->unk18); + } + } + + } + } + } + if(temp_r31->unk48[0]) { + temp_r31->unk98 = 10.0+((100.0*((temp_r31->unk48[0]->unk18+temp_r31->unk48[0]->unk1C.x)/2.0))-500); + temp_r31->unk9C = 25.0f+((100.0f*temp_r31->unk48[0]->unk1C.y)-500.0f); + } + if(lbl_1_bss_18 == -1) { + Vec sp1AC; + Vec sp1A0; + sp1AC.x = temp_r31->unk98; + sp1AC.y = temp_r31->unk9C; + sp1AC.z = 55; + Hu3D3Dto2D(&sp1AC, 1, &sp1A0); + HuSprPosSet(temp_r31->unkA4, 0, sp1A0.x, sp1A0.y); + } + } +} + +void fn_1_8AC8(StructBss2A6C *arg0, StructSp14C8 *arg1); + +#define CHECK_2E48(arg0, arg1, arg2) \ + (((arg0)-1 <= 0 || (arg2[(arg0)-1][(arg1)] && arg2[(arg0)-1][(arg1)]->unk0)) && \ + ((arg0)-1 >= 11 || (arg2[(arg0)+1][(arg1)] && arg2[(arg0)+1][(arg1)]->unk0)) && \ + ((arg1)-1 <= 0 || (arg2[(arg0)][(arg1)-1] && arg2[(arg0)][(arg1)-1]->unk0)) && \ + ((arg1)-1 >= 8 || (arg2[(arg0)][(arg1)+1] && arg2[(arg0)][(arg1)+1]->unk0)) && \ + ((arg0)-1 >= 11 || (arg1)-1 <= 0 || (arg2[(arg0)+1][(arg1)-1] && arg2[(arg0)+1][(arg1)-1]->unk0)) && \ + ((arg0)-1 >= 11 || (arg1)-1 >= 8 || (arg2[(arg0)+1][(arg1)+1] && arg2[(arg0)+1][(arg1)+1]->unk0)) && \ + ((arg0)-1 <= 0 || (arg1)-1 <= 0 || (arg2[(arg0)-1][(arg1)-1] && arg2[(arg0)-1][(arg1)-1]->unk0)) && \ + ((arg0)-1 <= 0 || (arg1)-1 >= 8 || (arg2[(arg0)-1][(arg1)+1] && arg2[(arg0)-1][(arg1)+1]->unk0))) + +void fn_1_52A4(s32 arg0) +{ + omObjData *sp1EC = lbl_1_bss_30; + StructBss2A6C *sp2E48[14][19] = {}; + StructBss2A6C *sp1E8 = NULL; + StructBss2A6C *temp_r31; + StructBss2A6C *temp_r30; + s32 temp_r29; + s32 temp_r23; + s32 temp_r19; + s32 temp_r18; + float temp_f31; + float temp_f30; + float temp_f29; + + StructSp14C8 sp14C8[204]; + StructBss2A6C *spD58[476]; + StructSp14C8 *spA28[204]; + float sp6F8[204]; + float sp3C8[204]; + s16 sp230[204]; + + for(temp_r18=0; temp_r18<12; temp_r18++) { + for(temp_r31 = lbl_1_bss_7884[temp_r18]; temp_r31; temp_r31=temp_r31->unk48) { + s32 sp1E4 = temp_r31->unk1; + s32 sp1E0 = (((sp1E4 & 0x2) == 0 && (arg0 == 4)) || ((sp1E4 & 0x2) && (temp_r31->unk3 & (1 << arg0)))); + temp_f29 = (sp1E0) ? temp_r31->unk1C.z : 0; + temp_r31->unk2C = (void *)(temp_r31->unk30 = temp_r31->unk34 = NULL); + temp_r31->unk38 = temp_r31->unk3C = temp_r31->unk40 = temp_r31->unk44 = NULL; + if(arg0 == 4) { + temp_r31->unk5 +=temp_r31->unk4 != 0 && temp_r31->unk5 != 0; + temp_r31->unk5 = (temp_r31->unk4 == 0 || (temp_r31->unk5 > (((temp_r31->unk4-1)/4 == 1) ? 15 : 15))) ? 0 : temp_r31->unk5; + temp_r31->unk4 = (temp_r31->unk5 == 0) ? 0 : temp_r31->unk4; + temp_r31->unk1C.x = (0.5*temp_r31->unk18)+(0.5*temp_r31->unk1C.x); + } + if(temp_r31->unk0) { + s32 sp1DC = 0; + StructBss2A6C *sp1D8; + if((temp_r31->unk1 & 0x1) && temp_r31->unk1C.y == 0.0f && !temp_r31->unk4C) { + sp1DC = 1; + sp1D8 = NULL; + } else if((temp_r31->unk1 & 0x1) && temp_r31->unk4C && (temp_r31->unk4C->unk1C.y == temp_r31->unk1C.y-1.0f)) { + sp1DC = 2; + sp1D8 = temp_r31->unk4C; + } else { + if(fn_1_57C(temp_r18, temp_r31->unk1C.y+temp_f29, temp_r31, &sp1D8)) { + if(!sp1D8 || temp_r31->unk1C.y+temp_f29 >= sp1D8->unk1C.y) { + sp1DC = 2; + } + } + } + if(sp1DC != 0) { + if(temp_r31->unk1 & 0x2) { + float temp_f28 = (temp_r31->unk1C.y+temp_f29)-((!sp1D8) ? 0.0f : (1.0f+sp1D8->unk1C.y)); + temp_f28 = temp_r31->unk1C.y-((!sp1D8) ? 0.0f : (1.0f+sp1D8->unk1C.y)); + if(temp_r31->unk50->unk48[0]->unk18 != temp_r31->unk50->unk48[1]->unk18) { + temp_r31->unk50->unk48[0]->unk1C.y = ((!sp1D8) ? 0.0f : (1.0f+sp1D8->unk1C.y)); + temp_r31->unk50->unk48[1]->unk1C.y = ((!sp1D8) ? 0.0f : (1.0f+sp1D8->unk1C.y)); + } else { + temp_r31->unk50->unk48[0]->unk1C.y -= temp_f28; + temp_r31->unk50->unk48[1]->unk1C.y -= temp_f28; + } + temp_r31->unk50->unk48[0]->unk1C.z = 0; + temp_r31->unk50->unk48[1]->unk1C.z = 0; + if(sp1E0) { + if(!sp1D8 || ((sp1D8->unk1 & 0x1) && (sp1D8->unk1 & 0x2) == 0)) { + temp_r31->unk50->unk71 -= (temp_r31->unk50->unk71 != 0 && lbl_1_bss_18 == -1); + + } + } + if(temp_r31->unk50->unk71 == 0 || temp_r31->unk50->unk4 != 0 && (!sp1D8 || ((sp1D8->unk1 & 0x1) && (sp1D8->unk1 & 0x2) == 0))) { + temp_r31->unk50->unk48[0]->unk1 &= ~0x2; + temp_r31->unk50->unk48[1]->unk1 &= ~0x2; + temp_r31->unk50->unk48[0]->unk1 |= 0x10; + temp_r31->unk50->unk48[1]->unk1 |= 0x10; + temp_r31->unk1 |= 0x1; + if(temp_r31->unk50->unk48[0]->unk18 != temp_r31->unk50->unk48[1]->unk18) { + s32 sp1D4; + s32 sp1D0 = (temp_r31 == temp_r31->unk50->unk48[1]) ? 1 : 0; + s32 sp1CC = temp_r31->unk50->unk48[sp1D0]->unk18; + s32 sp1C8 = temp_r31->unk50->unk48[1-sp1D0]->unk18; + float sp1C4 = temp_r31->unk50->unk48[sp1D0]->unk1C.y; + float sp1C0 = temp_r31->unk50->unk48[1-sp1D0]->unk1C.y; + sp1D4 = (sp1CC < sp1C8 || (sp1CC == sp1C8 && sp1C4 < sp1C0)) ? 1 : 0; + if(sp1D4 == 1) { + StructBss2A6C *temp_r21 = temp_r31->unk50->unk48[1-sp1D0]; + StructBss2A6C *temp_r20 = (temp_r21) ? temp_r21->unk4C : NULL; + if(temp_r21) { + if((!temp_r20 && temp_r21->unk1C.y == 0.0f) || (temp_r20 && temp_r21->unk1C.y == temp_r20->unk1C.y+1.0f && (temp_r20->unk1 & 0x1) && (temp_r20->unk1 & 0x2) == 0)) { + temp_r21->unk1C.y = (temp_r20) ? (temp_r20->unk1C.y+1.0f) : 0.0f; + temp_r21->unk1 &= ~0x1; + temp_r21->unk1 |= (temp_r20 && ((temp_r20->unk1 & 0x1) == 0 || (temp_r20->unk1 & 0x2) != 0)) ? 0 : 1; + temp_r21->unk1C.z = (temp_r21->unk1 & 0x1) ? -0.010416667f : ((!temp_r20) ? -0.010416667f : temp_r20->unk1C.z); + sp1E8 = temp_r21; + } + } + } + } + temp_r31->unk4 = temp_r31->unk5 = 0; + if(temp_r31->unk50->unk48[0]->unk18 == temp_r31->unk50->unk48[1]->unk18) { + s32 sp1BC = (temp_r31->unk50->unk48[1] == temp_r31) ? 1 : 0; + s32 sp1B8 = temp_r31->unk50->unk48[0]->unk1C.y > temp_r31->unk50->unk48[1]->unk1C.y; + temp_r31->unk50->unk48[1-sp1B8]->unk1C.y = 1+temp_r31->unk50->unk48[sp1B8]->unk1C.y; + temp_r31->unk50->unk48[1-sp1B8]->unk1C.z = -0.010416667f; + temp_r31->unk50->unk48[0]->unk1 |= 0x1; + temp_r31->unk50->unk48[1]->unk1 |= 0x1; + temp_r31->unk50->unk48[0]->unk4 = temp_r31->unk50->unk48[0]->unk5 = 0; + temp_r31->unk50->unk48[1]->unk4 = temp_r31->unk50->unk48[1]->unk5 = 0; + temp_r31->unk38 = (temp_r31->unk50->unk48[1] == temp_r31) ? temp_r31->unk50->unk48[0] : temp_r31->unk50->unk48[1]; + if(sp1BC) { + temp_r31->unk50->unk48[0]->unk1 |= 0x8; + } else { + temp_r31->unk50->unk48[1]->unk1 |= 0x8; + } + + } + temp_r31->unk50->unk48[0] = NULL; + temp_r31->unk50->unk48[1] = NULL; + } + } else { + temp_r31->unk1C.y = (sp1D8) ? (1.0f+sp1D8->unk1C.y) : 0.0f; + temp_r31->unk1 &= ~0x1; + temp_r31->unk1 |= (sp1D8 && ((sp1D8->unk1 & 0x1) == 0 || (sp1D8->unk1 & 0x2) != 0)) ? 0 : 1; + temp_r31->unk1C.z = (temp_r31->unk1 & 0x1) ? -0.010416667f : ((!sp1D8) ? -0.010416667f : sp1D8->unk1C.z); + } + } else { + temp_r31->unk1C.y += temp_f29; + temp_r31->unk1C.z = (sp1E0) ? ((temp_r31->unk1 & 0x3) ? 0.0f : -0.010416667f+temp_r31->unk1C.z) : temp_r31->unk1C.z; + if(temp_r31->unk1 & 0x1) { + temp_r31->unk1 &= ~0x1; + } + } + } + if((temp_r31->unk1 & 0x1) && (sp1E4 & 0x1) && (temp_r31->unk1 & 0x8) == 0 && temp_r31 != sp1E8) { + temp_r31->unk8[0] = temp_r31->unk8[1] = temp_r31->unk8[2] = temp_r31->unk8[3] = 0; + temp_r31->unk3 = 0; + temp_r31->unk1 &= ~0x10; + } + temp_r31->unk1 &= ~0x8; + if((temp_r31->unk1 & 0x1) && (temp_r31->unk1 & 0x2) == 0) { + sp2E48[temp_r31->unk18+1][(int)temp_r31->unk1C.y+1] = temp_r31; + } + if(temp_r31->unk1 & 0x2) { + temp_r31->unk1C.z = 0; + } + } + } + temp_r23 = 0; + { + s32 sp1B4; + for(temp_r18=0; temp_r18<12; temp_r18++) { + StructBss2A6C *sp1B0 = (temp_r18 < 11) ? lbl_1_bss_7884[temp_r18+1] : NULL; + StructBss2A6C *sp1AC = NULL; + StructBss2A6C *sp1A8 = NULL; + float sp1A4 = (sp1B0) ? (sp1B0->unk1C.y) : 0.0f; + for(temp_r31 = lbl_1_bss_7884[temp_r18]; temp_r31; temp_r31=temp_r31->unk48) { + s32 sp1A0 = temp_r31->unk18+1; + s32 sp19C = (int)temp_r31->unk1C.y+1; + if((temp_r31->unk1 & 0x1) && (temp_r31->unk1 & 0x2) == 0) { + if(sp2E48[sp1A0][sp19C+1]) { + temp_r31->unk38 = sp2E48[sp1A0][sp19C+1]; + temp_r31->unk38->unk3C = temp_r31; + } + if(sp2E48[sp1A0+1][sp19C]) { + sp1B0 = sp2E48[sp1A0+1][sp19C]; + temp_r31->unk44 = sp1B0; + temp_r31->unk44->unk40 = temp_r31; + } + sp1AC = sp2E48[sp1A0+1][sp19C+1]; + sp1A8 = sp2E48[sp1A0+1][sp19C-1]; + if(temp_r31->unk0 == 5 && temp_r31->unk2C == NULL && temp_r31->unk1C.y <= 8.0f && sp19C-1 < 9) { + s32 sp198 = temp_r31->unk0 == 5; + sp14C8[temp_r23].unk0 = 5; + sp14C8[temp_r23].unk4[0] = (sp198) ? temp_r31->unk8[0] : temp_r30->unk8[0]; + sp14C8[temp_r23].unk4[1] = (sp198) ? temp_r31->unk8[0] : temp_r30->unk8[1]; + sp14C8[temp_r23].unk4[2] = (sp198) ? temp_r31->unk8[0] : temp_r30->unk8[2]; + sp14C8[temp_r23].unk4[3] = (sp198) ? temp_r31->unk8[0] : temp_r30->unk8[3]; + sp14C8[temp_r23].unk1 = 1; + sp14C8[temp_r23].unk2 = 0; + sp14C8[temp_r23].unk14 = (sp198) ? temp_r31 : temp_r30; + sp14C8[temp_r23].unk18 = (sp198) ? temp_r31 : temp_r30; + sp14C8[temp_r23].unk1C = 0; + if(sp198) { + temp_r31->unk30 = NULL; + temp_r31->unk34 = NULL; + temp_r31->unk2C = &sp14C8[temp_r23]; + } else { + temp_r30->unk30 = NULL; + temp_r30->unk34 = NULL; + temp_r30->unk2C = &sp14C8[temp_r23]; + } + temp_r23++; + } + for(temp_r29=0; temp_r29<((temp_r31 && temp_r31->unk0 == 5) ? 2 : 0)+2; temp_r29++) { + temp_r30 = (temp_r29 == 0) ? temp_r31->unk48 : ((temp_r29 == 1) ? sp1B0 : ((temp_r29 == 2) ? sp1AC : sp1A8)); + if(temp_r30 && (temp_r30->unk1 & 0x1)) { + if(temp_r29 != 1 || temp_r31->unk1C.y == temp_r30->unk1C.y) { + if(temp_r31->unk0 == temp_r30->unk0) { + if((temp_r31->unk0 >= 1 && temp_r31->unk0 <= 4) || (temp_r31->unk0 == 5 && (temp_r31->unk1C.y <= 8.0f || temp_r30->unk1C.y <= 8.0f))) { + StructSp14C8 *temp_r28 = temp_r31->unk2C; + StructSp14C8 *temp_r27 = temp_r30->unk2C; + if(temp_r31->unk2C && temp_r30->unk2C) { + if(temp_r31->unk2C != temp_r30->unk2C) { + StructBss2A6C *sp194 = temp_r28->unk14; + StructBss2A6C *sp190 = temp_r27->unk14; + while(1) { + sp190->unk2C = temp_r28; + if(!sp190->unk34) { + break; + } + sp190 = sp190->unk34; + } + temp_r27->unk14->unk30 = temp_r28->unk18; + temp_r28->unk18->unk34 = temp_r27->unk14; + temp_r28->unk4[0] = (temp_r28->unk4[0] > temp_r27->unk4[0]) ? temp_r28->unk4[0] : temp_r27->unk4[0]; + temp_r28->unk4[1] = (temp_r28->unk4[1] > temp_r27->unk4[1]) ? temp_r28->unk4[1] : temp_r27->unk4[1]; + temp_r28->unk4[2] = (temp_r28->unk4[2] > temp_r27->unk4[2]) ? temp_r28->unk4[2] : temp_r27->unk4[2]; + temp_r28->unk4[3] = (temp_r28->unk4[3] > temp_r27->unk4[3]) ? temp_r28->unk4[3] : temp_r27->unk4[3]; + temp_r28->unk1 = temp_r28->unk1+temp_r27->unk1; + temp_r28->unk2 |= temp_r27->unk2; + temp_r28->unk18 = sp190; + temp_r27->unk14 = temp_r27->unk18 = NULL; + temp_r27->unk1 = 0; + temp_r27->unk0 = 0; + temp_r27->unk1C = temp_r28; + } + } else { + if(temp_r31->unk2C) { + temp_r30->unk2C = temp_r31->unk2C; + temp_r28->unk18->unk34 = temp_r30; + temp_r30->unk30 = temp_r28->unk18; + temp_r28->unk18 = temp_r30; + temp_r28->unk1++; + temp_r28->unk2 |= temp_r30->unk3; + temp_r28->unk4[0] = (temp_r28->unk4[0] < temp_r30->unk8[0]) ? temp_r30->unk8[0] : temp_r28->unk4[0]; + temp_r28->unk4[1] = (temp_r28->unk4[1] < temp_r30->unk8[1]) ? temp_r30->unk8[1] : temp_r28->unk4[1]; + temp_r28->unk4[2] = (temp_r28->unk4[2] < temp_r30->unk8[2]) ? temp_r30->unk8[2] : temp_r28->unk4[2]; + temp_r28->unk4[3] = (temp_r28->unk4[3] < temp_r30->unk8[3]) ? temp_r30->unk8[3] : temp_r28->unk4[3]; + } else if(temp_r30->unk2C) { + temp_r31->unk2C = temp_r30->unk2C; + temp_r27->unk18->unk34 = temp_r31; + temp_r31->unk30 = temp_r27->unk18; + temp_r27->unk18 = temp_r31; + temp_r27->unk1++; + temp_r27->unk2 |= temp_r31->unk3; + temp_r27->unk4[0] = (temp_r27->unk4[0] < temp_r31->unk8[0]) ? temp_r31->unk8[0] : temp_r27->unk4[0]; + temp_r27->unk4[1] = (temp_r27->unk4[1] < temp_r31->unk8[1]) ? temp_r31->unk8[1] : temp_r27->unk4[1]; + temp_r27->unk4[2] = (temp_r27->unk4[2] < temp_r31->unk8[2]) ? temp_r31->unk8[2] : temp_r27->unk4[2]; + temp_r27->unk4[3] = (temp_r27->unk4[3] < temp_r31->unk8[3]) ? temp_r31->unk8[3] : temp_r27->unk4[3]; + } else { + sp14C8[temp_r23].unk0 = temp_r31->unk0; + sp14C8[temp_r23].unk4[0] = (temp_r31->unk8[0] > temp_r30->unk8[0]) ? temp_r31->unk8[0] : temp_r30->unk8[0]; + sp14C8[temp_r23].unk4[1] = (temp_r31->unk8[1] > temp_r30->unk8[1]) ? temp_r31->unk8[1] : temp_r30->unk8[1]; + sp14C8[temp_r23].unk4[2] = (temp_r31->unk8[2] > temp_r30->unk8[2]) ? temp_r31->unk8[2] : temp_r30->unk8[2]; + sp14C8[temp_r23].unk4[3] = (temp_r31->unk8[3] > temp_r30->unk8[3]) ? temp_r31->unk8[3] : temp_r30->unk8[3]; + sp14C8[temp_r23].unk1 = 2; + sp14C8[temp_r23].unk2 = (temp_r31->unk3 | temp_r30->unk3); + sp14C8[temp_r23].unk14 = temp_r31; + sp14C8[temp_r23].unk18 = temp_r30; + sp14C8[temp_r23].unk1C = NULL; + temp_r31->unk30 = NULL; + temp_r31->unk34 = temp_r30; + temp_r30->unk30 = temp_r31; + temp_r30->unk34 = NULL; + temp_r31->unk2C = &sp14C8[temp_r23]; + temp_r30->unk2C = &sp14C8[temp_r23]; + temp_r23++; + } + } + } + } + } + } + } + } + } + } + for(temp_r29=0; temp_r29unk18+1; + s32 temp_r25 = (int)sp18C->unk1C.y+1; + if(sp14C8[temp_r29].unk0 != 0 && temp_r25 <= 9) { + if(!CHECK_2E48(temp_r24, temp_r25, sp2E48)) { + sp14C8[temp_r29].unk0 = 0; + } else { + sp14C8[temp_r29].unk2 |= + ((sp2E48[temp_r24-1][temp_r25]) ? sp2E48[temp_r24-1][temp_r25]->unk3 : 0) | + ((sp2E48[temp_r24+1][temp_r25]) ? sp2E48[temp_r24+1][temp_r25]->unk3 : 0) | + ((sp2E48[temp_r24][temp_r25-1]) ? sp2E48[temp_r24][temp_r25-1]->unk3 : 0) | + ((sp2E48[temp_r24][temp_r25+1]) ? sp2E48[temp_r24][temp_r25+1]->unk3 : 0) | + ((sp2E48[temp_r24+1][temp_r25-1]) ? sp2E48[temp_r24+1][temp_r25-1]->unk3 : 0) | + ((sp2E48[temp_r24+1][temp_r25+1]) ? sp2E48[temp_r24+1][temp_r25+1]->unk3 : 0) | + ((sp2E48[temp_r24-1][temp_r25-1]) ? sp2E48[temp_r24-1][temp_r25-1]->unk3 : 0) | + ((sp2E48[temp_r24-1][temp_r25+1]) ? sp2E48[temp_r24-1][temp_r25+1]->unk3 : 0); + } + sp18C = sp18C->unk34; + if(!sp18C) { + break; + } + } + } + } + for(temp_r29=0; temp_r29= 1 && sp14C8[temp_r29].unk0 <= 4 && sp14C8[temp_r29].unk1 >= 3) || sp14C8[temp_r29].unk0 == 5) { + fn_1_38C(&sp14C8[temp_r29].unk2, sp14C8[temp_r29].unk4); + } + } + sp1B4 = 1; + while(sp1B4 >= 0) { + s32 temp_r22 = 0; + s32 sp188 = 0; + for(temp_r29=0; temp_r29= 1 && sp14C8[temp_r29].unk0 <= 4 && sp14C8[temp_r29].unk1 >= 3)) || (sp1B4 == 1 && sp14C8[temp_r29].unk0 == 5)) { + StructBss2A6C *temp_r26 = sp14C8[temp_r29].unk14; + s32 sp184 = 0; + s32 sp180 = 0; + float temp_f31 = -1; + float temp_f30 = -1; + if(sp14C8[temp_r29].unk0 == 5) { + lbl_1_bss_D0++; + lbl_1_bss_D0 %= 5; + lbl_1_bss_D4[lbl_1_bss_D0][1] = 1; + lbl_1_bss_D4[lbl_1_bss_D0][0] = 0; + for(temp_r19=0; temp_r19<10; temp_r19++) { + Hu3DModelAttrSet(lbl_1_bss_30->model[((lbl_1_bss_D0*10)+13+temp_r19)], 1); + } + } + for(temp_r19=0; temp_r19unk18; + temp_f30 = temp_r26->unk1C.y; + } else { + sp180++; + temp_f31 = (temp_f31*(1.0-(1.0/sp180)))+(temp_r26->unk18*(1.0/sp180)); + temp_f30 = (temp_f30*(1.0-(1.0/sp180)))+(temp_r26->unk1C.y*(1.0/sp180)); + } + if(sp14C8[temp_r29].unk0 == 5) { + if(lbl_1_bss_D4[lbl_1_bss_D0][0] < 10) { + Hu3DModelPosSet(lbl_1_bss_30->model[((lbl_1_bss_D0*10)+13+lbl_1_bss_D4[lbl_1_bss_D0][0])], (((temp_r26->unk18*100)-500.0)-50.0), 50.0f+((100.0f*temp_r26->unk1C.y)-500.0f), 120); + Hu3DModelAttrReset(lbl_1_bss_30->model[((lbl_1_bss_D0*10)+13+lbl_1_bss_D4[lbl_1_bss_D0][0])], 1); + Hu3DMotionTimeSet(lbl_1_bss_30->model[((lbl_1_bss_D0*10)+13+lbl_1_bss_D4[lbl_1_bss_D0][0])], 2.0f); + lbl_1_bss_D4[lbl_1_bss_D0][0]++; + lbl_1_bss_B8.unk4 += 4; + if(lbl_1_bss_D4[lbl_1_bss_D0][0] == 1) { + lbl_1_bss_B8.unk4 += 7; + } + } + fn_1_8AC8(temp_r26->unk38, &sp14C8[temp_r29]); + fn_1_8AC8((temp_r26->unk44 && temp_r26->unk44->unk38) ? temp_r26->unk44->unk38 : temp_r26->unk44, &sp14C8[temp_r29]); + fn_1_8AC8((temp_r26->unk40 && temp_r26->unk40->unk38) ? temp_r26->unk40->unk38 : temp_r26->unk40, &sp14C8[temp_r29]); + spD58[temp_r22] = temp_r26->unk38; + temp_r22++; + spD58[temp_r22] = temp_r26->unk3C; + temp_r22++; + if(temp_r26->unk44) { + spD58[temp_r22] = temp_r26->unk44->unk38; + temp_r22++; + spD58[temp_r22] = temp_r26->unk44->unk3C; + temp_r22++; + } + spD58[temp_r22] = temp_r26->unk44; + temp_r22++; + if(temp_r26->unk40) { + spD58[temp_r22] = temp_r26->unk40->unk38; + temp_r22++; + spD58[temp_r22] = temp_r26->unk40->unk3C; + temp_r22++; + } + spD58[temp_r22] = temp_r26->unk40; + temp_r22++; + spD58[temp_r22] = temp_r26; + temp_r22++; + } else { + fn_1_8AC8(temp_r26, &sp14C8[temp_r29]); + sp184 += fn_1_7F8(temp_r26, &sp14C8[temp_r29]); + } + temp_r26 = temp_r26->unk34; + if(!temp_r26) { + break; + } + } + if(sp14C8[temp_r29].unk0 == 5 && (sp14C8[temp_r29].unk2 & 0xF)) { + Work19C8 *sp220[4]; + s32 sp17C; + for(sp17C=0; sp17C<4; sp17C++) { + if((1 << sp17C) & (sp14C8[temp_r29].unk2)) { + sp220[sp17C] = lbl_1_bss_34[sp17C]->data; + omVibrate(sp220[sp17C]->unk14, 12, 6, 6); + } + } + } + if(lbl_1_bss_48[(sp14C8[temp_r29].unk0 == 5) ? 0 : 1].unk0 < 3) { + lbl_1_bss_48[(sp14C8[temp_r29].unk0 == 5) ? 0 : 1].unk4[lbl_1_bss_48[(sp14C8[temp_r29].unk0 == 5) ? 0 : 1].unk0] = 0.45*(((temp_f31-5.0)-0.5)/5.5); + lbl_1_bss_48[(sp14C8[temp_r29].unk0 == 5) ? 0 : 1].unk0++; + } + if(sp1B4 == 0 && sp184 > 0 && lbl_1_bss_18 == -1) { + s32 sp178 = 0; + s32 sp174 = fn_1_4C0(&sp14C8[temp_r29].unk2, sp14C8[temp_r29].unk4); + Vec sp214 = { 0, 0, 50 }; + s32 temp_r17; + for(temp_r17=0; temp_r17<4; temp_r17++) { + sp178 += ((1 << temp_r17) != 0) & sp14C8[temp_r29].unk2; + } + sp178--; + sp214.x = (100.0f*temp_f31)-500.0; + sp214.y = 100+((100*temp_f30)-500); + sp214.x += sp178*12; + sp214.y -= sp178*30; + for(temp_r17=3; temp_r17>=0; temp_r17--) { + if((1 << temp_r17) & sp14C8[temp_r29].unk2) { + Vec sp208; + lbl_1_bss_2684[lbl_1_bss_2680].unkC = 1; + lbl_1_bss_2684[lbl_1_bss_2680].unk8 = sp184; + lbl_1_bss_2684[lbl_1_bss_2680].unk10 = 1< 3) ? 3 : sp174; + if(lbl_1_bss_48[sp174+3].unk0 < 3) { + lbl_1_bss_48[sp174+3].unk4[lbl_1_bss_48[sp174+3].unk0] = 0.45*(((temp_f31-5.0)-0.5)/5.5); + lbl_1_bss_48[sp174+3].unk0++; + } + } + spA28[sp188] = &sp14C8[temp_r29]; + sp230[sp188] = temp_r22; + sp6F8[sp188] = temp_f31; + sp3C8[sp188] = temp_f30; + sp188++; + } + } + for(temp_r29=0; temp_r29 0 && lbl_1_bss_18 == -1) { + s32 sp16C; + s32 sp168 = 0; + s32 sp164 = fn_1_4C0(&spA28[temp_r29]->unk2, spA28[temp_r29]->unk4); + Vec sp1FC = { 0, 0, 50 }; + for(sp16C=0; sp16C<4; sp16C++) { + sp168 += ((1 << sp16C) != 0) & spA28[temp_r29]->unk2; + } + sp168--; + sp1FC.x = (100.0f*sp6F8[temp_r29])-500.0; + sp1FC.y = 100+((100*sp3C8[temp_r29])-500); + sp1FC.x += sp168*12; + sp1FC.y -= sp168*30; + for(sp16C=3; sp16C>=0; sp16C--) { + if((1 << sp16C) & spA28[temp_r29]->unk2) { + Vec sp1F0; + lbl_1_bss_2684[lbl_1_bss_2680].unkC = 1; + lbl_1_bss_2684[lbl_1_bss_2680].unk8 = sp170; + lbl_1_bss_2684[lbl_1_bss_2680].unk10 = 1< 3) ? 3 : sp164; + if(lbl_1_bss_48[sp164+3].unk0 < 3) { + lbl_1_bss_48[sp164+3].unk4[lbl_1_bss_48[sp164+3].unk0] = 0.45*(((sp6F8[temp_r29]-5.0)-0.5)/5.5); + lbl_1_bss_48[sp164+3].unk0++; + } + } + } + sp1B4--; + } + } + +} +#undef CHECK_2E48 + +void fn_1_8AC8(StructBss2A6C *arg0, StructSp14C8 *arg1) +{ + StructBss2A6C *temp_r31 = arg0; + if(!arg0) { + return; + } + if(arg0->unk0 == 0) { + return; + } + while(temp_r31->unk48) { + if(!temp_r31->unk48->unk0 || (temp_r31->unk48->unk1 & 0x1) == 0 || temp_r31->unk48->unk1C.y != temp_r31->unk1C.y+1.0f) { + break; + } + temp_r31 = temp_r31->unk48; + temp_r31->unk8[0] = arg1->unk4[0]+((arg1->unk2 & 0x1) ? 1 : 0); + temp_r31->unk8[1] = arg1->unk4[1]+((arg1->unk2 & 0x2) ? 1 : 0); + temp_r31->unk8[2] = arg1->unk4[2]+((arg1->unk2 & 0x4) ? 1 : 0); + temp_r31->unk8[3] = arg1->unk4[3]+((arg1->unk2 & 0x8) ? 1 : 0); + temp_r31->unk3 = arg1->unk2; + + } +} + +//decomp.me link is https://decomp.me/scratch/PbkiW +void fn_1_8C10(omObjData *object) +{ + s32 temp_r31; + s32 temp_r30; + + Work19C8 *sp88[4]; + lbl_1_bss_4++; + { + s32 temp_r23; + for(temp_r23=0; temp_r23<4; temp_r23++) { + fn_1_19C8(lbl_1_bss_34[temp_r23]); + fn_1_52A4(temp_r23); + } + } + + fn_1_52A4(4); + for(temp_r31=0; temp_r31<4; temp_r31++) { + sp88[temp_r31] = lbl_1_bss_34[temp_r31]->data; + } + if(lbl_1_bss_18 == -1) { + if(sp88[0]->unk24 >= 100 || sp88[1]->unk24 >= 100 || sp88[2]->unk24 >= 100 || sp88[3]->unk24 >= 100) { + s32 sp78[4] = { 0, 1, 2, 3 }; + for(temp_r31=0; temp_r31<4; temp_r31++) { + s32 temp_r22 = rand8()%4; + if(sp88[temp_r22]->unk24 >= 100) { + lbl_1_bss_18 = temp_r22; + for(temp_r30=0; temp_r30<4; temp_r30++) { + if(temp_r30 != temp_r22) { + if(sp88[temp_r30]->unk24 >= 100) { + sp88[temp_r30]->unk24 = sp88[temp_r30]->unk28; + } + } + } + } else { + for(temp_r30=temp_r22; temp_r30<3-temp_r31; temp_r30++) { + sp78[temp_r30] = sp78[temp_r30+1]; + } + } + } + } + } + temp_r31 = (sp88[0]->unk79 != 0)+(sp88[1]->unk79 != 0)+(sp88[2]->unk79 != 0)+(sp88[3]->unk79 != 0); + if(lbl_1_bss_18 == -1 && temp_r31 == 3) { + for(temp_r30=0; temp_r30<4; temp_r30++) { + if(!sp88[temp_r30]->unk78) { + lbl_1_bss_18 = temp_r30; + } + } + } + if(lbl_1_bss_18 == -1 && temp_r31 == 4) { + lbl_1_bss_18 = 4; + } + if(lbl_1_bss_18 != -1) { + for(temp_r31=0; temp_r31<4; temp_r31++) { + if(sp88[temp_r31]->unk48[0]) { + sp88[temp_r31]->unk48[0]->unk1 &= ~0x2; + } + if(sp88[temp_r31]->unk48[1]) { + sp88[temp_r31]->unk48[1]->unk1 &= ~0x2; + } + sp88[temp_r31]->unk48[0] = NULL; + sp88[temp_r31]->unk48[1] = NULL; + } + } + for(temp_r31=0; temp_r31<4; temp_r31++) { + sp88[temp_r31]->unk44 = (sp88[temp_r31]->unk40 == sp88[temp_r31]->unk24) ? sp88[temp_r31]->unk44+1 : 0; + sp88[temp_r31]->unk40 += (sp88[temp_r31]->unk40 < sp88[temp_r31]->unk24) ? 0.375 : 0; + sp88[temp_r31]->unk40 = (sp88[temp_r31]->unk40 > sp88[temp_r31]->unk24) ? (float)sp88[temp_r31]->unk24 : sp88[temp_r31]->unk40; + for(temp_r30=0; temp_r30<3; temp_r30++) { + float temp_f28 = sp88[temp_r31]->unk40; + float sp4C = (s32)(temp_f28/100.0f)%10; + float temp_f22 = (s32)(temp_f28/10.0f)%10; + float temp_f24 = ((s32)temp_f28)%10; + float temp_f23 = temp_f28-(s32)temp_f28; + float temp_f25 = (temp_r30 == 0) ? ((sp88[temp_r31]->unk24/100)%10) : ((temp_r30 == 1) ? ((sp88[temp_r31]->unk24/10)%10) : sp88[temp_r31]->unk24%10); + s32 sp98[5] = { 0, 15, -9, 3, 0 }; + switch(temp_r30) { + case 0: + temp_f25 = sp4C+(temp_f23*((9.0f == temp_f24 && 9.0f == temp_f22) ? 1.0 : 0.0)); + break; + + case 1: + temp_f25 = temp_f22+(temp_f23*((9.0f == temp_f24) ? 1.0 : 0.0)); + break; + + case 2: + temp_f25 = temp_f24+temp_f23; + break; + } + Hu3DModelRotSet(lbl_1_bss_34[temp_r31]->model[temp_r30+1], 36.0f*temp_f25, 0, 0); + } + } + { + s32 spAC[8][3] = { + 255,64,64, + 32,192,255, + 255,128,255, + 32,208,32, + 224,32,224, + 230,128,32, + 255,240,32, + 160,160,160 + }; + s32 temp_r29 = lbl_1_bss_2680; + s32 temp_r28 = 0; + Work19C8 *sp68[4]; + for(temp_r28=0; temp_r28<4; temp_r28++) { + sp68[temp_r28] = lbl_1_bss_34[temp_r28]->data; + } + do { + temp_r29--; + temp_r29 = (temp_r29 < 0) ? temp_r29+50 : temp_r29; + if(lbl_1_bss_2684[temp_r29].unkC == 0 || (lbl_1_bss_2684[temp_r29].unk10 & 0xF) == 0) { + HuSprAttrSet(lbl_1_bss_14, temp_r28, HUSPR_ATTR_DISPOFF); + } else { + s32 temp_r26 = 0; + u32 temp_r19; + s32 temp_r18; + + s32 temp_r24; + + s32 sp58[4]; + temp_r18 = ((lbl_1_bss_2684[temp_r29].unk8 >= 10) ? 2 : 1)+1; + if(lbl_1_bss_2684[temp_r29].unk10 & 0x1) { + sp58[temp_r26] = 0; + temp_r26++; + } + if(lbl_1_bss_2684[temp_r29].unk10 & 0x2) { + sp58[temp_r26] = 1; + temp_r26++; + } + if(lbl_1_bss_2684[temp_r29].unk10 & 0x4) { + sp58[temp_r26] = 2; + temp_r26++; + } + if(lbl_1_bss_2684[temp_r29].unk10 & 0x8) { + sp58[temp_r26] = 3; + temp_r26++; + } + temp_r19 = sp68[sp58[lbl_1_bss_4%temp_r26]]->unk18; + for(temp_r24=0; temp_r24 0; + if(lbl_1_bss_2684[temp_r29].unkC >= 40) { + lbl_1_bss_2684[temp_r29].unkC = 0; + } + + } while(temp_r29 != lbl_1_bss_2680); + for(; temp_r28<150; temp_r28++) { + HuSprAttrSet(lbl_1_bss_14, temp_r28, HUSPR_ATTR_DISPOFF); + } + } + { + s32 temp_r27 = lbl_1_bss_FC; + s32 temp_r25; + s32 temp_r17; + for(temp_r17=0; temp_r17<300; temp_r17++) { + temp_r27 = temp_r27+1; + temp_r27 %= 300; + if(!lbl_1_bss_100[temp_r27].unk0) { + continue; + } + lbl_1_bss_100[temp_r27].unk4.x += lbl_1_bss_100[temp_r27].unk10.x; + lbl_1_bss_100[temp_r27].unk4.y += lbl_1_bss_100[temp_r27].unk10.y; + lbl_1_bss_100[temp_r27].unk4.z += lbl_1_bss_100[temp_r27].unk10.z; + lbl_1_bss_100[temp_r27].unk10.y += -1.5; + if(lbl_1_bss_100[temp_r27].unk4.y < -1000.0f) { + lbl_1_bss_100[temp_r27].unk0 = 0; + } + lbl_1_bss_100[temp_r27].unk1C += 9; + } + for(temp_r25=0; temp_r25<5; temp_r25++) { + if(lbl_1_bss_D4[temp_r25][0] > 0) { + lbl_1_bss_D4[temp_r25][1]++; + if(lbl_1_bss_D4[temp_r25][1] > 30) { + s32 temp_r21; + lbl_1_bss_D4[temp_r25][0] = 0; + lbl_1_bss_D4[temp_r25][1] = 0; + for(temp_r21=0; temp_r21<10; temp_r21++) { + Hu3DModelAttrSet(object->model[(temp_r25*10)+13+temp_r21], 1); + } + } + } + } + if(lbl_1_bss_44->work[0] >= 1002) { + float temp_f27 = 0; + float temp_f26 = 0; + if(lbl_1_bss_B8.unk0 % 2 >= 0) { + lbl_1_bss_B8.unk8 = lbl_1_bss_B8.unkC.y; + lbl_1_bss_B8.unkC.x = lbl_1_bss_B8.unkC.z; + do { + lbl_1_bss_B8.unkC.y = (2.0*(rand8()/255.0))-1.0; + lbl_1_bss_B8.unkC.z = (2.0*(rand8()/255.0))-1.0; + lbl_1_bss_B8.unkC.y = 0; + } while(VECMagPoint(lbl_1_bss_B8.unkC.y-lbl_1_bss_B8.unk8, lbl_1_bss_B8.unkC.z-lbl_1_bss_B8.unkC.x, 0) < 0.75); + } + temp_f27 = lbl_1_bss_B8.unk8; + temp_f26 = lbl_1_bss_B8.unkC.x; + temp_f27 *= lbl_1_bss_B8.unk4*2; + temp_f26 *= lbl_1_bss_B8.unk4*2; + lbl_1_bss_B8.unk0 = lbl_1_bss_B8.unk0 == 0; + lbl_1_bss_B8.unk4 = (lbl_1_bss_B8.unk4 > 24) ? 23 : ((lbl_1_bss_B8.unk4-1 > 0) ? lbl_1_bss_B8.unk4-1 : 0); + Hu3DCameraPosSet(1, temp_f27, 37.139069+temp_f26, 2599.7346f, 0, 1, 0, temp_f27, 50.0f+temp_f26, 0); + } + if(lbl_1_bss_18 != -1) { + float temp_f30; + s32 temp_r20; + lbl_1_bss_10++; + temp_f30 = 1.0f-((lbl_1_bss_10 > 180) ? 1.0f : (lbl_1_bss_10/180.0f)); + Hu3DMotionSpeedSet(lbl_1_bss_30->model[0], 0.5*temp_f30); + for(temp_r20=0; temp_r20<4; temp_r20++) { + Hu3DMotionSpeedSet(lbl_1_bss_34[temp_r20]->model[5], 0.5*temp_f30); + } + if(temp_f30 > 0.0f && lbl_1_data_4[0] != -1) { + HuAudFXPitchSet(lbl_1_data_4[0], -8192.0f+(8192.0f*temp_f30)); + HuAudFXPitchSet(lbl_1_data_4[1], -8192.0f+(8192.0f*temp_f30)); + HuAudFXVolSet(lbl_1_data_4[0], 63.0f+(64.0f*temp_f30)); + HuAudFXVolSet(lbl_1_data_4[1], 63.0f+(64.0f*temp_f30)); + } else { + if(lbl_1_data_4[0] != -1) { + HuAudFXStop(lbl_1_data_4[0]); + HuAudFXStop(lbl_1_data_4[1]); + lbl_1_data_4[0] = lbl_1_data_4[1] = -1; + + } + } + } + } +} + +void fn_1_D700(omObjData *object); + +void fn_1_A53C(omObjData *object) +{ + Work19C8 *sp28[4]; + s32 temp_r31; + for(temp_r31=0; temp_r31<4; temp_r31++) { + sp28[temp_r31] = lbl_1_bss_34[temp_r31]->data; + } + for(temp_r31=0; temp_r31<7; temp_r31++) { + s32 sp38[7] = { + 1422, + 1423, + 1424, + 1425, + 1426, + 1427, + 1428 + }; + if(lbl_1_bss_48[temp_r31].unk0 > 3) { + lbl_1_bss_48[temp_r31].unk0 = 3; + } + if(lbl_1_bss_48[temp_r31].unk0 > 0) { + s32 temp_r19 = HuAudFXPlay(sp38[temp_r31]); + HuAudFXPanning(temp_r19, 0.5+((63*lbl_1_bss_48[temp_r31].unk4[lbl_1_bss_48[temp_r31].unk0-1])+64)); + lbl_1_bss_48[temp_r31].unk0--; + } + } + if(omSysExitReq && !WipeStatGet()) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_D700; + + } + switch(object->work[0]) { + case 1000: + if(!WipeStatGet()) { + s32 temp_r29; + s32 temp_r28; + s32 temp_r27; + s32 temp_r26; + lbl_1_bss_2C++; + if(lbl_1_bss_2C == 10.0f) { + lbl_1_bss_2C = 50.0f; + } + temp_r29 = (lbl_1_bss_2C > 180.0f) ? 255.0 : ((lbl_1_bss_2C > 120.0f) ? (255.0*((lbl_1_bss_2C-120.0f)/60.0)) : 0.0); + temp_r29 = (lbl_1_bss_2C >= 235.0f) ? 255 : ((lbl_1_bss_2C >= 205.0f) ? 192 : ((lbl_1_bss_2C >= 190.0f) ? 128 : (((lbl_1_bss_2C >= 160.0f) ? 64 : 0)))); + Hu3DGLightColorSet(lbl_1_bss_1C, temp_r29, temp_r29, temp_r29, 255); + for(temp_r28=0; temp_r28<4; temp_r28++) { + + Hu3DMotionTimeSet(lbl_1_bss_34[temp_r28]->model[0], 60.0+(40.0*(temp_r29/255.0))); + for(temp_r27=0; temp_r27<3; temp_r27++) { + Hu3DMotionTimeSet(lbl_1_bss_34[temp_r28]->model[temp_r27+1], 60.0+(40.0*(temp_r29/255.0))); + } + Hu3DMotionTimeSet(lbl_1_bss_34[temp_r28]->model[4], 60.0+(40.0*(temp_r29/255.0))); + } + Hu3DMotionSpeedSet(lbl_1_bss_30->model[0], 0.5*((lbl_1_bss_2C < 100.0f) ? 0.0 : ((lbl_1_bss_2C < 320.0f) ? ((lbl_1_bss_2C-100)/220.0) : 1.0))); + for(temp_r26=0; temp_r26<4; temp_r26++) { + Hu3DMotionSpeedSet(lbl_1_bss_34[temp_r26]->model[5], 0.5*((lbl_1_bss_2C < 100.0f) ? 0.0 : ((lbl_1_bss_2C < 280.0f) ? ((lbl_1_bss_2C-100)/180.0) : 1.0))); + } + if(100.0f == lbl_1_bss_2C) { + Hu3DMotionSpeedSet(lbl_1_bss_30->model[1], 1.0f); + omVibrate(sp28[0]->unk14, 12, 4, 2); + omVibrate(sp28[1]->unk14, 12, 4, 2); + omVibrate(sp28[2]->unk14, 12, 4, 2); + omVibrate(sp28[3]->unk14, 12, 4, 2); + HuAudFXPlay(1431); + } + if(145.0f == lbl_1_bss_2C) { + lbl_1_data_4[0] = HuAudFXPlay(1429); + } + if(160.0f == lbl_1_bss_2C) { + lbl_1_data_4[1] = HuAudFXPlay(1430); + } + if(350.0f < lbl_1_bss_2C) { + object->work[0]++; + lbl_1_bss_2C = 0; + } + } + break; + + case 1001: + lbl_1_bss_2C++; + if(5.0f == lbl_1_bss_2C && lbl_1_bss_20 < 0) { + lbl_1_bss_20 = MGSeqStartCreate(); + } + if(lbl_1_bss_2C >= 5.0f && lbl_1_data_0 == -1 && (MGSeqStatGet(lbl_1_bss_20) & 0x10)) { + lbl_1_data_0 = HuAudSeqPlay(71); + } + if(lbl_1_bss_2C >= 5.0f && !MGSeqStatGet(lbl_1_bss_20) && lbl_1_bss_20 >= 0) { + object->work[0]++; + lbl_1_bss_20 = -1; + lbl_1_bss_2C = 0; + } else { + float temp_f26 = (lbl_1_bss_2C > 60.0f) ? 1.0 : ((lbl_1_bss_2C > 0.0f) ? (lbl_1_bss_2C/60.0) : 0.0); + float temp_f27 = 1.0f-temp_f26; + float temp_f31 = 830.0f*temp_f27; + float temp_f30 = (-1792.0f*temp_f27)+(50.0f*temp_f26); + float temp_f29 = (2854.0f*temp_f27)+(3500.0f*temp_f26); + float temp_f25 = ((2578.212*temp_f27)+(2600.0*temp_f26))/VECMagPoint(temp_f31, temp_f30, temp_f29); + temp_f31 *= temp_f25; + temp_f30 *= temp_f25; + temp_f29 *= temp_f25; + Hu3DCameraPosSet(1, temp_f31, temp_f30, temp_f29, -0.05f*temp_f27, 1, 0, 0, 50*temp_f26, 0); + (void)temp_f27; + + } + break; + + case 1002: + if(lbl_1_bss_18 != -1) { + object->work[0] = 1003; + lbl_1_bss_2C = 0; + } + break; + + case 1003: + if(lbl_1_bss_20 < 0 && lbl_1_bss_2C == 0.0f) { + lbl_1_bss_20 = MGSeqFinishCreate(); + for(temp_r31=0; temp_r31<4; temp_r31++) { + Work19C8 *temp_r25= lbl_1_bss_34[temp_r31]->data; + HuSprAttrSet(temp_r25->unkA4, 0, HUSPR_ATTR_DISPOFF); + } + if(lbl_1_data_0 != -1) { + HuAudSeqFadeOut(lbl_1_data_0, 100); + } + } else if(!MGSeqStatGet(lbl_1_bss_20)) { + lbl_1_bss_2C++; + if(lbl_1_bss_2C >= 30.0f){ + object->work[0]++; + lbl_1_bss_2C = 0; + if(lbl_1_bss_18 != 4){ + lbl_1_bss_20 = MGSeqWinCreate(sp28[lbl_1_bss_18]->unk18, -1, -1, -1); + GWPlayerCoinWinSet(sp28[lbl_1_bss_18]->unk14, 10); + HuAudSStreamPlay(1); + } else if(lbl_1_bss_18 == 4) { + lbl_1_bss_20 = MGSeqDrawCreate(); + HuAudSStreamPlay(4); + } + for(temp_r31=0; temp_r31<4; temp_r31++) { + Hu3DModelRotSet(lbl_1_bss_34[temp_r31]->model[4], 0, (lbl_1_bss_18 == temp_r31) ? 90 : -90, 0); + } + } + } + break; + + case 1004: + lbl_1_bss_2C++; + if(210.0f < lbl_1_bss_2C) { + lbl_1_bss_20 = -1; + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_D700; + } + break; + + default: + OSReport("*** main mode error(%d)!!\n", object->work[0]); + + break; + } +} + +void fn_1_B6C4(ModelData *arg0, Mtx arg1) +{ + GXLoadPosMtxImm(arg1, GX_PNMTX0); + GXSetNumTevStages(1); + GXSetNumTexGens(0); + GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE); + GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetNumChans(1); + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, 0, GX_DF_CLAMP, GX_AF_NONE); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); + GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + { + s8 sp60[9] = { -1, 0, 1, 2, 3, 4, -1, -1, -1 }; + char *sp6C[6] = { + "m413_11-m413_11", + "m413_12-m413_12", + "m413_13-m413_13", + "m413_14-m413_14", + "g005m3A-bomhei_A", + "g005m3B-bomhei_B" + }; + s8 sp28[6] = { 3, 4, 5, 6, 11, 12 }; + char *sp50[4] = { + "m413_11b-m413_11b", + "m413_12b-m143_12b", + "m413_13b-m413_13b", + "twest-m413_14b" + }; + s8 sp24[4] = { 7, 8, 9, 10 }; + s32 temp_r27; + Mtx spB4; + Mtx sp84; + for(temp_r27=0; temp_r27<12; temp_r27++) { + StructBss2A6C *temp_r31; + for(temp_r31 = lbl_1_bss_7884[temp_r27]; temp_r31; temp_r31=temp_r31->unk48) { + float temp_f31; + if(temp_r31->unk0) { + s32 temp_r19 = 100; + s32 temp_r18 = 100; + float temp_f30 = temp_r31->unk1C.x; + float temp_f29 = temp_r31->unk1C.y; + float temp_f27 = 0; + if(temp_r31->unk4 && temp_r31->unk5) { + s32 sp40[4] = { 0, 1, 0, -1 }; + s32 sp30[4] = { 1, 0, -1, 0 }; + s32 temp_r24 = (temp_r31->unk4+3)%4; + s32 temp_r26 = ((((temp_r31->unk4+3)%4)+(9+((temp_r31->unk4-1)/4))))%4; + s32 temp_r25 = 0; + float temp_f28 = 1; + temp_f30 -= sp40[temp_r26]; + temp_f29 -= sp30[temp_r26]; + switch((temp_r31->unk4-1)/4) { + case 0: + case 2: + for(temp_r25=temp_r31->unk5-1; temp_r25>0; temp_r25--) { + temp_f28 /= 2.0; + } + temp_f31 = 1.0f-temp_f28; + temp_r26 = (temp_r24+3 == temp_r26) ? (temp_r26-4) : ((temp_r24-3 == temp_r26) ? (temp_r26+4) : temp_r26); + temp_f30 += sind((temp_f28*(temp_r24*90))+(temp_f31*(temp_r26*90))); + temp_f29 += cosd((temp_f28*(temp_r24*90))+(temp_f31*(temp_r26*90))); + break; + + case 1: + for(temp_r25=temp_r31->unk5-1; temp_r25>0; temp_r25--) { + temp_f28 /= 2.0; + } + temp_f31 = (temp_r31->unk5-1)/3.0; + temp_f31 = (temp_f31 < 0.0f) ? 0.0f : ((temp_f31 > 1.0f) ? 1.0f : temp_f31); + temp_f31 = (0.75*((1.0f-temp_f28)))+(0.25*temp_f31); + temp_f28 = 1.0f-temp_f31; + temp_f30 += sp40[temp_r24]*cosd(temp_f31*180.0f); + temp_f29 += sp30[temp_r24]*cosd(temp_f31*180.0f); + temp_f27 += sind(temp_f31*180.0f); + + break; + + default: + break; + } + + } + temp_f30 = (temp_f30*temp_r19)-(temp_r19*6); + temp_f29 = (temp_f29*temp_r18)-(temp_r18*5); + temp_f27 = 100*temp_f27; + if(sp60[temp_r31->unk0] != -1) { + s32 temp_r21 = sp60[temp_r31->unk0]+(temp_r31->unk0 == 5 && ((temp_r31->unk1C.z < 0.0f && (temp_r31->unk1 & 0x1) == 0) || (temp_r31->unk1 & 0x2) != 0)); + MTXTrans(spB4, 50+temp_f30, 50+temp_f29, temp_f27); + MTXConcat(arg1, spB4, spB4); + Hu3DModelObjDraw(lbl_1_bss_30->model[sp28[temp_r21]], sp6C[temp_r21], spB4); + } + } + } + } + for(temp_r27=0; temp_r27<4; temp_r27++) { + s32 temp_r29; + for(temp_r29=0; temp_r29<2; temp_r29++) { + s32 temp_r17 = 25; + s32 sp20 = (temp_r27*300)-450; + s32 sp1C = (505-temp_r17)+(temp_r29*(temp_r17*2)); + Work19C8 *temp_r30 = lbl_1_bss_34[temp_r27]->data; + s32 temp_r23 = temp_r30->unk50[temp_r30->unk60][temp_r29]; + if(temp_r30->unk65[0] == 0 || temp_r30->unk65[0] > 7) { + if(sp60[temp_r23] != -1) { + MTXScale(spB4, 0.5f, 0.5f, 0.5f); + MTXTrans(sp84, sp20, sp1C+((temp_r30->unk65[0]) ? (200.0f*((15-temp_r30->unk65[0])/15.0f)) : 0.0f), 125.0f); + MTXConcat(sp84, spB4, spB4); + MTXConcat(arg1, spB4, spB4); + Hu3DModelObjDraw(lbl_1_bss_30->model[sp28[sp60[temp_r23]]], sp6C[sp60[temp_r23]], spB4); + } + } + if(temp_r30->unk65[0] != 0 && temp_r30->unk65[0] < (15-(temp_r29*4)) && sp60[temp_r30->unk63[temp_r29]] != -1) { + MTXScale(spB4, 0.5f, 0.5f, 0.5f); + MTXTrans(sp84, sp20, sp1C, 125.0-(0.25*(40.0f*(temp_r30->unk65[0]/15.0f)))); + MTXConcat(sp84, spB4, spB4); + MTXConcat(arg1, spB4, spB4); + Hu3DModelObjDraw(lbl_1_bss_30->model[sp28[sp60[temp_r30->unk63[temp_r29]]]], sp6C[sp60[temp_r30->unk63[temp_r29]]], spB4); + } + } + } + { + s32 temp_r28 = lbl_1_bss_FC; + s32 temp_r20; + for(temp_r20=0; temp_r20<300; temp_r20++) { + temp_r28++; + temp_r28 %= 300; + if(lbl_1_bss_100[temp_r28].unk0) { + MTXScale(spB4, 0.4f, 0.4f, 0.4f); + MTXRotDeg(sp84, 'x', 360.0*(lbl_1_bss_100[temp_r28].unk1C/255.0)); + MTXConcat(sp84, spB4, spB4); + MTXRotDeg(sp84, 'z', 360.0*(lbl_1_bss_100[temp_r28].unk1D/255.0)); + MTXConcat(sp84, spB4, spB4); + MTXTrans(sp84, lbl_1_bss_100[temp_r28].unk4.x, lbl_1_bss_100[temp_r28].unk4.y , lbl_1_bss_100[temp_r28].unk4.z); + MTXConcat(sp84, spB4, spB4); + MTXConcat(arg1, spB4, spB4); + Hu3DModelObjDraw(lbl_1_bss_30->model[sp24[sp60[lbl_1_bss_100[temp_r28].unk0]]], sp50[sp60[lbl_1_bss_100[temp_r28].unk0]], spB4); + } + } + } + } +} + +void fn_1_C6E0(omObjData *object) +{ + s32 temp_r30; + memset(lbl_1_bss_2A6C, 0, sizeof(lbl_1_bss_2A6C)); + memset(lbl_1_bss_7884, 0, sizeof(lbl_1_bss_7884)); + memset(lbl_1_bss_2684, 0, sizeof(lbl_1_bss_2684)); + lbl_1_bss_2680 = 0; + memset(lbl_1_bss_100, 0, sizeof(lbl_1_bss_100)); + lbl_1_bss_FC = 0; + memset(lbl_1_bss_D4, 0, sizeof(lbl_1_bss_D4)); + lbl_1_bss_D0 = 0; + memset(lbl_1_bss_B8, 0, sizeof(lbl_1_bss_B8)); + object->model[0] = Hu3DModelCreateFile(0x2C0000); + omSetTra(object, 0, 0, 0); + Hu3DMotionSpeedSet(object->model[0], 0); + object->model[1] = Hu3DModelCreateFile(0x2C0001); + Hu3DMotionSpeedSet(object->model[1], 0); + Hu3DModelPosSet(object->model[1], 0, 0, 0); + Hu3DModelAttrSet(object->model[0], 0x40000001); + object->model[2] = Hu3DHookFuncCreate(fn_1_B6C4); + Hu3DModelLayerSet(object->model[2], 1); + for(temp_r30=0; temp_r30<4; temp_r30++) { + object->model[temp_r30+3] = Hu3DModelCreateFile(0x2C0003+temp_r30); + Hu3DModelAttrSet(object->model[temp_r30+3], 1); + object->model[temp_r30+7] = Hu3DModelCreateFile(0x2C0007+temp_r30); + Hu3DModelAttrSet(object->model[temp_r30+7], 1); + } + for(temp_r30=0; temp_r30<2; temp_r30++) { + s32 temp_r28; + if(temp_r30 == 0) { + temp_r28 = 0x2C000B; + } else { + temp_r28 = 0x2C000C; + } + object->model[temp_r30+11] = Hu3DModelCreateFile(temp_r28); + Hu3DModelAttrSet(object->model[temp_r30+11], 1); + } + for(temp_r30=0; temp_r30<5; temp_r30++) { + s32 temp_r29; + object->model[(temp_r30*10)+13] = Hu3DModelCreateFile(0x2C001E); + for(temp_r29=0; temp_r29<10; temp_r29++) { + if(temp_r29 != 0) { + object->model[(13+(temp_r30*10)+temp_r29)] = Hu3DModelLink(object->model[(temp_r30*10)+13]); + } + Hu3DModelAttrSet(object->model[(13+(temp_r30*10)+temp_r29)], 1); + Hu3DModelLayerSet(object->model[(13+(temp_r30*10)+temp_r29)], 2); + } + } + { + void *temp_r27 = HuDataSelHeapReadNum(0x2C001F, MEMORY_DEFAULT_NUM, HEAP_DATA); + AnimData *temp_r26 = HuSprAnimRead(temp_r27); + lbl_1_bss_14 = HuSprGrpCreate(150); + for(temp_r30=0; temp_r30<150; temp_r30++) { + s16 temp_r25 = HuSprCreate(temp_r26, 0, 0); + HuSprGrpMemberSet(lbl_1_bss_14, temp_r30, temp_r25); + HuSprAttrSet(lbl_1_bss_14, temp_r30, HUSPR_ATTR_DISPOFF); + HuSprColorSet(lbl_1_bss_14, temp_r30, 255, 255, 255); + HuSprTPLvlSet(lbl_1_bss_14, temp_r30, 1.0f); + HuSprPriSet(lbl_1_bss_14, temp_r30, 256+temp_r30); + + } + } + object->func = fn_1_8C10; +} + + +void fn_1_CBB4(omObjData *object) +{ + s32 sp8[4] = { 0, 1, 2, 3 }; + s32 temp_r27 = 0; + Work19C8 *temp_r31 = object->data; + s32 temp_r29; + s32 temp_r28; + memset(temp_r31, 0, sizeof(Work19C8)); + if(object->work[0] == 0) { + lbl_1_data_C[0] = lbl_1_data_C[1] = lbl_1_data_C[2] = lbl_1_data_C[3] = -1; + for(temp_r29=0; temp_r29<4; temp_r29++) { + s32 temp_r26; + repeat_iter: + temp_r26 = rand8()%4; + if(lbl_1_data_C[temp_r26] != -1) { + goto repeat_iter; + } + lbl_1_data_C[temp_r26] = temp_r29; + } + } + for(temp_r29=0; temp_r29<4; temp_r29++) { + for(temp_r28=0; temp_r28<4; temp_r28++) { + if(temp_r29 == lbl_1_data_C[temp_r28]) { + sp8[temp_r27] = temp_r28; + temp_r27++; + } + } + } + temp_r31->unk0 = temp_r31->unk4 = temp_r31->unk8 = temp_r31->unkC = 0; + temp_r31->unk10 = object->work[0]; + temp_r31->unk14 = sp8[temp_r31->unk10]; + if(temp_r31->unk14 == 4) { + OSReport("m413:wrong player group\n"); + temp_r31->unk14 = temp_r31->unk10; + } + temp_r31->unk18 = GWPlayerCfg[temp_r31->unk14].character; + temp_r31->unk1C = (GWPlayerCfg[temp_r31->unk14].iscom) ? -1 : GWPlayerCfg[temp_r31->unk14].pad_idx; + temp_r31->unk20 = (temp_r31->unk1C != -1) ? 0 : GWPlayerCfg[temp_r31->unk14].diff; + temp_r31->unk2C = -1; + temp_r31->unk24 = 0; + temp_r31->unk28 = temp_r31->unk24; + temp_r31->unk40 = temp_r31->unk24; + temp_r31->unk44 = 100; + temp_r31->unk72 = 2; + temp_r31->unk74 = 0; + fn_1_EC0(temp_r31); + temp_r31->unk60 = 0; + temp_r31->unk68 = ((rand8()%4)*7)+3; + temp_r31->unk6C = temp_r31->unk68; + temp_r31->unk71 = 20; + temp_r31->unk70 = 0; + temp_r31->unk98 = 0; + temp_r31->unk9C = 0; + object->model[0] = Hu3DModelCreateFile(0x2C0002); + Hu3DModelLayerSet(object->model[0], 1); + object->model[1] = Hu3DModelLink(object->model[0]); + object->model[2] = Hu3DModelLink(object->model[0]); + object->model[3] = Hu3DModelLink(object->model[0]); + Hu3DModelPosSet(object->model[1], (temp_r31->unk10*300)-525, -602, 40); + Hu3DModelPosSet(object->model[2], (temp_r31->unk10*300)-450, -602, 40); + Hu3DModelPosSet(object->model[3], (temp_r31->unk10*300)-375, -602, 40); + Hu3DMotionTimeSet(object->model[1], 60.0f); + Hu3DMotionTimeSet(object->model[2], 60.0f); + Hu3DMotionTimeSet(object->model[3], 60.0f); + Hu3DMotionSpeedSet(object->model[1], 0.0f); + Hu3DMotionSpeedSet(object->model[2], 0.0f); + Hu3DMotionSpeedSet(object->model[3], 0.0f); + Hu3DModelAttrSet(object->model[0], 1); + Hu3DMotionTimeSet(object->model[0], 60.0f); + Hu3DMotionSpeedSet(object->model[0], 0.0f); + object->model[4] = Hu3DModelCreateFile(0x2C000D+temp_r31->unk18); + Hu3DModelPosSet(object->model[4], (temp_r31->unk10*300)-450, 670, 60); + Hu3DMotionTimeSet(object->model[4], 60.0f); + Hu3DMotionSpeedSet(object->model[4], 0.0f); + object->model[5] = Hu3DModelCreateFile(0x2C0015+temp_r31->unk18); + Hu3DModelPosSet(object->model[5], (temp_r31->unk10*300)-450, 0, 0); + Hu3DModelAttrSet(object->model[5], 0x40000001); + Hu3DMotionSpeedSet(object->model[5], 0.0f); + { + AnimData *temp_r23 = HuSprAnimReadFile(0x610038+GWPlayerCfg[temp_r31->unk14].character); + s16 temp_r22; + temp_r31->unkA4 = HuSprGrpCreate(1); + temp_r22 = HuSprCreate(temp_r23, 0, 0); + HuSprGrpMemberSet(temp_r31->unkA4, 0, temp_r22); + HuSprAttrSet(temp_r31->unkA4, 0, HUSPR_ATTR_LOOP|HUSPR_ATTR_DISPOFF|HUSPR_ATTR_LINEAR); + HuSprColorSet(temp_r31->unkA4, 0, 255, 255, 255); + HuSprTPLvlSet(temp_r31->unkA4, 0, 1); + HuSprPriSet(temp_r31->unkA4, 0, 512); + HuSprScaleSet(temp_r31->unkA4, 0, 0.875f, 0.875f); + HuSprSpeedSet(temp_r31->unkA4, 0, 1.0f); + } + + object->func = fn_1_19C4; +} + +void fn_1_D340(omObjData *object) +{ + object->work[0] = 1000; + memset(lbl_1_bss_48, 0, sizeof(StructBss48)); + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_A53C; +} + +void ObjectSetup(void) +{ + s32 i; + OSReport("******* M413 ObjectSetup *********\n"); + HuAudSndGrpSet(38); + lbl_1_bss_24 = omInitObjMan(600, 8192); + omGameSysInit(lbl_1_bss_24); + Hu3DCameraViewportSet(1, 0, 0, 640, 480, 0, 1); + Hu3DCameraPerspectiveSet(1, 40, 10, 20000, 1.2f); + { + Vec sp54 = { 616.5714f, -1331.2f, 2120.1142f }; + Vec sp48 = { -0.05f, 1.0f, 0.0f }; + Vec sp3C = { 0, 0, 0 }; + Vec sp30 = { 0, 0, 0 }; + Vec sp24 = { 0, 0, -1 }; + Hu3DCameraPosSetV(1, &sp54, &sp48, &sp3C); + } + { + Vec sp18 = { -822.5f, 6743.0f, 4625.5f }; + Vec spC = { 0.1545085f, -0.788462f, -0.5850064f }; + GXColor sp8 = { 0, 0, 0, 255 }; + lbl_1_bss_1C = Hu3DGLightCreateV(&sp18, &spC, &sp8); + } + Hu3DGLightStaticSet(lbl_1_bss_1C, 1); + Hu3DGLightSpotSet(lbl_1_bss_1C, 20, 2); + lbl_1_bss_20 = -1; + lbl_1_bss_18 = -1; + lbl_1_bss_30 = omAddObjEx(lbl_1_bss_24, 101, 63, 0, 1, fn_1_C6E0); + for(i=0; i<4; i++) { + omObjData *object = lbl_1_bss_34[i] = omAddObjEx(lbl_1_bss_24, 100, 6, 0, 0, fn_1_CBB4); + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work19C8), MEMORY_DEFAULT_NUM); + object->work[0] = i; + } + lbl_1_bss_44 = omAddObjEx(lbl_1_bss_24, 102, 0, 0, -1, fn_1_D340); +} + +void fn_1_D700(omObjData *object) +{ + if(!WipeStatGet()) { + if(lbl_1_bss_20 >= 0) { + MGSeqKill(lbl_1_bss_20); + } + MGSeqKillAll(); + HuAudAllStop(); + omOvlReturnEx(1, 1); + } +} diff --git a/src/REL/m414Dll/main.c b/src/REL/m414Dll/main.c index 75a8cb5e..ff10a801 100644 --- a/src/REL/m414Dll/main.c +++ b/src/REL/m414Dll/main.c @@ -172,7 +172,7 @@ s32 lbl_1_data_C4[][3] = { { 0, 0, 0 }, }; -void ModuleProlog(void) +void ObjectSetup(void) { s32 var_r31; s32 var_r30; diff --git a/src/REL/m416Dll/main.c b/src/REL/m416Dll/main.c index 689f8bf5..71bf5a31 100644 --- a/src/REL/m416Dll/main.c +++ b/src/REL/m416Dll/main.c @@ -68,7 +68,7 @@ void fn_1_4FC(omObjData *object); void fn_1_1260(Process *objman); void fn_1_6E5C(omObjData *object); -void ModuleProlog(void) +void ObjectSetup(void) { Process *objman; Vec pos; @@ -1840,4 +1840,4 @@ void fn_1_72EC(omObjData *object) VECSubtract(&Center, &sp14, &sp8); VECNormalize(&sp8, &sp8); HuAudFXListnerUpdate(&sp14, &sp8); -} \ No newline at end of file +} diff --git a/src/REL/m417Dll/main.c b/src/REL/m417Dll/main.c index 749bc066..25f4024c 100644 --- a/src/REL/m417Dll/main.c +++ b/src/REL/m417Dll/main.c @@ -54,7 +54,7 @@ s16 lbl_1_bss_8[4]; s32 lbl_1_bss_4; s32 lbl_1_bss_0; -void ModuleProlog(void) +void ObjectSetup(void) { Mtx sp38; Vec sp2C = { 0.0f, 0.0f, 0.0f }; diff --git a/src/REL/m426Dll/main.c b/src/REL/m426Dll/main.c index 00926ddf..3b0f0170 100644 --- a/src/REL/m426Dll/main.c +++ b/src/REL/m426Dll/main.c @@ -322,7 +322,7 @@ u8 lbl_1_bss_18[4]; Vec lbl_1_bss_C; Vec lbl_1_bss_0; -void ModuleProlog(void) +void ObjectSetup(void) { Process *var_r31; LightData *var_r30; @@ -2848,7 +2848,7 @@ s16 fn_1_7DC8(s16 arg0) var_r26 = var_r23->unk_120; var_r22 = Hu3DHookFuncCreate(var_r23->hook); var_r27 = &Hu3DData[var_r22]; - var_r31 = HuMemDirectMallocNum(HEAP_DATA, sizeof(UnkModelDataUnk120Struct), var_r27->unk_48); // TODO fix + var_r31 = HuMemDirectMallocNum(HEAP_DATA, sizeof(UnkModelDataUnk120Struct), var_r27->unk_48); var_r27->unk_120 = var_r31; var_r31->unk_38 = var_r26->unk_38; var_r31->unk_24 = var_r26->unk_24; diff --git a/src/REL/m429Dll/main.c b/src/REL/m429Dll/main.c index ae139552..1d05f6c6 100644 --- a/src/REL/m429Dll/main.c +++ b/src/REL/m429Dll/main.c @@ -2760,7 +2760,7 @@ void fn_1_D5E8(omObjData *object) object->func = fn_1_B8E0; } -void ModuleProlog(void) +void ObjectSetup(void) { s32 temp_r31; omObjData *temp_r28; @@ -2885,4 +2885,4 @@ void fn_1_E96C(omObjData *object) CharModelKill(lbl_1_data_0[GWPlayerCfg[temp_r31].character]); } omOvlReturnEx(1, 1); -} \ No newline at end of file +} diff --git a/src/REL/m431Dll/main.c b/src/REL/m431Dll/main.c index 3c6959c0..44e0cea4 100644 --- a/src/REL/m431Dll/main.c +++ b/src/REL/m431Dll/main.c @@ -105,7 +105,7 @@ void fn_1_A44(omObjData *object); void fn_1_2110(omObjData *object); -void ModuleProlog(void) +void ObjectSetup(void) { Vec sp2C; Vec sp20; @@ -2210,4 +2210,4 @@ s32 fn_1_7A78(s32 arg0, s16 arg1) sp10.unk00 = 1; sp10.unk04 = arg1; return msmSeSetParam(arg0, &sp10); -} \ No newline at end of file +} diff --git a/src/REL/m434Dll/main.c b/src/REL/m434Dll/main.c index dbffb236..70261dd1 100644 --- a/src/REL/m434Dll/main.c +++ b/src/REL/m434Dll/main.c @@ -59,7 +59,7 @@ void fn_1_1104(Process *objman); void fn_1_1684(void); void fn_1_16B4(void); -void ModuleProlog(void) +void ObjectSetup(void) { s32 i; Process *objman; @@ -618,4 +618,4 @@ s32 fn_1_1D8C(void) void fn_1_1D9C(void) { lbl_1_bss_3A8 = 1; -} \ No newline at end of file +} diff --git a/src/REL/m440Dll/main.c b/src/REL/m440Dll/main.c index d7a2207e..720df69a 100644 --- a/src/REL/m440Dll/main.c +++ b/src/REL/m440Dll/main.c @@ -55,7 +55,7 @@ unkStruct lbl_1_data_78[3] = { { 1040.0f, { 200.0f, 21.0f, 0.0f }, { -6.0f, 0.0f, 0.0f } }, }; -void ModuleProlog(void) { +void ObjectSetup(void) { Vec sp8; LightData* var_r30; Process* var_r31; @@ -2541,4 +2541,4 @@ void fn_1_AA94(void) { OSReport("CRot x = %.2f: y = %.2f: z = %.2f \n", CRot.x, CRot.y, CRot.z); } } -} \ No newline at end of file +} diff --git a/src/REL/m444dll/main.c b/src/REL/m444dll/main.c index 7e9eda5a..60a338ec 100644 --- a/src/REL/m444dll/main.c +++ b/src/REL/m444dll/main.c @@ -100,7 +100,7 @@ void fn_1_6E3C(void); void fn_1_6EDC(omObjData *object); void fn_1_7290(omObjData *object); -void ModuleProlog(void) +void ObjectSetup(void) { s32 light; OSReport("******* M444 ObjectSetup *********\n"); @@ -1495,4 +1495,4 @@ float fn_1_82FC(void) { float zoom = lbl_1_bss_2E0-lbl_1_bss_288[0]; return sqrtf(zoom*zoom); -} \ No newline at end of file +} diff --git a/src/REL/m446Dll/main.c b/src/REL/m446Dll/main.c index bbc5f6f2..c81335ae 100644 --- a/src/REL/m446Dll/main.c +++ b/src/REL/m446Dll/main.c @@ -36,7 +36,7 @@ Vec lbl_1_data_50[2] = { f32 lbl_1_data_68[2] = { 600.0f, 600.0f }; s32 lbl_1_data_70[2][2] = { { 0x46, 0x1A4 }, { 0x1F4, 0x3C } }; -void ModuleProlog(void) { +void ObjectSetup(void) { lbl_1_bss_C = omInitObjMan(5, 0x2000); omGameSysInit(lbl_1_bss_C); lbl_1_bss_8 = omAddObjEx(lbl_1_bss_C, 0x3E8, 0x32U, 0x32U, 0, fn_1_13C); @@ -680,4 +680,4 @@ void fn_1_19D4(void) { while (1) { HuPrcVSleep(); } -} \ No newline at end of file +} diff --git a/src/REL/m451Dll/m451.c b/src/REL/m451Dll/m451.c index ee49c65b..423baf5e 100644 --- a/src/REL/m451Dll/m451.c +++ b/src/REL/m451Dll/m451.c @@ -244,7 +244,7 @@ void fn_1_7BC(void); void fn_1_B2C(void); void fn_1_48C4(void); -void ModuleProlog(void) +void ObjectSetup(void) { Vec pos; Vec up; @@ -1415,4 +1415,4 @@ void fn_1_48C4(void) while(1) { HuPrcVSleep(); } -} \ No newline at end of file +} diff --git a/src/REL/messDll/main.c b/src/REL/messDll/main.c index 8b6fc4f3..fe6119d4 100755 --- a/src/REL/messDll/main.c +++ b/src/REL/messDll/main.c @@ -27,7 +27,7 @@ static u8 lbl_1_bss_4_pad[4]; static s16 lbl_1_bss_2; static s16 lbl_1_bss_0; -void ModuleProlog(void) { +void ObjectSetup(void) { OSReport("******* SAFObjectSetup *********\n"); lbl_1_bss_34 = omInitObjMan(0x32, 0x2000); CRot.x = -20.0f; diff --git a/src/REL/modeltestDll/main.c b/src/REL/modeltestDll/main.c index 8b7de1cb..7921f251 100644 --- a/src/REL/modeltestDll/main.c +++ b/src/REL/modeltestDll/main.c @@ -35,7 +35,7 @@ omObjData * lbl_1_bss_9A0; // -------------------------------------------------------------------------- // -void ModuleProlog(void) +void ObjectSetup(void) { Process * prc; OSReport("******* MODELTESTObjectSetup *********\n"); @@ -826,4 +826,4 @@ void fn_1_2B68(ModelData * mdl, Mtx arg1) GXSetTevDirect(GX_TEVSTAGE1); } -// -------------------------------------------------------------------------- // \ No newline at end of file +// -------------------------------------------------------------------------- // diff --git a/src/REL/modeseldll/main.c b/src/REL/modeseldll/main.c index d464464c..41942a39 100644 --- a/src/REL/modeseldll/main.c +++ b/src/REL/modeseldll/main.c @@ -40,7 +40,7 @@ void fn_1_B8C(omObjData *object); void fn_1_F40(omObjData *object); void fn_1_1B6C(void); -void ModuleProlog(void) +void ObjectSetup(void) { s32 light; OSReport("******* MS ObjectSetup *********\n"); @@ -363,4 +363,4 @@ float fn_1_2368(void) { float delta_zoom = lbl_1_bss_54-lbl_1_bss_4[0]; return sqrtf(delta_zoom*delta_zoom); -} \ No newline at end of file +} diff --git a/src/REL/option/scene.c b/src/REL/option/scene.c index 733c324f..91e400d7 100755 --- a/src/REL/option/scene.c +++ b/src/REL/option/scene.c @@ -30,7 +30,7 @@ Process *optionObjMan; static omObjData *scene; static s32 rumbleF; -void ModuleProlog(void) +void ObjectSetup(void) { optionObjMan = omInitObjMan(0x40, 0x2000); omGameSysInit(optionObjMan); diff --git a/src/REL/present/init.c b/src/REL/present/init.c index 81c7a28d..b006e64d 100644 --- a/src/REL/present/init.c +++ b/src/REL/present/init.c @@ -20,7 +20,7 @@ void fn_1_254(void); void fn_1_45C(void); void fn_1_5EC(omObjData *object); -void ModuleProlog(void) +void ObjectSetup(void) { lbl_1_bss_4 = omInitObjMan(150, 8192); omGameSysInit(lbl_1_bss_4); diff --git a/src/REL/resultDll/main.c b/src/REL/resultDll/main.c index 5eac033d..99bb8979 100644 --- a/src/REL/resultDll/main.c +++ b/src/REL/resultDll/main.c @@ -89,7 +89,7 @@ void fn_1_461C(void); void fn_1_47FC(void); -void ModuleProlog(void) +void ObjectSetup(void) { s32 i; s32 light; @@ -1296,4 +1296,4 @@ void fn_1_5880(omObjData *object) Center.y += 0.05f * (offset.y * stick_pos); Center.z += 0.05f * (offset.z * stick_pos); } -} \ No newline at end of file +} diff --git a/src/REL/selmenuDll/main.c b/src/REL/selmenuDll/main.c index 72d9a8e8..82c481a6 100644 --- a/src/REL/selmenuDll/main.c +++ b/src/REL/selmenuDll/main.c @@ -158,14 +158,14 @@ static u16 keyDStkAllPrev[4] = {}; static void SMInit(omObjData *object); static void SMRand8Tick(omObjData *object); -void ModuleProlog(void) +void ObjectSetup(void) { static char *funcId = "SMOBJECTSETUP\n"; s32 i; Process *objman; Vec pos, dir; - OSReport("ObjectSetup:%08x\n", ModuleProlog); + OSReport("ObjectSetup:%08x\n", ObjectSetup); OSReport("\n\n\n******* SMObjectSetup *********\n"); OSReport(funcId); objman = omInitObjMan(50, 8192); @@ -1074,4 +1074,4 @@ static void SMSound3DDraw(void) print8(140, 208, 2.0f, "Music %s", onOffStr[(musicOffF) ? 1 : 0]); } -#undef DO_HILITE \ No newline at end of file +#undef DO_HILITE diff --git a/src/REL/staffDll/main.c b/src/REL/staffDll/main.c index 13bd4fad..2214364b 100644 --- a/src/REL/staffDll/main.c +++ b/src/REL/staffDll/main.c @@ -9,9 +9,17 @@ #include "game/window.h" #include "game/wipe.h" -#include "REL/staffDll.h" #include "rel_sqrt_consts.h" +typedef struct StaffData { + /* 0x00 */ u32 unk_00; + /* 0x04 */ s32 unk_04; + /* 0x08 */ float unk_08; + /* 0x0C */ u32 unk_0C; + /* 0x10 */ s32 logoGroupIdx; + /* 0x14 */ s32 unk_14; +} StaffData; + static s16 imgGroup[26]; static s16 staffLogoGroup[3]; static s16 thpGroup; @@ -20,7 +28,7 @@ static s32 staffSide; static s32 currImg; static omObjData *multiViewObj; -static UnkStaffDllStruct staffData[] = { +static StaffData staffData[] = { { 0x00340001, 0, 0.0f, 0, 0, 0 }, { 0x00350000, 2, 0.0f, 0, 0, 0 }, { -3, 0, 72.0f, 0, 0, 0 }, @@ -207,25 +215,25 @@ static UnkStaffDllStruct staffData[] = { { -2, 0, 0.0f, 0, 0, 0 }, { -1, 0, 0.0f, 0, 0, 0 }, }; + static float staffLogoPosTbl[] = { 460.0f, 293.0f, 293.0f }; static void MainProc(void); static void CreateStaff(void); static void ShowPicture(void); -void ModuleProlog(void) +void ObjectSetup(void) { - Process *var_r31; - s32 var_lr; + Process *process; - var_r31 = omInitObjMan(0x32, 0x2000); - omGameSysInit(var_r31); + process = omInitObjMan(0x32, 0x2000); + omGameSysInit(process); HuWinInit(1); Hu3DCameraCreate(1); Hu3DCameraPerspectiveSet(1, 20.0f, 20.0f, 10000.0f, 1.2f); Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); Hu3DCameraScissorSet(1, 0, 0, 640, 480); - multiViewObj = omAddObjEx(var_r31, 0x7FDA, 0, 0, -1, omOutViewMulti); + multiViewObj = omAddObjEx(process, 0x7FDA, 0, 0, -1, omOutViewMulti); multiViewObj->work[0] = 1; CRotM[0].x = -35.0f; CRotM[0].y = 0.0f; @@ -282,14 +290,15 @@ static void CreateStaff(void) currImg = 0; for (var_r31 = 0; var_r31 < 26; var_r31++) { - var_r29 = HuDataSelHeapReadNum(var_r31 + 0x730000, MEMORY_DEFAULT_NUM, HEAP_DATA); + var_r29 = HuDataSelHeapReadNum(DATA_MAKE_NUM(DATADIR_STAFF, var_r31), MEMORY_DEFAULT_NUM, HEAP_DATA); var_r28 = HuSprAnimRead(var_r29); var_r30 = HuSprCreate(var_r28, 16386, 0); imgGroup[var_r31] = HuSprGrpCreate(1); HuSprGrpMemberSet(imgGroup[var_r31], 0, var_r30); if (staffSide != 0) { HuSprGrpPosSet(imgGroup[var_r31], 380.0f, 240.0f); - } else { + } + else { HuSprGrpPosSet(imgGroup[var_r31], 200.0f, 240.0f); } HuSprAttrSet(imgGroup[var_r31], 0, HUSPR_ATTR_DISPOFF); @@ -325,66 +334,65 @@ static void CreateStaff(void) static void MoveStaff(void) { float sp8[2]; - Process *temp_ret; float var_f30; float var_f31; s16 var_r30; u32 var_r29; - UnkStaffDllStruct *var_r31; + StaffData *var_r31; var_r31 = HuPrcCurrentGet()->user_data; var_r31->unk_14 = 0; switch (var_r31->unk_00) { - case -2: - HuSprAttrReset(staffLogoGroup[var_r31->unk_10], 0, HUSPR_ATTR_DISPOFF); - var_f31 = staffLogoPosTbl[var_r31->unk_10]; - var_f30 = 576.0f; - break; - default: - HuWinMesMaxSizeGet(1, sp8, var_r31->unk_00); - var_r29 = 0; - switch (var_r31->unk_04) { - case 3: - var_f31 = 320.0f - (0.75f * sp8[0]) / 2; - break; - case 0: - var_f31 = 10.0f; - if (!staffSide) { - var_f31 += 240.0f; - } - break; - case 1: - var_f31 = 30.0f; - if (!staffSide) { - var_f31 += 240.0f; - } - break; - case 2: - var_f31 = 550.0f - (0.75f * sp8[0]); - if (staffSide) { - var_f31 -= 240.0f; - } - var_r29 = 0x1000; - break; - } - var_f30 = 476.0f; - var_r30 = HuWinCreate(var_f31, var_f30, sp8[0], sp8[1], 1); - HuWinAttrSet(var_r30, var_r29); - HuWinPriSet(var_r30, 256); - HuWinBGTPLvlSet(var_r30, 0.0f); - HuWinMesSpeedSet(var_r30, 0); - HuWinMesSet(var_r30, var_r31->unk_00); - HuWinScaleSet(var_r30, 0.75f, 0.75f); - switch (var_r31->unk_04) { - case 0: - case 1: - HuWinMesPalSet(var_r30, 7, 96, 240, 255); - break; - default: - HuWinMesPalSet(var_r30, 7, 255, 255, 255); - break; - } - break; + case -2: + HuSprAttrReset(staffLogoGroup[var_r31->logoGroupIdx], 0, HUSPR_ATTR_DISPOFF); + var_f31 = staffLogoPosTbl[var_r31->logoGroupIdx]; + var_f30 = 576.0f; + break; + default: + HuWinMesMaxSizeGet(1, sp8, var_r31->unk_00); + var_r29 = 0; + switch (var_r31->unk_04) { + case 3: + var_f31 = 320.0f - (0.75f * sp8[0]) / 2; + break; + case 0: + var_f31 = 10.0f; + if (staffSide == 0) { + var_f31 += 240.0f; + } + break; + case 1: + var_f31 = 30.0f; + if (staffSide == 0) { + var_f31 += 240.0f; + } + break; + case 2: + var_f31 = 550.0f - (0.75f * sp8[0]); + if (staffSide != 0) { + var_f31 -= 240.0f; + } + var_r29 = 0x1000; + break; + } + var_f30 = 476.0f; + var_r30 = HuWinCreate(var_f31, var_f30, sp8[0], sp8[1], 1); + HuWinAttrSet(var_r30, var_r29); + HuWinPriSet(var_r30, 256); + HuWinBGTPLvlSet(var_r30, 0.0f); + HuWinMesSpeedSet(var_r30, 0); + HuWinMesSet(var_r30, var_r31->unk_00); + HuWinScaleSet(var_r30, 0.75f, 0.75f); + switch (var_r31->unk_04) { + case 0: + case 1: + HuWinMesPalSet(var_r30, 7, 96, 240, 255); + break; + default: + HuWinMesPalSet(var_r30, 7, 255, 255, 255); + break; + } + break; } while (TRUE) { var_f30 -= 0.4f; @@ -392,20 +400,23 @@ static void MoveStaff(void) if (var_f30 < -114.0f) { break; } - } else if (var_f30 < -24.0f) { + } + else if (var_f30 < -24.0f) { break; } if (var_r31->unk_00 == -2) { - HuSprGrpPosSet(staffLogoGroup[var_r31->unk_10], var_f31, var_f30); - } else { + HuSprGrpPosSet(staffLogoGroup[var_r31->logoGroupIdx], var_f31, var_f30); + } + else { HuWinPosSet(var_r30, var_f31, var_f30); } HuPrcVSleep(); } var_r31->unk_14 = 1; if (var_r31->unk_00 == -2) { - HuSprAttrSet(staffLogoGroup[var_r31->unk_10], 0, HUSPR_ATTR_DISPOFF); - } else { + HuSprAttrSet(staffLogoGroup[var_r31->logoGroupIdx], 0, HUSPR_ATTR_DISPOFF); + } + else { HuWinKill(var_r30); } HuPrcVSleep(); @@ -423,7 +434,8 @@ static void HidePicture(void) currImg++; if (staffSide != 0) { HuSprGrpPosSet(imgGroup[currImg], 380.0f, 240.0f); - } else { + } + else { HuSprGrpPosSet(imgGroup[currImg], 200.0f, 240.0f); } HuSprAttrSet(imgGroup[prevImg], 0, HUSPR_ATTR_DISPOFF); @@ -452,7 +464,8 @@ static void ShowPicture(void) while (TRUE) { if (currImg >= 24) { HuPrcSleep(430); - } else { + } + else { HuPrcSleep(550); } if (currImg >= 25) { @@ -476,7 +489,7 @@ static void ShowPicture(void) static void MainProc(void) { s32 var_r31; - UnkStaffDllStruct *var_r30; + StaffData *var_r30; s32 var_r29; Process *var_r28; s32 var_r27; @@ -494,20 +507,21 @@ static void MainProc(void) } switch (var_r30->unk_00) { - case -3: - HuPrcSleep(var_r30->unk_08 / 0.4f); - break; - default: - var_r28 = HuPrcChildCreate(MoveStaff, 0x1000, 0x2000, 0, HuPrcCurrentGet()); - var_r28->user_data = var_r30; - if (var_r30->unk_0C == 1) { - staffSide++; - staffSide &= 1; - HuPrcChildCreate(HidePicture, 0x1000, 0x2000, 0, HuPrcCurrentGet()); - } else { - HuPrcSleep(60); - } - break; + case -3: + HuPrcSleep(var_r30->unk_08 / 0.4f); + break; + default: + var_r28 = HuPrcChildCreate(MoveStaff, 0x1000, 0x2000, 0, HuPrcCurrentGet()); + var_r28->user_data = var_r30; + if (var_r30->unk_0C == 1) { + staffSide++; + staffSide &= 1; + HuPrcChildCreate(HidePicture, 0x1000, 0x2000, 0, HuPrcCurrentGet()); + } + else { + HuPrcSleep(60); + } + break; } } var_r30 = &staffData[var_r31 - 1]; diff --git a/src/REL/subchrselDll/main.c b/src/REL/subchrselDll/main.c index 78372e04..71911750 100644 --- a/src/REL/subchrselDll/main.c +++ b/src/REL/subchrselDll/main.c @@ -39,7 +39,7 @@ static char *extCharNameTbl[7] = { "MKOOPA" }; -void ModuleProlog(void) +void ObjectSetup(void) { Process *sp8 = omInitObjMan(0x32, 0x2000); Hu3DBGColorSet(0, 0, 0); @@ -164,4 +164,4 @@ static void SubchrMain() } HuPrcVSleep(); } -} \ No newline at end of file +} diff --git a/src/game/hsfdraw.c b/src/game/hsfdraw.c index 36bba085..ab341258 100755 --- a/src/game/hsfdraw.c +++ b/src/game/hsfdraw.c @@ -18,17 +18,17 @@ typedef struct hsf_draw_object { static void objCall(ModelData *arg0, HsfObject *arg1); static void objMesh(ModelData *arg0, HsfObject *arg1); static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1); -static void SetTevStageNoTex(HsfDrawObject *arg0, HsfMaterial *arg1); +static s32 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(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 s32 SetShadowTex(void); 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 s32 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); @@ -410,21 +410,20 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) { GXColor sp2C; void *sp28; Hu3DTexAnimDataStruct *sp24; + s16 var_r31; + HsfMaterial *temp_r30; + ModelData *temp_r29; + HsfObject *temp_r28; + HsfBitmap *temp_r27; HsfAttribute *temp_r26; - HsfBitmap *temp_r27; - s16 var_r22; - s16 var_r18; - s16 var_r21; s16 var_r24; - s16 var_r31; - s16 var_r17; - s16 var_r6; + HsfdrawStruct01 *temp_r23; + s16 var_r22; + s16 var_r21; + HsfConstData *temp_r20; + s16 var_r18; u32 temp_r19; - HsfConstData *temp_r20; - HsfMaterial *temp_r30; - HsfObject *temp_r28; - ModelData *temp_r29; - HsfdrawStruct01 *temp_r23; + s16 var_r17; temp_r28 = arg0->object; temp_r29 = arg0->model; @@ -717,7 +716,7 @@ static void FaceDraw(HsfDrawObject *arg0, HsfFace *arg1) { drawCnt++; } -static void SetTevStageNoTex(HsfDrawObject *arg0, HsfMaterial *arg1) { +static s32 SetTevStageNoTex(HsfDrawObject *arg0, HsfMaterial *arg1) { GXColor sp1C; ModelData *temp_r28; HsfObject *var_r21; @@ -1607,7 +1606,7 @@ static void SetProjection(HsfDrawObject *arg0, s16 arg1, s16 arg2, s16 arg3, GXT GXSetTevAlphaOp(arg1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_FALSE, GX_TEVPREV); } -static void SetShadowTex(void) { +static s32 SetShadowTex(void) { GXTexObj sp8; GXInitTexObj(&sp8, Hu3DShadowData.unk_04, Hu3DShadowData.unk_02, Hu3DShadowData.unk_02, GX_TF_I8, GX_CLAMP, GX_CLAMP, GX_FALSE); @@ -1733,7 +1732,7 @@ static void FaceDrawShadow(HsfDrawObject *arg0, HsfFace *arg1) { drawCnt++; } -static void LoadTexture(ModelData *arg0, HsfBitmap *arg1, HsfAttribute *arg2, s16 arg3) { +static s32 LoadTexture(ModelData *arg0, HsfBitmap *arg1, HsfAttribute *arg2, s16 arg3) { GXTexObj sp1C; GXTlutObj sp10; s16 var_r27; diff --git a/src/game/hsfman.c b/src/game/hsfman.c index 1a30df2c..cc318ea5 100644 --- a/src/game/hsfman.c +++ b/src/game/hsfman.c @@ -1465,13 +1465,13 @@ inline void Hu3DLightSpotSet(LightData *light, u16 arg1, f32 arg8) { light->unk_02 = arg1; } -void Hu3DGLightSpotSet(s16 arg0, u16 arg1, f32 arg8) { +void Hu3DGLightSpotSet(s16 arg0, f32 arg8, u16 arg1) { LightData *light = &Hu3DGlobalLight[arg0]; Hu3DLightSpotSet(light, arg1, arg8); } -void Hu3DLLightSpotSet(s16 arg0, s16 arg1, u16 arg2, f32 arg8) { +void Hu3DLLightSpotSet(s16 arg0, s16 arg1, f32 arg8, u16 arg2) { ModelData* data; LightData* light; @@ -1752,7 +1752,7 @@ s32 Hu3DModelLightInfoSet(s16 arg0, s16 arg1) { Hu3DGLightStaticSet(sp12, arg1); switch (var_r18->light.type) { case 0: - Hu3DGLightSpotSet(sp12, 2, var_r18->light.cutoff); + Hu3DGLightSpotSet(sp12, var_r18->light.cutoff, 2); break; case 1: Hu3DGLightPointSet(sp12, var_r18->data.base.scale.x - var_r18->data.base.rot.z, 1.0f, 2);