summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcadmic <cadmic24@gmail.com>2024-10-01 11:46:17 -0700
committerGitHub <noreply@github.com>2024-10-01 14:46:17 -0400
commit37e72d7d95a659d80a9ae04dad21828d03248cb2 (patch)
tree760b3b010de322177ea05347ce30a8435ddbc55b /src
parented77e143b6de64a2ee9681817bd5c15ca7859cae (diff)
[ntsc-1.0/1.1] Match actor changes introduced in NTSC 1.1 (#2251)
* [ntsc-1.0/1.1] Match actor changes introduced in NTSC 1.1 * SPHERE_DAMAGE -> FLARE_DANCER_BODY_DMG * Fix Actor_SetPlayerKnockbackLargeNoDamage merge
Diffstat (limited to 'src')
-rw-r--r--src/overlays/actors/ovl_Bg_Dy_Yoseizo/z_bg_dy_yoseizo.c45
-rw-r--r--src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c25
-rw-r--r--src/overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.c9
-rw-r--r--src/overlays/actors/ovl_En_Bili/z_en_bili.c8
-rw-r--r--src/overlays/actors/ovl_En_Dha/z_en_dha.c11
-rw-r--r--src/overlays/actors/ovl_En_Door/z_en_door.c4
-rw-r--r--src/overlays/actors/ovl_En_Fd/z_en_fd.c31
-rw-r--r--src/overlays/actors/ovl_En_Firefly/z_en_firefly.c8
-rw-r--r--src/overlays/actors/ovl_En_Hy/z_en_hy.c9
-rw-r--r--src/overlays/actors/ovl_En_Ko/z_en_ko.c9
-rw-r--r--src/overlays/actors/ovl_En_Mb/z_en_mb.c15
-rw-r--r--src/overlays/actors/ovl_En_Niw/z_en_niw.c8
-rw-r--r--src/overlays/actors/ovl_En_Niw_Lady/z_en_niw_lady.c10
-rw-r--r--src/overlays/actors/ovl_En_Okarina_Tag/z_en_okarina_tag.c5
-rw-r--r--src/overlays/actors/ovl_En_Rr/z_en_rr.c6
-rw-r--r--src/overlays/actors/ovl_En_Takara_Man/z_en_takara_man.c5
-rw-r--r--src/overlays/actors/ovl_En_Tp/z_en_tp.c8
17 files changed, 187 insertions, 29 deletions
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 e9f6bec20..a7d11b126 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 b9673f51c..e34ea1fae 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 287ff5629..d1b915ee4 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 fc1efd113..f7bbd05f0 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 5bdbf42d3..3d31717cd 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;
+ }
+#else
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
}
+#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 c89a88232..301b80496 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 0513ff2b0..64f6cc1ed 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 e9d562c7c..e1d31a321 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 3ad2e8b94..16a448a1d 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 d66689e0d..2fb0b8597 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 6318e1ea0..ac745b9db 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;
+ 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;
-#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;
}
+#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 5b5afeedb..c80516709 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 11a788ec5..cf4411a1d 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 3fe68d721..0fad60729 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 9dfd99b46..ac1f25b8b 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 b90485149..87e2b836e 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 a6be2f60f..cadc1f45d 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);