diff options
Diffstat (limited to '')
-rw-r--r-- | NewerProject.yaml | 1 | ||||
-rw-r--r-- | bossCaptainBowser.yaml | 62 | ||||
-rw-r--r-- | kamek_pal.x | 3 | ||||
-rw-r--r-- | src/bossCaptainBowser.cpp | 91 |
4 files changed, 119 insertions, 38 deletions
diff --git a/NewerProject.yaml b/NewerProject.yaml index b2c9693..c308818 100644 --- a/NewerProject.yaml +++ b/NewerProject.yaml @@ -5,6 +5,7 @@ modules: - processed/magicplatform.yaml - processed/bugfixes.yaml - processed/worldmap.yaml + # - processed/koopatlas.yaml - processed/levelnames.yaml - processed/animtiles.yaml - processed/soundPlayer.yaml diff --git a/bossCaptainBowser.yaml b/bossCaptainBowser.yaml index 3901aec..1b4fe5c 100644 --- a/bossCaptainBowser.yaml +++ b/bossCaptainBowser.yaml @@ -7,6 +7,56 @@ source_files: [../src/bossPlayerClown.cpp, ../src/bossCaptainBowser.cpp, ../src/bossKoopaThrow.cpp, ../src/bossFlameThrower.cpp] hooks: + + ################################################ + # HOOKS FOR BRIDGE BOWSER + ################################################ + # - name: PatchMagicExecute + # type: patch + # addr_pal: 0x80954BF4 + # data: '807CF460' + + # - name: PatchMagicStart + # type: patch + # addr_pal: 0x80954BF8 + # data: '807CCE10' + + - name: PatchMagicStart + type: add_func_pointer + src_addr_pal: 0x80954BF8 + target_func: 'BowserDoom(dStageActor_c *)' + + - name: PatchMagicStartTwo + type: add_func_pointer + src_addr_pal: 0x80954BF0 + target_func: 'BowserDoom(dStageActor_c *)' + + # - name: PatchMagicStartThree + # type: add_func_pointer + # src_addr_pal: 0x80954BF4 + # target_func: 'BowserDoom(dStageActor_c *)' + + # - name: PatchMagicStartFour + # type: add_func_pointer + # src_addr_pal: 0x80954BEC + # target_func: 'BowserDoom(dStageActor_c *)' + +# Mario Fanfare and animation +# Kameck spawns and does his demo state +# Kameck does his other demo state +# Bowser Emerges from the pit +# Kameck gets killed with a hit effect +# Both bowser and Kameck continue their jump arc +# Players regain control as last vestiges of effect disappear +# Bowser finishes his jump state and moves into his roar state +# Camera starts to move right automatically +# Bowser shoots a fireball +# Players finally regain control of the camera + + + ################################################ + # HOOKS FOR CAPTAIN BOWSER + ################################################ - name: BossCaptainBoswerBuild type: add_func_pointer src_addr_pal: 0x80955978 @@ -29,7 +79,9 @@ hooks: # Each string is an arcname to load - + ################################################ + # HOOKS FOR KOOPA THROW + ################################################ - name: KoopaThrowBuild type: add_func_pointer src_addr_pal: 0x80981960 @@ -49,6 +101,9 @@ hooks: # 0x8031AB4C + sprite num * 0x4 == offset + ################################################ + # HOOKS FOR KOOPA FLAME THROWER + ################################################ - name: KFlameThrowerBuild type: add_func_pointer src_addr_pal: 0x80981A3C @@ -62,8 +117,9 @@ hooks: # 0x8030A340 + sprite num * 0x28 == offset - - + ################################################ + # HOOKS FOR CLOWN CAR + ################################################ - name: ClownCarFloor type: patch addr_pal: 0x80810A40 diff --git a/kamek_pal.x b/kamek_pal.x index 3dedcab..0079576 100644 --- a/kamek_pal.x +++ b/kamek_pal.x @@ -16,6 +16,9 @@ SECTIONS { getEffectiveScreenLeft__19ClassWithCameraInfoFv = 0x80082240; instance__19ClassWithCameraInfo = 0x8042A0E0; + BowserExtiDemoState = 0x8005B5D0; + MagicEnd = 0x807CCE10; + /* Back to other shit I didn't want to scroll for */ GlobalTickCount = 0x8042A648; diff --git a/src/bossCaptainBowser.cpp b/src/bossCaptainBowser.cpp index a9c36b4..0f1cf96 100644 --- a/src/bossCaptainBowser.cpp +++ b/src/bossCaptainBowser.cpp @@ -5,6 +5,15 @@ #include <stage.h> #include "boss.h" +extern "C" void *BowserExtiDemoState(void *, unsigned int); +extern "C" void *MagicEnd(dStageActor_c *); + +void BowserDoom(dStageActor_c *Controller) { + OSReport("THERE IS A FUCKING STATE HERE"); + BowserExtiDemoState(WLClass::instance, 1); + MagicEnd(Controller); + // MakeMarioExitDemoMode(); +} // const char* effects_name_list [] = { @@ -72,6 +81,7 @@ public: int homingBillSlot; int maxDamage; int playerCount; + float sinTimer; static daCaptainBowser *build(); @@ -108,7 +118,9 @@ void ShipPhysicsCallback(daCaptainBowser *self, dEn_c *other) { } self->damage -= 1; - other->doStateChange(&dEn_c::StateID_DieFumi); + SpawnEffect("Wm_en_burst_m", 0, &other->pos, &(S16Vec){0,0,0}, &(Vec){1.0, 1.0, 1.0}); + PlaySound(other, SE_OBJ_TARU_BREAK); + other->Delete(1); if (self->damage == self->maxDamage/2) { self->doStateChange(&daCaptainBowser::StateID_Roar); } else if (self->damage < 0) { self->doStateChange(&daCaptainBowser::StateID_Outro); } @@ -147,7 +159,9 @@ void ShipPhysicsCallback(daCaptainBowser *self, dEn_c *other) { spawnHitEffectAtPosition((Vec2){apOther->owner->pos.x, apOther->owner->pos.y}); - ((dEn_c*)(apOther->owner))->doStateChange(&dEn_c::StateID_DieFumi); + SpawnEffect("Wm_en_burst_m", 0, &apOther->owner->pos, &(S16Vec){0,0,0}, &(Vec){1.0, 1.0, 1.0}); + PlaySound(apOther->owner, SE_BOSS_CMN_STOMPED); + apOther->owner->Delete(1); if (this->damage == this->maxDamage/2) { doStateChange(&StateID_Roar); } else if (this->damage < 0) { doStateChange(&StateID_Outro); } @@ -281,42 +295,49 @@ int daCaptainBowser::onExecute() { bodyModel._vf1C(); shipModel._vf1C(); + float xmod = sin(this->sinTimer * 3.14 / 180.0) * 80.0; + float ymod = sin(this->sinTimer * 3.14 / 130.0) * 112.0; + + pos.x = ClassWithCameraInfo::instance->screenCentreX + 200.0 + xmod; + pos.y = ClassWithCameraInfo::instance->screenCentreY - 180.0 + ymod; - this->homingBillCountdown--; + this->sinTimer++; - if (this->homingBillCountdown == 0) { + // this->homingBillCountdown--; + + // if (this->homingBillCountdown == 0) { - Vec tempPos; - - switch (this->homingBillSlot) { - case 0: - this->homingBillSlot++; - tempPos.x = this->pos.x - 26.0; - tempPos.y = this->pos.y + 40.0; - tempPos.z = this->pos.z + 2000.0; - break; - - case 1: - this->homingBillSlot++; - tempPos.x = this->pos.x + 22.0; - tempPos.y = this->pos.y + 40.0; - tempPos.z = this->pos.z + 2000.0; - break; - - case 2: - this->homingBillSlot = 0; - tempPos.x = this->pos.x + 70.0; - tempPos.y = this->pos.y + 40.0; - tempPos.z = this->pos.z + 2000.0; - break; - } - - SpawnEffect("Wm_en_killervanish", 0, &tempPos, &(S16Vec){0,0,0}, &(Vec){0.1, 0.1, 0.1}); - PlaySoundAsync(this, SE_EMY_SR_KILLER_SHOT); - CreateActor(EN_SEARCH_KILLER, 0, tempPos, 0, 0); - - this->homingBillCountdown = (isAngry) ? 90: 180; - } + // Vec tempPos; + + // switch (this->homingBillSlot) { + // case 0: + // this->homingBillSlot++; + // tempPos.x = this->pos.x - 26.0; + // tempPos.y = this->pos.y + 40.0; + // tempPos.z = this->pos.z + 2000.0; + // break; + + // case 1: + // this->homingBillSlot++; + // tempPos.x = this->pos.x + 22.0; + // tempPos.y = this->pos.y + 40.0; + // tempPos.z = this->pos.z + 2000.0; + // break; + + // case 2: + // this->homingBillSlot = 0; + // tempPos.x = this->pos.x + 70.0; + // tempPos.y = this->pos.y + 40.0; + // tempPos.z = this->pos.z + 2000.0; + // break; + // } + + // SpawnEffect("Wm_en_killervanish", 0, &tempPos, &(S16Vec){0,0,0}, &(Vec){0.1, 0.1, 0.1}); + // PlaySoundAsync(this, SE_EMY_SR_KILLER_SHOT); + // CreateActor(EN_SEARCH_KILLER, 0, tempPos, 0, 0); + + // this->homingBillCountdown = (isAngry) ? 90: 180; + // } if(this->shipAnm.isAnimationDone()) { this->shipAnm.setCurrentFrame(0.0); |