From 3ed50f896ac5bcaf573137d9058982f51bedfa16 Mon Sep 17 00:00:00 2001 From: Colin Noga Date: Wed, 12 Dec 2012 21:07:29 -0600 Subject: Made giant Shy Guys, also learned about Mario bouncing --- NewerProjectKP.yaml | 3 +- include/game.h | 6 ++-- kamek_pal.x | 15 ++++++++- src/shyguy.cpp | 66 +++----------------------------------- tools/UsedProfileAndSpriteList.txt | 4 ++- 5 files changed, 28 insertions(+), 66 deletions(-) diff --git a/NewerProjectKP.yaml b/NewerProjectKP.yaml index 2aad64b..275df02 100644 --- a/NewerProjectKP.yaml +++ b/NewerProjectKP.yaml @@ -3,7 +3,7 @@ code_address: 0x808D9000 modules: - processed/prolog.yaml - processed/corseClear.yaml -# - processed/apDebug.yaml + - processed/apDebug.yaml # - processed/layoutDebug.yaml - processed/flipblock.yaml - processed/fileselect.yaml @@ -56,6 +56,7 @@ modules: - processed/effectVideo.yaml - processed/fakeStarCoin.yaml - processed/shyguy.yaml + - processed/shyguyGiants.yaml - processed/meteor.yaml - processed/electricLine.yaml - processed/makeYourOwn.yaml diff --git a/include/game.h b/include/game.h index e19166a..3a24aba 100755 --- a/include/game.h +++ b/include/game.h @@ -2428,7 +2428,7 @@ public: virtual void add2ToYSpeed(); virtual bool _vf218(); // stuff with floats and camera virtual void _vf21C(); // does stuff with the speeds - virtual void _vf220(void *other); // some type of actor, PlBase? calls vf3F4 on other with r4=this, r5=0 + virtual void _vf220(void *player); // hurts player virtual void _vf224(); // stores a couple of values into the struct at 464 virtual void _vf228(); // more fun stuff with 464 and floats virtual bool CreateIceActors(); // does stuff involving ICE_ACTORs and arrays @@ -2439,7 +2439,7 @@ public: virtual void _vf240(); // nullsub, params unknown virtual int _vf244(); // returns 0. might be bool. params unknown virtual int _vf248(int something); // does some math involving field510 and [7,7,4,0] and param - virtual void _vf24C(void *other); // deals with something in the class involving the bahp flag + virtual void bouncePlayerWhenJumpedOn(void *player); virtual void addScoreWhenHit(void *other); // Other is dPlayer virtual void _vf254(void *other); virtual void _vf258(void *other); @@ -2466,6 +2466,8 @@ public: void checkLiquidImmersion(Vec2 *effectivePosition, float effectScale); void killWithSpecifiedState(dStageActor_c *killedBy, VEC2 *effectiveSpeed, dStateBase_c *state, u32 _unused=0); + void bouncePlayer(void* player, float bounceHeight); + // States USING_STATES(dEn_c); diff --git a/kamek_pal.x b/kamek_pal.x index 5fcb316..eb18718 100644 --- a/kamek_pal.x +++ b/kamek_pal.x @@ -76,6 +76,18 @@ SECTIONS { MagicEnd = 0x807CCE10; KeyLoopSet = 0x80804680; +/* Some collision shit for giant shy guys */ + + BigHanaPlayer = 0x809B28C0; + BigHanaYoshi = 0x809B2AD0; + BigHanaWeirdGP = 0x809B2D80; + BigHanaGroundPound = 0x809B2CF0; + BigHanaFireball = 0x809B3A50; + BigHanaIceball = 0x809B3A20; + + dAcPy_vf3F8 = 0x80146310; + dAcPy_vf3FC = 0x80146A10; + /* Back to other shit I didn't want to scroll for */ GlobalTickCount = 0x8042A648; @@ -536,7 +548,7 @@ SECTIONS { _vf240__5dEn_cFv = 0x800206A0; _vf244__5dEn_cFv = 0x80020690; _vf248__5dEn_cFi = 0x800968E0; - _vf24C__5dEn_cFPv = 0x80096710; + bouncePlayerWhenJumpedOn__5dEn_cFPv = 0x80096710; addScoreWhenHit__5dEn_cFPv = 0x80096700; _vf254__5dEn_cFPv = 0x80096720; _vf258__5dEn_cFPv = 0x80096760; @@ -563,6 +575,7 @@ SECTIONS { CheckIfPlayerBelow__5dEn_cFff = 0x800978C0; stuffRelatingToCollisions__5dEn_cFfff = 0x800957B0; checkLiquidImmersion__5dEn_cFP7Point2df = 0x80097250; + bouncePlayer__5dEn_cFPvf = 0x800967A0; _vfD8__18dActorMultiState_cFv = 0x80067590; _vfDC__18dActorMultiState_cFv = 0x800675B0; diff --git a/src/shyguy.cpp b/src/shyguy.cpp index bbae18b..cb0753a 100644 --- a/src/shyguy.cpp +++ b/src/shyguy.cpp @@ -111,7 +111,6 @@ class daShyGuy : public dEn_c { void _vf148(); void _vf14C(); bool CreateIceActors(); - void addScoreWhenHit(void *other); USING_STATES(daShyGuy); DECLARE_STATE(Walk); @@ -223,20 +222,6 @@ daShyGuy *daShyGuy::build() { stateVar = &StateID_GoDizzy; deathState = &StateID_Die; } - else if (this->type > 8) { // Giants - hitType = usedForDeterminingStatePress_or_playerCollision(this, apThis, apOther, 0); - if(hitType == 1) { // regular jump - apOther->someFlagByte |= 2; - } - else if(hitType == 3) { // spinning jump or whatever? - apOther->someFlagByte |= 2; - } - else if(hitType == 0) { - this->dEn_c::playerCollision(apThis, apOther); - this->_vf220(apOther->owner); - } - return; - } else { // Ballooneers stateVar = &StateID_BalloonDrop; deathState = &StateID_Die; @@ -318,9 +303,6 @@ daShyGuy *daShyGuy::build() { this->_vf14C(); } } - else if (this->type > 8) { // Giants - return; - } else { // Ballooneers stateVar = &StateID_FlameHit; } @@ -354,16 +336,11 @@ daShyGuy *daShyGuy::build() { bool daShyGuy::CreateIceActors() { struct DoSomethingCool my_struct = { 0, this->pos, {1.2, 1.5, 1.5}, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; - if (type > 8) { my_struct.scale = (Vec3){2.4, 3.0, 3.0}; } this->frzMgr.Create_ICEACTORs( (void*)&my_struct, 1 ); __destroy_arr( (void*)&my_struct, sub_80024C20, 0x3C, 1 ); return true; } - void daShyGuy::addScoreWhenHit(void *other) { - if (type < 9) { dEn_c::addScoreWhenHit(other); } - } - bool daShyGuy::calculateTileCollisions() { // Returns true if sprite should turn, false if not. @@ -576,31 +553,10 @@ int daShyGuy::onCreate() { ActivePhysics::Info HitMeBaby; - if (type > 8) { - this->scale = (Vec){40.0f, 40.0f, 40.0f}; - - HitMeBaby.xDistToCenter = 0.0; - HitMeBaby.yDistToCenter = 24.0; - - HitMeBaby.xDistToEdge = 20.0; - HitMeBaby.yDistToEdge = 24.0; - - // giantRider.init(this, -19.5f, 18.0f, 19.5f, 18.0f); - - giantRider.init(this, 0.0f, 0.0f, -24.0f, 0.0f, 28.0f, 0, 0); - // addToList(&giantRider); - giantRider.addToList(); - - giantRider.update(); - } - - else { - HitMeBaby.xDistToCenter = 0.0; - HitMeBaby.yDistToCenter = 12.0; - - HitMeBaby.xDistToEdge = 10.0; - HitMeBaby.yDistToEdge = 12.0; - } + HitMeBaby.xDistToCenter = 0.0; + HitMeBaby.yDistToCenter = 12.0; + HitMeBaby.xDistToEdge = 10.0; + HitMeBaby.yDistToEdge = 12.0; HitMeBaby.category1 = 0x3; HitMeBaby.category2 = 0x0; @@ -692,14 +648,6 @@ int daShyGuy::onCreate() { else if (type == 8) { doStateChange(&StateID_Balloon_C); } - else if (type == 9) { - bindAnimChr_and_setUpdateRate("c18_EV_WIN_2_R", 1, 0.0, 1.5); - doStateChange(&StateID_RealWalk); - } - else if (type == 10) { - bindAnimChr_and_setUpdateRate("c18_EV_WIN_2_R", 1, 0.0, 1.5); - doStateChange(&StateID_Walk); - } this->onExecute(); return true; @@ -712,17 +660,13 @@ int daShyGuy::onDelete() { int daShyGuy::onExecute() { acState.execute(); updateModelMatrices(); - - if (type > 8) { - giantRider.update(); - } + bodyModel._vf1C(); return true; } int daShyGuy::onDraw() { bodyModel.scheduleForDrawing(); - bodyModel._vf1C(); if (this->renderBalloon == 1) { balloonModel.scheduleForDrawing(); diff --git a/tools/UsedProfileAndSpriteList.txt b/tools/UsedProfileAndSpriteList.txt index 1b4ba12..fc12126 100644 --- a/tools/UsedProfileAndSpriteList.txt +++ b/tools/UsedProfileAndSpriteList.txt @@ -27,6 +27,7 @@ 89 : EN_REMOCON_TORIMOCHI : Sprite Swapper Timed 107 : EN_LIFT_ROTATION_HALF : Message Box Manager 152 : EN_BLUR : Message Block +167 : WM_TREASURESHIP : Shy Guy Giant 169 : EN_SLIP_PENGUIN : Magic Platform 183 : EN_TARZANROPE : Meteor 210 : TARZAN_ROPE : Topman @@ -102,6 +103,7 @@ WM_PUKU WM_SINKSHIP WM_SMALLCLOUD WM_TOGEZO +WM_TREASURESHIP WORLD_CAMERA WORLD_MAP @@ -154,7 +156,7 @@ WM_TEST WM_TEST2 WM_TORIDE WM_TOWER -WM_TREASURESHIP + WM_YOGANPILLAR WORLD_SELECT WORLD_SELECT_GUIDE -- cgit v1.2.3