1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-07-03 06:24:30 +00:00

Decompile some more objects (#848)

* Object_FU limbs and skel OK

* limbs OK

* Object_FU textures OK

* Object_FU face textures OK

* Symbols in en_fu.c

* en_fu.c limb enum

* Remove Object_fu from undefined_syms, move textures to draw, and small cleanup

* Object_bird OK

* Object_Bird OK, added cutscene for shot sun, and song of storms

* Rainbow Bridge CS

* Great fairy CS

* Cutscene -> Cs

* remove '&' from Cutscenes

* Cleanup object_bird

* Update z_en_fu.c

* Update z_en_fu.h

* Update z_en_fu.c

* Update z_en_fu.h

* Update z_en_fu.h

* DC intro CS

* Zeldas lullaby CS

* Nabooru Knuckle CS

* Owl Lake Hylia CS

* Sun song CS

* Undefined sym in Boss Dodongo

* Missed a few more

* DC tex name

* Windmill man limbs
This commit is contained in:
louist103 2021-06-29 13:22:36 -04:00 committed by GitHub
parent a6bd227137
commit 7446e5eb80
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
27 changed files with 179 additions and 204 deletions

View file

@ -5,6 +5,7 @@
*/
#include "z_bg_breakwall.h"
#include "scenes/dungeons/ddan/ddan_scene.h"
#define FLAGS 0x00000010
@ -25,8 +26,6 @@ void BgBreakwall_WaitForObject(BgBreakwall* this, GlobalContext* globalCtx);
void BgBreakwall_Wait(BgBreakwall* this, GlobalContext* globalCtx);
void BgBreakwall_LavaCoverMove(BgBreakwall* this, GlobalContext* globalCtx);
extern UNK_TYPE D_02014F80;
const ActorInit Bg_Breakwall_InitVars = {
ACTOR_BG_BREAKWALL,
ACTORCAT_BG,
@ -252,7 +251,7 @@ void BgBreakwall_Wait(BgBreakwall* this, GlobalContext* globalCtx) {
if ((wallType == BWALL_DC_ENTRANCE) && (!(Flags_GetEventChkInf(0xB0)))) {
Flags_SetEventChkInf(0xB0);
Cutscene_SetSegment(globalCtx, &D_02014F80);
Cutscene_SetSegment(globalCtx, gDcOpeningCs);
gSaveContext.cutsceneTrigger = 1;
Audio_PlaySoundGeneral(NA_SE_SY_CORRECT_CHIME, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
func_8002DF54(globalCtx, NULL, 0x31);

View file

@ -7,13 +7,15 @@
#include "z_bg_dy_yoseizo.h"
#include "vt.h"
#include "overlays/actors/ovl_Demo_Effect/z_demo_effect.h"
#include "scenes/indoors/yousei_izumi_yoko/yousei_izumi_yoko_scene.h"
#include "scenes/indoors/daiyousei_izumi/daiyousei_izumi_scene.h"
#define FLAGS 0x02000030
#define THIS ((BgDyYoseizo*)thisx)
typedef enum {
/* 0 */ FAIRY_UPGRADE_SPIN_ATTACK,
/* 0 */ FAIRY_UPGRADE_MAGIC,
/* 1 */ FAIRY_UPGRADE_DOUBLE_MAGIC,
/* 2 */ FAIRY_UPGRADE_HALF_DAMAGE
} BgDyYoseizoRewardType;
@ -65,12 +67,6 @@ const ActorInit Bg_Dy_Yoseizo_InitVars = {
NULL,
};
extern CutsceneData D_02000130;
extern CutsceneData D_02000160;
extern CutsceneData D_02001020;
extern CutsceneData D_020013E0;
extern CutsceneData D_02001F40;
extern CutsceneData D_020025D0;
extern AnimationHeader D_0600092C; // Giving spell to spin-shrink, arms, leg, hair up
extern AnimationHeader D_06001DF0; // Lounging
extern AnimationHeader D_060031C0; // Upright to Lounging
@ -202,7 +198,7 @@ void BgDyYoseizo_CheckMagicAcquired(BgDyYoseizo* this, GlobalContext* globalCtx)
if (Flags_GetSwitch(globalCtx, 0x38)) {
globalCtx->msgCtx.unk_E3EE = 4;
if (globalCtx->sceneNum == SCENE_DAIYOUSEI_IZUMI) {
if (!gSaveContext.magicAcquired && (this->fountainType != FAIRY_UPGRADE_SPIN_ATTACK)) {
if (!gSaveContext.magicAcquired && (this->fountainType != FAIRY_UPGRADE_MAGIC)) {
Actor_Kill(&this->actor);
return;
}
@ -245,7 +241,7 @@ void BgDyYoseizo_ChooseType(BgDyYoseizo* this, GlobalContext* globalCtx) {
}
} else {
switch (this->fountainType) {
case FAIRY_UPGRADE_SPIN_ATTACK:
case FAIRY_UPGRADE_MAGIC:
if (!gSaveContext.magicAcquired || BREG(2)) {
// Spin Attack speed UP
osSyncPrintf(VT_FGCOL(GREEN) " ☆☆☆☆☆ 回転切り速度UP ☆☆☆☆☆ \n" VT_RST, &gSaveContext);
@ -277,30 +273,30 @@ void BgDyYoseizo_ChooseType(BgDyYoseizo* this, GlobalContext* globalCtx) {
if (globalCtx->sceneNum != SCENE_DAIYOUSEI_IZUMI) {
switch (this->fountainType) {
case FAIRY_SPELL_FARORES_WIND:
globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(&D_02000160);
globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(gGreatFairyFaroresWindCs);
gSaveContext.cutsceneTrigger = 1;
break;
case FAIRY_SPELL_DINS_FIRE:
globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(&D_02001020);
globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(gGreatFairyDinsFireCs);
gSaveContext.cutsceneTrigger = 1;
break;
case FAIRY_SPELL_NAYRUS_LOVE:
globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(&D_02001F40);
globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(gGreatFairyNayrusLoveCs);
gSaveContext.cutsceneTrigger = 1;
break;
}
} else {
switch (this->fountainType) {
case FAIRY_UPGRADE_SPIN_ATTACK:
globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(&D_02000130);
case FAIRY_UPGRADE_MAGIC:
globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(gGreatFairyMagicCs);
gSaveContext.cutsceneTrigger = 1;
break;
case FAIRY_UPGRADE_DOUBLE_MAGIC:
globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(&D_020013E0);
globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(gGreatFairyDoubleMagicCs);
gSaveContext.cutsceneTrigger = 1;
break;
case FAIRY_UPGRADE_HALF_DAMAGE:
globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(&D_020025D0);
globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(gGreatFairyDoubleDefenceCs);
gSaveContext.cutsceneTrigger = 1;
break;
}
@ -712,7 +708,7 @@ void BgDyYoseizo_Give_Reward(BgDyYoseizo* this, GlobalContext* globalCtx) {
actionIndex = globalCtx->csCtx.npcActions[0]->action - 10;
switch (actionIndex) {
case FAIRY_UPGRADE_SPIN_ATTACK:
case FAIRY_UPGRADE_MAGIC:
gSaveContext.magicAcquired = true;
gSaveContext.unk_13F6 = 0x30;
Interface_ChangeAlpha(9);

View file

@ -5,6 +5,7 @@
*/
#include "z_bg_gjyo_bridge.h"
#include "scenes/dungeons/ganon_tou/ganon_tou_scene.h"
#define FLAGS 0x00000000
@ -38,7 +39,6 @@ static InitChainEntry sInitChain[] = {
extern Gfx D_06000600[];
extern CollisionHeader D_06000DB8;
extern CutsceneData D_02002640[];
void BgGjyoBridge_Init(Actor* thisx, GlobalContext* globalCtx) {
BgGjyoBridge* this = THIS;
@ -79,7 +79,7 @@ void BgGjyoBridge_TriggerCutscene(BgGjyoBridge* this, GlobalContext* globalCtx)
(player->actor.world.pos.x < 300.0f) && (player->actor.world.pos.y > 1340.0f) &&
(player->actor.world.pos.z > 1340.0f) && (player->actor.world.pos.z < 1662.0f) &&
!Gameplay_InCsMode(globalCtx)) {
globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(&D_02002640);
globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(gRainbowBridgeCs);
gSaveContext.cutsceneTrigger = 1;
this->actionFunc = BgGjyoBridge_SpawnBridge;
}

View file

@ -1,4 +1,5 @@
#include "z_boss_dodongo.h"
#include "scenes/dungeons/ddan_boss/ddan_boss_room_1.h"
#define FLAGS 0x00000035
@ -55,7 +56,6 @@ static InitChainEntry sInitChain[] = {
extern SkeletonHeader D_0601B310;
extern AnimationHeader D_0600F0D8;
extern u64 D_030021D8[];
extern AnimationHeader D_06008EEC;
extern u64 D_06017410[]; // Title card
extern AnimationHeader D_0601CAE0;
@ -231,7 +231,7 @@ void BossDodongo_Init(Actor* thisx, GlobalContext* globalCtx) {
Collider_SetJntSph(globalCtx, &this->collider, &this->actor, &sJntSphInit, this->items);
if (Flags_GetClear(globalCtx, globalCtx->roomCtx.curRoom.num)) { // KD is dead
temp_s1_3 = SEGMENTED_TO_VIRTUAL(&D_030021D8);
temp_s1_3 = SEGMENTED_TO_VIRTUAL(gDodongosCavernBossLavaFloorTex);
temp_s2 = SEGMENTED_TO_VIRTUAL(sLavaFloorRockTex);
Actor_Kill(&this->actor);
@ -1021,7 +1021,7 @@ void BossDodongo_Update(Actor* thisx, GlobalContext* globalCtx2) {
}
}
func_808C1554(D_030021D8, sLavaFloorLavaTex, this->unk_19E, this->unk_224);
func_808C1554(gDodongosCavernBossLavaFloorTex, sLavaFloorLavaTex, this->unk_19E, this->unk_224);
}
if (this->unk_1C6 != 0) {

View file

@ -6,6 +6,7 @@
#include "z_demo_im.h"
#include "overlays/actors/ovl_En_Arrow/z_en_arrow.h"
#include "scenes/indoors/nakaniwa/nakaniwa_scene.h"
#include "vt.h"
#define FLAGS 0x00000011
@ -101,7 +102,6 @@ const ActorInit Demo_Im_InitVars = {
(ActorFunc)DemoIm_Draw,
};
extern UNK_PTR D_02002524;
extern AnimationHeader D_06000710;
extern AnimationHeader D_06000AFC;
extern Gfx D_0600EDE8[];
@ -906,7 +906,7 @@ void func_80986BF8(DemoIm* this, GlobalContext* globalCtx) {
void func_80986C30(DemoIm* this, GlobalContext* globalCtx) {
if (func_80986A5C(this, globalCtx)) {
globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(&D_02002524);
globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(gZeldasCourtyardLullabyCs);
gSaveContext.cutsceneTrigger = 1;
gSaveContext.eventChkInf[5] |= 0x200;
Item_Give(globalCtx, ITEM_SONG_LULLABY);

View file

@ -5,6 +5,7 @@
*/
#include "z_en_bird.h"
#include "objects/object_bird/object_bird.h"
#define FLAGS 0x00000000
@ -36,9 +37,6 @@ static InitChainEntry sInitChain[] = {
ICHAIN_F32(targetArrowOffset, 5600, ICHAIN_STOP),
};
extern AnimationHeader D_0600006C;
extern SkeletonHeader D_06002190;
void EnBird_SetupAction(EnBird* this, EnBirdActionFunc actionFunc) {
this->actionFunc = actionFunc;
}
@ -48,7 +46,7 @@ void EnBird_Init(Actor* thisx, GlobalContext* globalCtx) {
Actor_ProcessInitChain(&this->actor, sInitChain);
Actor_SetScale(&this->actor, 0.01);
SkelAnime_Init(globalCtx, &this->skelAnime, &D_06002190, &D_0600006C, NULL, NULL, 0);
SkelAnime_Init(globalCtx, &this->skelAnime, &gBirdSkel, &gBirdFlyAnim, NULL, NULL, 0);
ActorShape_Init(&this->actor.shape, 5500, ActorShadow_DrawCircle, 4);
this->unk_194 = 0;
this->unk_198 = 0;
@ -68,9 +66,9 @@ void EnBird_Destroy(Actor* thisx, GlobalContext* globalCtx) {
}
void func_809C1CAC(EnBird* this, s16 params) {
f32 frameCount = Animation_GetLastFrame(&D_0600006C);
f32 frameCount = Animation_GetLastFrame(&gBirdFlyAnim);
f32 playbackSpeed = this->unk_19C ? 0.0f : 1.0f;
AnimationHeader* anim = &D_0600006C;
AnimationHeader* anim = &gBirdFlyAnim;
this->unk_198 = Rand_S16Offset(5, 0x23);
Animation_Change(&this->skelAnime, anim, playbackSpeed, 0.0f, frameCount, ANIMMODE_LOOP, 0.0f);

View file

@ -5,6 +5,8 @@
*/
#include "z_en_fu.h"
#include "objects/object_fu/object_fu.h"
#include "scenes/indoors/hakasitarelay/hakasitarelay_scene.h"
#define FLAGS 0x02000019
@ -66,21 +68,6 @@ static Vec3f sMtxSrc = {
0.0f,
};
static UNK_PTR sEyesSegments[] = {
0x06005F20,
0x06006320,
};
static UNK_PTR sMouthSegments[] = {
0x06006720,
0x06006920,
};
extern AnimationHeader D_0600057C;
extern AnimationHeader D_06000B04;
extern FlexSkeletonHeader D_06006C90;
extern CutsceneData D_0200E080[];
typedef enum {
/* 0x00 */ FU_FACE_CALM,
/* 0x01 */ FU_FACE_MAD
@ -91,8 +78,9 @@ void EnFu_Init(Actor* thisx, GlobalContext* globalCtx) {
EnFu* this = THIS;
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 36.0f);
SkelAnime_InitFlex(globalCtx, &this->skelanime, &D_06006C90, &D_06000B04, this->jointTable, this->morphTable, 16);
Animation_PlayLoop(&this->skelanime, &D_06000B04);
SkelAnime_InitFlex(globalCtx, &this->skelanime, &gWindmillManSkel, &gWindmillManPlayStillAnim, this->jointTable,
this->morphTable, FU_LIMB_MAX);
Animation_PlayLoop(&this->skelanime, &gWindmillManPlayStillAnim);
Collider_InitCylinder(globalCtx, &this->collider);
Collider_SetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit);
this->actor.colChkInfo.mass = MASS_IMMOVABLE;
@ -138,9 +126,9 @@ void func_80A1DA04(EnFu* this, GlobalContext* globalCtx) {
this->behaviorFlags &= ~FU_WAIT;
this->actionFunc = EnFu_WaitChild;
if (this->skelanime.animation == &D_0600057C) {
Animation_Change(&this->skelanime, &D_06000B04, 1.0f, 0.0f, Animation_GetLastFrame(&D_06000B04),
ANIMMODE_ONCE, -4.0f);
if (this->skelanime.animation == &gWindmillManPlayAndMoveHeadAnim) {
Animation_Change(&this->skelanime, &gWindmillManPlayStillAnim, 1.0f, 0.0f,
Animation_GetLastFrame(&gWindmillManPlayStillAnim), ANIMMODE_ONCE, -4.0f);
}
}
}
@ -158,8 +146,8 @@ void EnFu_WaitChild(EnFu* this, GlobalContext* globalCtx) {
// if func_80A1D94C returns 1, actionFunc is set to func_80A1DA04
if (func_80A1D94C(this, globalCtx, textID, func_80A1DA04)) {
if (textID == 0x5033) {
Animation_Change(&this->skelanime, &D_0600057C, 1.0f, 0.0f, Animation_GetLastFrame(&D_0600057C),
ANIMMODE_ONCE, -4.0f);
Animation_Change(&this->skelanime, &gWindmillManPlayAndMoveHeadAnim, 1.0f, 0.0f,
Animation_GetLastFrame(&gWindmillManPlayAndMoveHeadAnim), ANIMMODE_ONCE, -4.0f);
}
}
}
@ -190,7 +178,7 @@ void func_80A1DBD4(EnFu* this, GlobalContext* globalCtx) {
func_80078884(NA_SE_SY_CORRECT_CHIME);
this->actionFunc = func_80A1DB60;
this->actor.flags &= ~0x10000;
globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(&D_0200E080);
globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(gSongOfStormsCs);
gSaveContext.cutsceneTrigger = 1;
Item_Give(globalCtx, ITEM_SONG_STORMS);
globalCtx->msgCtx.unk_E3EE = 0;
@ -239,7 +227,7 @@ void EnFu_WaitAdult(EnFu* this, GlobalContext* globalCtx) {
func_8010B680(globalCtx, this->actor.textId, NULL);
this->actionFunc = EnFu_TeachSong;
this->behaviorFlags |= FU_WAIT;
} else if (func_8002F194(&this->actor, globalCtx) != 0) {
} else if (func_8002F194(&this->actor, globalCtx)) {
this->actionFunc = func_80A1DBA0;
} else if (ABS(yawDiff) < 0x2301) {
if (this->actor.xzDistToPlayer < 100.0f) {
@ -276,17 +264,17 @@ void EnFu_Update(Actor* thisx, GlobalContext* globalCtx) {
s32 EnFu_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, void* thisx) {
EnFu* this = THIS;
s32 pad1;
s32 pad;
if (limbIndex == 10) {
if (limbIndex == FU_LIMB_UNK) {
return false;
}
switch (limbIndex) {
case 14:
case FU_LIMB_HEAD:
rot->x += this->lookAngleOffset.y;
rot->z += this->lookAngleOffset.x;
break;
case 8:
case FU_LIMB_CHEST_MUSIC_BOX:
break;
}
@ -294,7 +282,7 @@ s32 EnFu_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList,
return false;
}
if (limbIndex == 8) {
if (limbIndex == FU_LIMB_CHEST_MUSIC_BOX) {
rot->y += (Math_SinS((globalCtx->state.frames * (limbIndex * 50 + 0x814))) * 200.0f);
rot->z += (Math_CosS((globalCtx->state.frames * (limbIndex * 50 + 0x940))) * 200.0f);
}
@ -304,12 +292,14 @@ s32 EnFu_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList,
void EnFu_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, void* thisx) {
EnFu* this = THIS;
if (limbIndex == 14) {
if (limbIndex == FU_LIMB_HEAD) {
Matrix_MultVec3f(&sMtxSrc, &this->actor.focus.pos);
}
}
void EnFu_Draw(Actor* thisx, GlobalContext* globalCtx) {
static void* sEyesSegments[] = { gWindmillManEyeClosedTex, gWindmillManEyeAngryTex };
static void* sMouthSegments[] = { gWindMillManMouthOpenTex, gWindMillManMouthAngryTex };
s32 pad;
EnFu* this = THIS;

View file

@ -8,12 +8,32 @@ struct EnFu;
typedef void (*EnFuActionFunc)(struct EnFu*, GlobalContext*);
typedef enum {
/* 0x00 */ FU_LIMB_ROOT,
/* 0x01 */ FU_LIMB_TORSO,
/* 0x02 */ FU_LIMB_LEFT_THIGH,
/* 0x03 */ FU_LIMB_LEFT_LEG,
/* 0x04 */ FU_LIMB_LEFT_FOOT,
/* 0x05 */ FU_LIMB_RIGHT_THIGH,
/* 0x06 */ FU_LIMB_RIGHT_LEG,
/* 0x07 */ FU_LIMB_RIGHT_FOOT,
/* 0x08 */ FU_LIMB_CHEST_MUSIC_BOX,
/* 0x09 */ FU_LIMB_LEFT_ARM_MUSIC_BOX,
/* 0x0A */ FU_LIMB_UNK,
/* 0x0B */ FU_LIMB_RIGHT_SHOULDER,
/* 0x0C */ FU_LIMB_RIGHT_ARM,
/* 0x0D */ FU_LIMB_RIGHT_HAND_AND_CRANK,
/* 0x0E */ FU_LIMB_HEAD,
/* 0x0F */ FU_LIMB_HORN,
/* 0x10 */ FU_LIMB_MAX
} EnFuLimb;
typedef struct EnFu {
/* 0x0000 */ Actor actor;
/* 0x014C */ ColliderCylinder collider;
/* 0x0198 */ SkelAnime skelanime;
/* 0x01DC */ Vec3s jointTable[16];
/* 0x023C */ Vec3s morphTable[16];
/* 0x01DC */ Vec3s jointTable[FU_LIMB_MAX];
/* 0x023C */ Vec3s morphTable[FU_LIMB_MAX];
/* 0x029C */ Vec3s lookAngleOffset; // offset applied to neck rotation to look at link when he is close
/* 0x02A2 */ Vec3s unk_2A2;
/* 0x02A8 */ u16 behaviorFlags;

View file

@ -5,7 +5,7 @@
*/
#include "z_en_ik.h"
#include "scenes/dungeons/jyasinboss/jyasinboss_scene.h"
#include "vt.h"
#define FLAGS 0x00000010
@ -53,7 +53,6 @@ void func_80A77EDC(EnIk* this, GlobalContext* globalCtx);
void func_80A78160(EnIk* this, GlobalContext* globalCtx);
void func_80A781CC(Actor* thisx, GlobalContext* globalCtx);
extern UNK_TYPE D_02003F80;
extern AnimationHeader D_06001C28;
extern AnimationHeader D_06002538;
extern AnimationHeader D_060029FC;
@ -1451,7 +1450,7 @@ void func_80A781CC(Actor* thisx, GlobalContext* globalCtx) {
if (!Gameplay_InCsMode(globalCtx)) {
this->actor.update = EnIk_Update;
this->actor.draw = EnIk_Draw;
Cutscene_SetSegment(globalCtx, &D_02003F80);
Cutscene_SetSegment(globalCtx, gNabooruKnuckleDefeatCs);
gSaveContext.cutsceneTrigger = 1;
Actor_SetScale(&this->actor, 0.01f);
gSaveContext.eventChkInf[3] |= 0x1000;

View file

@ -5,6 +5,7 @@
*/
#include "z_en_okarina_tag.h"
#include "scenes/misc/hakaana_ouke/hakaana_ouke_scene.h"
#include "vt.h"
#define FLAGS 0x02000010
@ -36,7 +37,6 @@ const ActorInit En_Okarina_Tag_InitVars = {
extern CutsceneData D_02003C80[];
extern CutsceneData D_02005020[];
extern CutsceneData D_020024A0[];
extern CutsceneData D_80ABF9D0[];
extern CutsceneData D_80ABFB40[];
@ -308,7 +308,7 @@ void func_80ABF7CC(EnOkarinaTag* this, GlobalContext* globalCtx) {
if ((func_8010BDBC(&globalCtx->msgCtx) == 5) && (func_80106BC8(globalCtx) != 0)) {
func_80106CCC(globalCtx);
if (!CHECK_QUEST_ITEM(QUEST_SONG_SUN)) {
globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(&D_020024A0);
globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(&gSunSongTeachCs);
gSaveContext.cutsceneTrigger = 1;
}
this->actionFunc = func_80ABF708;

View file

@ -5,6 +5,8 @@
*/
#include "z_en_owl.h"
#include "scenes/overworld/spot06/spot06_scene.h"
#include "scenes/overworld/spot16/spot16_scene.h"
#include "vt.h"
#define FLAGS 0x00000019
@ -12,8 +14,6 @@
#define THIS ((EnOwl*)thisx)
extern AnimationHeader D_0600C1C4;
extern CsCmdActorAction D_0201E6A0;
extern CsCmdActorAction D_0201B0C0;
extern AnimationHeader D_06001168;
extern FlexSkeletonHeader D_0600C0E8;
extern FlexSkeletonHeader D_060100B0;
@ -945,12 +945,12 @@ void func_80ACC00C(EnOwl* this, GlobalContext* globalCtx) {
osSyncPrintf(VT_FGCOL(CYAN));
osSyncPrintf("SPOT 06 の デモがはしった\n"); // Demo of SPOT 06
osSyncPrintf(VT_RST);
globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(&D_0201B0C0);
globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(gLakeHyliaOwlCs);
this->actor.draw = NULL;
break;
case 8:
case 9:
globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(&D_0201E6A0);
globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(gDmtOwlCs);
this->actor.draw = NULL;
break;
default:

View file

@ -6,6 +6,7 @@
#include "z_shot_sun.h"
#include "overlays/actors/ovl_En_Elf/z_en_elf.h"
#include "scenes/overworld/spot06/spot06_scene.h"
#include "vt.h"
#define FLAGS 0x00000009
@ -21,8 +22,6 @@ void ShotSun_TriggerFairy(ShotSun* this, GlobalContext* globalCtx);
void func_80BADF0C(ShotSun* this, GlobalContext* globalCtx);
void ShotSun_UpdateHyliaSun(ShotSun* this, GlobalContext* globalCtx);
extern CutsceneData D_02007020[];
const ActorInit Shot_Sun_InitVars = {
ACTOR_SHOT_SUN,
ACTORCAT_PROP,
@ -166,7 +165,7 @@ void ShotSun_UpdateHyliaSun(ShotSun* this, GlobalContext* globalCtx) {
osSyncPrintf(VT_FGCOL(CYAN) "SHOT_SUN HIT!!!!!!!\n" VT_RST);
if (INV_CONTENT(ITEM_ARROW_FIRE) == ITEM_NONE) {
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_ITEM_ETCETERA, 700.0f, -800.0f, 7261.0f, 0, 0, 0, 7);
globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(D_02007020);
globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(gFireArrowsCS);
if (1) {}
gSaveContext.cutsceneTrigger = 1;
} else {