summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xinclude/game.h38
-rw-r--r--kamek_pal.x2
-rw-r--r--src/bossFuzzyBear.cpp25
3 files changed, 57 insertions, 8 deletions
diff --git a/include/game.h b/include/game.h
index b22631f..cca0fac 100755
--- a/include/game.h
+++ b/include/game.h
@@ -344,6 +344,44 @@ public:
};
+class dStage32C_c {
+public:
+ dStage32C_c();
+
+ u32 bulletData1;
+ u32 bulletData2;
+ u8 enemyCombos;
+ u32 somethingAboutHatenaBalloons;
+ u8 redCoinCount;
+ u32 _124[4];
+ u32 greenCoinsCollected;
+ u32 hasKilledEnemyThisTick_maybe;
+ u16 booID;
+ u16 _13E;
+ u32 _bigBooID;
+ u16 bulletBillCount;
+ u16 _14A;
+ u32 bombCount;
+ u32 goombaCount;
+ u32 enemyKillCounter;
+ u32 another_counter;
+ u32 freezeMarioBossFlag;
+ u32 aboutMortonBigPile;
+ u32 somethingAboutPunchingChainlink;
+ u32 currentBigHanaMgr;
+ u32 _16C;
+ u8 penguinCount;
+ u8 _171[3];
+ u32 pokeyTimer;
+
+ void setup();
+
+ static dStage32C_c *instance;
+};
+
+
+
+
// No idea if these actually exist or not
class mRect {
public:
diff --git a/kamek_pal.x b/kamek_pal.x
index 576f974..05038e3 100644
--- a/kamek_pal.x
+++ b/kamek_pal.x
@@ -51,6 +51,8 @@ SECTIONS {
StopBGMMusic = 0x807DB420;
StartBGMMusic = 0x807DB430;
+ instance__8Stage32C = 0x8043A1F0;
+ setup__8Stage32CFv = 0x800A7450;
/* Mr Sun Related */
diff --git a/src/bossFuzzyBear.cpp b/src/bossFuzzyBear.cpp
index 4e11f29..1c9ab89 100644
--- a/src/bossFuzzyBear.cpp
+++ b/src/bossFuzzyBear.cpp
@@ -7,6 +7,15 @@
#include "player.h"
+class daKameckDemo : public dEn_c {
+
+public:
+ USING_STATES(daKameckDemo);
+ REF_NINTENDO_STATE(DemoWait);
+ REF_NINTENDO_STATE(DemoSt);
+ REF_NINTENDO_STATE(DemoSt2);
+};
+
class daFuzzyBear_c : public dEn_c {
int onCreate();
int onDelete();
@@ -337,25 +346,22 @@ void daFuzzyBear_c::beginState_Grow() {
StopBGMMusic();
+ dStage32C_c::instance->freezeMarioBossFlag = 1;
// Store 1 to PointerToStage32C @ 0x15C - This should freeze Mario - Unimplemented because I don't know how to ref the class
Vec pos = (Vec){this->pos.x+40.0, this->pos.y + 80.0, 3564.0};
S16Vec rot = (S16Vec){0, 0, 0};
- Kameck = (dEn_c*)createChild(KAMECK_FOR_CASTLE_DEMO, (dStageActor_c*)this, 0, &pos, &rot, 0);
- USING_STATES(dEn_c);
- REF_NINTENDO_STATE(DemoWait);
- REF_NINTENDO_STATE(DemoSt);
- REF_NINTENDO_STATE(DemoSt2);
+ Kameck = (daKameckDemo*)createChild(KAMECK_FOR_CASTLE_DEMO, (dStageActor_c*)this, 0, &pos, &rot, 0);
- Kameck->doStateChange(&StateID_DemoWait);
+ Kameck->doStateChange(&daKameckDemo::StateID_DemoWait);
}
void daFuzzyBear_c::executeState_Grow() {
- if (this->timer == 30) { Kameck->doStateChange(&StateID_DemoSt); }
- if (this->timer == 90) { Kameck->doStateChange(&StateID_DemoSt2); }
+ if (this->timer == 30) { Kameck->doStateChange(&daKameckDemo::StateID_DemoSt); }
+ if (this->timer == 90) { Kameck->doStateChange(&daKameckDemo::StateID_DemoSt2); }
this->timer = this->timer + 1;
@@ -388,6 +394,8 @@ void daFuzzyBear_c::executeState_Grow() {
void daFuzzyBear_c::endState_Grow() {
this->Baseline = this->pos.y;
+ dStage32C_c::instance->freezeMarioBossFlag = 0;
+
// Store 0 to PointerToStage32C @ 0x15C - This should unfreeze Mario
// PlaySound(this, STRM_BGM_TORIDE_BOSS);
@@ -769,6 +777,7 @@ void daFuzzyBear_c::beginState_Outro() {
this->timer = 0;
StopBGMMusic();
// Store 1 to PointerToStage32C @ 0x15C - This should freeze Mario
+ dStage32C_c::instance->freezeMarioBossFlag = 1;
}
void daFuzzyBear_c::executeState_Outro() {