mirror of
https://github.com/izzy2lost/2ship2harkinian-Android.git
synced 2026-06-19 01:20:08 -07:00
Cutscene Documentation (z_eventmgr.c OK) (#1164)
* begin cutscene docs * more docs * more docs * z_eventmgr.c OK Co-authored-by: Thar0 <Thar0@users.noreply.github.com> * cutscene camera * commands WIP * more docs * merge master * csId, oof * more cleanup * more docs, csCam * more cleanup * more docs * more * cleanup functions.h * better misc cmd docs * apply discord discussions * small adjustment * more cleanup * more docs * more cleanup * more cs cam docs * small fix * cmd cleanup * small cleanup * better match, thanks anon * remove last return * PR suggestions, small cleanup * next PR review * rm internal funcs from functions.h * more PR * add comment * csCam interp typedef handler * cleanup, scene cmd * missed an enum use * ActorCutscene -> CutsceneManager, PR Suggestions * more PR Suggestions * more actorCutscene cleanup * R_USE_DEBUG_CUTSCENE * more small docs * move functions to cutscene.h * PlayerCsId * fix bss * missed some function headers * more scene cleanup * more scene cleanup * missed one * CS_SPAWN_FLAGS * wrong usage of macro * more cleanup * name last cs transition types * IsNext bool * update namefixer * fix namefixer * more cleanup * add comment * fixed enums for motion blur * consistent cutscene lists * cutscene entry func consistent * PR Suggestion * fig review * fix additionalCsId name in actor * more pr review * bss --------- Co-authored-by: Thar0 <Thar0@users.noreply.github.com> Co-authored-by: angie <angheloalf95@gmail.com>
This commit is contained in:
co-authored by
Thar0
angie
parent
543c38ae06
commit
9d25fad407
+4
-71
@@ -722,7 +722,7 @@ void Actor_KillAllWithMissingObject(PlayState* play, ActorContext* actorCtx);
|
||||
void func_800BA798(PlayState* play, ActorContext* actorCtx);
|
||||
void Actor_CleanupContext(ActorContext* actorCtx, PlayState* play);
|
||||
Actor* Actor_Spawn(ActorContext* actorCtx, PlayState* play, s16 actorId, f32 posX, f32 posY, f32 posZ, s16 rotX, s16 rotY, s16 rotZ, s32 params);
|
||||
Actor* Actor_SpawnAsChildAndCutscene(ActorContext* actorCtx, PlayState* play, s16 index, f32 x, f32 y, f32 z, s16 rotX, s16 rotY, s16 rotZ, s32 params, u32 cutscene, u32 halfDaysBits, Actor* parent);
|
||||
Actor* Actor_SpawnAsChildAndCutscene(ActorContext* actorCtx, PlayState* play, s16 index, f32 x, f32 y, f32 z, s16 rotX, s16 rotY, s16 rotZ, s32 params, u32 csId, u32 halfDaysBits, Actor* parent);
|
||||
Actor* Actor_SpawnAsChild(ActorContext* actorCtx, Actor* parent, PlayState* play, s16 actorId, f32 posX, f32 posY, f32 posZ, s16 rotX, s16 rotY, s16 rotZ, s32 params);
|
||||
void Actor_SpawnTransitionActors(PlayState* play, ActorContext* actorCtx);
|
||||
void Enemy_StartFinishingBlow(PlayState* play, Actor* actor);
|
||||
@@ -1064,23 +1064,6 @@ s32 Actor_TrackPlayerSetFocusHeight(PlayState* play, Actor* actor, Vec3s* headRo
|
||||
s32 Actor_TrackPlayer(PlayState* play, Actor* actor, Vec3s* headRot, Vec3s* torsoRot, Vec3f focusPos);
|
||||
void SaveContext_Init(void);
|
||||
|
||||
void Cutscene_Init(PlayState* play, CutsceneContext* csCtx);
|
||||
void Cutscene_Start(PlayState* play, CutsceneContext* csCtx);
|
||||
void Cutscene_End(PlayState* play, CutsceneContext* csCtx);
|
||||
void Cutscene_Update1(PlayState* play, CutsceneContext* csCtx);
|
||||
void Cutscene_Update2(PlayState* play, CutsceneContext* csCtx);
|
||||
void func_800EDBE0(PlayState* play);
|
||||
void func_800EDDB0(PlayState* play);
|
||||
void Cutscene_LoadCutsceneData(PlayState* play, u8 csIndex);
|
||||
void Cutscene_ActorTranslate(Actor* actor, PlayState* play, s32 actorActionIndex);
|
||||
void Cutscene_ActorTranslateAndYaw(Actor* actor, PlayState* play, s32 actorActionIndex);
|
||||
void Cutscene_ActorTranslateAndYawSmooth(Actor* actor, PlayState* play, s32 actorActionIndex);
|
||||
void Cutscene_ActorTranslateXZAndYawSmooth(Actor* actor, PlayState* play, s32 actorActionIndex);
|
||||
s32 Cutscene_GetSceneLayer(PlayState* play);
|
||||
s32 Cutscene_GetActorActionIndex(PlayState* play, u16 actorActionCmd);
|
||||
s32 Cutscene_CheckActorAction(PlayState* play, u16 actorActionCmd);
|
||||
u8 Cutscene_IsPlaying(PlayState* play);
|
||||
|
||||
void GetItem_Draw(PlayState* play, s16 drawId);
|
||||
|
||||
void SoundSource_InitAll(PlayState* play);
|
||||
@@ -1090,35 +1073,6 @@ void SoundSource_PlaySfxEachFrameAtFixedWorldPos(PlayState* play, Vec3f* worldPo
|
||||
u16 QuestHint_GetTatlTextId(PlayState* play);
|
||||
|
||||
u16 Text_GetFaceReaction(PlayState* play, u32 reactionSet);
|
||||
void EnvFlags_UnsetAll(PlayState* play);
|
||||
void EnvFlags_Set(PlayState* play, s16 flag);
|
||||
void EnvFlags_Unset(PlayState* play, s16 flag);
|
||||
s32 EnvFlags_Get(PlayState* play, s16 flag);
|
||||
s16 func_800F1460(s16 param_1);
|
||||
ActorCutscene* ActorCutscene_GetCutsceneImpl(s16 index);
|
||||
void ActorCutscene_Init(PlayState* play, ActorCutscene* cutscenes, s32 num);
|
||||
void func_800F15D8(Camera* camera);
|
||||
void ActorCutscene_ClearWaiting(void);
|
||||
// void ActorCutscene_ClearNextCutscenes(void);
|
||||
// void ActorCutscene_MarkNextCutscenes(void);
|
||||
// void ActorCutscene_End(void);
|
||||
s16 ActorCutscene_Update(void);
|
||||
void ActorCutscene_SetIntentToPlay(s16 index);
|
||||
s16 ActorCutscene_GetCanPlayNext(s16 index);
|
||||
s16 ActorCutscene_StartAndSetUnkLinkFields(s16 index, Actor* actor);
|
||||
s16 ActorCutscene_StartAndSetFlag(s16 index, Actor* actor);
|
||||
s16 ActorCutscene_Start(s16 index, Actor* actor);
|
||||
s16 ActorCutscene_Stop(s16 index);
|
||||
s16 ActorCutscene_GetCurrentIndex(void);
|
||||
ActorCutscene* ActorCutscene_GetCutscene(s16 index);
|
||||
s16 ActorCutscene_GetAdditionalCutscene(s16 index);
|
||||
s16 ActorCutscene_GetLength(s16 index);
|
||||
s32 func_800F2138(s32 arg0);
|
||||
s32 func_800F2178(s16 arg0);
|
||||
s16 ActorCutscene_GetCurrentSubCamId(s16 index);
|
||||
s16 func_800F21CC(void);
|
||||
s32 func_800F22C4(s16 param_1, Actor* actor);
|
||||
void ActorCutscene_SetReturnCamera(s16 index);
|
||||
|
||||
s32 func_800F3940(PlayState* play);
|
||||
// void func_800F39B4(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
|
||||
@@ -1776,8 +1730,8 @@ void Scene_Command09(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandSoundSettings(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandEchoSetting(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandAltHeaderList(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandCutsceneScriptList(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandCutsceneList(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandActorCutsceneList(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandMiniMap(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_Command1D(PlayState* play, SceneCmd* cmd);
|
||||
void Scene_CommandMiniMapCompassInfo(PlayState* play, SceneCmd* cmd);
|
||||
@@ -1957,27 +1911,6 @@ void Message_FindCreditsMessage(PlayState* play, u16 textId);
|
||||
void func_8015E7EC(PlayState* play, UNK_PTR puParm2);
|
||||
// void func_8015F8A8(UNK_TYPE4 ctxt);
|
||||
|
||||
// void func_80161180(void);
|
||||
s32 func_8016119C(Camera* camera, DbCameraUnkStruct* arg1);
|
||||
// void func_8016122C(void);
|
||||
// void func_801612B8(void);
|
||||
s32 func_80161998(u8* cmd, DbCameraUnkStruct* arg1);
|
||||
// s32 func_80161BAC(void);
|
||||
void func_80161BE0(s16 arg0);
|
||||
void func_80161C0C(void);
|
||||
// void func_80161C20(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
|
||||
// void func_80161E4C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
|
||||
// void func_801620CC(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
|
||||
// void func_8016237C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE1 param_5, UNK_TYPE4 param_6);
|
||||
// void func_801623E4(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
|
||||
// void func_801624EC(void);
|
||||
// void func_8016253C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
|
||||
// void func_801629BC(void);
|
||||
// void func_80162A50(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
|
||||
// void func_80162FF8(void);
|
||||
// void func_801631DC(void);
|
||||
// void func_80163334(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
|
||||
// void func_80163660(void);
|
||||
void* KaleidoManager_FaultAddrConv(void* address, void* param);
|
||||
void KaleidoManager_LoadOvl(KaleidoMgrOverlay* ovl);
|
||||
void KaleidoManager_ClearOvl(KaleidoMgrOverlay* ovl);
|
||||
@@ -2070,7 +2003,7 @@ s32 FrameAdvance_IsEnabled(GameState* thisx);
|
||||
s32 func_8016A02C(GameState* thisx, Actor* actor, s16* yaw);
|
||||
s32 Play_IsUnderwater(PlayState* this, Vec3f* pos);
|
||||
s32 Play_IsDebugCamEnabled(void);
|
||||
void Play_AssignPlayerActorCsIdsFromScene(GameState* thisx, s32 startActorCsId);
|
||||
void Play_AssignPlayerCsIdsFromScene(GameState* thisx, s32 spawnCsId);
|
||||
void Play_FillScreen(GameState* thisx, s16 fillScreenOn, u8 red, u8 green, u8 blue, u8 alpha);
|
||||
void Play_Init(GameState* thisx);
|
||||
|
||||
@@ -2560,7 +2493,7 @@ OcarinaStaff* AudioOcarina_GetRecordingStaff(void);
|
||||
OcarinaStaff* AudioOcarina_GetPlayingStaff(void);
|
||||
OcarinaStaff* AudioOcarina_GetPlaybackStaff(void);
|
||||
void AudioOcarina_TerminaWallGenerateNotes(void);
|
||||
void AudioOcarina_PlayLongScarecrowAfterCredits(void);
|
||||
void AudioOcarina_PlayLongScarecrowSong(void);
|
||||
|
||||
void Audio_Update(void);
|
||||
void AudioSfx_SetProperties(u8 bankId, u8 entryIndex, u8 channelIndex);
|
||||
|
||||
@@ -166,4 +166,7 @@ extern RegEditor* gRegEditor;
|
||||
#define R_ITEM_ICON_WIDTH(i) VREG(76 + i)
|
||||
#define R_ITEM_BTN_WIDTH(i) VREG(80 + i)
|
||||
|
||||
// Name inferred from OoT. Set to true to manually set play->csCtx.script
|
||||
#define R_USE_DEBUG_CUTSCENE dREG(95)
|
||||
|
||||
#endif
|
||||
|
||||
+10
-20
@@ -431,19 +431,9 @@ extern EffectShieldParticleInit shieldParticleInitWood;
|
||||
// extern UNK_TYPE2 D_801BB0FC;
|
||||
// extern UNK_TYPE1 D_801BB100;
|
||||
|
||||
extern u8 D_801BB12C;
|
||||
extern u8 gOpeningEntranceIndex;
|
||||
|
||||
// extern UNK_TYPE1 D_801BC41E;
|
||||
extern ActorCutscene actorCutscenesGlobalCutscenes[8];
|
||||
extern s16 actorCutsceneCurrent;
|
||||
extern s16 actorCutsceneCurrentLength;
|
||||
extern s16 actorCutsceneEnding;
|
||||
extern s16 actorCutsceneCurrentCamera;
|
||||
extern Actor* actorCutsceneCurrentCutsceneActor;
|
||||
// extern UNK_TYPE4 actorCutsceneStartMethod;
|
||||
extern PlayState* actorCutscenesPlayState;
|
||||
extern s16 actorCutsceneReturnCamera;
|
||||
extern s16 D_801BD8C6;
|
||||
extern ActorCutscene sGlobalCutsceneList[8];
|
||||
extern GameStateOverlay gGameStateOverlayTable[];
|
||||
extern s32 gGraphNumGameStates;
|
||||
// extern UNK_TYPE2 D_801BDA70;
|
||||
@@ -764,7 +754,7 @@ extern s32 gDbgCamEnabled;
|
||||
// extern UNK_TYPE2 sQuakeIndex;
|
||||
// extern UNK_TYPE2 sIsCameraUnderwater;
|
||||
extern Input* D_801D0D60;
|
||||
// extern UNK_TYPE2 D_801D0D64;
|
||||
// extern UNK_TYPE2 sPlayerCsIdToCsCamId;
|
||||
// extern UNK_TYPE1 D_801D0D7A;
|
||||
// extern UNK_TYPE1 D_801D0D80;
|
||||
// extern UNK_TYPE1 D_801D11F4;
|
||||
@@ -2335,14 +2325,14 @@ extern SaveContext gSaveContext;
|
||||
// extern UNK_TYPE1 D_801F48C8;
|
||||
|
||||
extern UNK_TYPE D_801F4DDC;
|
||||
extern u8 D_801F4DE0;
|
||||
extern s16 D_801F4DE2;
|
||||
extern u8 gDisablePlayerCsModeStartPos;
|
||||
extern s16 gDungeonBossWarpSceneId;
|
||||
|
||||
extern ActorCutscene* actorCutscenes;
|
||||
extern s16 actorCutsceneCount;
|
||||
extern u8 actorCutsceneWaiting[16];
|
||||
extern ActorCutscene* sSceneCutsceneList;
|
||||
extern s16 sSceneCutsceneCount;
|
||||
extern u8 sWaitingCutsceneList[16];
|
||||
// extern UNK_TYPE1 D_801F4E08;
|
||||
extern u8 actorCutsceneNextCutscenes[16];
|
||||
extern u8 sNextCutsceneList[16];
|
||||
// extern UNK_TYPE1 D_801F4E20;
|
||||
extern u8 D_801F4E30;
|
||||
// extern UNK_TYPE1 D_801F4E31;
|
||||
@@ -2420,7 +2410,7 @@ extern s16 D_801F4E7A;
|
||||
// extern UNK_TYPE1 D_801F6B1E;
|
||||
// extern UNK_TYPE1 D_801F6B20;
|
||||
// extern UNK_TYPE1 D_801F6B22;
|
||||
// extern UNK_TYPE4 D_801F6B50;
|
||||
// extern UNK_TYPE4 sCurCsCamera;
|
||||
// extern UNK_TYPE1 D_801F6B58;
|
||||
extern void (*sKaleidoScopeUpdateFunc)(PlayState* play);
|
||||
extern void (*sKaleidoScopeDrawFunc)(PlayState* play);
|
||||
|
||||
+2
-46
@@ -87,19 +87,6 @@ typedef enum {
|
||||
/* 4 */ EQUIP_SLOT_A
|
||||
} EquipSlot;
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ s16 priority; // Lower means higher priority. -1 means it ignores priority
|
||||
/* 0x2 */ s16 length;
|
||||
/* 0x4 */ s16 csCamSceneDataId; // Index of CsCameraEntry to use. Negative indices use sGlobalCamDataSettings. Indices 0 and above use CsCameraEntry from scene
|
||||
/* 0x6 */ s16 unk6;
|
||||
/* 0x8 */ s16 additionalCutscene;
|
||||
/* 0xA */ u8 sound;
|
||||
/* 0xB */ u8 unkB;
|
||||
/* 0xC */ s16 unkC;
|
||||
/* 0xE */ u8 unkE;
|
||||
/* 0xF */ u8 letterboxSize;
|
||||
} ActorCutscene; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ s8 segment;
|
||||
/* 0x2 */ s16 type;
|
||||
@@ -647,7 +634,7 @@ typedef struct PlayState {
|
||||
/* 0x18790 */ void (*unk_18790)(struct PlayState* play, s16 arg1);
|
||||
/* 0x18794 */ PlayerItemAction (*unk_18794)(struct PlayState* play, Player* player, ItemId itemId);
|
||||
/* 0x18798 */ s32 (*setPlayerTalkAnim)(struct PlayState* play, PlayerAnimationHeader* talkAnim, AnimationMode animMode);
|
||||
/* 0x1879C */ s16 playerActorCsIds[10];
|
||||
/* 0x1879C */ s16 playerCsIds[PLAYER_CS_ID_MAX];
|
||||
/* 0x187B0 */ MtxF viewProjectionMtxF;
|
||||
/* 0x187F0 */ Vec3f projectionMtxFDiagonal;
|
||||
/* 0x187FC */ MtxF billboardMtxF;
|
||||
@@ -678,7 +665,7 @@ typedef struct PlayState {
|
||||
/* 0x1887F */ u8 transitionType; // fadeTransition
|
||||
/* 0x18880 */ u8 unk_18880;
|
||||
/* 0x18884 */ CollisionCheckContext colChkCtx;
|
||||
/* 0x18B20 */ u16 envFlags[20];
|
||||
/* 0x18B20 */ u16 cutsceneFlags[20];
|
||||
/* 0x18B48 */ u8 curSpawn;
|
||||
/* 0x18B49 */ u8 unk_18B49;
|
||||
/* 0x18B4A */ u8 transitionMode;
|
||||
@@ -797,35 +784,4 @@ enum fram_mode {
|
||||
FRAM_MODE_STATUS
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ UNK_TYPE1 unk_00[0x14];
|
||||
/* 0x14 */ s16 unk_14;
|
||||
/* 0x16 */ s16 unk_16;
|
||||
/* 0x18 */ s16 unk_18;
|
||||
/* 0x1A */ UNK_TYPE1 unk_1A[0x3];
|
||||
/* 0x0C */ u8 unk_1D;
|
||||
/* 0x1E */ UNK_TYPE1 unk_1E[0xC];
|
||||
/* 0x2A */ s16 unk_2A;
|
||||
/* 0x1E */ UNK_TYPE1 unk_2C[0x1];
|
||||
/* 0x2D */ u8 unk_2D;
|
||||
/* 0x2E */ UNK_TYPE1 unk_2E[2];
|
||||
} DbCameraUnkSubStruct; // size = 0x30
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 unk_00;
|
||||
/* 0x02 */ s16 unk_02;
|
||||
/* 0x04 */ s16 unk_04;
|
||||
/* 0x06 */ s16 unk_06;
|
||||
/* 0x08 */ s16 unk_08;
|
||||
/* 0x0A */ s16 unk_0A;
|
||||
/* 0x0C */ s16 unk_0C;
|
||||
/* 0x0E */ UNK_TYPE1 unk_0E[0x02];
|
||||
/* 0x10 */ DbCameraUnkSubStruct unk_10;
|
||||
/* 0x40 */ DbCameraUnkSubStruct unk_40;
|
||||
/* 0x70 */ UNK_PTR unk_70;
|
||||
/* 0x74 */ UNK_PTR unk_74;
|
||||
/* 0x78 */ UNK_PTR unk_78;
|
||||
/* 0x7C */ Camera* camera;
|
||||
} DbCameraUnkStruct; // size = 0x80
|
||||
|
||||
#endif
|
||||
|
||||
+1
-1
@@ -174,7 +174,7 @@ typedef struct Actor {
|
||||
/* 0x01F */ s8 targetMode; // Controls how far the actor can be targeted from and how far it can stay locked on
|
||||
/* 0x020 */ s16 halfDaysBits; // Bitmask indicating which half-days this actor is allowed to not be killed(?) (TODO: not sure how to word this). If the current halfDayBit is not part of this mask then the actor is killed when spawning the setup actors
|
||||
/* 0x024 */ PosRot world; // Position/rotation in the world
|
||||
/* 0x038 */ s8 cutscene;
|
||||
/* 0x038 */ s8 csId; // ActorCutscene index, see `CutsceneId`
|
||||
/* 0x039 */ u8 audioFlags; // Another set of flags? Seems related to sfx or bgm
|
||||
/* 0x03C */ PosRot focus; // Target reticle focuses on this position. For player this represents head pos and rot
|
||||
/* 0x050 */ u16 sfxId; // Id of sound effect to play. Plays when value is set, then is cleared the following update cycle
|
||||
|
||||
+1
-1
@@ -1319,7 +1319,7 @@ typedef struct {
|
||||
/* 0x0C */ f32 unk_0C;
|
||||
/* 0x10 */ f32 unk_10;
|
||||
/* 0x14 */ f32 unk_14;
|
||||
/* 0x18 */ VecSph unk_18; // sp18-1C-20--24-26-28 // CutsceneCameraPoint?
|
||||
/* 0x18 */ VecSph unk_18;
|
||||
/* 0x20 */ s16 unk_20;
|
||||
/* 0x22 */ s16 timer;
|
||||
} Demo4ReadWriteData; // size = 0x24
|
||||
|
||||
+831
-152
File diff suppressed because it is too large
Load Diff
+338
-208
File diff suppressed because it is too large
Load Diff
+3
-3
@@ -535,8 +535,8 @@ typedef enum PlayerCsMode {
|
||||
/* 0x03 */ PLAYER_CSMODE_3,
|
||||
/* 0x04 */ PLAYER_CSMODE_4,
|
||||
/* 0x05 */ PLAYER_CSMODE_5,
|
||||
/* 0x06 */ PLAYER_CSMODE_6,
|
||||
/* 0x07 */ PLAYER_CSMODE_7,
|
||||
/* 0x06 */ PLAYER_CSMODE_END,
|
||||
/* 0x07 */ PLAYER_CSMODE_WAIT,
|
||||
/* 0x08 */ PLAYER_CSMODE_8,
|
||||
/* 0x09 */ PLAYER_CSMODE_9,
|
||||
/* 0x0A */ PLAYER_CSMODE_10,
|
||||
@@ -1018,7 +1018,7 @@ typedef struct Player {
|
||||
/* 0xA7C */ Actor* boomerangActor;
|
||||
/* 0xA80 */ Actor* tatlActor;
|
||||
/* 0xA84 */ s16 tatlTextId;
|
||||
/* 0xA86 */ s8 unk_A86; // actorCutsceneIndex?
|
||||
/* 0xA86 */ s8 csId;
|
||||
/* 0xA87 */ s8 exchangeItemId; // PlayerItemAction enum
|
||||
/* 0xA88 */ Actor* talkActor;
|
||||
/* 0xA8C */ f32 talkActorDistance;
|
||||
|
||||
+6
-6
@@ -299,7 +299,7 @@ typedef struct Save {
|
||||
/* 0x05 */ u8 isFirstCycle; // "opening_flag"
|
||||
/* 0x06 */ u8 unk_06;
|
||||
/* 0x07 */ u8 linkAge; // "link_age"
|
||||
/* 0x08 */ s32 cutscene; // "day_time"
|
||||
/* 0x08 */ s32 cutsceneIndex; // "day_time"
|
||||
/* 0x0C */ u16 time; // "zelda_time"
|
||||
/* 0x0E */ u16 owlSaveLocation;
|
||||
/* 0x10 */ s32 isNight; // "asahiru_fg"
|
||||
@@ -707,7 +707,7 @@ typedef enum {
|
||||
#define WEEKEVENTREG_20_01 PACK_WEEKEVENTREG_FLAG(20, 0x01)
|
||||
|
||||
// woodfall temple purification cutscene watched
|
||||
#define WEEKEVENTREG_20_02 PACK_WEEKEVENTREG_FLAG(20, 0x02)
|
||||
#define WEEKEVENTREG_CLEARED_WOODFALL_TEMPLE PACK_WEEKEVENTREG_FLAG(20, 0x02)
|
||||
|
||||
#define WEEKEVENTREG_20_04 PACK_WEEKEVENTREG_FLAG(20, 0x04)
|
||||
#define WEEKEVENTREG_20_08 PACK_WEEKEVENTREG_FLAG(20, 0x08)
|
||||
@@ -851,7 +851,7 @@ typedef enum {
|
||||
#define WEEKEVENTREG_33_40 PACK_WEEKEVENTREG_FLAG(33, 0x40)
|
||||
|
||||
// Mountain village is unfrozen
|
||||
#define WEEKEVENTREG_33_80 PACK_WEEKEVENTREG_FLAG(33, 0x80)
|
||||
#define WEEKEVENTREG_CLEARED_SNOWHEAD_TEMPLE PACK_WEEKEVENTREG_FLAG(33, 0x80)
|
||||
// Spoken to MINIFROG_YELLOW
|
||||
#define WEEKEVENTREG_34_01 PACK_WEEKEVENTREG_FLAG(34, 0x01)
|
||||
|
||||
@@ -1015,7 +1015,7 @@ typedef enum {
|
||||
#define WEEKEVENTREG_52_10 PACK_WEEKEVENTREG_FLAG(52, 0x10)
|
||||
|
||||
// cleared Stone Tower Temple
|
||||
#define WEEKEVENTREG_52_20 PACK_WEEKEVENTREG_FLAG(52, 0x20)
|
||||
#define WEEKEVENTREG_CLEARED_STONE_TOWER_TEMPLE PACK_WEEKEVENTREG_FLAG(52, 0x20)
|
||||
|
||||
#define WEEKEVENTREG_52_40 PACK_WEEKEVENTREG_FLAG(52, 0x40)
|
||||
#define WEEKEVENTREG_52_80 PACK_WEEKEVENTREG_FLAG(52, 0x80)
|
||||
@@ -1047,7 +1047,7 @@ typedef enum {
|
||||
#define WEEKEVENTREG_55_40 PACK_WEEKEVENTREG_FLAG(55, 0x40)
|
||||
|
||||
// Gyorg has been defeated
|
||||
#define WEEKEVENTREG_55_80 PACK_WEEKEVENTREG_FLAG(55, 0x80)
|
||||
#define WEEKEVENTREG_CLEARED_GREAT_BAY_TEMPLE PACK_WEEKEVENTREG_FLAG(55, 0x80)
|
||||
|
||||
#define WEEKEVENTREG_56_01 PACK_WEEKEVENTREG_FLAG(56, 0x01)
|
||||
#define WEEKEVENTREG_56_02 PACK_WEEKEVENTREG_FLAG(56, 0x02)
|
||||
@@ -1576,7 +1576,7 @@ void Sram_IncrementDay(void);
|
||||
u16 Sram_CalcChecksum(void* data, size_t count);
|
||||
void Sram_InitNewSave(void);
|
||||
void Sram_InitDebugSave(void);
|
||||
void func_80144A94(SramContext* sramCtx);
|
||||
void Sram_ResetSaveFromMoonCrash(SramContext* sramCtx);
|
||||
void Sram_OpenSave(struct FileSelectState* fileSelect, SramContext* sramCtx);
|
||||
void func_8014546C(SramContext* sramCtx);
|
||||
void func_801457CC(struct FileSelectState* fileSelect, SramContext* sramCtx);
|
||||
|
||||
+23
-11
@@ -177,9 +177,9 @@ typedef struct {
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u8 code;
|
||||
/* 0x1 */ u8 sceneCsCount;
|
||||
/* 0x1 */ u8 scriptListCount;
|
||||
/* 0x4 */ void* segment;
|
||||
} SCmdCutsceneList; // size = 0x8
|
||||
} SCmdCsScriptList; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u8 code;
|
||||
@@ -202,7 +202,7 @@ typedef struct {
|
||||
/* 0x0 */ u8 code;
|
||||
/* 0x1 */ u8 num;
|
||||
/* 0x4 */ void* segment;
|
||||
} SCmdCutsceneActorList; // size = 0x8
|
||||
} SCmdCutsceneList; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u8 code;
|
||||
@@ -531,11 +531,11 @@ typedef union {
|
||||
/* Command: 0x14 */ SCmdEndMarker endMarker;
|
||||
/* Command: 0x15 */ SCmdSoundSettings soundSettings;
|
||||
/* Command: 0x16 */ SCmdEchoSettings echoSettings;
|
||||
/* Command: 0x17 */ SCmdCutsceneList cutsceneList;
|
||||
/* Command: 0x17 */ SCmdCsScriptList scriptList;
|
||||
/* Command: 0x18 */ SCmdAltHeaders altHeaders;
|
||||
/* Command: 0x19 */ SCmdRegionVisited regionVisited;
|
||||
/* Command: 0x1A */ SCmdTextureAnimations textureAnimations;
|
||||
/* Command: 0x1B */ SCmdCutsceneActorList cutsceneActorList;
|
||||
/* Command: 0x1B */ SCmdCutsceneList cutsceneList;
|
||||
/* Command: 0x1C */ SCmdMinimapSettings minimapSettings;
|
||||
/* Command: 0x1D */ // Unused
|
||||
/* Command: 0x1E */ SCmdMinimapChests minimapChests;
|
||||
@@ -822,6 +822,15 @@ typedef enum {
|
||||
*/
|
||||
#define ENTRANCE(scene, spawn) ((((ENTR_SCENE_##scene) & 0x7F) << 9) | (((spawn) & 0x1F) << 4))
|
||||
|
||||
/*
|
||||
* Entrances used in cutscene destination. Includes scene layer that's immediately applied to `nextCutsceneIndex` and removed.
|
||||
* See `CutsceneScriptEntry.nextEntrance`
|
||||
* 0xFE00: Index into sSceneEntranceTable (Scene)
|
||||
* 0x01F0: Index into the scenes specific entrance table (Spawn)
|
||||
* 0x000F: Index into the specific entrance table (Layer)
|
||||
*/
|
||||
#define CS_ENTRANCE(scene, spawn, layer) ((((ENTR_SCENE_##scene) & 0x7F) << 9) | (((spawn) & 0x1F) << 4) | ((layer) & 0xF))
|
||||
|
||||
// SceneTableEntry draw configs
|
||||
typedef enum {
|
||||
/* 0 */ SCENE_DRAW_CFG_DEFAULT,
|
||||
@@ -867,7 +876,7 @@ typedef enum {
|
||||
/* 0x14 */ SCENE_CMD_ID_END,
|
||||
/* 0x15 */ SCENE_CMD_ID_SOUND_SETTINGS,
|
||||
/* 0x16 */ SCENE_CMD_ID_ECHO_SETTINGS,
|
||||
/* 0x17 */ SCENE_CMD_ID_CUTSCENE_LIST,
|
||||
/* 0x17 */ SCENE_CMD_ID_CUTSCENE_SCRIPT_LIST,
|
||||
/* 0x18 */ SCENE_CMD_ID_ALTERNATE_HEADER_LIST,
|
||||
/* 0x19 */ SCENE_CMD_ID_SET_REGION_VISITED,
|
||||
/* 0x1A */ SCENE_CMD_ID_ANIMATED_MATERIAL_LIST,
|
||||
@@ -952,21 +961,20 @@ typedef enum {
|
||||
#define SCENE_CMD_ECHO_SETTINGS(echo) \
|
||||
{ SCENE_CMD_ID_ECHO_SETTINGS, 0, CMD_BBBB(0, 0, 0, echo) }
|
||||
|
||||
#define SCENE_CMD_CUTSCENE_LIST(numCutscene, cutsceneList) \
|
||||
{ SCENE_CMD_ID_CUTSCENE_LIST, numCutscene, CMD_PTR(cutsceneList) }
|
||||
#define SCENE_CMD_CUTSCENE_SCRIPT_LIST(numEntries, scriptList) \
|
||||
{ SCENE_CMD_ID_CUTSCENE_SCRIPT_LIST, numEntries, CMD_PTR(scriptList) }
|
||||
|
||||
#define SCENE_CMD_ALTERNATE_HEADER_LIST(alternateHeaderList) \
|
||||
{ SCENE_CMD_ID_ALTERNATE_HEADER_LIST, 0, CMD_PTR(alternateHeaderList) }
|
||||
|
||||
#define SCENE_CMD_MISC_SETTINGS SCENE_CMD_SET_REGION_VISITED // TODO: ZAPD Capatability
|
||||
#define SCENE_CMD_SET_REGION_VISITED() \
|
||||
{ SCENE_CMD_ID_SET_REGION_VISITED, 0, CMD_W(0) }
|
||||
|
||||
#define SCENE_CMD_ANIMATED_MATERIAL_LIST(matAnimList) \
|
||||
{ SCENE_CMD_ID_ANIMATED_MATERIAL_LIST, 0, CMD_PTR(matAnimList) }
|
||||
|
||||
#define SCENE_CMD_ACTOR_CUTSCENE_LIST(actorCutsceneCount, actorCutsceneList) \
|
||||
{ SCENE_CMD_ID_ACTOR_CUTSCENE_LIST, actorCutsceneCount, CMD_PTR(actorCutsceneList) }
|
||||
#define SCENE_CMD_ACTOR_CUTSCENE_LIST(numEntries, actorCutsceneList) \
|
||||
{ SCENE_CMD_ID_ACTOR_CUTSCENE_LIST, numEntries, CMD_PTR(actorCutsceneList) }
|
||||
|
||||
#define SCENE_CMD_MINIMAP_INFO(minimapInfo) \
|
||||
{ SCENE_CMD_ID_MINIMAP_INFO, 0, CMD_PTR(minimapInfo) }
|
||||
@@ -974,4 +982,8 @@ typedef enum {
|
||||
#define SCENE_CMD_MINIMAP_COMPASS_ICON_INFO(compassIconCount, compassIconInfo) \
|
||||
{ SCENE_CMD_ID_MINIMAP_COMPASS_ICON_INFO, compassIconCount, CMD_PTR(compassIconInfo) }
|
||||
|
||||
// TODO: ZAPD Capatability
|
||||
#define SCENE_CMD_MISC_SETTINGS SCENE_CMD_SET_REGION_VISITED
|
||||
#define SCENE_CMD_CUTSCENE_LIST SCENE_CMD_CUTSCENE_SCRIPT_LIST
|
||||
|
||||
#endif
|
||||
|
||||
+4
-4
@@ -11,9 +11,9 @@ extern Vec3f gOneVec3f;
|
||||
#define SUBS_TIME_PATHING_ORDER 3
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ SUBS_CUTSCENE_SET_UNK_LINK_FIELDS,
|
||||
/* 0 */ SUBS_CUTSCENE_WITH_PLAYER,
|
||||
/* 1 */ SUBS_CUTSCENE_NORMAL,
|
||||
/* 2 */ SUBS_CUTSCENE_SET_FLAG
|
||||
/* 2 */ SUBS_CUTSCENE_WITH_PLAYER_SET_FLAG
|
||||
} SubSCutsceneType;
|
||||
|
||||
//! TODO: rename based on func_8013E748 and func_800B8500
|
||||
@@ -153,8 +153,8 @@ s32 SubS_ActorPathing_SetNextPoint(struct PlayState* play, ActorPathing* actorPa
|
||||
|
||||
void SubS_ChangeAnimationBySpeedInfo(SkelAnime* skelAnime, AnimationSpeedInfo* animationInfo, s32 nextAnimIndex, s32* curAnimIndex);
|
||||
|
||||
s32 SubS_StartActorCutscene(Actor* actor, s16 nextCutscene, s16 curCutscene, s32 type);
|
||||
s32 SubS_FillCutscenesList(Actor* actor, s16 cutscenes[], s16 numCutscenes);
|
||||
s32 SubS_StartCutscene(Actor* actor, s16 nextCsId, s16 curCsId, s32 type);
|
||||
s32 SubS_FillCutscenesList(Actor* actor, s16 csIdList[], s16 numCutscenes);
|
||||
|
||||
void SubS_ConstructPlane(Vec3f* point, Vec3f* unitVec, Vec3s* rot, Plane* plane);
|
||||
s32 SubS_LineSegVsPlane(Vec3f* point, Vec3s* rot, Vec3f* unitVec, Vec3f* linePointA, Vec3f* linePointB, Vec3f* intersect);
|
||||
|
||||
@@ -470,7 +470,6 @@ beginseg
|
||||
include "build/data/code/z_eventmgr.bss.o"
|
||||
include "build/src/code/z_fcurve_data.o"
|
||||
include "build/src/code/z_fcurve_data_skelanime.o"
|
||||
include "build/data/code/code_801BD830.data.o"
|
||||
include "build/src/code/z_fireobj.o"
|
||||
include "build/src/code/z_game_dlftbls.o"
|
||||
include "build/src/code/z_horse.o"
|
||||
@@ -539,8 +538,8 @@ beginseg
|
||||
include "build/src/code/z_message_staff.o"
|
||||
include "build/src/code/z_player_call.o"
|
||||
include "build/src/code/z_shrink_window.o"
|
||||
include "build/src/code/db_camera.o"
|
||||
include "build/data/code/db_camera.bss.o"
|
||||
include "build/src/code/cutscene_camera.o"
|
||||
include "build/data/code/cutscene_camera.bss.o"
|
||||
include "build/src/code/z_kaleido_manager.o"
|
||||
include "build/src/code/z_kaleido_scope_call.o"
|
||||
include "build/src/code/z_fbdemo_dlftbls.o"
|
||||
|
||||
@@ -3357,7 +3357,7 @@ void AudioOcarina_Update(void) {
|
||||
|
||||
#define OCARINA_INSTRUMENT_OOT_MAX 7
|
||||
|
||||
void AudioOcarina_PlayLongScarecrowAfterCredits(void) {
|
||||
void AudioOcarina_PlayLongScarecrowSong(void) {
|
||||
static u8 sScarecrowAfterCreditsState = 0;
|
||||
static u8 sScarecrowAfterCreditsIntrumentId = OCARINA_INSTRUMENT_DEFAULT;
|
||||
static u16 sScarecrowAfterCreditsTimer = 1200;
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#include "prevent_bss_reordering.h"
|
||||
#include "global.h"
|
||||
#include "stack.h"
|
||||
#include "buffers.h"
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
#include "prevent_bss_reordering.h"
|
||||
#include "global.h"
|
||||
|
||||
u8 sYaz0DataBuffer[0x400];
|
||||
|
||||
@@ -0,0 +1,380 @@
|
||||
#include "global.h"
|
||||
|
||||
extern CutsceneCamera* sCurCsCamera;
|
||||
|
||||
typedef s16 (*CsCamInterpolateCallback)(Vec3f*, f32*, s16*, CsCmdCamPoint*, CsCmdCamMisc*, CutsceneCameraInterp*);
|
||||
|
||||
// function declarations
|
||||
s16 func_80161180(Vec3f* pos, f32* fov, s16* roll, CsCmdCamPoint* point, CsCmdCamMisc* misc,
|
||||
CutsceneCameraInterp* interp);
|
||||
s16 func_8016237C(Vec3f* pos, f32* fov, s16* roll, CsCmdCamPoint* point, CsCmdCamMisc* misc,
|
||||
CutsceneCameraInterp* interp);
|
||||
s16 func_8016253C(Vec3f* pos, f32* fov, s16* roll, CsCmdCamPoint* point, CsCmdCamMisc* misc,
|
||||
CutsceneCameraInterp* interp);
|
||||
s16 func_80162A50(Vec3f* pos, f32* fov, s16* roll, CsCmdCamPoint* point, CsCmdCamMisc* misc,
|
||||
CutsceneCameraInterp* interp);
|
||||
s16 func_801623E4(Vec3f* pos, f32* fov, s16* roll, CsCmdCamPoint* point, CsCmdCamMisc* misc,
|
||||
CutsceneCameraInterp* interp);
|
||||
s16 func_80161C20(Vec3f* pos, f32* fov, s16* roll, CsCmdCamPoint* point, CsCmdCamMisc* misc,
|
||||
CutsceneCameraInterp* interp);
|
||||
s16 func_80161E4C(Vec3f* pos, f32* fov, s16* roll, CsCmdCamPoint* point, CsCmdCamMisc* misc,
|
||||
CutsceneCameraInterp* interp);
|
||||
s16 func_801620CC(Vec3f* pos, f32* fov, s16* roll, CsCmdCamPoint* point, CsCmdCamMisc* misc,
|
||||
CutsceneCameraInterp* interp);
|
||||
s16 func_80163334(Vec3f* pos, f32* fov, s16* roll, CsCmdCamPoint* point, CsCmdCamMisc* misc,
|
||||
CutsceneCameraInterp* interp);
|
||||
f32 func_80163660(Actor* actor);
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/cutscene_camera/func_80161180.s")
|
||||
|
||||
/**
|
||||
* Initializes Cutscene Camera Info
|
||||
*/
|
||||
s32 CutsceneCamera_Init(Camera* camera, CutsceneCamera* csCamera) {
|
||||
csCamera->camera = camera;
|
||||
|
||||
csCamera->nextSplineTimer = csCamera->updateSplineTimer = 0;
|
||||
csCamera->cmdIndex = 0;
|
||||
csCamera->splineIndex = 0xFFFF;
|
||||
csCamera->splineNeedsInit = true;
|
||||
csCamera->state = CS_CAM_STATE_UPDATE_ALL;
|
||||
|
||||
sCurCsCamera = csCamera;
|
||||
|
||||
__osMemset(&csCamera->eyeInterp, 0, sizeof(CutsceneCameraInterp));
|
||||
__osMemset(&csCamera->atInterp, 0, sizeof(CutsceneCameraInterp));
|
||||
|
||||
csCamera->eyeInterp.unk_2D = csCamera->atInterp.unk_2D = 7;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
CsCamInterpolateCallback CutsceneCamera_Interpolate(u8 interpType) {
|
||||
switch (interpType) {
|
||||
case CS_CAM_INTERP_7:
|
||||
default:
|
||||
return func_80161180;
|
||||
|
||||
case CS_CAM_INTERP_0:
|
||||
return func_8016237C;
|
||||
|
||||
case CS_CAM_INTERP_5:
|
||||
return func_8016253C;
|
||||
|
||||
case CS_CAM_INTERP_4:
|
||||
return func_80162A50;
|
||||
|
||||
case CS_CAM_INTERP_1:
|
||||
return func_801623E4;
|
||||
|
||||
case CS_CAM_INTERP_2:
|
||||
return func_80161C20;
|
||||
|
||||
case CS_CAM_INTERP_3:
|
||||
return func_80161E4C;
|
||||
|
||||
case CS_CAM_INTERP_6:
|
||||
return func_801620CC;
|
||||
}
|
||||
}
|
||||
|
||||
u8 CutsceneCamera_ProcessSpline(CutsceneCamera* csCamera) {
|
||||
s32 sp5C;
|
||||
f32* fov;
|
||||
s16* roll;
|
||||
CsCamInterpolateCallback interpHandler;
|
||||
Player* player;
|
||||
Actor* target;
|
||||
s16 numPoints;
|
||||
|
||||
sp5C = true;
|
||||
if (csCamera->state == CS_CAM_STATE_DONE_SPLINE) {
|
||||
return false;
|
||||
}
|
||||
|
||||
player = GET_PLAYER(csCamera->camera->play);
|
||||
target = csCamera->camera->target;
|
||||
|
||||
if (csCamera->eyeCmd[csCamera->atInterp.curPoint].interpType <
|
||||
csCamera->atCmd[csCamera->eyeInterp.curPoint].interpType) {
|
||||
sp5C = false;
|
||||
}
|
||||
|
||||
csCamera->eyeInterp.unk_00 = csCamera->camera->eye;
|
||||
csCamera->atInterp.unk_00 = csCamera->camera->at;
|
||||
|
||||
if (sp5C) {
|
||||
fov = NULL;
|
||||
} else {
|
||||
fov = &csCamera->camera->fov;
|
||||
}
|
||||
|
||||
if (sp5C) {
|
||||
roll = NULL;
|
||||
} else {
|
||||
roll = &csCamera->camera->roll;
|
||||
}
|
||||
|
||||
interpHandler = CutsceneCamera_Interpolate(csCamera->atCmd[csCamera->eyeInterp.curPoint].interpType);
|
||||
|
||||
switch (csCamera->atCmd[csCamera->eyeInterp.curPoint].relativeTo) {
|
||||
case CS_CAM_REL_2:
|
||||
OLib_DbCameraVec3fDiff(&player->actor.world, &csCamera->camera->at, &csCamera->camera->at, 2);
|
||||
break;
|
||||
|
||||
case CS_CAM_REL_3:
|
||||
OLib_DbCameraVec3fDiff(&player->actor.world, &csCamera->camera->at, &csCamera->camera->at, 1);
|
||||
break;
|
||||
|
||||
case CS_CAM_REL_1:
|
||||
OLib_DbCameraVec3fDiff(&player->actor.world, &csCamera->camera->at, &csCamera->camera->at, 1);
|
||||
break;
|
||||
|
||||
case CS_CAM_REL_4:
|
||||
OLib_DbCameraVec3fDiff(&target->world, &csCamera->camera->at, &csCamera->camera->at, 1);
|
||||
break;
|
||||
|
||||
case CS_CAM_REL_5:
|
||||
OLib_DbCameraVec3fDiff(&target->world, &csCamera->camera->at, &csCamera->camera->at, 2);
|
||||
break;
|
||||
|
||||
default: // CS_CAM_REL_0
|
||||
break;
|
||||
}
|
||||
|
||||
numPoints = interpHandler(&csCamera->camera->at, fov, roll, &csCamera->atCmd[csCamera->eyeInterp.curPoint],
|
||||
&csCamera->miscCmd[csCamera->eyeInterp.curPoint], &csCamera->eyeInterp);
|
||||
|
||||
switch (csCamera->atCmd[csCamera->eyeInterp.curPoint].relativeTo) {
|
||||
case CS_CAM_REL_2:
|
||||
OLib_DbCameraVec3fSum(&player->actor.world, &csCamera->camera->at, &csCamera->camera->at, 2);
|
||||
break;
|
||||
|
||||
case CS_CAM_REL_3:
|
||||
OLib_DbCameraVec3fSum(&player->actor.world, &csCamera->camera->at, &csCamera->camera->at, 1);
|
||||
csCamera->camera->at.y += func_80163660(&player->actor);
|
||||
break;
|
||||
|
||||
case CS_CAM_REL_1:
|
||||
OLib_DbCameraVec3fSum(&player->actor.world, &csCamera->camera->at, &csCamera->camera->at, 1);
|
||||
break;
|
||||
|
||||
case CS_CAM_REL_4:
|
||||
OLib_DbCameraVec3fSum(&target->world, &csCamera->camera->at, &csCamera->camera->at, 1);
|
||||
break;
|
||||
|
||||
case CS_CAM_REL_5:
|
||||
OLib_DbCameraVec3fSum(&target->world, &csCamera->camera->at, &csCamera->camera->at, 2);
|
||||
break;
|
||||
|
||||
default: // CS_CAM_REL_0
|
||||
break;
|
||||
}
|
||||
|
||||
csCamera->eyeInterp.curPoint += numPoints;
|
||||
|
||||
if (sp5C) {
|
||||
fov = &csCamera->camera->fov;
|
||||
} else {
|
||||
fov = NULL;
|
||||
}
|
||||
|
||||
if (sp5C) {
|
||||
roll = &csCamera->camera->roll;
|
||||
} else {
|
||||
roll = NULL;
|
||||
}
|
||||
|
||||
interpHandler = CutsceneCamera_Interpolate(csCamera->eyeCmd[csCamera->atInterp.curPoint].interpType);
|
||||
|
||||
switch (csCamera->eyeCmd[csCamera->atInterp.curPoint].relativeTo) {
|
||||
case CS_CAM_REL_2:
|
||||
OLib_DbCameraVec3fDiff(&player->actor.world, &csCamera->camera->eye, &csCamera->camera->eye, 2);
|
||||
break;
|
||||
|
||||
case CS_CAM_REL_3:
|
||||
OLib_DbCameraVec3fDiff(&player->actor.world, &csCamera->camera->eye, &csCamera->camera->eye, 1);
|
||||
break;
|
||||
|
||||
case CS_CAM_REL_1:
|
||||
OLib_DbCameraVec3fDiff(&player->actor.world, &csCamera->camera->eye, &csCamera->camera->eye, 1);
|
||||
break;
|
||||
|
||||
case CS_CAM_REL_4:
|
||||
OLib_DbCameraVec3fDiff(&target->world, &csCamera->camera->eye, &csCamera->camera->eye, 1);
|
||||
break;
|
||||
|
||||
case CS_CAM_REL_5:
|
||||
OLib_DbCameraVec3fDiff(&target->world, &csCamera->camera->eye, &csCamera->camera->eye, 2);
|
||||
break;
|
||||
|
||||
default: // CS_CAM_REL_0
|
||||
break;
|
||||
}
|
||||
|
||||
numPoints = interpHandler(&csCamera->camera->eye, fov, roll, &csCamera->eyeCmd[csCamera->atInterp.curPoint],
|
||||
&csCamera->miscCmd[csCamera->atInterp.curPoint], &csCamera->atInterp);
|
||||
|
||||
switch (csCamera->eyeCmd[csCamera->atInterp.curPoint].relativeTo) {
|
||||
case CS_CAM_REL_2:
|
||||
OLib_DbCameraVec3fSum(&player->actor.world, &csCamera->camera->eye, &csCamera->camera->eye, 2);
|
||||
break;
|
||||
|
||||
case CS_CAM_REL_3:
|
||||
OLib_DbCameraVec3fSum(&player->actor.world, &csCamera->camera->eye, &csCamera->camera->eye, 1);
|
||||
csCamera->camera->eye.y += func_80163660(&player->actor);
|
||||
break;
|
||||
|
||||
case CS_CAM_REL_1:
|
||||
OLib_DbCameraVec3fSum(&player->actor.world, &csCamera->camera->eye, &csCamera->camera->eye, 1);
|
||||
break;
|
||||
|
||||
case CS_CAM_REL_4:
|
||||
OLib_DbCameraVec3fSum(&target->world, &csCamera->camera->eye, &csCamera->camera->eye, 1);
|
||||
break;
|
||||
|
||||
case CS_CAM_REL_5:
|
||||
OLib_DbCameraVec3fSum(&target->world, &csCamera->camera->eye, &csCamera->camera->eye, 2);
|
||||
break;
|
||||
|
||||
default: // CS_CAM_REL_0
|
||||
break;
|
||||
}
|
||||
|
||||
csCamera->atInterp.curPoint += numPoints;
|
||||
|
||||
if ((csCamera->eyeInterp.curPoint >= csCamera->eyeInterp.numEntries) ||
|
||||
(csCamera->atInterp.curPoint >= csCamera->atInterp.numEntries)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Processes camera cutscene commands
|
||||
*/
|
||||
s32 CutsceneCamera_UpdateSplines(u8* script, CutsceneCamera* csCamera) {
|
||||
CsCmdCamSpline* spline;
|
||||
|
||||
switch (csCamera->state) {
|
||||
case CS_CAM_STATE_DONE:
|
||||
return 0;
|
||||
|
||||
case CS_CAM_STATE_PAUSE:
|
||||
return csCamera->nextSplineTimer;
|
||||
|
||||
case CS_CAM_STATE_UPDATE_SPLINE:
|
||||
if (csCamera->updateSplineTimer <= csCamera->duration) {
|
||||
csCamera->updateSplineTimer++;
|
||||
if (csCamera->updateSplineTimer <= csCamera->duration) {
|
||||
// Process Spline
|
||||
if (!CutsceneCamera_ProcessSpline(csCamera)) {
|
||||
csCamera->state = CS_CAM_STATE_DONE_SPLINE;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case CS_CAM_STATE_DONE_SPLINE:
|
||||
break;
|
||||
|
||||
default: // CS_CAM_STATE_UPDATE_ALL
|
||||
if (csCamera->splineNeedsInit == true) {
|
||||
// Spline Header
|
||||
spline = (CsCmdCamSpline*)&script[csCamera->cmdIndex];
|
||||
csCamera->atInterp.numEntries = csCamera->eyeInterp.numEntries = spline->numEntries;
|
||||
csCamera->duration = spline->duration;
|
||||
csCamera->cmdIndex += sizeof(CsCmdCamSpline);
|
||||
|
||||
// At Point
|
||||
csCamera->atCmd = (CsCmdCamPoint*)&script[csCamera->cmdIndex];
|
||||
csCamera->cmdIndex += (s16)(csCamera->eyeInterp.numEntries * sizeof(CsCmdCamPoint));
|
||||
|
||||
// Misc Point
|
||||
csCamera->eyeCmd = (CsCmdCamPoint*)&script[csCamera->cmdIndex];
|
||||
csCamera->cmdIndex += (s16)(csCamera->eyeInterp.numEntries * sizeof(CsCmdCamPoint));
|
||||
|
||||
// Misc
|
||||
csCamera->miscCmd = (CsCmdCamMisc*)&script[csCamera->cmdIndex];
|
||||
csCamera->cmdIndex += (s16)(csCamera->eyeInterp.numEntries * sizeof(CsCmdCamMisc));
|
||||
|
||||
// Other Params
|
||||
csCamera->eyeInterp.curPoint = 0;
|
||||
csCamera->atInterp.curPoint = 0;
|
||||
|
||||
csCamera->splineNeedsInit = false;
|
||||
//! FAKE: csCamera->splineIndex++;
|
||||
csCamera->splineIndex = (csCamera->splineIndex & 0xFFFF) + 1;
|
||||
csCamera->state = CS_CAM_STATE_UPDATE_ALL;
|
||||
csCamera->nextSplineTimer = csCamera->updateSplineTimer = 0;
|
||||
csCamera->eyeInterp.unk_2D = csCamera->atInterp.unk_2D = 7;
|
||||
}
|
||||
|
||||
csCamera->nextSplineTimer++;
|
||||
|
||||
if (csCamera->updateSplineTimer <= csCamera->duration) {
|
||||
csCamera->updateSplineTimer++;
|
||||
if (csCamera->updateSplineTimer <= csCamera->duration) {
|
||||
// Process SubCommands
|
||||
if (!CutsceneCamera_ProcessSpline(csCamera)) {
|
||||
csCamera->state = CS_CAM_STATE_DONE_SPLINE;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (csCamera->nextSplineTimer > csCamera->duration) {
|
||||
// Next Spline
|
||||
csCamera->splineNeedsInit = true;
|
||||
spline = (CsCmdCamSpline*)&script[csCamera->cmdIndex];
|
||||
if (spline->numEntries == -1) {
|
||||
csCamera->state = CS_CAM_STATE_DONE;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return csCamera->nextSplineTimer;
|
||||
}
|
||||
|
||||
// Unused
|
||||
s16 func_80161BAC(void) {
|
||||
return (sCurCsCamera->state == CS_CAM_STATE_PAUSE) || (sCurCsCamera->state == CS_CAM_STATE_UPDATE_SPLINE);
|
||||
}
|
||||
|
||||
void CutsceneCamera_SetState(s16 state) {
|
||||
if (sCurCsCamera->state == CS_CAM_STATE_UPDATE_ALL) {
|
||||
sCurCsCamera->state = state;
|
||||
}
|
||||
}
|
||||
|
||||
void CutsceneCamera_Reset(void) {
|
||||
sCurCsCamera->state = CS_CAM_STATE_UPDATE_ALL;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/cutscene_camera/func_80161C20.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/cutscene_camera/func_80161E4C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/cutscene_camera/func_801620CC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/cutscene_camera/func_8016237C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/cutscene_camera/func_801623E4.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/cutscene_camera/func_801624EC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/cutscene_camera/func_8016253C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/cutscene_camera/func_801629BC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/cutscene_camera/func_80162A50.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/cutscene_camera/func_80162FF8.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/cutscene_camera/func_801631DC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/cutscene_camera/func_80163334.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/cutscene_camera/func_80163660.s")
|
||||
@@ -1,43 +0,0 @@
|
||||
#include "global.h"
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/db_camera/func_80161180.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/db_camera/func_8016119C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/db_camera/func_8016122C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/db_camera/func_801612B8.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/db_camera/func_80161998.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/db_camera/func_80161BAC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/db_camera/func_80161BE0.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/db_camera/func_80161C0C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/db_camera/func_80161C20.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/db_camera/func_80161E4C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/db_camera/func_801620CC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/db_camera/func_8016237C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/db_camera/func_801623E4.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/db_camera/func_801624EC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/db_camera/func_8016253C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/db_camera/func_801629BC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/db_camera/func_80162A50.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/db_camera/func_80162FF8.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/db_camera/func_801631DC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/db_camera/func_80163334.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/code/db_camera/func_80163660.s")
|
||||
+13
-13
@@ -1371,7 +1371,7 @@ void func_800B722C(GameState* gameState, Player* player) {
|
||||
s32 func_800B724C(PlayState* play, Actor* actor, u8 csMode) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
|
||||
if ((player->csMode == PLAYER_CSMODE_5) || ((csMode == PLAYER_CSMODE_6) && (player->csMode == PLAYER_CSMODE_0))) {
|
||||
if ((player->csMode == PLAYER_CSMODE_5) || ((csMode == PLAYER_CSMODE_END) && (player->csMode == PLAYER_CSMODE_0))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1880,7 +1880,7 @@ s32 func_800B8500(Actor* actor, PlayState* play, f32 xzRange, f32 yRange, Player
|
||||
player->talkActorDistance = actor->xzDistToPlayer;
|
||||
player->exchangeItemId = exchangeItemId;
|
||||
|
||||
ActorCutscene_SetIntentToPlay(0x7C);
|
||||
CutsceneManager_Queue(CS_ID_GLOBAL_TALK);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -2048,7 +2048,7 @@ s32 Actor_OfferGetItem(Actor* actor, PlayState* play, GetItemId getItemId, f32 x
|
||||
player->getItemDirection = absYawDiff;
|
||||
|
||||
if ((getItemId > GI_NONE) && (getItemId < GI_MAX)) {
|
||||
ActorCutscene_SetIntentToPlay(play->playerActorCsIds[1]);
|
||||
CutsceneManager_Queue(play->playerCsIds[PLAYER_CS_ID_ITEM_GET]);
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -2123,7 +2123,7 @@ s32 Actor_SetRideActor(PlayState* play, Actor* horse, s32 mountSide) {
|
||||
PLAYER_STATE1_40000 | PLAYER_STATE1_80000 | PLAYER_STATE1_100000 | PLAYER_STATE1_200000))) {
|
||||
player->rideActor = horse;
|
||||
player->mountSide = mountSide;
|
||||
ActorCutscene_SetIntentToPlay(0x7C);
|
||||
CutsceneManager_Queue(CS_ID_GLOBAL_TALK);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -3126,8 +3126,8 @@ void Actor_FreeOverlay(ActorOverlay* entry) {
|
||||
|
||||
Actor* Actor_Spawn(ActorContext* actorCtx, PlayState* play, s16 actorId, f32 posX, f32 posY, f32 posZ, s16 rotX,
|
||||
s16 rotY, s16 rotZ, s32 params) {
|
||||
return Actor_SpawnAsChildAndCutscene(actorCtx, play, actorId, posX, posY, posZ, rotX, rotY, rotZ, params, -1,
|
||||
HALFDAYBIT_ALL, NULL);
|
||||
return Actor_SpawnAsChildAndCutscene(actorCtx, play, actorId, posX, posY, posZ, rotX, rotY, rotZ, params,
|
||||
CS_ID_NONE, HALFDAYBIT_ALL, NULL);
|
||||
}
|
||||
|
||||
ActorInit* Actor_LoadOverlay(ActorContext* actorCtx, s16 index) {
|
||||
@@ -3171,7 +3171,7 @@ ActorInit* Actor_LoadOverlay(ActorContext* actorCtx, s16 index) {
|
||||
}
|
||||
|
||||
Actor* Actor_SpawnAsChildAndCutscene(ActorContext* actorCtx, PlayState* play, s16 index, f32 x, f32 y, f32 z, s16 rotX,
|
||||
s16 rotY, s16 rotZ, s32 params, u32 cutscene, u32 halfDaysBits, Actor* parent) {
|
||||
s16 rotY, s16 rotZ, s32 params, u32 csId, u32 halfDaysBits, Actor* parent) {
|
||||
s32 pad;
|
||||
Actor* actor;
|
||||
ActorInit* actorInit;
|
||||
@@ -3237,10 +3237,10 @@ Actor* Actor_SpawnAsChildAndCutscene(ActorContext* actorCtx, PlayState* play, s1
|
||||
actor->home.rot.y = rotY;
|
||||
actor->home.rot.z = rotZ;
|
||||
actor->params = params & 0xFFFF;
|
||||
actor->cutscene = (cutscene & 0x7F);
|
||||
actor->csId = csId & 0x7F;
|
||||
|
||||
if (actor->cutscene == 0x7F) {
|
||||
actor->cutscene = -1;
|
||||
if (actor->csId == 0x7F) {
|
||||
actor->csId = CS_ID_NONE;
|
||||
}
|
||||
|
||||
if (halfDaysBits != 0) {
|
||||
@@ -3263,8 +3263,8 @@ Actor* Actor_SpawnAsChildAndCutscene(ActorContext* actorCtx, PlayState* play, s1
|
||||
|
||||
Actor* Actor_SpawnAsChild(ActorContext* actorCtx, Actor* parent, PlayState* play, s16 actorId, f32 posX, f32 posY,
|
||||
f32 posZ, s16 rotX, s16 rotY, s16 rotZ, s32 params) {
|
||||
return Actor_SpawnAsChildAndCutscene(actorCtx, play, actorId, posX, posY, posZ, rotX, rotY, rotZ, params, -1,
|
||||
parent->halfDaysBits, parent);
|
||||
return Actor_SpawnAsChildAndCutscene(actorCtx, play, actorId, posX, posY, posZ, rotX, rotY, rotZ, params,
|
||||
CS_ID_NONE, parent->halfDaysBits, parent);
|
||||
}
|
||||
|
||||
void Actor_SpawnTransitionActors(PlayState* play, ActorContext* actorCtx) {
|
||||
@@ -4404,7 +4404,7 @@ s16 func_800BDB6C(Actor* actor, PlayState* play, s16 arg2, f32 arg3) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
f32 phi_f2;
|
||||
|
||||
if ((play->csCtx.state != CS_STATE_0) || gDbgCamEnabled) {
|
||||
if ((play->csCtx.state != CS_STATE_IDLE) || gDbgCamEnabled) {
|
||||
phi_f2 = Math_Vec3f_DistXYZ(&actor->world.pos, &play->view.eye) * 0.25f;
|
||||
} else {
|
||||
phi_f2 = Math_Vec3f_DistXYZ(&actor->world.pos, &player->actor.world.pos);
|
||||
|
||||
@@ -3613,31 +3613,31 @@ CameraSetting sCameraSettings[] = {
|
||||
};
|
||||
|
||||
s16 sGlobalCamDataSettings[] = {
|
||||
/* -25 */ CAM_SET_ELEGY_SHELL,
|
||||
/* -24 */ CAM_SET_SIDED,
|
||||
/* -23 */ CAM_SET_BOAT_CRUISE,
|
||||
/* -22 */ CAM_SET_NONE,
|
||||
/* -21 */ CAM_SET_SUBJECTD,
|
||||
/* -20 */ CAM_SET_NORMALD,
|
||||
/* -19 */ CAM_SET_NONE,
|
||||
/* -18 */ CAM_SET_NONE,
|
||||
/* -17 */ CAM_SET_NONE,
|
||||
/* -16 */ CAM_SET_WARP_PAD_ENTRANCE,
|
||||
/* -15 */ CAM_SET_ATTENTION,
|
||||
/* -14 */ CAM_SET_CONNECT0,
|
||||
/* -13 */ CAM_SET_REMOTEBOMB,
|
||||
/* -12 */ CAM_SET_NONE,
|
||||
/* -11 */ CAM_SET_MASK_TRANSFORMATION,
|
||||
/* -10 */ CAM_SET_LONG_CHEST_OPENING,
|
||||
/* -9 */ CAM_SET_REBIRTH,
|
||||
/* -8 */ CAM_SET_DEATH,
|
||||
/* -7 */ CAM_SET_WARP_PAD_MOON,
|
||||
/* -6 */ CAM_SET_NAVI,
|
||||
/* -5 */ CAM_SET_ITEM3,
|
||||
/* -4 */ CAM_SET_ITEM2,
|
||||
/* -3 */ CAM_SET_ITEM1,
|
||||
/* -2 */ CAM_SET_ITEM0,
|
||||
/* -1 */ CAM_SET_STOP0,
|
||||
/* -25 */ CAM_SET_ELEGY_SHELL, // CS_CAM_ID_GLOBAL_ELEGY
|
||||
/* -24 */ CAM_SET_SIDED, // CS_CAM_ID_GLOBAL_SIDED
|
||||
/* -23 */ CAM_SET_BOAT_CRUISE, // CS_CAM_ID_GLOBAL_BOAT_CRUISE
|
||||
/* -22 */ CAM_SET_NONE, // CS_CAM_ID_GLOBAL_N16
|
||||
/* -21 */ CAM_SET_SUBJECTD, // CS_CAM_ID_GLOBAL_SUBJECTD
|
||||
/* -20 */ CAM_SET_NORMALD, // CS_CAM_ID_GLOBAL_NORMALD
|
||||
/* -19 */ CAM_SET_NONE, // CS_CAM_ID_GLOBAL_N13
|
||||
/* -18 */ CAM_SET_NONE, // CS_CAM_ID_GLOBAL_N12
|
||||
/* -17 */ CAM_SET_NONE, // CS_CAM_ID_GLOBAL_N11
|
||||
/* -16 */ CAM_SET_WARP_PAD_ENTRANCE, // CS_CAM_ID_GLOBAL_WARP_PAD_ENTRANCE
|
||||
/* -15 */ CAM_SET_ATTENTION, // CS_CAM_ID_GLOBAL_ATTENTION
|
||||
/* -14 */ CAM_SET_CONNECT0, // CS_CAM_ID_GLOBAL_CONNECT
|
||||
/* -13 */ CAM_SET_REMOTEBOMB, // CS_CAM_ID_GLOBAL_REMOTE_BOMB
|
||||
/* -12 */ CAM_SET_NONE, // CS_CAM_ID_GLOBAL_N0C
|
||||
/* -11 */ CAM_SET_MASK_TRANSFORMATION, // CS_CAM_ID_GLOBAL_MASK_TRANSFORMATION
|
||||
/* -10 */ CAM_SET_LONG_CHEST_OPENING, // CS_CAM_ID_GLOBAL_LONG_CHEST_OPENING
|
||||
/* -9 */ CAM_SET_REBIRTH, // CS_CAM_ID_GLOBAL_REVIVE
|
||||
/* -8 */ CAM_SET_DEATH, // CS_CAM_ID_GLOBAL_DEATH
|
||||
/* -7 */ CAM_SET_WARP_PAD_MOON, // CS_CAM_ID_GLOBAL_WARP_PAD_MOON
|
||||
/* -6 */ CAM_SET_NAVI, // CS_CAM_ID_GLOBAL_SONG_WARP
|
||||
/* -5 */ CAM_SET_ITEM3, // CS_CAM_ID_GLOBAL_ITEM_SHOW
|
||||
/* -4 */ CAM_SET_ITEM2, // CS_CAM_ID_GLOBAL_ITEM_BOTTLE
|
||||
/* -3 */ CAM_SET_ITEM1, // CS_CAM_ID_GLOBAL_ITEM_OCARINA
|
||||
/* -2 */ CAM_SET_ITEM0, // CS_CAM_ID_GLOBAL_ITEM_GET
|
||||
/* -1 */ CAM_SET_STOP0, // CS_CAM_ID_NONE
|
||||
/* 0 */ CAM_SET_NONE,
|
||||
};
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user