From bd5d89e77c6d82076e329ad0165c321fd3546954 Mon Sep 17 00:00:00 2001 From: dbalatoni13 Date: Fri, 14 Mar 2025 21:55:13 +0100 Subject: [PATCH] Some naming progress on m457Dll Changed some names in present and option --- config/GMPE01_00/rels/m457Dll/symbols.txt | 114 +- config/GMPJ01_00/rels/m457Dll/symbols.txt | 114 +- config/GMPP01_00/rels/m457Dll/symbols.txt | 114 +- src/REL/m457Dll/main.c | 1385 +++++++++++---------- src/REL/mgmodedll/tictactoe.c | 14 +- src/REL/option/state.c | 12 +- src/REL/present/camera.c | 8 +- src/REL/present/init.c | 12 +- src/REL/present/main.c | 10 +- src/REL/present/present.c | 14 +- 10 files changed, 917 insertions(+), 880 deletions(-) diff --git a/config/GMPE01_00/rels/m457Dll/symbols.txt b/config/GMPE01_00/rels/m457Dll/symbols.txt index 08eeab17..790cf96b 100644 --- a/config/GMPE01_00/rels/m457Dll/symbols.txt +++ b/config/GMPE01_00/rels/m457Dll/symbols.txt @@ -1,16 +1,16 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -fn_1_A0 = .text:0x000000A0; // type:function size:0x3CC -fn_1_46C = .text:0x0000046C; // type:function size:0x2858 -fn_1_2CC4 = .text:0x00002CC4; // type:function size:0x283C -fn_1_5500 = .text:0x00005500; // type:function size:0x220 -fn_1_5720 = .text:0x00005720; // type:function size:0x29C -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 +CameraPrintDebug = .text:0x000000A0; // type:function size:0x3CC scope:local +M457PlayerExec = .text:0x0000046C; // type:function size:0x2858 scope:local +M457GameExec = .text:0x00002CC4; // type:function size:0x283C scope:local +WrestleMesMain = .text:0x00005500; // type:function size:0x220 scope:local +ShoveMesMain = .text:0x00005720; // type:function size:0x29C scope:local +M457Main = .text:0x000059BC; // type:function size:0xB3C scope:local +M457GameSetup = .text:0x000064F8; // type:function size:0xAB8 scope:local +M457PlayerSetup = .text:0x00006FB0; // type:function size:0x5F4 scope:local +M457Setup = .text:0x000075A4; // type:function size:0xC0 scope:local ObjectSetup = .text:0x00007664; // type:function size:0x480 -fn_1_7AE4 = .text:0x00007AE4; // type:function size:0x9C +M457Exit = .text:0x00007AE4; // type:function size:0x9C scope:local _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 scope:local data:double @@ -121,59 +121,59 @@ lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 scope:local data: lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x4 scope:local data:float lbl_1_rodata_578 = .rodata:0x00000578; // type:object size:0x4 scope:local data:float lbl_1_rodata_57C = .rodata:0x0000057C; // type:object size:0x4 scope:local data:float -lbl_1_data_0 = .data:0x00000000; // type:object size:0x5C -lbl_1_data_5C = .data:0x0000005C; // type:object size:0x5C data:4byte -lbl_1_data_B8 = .data:0x000000B8; // type:object size:0x30 -lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x30 -lbl_1_data_118 = .data:0x00000118; // type:object size:0x30 -lbl_1_data_148 = .data:0x00000148; // type:object size:0xC data:byte -lbl_1_data_154 = .data:0x00000154; // type:object size:0x30 -lbl_1_data_184 = .data:0x00000184; // type:object size:0x30 -lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0x6C data:float -lbl_1_data_220 = .data:0x00000220; // type:object size:0x6C data:float -lbl_1_data_28C = .data:0x0000028C; // type:object size:0x18 data:float -lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0x2 data:2byte -lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x2 data:2byte -lbl_1_data_2A8 = .data:0x000002A8; // type:object size:0x4 data:4byte -lbl_1_data_2AC = .data:0x000002AC; // type:object size:0x4 data:4byte -lbl_1_data_2B0 = .data:0x000002B0; // type:object size:0x2 data:2byte -lbl_1_data_2B4 = .data:0x000002B4; // type:object size:0x4 data:4byte -lbl_1_data_2B8 = .data:0x000002B8; // type:object size:0x4 data:4byte +sprDataNumTbl = .data:0x00000000; // type:object size:0x5C scope:local +sprIdTbl = .data:0x0000005C; // type:object size:0x5C scope:local data:4byte +lbl_1_data_B8 = .data:0x000000B8; // type:object size:0x30 scope:local +lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x30 scope:local +lbl_1_data_118 = .data:0x00000118; // type:object size:0x30 scope:local +lbl_1_data_148 = .data:0x00000148; // type:object size:0xC scope:local data:byte +lbl_1_data_154 = .data:0x00000154; // type:object size:0x30 scope:local +lbl_1_data_184 = .data:0x00000184; // type:object size:0x30 scope:local +lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0x6C scope:local data:float +sparkDataTbl = .data:0x00000220; // type:object size:0x6C scope:local data:float +lbl_1_data_28C = .data:0x0000028C; // type:object size:0x18 scope:local data:float +lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0x2 scope:local data:2byte +lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x2 scope:local data:2byte +backgroundMusNo = .data:0x000002A8; // type:object size:0x4 scope:local data:4byte +windSeNo = .data:0x000002AC; // type:object size:0x4 scope:local data:4byte +lbl_1_data_2B0 = .data:0x000002B0; // type:object size:0x2 scope:local data:2byte +invincibilitySeNo = .data:0x000002B4; // type:object size:0x4 scope:local data:4byte +lbl_1_data_2B8 = .data:0x000002B8; // type:object size:0x4 scope:local data:4byte lbl_1_data_2BC = .data:0x000002BC; // type:object size:0x9 scope:local data:string lbl_1_data_2C5 = .data:0x000002C5; // type:object size:0x3 scope:local data:string jumptable_1_data_2C8 = .data:0x000002C8; // type:object size:0x2C scope:local jumptable_1_data_2F4 = .data:0x000002F4; // type:object size:0x48 scope:local -lbl_1_data_33C = .data:0x0000033C; // type:object size:0x4 data:4byte -lbl_1_data_340 = .data:0x00000340; // type:object size:0x4 data:float -lbl_1_data_344 = .data:0x00000344; // type:object size:0x4 data:float -lbl_1_data_348 = .data:0x00000348; // type:object size:0x4 data:float +lbl_1_data_33C = .data:0x0000033C; // type:object size:0x4 scope:local data:4byte +lbl_1_data_340 = .data:0x00000340; // type:object size:0x4 scope:local data:float +lbl_1_data_344 = .data:0x00000344; // type:object size:0x4 scope:local data:float +lbl_1_data_348 = .data:0x00000348; // type:object size:0x4 scope:local data:float jumptable_1_data_34C = .data:0x0000034C; // type:object size:0x20 scope:local jumptable_1_data_36C = .data:0x0000036C; // type:object size:0x2C scope:local lbl_1_data_398 = .data:0x00000398; // type:object size:0x12 scope:local data:string lbl_1_data_3AA = .data:0x000003AA; // type:object size:0x19 scope:local data:string lbl_1_data_3C3 = .data:0x000003C3; // type:object size:0x24 scope:local data:string -lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte -lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte -lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte -lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte -lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte -lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 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:float -lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:float -lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:float -lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:float -lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte -lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte -lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte -lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte -lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte -lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte -lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte -lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x4 data:4byte -lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 data:4byte -lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x4 data:4byte -lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x8 data:4byte -lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x4 data:4byte -lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x4 data:4byte -lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x50 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 scope:local data:4byte +m457MesEndF = .bss:0x00000010; // type:object size:0x4 scope:local data:4byte +againstBrowserF = .bss:0x00000014; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 scope:local data:float +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 scope:local data:4byte +lightId = .bss:0x00000048; // type:object size:0x4 scope:local data:4byte +objman = .bss:0x0000004C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 scope:local data:4byte +gameState = .bss:0x0000005C; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 scope:local data:4byte +gameObj = .bss:0x00000064; // type:object size:0x4 scope:local data:4byte +playerObj = .bss:0x00000068; // type:object size:0x8 scope:local data:4byte +omViewObj = .bss:0x00000070; // type:object size:0x4 scope:local data:4byte +mainObj = .bss:0x00000074; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x50 scope:local data:4byte diff --git a/config/GMPJ01_00/rels/m457Dll/symbols.txt b/config/GMPJ01_00/rels/m457Dll/symbols.txt index 9cca9232..fd8c1e4e 100644 --- a/config/GMPJ01_00/rels/m457Dll/symbols.txt +++ b/config/GMPJ01_00/rels/m457Dll/symbols.txt @@ -1,16 +1,16 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -fn_1_A0 = .text:0x000000A0; // type:function size:0x3CC -fn_1_46C = .text:0x0000046C; // type:function size:0x2858 -fn_1_2CC4 = .text:0x00002CC4; // type:function size:0x281C -fn_1_5500 = .text:0x000054E0; // type:function size:0x220 -fn_1_5720 = .text:0x00005700; // type:function size:0x29C -fn_1_59BC = .text:0x0000599C; // type:function size:0xB3C -fn_1_64F8 = .text:0x000064D8; // type:function size:0xAB8 -fn_1_6FB0 = .text:0x00006F90; // type:function size:0x5F4 -fn_1_75A4 = .text:0x00007584; // type:function size:0xC0 +CameraPrintDebug = .text:0x000000A0; // type:function size:0x3CC scope:local +M457PlayerExec = .text:0x0000046C; // type:function size:0x2858 scope:local +M457GameExec = .text:0x00002CC4; // type:function size:0x281C scope:local +WrestleMesMain = .text:0x000054E0; // type:function size:0x220 scope:local +ShoveMesMain = .text:0x00005700; // type:function size:0x29C scope:local +M457Main = .text:0x0000599C; // type:function size:0xB3C scope:local +M457GameSetup = .text:0x000064D8; // type:function size:0xAB8 scope:local +M457PlayerSetup = .text:0x00006F90; // type:function size:0x5F4 scope:local +M457Setup = .text:0x00007584; // type:function size:0xC0 scope:local ObjectSetup = .text:0x00007644; // type:function size:0x480 -fn_1_7AE4 = .text:0x00007AC4; // type:function size:0x9C +M457Exit = .text:0x00007AC4; // type:function size:0x9C scope:local _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 scope:local data:double @@ -120,59 +120,59 @@ lbl_1_rodata_568 = .rodata:0x00000568; // type:object size:0x4 scope:local data: lbl_1_rodata_56C = .rodata:0x0000056C; // type:object size:0x4 scope:local data:float lbl_1_rodata_570 = .rodata:0x00000570; // type:object size:0x4 scope:local data:float lbl_1_rodata_574 = .rodata:0x00000574; // type:object size:0x4 scope:local data:float -lbl_1_data_0 = .data:0x00000000; // type:object size:0x5C -lbl_1_data_5C = .data:0x0000005C; // type:object size:0x5C data:4byte -lbl_1_data_B8 = .data:0x000000B8; // type:object size:0x30 -lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x30 -lbl_1_data_118 = .data:0x00000118; // type:object size:0x30 -lbl_1_data_148 = .data:0x00000148; // type:object size:0xC -lbl_1_data_154 = .data:0x00000154; // type:object size:0x30 -lbl_1_data_184 = .data:0x00000184; // type:object size:0x30 -lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0x6C -lbl_1_data_220 = .data:0x00000220; // type:object size:0x6C -lbl_1_data_28C = .data:0x0000028C; // type:object size:0x18 data:float -lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0x2 data:2byte -lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x2 data:2byte -lbl_1_data_2A8 = .data:0x000002A8; // type:object size:0x4 data:4byte -lbl_1_data_2AC = .data:0x000002AC; // type:object size:0x4 data:4byte -lbl_1_data_2B0 = .data:0x000002B0; // type:object size:0x2 data:2byte -lbl_1_data_2B4 = .data:0x000002B4; // type:object size:0x4 data:4byte -lbl_1_data_2B8 = .data:0x000002B8; // type:object size:0x4 data:4byte +sprDataNumTbl = .data:0x00000000; // type:object size:0x5C scope:local +sprIdTbl = .data:0x0000005C; // type:object size:0x5C data:4byte scope:local +lbl_1_data_B8 = .data:0x000000B8; // type:object size:0x30 scope:local +lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x30 scope:local +lbl_1_data_118 = .data:0x00000118; // type:object size:0x30 scope:local +lbl_1_data_148 = .data:0x00000148; // type:object size:0xC scope:local +lbl_1_data_154 = .data:0x00000154; // type:object size:0x30 scope:local +lbl_1_data_184 = .data:0x00000184; // type:object size:0x30 scope:local +lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0x6C scope:local +sparkDataTbl = .data:0x00000220; // type:object size:0x6C scope:local +lbl_1_data_28C = .data:0x0000028C; // type:object size:0x18 data:float scope:local +lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0x2 data:2byte scope:local +lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x2 data:2byte scope:local +backgroundMusNo = .data:0x000002A8; // type:object size:0x4 data:4byte scope:local +windSeNo = .data:0x000002AC; // type:object size:0x4 data:4byte scope:local +lbl_1_data_2B0 = .data:0x000002B0; // type:object size:0x2 data:2byte scope:local +invincibilitySeNo = .data:0x000002B4; // type:object size:0x4 data:4byte scope:local +lbl_1_data_2B8 = .data:0x000002B8; // type:object size:0x4 data:4byte scope:local lbl_1_data_2BC = .data:0x000002BC; // type:object size:0x9 scope:local data:string lbl_1_data_2C5 = .data:0x000002C5; // type:object size:0x3 scope:local data:string jumptable_1_data_2C8 = .data:0x000002C8; // type:object size:0x2C scope:local jumptable_1_data_2F4 = .data:0x000002F4; // type:object size:0x48 scope:local -lbl_1_data_33C = .data:0x0000033C; // type:object size:0x4 data:4byte -lbl_1_data_340 = .data:0x00000340; // type:object size:0x4 data:float -lbl_1_data_344 = .data:0x00000344; // type:object size:0x4 data:float -lbl_1_data_348 = .data:0x00000348; // type:object size:0x4 data:float +lbl_1_data_33C = .data:0x0000033C; // type:object size:0x4 data:4byte scope:local +lbl_1_data_340 = .data:0x00000340; // type:object size:0x4 data:float scope:local +lbl_1_data_344 = .data:0x00000344; // type:object size:0x4 data:float scope:local +lbl_1_data_348 = .data:0x00000348; // type:object size:0x4 data:float scope:local jumptable_1_data_34C = .data:0x0000034C; // type:object size:0x20 scope:local jumptable_1_data_36C = .data:0x0000036C; // type:object size:0x2C scope:local lbl_1_data_398 = .data:0x00000398; // type:object size:0x12 scope:local data:string lbl_1_data_3AA = .data:0x000003AA; // type:object size:0x19 scope:local data:string lbl_1_data_3C3 = .data:0x000003C3; // type:object size:0x24 scope:local data:string -lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte -lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte -lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte -lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte -lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte -lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 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:float -lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:float -lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:float -lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:float -lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte -lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte -lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte -lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte -lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte -lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte -lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte -lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x4 data:4byte -lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 data:4byte -lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x4 data:4byte -lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x8 data:4byte -lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x4 data:4byte -lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x4 data:4byte -lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x50 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte scope:local +m457MesEndF = .bss:0x00000010; // type:object size:0x4 data:4byte scope:local +againstBrowserF = .bss:0x00000014; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:float scope:local +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:float scope:local +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:float scope:local +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:float scope:local +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte scope:local +lightId = .bss:0x00000048; // type:object size:0x4 data:4byte scope:local +objman = .bss:0x0000004C; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte scope:local +gameState = .bss:0x0000005C; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 data:4byte scope:local +gameObj = .bss:0x00000064; // type:object size:0x4 data:4byte scope:local +playerObj = .bss:0x00000068; // type:object size:0x8 data:4byte scope:local +omViewObj = .bss:0x00000070; // type:object size:0x4 data:4byte scope:local +mainObj = .bss:0x00000074; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x50 data:4byte scope:local diff --git a/config/GMPP01_00/rels/m457Dll/symbols.txt b/config/GMPP01_00/rels/m457Dll/symbols.txt index 809b91bc..4e212888 100644 --- a/config/GMPP01_00/rels/m457Dll/symbols.txt +++ b/config/GMPP01_00/rels/m457Dll/symbols.txt @@ -1,16 +1,16 @@ _prolog = .text:0x00000000; // type:function size:0x54 scope:global _epilog = .text:0x00000054; // type:function size:0x4C scope:global -fn_1_A0 = .text:0x000000A0; // type:function size:0x3CC -fn_1_46C = .text:0x0000046C; // type:function size:0x2858 -fn_1_2CC4 = .text:0x00002CC4; // type:function size:0x2654 -fn_1_5500 = .text:0x00005318; // type:function size:0x220 -fn_1_5720 = .text:0x00005538; // type:function size:0x510 -fn_1_59BC = .text:0x00005A48; // type:function size:0xB34 -fn_1_64F8 = .text:0x0000657C; // type:function size:0xAB8 -fn_1_6FB0 = .text:0x00007034; // type:function size:0x5F4 -fn_1_75A4 = .text:0x00007628; // type:function size:0xC0 +CameraPrintDebug = .text:0x000000A0; // type:function size:0x3CC scope:local +M457PlayerExec = .text:0x0000046C; // type:function size:0x2858 scope:local +M457GameExec = .text:0x00002CC4; // type:function size:0x2654 scope:local +WrestleMesMain = .text:0x00005318; // type:function size:0x220 scope:local +ShoveMesMain = .text:0x00005538; // type:function size:0x510 scope:local +M457Main = .text:0x00005A48; // type:function size:0xB34 scope:local +M457GameSetup = .text:0x0000657C; // type:function size:0xAB8 scope:local +M457PlayerSetup = .text:0x00007034; // type:function size:0x5F4 scope:local +M457Setup = .text:0x00007628; // type:function size:0xC0 scope:local ObjectSetup = .text:0x000076E8; // type:function size:0x480 -fn_1_7AE4 = .text:0x00007B68; // type:function size:0x9C +M457Exit = .text:0x00007B68; // type:function size:0x9C scope:local _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x8 scope:local data:double @@ -119,59 +119,59 @@ lbl_1_rodata_558 = .rodata:0x00000558; // type:object size:0x4 scope:local data: lbl_1_rodata_55C = .rodata:0x0000055C; // type:object size:0x4 scope:local data:float lbl_1_rodata_560 = .rodata:0x00000560; // type:object size:0x4 scope:local data:float lbl_1_rodata_564 = .rodata:0x00000564; // type:object size:0x4 scope:local data:float -lbl_1_data_0 = .data:0x00000000; // type:object size:0x5C -lbl_1_data_5C = .data:0x0000005C; // type:object size:0x5C data:4byte -lbl_1_data_B8 = .data:0x000000B8; // type:object size:0x30 -lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x30 -lbl_1_data_118 = .data:0x00000118; // type:object size:0x30 -lbl_1_data_148 = .data:0x00000148; // type:object size:0xC -lbl_1_data_154 = .data:0x00000154; // type:object size:0x30 -lbl_1_data_184 = .data:0x00000184; // type:object size:0x30 -lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0x6C -lbl_1_data_220 = .data:0x00000220; // type:object size:0x6C -lbl_1_data_28C = .data:0x0000028C; // type:object size:0x18 data:float -lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0x2 data:2byte -lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x2 data:2byte -lbl_1_data_2A8 = .data:0x000002A8; // type:object size:0x4 data:4byte -lbl_1_data_2AC = .data:0x000002AC; // type:object size:0x4 data:4byte -lbl_1_data_2B0 = .data:0x000002B0; // type:object size:0x2 data:2byte -lbl_1_data_2B4 = .data:0x000002B4; // type:object size:0x4 data:4byte -lbl_1_data_2B8 = .data:0x000002B8; // type:object size:0x4 data:4byte +sprDataNumTbl = .data:0x00000000; // type:object size:0x5C scope:local +sprIdTbl = .data:0x0000005C; // type:object size:0x5C data:4byte scope:local +lbl_1_data_B8 = .data:0x000000B8; // type:object size:0x30 scope:local +lbl_1_data_E8 = .data:0x000000E8; // type:object size:0x30 scope:local +lbl_1_data_118 = .data:0x00000118; // type:object size:0x30 scope:local +lbl_1_data_148 = .data:0x00000148; // type:object size:0xC scope:local +lbl_1_data_154 = .data:0x00000154; // type:object size:0x30 scope:local +lbl_1_data_184 = .data:0x00000184; // type:object size:0x30 scope:local +lbl_1_data_1B4 = .data:0x000001B4; // type:object size:0x6C scope:local +sparkDataTbl = .data:0x00000220; // type:object size:0x6C scope:local +lbl_1_data_28C = .data:0x0000028C; // type:object size:0x18 data:float scope:local +lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0x2 data:2byte scope:local +lbl_1_data_2A6 = .data:0x000002A6; // type:object size:0x2 data:2byte scope:local +backgroundMusNo = .data:0x000002A8; // type:object size:0x4 data:4byte scope:local +windSeNo = .data:0x000002AC; // type:object size:0x4 data:4byte scope:local +lbl_1_data_2B0 = .data:0x000002B0; // type:object size:0x2 data:2byte scope:local +invincibilitySeNo = .data:0x000002B4; // type:object size:0x4 data:4byte scope:local +lbl_1_data_2B8 = .data:0x000002B8; // type:object size:0x4 data:4byte scope:local lbl_1_data_2BC = .data:0x000002BC; // type:object size:0x9 scope:local data:string lbl_1_data_2C5 = .data:0x000002C5; // type:object size:0x3 scope:local data:string jumptable_1_data_2C8 = .data:0x000002C8; // type:object size:0x2C scope:local jumptable_1_data_2F4 = .data:0x000002F4; // type:object size:0x48 scope:local -lbl_1_data_33C = .data:0x0000033C; // type:object size:0x4 data:4byte -lbl_1_data_340 = .data:0x00000340; // type:object size:0x4 data:float -lbl_1_data_344 = .data:0x00000344; // type:object size:0x4 data:float -lbl_1_data_348 = .data:0x00000348; // type:object size:0x4 data:float +lbl_1_data_33C = .data:0x0000033C; // type:object size:0x4 data:4byte scope:local +lbl_1_data_340 = .data:0x00000340; // type:object size:0x4 data:float scope:local +lbl_1_data_344 = .data:0x00000344; // type:object size:0x4 data:float scope:local +lbl_1_data_348 = .data:0x00000348; // type:object size:0x4 data:float scope:local jumptable_1_data_34C = .data:0x0000034C; // type:object size:0x20 scope:local jumptable_1_data_36C = .data:0x0000036C; // type:object size:0x2C scope:local lbl_1_data_398 = .data:0x00000398; // type:object size:0x12 scope:local data:string lbl_1_data_3AA = .data:0x000003AA; // type:object size:0x19 scope:local data:string lbl_1_data_3C3 = .data:0x000003C3; // type:object size:0x24 scope:local data:string -lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte -lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x4 data:4byte -lbl_1_bss_14 = .bss:0x00000014; // type:object size:0x4 data:4byte -lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte -lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte -lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 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:float -lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:float -lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:float -lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:float -lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte -lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte -lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte -lbl_1_bss_48 = .bss:0x00000048; // type:object size:0x4 data:4byte -lbl_1_bss_4C = .bss:0x0000004C; // type:object size:0x4 data:4byte -lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte -lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte -lbl_1_bss_5C = .bss:0x0000005C; // type:object size:0x4 data:4byte -lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 data:4byte -lbl_1_bss_64 = .bss:0x00000064; // type:object size:0x4 data:4byte -lbl_1_bss_68 = .bss:0x00000068; // type:object size:0x8 data:4byte -lbl_1_bss_70 = .bss:0x00000070; // type:object size:0x4 data:4byte -lbl_1_bss_74 = .bss:0x00000074; // type:object size:0x4 data:4byte -lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x50 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte scope:local +m457MesEndF = .bss:0x00000010; // type:object size:0x4 data:4byte scope:local +againstBrowserF = .bss:0x00000014; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_20 = .bss:0x00000020; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_24 = .bss:0x00000024; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_28 = .bss:0x00000028; // type:object size:0x4 data:float scope:local +lbl_1_bss_2C = .bss:0x0000002C; // type:object size:0x4 data:float scope:local +lbl_1_bss_30 = .bss:0x00000030; // type:object size:0x4 data:float scope:local +lbl_1_bss_34 = .bss:0x00000034; // type:object size:0x4 data:float scope:local +lbl_1_bss_3C = .bss:0x0000003C; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_40 = .bss:0x00000040; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_44 = .bss:0x00000044; // type:object size:0x4 data:4byte scope:local +lightId = .bss:0x00000048; // type:object size:0x4 data:4byte scope:local +objman = .bss:0x0000004C; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_50 = .bss:0x00000050; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_54 = .bss:0x00000054; // type:object size:0x4 data:4byte scope:local +gameState = .bss:0x0000005C; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_60 = .bss:0x00000060; // type:object size:0x4 data:4byte scope:local +gameObj = .bss:0x00000064; // type:object size:0x4 data:4byte scope:local +playerObj = .bss:0x00000068; // type:object size:0x8 data:4byte scope:local +omViewObj = .bss:0x00000070; // type:object size:0x4 data:4byte scope:local +mainObj = .bss:0x00000074; // type:object size:0x4 data:4byte scope:local +lbl_1_bss_78 = .bss:0x00000078; // type:object size:0x50 data:4byte scope:local diff --git a/src/REL/m457Dll/main.c b/src/REL/m457Dll/main.c index 192cb3f1..4e570c51 100755 --- a/src/REL/m457Dll/main.c +++ b/src/REL/m457Dll/main.c @@ -1,3 +1,4 @@ +#include "dolphin/pad.h" #include "game/audio.h" #include "game/chrman.h" #include "game/data.h" @@ -22,35 +23,63 @@ s32 rand8(void); -typedef struct { - /* 0x00 */ s32 unk00; - /* 0x04 */ s32 unk04; - /* 0x08 */ s32 unk08; - /* 0x0C */ s32 unk0C; - /* 0x10 */ s32 unk10; - /* 0x14 */ s32 unk14; +#define MSM_SE_BOWSER_LAUGH 0x3A +#define MSM_SE_BOWSER_HOWL 0x3E +#define MSM_SE_KOOPA_KID_DROP 0x5B +#define MSM_SE_PLAYER_DROP 0x33D +#define MSM_SE_WIND 0x6D7 +#define MSM_SE_INVINCIBILITY 0x7E6 + +#define MSM_MUS_BACKGROUND 0x4D + +#define MODEL_ID_PLAYER_PLAYER 0 + +#define MODEL_ID_GAME_SKY 0 +#define MODEL_ID_GAME_RING 1 +#define MODEL_ID_GAME_MUSHROOM 2 +#define MODEL_ID_GAME_INVINCE_SHINING 3 +#define MODEL_ID_GAME_INVINCE_SPARKS 4 +#define MODEL_ID_GAME_KOOPA_KID 5 +#define MODEL_ID_GAME_WAR_FAN 6 + +#define CHARACTER_BOWSER -1 +#define PAD_IDX_COM -1 + +#define PLAYER_STATE_INITIAL_ADVANCE 2 // TODO is this right? +#define PLAYER_STATE_FALLING 16 + +#define PREV_TRIG_L 0 +#define PREV_TRIG_R 1 + +typedef struct PlayerData { + /* 0x00 */ s32 group; + /* 0x04 */ s32 player; + /* 0x08 */ s32 character; + /* 0x0C */ s32 padIdx; + /* 0x10 */ s32 diff; + /* 0x14 */ s32 state; /* 0x18 */ s32 unk18; - /* 0x1C */ s32 unk1C; + /* 0x1C */ s32 invinceTime; /* 0x20 */ s32 unk20; /* 0x24 */ s32 unk24; /* 0x28 */ s32 unk28; /* 0x2C */ s32 unk2C; - /* 0x30 */ s32 unk30; + /* 0x30 */ s32 stamina; /* 0x34 */ s32 unk34; - /* 0x38 */ s32 unk38; + /* 0x38 */ s32 prevTrig; /* 0x3C */ s32 unk3C; /* 0x40 */ s32 unk40; /* 0x44 */ s32 unk44; /* 0x48 */ float unk48; /* 0x4C */ s32 unk4C; -} StructBss68Data; // Size 0x50 +} PlayerData; // Size 0x50 -typedef struct { +typedef struct StructBss78 { /* 0x00 */ s32 unk00; /* 0x04 */ float unk04[3]; } StructBss78; // Size 0x10 -typedef struct { +typedef struct StructData28C { /* 0x00 */ s32 unk00; /* 0x04 */ s32 unk04; /* 0x08 */ float unk08; @@ -59,47 +88,52 @@ typedef struct { /* 0x14 */ float unk14; } StructData28C; // Size 0x18 -void fn_1_7AE4(omObjData *arg0); +typedef struct SparkData { + /* 0x00 */ float scale; + /* 0x04 */ float xOffset; + /* 0x08 */ float yOffset; +} SparkData; // Size 0x0C -StructBss78 lbl_1_bss_78[5]; -omObjData *lbl_1_bss_74; -omObjData *lbl_1_bss_70; -omObjData *lbl_1_bss_68[2]; -omObjData *lbl_1_bss_64; -s32 lbl_1_bss_60; -s32 lbl_1_bss_5C; -char lbl_1_bss_58[4]; // unused -s32 lbl_1_bss_54; -s32 lbl_1_bss_50; -// objman -Process *lbl_1_bss_4C; -s32 lbl_1_bss_48; -s32 lbl_1_bss_44; -s32 lbl_1_bss_40; -s32 lbl_1_bss_3C; -char lbl_1_bss_38[4]; // unused -float lbl_1_bss_34; -float lbl_1_bss_30; -float lbl_1_bss_2C; -float lbl_1_bss_28; -s32 lbl_1_bss_24; -s32 lbl_1_bss_20; -s32 lbl_1_bss_1C; -s32 lbl_1_bss_18; -s32 lbl_1_bss_14; -s32 lbl_1_bss_10; -char lbl_1_bss_8[8]; // unused -s32 lbl_1_bss_4; -char lbl_1_bss_0[4]; // unused +static void M457Exit(omObjData *object); -s32 lbl_1_data_0[] = { DATA_MAKE_NUM(DATADIR_M457, 23), DATA_MAKE_NUM(DATADIR_M457, 22), DATA_MAKE_NUM(DATADIR_M457, 24), +static StructBss78 lbl_1_bss_78[5]; +static omObjData *mainObj; +static omObjData *omViewObj; +static omObjData *playerObj[2]; +static omObjData *gameObj; +static s32 lbl_1_bss_60; +static s32 gameState; +static char lbl_1_bss_58[4]; // unused +static s32 lbl_1_bss_54; +static s32 lbl_1_bss_50; +static Process *objman; +static s32 lightId; +static s32 lbl_1_bss_44; +static s32 lbl_1_bss_40; +static s32 lbl_1_bss_3C; +static char lbl_1_bss_38[4]; // unused +static float lbl_1_bss_34; +static float lbl_1_bss_30; +static float lbl_1_bss_2C; +static float lbl_1_bss_28; +static s32 lbl_1_bss_24; +static s32 lbl_1_bss_20; +static s32 lbl_1_bss_1C; +static s32 lbl_1_bss_18; +static BOOL againstBrowserF; +static s32 m457MesEndF; +static char lbl_1_bss_8[8]; // unused +static s32 lbl_1_bss_4; +static char lbl_1_bss_0[4]; // unused + +s32 sprDataNumTbl[] = { DATA_MAKE_NUM(DATADIR_M457, 23), DATA_MAKE_NUM(DATADIR_M457, 22), DATA_MAKE_NUM(DATADIR_M457, 24), DATA_MAKE_NUM(DATADIR_M457, 24), DATA_MAKE_NUM(DATADIR_M457, 24), DATA_MAKE_NUM(DATADIR_M457, 24), DATA_MAKE_NUM(DATADIR_M457, 24), DATA_MAKE_NUM(DATADIR_MGCONST, 0), DATA_MAKE_NUM(DATADIR_M457, 23), DATA_MAKE_NUM(DATADIR_M457, 22), DATA_MAKE_NUM(DATADIR_M457, 24), DATA_MAKE_NUM(DATADIR_M457, 24), DATA_MAKE_NUM(DATADIR_M457, 24), DATA_MAKE_NUM(DATADIR_M457, 24), DATA_MAKE_NUM(DATADIR_M457, 24), DATA_MAKE_NUM(DATADIR_MGCONST, 0), DATA_MAKE_NUM(DATADIR_M457, 27), DATA_MAKE_NUM(DATADIR_M457, 28), DATA_MAKE_NUM(DATADIR_M457, 25), DATA_MAKE_NUM(DATADIR_M457, 25), DATA_MAKE_NUM(DATADIR_M457, 25), DATA_MAKE_NUM(DATADIR_M457, 25), DATA_MAKE_NUM(DATADIR_M457, 25) }; -s32 lbl_1_data_5C[23] = { 0 }; +s32 sprIdTbl[23] = { 0 }; s32 lbl_1_data_B8[] = { DATA_MAKE_NUM(DATADIR_MARIOMOT, 0), DATA_MAKE_NUM(DATADIR_MARIOMOT, 5), DATA_MAKE_NUM(DATADIR_MARIOMOT, 6), DATA_MAKE_NUM(DATADIR_MARIOMOT, 112), DATA_MAKE_NUM(DATADIR_MARIOMOT, 111), DATA_MAKE_NUM(DATADIR_M457, 8), DATA_MAKE_NUM(DATADIR_M457, 0), @@ -116,24 +150,23 @@ u8 lbl_1_data_148[12] = { 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1 }; s32 lbl_1_data_154[12] = { 8, 0, 0, 8, 5, 8, 4, 2, 2, 8, 8, 8 }; s32 lbl_1_data_184[12] = { 0 }; -float lbl_1_data_1B4[][3] = { { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 20.0f, 60.0f, 20.0f }, { 20.0f, 70.0f, 20.0f }, { 20.0f, 20.0f, 20.0f }, +float lbl_1_data_1B4[9][3] = { { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 20.0f, 60.0f, 20.0f }, { 20.0f, 70.0f, 20.0f }, { 20.0f, 20.0f, 20.0f }, { 50.0f, -70.0f, 0.0f }, { 20.0f, 60.0f, 20.0f }, { 100.0f, 0.0f, 50.0f }, { -70.0f, -70.0f, -70.0f } }; -float lbl_1_data_220[][3] = { { 1.5f, 45.0f, 270.0f }, { 1.7f, 45.0f, 270.0f }, { 1.8f, 45.0f, 270.0f }, { 1.6f, 45.0f, 270.0f }, +SparkData sparkDataTbl[9] = { { 1.5f, 45.0f, 270.0f }, { 1.7f, 45.0f, 270.0f }, { 1.8f, 45.0f, 270.0f }, { 1.6f, 45.0f, 270.0f }, { 1.7f, 5.0f, 270.0f }, { 2.0f, -85.0f, 295.0f }, { 1.8f, 45.0f, 270.0f }, { 2.0f, 40.0f, 330.0f }, { 2.25f, -30.0f, 300.0f } }; StructData28C lbl_1_data_28C = { 0 }; s16 lbl_1_data_2A4 = -1; s16 lbl_1_data_2A6 = -1; -s32 lbl_1_data_2A8 = -1; -s32 lbl_1_data_2AC = -1; +s32 backgroundMusNo = -1; +s32 windSeNo = -1; s16 lbl_1_data_2B0 = -1; -s32 lbl_1_data_2B4 = -1; +s32 invincibilitySeNo = -1; s32 lbl_1_data_2B8 = 10 * REFRESH_RATE; -// CameraPrintDebug -void fn_1_A0(void) +static void CameraPrintDebug(void) { Center.x += 10.0 * (((HuPadBtn[0] & PAD_BUTTON_RIGHT) != 0) - ((HuPadBtn[0] & PAD_BUTTON_LEFT) != 0)); Center.z -= 10.0 * (((HuPadBtn[0] & PAD_BUTTON_UP) != 0) - ((HuPadBtn[0] & PAD_BUTTON_DOWN) != 0)); @@ -146,149 +179,130 @@ void fn_1_A0(void) print8(64, 424, 1.0f, "%f", CZoom); } -void fn_1_46C(omObjData *arg0) +static void M457PlayerExec(omObjData *object) { - s16 var_r29; - s16 var_r26; - s16 var_r22; - s32 var_r20; - s32 var_r25; - s32 var_r24; - Vec sp104; - float spFC[2]; - float spE8; - float spE4; - float spE0; - float temp_f31; - s32 spDC; - s32 spD8; - s32 sp20; - s32 temp_r19; - s32 temp_r21; - char *var_r18; - StructBss68Data *temp_r31; - StructBss68Data *temp_r28; - ModelData *spD4; + PlayerData *playerData = object->data; + PlayerData *opponentData = playerObj[1 - object->work[0]]->data; + float unused = 0.0f; + float unused2 = 0.0f; + float unused3 = 0.0f; + s32 unused4 = 0; + s16 var_r29 = -1; + s16 var_r26 = -1; + s16 var_r22 = -1; + BOOL aPressedF = (playerData->padIdx == PAD_IDX_COM) ? 0 : ((HuPadBtnDown[playerData->padIdx] & PAD_BUTTON_A) > 0); + BOOL rPressedF = (playerData->padIdx == PAD_IDX_COM) ? 0 : ((HuPadBtnDown[playerData->padIdx] & PAD_TRIGGER_R) > 0); + BOOL lPressedF = (playerData->padIdx == PAD_IDX_COM) ? 0 : ((HuPadBtnDown[playerData->padIdx] & PAD_TRIGGER_L) > 0); s32 i; - temp_r31 = arg0->data; - temp_r28 = lbl_1_bss_68[1 - arg0->work[0]]->data; - spE8 = 0.0f; - spE4 = 0.0f; - spE0 = 0.0f; - spDC = 0; - var_r29 = -1; - var_r26 = -1; - var_r22 = -1; - var_r20 = (temp_r31->unk0C == -1) ? 0 : ((HuPadBtnDown[temp_r31->unk0C] & 0x100) > 0); - var_r25 = (temp_r31->unk0C == -1) ? 0 : ((HuPadBtnDown[temp_r31->unk0C] & 0x20) > 0); - var_r24 = (temp_r31->unk0C == -1) ? 0 : ((HuPadBtnDown[temp_r31->unk0C] & 0x40) > 0); - if (temp_r31->unk0C == -1) { - temp_r31->unk3C--; - if (temp_r31->unk3C <= 0) { - if (temp_r31->unk14 == 1) { - var_r20 = 1; + if (playerData->padIdx == PAD_IDX_COM) { + playerData->unk3C--; + if (playerData->unk3C <= 0) { + if (playerData->state == 1) { + aPressedF = TRUE; } else { - var_r25 = var_r24 = 1; + rPressedF = lPressedF = TRUE; } - if (temp_r31->unk14 >= 8 || (temp_r31->unk14 >= 3 && temp_r31->unk18 >= 10)) { - switch (temp_r31->unk10) { + if (playerData->state >= 8 || (playerData->state >= 3 && playerData->unk18 >= 10)) { + switch (playerData->diff) { case 0: - temp_r31->unk3C = rand8() % 14 + 4 + (temp_r31->unk14 != 8 ? 28 - temp_r31->unk18 : 0); + playerData->unk3C = rand8() % 14 + 4 + (playerData->state != 8 ? 28 - playerData->unk18 : 0); break; case 1: - temp_r31->unk3C = rand8() % 9 + 4 + (temp_r31->unk14 != 8 ? 28 - temp_r31->unk18 : 0); + playerData->unk3C = rand8() % 9 + 4 + (playerData->state != 8 ? 28 - playerData->unk18 : 0); break; case 2: - temp_r31->unk3C = rand8() % 10 + 12 - + ((temp_r31->unk14 != 8 && temp_r31->unk18 >= 9 && temp_r31->unk18 <= 13) ? 13 - temp_r31->unk18 : 0); + playerData->unk3C = rand8() % 10 + 12 + + ((playerData->state != 8 && playerData->unk18 >= 9 && playerData->unk18 <= 13) ? 13 - playerData->unk18 : 0); break; case 3: - temp_r31->unk3C - = rand8() % 5 + 4 + ((temp_r31->unk14 != 8 && temp_r31->unk18 >= 2 && temp_r31->unk18 <= 17) ? 17 - temp_r31->unk18 : 0); - if (temp_r28->unk1C > 0 || temp_r31->unk14 == 7) { - var_r24 = var_r25 = 0; + playerData->unk3C = rand8() % 5 + 4 + + ((playerData->state != 8 && playerData->unk18 >= 2 && playerData->unk18 <= 17) ? 17 - playerData->unk18 : 0); + if (opponentData->invinceTime > 0 || playerData->state == 7) { + // don't waste stamina + lPressedF = rPressedF = 0; } break; } } } } - if (temp_r31->unk38 == 0) { - var_r24 = 0; + if (playerData->prevTrig == PREV_TRIG_L) { + lPressedF = FALSE; } - if (temp_r31->unk38 == 1) { - var_r25 = 0; + if (playerData->prevTrig == PREV_TRIG_R) { + rPressedF = FALSE; } - if (temp_r31->unk20 > 0) { - var_r20 = 0; - temp_r31->unk20--; + if (playerData->unk20 > 0) { + aPressedF = FALSE; + playerData->unk20--; } - else if (var_r20 != 0) { - temp_r31->unk20 = 20; + else if (aPressedF) { + playerData->unk20 = 20; } - if (temp_r31->unk24 > 0) { - var_r24 = 0; - temp_r31->unk24--; + if (playerData->unk24 > 0) { + lPressedF = FALSE; + playerData->unk24--; } - else if (var_r24 != 0) { - temp_r31->unk24 = 6; + else if (lPressedF) { + playerData->unk24 = 6; } - if (temp_r31->unk28 > 0) { - var_r25 = 0; - temp_r31->unk28--; + if (playerData->unk28 > 0) { + rPressedF = FALSE; + playerData->unk28--; } - else if (var_r25 != 0) { - temp_r31->unk28 = 6; + else if (rPressedF) { + playerData->unk28 = 6; } - if (lbl_1_bss_5C == 1008 && temp_r31->unk14 >= 8 && temp_r31->unk14 <= 14) { - spD8 = temp_r31->unk30; - if (var_r24 != 0) { - temp_r31->unk30 -= 7; + if (gameState == 1008 && playerData->state >= 8 && playerData->state <= 14) { + s32 prevStamina = playerData->stamina; + if (lPressedF) { + playerData->stamina -= 7; } - if (var_r25 != 0) { - temp_r31->unk30 -= 7; + if (rPressedF) { + playerData->stamina -= 7; } - if (spD8 > 0 && temp_r31->unk30 <= 0) { - temp_r31->unk30 = -1; - temp_r31->unk4C = 1; + if (prevStamina > 0 && playerData->stamina <= 0) { + // cap at -1 + playerData->stamina = -1; + playerData->unk4C = 1; } } - if (lbl_1_bss_20 == 0 && lbl_1_bss_5C == 1008 && temp_r31->unk14 >= 7 && temp_r31->unk14 <= 14 && (var_r24 != 0 || var_r25 != 0)) { - temp_r31->unk38 = (var_r24 != 0) ? 0 : (var_r25 != 0) ? 1 : 0; + if (lbl_1_bss_20 == 0 && gameState == 1008 && playerData->state >= 7 && playerData->state <= 14 && (lPressedF || rPressedF)) { + playerData->prevTrig = lPressedF ? PREV_TRIG_L : rPressedF ? PREV_TRIG_R : PREV_TRIG_L; } - if (temp_r31->unk00 == 0) { - lbl_1_bss_68[0]->trans.x -= temp_r31->unk48; - lbl_1_bss_68[1]->trans.x -= temp_r28->unk48; + if (playerData->group == 0) { + playerObj[0]->trans.x -= playerData->unk48; + playerObj[1]->trans.x -= opponentData->unk48; } - switch (lbl_1_bss_5C) { + switch (gameState) { case 1001: if (lbl_1_bss_60 == 0) { - Hu3DModelAttrReset(arg0->model[0], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[MODEL_ID_PLAYER_PLAYER], HU3D_ATTR_DISPOFF); } if (lbl_1_bss_60 <= 30) { - if (temp_r31->unk08 == -1) { - Hu3DMotionTimeSet(arg0->model[0], 138.0f); + if (playerData->character == CHARACTER_BOWSER) { + Hu3DMotionTimeSet(object->model[MODEL_ID_PLAYER_PLAYER], 138.0f); } - arg0->trans.y = 2400.0 * (1.0 - lbl_1_bss_60 / 30.0); + object->trans.y = 2400.0 * (1.0 - lbl_1_bss_60 / 30.0); } - if (temp_r31->unk08 != -1 && lbl_1_bss_60 == 30) { + if (playerData->character != CHARACTER_BOWSER && lbl_1_bss_60 == 30) { var_r29 = 2; } - if (lbl_1_bss_60 == 40 && temp_r31->unk08 != -1) { + if (lbl_1_bss_60 == 40 && playerData->character != CHARACTER_BOWSER) { var_r29 = 0; } - if (lbl_1_bss_60 == 45 && temp_r31->unk08 == -1) { + if (lbl_1_bss_60 == 45 && playerData->character == CHARACTER_BOWSER) { var_r29 = 0; - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[var_r29], lbl_1_data_184[var_r29], 35.0f, HU3D_MOTATTR_LOOP); - temp_r31->unk40 = var_r29; + Hu3DMotionShiftSet(object->model[MODEL_ID_PLAYER_PLAYER], object->motion[var_r29], lbl_1_data_184[var_r29], 35.0f, HU3D_MOTATTR_LOOP); + playerData->unk40 = var_r29; } if (lbl_1_bss_60 == 30) { lbl_1_data_28C.unk04 += 50; } if (lbl_1_bss_60 == 30) { - HuAudFXPlay(0x33D); + HuAudFXPlay(MSM_SE_PLAYER_DROP); } break; case 1005: @@ -305,40 +319,41 @@ void fn_1_46C(omObjData *arg0) } break; case 1010: - if (lbl_1_bss_44 == temp_r31->unk00 && lbl_1_bss_60 >= 15) { + if (lbl_1_bss_44 == playerData->group && lbl_1_bss_60 >= 15) { if (lbl_1_bss_60 == 15) { - temp_r31->unk14 = 0; - temp_r31->unk18 = 0; - if (temp_r31->unk08 == -1) { - HuAudFXPlay(0x3A); + playerData->state = 0; + playerData->unk18 = 0; + if (playerData->character == CHARACTER_BOWSER) { + HuAudFXPlay(MSM_SE_BOWSER_LAUGH); } } var_r29 = 10; - if (arg0->rot.y > 180.0f) { - arg0->rot.y -= 360.0f; + if (object->rot.y > 180.0f) { + object->rot.y -= 360.0f; } - arg0->rot.y *= 0.9; + object->rot.y *= 0.9; } if (lbl_1_bss_44 == 2 && lbl_1_bss_60 >= 15) { if (lbl_1_bss_60 == 15) { - temp_r31->unk14 = 0; - temp_r31->unk18 = 0; + playerData->state = 0; + playerData->unk18 = 0; } var_r29 = 11; - if (arg0->rot.y > 180.0f) { - arg0->rot.y -= 360.0f; + if (object->rot.y > 180.0f) { + object->rot.y -= 360.0f; } - arg0->rot.y *= 0.9; + object->rot.y *= 0.9; } break; } - temp_r31->unk18 += (temp_r31->unk18 < 0x10000); - if (temp_r31->unk14 == 3 || temp_r31->unk14 == 5) { - if (temp_r31->unk18 == 1 && lbl_1_data_2B0 != -1) { + playerData->unk18 += (playerData->unk18 < 0x10000); + if (playerData->state == 3 || playerData->state == 5) { + if (playerData->unk18 == 1 && lbl_1_data_2B0 != -1) { HuWinExCleanup(lbl_1_data_2B0); lbl_1_data_2B0 = -1; } - if ((temp_r31->unk14 == 3 && temp_r31->unk18 == 23) || (temp_r31->unk14 == 5 && temp_r31->unk18 == 15)) { + if ((playerData->state == 3 && playerData->unk18 == 23) || (playerData->state == 5 && playerData->unk18 == 15)) { + float spFC[2]; HuWinMesMaxSizeGet(1, spFC, MAKE_MESSID(48, 35)); if (lbl_1_data_2B0 == -1) { lbl_1_data_2B0 = HuWinCreate(-10000.0f, 400.0f, spFC[0], spFC[1], 1); @@ -348,250 +363,255 @@ void fn_1_46C(omObjData *arg0) HuWinMesSet(lbl_1_data_2B0, MAKE_MESSID(48, 35)); } } - switch (temp_r31->unk14) { + switch (playerData->state) { case 0: - if (lbl_1_bss_5C == 1008) { - temp_r31->unk14 = 1; - temp_r31->unk18 = 0; + if (gameState == 1008) { + playerData->state = 1; + playerData->unk18 = 0; } break; case 1: - if (temp_r31->unk18 == 1 && temp_r31->unk0C == -1) { - switch (temp_r31->unk10) { + if (playerData->unk18 == 1 && playerData->padIdx == PAD_IDX_COM) { + switch (playerData->diff) { case 0: - temp_r31->unk3C = rand8() % 5 + 15; + playerData->unk3C = rand8() % 5 + 15; break; case 1: - temp_r31->unk3C = rand8() % 5 + 12; + playerData->unk3C = rand8() % 5 + 12; break; case 2: - temp_r31->unk3C = rand8() % 5 + 10; + playerData->unk3C = rand8() % 5 + 10; break; case 3: - temp_r31->unk3C = rand8() % 4 + 9; + playerData->unk3C = rand8() % 4 + 9; break; } } - if (var_r20 != 0) { - temp_r31->unk14 = 2; - temp_r31->unk18 = 0; + // initial advance + if (aPressedF) { + playerData->state = PLAYER_STATE_INITIAL_ADVANCE; + playerData->unk18 = 0; var_r29 = 6; - arg0->trans.x += (temp_r31->unk00 == 0) ? ((rand8() % 2) * 2 - 1) : 0; + object->trans.x += (playerData->group == 0) ? ((rand8() % 2) * 2 - 1) : 0; } break; - case 2: - arg0->trans.x += 8.695652f * (temp_r31->unk00 == 0 ? 1 : -1); + case PLAYER_STATE_INITIAL_ADVANCE: + object->trans.x += 8.695652f * (playerData->group == 0 ? 1 : -1); break; case 3: - arg0->trans.x += 4.347826f * (temp_r31->unk00 == 0 ? 1 : -1); - if (temp_r31->unk18 >= 23) { - temp_r31->unk14 = 8; - temp_r31->unk18 = 0; + object->trans.x += 4.347826f * (playerData->group == 0 ? 1 : -1); + if (playerData->unk18 >= 23) { + playerData->state = 8; + playerData->unk18 = 0; var_r29 = 4; } break; case 4: - if (temp_r31->unk18 == 1) { + if (playerData->unk18 == 1) { var_r29 = 7; } - arg0->trans.x += -4.347826f * (temp_r31->unk00 == 0 ? 1 : -1); - if (temp_r31->unk18 >= 23) { - temp_r31->unk14 = 8; - temp_r31->unk18 = 0; + object->trans.x += -4.347826f * (playerData->group == 0 ? 1 : -1); + if (playerData->unk18 >= 23) { + playerData->state = 8; + playerData->unk18 = 0; var_r29 = 4; } break; case 5: - arg0->trans.x += 8.695652f * (temp_r31->unk00 == 0 ? 1 : -1); - if (temp_r31->unk18 >= 15) { - temp_r31->unk14 = 8; - temp_r31->unk18 = 0; + object->trans.x += 8.695652f * (playerData->group == 0 ? 1 : -1); + if (playerData->unk18 >= 15) { + playerData->state = 8; + playerData->unk18 = 0; var_r29 = 4; } break; case 6: - if (temp_r31->unk18 == 1) { + if (playerData->unk18 == 1) { var_r29 = 8; } - arg0->trans.x += -8.695652f * (temp_r31->unk00 == 0 ? 1 : -1); - if (temp_r31->unk18 >= 7) { - temp_r31->unk14 = 8; - temp_r31->unk18 = 0; + object->trans.x += -8.695652f * (playerData->group == 0 ? 1 : -1); + if (playerData->unk18 >= 7) { + playerData->state = 8; + playerData->unk18 = 0; var_r26 = 7; var_r29 = 4; } - if (temp_r31->unk18 >= 15) { - temp_r31->unk14 = 8; - temp_r31->unk18 = 0; + if (playerData->unk18 >= 15) { + playerData->state = 8; + playerData->unk18 = 0; } break; case 8: - if (temp_r31->unk30 == 0) { + if (playerData->stamina == 0) { var_r26 = 0; - temp_r31->unk14 = 7; - temp_r31->unk18 = 1; - temp_r31->unk34 = 0; + playerData->state = 7; + playerData->unk18 = 1; + playerData->unk34 = 0; } else { - if (var_r24 == 0 && var_r25 == 0) { + if (!lPressedF && !rPressedF) { break; } - temp_r31->unk14 = 9; - temp_r31->unk18 = 0; + playerData->state = 9; + playerData->unk18 = 0; var_r26 = 3; - var_r22 = (temp_r31->unk38 == 0 ? 0 : 11) + 5; + var_r22 = (playerData->prevTrig == PREV_TRIG_L ? 0 : 11) + 5; var_r29 = 6; if (lbl_1_bss_20 == 1) { - temp_r31->unk38 = (var_r24 != 0) ? 0 : (var_r25 != 0) ? 1 : 0; + playerData->prevTrig = lPressedF ? PREV_TRIG_L : rPressedF ? PREV_TRIG_R : PREV_TRIG_L; } break; } /* fallthrough */ case 7: - if (temp_r31->unk18 == 1) { - s32 sp1B4[] = { 0x12A, 0x16A, 0x1AA, 0x1EA, 0x22A, 0x26A, 0x2AA, 0x2EA, 0x03B }; - HuAudFXPlay(sp1B4[temp_r31->unk08 == -1 ? 8 : temp_r31->unk08]); + if (playerData->unk18 == 1) { + s32 noStaminaSeIdTbl[] = { 0x12A, 0x16A, 0x1AA, 0x1EA, 0x22A, 0x26A, 0x2AA, 0x2EA, 0x03B }; + HuAudFXPlay(noStaminaSeIdTbl[playerData->character == CHARACTER_BOWSER ? 8 : playerData->character]); var_r29 = 9; - temp_r31->unk4C = 0; + playerData->unk4C = 0; } - if (temp_r31->unk30 > 0) { - temp_r31->unk14 = 8; - temp_r31->unk18 = 0; + if (playerData->stamina > 0) { + playerData->state = 8; + playerData->unk18 = 0; var_r29 = 4; } break; case 9: - arg0->trans.x += 8.695652f * (temp_r31->unk00 == 0 ? 1 : -1); - if (temp_r31->unk18 >= 23) { - temp_r31->unk14 = 8; - temp_r31->unk18 = 0; + object->trans.x += 8.695652f * (playerData->group == 0 ? 1 : -1); + if (playerData->unk18 >= 23) { + playerData->state = 8; + playerData->unk18 = 0; var_r29 = 4; } break; case 12: - if (temp_r31->unk18 == 7) { + if (playerData->unk18 == 7) { var_r26 = 0; var_r22 = 7; var_r29 = 7; } - if (temp_r31->unk18 == 15) { + if (playerData->unk18 == 15) { var_r26 = 5; var_r29 = 4; } - if (temp_r31->unk18 >= 20) { - temp_r31->unk14 = 8; - temp_r31->unk18 = 0; + if (playerData->unk18 >= 20) { + playerData->state = 8; + playerData->unk18 = 0; var_r29 = 4; } break; case 10: - arg0->trans.x += 4.347826f * (temp_r31->unk00 == 0 ? 1 : -1); - if (temp_r31->unk18 >= 23) { - temp_r31->unk14 = 8; - temp_r31->unk18 = 0; + object->trans.x += 4.347826f * (playerData->group == 0 ? 1 : -1); + if (playerData->unk18 >= 23) { + playerData->state = 8; + playerData->unk18 = 0; var_r29 = 4; } break; case 11: - arg0->trans.x += -4.347826f * (temp_r31->unk00 == 0 ? 1 : -1); - if (temp_r31->unk18 == 1) { + object->trans.x += -4.347826f * (playerData->group == 0 ? 1 : -1); + if (playerData->unk18 == 1) { var_r29 = 7; } - if (temp_r31->unk18 >= 23) { - temp_r31->unk14 = 8; - temp_r31->unk18 = 0; + if (playerData->unk18 >= 23) { + playerData->state = 8; + playerData->unk18 = 0; var_r29 = 4; } break; case 13: - arg0->trans.x += 8.695652f * (temp_r31->unk00 == 0 ? 1 : -1); - if (temp_r31->unk18 >= 23) { - temp_r31->unk14 = 8; - temp_r31->unk18 = 0; + object->trans.x += 8.695652f * (playerData->group == 0 ? 1 : -1); + if (playerData->unk18 >= 23) { + playerData->state = 8; + playerData->unk18 = 0; var_r29 = 4; } break; case 14: - arg0->trans.x += -8.695652f * (temp_r31->unk00 == 0 ? 1 : -1); - if (temp_r31->unk18 == 1) { + object->trans.x += -8.695652f * (playerData->group == 0 ? 1 : -1); + if (playerData->unk18 == 1) { var_r29 = 8; } - if (temp_r31->unk18 == 11) { + if (playerData->unk18 == 11) { var_r26 = 11; var_r29 = 4; } - if (temp_r31->unk18 >= 23) { - temp_r31->unk14 = 8; - temp_r31->unk18 = 0; + if (playerData->unk18 >= 23) { + playerData->state = 8; + playerData->unk18 = 0; } - if (temp_r31->unk34 < 8) { - temp_r31->unk34 = 8; + if (playerData->unk34 < 8) { + playerData->unk34 = 8; } break; case 15: - if (temp_r31->unk18 == 1 && temp_r31->unk1C > 4) { - temp_r31->unk1C = 4; + if (playerData->unk18 == 1 && playerData->invinceTime > 4) { + playerData->invinceTime = 4; } - if (temp_r31->unk18 == 1 && lbl_1_data_2B0 != -1) { + if (playerData->unk18 == 1 && lbl_1_data_2B0 != -1) { HuWinExCleanup(lbl_1_data_2B0); lbl_1_data_2B0 = -1; } - if (temp_r31->unk18 == 7) { + if (playerData->unk18 == 7) { var_r29 = 4; var_r26 = 20; } - if (temp_r31->unk18 == REFRESH_RATE) { - lbl_1_bss_44 = temp_r31->unk00; - temp_r31->unk1C = 0; + if (playerData->unk18 == REFRESH_RATE) { + lbl_1_bss_44 = playerData->group; + playerData->invinceTime = 0; } break; - case 16: - arg0->trans.x += -39.130432f * (temp_r31->unk00 == 0 ? 1 : -1); - arg0->trans.y += 39.130432f; - if (temp_r31->unk18 == 1) { - s32 sp190[] = { 0x123, 0x163, 0x1A3, 0x1E3, 0x223, 0x263, 0x2A3, 0x2E3, 0x03C }; - - HuAudFXPlay(sp190[temp_r31->unk08 == -1 ? 8 : temp_r31->unk08]); + case PLAYER_STATE_FALLING: + // make the player fall down in the correct direction + object->trans.x += -39.130432f * (playerData->group == 0 ? 1 : -1); + object->trans.y += 39.130432f; + if (playerData->unk18 == 1) { + s32 fallSeIdTbl[] = { 0x123, 0x163, 0x1A3, 0x1E3, 0x223, 0x263, 0x2A3, 0x2E3, 0x03C }; + HuAudFXPlay(fallSeIdTbl[playerData->character == CHARACTER_BOWSER ? 8 : playerData->character]); var_r29 = 8; var_r26 = 0; var_r22 = 6; } - arg0->rot.z = (temp_r31->unk00 == 0) ? -20 : 20; + object->rot.z = (playerData->group == 0) ? -20 : 20; break; case 17: - if (temp_r31->unk18 == 1 && temp_r31->unk1C > 4) { - temp_r31->unk1C = 4; + if (playerData->unk18 == 1 && playerData->invinceTime > 4) { + playerData->invinceTime = 4; } - if (temp_r31->unk18 == 1 && lbl_1_data_2B0 != -1) { + if (playerData->unk18 == 1 && lbl_1_data_2B0 != -1) { HuWinExCleanup(lbl_1_data_2B0); lbl_1_data_2B0 = -1; } - if (temp_r31->unk18 == 7) { + if (playerData->unk18 == 7) { var_r29 = 0; var_r26 = 10; } - if (temp_r31->unk18 >= 7 && temp_r31->unk18 < 17) { - arg0->trans.x += (temp_r31->unk00 == 0 ? -1 : 1) * 2; + if (playerData->unk18 >= 7 && playerData->unk18 < 17) { + object->trans.x += (playerData->group == 0 ? -1 : 1) * 2; } - if (temp_r31->unk18 == REFRESH_RATE) { + if (playerData->unk18 == REFRESH_RATE) { lbl_1_bss_44 = 2; - temp_r31->unk1C = 0; + playerData->invinceTime = 0; } break; } - switch (temp_r31->unk14) { + switch (playerData->state) { case 12: - if (temp_r31->unk00 == 0) { + if (playerData->group == 0) { break; } /* fallthrough */ case 3: case 5: case 10: - case 13: - temp_r19 = Hu3DMotionTimeGet(arg0->model[0]); - if ((temp_r28->unk14 != 4 && temp_r28->unk14 != 6) || temp_r28->unk18 != 1) { - if ((temp_r19 + 1) % 11 != 0 || (temp_r31->unk14 == 12 && temp_r19 + 1 > 11)) { + case 13: { + Vec sp104; + s32 temp_r21; + char *var_r18; + + s32 temp_r19 = Hu3DMotionTimeGet(object->model[MODEL_ID_PLAYER_PLAYER]); + if ((opponentData->state != 4 && opponentData->state != 6) || opponentData->unk18 != 1) { + if ((temp_r19 + 1) % 11 != 0 || (playerData->state == 12 && temp_r19 + 1 > 11)) { break; } } @@ -599,97 +619,110 @@ void fn_1_46C(omObjData *arg0) { char sp1D8[][50] = { "g000mN-itemhook_R", "g000mN-itemhook_L" }; - if (temp_r31->unk08 != -1) { - var_r18 = CharModelHookNameGet(temp_r31->unk08, 1, (temp_r21 % 2 == 0) ? 0 : 1); + if (playerData->character != CHARACTER_BOWSER) { + var_r18 = CharModelHookNameGet(playerData->character, 1, (temp_r21 % 2 == 0) ? 0 : 1); } else { var_r18 = (temp_r21 % 2 == 0) ? sp1D8[0] : sp1D8[1]; } } - Hu3DModelObjPosGet(arg0->model[0], var_r18, &sp104); - Hu3DModelPosSet(lbl_1_bss_64->model[temp_r21 + 7], sp104.x + (temp_r31->unk00 == 0 ? 1 : -1) * 50, sp104.y, 75.0f + sp104.z); - Hu3DMotionTimeSet(lbl_1_bss_64->model[temp_r21 + 7], 2.0f); - Hu3DModelAttrReset(lbl_1_bss_64->model[temp_r21 + 7], 1); - if (lbl_1_bss_78[temp_r31->unk08 == -1 ? 1 : 0].unk00 < 3) { - lbl_1_bss_78[temp_r31->unk08 == -1 ? 1 : 0].unk04[lbl_1_bss_78[temp_r31->unk08 == -1 ? 1 : 0].unk00] = 0.0f; - lbl_1_bss_78[temp_r31->unk08 == -1 ? 1 : 0].unk00++; + Hu3DModelObjPosGet(object->model[MODEL_ID_PLAYER_PLAYER], var_r18, &sp104); + Hu3DModelPosSet(gameObj->model[temp_r21 + 7], sp104.x + (playerData->group == 0 ? 1 : -1) * 50, sp104.y, 75.0f + sp104.z); + Hu3DMotionTimeSet(gameObj->model[temp_r21 + 7], 2.0f); + Hu3DModelAttrReset(gameObj->model[temp_r21 + 7], 1); + if (lbl_1_bss_78[playerData->character == CHARACTER_BOWSER ? 1 : 0].unk00 < 3) { + lbl_1_bss_78[playerData->character == CHARACTER_BOWSER ? 1 : 0] + .unk04[lbl_1_bss_78[playerData->character == CHARACTER_BOWSER ? 1 : 0].unk00] + = 0.0f; + lbl_1_bss_78[playerData->character == CHARACTER_BOWSER ? 1 : 0].unk00++; } - if (fabs(lbl_1_bss_68[1 - temp_r31->unk00]->trans.x) >= 800.0 && (temp_r28->unk14 == 11 || temp_r28->unk14 == 14)) { - temp_r31->unk14 = 15; - temp_r28->unk14 = 16; - temp_r31->unk18 = temp_r28->unk18 = 0; + // bounds check + if (fabs(playerObj[1 - playerData->group]->trans.x) >= 800.0 && (opponentData->state == 11 || opponentData->state == 14)) { + playerData->state = 15; + opponentData->state = PLAYER_STATE_FALLING; + playerData->unk18 = opponentData->unk18 = 0; if (lbl_1_bss_78[4].unk00 < 3) { lbl_1_bss_78[4].unk04[lbl_1_bss_78[4].unk00] = 0.0f; lbl_1_bss_78[4].unk00++; } - if (lbl_1_data_2A8 != -1) { - HuAudSeqFadeOut(lbl_1_data_2A8, 100); - lbl_1_data_2A8 = -1; + if (backgroundMusNo != -1) { + HuAudSeqFadeOut(backgroundMusNo, 100); + backgroundMusNo = -1; } } - break; + } break; } - temp_r31->unk34++; - if (temp_r31->unk14 != 16 && temp_r31->unk14 != 15 && temp_r31->unk14 != 17 && lbl_1_bss_5C == 1008 && temp_r31->unk34 >= 30 - && (temp_r31->unk34 - 30) % 30 == 0) { - temp_r31->unk30 += (temp_r31->unk4C == 0 || temp_r31->unk14 == 7) ? 10 : 0; + playerData->unk34++; + if (playerData->state != PLAYER_STATE_FALLING && playerData->state != 15 && playerData->state != 17 && gameState == 1008 + && playerData->unk34 >= 30 && (playerData->unk34 - 30) % 30 == 0) { + // regen stamina + playerData->stamina += (playerData->unk4C == 0 || playerData->state == 7) ? 10 : 0; } - temp_r31->unk30 = (temp_r31->unk1C > 0 || temp_r31->unk30 >= 100) ? 100 : (temp_r31->unk30 < 0) ? 0 : temp_r31->unk30; + // apply invincibility to stamina and cap it + playerData->stamina = (playerData->invinceTime > 0 || playerData->stamina >= 100) ? 100 : (playerData->stamina < 0) ? 0 : playerData->stamina; for (i = 0; i < 5; i++) { - temp_f31 = (temp_r31->unk30 >= i * 20 + 20) ? 1.0 : (temp_r31->unk30 <= i * 20) ? 0.0 : (temp_r31->unk30 - i * 20) / 20.0; - espScaleSet(lbl_1_data_5C[i + (temp_r31->unk00 == 0 ? 2 : 10)], temp_f31, temp_f31); - if (temp_r31->unk1C > 0) { - s32 spF4[] = { 106, 469 }; - s32 spEC[] = { 78, 78 }; - s32 sp150[] = { 0, 0, -33, -9, 15, 39, 63, -68, 0, 0, -33, -9, 15, 39, 63, -68 }; - s32 sp110[] = { 0, 0, -1, -1, -1, -1, -1, -2, 0, 0, -1, -1, -1, -1, -1, -2 }; + float scale = (playerData->stamina >= i * 20 + 20) ? 1.0 : (playerData->stamina <= i * 20) ? 0.0 : (playerData->stamina - i * 20) / 20.0; + espScaleSet(sprIdTbl[i + (playerData->group == 0 ? 2 : 10)], scale, scale); + if (playerData->invinceTime > 0) { + // stamina bar mushroom start positions/offsets + s32 posXTbl[] = { 106, 469 }; + s32 posYTbl[] = { 78, 78 }; + s32 ofsXTbl[] = { 0, 0, -33, -9, 15, 39, 63, -68, 0, 0, -33, -9, 15, 39, 63, -68 }; // second half is unused + s32 ofsYTbl[] = { 0, 0, -1, -1, -1, -1, -1, -2, 0, 0, -1, -1, -1, -1, -1, -2 }; - espPosSet(lbl_1_data_5C[i + 18], spF4[temp_r31->unk00] + sp150[i + 2], spEC[temp_r31->unk00] + sp110[i + 2]); - espScaleSet(lbl_1_data_5C[i + 18], (temp_r31->unk1C % 4 == 0) ? 1.1 : 1.0, (temp_r31->unk1C % 4 == 0) ? 1.1 : 1.0); - espTPLvlSet(lbl_1_data_5C[i + 18], (temp_r31->unk1C % 4 < 2) ? 1.0 : (var_r22 % 4 == 2) ? 0.5 : 0.0); - espDispOn(lbl_1_data_5C[i + 18]); + // make the mushrooms in the stamina bar glow + espPosSet(sprIdTbl[i + 18], posXTbl[playerData->group] + ofsXTbl[i + 2], posYTbl[playerData->group] + ofsYTbl[i + 2]); + espScaleSet(sprIdTbl[i + 18], (playerData->invinceTime % 4 == 0) ? 1.1 : 1.0, (playerData->invinceTime % 4 == 0) ? 1.1 : 1.0); + espTPLvlSet(sprIdTbl[i + 18], (playerData->invinceTime % 4 < 2) ? 1.0 : (var_r22 % 4 == 2) ? 0.5 : 0.0); + espDispOn(sprIdTbl[i + 18]); } - else if (temp_r28->unk1C == 0) { - espDispOff(lbl_1_data_5C[i + 18]); + else if (opponentData->invinceTime == 0) { + espDispOff(sprIdTbl[i + 18]); } } - if (temp_r31->unk1C > 0) { - sp20 = (temp_r31->unk08 != -1) ? temp_r31->unk08 : 8; - Hu3DModelPosSet(lbl_1_bss_64->model[3], arg0->trans.x + lbl_1_data_220[sp20][1] * (temp_r31->unk00 == 0 ? 1 : -1), - arg0->trans.y + lbl_1_data_220[sp20][2], 150.0f + arg0->trans.z); - Hu3DModelScaleSet(lbl_1_bss_64->model[3], 0.75 * lbl_1_data_220[sp20][0], 0.75 * lbl_1_data_220[sp20][0], 0.75 * lbl_1_data_220[sp20][0]); - Hu3DModelAttrReset(lbl_1_bss_64->model[3], 1); - Hu3DModelAttrSet(lbl_1_bss_64->model[3], HU3D_ATTR_ZCMP_OFF); - Hu3DModelPosSet(lbl_1_bss_64->model[4], arg0->trans.x + lbl_1_data_220[sp20][1] * (temp_r31->unk00 == 0 ? 1 : -1), - arg0->trans.y + lbl_1_data_220[sp20][2], 150.0f + arg0->trans.z); - Hu3DModelScaleSet(lbl_1_bss_64->model[4], 0.75 * lbl_1_data_220[sp20][0], 0.75 * lbl_1_data_220[sp20][0], 0.75 * lbl_1_data_220[sp20][0]); - Hu3DModelAttrReset(lbl_1_bss_64->model[4], 1); - Hu3DModelAttrSet(lbl_1_bss_64->model[4], HU3D_ATTR_ZCMP_OFF); - temp_r31->unk1C--; - if (temp_r31->unk1C == 0) { - HuAudFXStop(lbl_1_data_2B4); + if (playerData->invinceTime > 0) { + s32 sp20 = (playerData->character != CHARACTER_BOWSER) ? playerData->character : 8; + // make the player shine + Hu3DModelPosSet(gameObj->model[MODEL_ID_GAME_INVINCE_SHINING], + object->trans.x + sparkDataTbl[sp20].xOffset * (playerData->group == 0 ? 1 : -1), object->trans.y + sparkDataTbl[sp20].yOffset, + 150.0f + object->trans.z); + Hu3DModelScaleSet(gameObj->model[MODEL_ID_GAME_INVINCE_SHINING], 0.75 * sparkDataTbl[sp20].scale, 0.75 * sparkDataTbl[sp20].scale, + 0.75 * sparkDataTbl[sp20].scale); + Hu3DModelAttrReset(gameObj->model[MODEL_ID_GAME_INVINCE_SHINING], 1); + Hu3DModelAttrSet(gameObj->model[MODEL_ID_GAME_INVINCE_SHINING], HU3D_ATTR_ZCMP_OFF); + // add sparks + Hu3DModelPosSet(gameObj->model[MODEL_ID_GAME_INVINCE_SPARKS], + object->trans.x + sparkDataTbl[sp20].xOffset * (playerData->group == 0 ? 1 : -1), object->trans.y + sparkDataTbl[sp20].yOffset, + 150.0f + object->trans.z); + Hu3DModelScaleSet(gameObj->model[MODEL_ID_GAME_INVINCE_SPARKS], 0.75 * sparkDataTbl[sp20].scale, 0.75 * sparkDataTbl[sp20].scale, + 0.75 * sparkDataTbl[sp20].scale); + Hu3DModelAttrReset(gameObj->model[MODEL_ID_GAME_INVINCE_SPARKS], 1); + Hu3DModelAttrSet(gameObj->model[MODEL_ID_GAME_INVINCE_SPARKS], HU3D_ATTR_ZCMP_OFF); + playerData->invinceTime--; + if (playerData->invinceTime == 0) { + HuAudFXStop(invincibilitySeNo); } } - else if (temp_r28->unk1C == 0) { - Hu3DModelAttrSet(lbl_1_bss_64->model[3], HU3D_ATTR_DISPOFF); - Hu3DModelAttrSet(lbl_1_bss_64->model[4], HU3D_ATTR_DISPOFF); + else if (opponentData->invinceTime == 0) { + Hu3DModelAttrSet(gameObj->model[MODEL_ID_GAME_INVINCE_SHINING], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(gameObj->model[MODEL_ID_GAME_INVINCE_SPARKS], HU3D_ATTR_DISPOFF); } - if (temp_r31->unk44 >= 0) { - var_r29 = temp_r31->unk44; + if (playerData->unk44 >= 0) { + var_r29 = playerData->unk44; } - if (var_r29 >= 0 && var_r29 != temp_r31->unk40) { + if (var_r29 >= 0 && var_r29 != playerData->unk40) { if (var_r26 == 0) { - Hu3DMotionSet(arg0->model[0], arg0->motion[var_r29]); - Hu3DMotionTimeSet(arg0->model[0], (var_r22 == -1) ? 0 : var_r22); + Hu3DMotionSet(object->model[MODEL_ID_PLAYER_PLAYER], object->motion[var_r29]); + Hu3DMotionTimeSet(object->model[MODEL_ID_PLAYER_PLAYER], (var_r22 == -1) ? 0 : var_r22); } else { - Hu3DMotionShiftSet(arg0->model[0], arg0->motion[var_r29], (var_r22 != -1) ? var_r22 : lbl_1_data_184[var_r29], + Hu3DMotionShiftSet(object->model[MODEL_ID_PLAYER_PLAYER], object->motion[var_r29], (var_r22 != -1) ? var_r22 : lbl_1_data_184[var_r29], (var_r26 != -1) ? var_r26 : lbl_1_data_154[var_r29], lbl_1_data_148[var_r29] ? HU3D_MOTATTR_NONE : HU3D_MOTATTR_LOOP); } - temp_r31->unk40 = var_r29; + playerData->unk40 = var_r29; } - if (temp_r31->unk00 == 1) { - spD4 = &Hu3DData[arg0->model[0]]; + if (playerData->group == 1) { + ModelData *playerModel = &Hu3DData[object->model[MODEL_ID_PLAYER_PLAYER]]; } } @@ -698,17 +731,17 @@ float lbl_1_data_340 = 3500.0f; float lbl_1_data_344 = 100.0f; float lbl_1_data_348 = -59.0f; -void fn_1_2CC4(omObjData *arg0) +static void M457GameExec(omObjData *object) { - StructBss68Data *sp158[2]; + PlayerData *sp158[2]; omObjData *sp150[2]; - StructBss68Data *sp148[2]; + PlayerData *sp148[2]; s32 sp140[2]; - omObjData *sp138[2]; - StructBss68Data *sp130[2]; + omObjData *playerObjLocal[2]; + PlayerData *playerData[2]; ModelData *temp_r24; ModelData *temp_r27; - ModelData *temp_r28; + ModelData *mushroomModel; ModelData *temp_r29; float spAC; float spA8; @@ -725,7 +758,7 @@ void fn_1_2CC4(omObjData *arg0) float temp_f28; float temp_f29; float var_f31; - s32 var_r23; + s32 invinciblePlayerId; s32 var_r26; s32 var_r25; s32 var_r22; @@ -735,21 +768,21 @@ void fn_1_2CC4(omObjData *arg0) s32 i; for (i = 0; i < 2; i++) { - sp158[i] = lbl_1_bss_68[i]->data; + sp158[i] = playerObj[i]->data; } lbl_1_bss_4++; - switch (lbl_1_bss_5C) { + switch (gameState) { case 1003: temp_f27 = 1800.0 * (1.0 - lbl_1_bss_60 / 30.0); temp_f27 = (temp_f27 < 0.0f) ? 0.0f : temp_f27; - Hu3DModelPosSet(lbl_1_bss_64->model[5], 0.0f, temp_f27, 0.0f); - Hu3DModelAttrReset(lbl_1_bss_64->model[5], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(gameObj->model[MODEL_ID_GAME_KOOPA_KID], 0.0f, temp_f27, 0.0f); + Hu3DModelAttrReset(gameObj->model[MODEL_ID_GAME_KOOPA_KID], HU3D_ATTR_DISPOFF); if (lbl_1_bss_60 == 31) { - HuAudFXPlay(0x5B); + HuAudFXPlay(MSM_SE_KOOPA_KID_DROP); } if (lbl_1_bss_60 >= 31 && lbl_1_bss_60 <= 38) { temp_f24 = 1.0 - (lbl_1_bss_60 - 31) / 7.0; - Hu3DModelRotSet(arg0->model[5], 25.0 * (temp_f24 * 0.5 + temp_f24 * temp_f24 * 0.5), 0.0f, 0.0f); + Hu3DModelRotSet(object->model[MODEL_ID_GAME_KOOPA_KID], 25.0 * (temp_f24 * 0.5 + temp_f24 * temp_f24 * 0.5), 0.0f, 0.0f); } break; case 1002: @@ -757,32 +790,32 @@ void fn_1_2CC4(omObjData *arg0) lbl_1_bss_3C = 0; } if (lbl_1_bss_60 == (VERSION_NTSC ? 20 : 15)) { - espAttrReset(lbl_1_data_5C[16], HU3D_ATTR_SHADOW); + espAttrReset(sprIdTbl[16], HUSPR_ATTR_DISPOFF); } if ((lbl_1_bss_60 >= (VERSION_NTSC ? 20 : 15) && lbl_1_bss_60 <= REFRESH_RATE - 10) || (lbl_1_bss_60 >= 3 * REFRESH_RATE && lbl_1_bss_60 <= (s32)(3.5 * REFRESH_RATE))) { spAC = (lbl_1_bss_60 <= 120) ? (lbl_1_bss_60 - (VERSION_NTSC ? 20 : 15)) / (0.5 * REFRESH_RATE) : (1.0 - (lbl_1_bss_60 - 3 * REFRESH_RATE) / (0.5 * REFRESH_RATE)); - espTPLvlSet(lbl_1_data_5C[16], spAC); + espTPLvlSet(sprIdTbl[16], spAC); } if (lbl_1_bss_60 == (s32)(3.5 * REFRESH_RATE)) { - espAttrSet(lbl_1_data_5C[16], HU3D_ATTR_SHADOW); + espAttrSet(sprIdTbl[16], HUSPR_ATTR_DISPOFF); } break; case 1006: if (lbl_1_bss_60 == 0) { - Hu3DMotionSet(arg0->model[5], arg0->motion[2]); - Hu3DModelAttrReset(arg0->model[5], HU3D_MOTATTR_LOOP); + Hu3DMotionSet(object->model[MODEL_ID_GAME_KOOPA_KID], object->motion[2]); + Hu3DModelAttrReset(object->model[MODEL_ID_GAME_KOOPA_KID], HU3D_MOTATTR_LOOP); } if (lbl_1_bss_60 == 15) { - Hu3DModelAttrSet(arg0->model[5], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrSet(object->model[MODEL_ID_GAME_KOOPA_KID], HU3D_MOTATTR_PAUSE); } break; case 1008: if (lbl_1_bss_60 == 1) { - Hu3DModelAttrReset(arg0->model[5], HU3D_MOTATTR_PAUSE); + Hu3DModelAttrReset(object->model[MODEL_ID_GAME_KOOPA_KID], HU3D_MOTATTR_PAUSE); for (i = 0; i < 16; i++) { - espDispOn(lbl_1_data_5C[i]); + espDispOn(sprIdTbl[i]); } } #if VERSION_NTSC @@ -792,35 +825,35 @@ void fn_1_2CC4(omObjData *arg0) temp_f26 = 0.25 + 1.375 * temp_f26; temp_f23 = 1.0f - (1.0f - temp_f28) * (1.0f - temp_f28); temp_f23 = 2.0f * (1.0f - temp_f28); - espAttrReset(lbl_1_data_5C[17], HU3D_ATTR_SHADOW); + espAttrReset(sprIdTbl[17], HU3D_ATTR_SHADOW); #if VERSION_ENG - espScaleSet(lbl_1_data_5C[17], 0.85 * temp_f26, 0.85 * temp_f26); + espScaleSet(sprIdTbl[17], 0.85 * temp_f26, 0.85 * temp_f26); #else - espScaleSet(lbl_1_data_5C[17], temp_f26, temp_f26); + espScaleSet(sprIdTbl[17], temp_f26, temp_f26); #endif - espTPLvlSet(lbl_1_data_5C[17], (temp_f23 > 1.0f) ? 1.0f : temp_f23); + espTPLvlSet(sprIdTbl[17], (temp_f23 > 1.0f) ? 1.0f : temp_f23); } else { - espAttrSet(lbl_1_data_5C[17], HU3D_ATTR_SHADOW); + espAttrSet(sprIdTbl[17], HUSPR_ATTR_DISPOFF); } #endif for (i = 0; i < 2; i++) { - sp150[i] = lbl_1_bss_68[i]; - sp148[i] = lbl_1_bss_68[i]->data; + sp150[i] = playerObj[i]; + sp148[i] = playerObj[i]->data; } for (i = 0; i < 2; i++) { - sp140[i] = (sp148[1 - i]->unk1C > 0) ? 2 - : (sp148[i]->unk14 == 8) ? 2 - : (sp148[i]->unk14 == 1) ? 1 - : (sp148[i]->unk14 == 9) ? (sp148[i]->unk18 >= 0 ? 3 : 2) - : (sp148[i]->unk14 == 2) ? 4 - : (sp148[i]->unk14 == 7) ? 0 - : -1; + sp140[i] = (sp148[1 - i]->invinceTime > 0) ? 2 + : (sp148[i]->state == 8) ? 2 + : (sp148[i]->state == 1) ? 1 + : (sp148[i]->state == 9) ? (sp148[i]->unk18 >= 0 ? 3 : 2) + : (sp148[i]->state == 2) ? 4 + : (sp148[i]->state == 7) ? 0 + : -1; } if (sp140[0] >= 0 && sp140[1] >= 0 && fabs(sp150[0]->trans.x - sp150[1]->trans.x) < 300.0) { - sp150[0]->trans.x = (sp148[0]->unk1C > 0) ? sp150[0]->trans.x - : (sp148[1]->unk1C > 0) ? (sp150[1]->trans.x - 300.0f) - : ((sp150[0]->trans.x + sp150[1]->trans.x) / 2.0 - 150.0); + sp150[0]->trans.x = (sp148[0]->invinceTime > 0) ? sp150[0]->trans.x + : (sp148[1]->invinceTime > 0) ? (sp150[1]->trans.x - 300.0f) + : ((sp150[0]->trans.x + sp150[1]->trans.x) / 2.0 - 150.0); sp150[0]->trans.x = (sp150[0]->trans.x >= 650.0) ? 650.0 : (sp150[0]->trans.x <= -950.0) ? -950.0 : sp150[0]->trans.x; sp150[1]->trans.x = sp150[0]->trans.x + 300.0f; if (sp140[0] >= 3 || sp140[1] >= 3) { @@ -832,24 +865,24 @@ void fn_1_2CC4(omObjData *arg0) var_r26 = 1 - var_r26; var_r25 = 1 - var_r25; } - sp148[var_r26]->unk14 = 3; - sp148[var_r25]->unk14 = 4; + sp148[var_r26]->state = 3; + sp148[var_r25]->state = 4; break; case 1: - sp148[var_r26]->unk14 = 5; - sp148[var_r25]->unk14 = 6; + sp148[var_r26]->state = 5; + sp148[var_r25]->state = 6; break; case 3: - sp148[var_r26]->unk14 = 12; - sp148[var_r25]->unk14 = 12; + sp148[var_r26]->state = 12; + sp148[var_r25]->state = 12; break; case 2: - sp148[var_r26]->unk14 = 10; - sp148[var_r25]->unk14 = 11; + sp148[var_r26]->state = 10; + sp148[var_r25]->state = 11; break; case 0: - sp148[var_r26]->unk14 = 13; - sp148[var_r25]->unk14 = 14; + sp148[var_r26]->state = 13; + sp148[var_r25]->state = 14; break; } sp148[0]->unk18 = sp148[1]->unk18 = 0; @@ -857,20 +890,20 @@ void fn_1_2CC4(omObjData *arg0) } /* fallthrough */ case 1009: - if (lbl_1_bss_5C != 1008 && lbl_1_bss_40 == 0) { + if (gameState != 1008 && lbl_1_bss_40 == 0) { break; } for (i = 0; i < 2; i++) { - sp138[i] = lbl_1_bss_68[i]; - sp130[i] = lbl_1_bss_68[i]->data; + playerObjLocal[i] = playerObj[i]; + playerData[i] = playerObj[i]->data; } switch (lbl_1_bss_18) { case 0: - if (lbl_1_bss_40 == 0 && lbl_1_bss_18 == 0 && (sp138[0]->trans.x > -150.0f || sp138[1]->trans.x < 150.0f)) { - lbl_1_bss_18 = (-sp138[0]->trans.x < sp138[1]->trans.x ? 1 : 2); - Hu3DModelPosSet(lbl_1_bss_64->model[9], 0.0f, 100.0f, 0.0f); - Hu3DMotionTimeSet(lbl_1_bss_64->model[9], 0.0f); - Hu3DModelAttrReset(lbl_1_bss_64->model[9], HU3D_ATTR_DISPOFF); + if (lbl_1_bss_40 == 0 && lbl_1_bss_18 == 0 && (playerObjLocal[0]->trans.x > -150.0f || playerObjLocal[1]->trans.x < 150.0f)) { + lbl_1_bss_18 = (-playerObjLocal[0]->trans.x < playerObjLocal[1]->trans.x ? 1 : 2); + Hu3DModelPosSet(gameObj->model[9], 0.0f, 100.0f, 0.0f); + Hu3DMotionTimeSet(gameObj->model[9], 0.0f); + Hu3DModelAttrReset(gameObj->model[9], HU3D_ATTR_DISPOFF); if (lbl_1_bss_78[4].unk00 < 3) { lbl_1_bss_78[4].unk04[lbl_1_bss_78[4].unk00] = 0.0f; lbl_1_bss_78[4].unk00++; @@ -882,7 +915,7 @@ void fn_1_2CC4(omObjData *arg0) /* fallthrough */ case 1: case 2: - temp_r27 = &Hu3DData[arg0->model[5]]; + temp_r27 = &Hu3DData[object->model[MODEL_ID_GAME_KOOPA_KID]]; temp_r27->rot.y += (lbl_1_bss_18 == 1 ? 18 : -18); temp_r27->rot.z = (lbl_1_bss_18 == 1 ? -20 : 20); temp_r27->pos.x += 5.130000000000001 * (lbl_1_bss_18 == 1 ? 1 : -1); @@ -896,41 +929,43 @@ void fn_1_2CC4(omObjData *arg0) switch (lbl_1_bss_1C) { case 0: case 2: - lbl_1_data_2B8 -= (lbl_1_bss_18 >= 3 && sp130[0]->unk14 < 16 && sp130[1]->unk14 < 16); + lbl_1_data_2B8 -= (lbl_1_bss_18 >= 3 && playerData[0]->state < 16 && playerData[1]->state < 16); if (lbl_1_data_2B8 != 0) { break; } - Hu3DModelAttrReset(arg0->model[2], HU3D_ATTR_DISPOFF); - Hu3DModelPosSet(arg0->model[2], (lbl_1_bss_1C == 0) ? 0.0 : (2.0 * ((rand8() % 256) / 255.0 - 0.5) * 400.0), 1500.0f, 0.0f); + Hu3DModelAttrReset(object->model[MODEL_ID_GAME_MUSHROOM], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(object->model[MODEL_ID_GAME_MUSHROOM], + (lbl_1_bss_1C == 0) ? 0.0 : (2.0 * ((rand8() % 256) / 255.0 - 0.5) * 400.0), 1500.0f, 0.0f); lbl_1_bss_1C = 1; /* fallthrough */ case 1: - temp_r28 = &Hu3DData[arg0->model[2]]; - temp_r28->pos.y -= 10.0f; - if (temp_r28->pos.y <= 225.0f) { - float sp128[] = { 100000000.0f, 100000000.0f }; - - temp_r28->pos.y = (temp_r28->pos.y < 100.0f) ? 100.0f : temp_r28->pos.y; + mushroomModel = &Hu3DData[object->model[MODEL_ID_GAME_MUSHROOM]]; + // descend mushroom + mushroomModel->pos.y -= 10.0f; + if (mushroomModel->pos.y <= 225.0f) { + float playerDistsToMushroom[] = { 100000000.0f, 100000000.0f }; + // make sure it doesn't fall through the ring + mushroomModel->pos.y = (mushroomModel->pos.y < 100.0f) ? 100.0f : mushroomModel->pos.y; for (i = 0; i < 2; i++) { - if (fabs(sp138[i]->trans.x + (i == 0 ? 40 : -40) - temp_r28->pos.x) < 180.0) { - sp128[i] = fabs(sp138[i]->trans.x + (i == 0 ? 40 : -40) - temp_r28->pos.x); + if (fabs(playerObjLocal[i]->trans.x + (i == 0 ? 40 : -40) - mushroomModel->pos.x) < 180.0) { + playerDistsToMushroom[i] = fabs(playerObjLocal[i]->trans.x + (i == 0 ? 40 : -40) - mushroomModel->pos.x); } } - if (sp128[0] != sp128[1]) { - var_r23 = (sp128[0] < sp128[1]) ? 0 : 1; - Hu3DModelAttrSet(arg0->model[2], HU3D_ATTR_DISPOFF); + if (playerDistsToMushroom[0] != playerDistsToMushroom[1]) { + invinciblePlayerId = (playerDistsToMushroom[0] < playerDistsToMushroom[1]) ? 0 : 1; + Hu3DModelAttrSet(object->model[MODEL_ID_GAME_MUSHROOM], HU3D_ATTR_DISPOFF); lbl_1_bss_1C = 2; lbl_1_data_2B8 = 10 * REFRESH_RATE; - sp130[var_r23]->unk1C = 5 * REFRESH_RATE; - sp130[var_r23]->unk4C = 0; + playerData[invinciblePlayerId]->invinceTime = 5 * REFRESH_RATE; + playerData[invinciblePlayerId]->unk4C = 0; if (lbl_1_bss_78[3].unk00 < 3) { lbl_1_bss_78[3].unk04[lbl_1_bss_78[3].unk00] = 0.0f; lbl_1_bss_78[3].unk00++; } - lbl_1_data_2B4 = HuAudFXPlay(0x7E6); + invincibilitySeNo = HuAudFXPlay(MSM_SE_INVINCIBILITY); } } - if (sp130[0]->unk14 >= 16 || sp130[1]->unk14 >= 16 || lbl_1_bss_40 != 0) { + if (playerData[0]->state >= 16 || playerData[1]->state >= 16 || lbl_1_bss_40 != 0) { lbl_1_bss_1C = 3; lbl_1_data_2B8 = 0; } @@ -941,48 +976,48 @@ void fn_1_2CC4(omObjData *arg0) case 3: lbl_1_data_2B8++; if (lbl_1_data_2B8 < REFRESH_RATE && lbl_1_data_2B8 % 2 == 0) { - Hu3DModelAttrReset(arg0->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrReset(object->model[MODEL_ID_GAME_MUSHROOM], HU3D_ATTR_DISPOFF); } else { - Hu3DModelAttrSet(arg0->model[2], HU3D_ATTR_DISPOFF); + Hu3DModelAttrSet(object->model[MODEL_ID_GAME_MUSHROOM], HU3D_ATTR_DISPOFF); } break; } break; } - switch (lbl_1_bss_5C) { + switch (gameState) { case 1009: if (lbl_1_bss_40 == 0) { if (lbl_1_bss_60 <= 30) { - Hu3DModelPosSet(lbl_1_bss_64->model[5], 0.0f, (30 - lbl_1_bss_60) * 50 * 0.94, 0.0f); - Hu3DModelRotSet(lbl_1_bss_64->model[5], 0.0f, 0.0f, lbl_1_bss_18 == 3 ? -20 : 20); - Hu3DModelAttrReset(lbl_1_bss_64->model[5], HU3D_ATTR_DISPOFF); + Hu3DModelPosSet(gameObj->model[MODEL_ID_GAME_KOOPA_KID], 0.0f, (30 - lbl_1_bss_60) * 50 * 0.94, 0.0f); + Hu3DModelRotSet(gameObj->model[MODEL_ID_GAME_KOOPA_KID], 0.0f, 0.0f, lbl_1_bss_18 == 3 ? -20 : 20); + Hu3DModelAttrReset(gameObj->model[MODEL_ID_GAME_KOOPA_KID], HU3D_ATTR_DISPOFF); } if (lbl_1_bss_60 == 30) { - Hu3DMotionSet(arg0->model[5], arg0->motion[0]); - Hu3DModelAttrReset(arg0->model[5], HU3D_MOTATTR_LOOP); + Hu3DMotionSet(object->model[MODEL_ID_GAME_KOOPA_KID], object->motion[0]); + Hu3DModelAttrReset(object->model[MODEL_ID_GAME_KOOPA_KID], HU3D_MOTATTR_LOOP); } if (lbl_1_bss_60 == 30) { - HuAudFXPlay(0x5B); + HuAudFXPlay(MSM_SE_KOOPA_KID_DROP); } if (lbl_1_bss_60 >= 30 && lbl_1_bss_60 <= 37) { temp_f22 = 1.0 - (lbl_1_bss_60 - 30) / 7.0; - Hu3DModelRotSet(arg0->model[5], 25.0 * (temp_f22 * 0.5 + temp_f22 * temp_f22 * 0.5), 0.0f, 0.0f); + Hu3DModelRotSet(object->model[MODEL_ID_GAME_KOOPA_KID], 25.0 * (temp_f22 * 0.5 + temp_f22 * temp_f22 * 0.5), 0.0f, 0.0f); } } else if (lbl_1_bss_18 == 0) { - Hu3DMotionSet(lbl_1_bss_64->model[5], arg0->motion[0]); - Hu3DModelAttrReset(lbl_1_bss_64->model[5], HU3D_MOTATTR_LOOP); + Hu3DMotionSet(gameObj->model[MODEL_ID_GAME_KOOPA_KID], object->motion[0]); + Hu3DModelAttrReset(gameObj->model[MODEL_ID_GAME_KOOPA_KID], HU3D_MOTATTR_LOOP); } break; case 1010: if (lbl_1_bss_40 == 0) { if (lbl_1_bss_60 == 1) { - Hu3DMotionSet(arg0->model[5], arg0->motion[3]); - Hu3DModelAttrReset(arg0->model[5], HU3D_MOTATTR_LOOP); + Hu3DMotionSet(object->model[MODEL_ID_GAME_KOOPA_KID], object->motion[3]); + Hu3DModelAttrReset(object->model[MODEL_ID_GAME_KOOPA_KID], HU3D_MOTATTR_LOOP); } - temp_r24 = &Hu3DData[arg0->model[5]]; - temp_f20 = (lbl_1_bss_68[lbl_1_bss_44]->trans.x < 0.0f) ? -90 : 90; + temp_r24 = &Hu3DData[object->model[MODEL_ID_GAME_KOOPA_KID]]; + temp_f20 = (playerObj[lbl_1_bss_44]->trans.x < 0.0f) ? -90 : 90; temp_r24->rot.y = temp_f20 + 0.8 * (temp_r24->rot.y - temp_f20); } break; @@ -994,7 +1029,7 @@ void fn_1_2CC4(omObjData *arg0) { 800.0f, 0.0f, 200.0f, 0.0f, -89.0f, 0.0f }, { 1800.0f, 0.0f, 200.0f, 0.0f, -30.0f, 0.0f } }; if (lbl_1_bss_44 != -1 && lbl_1_bss_40 == 0) { - sp160[2][1] = lbl_1_bss_68[lbl_1_bss_44]->trans.x; + sp160[2][1] = playerObj[lbl_1_bss_44]->trans.x; } if (lbl_1_data_33C == -1) { lbl_1_data_33C = 0; @@ -1006,7 +1041,7 @@ void fn_1_2CC4(omObjData *arg0) lbl_1_bss_24 = 1; lbl_1_bss_28 = 0.5f; } - if (lbl_1_bss_5C == 1010 && lbl_1_bss_44 != 2 && lbl_1_bss_60 >= 15 && lbl_1_data_33C == 1) { + if (gameState == 1010 && lbl_1_bss_44 != 2 && lbl_1_bss_60 >= 15 && lbl_1_data_33C == 1) { lbl_1_data_33C = 2; lbl_1_bss_24 = 0; lbl_1_bss_28 = 0.0f; @@ -1037,7 +1072,7 @@ void fn_1_2CC4(omObjData *arg0) CRot.y = var_f31 * sp160[lbl_1_data_33C][5] + lbl_1_bss_34 * (1.0f - var_f31); } } - if (lbl_1_bss_5C == 1001) { + if (gameState == 1001) { var_f21 = 0.0f; temp_f25 = 0.0f; if (lbl_1_data_28C.unk00 % 2 >= 0) { @@ -1060,66 +1095,68 @@ void fn_1_2CC4(omObjData *arg0) Center.x = 0.0f; Center.y = 100.0f + temp_f25; } - if (lbl_1_bss_5C >= 1008) { + if (gameState >= 1008) { for (i = 0; i < 2; i++) { - temp_r29 = &Hu3DData[lbl_1_bss_68[i]->model[0]]; - var_r21 = (sp158[i]->unk08 != -1) ? sp158[i]->unk08 : 8; - var_r20 = (temp_r29->unk_08 == lbl_1_bss_68[i]->motion[4]) ? 0 - : (temp_r29->unk_08 == lbl_1_bss_68[i]->motion[6]) ? 1 - : (temp_r29->unk_08 == lbl_1_bss_68[i]->motion[7]) ? 2 - : -1; - var_r19 = (temp_r29->unk_0C == lbl_1_bss_68[i]->motion[4]) ? 0 - : (temp_r29->unk_0C == lbl_1_bss_68[i]->motion[6]) ? 1 - : (temp_r29->unk_0C == lbl_1_bss_68[i]->motion[7]) ? 2 - : -1; + temp_r29 = &Hu3DData[playerObj[i]->model[MODEL_ID_PLAYER_PLAYER]]; + var_r21 = (sp158[i]->character != CHARACTER_BOWSER) ? sp158[i]->character : 8; + var_r20 = (temp_r29->unk_08 == playerObj[i]->motion[4]) ? 0 + : (temp_r29->unk_08 == playerObj[i]->motion[6]) ? 1 + : (temp_r29->unk_08 == playerObj[i]->motion[7]) ? 2 + : -1; + var_r19 = (temp_r29->unk_0C == playerObj[i]->motion[4]) ? 0 + : (temp_r29->unk_0C == playerObj[i]->motion[6]) ? 1 + : (temp_r29->unk_0C == playerObj[i]->motion[7]) ? 2 + : -1; spA8 = (var_r20 == -1) ? 0.0f : lbl_1_data_1B4[var_r21][var_r20]; spA4 = (var_r19 == -1) ? 0.0f : lbl_1_data_1B4[var_r21][var_r19]; var_f19 = (temp_r29->unk_0C == -1) ? 0.0f : (temp_r29->unk_80 == 0.0f) ? 1.0f : (temp_r29->unk_7C / temp_r29->unk_80); sp158[i]->unk48 = (i == 0 ? 1 : -1) * (spA8 * (1.0f - var_f19) + spA4 * var_f19); - lbl_1_bss_68[i]->trans.x += sp158[i]->unk48; - Hu3DModelPosSet(lbl_1_bss_68[i]->model[0], lbl_1_bss_68[i]->trans.x, lbl_1_bss_68[i]->trans.y, lbl_1_bss_68[i]->trans.z); + playerObj[i]->trans.x += sp158[i]->unk48; + Hu3DModelPosSet(playerObj[i]->model[MODEL_ID_PLAYER_PLAYER], playerObj[i]->trans.x, playerObj[i]->trans.y, playerObj[i]->trans.z); } } } -void fn_1_5500(void) +static void WrestleMesMain(void) { - StructBss68Data *spC[2]; - s16 sp8; - s16 temp_r31; + PlayerData *playerData[2]; + s16 unk; + s16 window; s32 i; - sp8 = 0; + unk = 0; for (i = 0; i < 2; i++) { - spC[i] = lbl_1_bss_68[i]->data; + playerData[i] = playerObj[i]->data; } - HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, REFRESH_RATE); + HuWinComKeyWait(PAD_BUTTON_A, PAD_BUTTON_A, PAD_BUTTON_A, PAD_BUTTON_A, REFRESH_RATE); HuWinComKeyReset(); - temp_r31 = HuWinExCreateStyled(36.0f, 344.0f, 504, 96, 6, 0); - HuWinBGTPLvlSet(temp_r31, 0.8f); - HuWinMesSpeedSet(temp_r31, 1); - HuWinExAnimIn(temp_r31); - HuWinDisablePlayerSet( - temp_r31, 0xF & ((spC[0]->unk0C != -1) ? ~(1 << spC[0]->unk0C) : 0xF) & ((spC[1]->unk0C != -1) ? ~(1 << spC[1]->unk0C) : 0xF)); - HuWinMesSet(temp_r31, MAKE_MESSID(48, 31)); - if ((spC[0]->unk0C == -1 || spC[0]->unk08 == -1) && (spC[1]->unk0C == -1 || spC[1]->unk08 == -1)) { - HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, VERSION_JP ? 48 : REFRESH_RATE); - HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, VERSION_JP ? 90 : REFRESH_RATE); - HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, VERSION_JP ? 72 : REFRESH_RATE); + window = HuWinExCreateStyled(36.0f, 344.0f, 504, 96, 6, 0); + HuWinBGTPLvlSet(window, 0.8f); + HuWinMesSpeedSet(window, 1); + HuWinExAnimIn(window); + HuWinDisablePlayerSet(window, + 0xF & ((playerData[0]->padIdx != PAD_IDX_COM) ? ~(1 << playerData[0]->padIdx) : 0xF) + & ((playerData[1]->padIdx != PAD_IDX_COM) ? ~(1 << playerData[1]->padIdx) : 0xF)); + HuWinMesSet(window, MAKE_MESSID(48, 31)); + if ((playerData[0]->padIdx == PAD_IDX_COM || playerData[0]->character == CHARACTER_BOWSER) + && (playerData[1]->padIdx == PAD_IDX_COM || playerData[1]->character == CHARACTER_BOWSER)) { + HuWinComKeyWait(PAD_BUTTON_A, PAD_BUTTON_A, PAD_BUTTON_A, PAD_BUTTON_A, VERSION_JP ? 48 : REFRESH_RATE); + HuWinComKeyWait(PAD_BUTTON_A, PAD_BUTTON_A, PAD_BUTTON_A, PAD_BUTTON_A, VERSION_JP ? 90 : REFRESH_RATE); + HuWinComKeyWait(PAD_BUTTON_A, PAD_BUTTON_A, PAD_BUTTON_A, PAD_BUTTON_A, VERSION_JP ? 72 : REFRESH_RATE); } - HuWinMesWait(temp_r31); - HuWinExAnimOut(temp_r31); - HuWinExCleanup(temp_r31); - lbl_1_bss_10 = 0; + HuWinMesWait(window); + HuWinExAnimOut(window); + HuWinExCleanup(window); + m457MesEndF = 0; HuPrcEnd(); } -void fn_1_5720(void) +static void ShoveMesMain(void) { float var_f31; s16 temp_r31; WindowData *temp_r30; - StructBss68Data *spC[2]; + PlayerData *spC[2]; #if VERSION_PAL float var_f30; double var_f29; @@ -1135,9 +1172,9 @@ void fn_1_5720(void) sp8 = 0; for (i = 0; i < 2; i++) { - spC[i] = lbl_1_bss_68[i]->data; + spC[i] = playerObj[i]->data; } - HuWinComKeyWait(0x100, 0x100, 0x100, 0x100, REFRESH_RATE); + HuWinComKeyWait(PAD_BUTTON_A, PAD_BUTTON_A, PAD_BUTTON_A, PAD_BUTTON_A, REFRESH_RATE); HuWinComKeyReset(); #if VERSION_NTSC temp_r31 = HuWinCreate(215.0f, 100.0f, 130, 37, 1); @@ -1171,9 +1208,9 @@ void fn_1_5720(void) #if VERSION_PAL temp_r31 = 0; #endif - lbl_1_bss_10 = 0; + m457MesEndF = 0; #if VERSION_PAL - while (lbl_1_bss_5C != 0x3F0) { + while (gameState != 1008) { HuPrcVSleep(); } HuWinMesMaxSizeGet(1, spC_2, MAKE_MESSID(48, 33)); @@ -1201,69 +1238,69 @@ void fn_1_5720(void) HuPrcEnd(); } -void fn_1_59BC(omObjData *arg0) +static void M457Main(omObjData *object) { - StructBss68Data *sp14[2]; + PlayerData *playerData[2]; float spC[2]; s32 sp8; s32 i; for (i = 0; i < 5; i++) { - s32 sp1C[] = { 0x7E1, 0x7E2, 0x7E3, 0x7E4, 0x7E5 }; + s32 shoveSeIdTbl[] = { 0x7E1, 0x7E2, 0x7E3, 0x7E4, 0x7E5 }; if (lbl_1_bss_78[i].unk00 > 3) { lbl_1_bss_78[i].unk00 = 3; } if (lbl_1_bss_78[i].unk00 > 0) { - sp8 = HuAudFXPlay(sp1C[i]); + sp8 = HuAudFXPlay(shoveSeIdTbl[i]); lbl_1_bss_78[i].unk00--; } } for (i = 0; i < 2; i++) { - sp14[i] = lbl_1_bss_68[i]->data; + playerData[i] = playerObj[i]->data; } if (omSysExitReq != 0 && WipeStatGet() == 0) { WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); - arg0->func = fn_1_7AE4; + object->func = M457Exit; } - switch (lbl_1_bss_5C) { + switch (gameState) { case 1000: if (WipeStatGet() == 0) { - lbl_1_bss_5C++; + gameState++; lbl_1_bss_60 = 0; } break; case 1001: lbl_1_bss_60++; if (lbl_1_bss_60 == 60) { - lbl_1_bss_5C = (lbl_1_bss_14 != 0 ? 1002 : 1003); + gameState = (againstBrowserF ? 1002 : 1003); lbl_1_bss_60 = 0; } break; case 1002: lbl_1_bss_60++; if (lbl_1_bss_60 > (s32)(3.5 * REFRESH_RATE)) { - lbl_1_bss_5C++; + gameState++; lbl_1_bss_60 = 0; } break; case 1003: lbl_1_bss_60++; if (lbl_1_bss_60 == 60) { - lbl_1_bss_5C = (lbl_1_bss_14 != 0 ? 1004 : 1005); + gameState = (againstBrowserF ? 1004 : 1005); lbl_1_bss_60 = 0; } break; case 1004: if (lbl_1_bss_60 == 0) { - HuPrcChildCreate(fn_1_5500, 100, 0x2000, 0, HuPrcCurrentGet()); - lbl_1_bss_10 = 1; + HuPrcChildCreate(WrestleMesMain, 100, 0x2000, 0, HuPrcCurrentGet()); + m457MesEndF = 1; lbl_1_bss_60++; } - else if (lbl_1_bss_10 == 0) { + else if (m457MesEndF == 0) { lbl_1_bss_60++; - if (sp14[0]->unk14 == 0) { - lbl_1_bss_5C++; + if (playerData[0]->state == 0) { + gameState++; lbl_1_bss_60 = 0; } } @@ -1271,7 +1308,7 @@ void fn_1_59BC(omObjData *arg0) case 1005: lbl_1_bss_60++; if (lbl_1_bss_60 == (VERSION_NTSC ? 180 : 128)) { - lbl_1_bss_5C++; + gameState++; lbl_1_bss_60 = 0; } break; @@ -1282,14 +1319,14 @@ void fn_1_59BC(omObjData *arg0) HuWinBGTPLvlSet(lbl_1_data_2B0, 0.0f); HuWinMesSpeedSet(lbl_1_data_2B0, 0); HuWinMesSet(lbl_1_data_2B0, MAKE_MESSID(48, 34)); - HuPrcChildCreate(fn_1_5720, 100, 0x2000, 0, HuPrcCurrentGet()); - lbl_1_bss_10 = 1; + HuPrcChildCreate(ShoveMesMain, 100, 0x2000, 0, HuPrcCurrentGet()); + m457MesEndF = 1; lbl_1_bss_60++; } - else if (lbl_1_bss_10 == 0) { + else if (m457MesEndF == 0) { lbl_1_bss_60++; - if (sp14[0]->unk14 == 0) { - lbl_1_bss_5C++; + if (playerData[0]->state == 0) { + gameState++; lbl_1_bss_60 = rand8() * (REFRESH_RATE / 2) % 5 + REFRESH_RATE; } } @@ -1300,43 +1337,43 @@ void fn_1_59BC(omObjData *arg0) case 1007: lbl_1_bss_60 -= 1; if (lbl_1_bss_60 <= 0) { - lbl_1_bss_5C++; + gameState++; lbl_1_bss_60 = 0; #if VERSION_NTSC - HuAudFXPlay(0x3E); + HuAudFXPlay(MSM_SE_BOWSER_HOWL); #endif } break; case 1008: lbl_1_bss_60++; if (lbl_1_bss_44 != -1) { - lbl_1_bss_5C = 1009; + gameState = 1009; lbl_1_bss_60 = 0; break; } - if (lbl_1_data_2A6 == -1 && lbl_1_bss_60 >= 270 * REFRESH_RATE && sp14[0]->unk14 < 16 && sp14[1]->unk14 < 16) { + if (lbl_1_data_2A6 == -1 && lbl_1_bss_60 >= 270 * REFRESH_RATE && playerData[0]->state < 16 && playerData[1]->state < 16) { lbl_1_data_2A6 = MGSeqTimerCreate(30); } if (lbl_1_data_2A6 == -1) { break; } - if (sp14[0]->unk14 < 16 && sp14[1]->unk14 < 16) { + if (playerData[0]->state < 16 && playerData[1]->state < 16) { MGSeqParamSet(lbl_1_data_2A6, 1, (301 * REFRESH_RATE - 1 - lbl_1_bss_60) / REFRESH_RATE); if (lbl_1_bss_60 > 300 * REFRESH_RATE) { MGSeqParamSet(lbl_1_data_2A6, 2, -1); lbl_1_data_2A6 = -1; } } - if (lbl_1_bss_60 > 300 * REFRESH_RATE && sp14[0]->unk14 < 16 && sp14[1]->unk14 < 16) { - lbl_1_bss_5C = 1009; + if (lbl_1_bss_60 > 300 * REFRESH_RATE && playerData[0]->state < 16 && playerData[1]->state < 16) { + gameState = 1009; lbl_1_bss_60 = 0; lbl_1_bss_40 = 1; - sp14[0]->unk14 = sp14[1]->unk14 = 17; - sp14[0]->unk18 = sp14[1]->unk18 = 0; + playerData[0]->state = playerData[1]->state = 17; + playerData[0]->unk18 = playerData[1]->unk18 = 0; MGSeqFinishCreate(); - if (lbl_1_data_2A8 != -1) { - HuAudSeqFadeOut(lbl_1_data_2A8, 100); - lbl_1_data_2A8 = -1; + if (backgroundMusNo != -1) { + HuAudSeqFadeOut(backgroundMusNo, 100); + backgroundMusNo = -1; } } break; @@ -1347,7 +1384,7 @@ void fn_1_59BC(omObjData *arg0) } lbl_1_bss_60++; if (lbl_1_bss_60 >= 2 * REFRESH_RATE) { - lbl_1_bss_5C++; + gameState++; lbl_1_bss_60 = 0; } break; @@ -1355,19 +1392,19 @@ void fn_1_59BC(omObjData *arg0) lbl_1_bss_60++; if (lbl_1_bss_60 == 15) { if (lbl_1_bss_44 != 2) { - if (sp14[lbl_1_bss_44]->unk08 != -1) { + if (playerData[lbl_1_bss_44]->character != CHARACTER_BOWSER) { HuAudSStreamPlay(1); } else { HuAudSStreamPlay(3); } - if (lbl_1_bss_14 != 0) { + if (againstBrowserF) { if (lbl_1_bss_44 == 0) { _SetFlag(FLAG_ID_MAKE(1, 7)); } } else { - GWPlayerCoinWinSet(sp14[lbl_1_bss_44]->unk04, 10); + GWPlayerCoinWinSet(playerData[lbl_1_bss_44]->player, 10); } } else if (lbl_1_bss_44 == 2) { @@ -1375,69 +1412,68 @@ void fn_1_59BC(omObjData *arg0) } } if ((VERSION_NTSC ? 225.0f : 190.0f) < lbl_1_bss_60) { - if (lbl_1_data_2AC != -1) { - HuAudFXStop(lbl_1_data_2AC); - lbl_1_data_2AC = -1; + if (windSeNo != -1) { + HuAudFXStop(windSeNo); + windSeNo = -1; } lbl_1_data_2A4 = -1; WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); - arg0->func = fn_1_7AE4; + object->func = M457Exit; } break; } } -void fn_1_64F8(omObjData *arg0) +static void M457GameSetup(omObjData *object) { - StructBss68Data *sp18[2]; - StructBss68Data *temp_r29; s32 i; for (i = 0; i < 2; i++) { - sp18[i] = lbl_1_bss_68[i]->data; + PlayerData *playerData[2]; + playerData[i] = playerObj[i]->data; } - arg0->model[5] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_BKOOPA, 14)); - Hu3DModelAttrSet(arg0->model[5], HU3D_MOTATTR_LOOP); - arg0->model[6] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M457, 38)); - Hu3DModelAttrSet(arg0->model[6], HU3D_MOTATTR_LOOP); - Hu3DModelHookSet(arg0->model[5], "g007m0-itemhook_r", arg0->model[6]); - Hu3DModelPosSet(arg0->model[5], 0.0f, 0.0f, 0.0f); - Hu3DModelRotSet(arg0->model[5], 15.0f, 0.0f, 0.0f); - arg0->motion[0] = Hu3DJointMotionFile(arg0->model[5], DATA_MAKE_NUM(DATADIR_M457, 39)); - arg0->motion[1] = Hu3DJointMotionFile(arg0->model[5], DATA_MAKE_NUM(DATADIR_M457, 40)); - arg0->motion[2] = Hu3DJointMotionFile(arg0->model[5], DATA_MAKE_NUM(DATADIR_M457, 41)); - arg0->motion[3] = Hu3DJointMotionFile(arg0->model[5], DATA_MAKE_NUM(DATADIR_M457, 42)); - Hu3DMotionSet(arg0->model[5], arg0->motion[0]); - Hu3DModelLayerSet(arg0->model[6], 2); - Hu3DModelLayerSet(arg0->model[5], 2); - Hu3DModelAttrSet(arg0->model[5], HU3D_ATTR_DISPOFF); - Hu3DModelShadowSet(arg0->model[6]); - Hu3DModelShadowSet(arg0->model[5]); - arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M457, 16)); - Hu3DModelAttrSet(arg0->model[0], HU3D_MOTATTR_LOOP); - Hu3DMotionSpeedSet(arg0->model[0], 0.1f); - Hu3DModelLayerSet(arg0->model[0], 1); - arg0->model[1] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M457, 17)); - Hu3DModelAttrSet(arg0->model[1], HU3D_MOTATTR_LOOP); - Hu3DModelShadowMapSet(arg0->model[1]); - Hu3DModelLayerSet(arg0->model[1], 1); - Hu3DModelScaleSet(arg0->model[1], 1.0f, 1.0f, 1.0f); - arg0->model[2] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M457, 21)); - Hu3DModelAttrSet(arg0->model[2], HU3D_MOTATTR_LOOP); - Hu3DModelAttrSet(arg0->model[2], HU3D_ATTR_DISPOFF); - Hu3DModelLayerSet(arg0->model[2], 2); - arg0->model[3] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M457, 19)); - Hu3DModelAttrSet(arg0->model[3], HU3D_MOTATTR_LOOP); - Hu3DModelAttrSet(arg0->model[3], HU3D_ATTR_DISPOFF); - Hu3DModelLayerSet(arg0->model[3], 2); - arg0->model[4] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M457, 20)); - Hu3DModelAttrSet(arg0->model[4], HU3D_MOTATTR_LOOP); - Hu3DModelAttrSet(arg0->model[4], HU3D_ATTR_DISPOFF); - Hu3DModelLayerSet(arg0->model[4], 4); + object->model[MODEL_ID_GAME_KOOPA_KID] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_BKOOPA, 14)); + Hu3DModelAttrSet(object->model[MODEL_ID_GAME_KOOPA_KID], HU3D_MOTATTR_LOOP); + object->model[MODEL_ID_GAME_WAR_FAN] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M457, 38)); + Hu3DModelAttrSet(object->model[MODEL_ID_GAME_WAR_FAN], HU3D_MOTATTR_LOOP); + Hu3DModelHookSet(object->model[MODEL_ID_GAME_KOOPA_KID], "g007m0-itemhook_r", object->model[MODEL_ID_GAME_WAR_FAN]); + Hu3DModelPosSet(object->model[MODEL_ID_GAME_KOOPA_KID], 0.0f, 0.0f, 0.0f); + Hu3DModelRotSet(object->model[MODEL_ID_GAME_KOOPA_KID], 15.0f, 0.0f, 0.0f); + object->motion[0] = Hu3DJointMotionFile(object->model[MODEL_ID_GAME_KOOPA_KID], DATA_MAKE_NUM(DATADIR_M457, 39)); + object->motion[1] = Hu3DJointMotionFile(object->model[MODEL_ID_GAME_KOOPA_KID], DATA_MAKE_NUM(DATADIR_M457, 40)); + object->motion[2] = Hu3DJointMotionFile(object->model[MODEL_ID_GAME_KOOPA_KID], DATA_MAKE_NUM(DATADIR_M457, 41)); + object->motion[3] = Hu3DJointMotionFile(object->model[MODEL_ID_GAME_KOOPA_KID], DATA_MAKE_NUM(DATADIR_M457, 42)); + Hu3DMotionSet(object->model[MODEL_ID_GAME_KOOPA_KID], object->motion[0]); + Hu3DModelLayerSet(object->model[MODEL_ID_GAME_WAR_FAN], 2); + Hu3DModelLayerSet(object->model[MODEL_ID_GAME_KOOPA_KID], 2); + Hu3DModelAttrSet(object->model[MODEL_ID_GAME_KOOPA_KID], HU3D_ATTR_DISPOFF); + Hu3DModelShadowSet(object->model[MODEL_ID_GAME_WAR_FAN]); + Hu3DModelShadowSet(object->model[MODEL_ID_GAME_KOOPA_KID]); + object->model[MODEL_ID_GAME_SKY] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M457, 16)); + Hu3DModelAttrSet(object->model[MODEL_ID_GAME_SKY], HU3D_MOTATTR_LOOP); + Hu3DMotionSpeedSet(object->model[MODEL_ID_GAME_SKY], 0.1f); + Hu3DModelLayerSet(object->model[MODEL_ID_GAME_SKY], 1); + object->model[MODEL_ID_GAME_RING] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M457, 17)); + Hu3DModelAttrSet(object->model[MODEL_ID_GAME_RING], HU3D_MOTATTR_LOOP); + Hu3DModelShadowMapSet(object->model[MODEL_ID_GAME_RING]); + Hu3DModelLayerSet(object->model[MODEL_ID_GAME_RING], 1); + Hu3DModelScaleSet(object->model[MODEL_ID_GAME_RING], 1.0f, 1.0f, 1.0f); + object->model[MODEL_ID_GAME_MUSHROOM] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M457, 21)); + Hu3DModelAttrSet(object->model[MODEL_ID_GAME_MUSHROOM], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(object->model[MODEL_ID_GAME_MUSHROOM], HU3D_ATTR_DISPOFF); + Hu3DModelLayerSet(object->model[MODEL_ID_GAME_MUSHROOM], 2); + object->model[MODEL_ID_GAME_INVINCE_SHINING] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M457, 19)); + Hu3DModelAttrSet(object->model[MODEL_ID_GAME_INVINCE_SHINING], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(object->model[MODEL_ID_GAME_INVINCE_SHINING], HU3D_ATTR_DISPOFF); + Hu3DModelLayerSet(object->model[MODEL_ID_GAME_INVINCE_SHINING], 2); + object->model[MODEL_ID_GAME_INVINCE_SPARKS] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M457, 20)); + Hu3DModelAttrSet(object->model[MODEL_ID_GAME_INVINCE_SPARKS], HU3D_MOTATTR_LOOP); + Hu3DModelAttrSet(object->model[MODEL_ID_GAME_INVINCE_SPARKS], HU3D_ATTR_DISPOFF); + Hu3DModelLayerSet(object->model[MODEL_ID_GAME_INVINCE_SPARKS], 4); for (i = 0; i < 3; i++) { - arg0->model[i + 7] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M457, 18)); - Hu3DModelLayerSet(arg0->model[i + 7], 4); - Hu3DModelAttrSet(arg0->model[i + 7], HU3D_ATTR_DISPOFF); + object->model[i + 7] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_M457, 18)); + Hu3DModelLayerSet(object->model[i + 7], 4); + Hu3DModelAttrSet(object->model[i + 7], HU3D_ATTR_DISPOFF); } for (i = 0; i < 16; i++) { s32 sp10[] = { 106, 469 }; @@ -1445,25 +1481,26 @@ void fn_1_64F8(omObjData *arg0) s32 sp60[] = { 0, 0, -33, -9, 15, 39, 63, -68, 0, 0, -33, -9, 15, 39, 63, -68 }; s32 sp20[] = { 0, 0, -1, -1, -1, -1, -1, -2, 0, 0, -1, -1, -1, -1, -1, -2 }; - if (lbl_1_data_0[i] == DATA_MAKE_NUM(DATADIR_MGCONST, 0)) { - temp_r29 = lbl_1_bss_68[i == 7 ? 0 : 1]->data; - lbl_1_data_5C[i] = espEntry((temp_r29->unk08 == -1) ? DATA_MAKE_NUM(DATADIR_M457, 26) : (lbl_1_data_0[i] + temp_r29->unk08), 0, 0); + if (sprDataNumTbl[i] == DATA_MAKE_NUM(DATADIR_MGCONST, 0)) { + PlayerData *player = playerObj[i == 7 ? 0 : 1]->data; + sprIdTbl[i] + = espEntry((player->character == CHARACTER_BOWSER) ? DATA_MAKE_NUM(DATADIR_M457, 26) : (sprDataNumTbl[i] + player->character), 0, 0); } else { - lbl_1_data_5C[i] = espEntry(lbl_1_data_0[i], 0, 0); + sprIdTbl[i] = espEntry(sprDataNumTbl[i], 0, 0); } - espDrawNoSet(lbl_1_data_5C[i], 0); - espDispOff(lbl_1_data_5C[i]); - espAttrSet(lbl_1_data_5C[i], HU3D_ATTR_DISPOFF); - espBankSet(lbl_1_data_5C[i], 0); - espPriSet(lbl_1_data_5C[i], 128 - i); - espPosSet(lbl_1_data_5C[i], sp60[i] + sp10[i < 8 ? 0 : 1], sp20[i] + sp8[i < 8 ? 0 : 1]); + espDrawNoSet(sprIdTbl[i], 0); + espDispOff(sprIdTbl[i]); + espAttrSet(sprIdTbl[i], HUSPR_ATTR_NOANIM); + espBankSet(sprIdTbl[i], 0); + espPriSet(sprIdTbl[i], 128 - i); + espPosSet(sprIdTbl[i], sp60[i] + sp10[i < 8 ? 0 : 1], sp20[i] + sp8[i < 8 ? 0 : 1]); if ((i >= 8 ? i - 8 : i) != 0) { (void)1; // Required to match. } else { - espTPLvlSet(lbl_1_data_5C[i], 0.5f); - espColorSet(lbl_1_data_5C[i], 0, 0, 0); + espTPLvlSet(sprIdTbl[i], 0.5f); + espColorSet(sprIdTbl[i], 0, 0, 0); } } for (i = 16; i < 23; i++) { @@ -1471,116 +1508,118 @@ void fn_1_64F8(omObjData *arg0) s32 spFC[23] = { 288, 288 }; s32 spA0[23] = { 240, 240 }; - lbl_1_data_5C[i] = espEntry(lbl_1_data_0[i], 0, 0); - espDrawNoSet(lbl_1_data_5C[i], 0); - espAttrSet(lbl_1_data_5C[i], HU3D_ATTR_DISPOFF | HU3D_ATTR_SHADOW); - espBankSet(lbl_1_data_5C[i], 0); - espPriSet(lbl_1_data_5C[i], 128 - i); - espPosSet(lbl_1_data_5C[i], spFC[temp_r28], spA0[temp_r28]); - espTPLvlSet(lbl_1_data_5C[i], 1.0f); + sprIdTbl[i] = espEntry(sprDataNumTbl[i], 0, 0); + espDrawNoSet(sprIdTbl[i], 0); + espAttrSet(sprIdTbl[i], HUSPR_ATTR_NOANIM | HUSPR_ATTR_DISPOFF); + espBankSet(sprIdTbl[i], 0); + espPriSet(sprIdTbl[i], 128 - i); + espPosSet(sprIdTbl[i], spFC[temp_r28], spA0[temp_r28]); + espTPLvlSet(sprIdTbl[i], 1.0f); } - arg0->func = fn_1_2CC4; + object->func = M457GameExec; } -void fn_1_6FB0(omObjData *arg0) +static void M457PlayerSetup(omObjData *object) { - s32 sp14; - StructBss68Data *temp_r31; - StructBss68Data *sp10; + s32 opponentPlayerGroup; + PlayerData *playerData; + PlayerData *opponentData; s32 i; - temp_r31 = arg0->data; - sp10 = lbl_1_bss_68[1 - arg0->work[0]]->data; - memset(temp_r31, 0, sizeof(*temp_r31)); - temp_r31->unk00 = arg0->work[0]; - temp_r31->unk04 = (GWPlayerCfg[0].group == temp_r31->unk00) ? 0 - : (GWPlayerCfg[1].group == temp_r31->unk00) ? 1 - : (GWPlayerCfg[2].group == temp_r31->unk00) ? 2 - : (GWPlayerCfg[3].group == temp_r31->unk00) ? 3 - : 4; - sp14 = (GWPlayerCfg[0].group == 1 - temp_r31->unk00) ? 0 - : (GWPlayerCfg[1].group == 1 - temp_r31->unk00) ? 1 - : (GWPlayerCfg[2].group == 1 - temp_r31->unk00) ? 2 - : (GWPlayerCfg[3].group == 1 - temp_r31->unk00) ? 3 - : 4; - if (temp_r31->unk04 == 4) { + playerData = object->data; + opponentData = playerObj[1 - object->work[0]]->data; + memset(playerData, 0, sizeof(*playerData)); + playerData->group = object->work[0]; + playerData->player = (GWPlayerCfg[0].group == playerData->group) ? 0 + : (GWPlayerCfg[1].group == playerData->group) ? 1 + : (GWPlayerCfg[2].group == playerData->group) ? 2 + : (GWPlayerCfg[3].group == playerData->group) ? 3 + : 4; + opponentPlayerGroup = (GWPlayerCfg[0].group == 1 - playerData->group) ? 0 + : (GWPlayerCfg[1].group == 1 - playerData->group) ? 1 + : (GWPlayerCfg[2].group == 1 - playerData->group) ? 2 + : (GWPlayerCfg[3].group == 1 - playerData->group) ? 3 + : 4; + if (playerData->player == 4) { OSReport("m457:wrong player group\n"); - temp_r31->unk04 = temp_r31->unk00; + playerData->player = playerData->group; } - if (temp_r31->unk00 == 1 && lbl_1_bss_14 != 0) { - temp_r31->unk08 = -1; - temp_r31->unk0C = -1; - temp_r31->unk04 = -1; - temp_r31->unk10 = 1; + if (playerData->group == 1 && againstBrowserF) { + playerData->character = -1; + playerData->padIdx = PAD_IDX_COM; + playerData->player = -1; + playerData->diff = 1; } else { - temp_r31->unk08 = GWPlayerCfg[temp_r31->unk04].character; - temp_r31->unk0C = (temp_r31->unk08 == -1 || GWPlayerCfg[temp_r31->unk04].iscom) ? -1 : GWPlayerCfg[temp_r31->unk04].pad_idx; - temp_r31->unk10 = (temp_r31->unk0C != -1) ? 0 : GWPlayerCfg[temp_r31->unk04].diff; + playerData->character = GWPlayerCfg[playerData->player].character; + playerData->padIdx = (playerData->character == CHARACTER_BOWSER || GWPlayerCfg[playerData->player].iscom) + ? PAD_IDX_COM + : GWPlayerCfg[playerData->player].pad_idx; + playerData->diff = (playerData->padIdx != PAD_IDX_COM) ? 0 : GWPlayerCfg[playerData->player].diff; } - temp_r31->unk14 = 0; - temp_r31->unk30 = 100; - temp_r31->unk34 = 0; - temp_r31->unk38 = -1; - temp_r31->unk2C = -1; - temp_r31->unk3C = 10000; - temp_r31->unk40 = 1; - temp_r31->unk44 = -1; - if (temp_r31->unk08 != -1) { - arg0->model[0] = CharModelCreate(temp_r31->unk08, 1); + playerData->state = 0; + playerData->stamina = 100; + playerData->unk34 = 0; + playerData->prevTrig = -1; + playerData->unk2C = -1; + playerData->unk3C = 10000; + playerData->unk40 = 1; + playerData->unk44 = -1; + if (playerData->character != CHARACTER_BOWSER) { + object->model[MODEL_ID_PLAYER_PLAYER] = CharModelCreate(playerData->character, 1); } else { - arg0->model[0] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_BKOOPA, 7)); + object->model[MODEL_ID_PLAYER_PLAYER] = Hu3DModelCreateFile(DATA_MAKE_NUM(DATADIR_BKOOPA, 7)); } - omSetTra(arg0, 0.0f, temp_r31->unk00 == 0 ? 0 : 300, 0.0f); - if (temp_r31->unk08 != -1) { - omSetSca(arg0, 2.5f, 2.5f, 2.5f); + omSetTra(object, 0.0f, playerData->group == 0 ? 0 : 300, 0.0f); + if (playerData->character != CHARACTER_BOWSER) { + omSetSca(object, 2.5f, 2.5f, 2.5f); } else { - omSetSca(arg0, 2.0f, 2.0f, 2.0f); + omSetSca(object, 2.0f, 2.0f, 2.0f); } for (i = 0; i < 12; i++) { - if (temp_r31->unk08 != -1) { - arg0->motion[i] = CharModelMotionCreate(temp_r31->unk08, lbl_1_data_B8[i] + (lbl_1_data_E8[i] != 0 ? temp_r31->unk08 : 0)); + if (playerData->character != CHARACTER_BOWSER) { + object->motion[i] = CharModelMotionCreate(playerData->character, lbl_1_data_B8[i] + (lbl_1_data_E8[i] != 0 ? playerData->character : 0)); } else if (lbl_1_data_118[i] != 0) { - arg0->motion[i] = Hu3DJointMotionFile(arg0->model[0], lbl_1_data_118[i]); + object->motion[i] = Hu3DJointMotionFile(object->model[MODEL_ID_PLAYER_PLAYER], lbl_1_data_118[i]); } } - Hu3DMotionSet(arg0->model[0], arg0->motion[temp_r31->unk40]); - Hu3DMotionTimeSet(arg0->model[0], 10.0f); - Hu3DModelAttrReset(arg0->model[0], HU3D_MOTATTR_LOOP); - Hu3DModelShadowSet(arg0->model[0]); - Hu3DModelAttrSet(arg0->model[0], HU3D_ATTR_DISPOFF); - Hu3DModelLayerSet(arg0->model[0], 3); + Hu3DMotionSet(object->model[MODEL_ID_PLAYER_PLAYER], object->motion[playerData->unk40]); + Hu3DMotionTimeSet(object->model[MODEL_ID_PLAYER_PLAYER], 10.0f); + Hu3DModelAttrReset(object->model[MODEL_ID_PLAYER_PLAYER], HU3D_MOTATTR_LOOP); + Hu3DModelShadowSet(object->model[MODEL_ID_PLAYER_PLAYER]); + Hu3DModelAttrSet(object->model[MODEL_ID_PLAYER_PLAYER], HU3D_ATTR_DISPOFF); + Hu3DModelLayerSet(object->model[MODEL_ID_PLAYER_PLAYER], 3); CharModelLayerSetAll2(4); - arg0->rot.y = temp_r31->unk00 * 180 + 90; - arg0->trans.x = (temp_r31->unk00 == 0 ? -1 : 1) * 300; - arg0->func = fn_1_46C; + object->rot.y = playerData->group * 180 + 90; + object->trans.x = (playerData->group == 0 ? -1 : 1) * 300; + object->func = M457PlayerExec; } -void fn_1_75A4(omObjData *arg0) +static void M457Setup(omObjData *object) { - lbl_1_bss_5C = 1000; + gameState = 1000; lbl_1_bss_60 = 0; lbl_1_bss_54 = 0; lbl_1_bss_50 = 0; - if (lbl_1_data_2A8 == -1) { - lbl_1_data_2A8 = HuAudSeqPlay(0x4D); + if (backgroundMusNo == -1) { + backgroundMusNo = HuAudSeqPlay(MSM_MUS_BACKGROUND); } - lbl_1_data_2AC = HuAudFXPlay(0x6D7); + windSeNo = HuAudFXPlay(MSM_SE_WIND); WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); - arg0->func = fn_1_59BC; + object->func = M457Main; } void ObjectSetup(void) { - omObjData *var_r30; + omObjData *object; s32 i; OSReport("******* M457 ObjectSetup *********\n"); - lbl_1_bss_4C = omInitObjMan(600, 0x2000); - omGameSysInit(lbl_1_bss_4C); + objman = omInitObjMan(600, 0x2000); + omGameSysInit(objman); Hu3DCameraCreate(1); Hu3DCameraPerspectiveSet(1, 30.0f, 20.0f, 25000.0f, 1.2f); Hu3DCameraViewportSet(1, 0.0f, 0.0f, 640.0f, 480.0f, 0.0f, 1.0f); @@ -1592,55 +1631,55 @@ void ObjectSetup(void) CRot.y = 0.0f; CRot.z = 0.0f; { - Vec sp3C = { 0.0f, 0.0f, 0.0f }; - Vec sp30 = { 0.25f, -0.75f, -0.45f }; - GXColor sp8 = { 0xFF, 0xFF, 0xFF, 0xFF }; + Vec pos = { 0.0f, 0.0f, 0.0f }; + Vec destination = { 0.25f, -0.75f, -0.45f }; + GXColor color = { 0xFF, 0xFF, 0xFF, 0xFF }; - lbl_1_bss_48 = Hu3DGLightCreateV(&sp3C, &sp30, &sp8); + lightId = Hu3DGLightCreateV(&pos, &destination, &color); } - Hu3DGLightStaticSet(lbl_1_bss_48, 1); - Hu3DGLightInfinitytSet(lbl_1_bss_48); + Hu3DGLightStaticSet(lightId, 1); + Hu3DGLightInfinitytSet(lightId); { - Vec sp24; - Vec sp18; - Vec spC; + Vec camPos; + Vec camUp; + Vec camTarget; - sp24.x = 0.0f; - sp24.y = 10000.0f; - sp24.z = 0.0f; - sp18.x = 0.0f; - sp18.y = 1.0f; - sp18.z = 0.0f; - spC.x = 0.0f; - spC.y = 0.0f; - spC.z = 0.5f; + camPos.x = 0.0f; + camPos.y = 10000.0f; + camPos.z = 0.0f; + camUp.x = 0.0f; + camUp.y = 1.0f; + camUp.z = 0.0f; + camTarget.x = 0.0f; + camTarget.y = 0.0f; + camTarget.z = 0.5f; Hu3DShadowCreate(12.0f, 9000.0f, 10010.0f); Hu3DShadowTPLvlSet(0.625f); - Hu3DShadowPosSet(&sp24, &sp18, &spC); + Hu3DShadowPosSet(&camPos, &camUp, &camTarget); } Hu3DShadowSizeSet(224); lbl_1_data_2A4 = -1; lbl_1_bss_44 = -1; - lbl_1_bss_14 = (_CheckFlag(FLAG_ID_MAKE(1, 0)) != 0); + againstBrowserF = _CheckFlag(FLAG_ID_MAKE(1, 0)) != 0; HuWinInit(1); - lbl_1_bss_64 = omAddObjEx(lbl_1_bss_4C, 101, 10, 4, 1, fn_1_64F8); + gameObj = omAddObjEx(objman, 101, 10, 4, 1, M457GameSetup); for (i = 0; i < 2; i++) { - var_r30 = lbl_1_bss_68[i] = omAddObjEx(lbl_1_bss_4C, 100, 1, 12, 0, fn_1_6FB0); - var_r30->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(StructBss68Data), MEMORY_DEFAULT_NUM); - var_r30->work[0] = i; + object = playerObj[i] = omAddObjEx(objman, 100, 1, 12, 0, M457PlayerSetup); + object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(PlayerData), MEMORY_DEFAULT_NUM); + object->work[0] = i; } - lbl_1_bss_70 = omAddObjEx(lbl_1_bss_4C, 0x7FDA, 0, 0, -1, omOutView); - lbl_1_bss_74 = omAddObjEx(lbl_1_bss_4C, 103, 0, 0, -1, fn_1_75A4); + omViewObj = omAddObjEx(objman, 0x7FDA, 0, 0, -1, omOutView); + mainObj = omAddObjEx(objman, 103, 0, 0, -1, M457Setup); } -void fn_1_7AE4(omObjData *arg0) +static void M457Exit(omObjData *object) { - StructBss68Data *sp8; + PlayerData *playerData; s32 i; if (WipeStatGet() == 0) { for (i = 0; i < 2; i++) { - sp8 = lbl_1_bss_68[i]->data; + playerData = playerObj[i]->data; } if (lbl_1_data_2A4 >= 0) { MGSeqKill(lbl_1_data_2A4); diff --git a/src/REL/mgmodedll/tictactoe.c b/src/REL/mgmodedll/tictactoe.c index 4b460958..4aec6c7e 100644 --- a/src/REL/mgmodedll/tictactoe.c +++ b/src/REL/mgmodedll/tictactoe.c @@ -9,7 +9,6 @@ #include "game/saveload.h" #include "game/wipe.h" - #include "ext_math.h" s16 lbl_1_bss_3B8; @@ -316,8 +315,8 @@ void fn_1_14CFC(void) } } if (lbl_1_bss_3A8 == 0) { - temp_r30 = HuSprGrpCreate(25); - lbl_1_bss_3A8 = temp_r30; + + lbl_1_bss_3A8 = temp_r30 = HuSprGrpCreate(25); temp_r28 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 84), MEMORY_DEFAULT_NUM)); temp_r29 = HuSprCreate(temp_r28, 200, 0); HuSprGrpMemberSet(temp_r30, 0, temp_r29); @@ -412,8 +411,8 @@ void fn_1_14CFC(void) HuSprTPLvlSet(temp_r30, 24, 0); } if (lbl_1_bss_3AA == 0) { - temp_r30 = HuSprGrpCreate(10); - lbl_1_bss_3AA = temp_r30; + + lbl_1_bss_3AA = temp_r30 = HuSprGrpCreate(10); temp_r28 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 15), MEMORY_DEFAULT_NUM)); temp_r29 = HuSprCreate(temp_r28, 200, 0); HuSprGrpMemberSet(temp_r30, 0, temp_r29); @@ -423,9 +422,8 @@ void fn_1_14CFC(void) HuSprGrpMemberSet(temp_r30, 1, temp_r29); HuSprPosSet(temp_r30, 1, 0, 0); for (temp_r31 = 0; temp_r31 < 4; temp_r31++) { - temp_r20 = GWPlayerCfg[lbl_1_bss_2C1C[temp_r31]].character; - lbl_1_bss_2C24[temp_r31] = temp_r20; - temp_r28 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 16) + (s16)temp_r20, MEMORY_DEFAULT_NUM)); + temp_r20 = lbl_1_bss_2C24[temp_r31] = GWPlayerCfg[lbl_1_bss_2C1C[temp_r31]].character; + temp_r28 = HuSprAnimRead(HuDataReadNum(DATA_MAKE_NUM(DATADIR_MGMODE, 16) + temp_r20, MEMORY_DEFAULT_NUM)); temp_r29 = HuSprCreate(temp_r28, 190, 0); HuSprGrpMemberSet(temp_r30, (temp_r31 * 2) + 2, temp_r29); HuSprPosSet(temp_r30, (temp_r31 * 2) + 2, lbl_1_data_19C[temp_r31], 0); diff --git a/src/REL/option/state.c b/src/REL/option/state.c index 9e6b3e30..edbcdcd6 100755 --- a/src/REL/option/state.c +++ b/src/REL/option/state.c @@ -13,15 +13,15 @@ typedef struct { } StateWork; /* size = 0x0C */ typedef struct { - /* 0x00 */ Vec src; + /* 0x00 */ Vec pos; /* 0x0C */ Vec dest; /* 0x18 */ GXColor color; } UnkLightDataStruct; /* size = 0x1C */ // TODO same as m446Dll::unkStruct10 and present::UnkPresentStruct3 typedef struct UnkShadowDataStruct { - /* 0x00 */ Vec pos; - /* 0x0C */ Vec up; - /* 0x18 */ Vec target; + /* 0x00 */ Vec camPos; + /* 0x0C */ Vec camUp; + /* 0x18 */ Vec camTarget; } UnkShadowDataStruct; /* size = 0x24 */ static void ExecState(omObjData *object); @@ -51,12 +51,12 @@ omObjData *OptionStateCreate(void) optionRoom = OptionRoomCreate(); work->window = OptionWinCreate(0); Hu3DLighInit(); - work->light = Hu3DGLightCreateV(&lightTbl.src, &lightTbl.dest, &lightTbl.color); + work->light = Hu3DGLightCreateV(&lightTbl.pos, &lightTbl.dest, &lightTbl.color); Hu3DGLightInfinitytSet(work->light); lightData = &Hu3DGlobalLight[work->light]; Hu3DShadowCreate(30.0f, 20.0f, 5000.0f); Hu3DShadowTPLvlSet(0.45f); - Hu3DShadowPosSet(&shadowPosTbl.pos, &shadowPosTbl.up, &shadowPosTbl.target); + Hu3DShadowPosSet(&shadowPosTbl.camPos, &shadowPosTbl.camUp, &shadowPosTbl.camTarget); return object; } diff --git a/src/REL/present/camera.c b/src/REL/present/camera.c index 3a15ac79..9be75849 100644 --- a/src/REL/present/camera.c +++ b/src/REL/present/camera.c @@ -113,16 +113,16 @@ float PresentCameraZoomGet(omObjData *object) { CameraWork *work = object->data; - float var_f31 = work->zoom; - return var_f31; + float zoom = work->zoom; + return zoom; } float PresentCameraRotGet(omObjData *object) { CameraWork *work = object->data; - float var_f31 = work->rot; - return var_f31; + float rot = work->rot; + return rot; } void PresentCameraPosGet(omObjData *object, float *x, float *y, float *z) diff --git a/src/REL/present/init.c b/src/REL/present/init.c index 2b2d57a5..3217d652 100644 --- a/src/REL/present/init.c +++ b/src/REL/present/init.c @@ -144,20 +144,20 @@ static void FadeModel(void) BOOL PresentPadCheck(u16 btn) { - u32 var_r31 = HuPadBtnDown[0] & btn; - return var_r31 != 0; + u32 pressed = HuPadBtnDown[0] & btn; + return pressed != 0; } BOOL PresentPadDStkRepCheck(u16 dir) { - u32 var_r31 = HuPadDStkRep[0] & dir; - return var_r31 != 0; + u32 pressed = HuPadDStkRep[0] & dir; + return pressed != 0; } BOOL PresentPadDStkCheck(u16 dir) { - u32 var_r31 = HuPadDStk[0] & dir; - return var_r31 != 0; + u32 pressed = HuPadDStk[0] & dir; + return pressed != 0; } static void SceneMain(omObjData *object) diff --git a/src/REL/present/main.c b/src/REL/present/main.c index 93ef8386..7fafc79b 100644 --- a/src/REL/present/main.c +++ b/src/REL/present/main.c @@ -13,14 +13,14 @@ typedef struct StateWork { } StateWork; /* size = 0x08 */ typedef struct UnkShadowDataStruct { - /* 0x00 */ Vec pos; - /* 0x0C */ Vec up; - /* 0x18 */ Vec target; + /* 0x00 */ Vec camPos; + /* 0x0C */ Vec camUp; + /* 0x18 */ Vec camTarget; } UnkShadowDataStruct; /* size = 0x24 */ omObjData *presentGuide; -static UnkShadowDataStruct shadowPosTbl = { +static UnkShadowDataStruct shadow = { { 0.0f, 3000.0f, 1.0f }, { 0.0f, 1.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, @@ -45,7 +45,7 @@ omObjData *PresentStateCreate(void) work->window = PresentWinCreate(0); Hu3DShadowCreate(30.0f, 20.0f, 5000.0f); Hu3DShadowTPLvlSet(0.45f); - Hu3DShadowPosSet(&shadowPosTbl.pos, &shadowPosTbl.up, &shadowPosTbl.target); + Hu3DShadowPosSet(&shadow.camPos, &shadow.camUp, &shadow.camTarget); if (omovlevtno > 0) { OSReport("*** PRESENTROOM ( PRESENT GET MODE ) ***\n"); diff --git a/src/REL/present/present.c b/src/REL/present/present.c index b30abfbc..b6d90dfc 100644 --- a/src/REL/present/present.c +++ b/src/REL/present/present.c @@ -61,7 +61,7 @@ typedef struct PresentWork { } PresentWork; /* size = 0x364 */ typedef struct UnkLightDataStruct { - /* 0x00 */ Vec src; + /* 0x00 */ Vec pos; /* 0x0C */ Vec dest; /* 0x18 */ GXColor color; } UnkLightDataStruct; /* size = 0x1C */ // same as option::state::UnkLightDataStruct @@ -357,7 +357,7 @@ omObjData *PresentCreate(void) { s32 i; s32 j; - s16 light; + s16 lightId; LightData *lightData; omObjData *object = omAddObjEx(presentObjMan, 1003, 0, 0, 1, NULL); @@ -382,10 +382,10 @@ omObjData *PresentCreate(void) work->presentUnlockedF[PRESENT_MAX - 1] = TRUE; } Hu3DLighInit(); - light = Hu3DGLightCreateV(&lightTbl.src, &lightTbl.dest, &lightTbl.color); - Hu3DGLightInfinitytSet(light); - Hu3DGLightStaticSet(light, 1); - lightData = &Hu3DGlobalLight[light]; + lightId = Hu3DGLightCreateV(&lightTbl.pos, &lightTbl.dest, &lightTbl.color); + Hu3DGLightInfinitytSet(lightId); + Hu3DGLightStaticSet(lightId, 1); + lightData = &Hu3DGlobalLight[lightId]; lightData->unk_00 |= 0x8000; for (i = 0; i < PRESENT_MDL_MAX; i++) { @@ -410,7 +410,7 @@ omObjData *PresentCreate(void) RotateCamera(object); PresentExecModeSet(object, PRESENT_MODE_NONE); - (void)light; + (void)lightId; return object; }