summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bossCaptainBowser.yaml1
-rw-r--r--kamek_pal.x2
-rw-r--r--levelspecial.yaml11
-rw-r--r--src/bossPlayerClown.cpp2
-rw-r--r--src/levelspecial.cpp18
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;
}