diff --git a/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c b/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c index e9f6bec20e..a7d11b1262 100644 --- a/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c +++ b/src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c @@ -7,11 +7,16 @@ #include "z_bg_dy_yoseizo.h" #include "assets/objects/object_dy_obj/object_dy_obj.h" #include "terminal.h" +#include "versions.h" #include "overlays/actors/ovl_Demo_Effect/z_demo_effect.h" #include "assets/scenes/indoors/yousei_izumi_yoko/yousei_izumi_yoko_scene.h" #include "assets/scenes/indoors/daiyousei_izumi/daiyousei_izumi_scene.h" +#if OOT_VERSION < NTSC_1_1 +#define FLAGS (ACTOR_FLAG_4 | ACTOR_FLAG_5) +#else #define FLAGS (ACTOR_FLAG_4 | ACTOR_FLAG_5 | ACTOR_FLAG_25) +#endif typedef enum BgDyYoseizoRewardType { /* 0 */ FAIRY_UPGRADE_MAGIC, @@ -85,13 +90,30 @@ void BgDyYoseizo_Init(Actor* thisx, PlayState* play2) { PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 大妖精の泉 ☆☆☆☆☆ %d\n" VT_RST, play->spawn); SkelAnime_InitFlex(play, &this->skelAnime, &gGreatFairySkel, &gGreatFairySittingTransitionAnim, this->jointTable, this->morphTable, 28); +#if OOT_VERSION < NTSC_1_1 + if (!gSaveContext.save.info.playerData.isMagicAcquired && (this->fountainType != FAIRY_UPGRADE_MAGIC)) { + Actor_Kill(&this->actor); + return; + } +#endif } else { // "Stone/Jewel Fairy Fountain" PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ 石妖精の泉 ☆☆☆☆☆ %d\n" VT_RST, play->spawn); SkelAnime_InitFlex(play, &this->skelAnime, &gGreatFairySkel, &gGreatFairyLayingDownTransitionAnim, this->jointTable, this->morphTable, 28); +#if OOT_VERSION < NTSC_1_1 + if (!gSaveContext.save.info.playerData.isMagicAcquired) { + Actor_Kill(&this->actor); + return; + } +#endif } + +#if OOT_VERSION < NTSC_1_1 + this->actionFunc = BgDyYoseizo_ChooseType; +#else this->actionFunc = BgDyYoseizo_CheckMagicAcquired; +#endif } void BgDyYoseizo_Destroy(Actor* thisx, PlayState* play) { @@ -177,6 +199,7 @@ void BgDyYoseizo_Bob(BgDyYoseizo* this, PlayState* play) { } } +#if OOT_VERSION >= NTSC_1_1 void BgDyYoseizo_CheckMagicAcquired(BgDyYoseizo* this, PlayState* play) { if (Flags_GetSwitch(play, 0x38)) { play->msgCtx.ocarinaMode = OCARINA_MODE_04; @@ -195,10 +218,22 @@ void BgDyYoseizo_CheckMagicAcquired(BgDyYoseizo* this, PlayState* play) { this->actionFunc = BgDyYoseizo_ChooseType; } } +#endif void BgDyYoseizo_ChooseType(BgDyYoseizo* this, PlayState* play) { s32 givingReward; +#if OOT_VERSION < NTSC_1_1 + if (!Flags_GetSwitch(play, 0x38)) { + return; + } + + if (play->msgCtx.ocarinaMode != OCARINA_MODE_04) { + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_1); + return; + } +#endif + Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_1); // "Mode" PRINTF(VT_FGCOL(YELLOW) "☆☆☆☆☆ もうど ☆☆☆☆☆ %d\n" VT_RST, play->msgCtx.ocarinaMode); @@ -315,12 +350,16 @@ void BgDyYoseizo_SetupSpinGrow_NoReward(BgDyYoseizo* this, PlayState* play) { } Actor_PlaySfx(&this->actor, NA_SE_VO_FR_LAUGH_0); +#if OOT_VERSION >= NTSC_1_1 Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_1); +#endif this->actionFunc = BgDyYoseizo_SpinGrow_NoReward; } void BgDyYoseizo_SpinGrow_NoReward(BgDyYoseizo* this, PlayState* play) { +#if OOT_VERSION >= NTSC_1_1 Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_1); +#endif Math_ApproachF(&this->actor.world.pos.y, this->grownHeight, this->heightFraction, 100.0f); Math_ApproachF(&this->scale, 0.035f, this->scaleFraction, 0.005f); Math_ApproachF(&this->heightFraction, 0.8f, 0.1f, 0.02f); @@ -346,7 +385,9 @@ void BgDyYoseizo_SpinGrow_NoReward(BgDyYoseizo* this, PlayState* play) { void BgDyYoseizo_CompleteSpinGrow_NoReward(BgDyYoseizo* this, PlayState* play) { f32 curFrame = this->skelAnime.curFrame; +#if OOT_VERSION >= NTSC_1_1 Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_1); +#endif if ((this->frameCount * 1273.0f) <= this->bobTimer) { this->bobTimer = 0.0f; @@ -360,7 +401,9 @@ void BgDyYoseizo_CompleteSpinGrow_NoReward(BgDyYoseizo* this, PlayState* play) { } void BgDyYoseizo_SetupGreetPlayer_NoReward(BgDyYoseizo* this, PlayState* play) { +#if OOT_VERSION >= NTSC_1_1 Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_1); +#endif if (play->sceneId == SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) { this->frameCount = Animation_GetLastFrame(&gGreatFairySittingAnim); @@ -380,7 +423,9 @@ void BgDyYoseizo_SetupGreetPlayer_NoReward(BgDyYoseizo* this, PlayState* play) { } void BgDyYoseizo_GreetPlayer_NoReward(BgDyYoseizo* this, PlayState* play) { +#if OOT_VERSION >= NTSC_1_1 Player_SetCsActionWithHaltedActors(play, &this->actor, PLAYER_CSACTION_1); +#endif this->bobTimer = this->skelAnime.curFrame * 1273.0f; if ((this->frameCount * 1273.0f) <= this->bobTimer) { diff --git a/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c b/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c index b9673f51c4..e34ea1fae9 100644 --- a/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c +++ b/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c @@ -7,6 +7,7 @@ #include "z_door_shutter.h" #include "overlays/actors/ovl_Boss_Goma/z_boss_goma.h" #include "quake.h" +#include "versions.h" #include "assets/objects/object_gnd/object_gnd.h" #include "assets/objects/object_goma/object_goma.h" @@ -225,14 +226,22 @@ typedef struct DoorShutterGfxInfo { } DoorShutterGfxInfo; static DoorShutterGfxInfo sGfxInfo[] = { - { gDTDungeonDoor1DL, gDoorMetalBarsDL, 130, 12, 20, 15 }, // DOORSHUTTER_GFX_DEKU_TREE_1 - { gDTDungeonDoor2DL, gDoorMetalBarsDL, 130, 12, 20, 15 }, // DOORSHUTTER_GFX_DEKU_TREE_2 - { gDodongoDoorDL, gDodongoBarsDL, 240, 14, 70, 15 }, // DOORSHUTTER_GFX_DODONGOS_CAVERN - { gJabuDoorSection1DL, gJabuWebDoorDL, 0, 110, 50, 15 }, // DOORSHUTTER_GFX_JABU_JABU - { gPhantomGanonBarsDL, NULL, 130, 12, 50, 15 }, // DOORSHUTTER_GFX_PHANTOM_GANON_BARS - { gGohmaDoorDL, NULL, 130, 12, 50, 15 }, // DOORSHUTTER_GFX_GOHMA_BLOCK - { gSpiritDoorDL, gJyaDoorMetalBarsDL, 240, 14, 50, 15 }, // DOORSHUTTER_GFX_SPIRIT_TEMPLE - { gBossDoorDL, NULL, 130, 12, 50, 15 }, // DOORSHUTTER_GFX_BOSS_DOOR + { gDTDungeonDoor1DL, gDoorMetalBarsDL, 130, 12, 20, 15 }, // DOORSHUTTER_GFX_DEKU_TREE_1 + { gDTDungeonDoor2DL, gDoorMetalBarsDL, 130, 12, 20, 15 }, // DOORSHUTTER_GFX_DEKU_TREE_2 + { gDodongoDoorDL, gDodongoBarsDL, 240, 14, 70, 15 }, // DOORSHUTTER_GFX_DODONGOS_CAVERN +#if OOT_VERSION < NTSC_1_1 + { gJabuDoorSection1DL, gJabuWebDoorDL, 0, 110, 70, 15 }, // DOORSHUTTER_GFX_JABU_JABU + { gPhantomGanonBarsDL, NULL, 130, 12, 70, 15 }, // DOORSHUTTER_GFX_PHANTOM_GANON_BARS + { gGohmaDoorDL, NULL, 130, 12, 70, 15 }, // DOORSHUTTER_GFX_GOHMA_BLOCK + { gSpiritDoorDL, gJyaDoorMetalBarsDL, 240, 14, 50, 15 }, // DOORSHUTTER_GFX_SPIRIT_TEMPLE + { gBossDoorDL, NULL, 130, 12, 70, 15 }, // DOORSHUTTER_GFX_BOSS_DOOR +#else + { gJabuDoorSection1DL, gJabuWebDoorDL, 0, 110, 50, 15 }, // DOORSHUTTER_GFX_JABU_JABU + { gPhantomGanonBarsDL, NULL, 130, 12, 50, 15 }, // DOORSHUTTER_GFX_PHANTOM_GANON_BARS + { gGohmaDoorDL, NULL, 130, 12, 50, 15 }, // DOORSHUTTER_GFX_GOHMA_BLOCK + { gSpiritDoorDL, gJyaDoorMetalBarsDL, 240, 14, 50, 15 }, // DOORSHUTTER_GFX_SPIRIT_TEMPLE + { gBossDoorDL, NULL, 130, 12, 50, 15 }, // DOORSHUTTER_GFX_BOSS_DOOR +#endif { gDungeonDoorDL, gDoorMetalBarsDL, 130, 12, 20, 15 }, // DOORSHUTTER_GFX_GENERIC { gFireTempleDoorFrontDL, gDoorMetalBarsDL, 130, 12, 20, 15 }, // DOORSHUTTER_GFX_FIRE_TEMPLE_1 { gFireTempleDoorBackDL, gDoorMetalBarsDL, 130, 12, 20, 15 }, // DOORSHUTTER_GFX_FIRE_TEMPLE_2 diff --git a/src/overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.c b/src/overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.c index 287ff56297..d1b915ee45 100644 --- a/src/overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.c +++ b/src/overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.c @@ -5,6 +5,7 @@ */ #include "z_en_attack_niw.h" +#include "versions.h" #include "assets/objects/object_niw/object_niw.h" #include "overlays/actors/ovl_En_Niw/z_en_niw.h" @@ -359,7 +360,13 @@ void EnAttackNiw_Update(Actor* thisx, PlayState* play) { if (this->actor.xyzDistToPlayerSq < SQ(tmpf1)) { cucco = (EnNiw*)this->actor.parent; if ((this->actor.parent->update != NULL) && (this->actor.parent != NULL) && (cucco != NULL) && - (cucco->timer9 == 0) && (player->invincibilityTimer == 0)) { + (cucco->timer9 == 0) && +#if OOT_VERSION < NTSC_1_1 + !(player->stateFlags1 & PLAYER_STATE1_26) +#else + (player->invincibilityTimer == 0) +#endif + ) { Actor_SetPlayerKnockbackLarge(play, &this->actor, 2.0f, this->actor.world.rot.y, 0.0f, 0x10); cucco->timer9 = 0x46; } diff --git a/src/overlays/actors/ovl_En_Bili/z_en_bili.c b/src/overlays/actors/ovl_En_Bili/z_en_bili.c index fc1efd113f..f7bbd05f0c 100644 --- a/src/overlays/actors/ovl_En_Bili/z_en_bili.c +++ b/src/overlays/actors/ovl_En_Bili/z_en_bili.c @@ -5,6 +5,7 @@ */ #include "z_en_bili.h" +#include "versions.h" #include "assets/objects/object_bl/object_bl.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_IGNORE_QUAKE | ACTOR_FLAG_14) @@ -536,7 +537,12 @@ void EnBili_Frozen(EnBili* this, PlayState* play) { this->actor.gravity = -1.0f; } - if ((this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) || (this->actor.floorHeight == BGCHECK_Y_MIN)) { +#if OOT_VERSION < NTSC_1_1 + if ((this->actor.bgCheckFlags & BGCHECKFLAG_GROUND_TOUCH) || (this->actor.floorHeight == BGCHECK_Y_MIN)) +#else + if ((this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) || (this->actor.floorHeight == BGCHECK_Y_MIN)) +#endif + { this->actor.colorFilterTimer = 0; EnBili_SetupDie(this); } else { diff --git a/src/overlays/actors/ovl_En_Dha/z_en_dha.c b/src/overlays/actors/ovl_En_Dha/z_en_dha.c index 5bdbf42d31..3d31717cd6 100644 --- a/src/overlays/actors/ovl_En_Dha/z_en_dha.c +++ b/src/overlays/actors/ovl_En_Dha/z_en_dha.c @@ -243,13 +243,20 @@ void EnDha_Wait(EnDha* this, PlayState* play) { this->handAngle.y -= this->actor.shape.rot.y + this->limbAngleY; this->handAngle.x -= this->actor.shape.rot.x + this->limbAngleX[0] + this->limbAngleX[1]; } else { +#if OOT_VERSION < NTSC_1_1 + // Empty +#elif OOT_VERSION < PAL_1_0 if ((player->stateFlags2 & PLAYER_STATE2_7) && (&this->actor == player->actor.parent)) { player->stateFlags2 &= ~PLAYER_STATE2_7; player->actor.parent = NULL; -#if OOT_VERSION >= PAL_1_0 - player->av2.actionVar2 = 200; -#endif } +#else + if ((player->stateFlags2 & PLAYER_STATE2_7) && (&this->actor == player->actor.parent)) { + player->stateFlags2 &= ~PLAYER_STATE2_7; + player->actor.parent = NULL; + player->av2.actionVar2 = 200; + } +#endif if (this->actor.home.rot.z != 0) { Actor_PlaySfx(&this->actor, NA_SE_EN_DEADHAND_HAND_AT); diff --git a/src/overlays/actors/ovl_En_Door/z_en_door.c b/src/overlays/actors/ovl_En_Door/z_en_door.c index c89a882321..301b804966 100644 --- a/src/overlays/actors/ovl_En_Door/z_en_door.c +++ b/src/overlays/actors/ovl_En_Door/z_en_door.c @@ -339,8 +339,12 @@ s32 EnDoor_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* rot->z += this->actor.world.rot.y; if ((play->roomCtx.prevRoom.num >= 0) || (transitionEntry->sides[0].room == transitionEntry->sides[1].room)) { // Draw the side of the door that is visible to the camera +#if OOT_VERSION < NTSC_1_1 + s16 rotDiff = this->actor.shape.rot.y + rot->z - Math_Vec3f_Yaw(&play->view.eye, &this->actor.world.pos); +#else s16 rotDiff = this->actor.shape.rot.y + this->skelAnime.jointTable[3].z + rot->z - Math_Vec3f_Yaw(&play->view.eye, &this->actor.world.pos); +#endif *dList = (ABS(rotDiff) < 0x4000) ? doorDLists[0] : doorDLists[1]; } else { diff --git a/src/overlays/actors/ovl_En_Fd/z_en_fd.c b/src/overlays/actors/ovl_En_Fd/z_en_fd.c index 0513ff2b0b..64f6cc1ed9 100644 --- a/src/overlays/actors/ovl_En_Fd/z_en_fd.c +++ b/src/overlays/actors/ovl_En_Fd/z_en_fd.c @@ -5,6 +5,7 @@ */ #include "z_en_fd.h" +#include "versions.h" #include "assets/objects/gameplay_keep/gameplay_keep.h" #include "assets/objects/object_fw/object_fw.h" @@ -39,11 +40,17 @@ ActorProfile En_Fd_Profile = { /**/ EnFd_Draw, }; +#if OOT_VERSION < NTSC_1_1 +#define FLARE_DANCER_BODY_DMG 0x00 +#else +#define FLARE_DANCER_BODY_DMG 0x04 +#endif + static ColliderJntSphElementInit sJntSphElementsInit[12] = { { { ELEM_MATERIAL_UNK0, - { 0xFFCFFFFF, 0x01, 0x04 }, + { 0xFFCFFFFF, 0x01, FLARE_DANCER_BODY_DMG }, { 0x00040088, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON | ACELEM_HOOKABLE, @@ -54,7 +61,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[12] = { { { ELEM_MATERIAL_UNK0, - { 0xFFCFFFFF, 0x01, 0x04 }, + { 0xFFCFFFFF, 0x01, FLARE_DANCER_BODY_DMG }, { 0x00040008, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, @@ -65,7 +72,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[12] = { { { ELEM_MATERIAL_UNK0, - { 0xFFCFFFFF, 0x01, 0x04 }, + { 0xFFCFFFFF, 0x01, FLARE_DANCER_BODY_DMG }, { 0x00040008, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, @@ -76,7 +83,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[12] = { { { ELEM_MATERIAL_UNK0, - { 0xFFCFFFFF, 0x01, 0x04 }, + { 0xFFCFFFFF, 0x01, FLARE_DANCER_BODY_DMG }, { 0x00040008, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, @@ -87,7 +94,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[12] = { { { ELEM_MATERIAL_UNK0, - { 0xFFCFFFFF, 0x01, 0x04 }, + { 0xFFCFFFFF, 0x01, FLARE_DANCER_BODY_DMG }, { 0x00040008, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, @@ -98,7 +105,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[12] = { { { ELEM_MATERIAL_UNK0, - { 0xFFCFFFFF, 0x01, 0x04 }, + { 0xFFCFFFFF, 0x01, FLARE_DANCER_BODY_DMG }, { 0x00040008, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, @@ -109,7 +116,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[12] = { { { ELEM_MATERIAL_UNK0, - { 0xFFCFFFFF, 0x01, 0x04 }, + { 0xFFCFFFFF, 0x01, FLARE_DANCER_BODY_DMG }, { 0x00040008, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, @@ -120,7 +127,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[12] = { { { ELEM_MATERIAL_UNK0, - { 0xFFCFFFFF, 0x01, 0x04 }, + { 0xFFCFFFFF, 0x01, FLARE_DANCER_BODY_DMG }, { 0x00040008, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, @@ -131,7 +138,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[12] = { { { ELEM_MATERIAL_UNK0, - { 0xFFCFFFFF, 0x01, 0x04 }, + { 0xFFCFFFFF, 0x01, FLARE_DANCER_BODY_DMG }, { 0x00040008, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, @@ -142,7 +149,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[12] = { { { ELEM_MATERIAL_UNK0, - { 0xFFCFFFFF, 0x01, 0x04 }, + { 0xFFCFFFFF, 0x01, FLARE_DANCER_BODY_DMG }, { 0x00040008, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, @@ -153,7 +160,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[12] = { { { ELEM_MATERIAL_UNK0, - { 0xFFCFFFFF, 0x01, 0x04 }, + { 0xFFCFFFFF, 0x01, FLARE_DANCER_BODY_DMG }, { 0x00040008, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, @@ -164,7 +171,7 @@ static ColliderJntSphElementInit sJntSphElementsInit[12] = { { { ELEM_MATERIAL_UNK0, - { 0xFFCFFFFF, 0x01, 0x04 }, + { 0xFFCFFFFF, 0x01, FLARE_DANCER_BODY_DMG }, { 0x00040008, 0x00, 0x00 }, ATELEM_ON | ATELEM_SFX_NORMAL, ACELEM_ON, diff --git a/src/overlays/actors/ovl_En_Firefly/z_en_firefly.c b/src/overlays/actors/ovl_En_Firefly/z_en_firefly.c index e9d562c7ca..e1d31a3213 100644 --- a/src/overlays/actors/ovl_En_Firefly/z_en_firefly.c +++ b/src/overlays/actors/ovl_En_Firefly/z_en_firefly.c @@ -5,6 +5,7 @@ */ #include "z_en_firefly.h" +#include "versions.h" #include "assets/objects/object_firefly/object_firefly.h" #include "overlays/actors/ovl_Obj_Syokudai/z_obj_syokudai.h" @@ -553,7 +554,12 @@ void EnFirefly_Stunned(EnFirefly* this, PlayState* play) { } void EnFirefly_FrozenFall(EnFirefly* this, PlayState* play) { - if ((this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) || (this->actor.floorHeight == BGCHECK_Y_MIN)) { +#if OOT_VERSION < NTSC_1_1 + if ((this->actor.bgCheckFlags & BGCHECKFLAG_GROUND_TOUCH) || (this->actor.floorHeight == BGCHECK_Y_MIN)) +#else + if ((this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) || (this->actor.floorHeight == BGCHECK_Y_MIN)) +#endif + { this->actor.colorFilterTimer = 0; EnFirefly_SetupDie(this); } else { diff --git a/src/overlays/actors/ovl_En_Hy/z_en_hy.c b/src/overlays/actors/ovl_En_Hy/z_en_hy.c index 3ad2e8b943..16a448a1d9 100644 --- a/src/overlays/actors/ovl_En_Hy/z_en_hy.c +++ b/src/overlays/actors/ovl_En_Hy/z_en_hy.c @@ -5,6 +5,7 @@ */ #include "z_en_hy.h" +#include "versions.h" #include "assets/objects/object_aob/object_aob.h" #include "assets/objects/object_ahg/object_ahg.h" #include "assets/objects/object_bob/object_bob.h" @@ -505,7 +506,11 @@ u16 EnHy_GetTextId(PlayState* play, Actor* thisx) { } else if (play->sceneId == SCENE_KAKARIKO_VILLAGE) { return CHECK_QUEST_ITEM(QUEST_MEDALLION_SHADOW) ? 0x507C : 0x507B; } else { +#if OOT_VERSION < NTSC_1_1 + return GET_EVENTCHKINF(EVENTCHKINF_80) ? 0x7046 : (GET_INFTABLE(INFTABLE_CB) ? 0x7019 : 0x7018); +#else return GET_EVENTCHKINF(EVENTCHKINF_80) ? 0x7046 : (GET_INFTABLE(INFTABLE_CD) ? 0x7019 : 0x7018); +#endif } case ENHY_TYPE_CNE_11: return GET_INFTABLE(INFTABLE_MALON_SPAWNED_AT_HYRULE_CASTLE) ? (GET_INFTABLE(INFTABLE_CC) ? 0x7014 : 0x70A4) @@ -633,7 +638,11 @@ s16 EnHy_UpdateTalkState(PlayState* play, Actor* thisx) { SET_INFTABLE(INFTABLE_CA); break; case 0x7018: +#if OOT_VERSION < NTSC_1_1 + SET_INFTABLE(INFTABLE_CB); +#else SET_INFTABLE(INFTABLE_CD); +#endif break; case 0x70A4: SET_INFTABLE(INFTABLE_CC); diff --git a/src/overlays/actors/ovl_En_Ko/z_en_ko.c b/src/overlays/actors/ovl_En_Ko/z_en_ko.c index d66689e0d7..2fb0b85977 100644 --- a/src/overlays/actors/ovl_En_Ko/z_en_ko.c +++ b/src/overlays/actors/ovl_En_Ko/z_en_ko.c @@ -10,6 +10,7 @@ #include "assets/objects/object_km1/object_km1.h" #include "assets/objects/object_kw1/object_kw1.h" #include "terminal.h" +#include "versions.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_4) @@ -585,7 +586,11 @@ s16 EnKo_UpdateTalkState(PlayState* play, Actor* thisx) { Message_ContinueTextbox(play, this->actor.textId); break; case 0x10B7: +#if OOT_VERSION < NTSC_1_1 + SET_INFTABLE(INFTABLE_B6); +#else SET_INFTABLE(INFTABLE_BC); +#endif FALLTHROUGH; case 0x10B8: this->actor.textId = (play->msgCtx.choiceIndex == 0) ? 0x10BA : 0x10B9; @@ -976,7 +981,11 @@ void func_80A9877C(EnKo* this, PlayState* play) { this->actor.textId = INV_CONTENT(ITEM_TRADE_ADULT) > ITEM_ODD_POTION ? 0x10B9 : 0x10DF; if (func_8002F368(play) == EXCH_ITEM_ODD_POTION) { +#if OOT_VERSION < NTSC_1_1 + this->actor.textId = GET_INFTABLE(INFTABLE_B6) ? 0x10B8 : 0x10B7; +#else this->actor.textId = GET_INFTABLE(INFTABLE_BC) ? 0x10B8 : 0x10B7; +#endif this->unk_210 = 0; } player->actor.textId = this->actor.textId; diff --git a/src/overlays/actors/ovl_En_Mb/z_en_mb.c b/src/overlays/actors/ovl_En_Mb/z_en_mb.c index 6318e1ea04..ac745b9dbf 100644 --- a/src/overlays/actors/ovl_En_Mb/z_en_mb.c +++ b/src/overlays/actors/ovl_En_Mb/z_en_mb.c @@ -1325,19 +1325,30 @@ void EnMb_SetupSpearDead(EnMb* this) { } void EnMb_SpearDead(EnMb* this, PlayState* play) { +#if OOT_VERSION >= NTSC_1_1 Player* player = GET_PLAYER(play); +#endif Math_SmoothStepToF(&this->actor.speed, 0.0f, 1.0f, 0.5f, 0.0f); +#if OOT_VERSION < NTSC_1_1 + // Empty +#elif OOT_VERSION < PAL_1_0 if ((player->stateFlags2 & PLAYER_STATE2_7) && player->actor.parent == &this->actor) { player->stateFlags2 &= ~PLAYER_STATE2_7; player->actor.parent = NULL; -#if OOT_VERSION >= PAL_1_0 - player->av2.actionVar2 = 200; -#endif Actor_SetPlayerKnockbackLargeNoDamage(play, &this->actor, 4.0f, this->actor.world.rot.y, 4.0f); this->attack = ENMB_ATTACK_NONE; } +#else + if ((player->stateFlags2 & PLAYER_STATE2_7) && player->actor.parent == &this->actor) { + player->stateFlags2 &= ~PLAYER_STATE2_7; + player->actor.parent = NULL; + player->av2.actionVar2 = 200; + Actor_SetPlayerKnockbackLargeNoDamage(play, &this->actor, 4.0f, this->actor.world.rot.y, 4.0f); + this->attack = ENMB_ATTACK_NONE; + } +#endif if (SkelAnime_Update(&this->skelAnime)) { if (this->timer1 > 0) { diff --git a/src/overlays/actors/ovl_En_Niw/z_en_niw.c b/src/overlays/actors/ovl_En_Niw/z_en_niw.c index 5b5afeedba..c805167093 100644 --- a/src/overlays/actors/ovl_En_Niw/z_en_niw.c +++ b/src/overlays/actors/ovl_En_Niw/z_en_niw.c @@ -8,6 +8,7 @@ #include "assets/objects/object_niw/object_niw.h" #include "overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.h" #include "terminal.h" +#include "versions.h" #define FLAGS (ACTOR_FLAG_4 | ACTOR_FLAG_23) @@ -1055,7 +1056,12 @@ void EnNiw_Update(Actor* thisx, PlayState* play) { dist = 20.0f; - if (this->unk_2A8 != 0 && thisx->xyzDistToPlayerSq < SQ(dist) && player->invincibilityTimer == 0) { +#if OOT_VERSION < NTSC_1_1 + if (this->unk_2A8 != 0 && thisx->xyzDistToPlayerSq < SQ(dist) && !(player->stateFlags1 & PLAYER_STATE1_26)) +#else + if (this->unk_2A8 != 0 && thisx->xyzDistToPlayerSq < SQ(dist) && player->invincibilityTimer == 0) +#endif + { Actor_SetPlayerKnockbackLarge(play, &this->actor, 2.0f, thisx->world.rot.y, 0.0f, 0x10); } diff --git a/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.c b/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.c index 11a788ec5a..cf4411a1d5 100644 --- a/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.c +++ b/src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.c @@ -3,6 +3,7 @@ #include "assets/objects/object_os_anime/object_os_anime.h" #include "overlays/actors/ovl_En_Niw/z_en_niw.h" #include "terminal.h" +#include "versions.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_4) @@ -259,6 +260,7 @@ void func_80ABA244(EnNiwLady* this, PlayState* play) { PRINTF(VT_FGCOL(GREEN) "☆☆☆☆☆ this->message_end_code ☆☆ %d\n" VT_RST, this->unk_262); PRINTF("\n\n"); if (MaskReaction_GetTextId(play, MASK_REACTION_SET_CUCCO_LADY) == 0) { +#if OOT_VERSION >= NTSC_1_1 if (this->actor.textId == 0x503C) { Sfx_PlaySfxCentered(NA_SE_SY_ERROR); this->unk_26C = 2; @@ -266,6 +268,7 @@ void func_80ABA244(EnNiwLady* this, PlayState* play) { this->actionFunc = func_80ABA654; return; } +#endif this->unk_26E = phi_s1 + 1; if (phi_s1 == 7) { Sfx_PlaySfxCentered(NA_SE_SY_TRE_BOX_APPEAR); @@ -286,6 +289,13 @@ void func_80ABA244(EnNiwLady* this, PlayState* play) { if (this->unk_26A != this->cuccosInPen) { if (this->cuccosInPen < this->unk_26A) { Sfx_PlaySfxCentered(NA_SE_SY_ERROR); +#if OOT_VERSION < NTSC_1_1 + if (phi_s1 == 9) { + this->unk_26C = 2; + this->unk_262 = TEXT_STATE_EVENT; + this->actionFunc = func_80ABA654; + } +#endif } else if (phi_s1 + 1 < 9) { Sfx_PlaySfxCentered(NA_SE_SY_TRE_BOX_APPEAR); } diff --git a/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.c b/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.c index 3fe68d7218..0fad60729e 100644 --- a/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.c +++ b/src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.c @@ -8,6 +8,7 @@ #include "assets/scenes/misc/hakaana_ouke/hakaana_ouke_scene.h" #include "assets/scenes/overworld/spot02/spot02_scene.h" #include "terminal.h" +#include "versions.h" #define FLAGS (ACTOR_FLAG_4 | ACTOR_FLAG_25) @@ -152,10 +153,14 @@ void func_80ABF0CC(EnOkarinaTag* this, PlayState* play) { if (play->sceneId == SCENE_WATER_TEMPLE) { play->msgCtx.msgMode = MSGMODE_PAUSED; } +#if OOT_VERSION < NTSC_1_1 + play->msgCtx.ocarinaMode = OCARINA_MODE_04; +#else if ((play->sceneId != SCENE_GREAT_FAIRYS_FOUNTAIN_MAGIC) && (play->sceneId != SCENE_GREAT_FAIRYS_FOUNTAIN_SPELLS)) { play->msgCtx.ocarinaMode = OCARINA_MODE_04; } +#endif Sfx_PlaySfxCentered(NA_SE_SY_CORRECT_CHIME); this->actionFunc = func_80ABEF2C; return; diff --git a/src/overlays/actors/ovl_En_Rr/z_en_rr.c b/src/overlays/actors/ovl_En_Rr/z_en_rr.c index 9dfd99b46c..ac1f25b8b6 100644 --- a/src/overlays/actors/ovl_En_Rr/z_en_rr.c +++ b/src/overlays/actors/ovl_En_Rr/z_en_rr.c @@ -7,6 +7,7 @@ #include "z_en_rr.h" #include "assets/objects/object_rr/object_rr.h" #include "terminal.h" +#include "versions.h" #define FLAGS (ACTOR_FLAG_ATTENTION_ENABLED | ACTOR_FLAG_HOSTILE | ACTOR_FLAG_4 | ACTOR_FLAG_5 | ACTOR_FLAG_10) @@ -480,11 +481,16 @@ void EnRr_CollisionCheck(EnRr* this, PlayState* play) { if (this->actor.colChkInfo.health == 0) { this->dropType = RR_DROP_RANDOM_RUPEE; } +#if OOT_VERSION < NTSC_1_1 + this->effectTimer = 20; + Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_XLU, 80); +#else if (this->actor.colorFilterTimer == 0) { this->effectTimer = 20; Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_BLUE, 255, COLORFILTER_BUFFLAG_XLU, 80); } +#endif EnRr_SetupStunned(this); return; case RR_DMG_LIGHT_MAGIC: // Unused light magic diff --git a/src/overlays/actors/ovl_En_Takara_Man/z_en_takara_man.c b/src/overlays/actors/ovl_En_Takara_Man/z_en_takara_man.c index b90485149a..87e2b836ea 100644 --- a/src/overlays/actors/ovl_En_Takara_Man/z_en_takara_man.c +++ b/src/overlays/actors/ovl_En_Takara_Man/z_en_takara_man.c @@ -6,6 +6,7 @@ #include "z_en_takara_man.h" #include "terminal.h" +#include "versions.h" #include "assets/objects/object_ts/object_ts.h" #define FLAGS \ @@ -161,7 +162,11 @@ void func_80B17A6C(EnTakaraMan* this, PlayState* play) { if (Actor_HasParent(&this->actor, play)) { this->actionFunc = func_80B17AC4; } else { +#if OOT_VERSION < NTSC_1_1 + Actor_OfferGetItem(&this->actor, play, GI_SMALL_KEY, 2000.0f, 1000.0f); +#else Actor_OfferGetItem(&this->actor, play, GI_DOOR_KEY, 2000.0f, 1000.0f); +#endif } } diff --git a/src/overlays/actors/ovl_En_Tp/z_en_tp.c b/src/overlays/actors/ovl_En_Tp/z_en_tp.c index a6be2f60fb..cadc1f45da 100644 --- a/src/overlays/actors/ovl_En_Tp/z_en_tp.c +++ b/src/overlays/actors/ovl_En_Tp/z_en_tp.c @@ -5,6 +5,7 @@ */ #include "z_en_tp.h" +#include "versions.h" #include "assets/objects/object_tp/object_tp.h" #define FLAGS 0 @@ -319,7 +320,12 @@ void EnTp_Die(EnTp* this, PlayState* play) { 255, 1, 9, 1); Item_DropCollectibleRandom(play, &this->actor, &this->actor.world.pos, 0x50); } else { - for (i = 0; i < 1; i++) { +#if OOT_VERSION < NTSC_1_1 + for (i = 0; i < 2; i++) +#else + for (i = 0; i < 1; i++) +#endif + { now = (EnTp*)Actor_Spawn(&play->actorCtx, play, ACTOR_EN_TP, this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, 0, 0, 0, TAILPASARAN_FRAGMENT);