diff options
-rw-r--r-- | bossCaptainBowser.yaml | 1 | ||||
-rw-r--r-- | kamek_pal.x | 2 | ||||
-rw-r--r-- | levelspecial.yaml | 11 | ||||
-rw-r--r-- | src/bossPlayerClown.cpp | 2 | ||||
-rw-r--r-- | src/levelspecial.cpp | 18 |
5 files changed, 28 insertions, 6 deletions
diff --git a/bossCaptainBowser.yaml b/bossCaptainBowser.yaml index 5fb4a63..7c39704 100644 --- a/bossCaptainBowser.yaml +++ b/bossCaptainBowser.yaml @@ -8,7 +8,6 @@ source_files: [../src/bossPlayerClown.cpp, ../src/bossCaptainBowser.cpp, ../src/ hooks: - ################################################ # HOOKS FOR CAPTAIN BOWSER ################################################ diff --git a/kamek_pal.x b/kamek_pal.x index f0e75db..b2f1c5f 100644 --- a/kamek_pal.x +++ b/kamek_pal.x @@ -89,6 +89,8 @@ SECTIONS { dAcPy_vf3F8 = 0x80146310; dAcPy_vf3FC = 0x80146A10; + dAcPy_vf294 = 0x80047390; + /* Back to other shit I didn't want to scroll for */ Cloud_death_execute = 0x809DDB80; diff --git a/levelspecial.yaml b/levelspecial.yaml index cc8d33a..a156960 100644 --- a/levelspecial.yaml +++ b/levelspecial.yaml @@ -14,12 +14,19 @@ hooks: target_func: 'LevelSpecial_Execute(LevelSpecial *)'
- name: ResetAfterLevel
- type: branch_insn + type: branch_insn
branch_type: b
src_addr_pal: 0x809259E0
target_func: 'ResetAfterLevel(void)'
- +
- name: LevelSpecial_MemFix
type: patch
addr_pal: 0x808AC778
data: '38600400'
+
+ - name: MarioStateChanger
+ type: add_func_pointer
+ src_addr_pal: 0x803259FC
+ target_func: 'MarioStateChanger(void *, dStateBase_c *, unsigned int)'
+
+
diff --git a/src/bossPlayerClown.cpp b/src/bossPlayerClown.cpp index c760214..c213872 100644 --- a/src/bossPlayerClown.cpp +++ b/src/bossPlayerClown.cpp @@ -21,8 +21,6 @@ extern "C" int PClownCarDraw(dEn_c *clown); extern "C" void PClownCarMove(dEn_c *clown); - - const char* PCCarcNameList [] = { "koopaJr_clown_ply", NULL diff --git a/src/levelspecial.cpp b/src/levelspecial.cpp index 25e2130..35dc05a 100644 --- a/src/levelspecial.cpp +++ b/src/levelspecial.cpp @@ -47,7 +47,7 @@ extern u32 GameTimer; float GlobalSizeFloatModifications [] = {1, 0.25, 0.5, 0.75, 1.25, 1.5, 1.75, 2, 2.5, 3, 4, 5, 6, 7, 8, 10 }; float GlobalRiderFloatModifications [] = {1, 0.6, 0.7, 0.9, 1, 1, 1, 1.1, 1.25, 1.5, 2, 2.5, 3, 3.5, 4, 5}; - +bool NoMichaelBuble = false; void LevelSpecial_Update(LevelSpecial *self); bool ResetAfterLevel(); @@ -58,6 +58,14 @@ bool ResetAfterLevel(); fBase_c *FindActorByID(u32 id); +extern "C" void dAcPy_vf294(void *Mario, dStateBase_c *state, u32 unk); +void MarioStateChanger(void *Mario, dStateBase_c *state, u32 unk) { + OSReport("State: %p, %s", state, state->getName()); + + if ((strcmp(state->getName(), "dAcPy_c::StateID_Balloon") == 0) && (NoMichaelBuble)) { return; } + + dAcPy_vf294(Mario, state, unk); +} bool ResetAfterLevel(void) { // TimeStopFlag = 0; @@ -179,6 +187,10 @@ void LevelSpecial_Update(LevelSpecial *self) { ZOrderOn = 1; break; + case 8: + NoMichaelBuble = true; + break; + default: break; } @@ -230,6 +242,10 @@ void LevelSpecial_Update(LevelSpecial *self) { ZOrderOn = 0; break; + case 8: + NoMichaelBuble = false; + break; + default: break; } |