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:
parent
a6bd227137
commit
7446e5eb80
27 changed files with 179 additions and 204 deletions
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue