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:
engineer124
2023-04-19 13:52:00 -04:00
committed by GitHub
co-authored by Thar0 angie
parent 543c38ae06
commit 9d25fad407
390 changed files with 7327 additions and 5600 deletions
+4 -71
View File
@@ -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);
+3
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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);
+2 -3
View File
@@ -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"
+1 -1
View File
@@ -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
View File
@@ -1,3 +1,4 @@
#include "prevent_bss_reordering.h"
#include "global.h"
#include "stack.h"
#include "buffers.h"
-1
View File
@@ -1,4 +1,3 @@
#include "prevent_bss_reordering.h"
#include "global.h"
u8 sYaz0DataBuffer[0x400];
+380
View File
@@ -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")
-43
View File
@@ -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
View File
@@ -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);
+25 -25
View File
@@ -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