diff options
| author | Anghelo Carvajal <angheloalf95@gmail.com> | 2024-06-25 15:17:03 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-25 15:17:03 -0400 |
| commit | 6541532abb5c03088ad67748bbb23965c654127e (patch) | |
| tree | 9d902764304a1612cb91640bf19f34842d882ef7 /include | |
| parent | 0bb57352a52ba8fa3d361d2f88c2b9063fa71f62 (diff) | |
Add a `z64play.h` header (#1646)
* z64play.h
* Move macros, functions and variables to header
* cleanup
* Reduce needed headers on z_collision_check
* Change play functions to take PlayState
* Move `Actor_ProcessInitChain` to `ichain.h`
* format
* Update src/code/z_play.c
Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>
* Add macros.h to sys_math3d.c
* Rename SequenceContext to SceneSequences
---------
Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>
Diffstat (limited to 'include')
| -rw-r--r-- | include/color.h | 2 | ||||
| -rw-r--r-- | include/functions.h | 51 | ||||
| -rw-r--r-- | include/ichain.h | 4 | ||||
| -rw-r--r-- | include/macros.h | 7 | ||||
| -rw-r--r-- | include/variables.h | 5 | ||||
| -rw-r--r-- | include/z64.h | 107 | ||||
| -rw-r--r-- | include/z64bombers_notebook.h | 2 | ||||
| -rw-r--r-- | include/z64environment.h | 2 | ||||
| -rw-r--r-- | include/z64frameadvance.h | 3 | ||||
| -rw-r--r-- | include/z64lib.h | 3 | ||||
| -rw-r--r-- | include/z64play.h | 196 |
11 files changed, 207 insertions, 175 deletions
diff --git a/include/color.h b/include/color.h index 7c0cd7d9f..f7e7a9dfa 100644 --- a/include/color.h +++ b/include/color.h @@ -26,7 +26,7 @@ typedef struct { } Color_RGB16; // size = 0x6 // only use when necessary for alignment purposes -typedef union { +typedef union Color_RGBA8_u32 { struct { u8 r, g, b, a; }; diff --git a/include/functions.h b/include/functions.h index eb6aadf29..07b0e5b83 100644 --- a/include/functions.h +++ b/include/functions.h @@ -264,57 +264,6 @@ void Inventory_IncrementSkullTokenCount(s16 sceneIndex); s16 Inventory_GetSkullTokenCount(s16 sceneIndex); void Inventory_SaveLotteryCodeGuess(PlayState* play); -void Play_SetMotionBlurAlpha(u32 alpha); -void Play_EnableMotionBlur(u32 alpha); -void Play_DisableMotionBlur(void); -void Play_SetMotionBlurPriorityAlpha(u32 alpha); -void Play_EnableMotionBlurPriority(u32 alpha); -void Play_DisableMotionBlurPriority(void); -void Play_TriggerPictoPhoto(void); -Gfx* Play_SetFog(PlayState* this, Gfx* gfx); -void Play_Destroy(GameState* thisx); -void Play_CompressI8ToI5(void* srcI8, void* destI5, size_t size); -void Play_DecompressI5ToI8(void* srcI5, void* destI8, size_t size); -void Play_Update(PlayState* this); -void Play_Draw(PlayState* this); -void Play_Main(GameState* thisx); -bool Play_InCsMode(PlayState* this); -f32 Play_GetFloorSurfaceImpl(PlayState* this, MtxF* mtx, CollisionPoly** poly, s32* bgId, Vec3f* pos); -void Play_GetFloorSurface(PlayState* this, MtxF* mtx, Vec3f* pos); -void* Play_LoadFile(PlayState* this, RomFile* entry); -void Play_InitEnvironment(PlayState* this, s16 skyboxId); -void Play_GetScreenPos(PlayState* this, Vec3f* worldPos, Vec3f* screenPos); -s16 Play_CreateSubCamera(PlayState* this); -s16 Play_GetActiveCamId(PlayState* this); -s32 Play_ChangeCameraStatus(PlayState* this, s16 camId, s16 status); -void Play_ClearCamera(PlayState* this, s16 camId); -Camera* Play_GetCamera(PlayState* this, s16 camId); -s32 Play_SetCameraAtEye(PlayState* this, s16 camId, Vec3f* at, Vec3f* eye); -s32 Play_SetCameraAtEyeUp(PlayState* this, s16 camId, Vec3f* at, Vec3f* eye, Vec3f* up); -s32 Play_SetCameraFov(PlayState* this, s16 camId, f32 fov); -s32 Play_SetCameraRoll(PlayState* this, s16 camId, s16 roll); -void Play_CopyCamera(PlayState* this, s16 destCamId, s16 srcCamId); -s32 func_80169A50(PlayState* this, s16 camId, Player* player, s16 setting); -s32 Play_ChangeCameraSetting(PlayState* this, s16 camId, s16 setting); -void func_80169AFC(PlayState* this, s16 camId, s16 timer); -u16 Play_GetActorCsCamSetting(PlayState* this, s32 csCamDataIndex); -Vec3s* Play_GetActorCsCamFuncData(PlayState* this, s32 csCamDataIndex); -s16 Play_GetOriginalSceneId(s16 sceneId); -void Play_SaveCycleSceneFlags(GameState* thisx); -void Play_SetRespawnData(GameState* thisx, s32 respawnMode, u16 entrance, s32 roomIndex, s32 playerParams, Vec3f* pos, s16 yaw); -void Play_SetupRespawnPoint(GameState* thisx, s32 respawnMode, s32 playerParams); -void func_80169EFC(GameState* thisx); -void func_80169F78(GameState* thisx); -void func_80169FDC(GameState* thisx); -s32 Play_CamIsNotFixed(GameState* thisx); -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_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); - void Graph_FaultClient(void); void Graph_InitTHGA(TwoHeadGfxArena* arena, Gfx* buffer, s32 size); void Graph_SetNextGfxPool(GraphicsContext* gfxCtx); diff --git a/include/ichain.h b/include/ichain.h index 1c7e8f26b..43ee0ee4b 100644 --- a/include/ichain.h +++ b/include/ichain.h @@ -55,4 +55,8 @@ typedef enum { #define ICHAIN_CONTINUE 1 #define ICHAIN_STOP 0 +struct Actor; + +void Actor_ProcessInitChain(struct Actor* actor, struct InitChainEntry* ichain); + #endif diff --git a/include/macros.h b/include/macros.h index fcede4ac2..534b275c7 100644 --- a/include/macros.h +++ b/include/macros.h @@ -2,7 +2,6 @@ #define MACROS_H #include "stdint.h" -#include "PR/os_convert.h" #define SCREEN_WIDTH 320 #define SCREEN_HEIGHT 240 @@ -20,12 +19,6 @@ #define ARRAY_COUNT_2D(arr) (ARRAY_COUNT(arr) * ARRAY_COUNT(arr[0])) -#define GET_ACTIVE_CAM(play) ((play)->cameraPtrs[(play)->activeCamId]) - -#define GET_PLAYER(play) ((Player*)(play)->actorCtx.actorLists[ACTORCAT_PLAYER].first) - -#define GET_FIRST_ENEMY(play) ((Actor*)(play)->actorCtx.actorLists[ACTORCAT_ENEMY].first) - #define CLOCK_TIME(hr, min) (s32)(((hr) * 60 + (min)) * 0x10000 / (24 * 60)) #define CLOCK_TIME_MINUTE (CLOCK_TIME(0, 1)) #define CLOCK_TIME_HOUR (CLOCK_TIME(1, 0)) diff --git a/include/variables.h b/include/variables.h index cb5741ff8..b257b01d5 100644 --- a/include/variables.h +++ b/include/variables.h @@ -23,8 +23,6 @@ extern s16 gItemPrices[]; extern u16 gSceneIdsPerRegion[11][27]; extern u8 gPlayerFormItemRestrictions[PLAYER_FORM_MAX][114]; -extern s32 gDbgCamEnabled; - extern s16 gLowPassFilterData[]; extern s16 gHighPassFilterData[]; extern s16 gBandStopFilterData[]; @@ -62,9 +60,6 @@ extern u8 gSampleBankTable[]; // bss -extern s32 gTransitionTileState; -extern Color_RGBA8_u32 gPlayVisMonoColor; - extern GfxMasterList* gGfxMasterDL; extern u64* gAudioSPDataPtr; diff --git a/include/z64.h b/include/z64.h index b0884e794..3efb58338 100644 --- a/include/z64.h +++ b/include/z64.h @@ -59,6 +59,7 @@ #include "z64object.h" #include "z64ocarina.h" #include "z64pause_menu.h" +#include "z64play.h" #include "z64player.h" #include "z64prerender.h" #include "z64save.h" @@ -73,110 +74,4 @@ #include "z64transition.h" #include "z64view.h" - -typedef struct { - /* 0x0 */ u8 seqId; - /* 0x1 */ u8 ambienceId; -} SequenceContext; // size = 0x2 - -typedef struct PlayState { - /* 0x00000 */ GameState state; - /* 0x000A4 */ s16 sceneId; - /* 0x000A6 */ u8 sceneConfig; - /* 0x000A7 */ char unk_A7[0x9]; - /* 0x000B0 */ void* sceneSegment; - /* 0x000B4 */ char unk_B4[0x4]; - /* 0x000B8 */ View view; - /* 0x00220 */ Camera mainCamera; - /* 0x00398 */ Camera subCameras[NUM_CAMS - CAM_ID_SUB_FIRST]; - /* 0x00800 */ Camera* cameraPtrs[NUM_CAMS]; - /* 0x00810 */ s16 activeCamId; - /* 0x00812 */ s16 nextCamera; - /* 0x00814 */ SequenceContext sequenceCtx; - /* 0x00818 */ LightContext lightCtx; - /* 0x00828 */ FrameAdvanceContext frameAdvCtx; - /* 0x00830 */ CollisionContext colCtx; - /* 0x01CA0 */ ActorContext actorCtx; - /* 0x01F24 */ CutsceneContext csCtx; - /* 0x01F78 */ SoundSource soundSources[SOUND_SOURCE_COUNT]; - /* 0x02138 */ EffFootmark footprintInfo[100]; - /* 0x046B8 */ SramContext sramCtx; - /* 0x046E0 */ SkyboxContext skyboxCtx; - /* 0x04908 */ MessageContext msgCtx; - /* 0x169E8 */ InterfaceContext interfaceCtx; - /* 0x16D30 */ PauseContext pauseCtx; - /* 0x17000 */ GameOverContext gameOverCtx; - /* 0x17004 */ EnvironmentContext envCtx; - /* 0x17104 */ AnimationContext animationCtx; - /* 0x17D88 */ ObjectContext objectCtx; - /* 0x186E0 */ RoomContext roomCtx; - /* 0x18760 */ TransitionActorList transitionActors; - /* 0x18768 */ void (*playerInit)(Player* player, struct PlayState* play, FlexSkeletonHeader* skelHeader); - /* 0x1876C */ void (*playerUpdate)(Player* player, struct PlayState* play, Input* input); - /* 0x18770 */ void (*unk_18770)(struct PlayState* play, Player* player); - /* 0x18774 */ s32 (*startPlayerFishing)(struct PlayState* play); - /* 0x18778 */ s32 (*grabPlayer)(struct PlayState* play, Player* player); - /* 0x1877C */ s32 (*tryPlayerCsAction)(struct PlayState* play, Player* player, PlayerCsAction csAction); - /* 0x18780 */ void (*func_18780)(Player* player, struct PlayState* play); - /* 0x18784 */ s32 (*damagePlayer)(struct PlayState* play, s32 damage); - /* 0x18788 */ void (*talkWithPlayer)(struct PlayState* play, Actor* actor); - /* 0x1878C */ void (*unk_1878C)(struct PlayState* play); - /* 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 playerCsIds[PLAYER_CS_ID_MAX]; - /* 0x187B0 */ MtxF viewProjectionMtxF; - /* 0x187F0 */ Vec3f projectionMtxFDiagonal; - /* 0x187FC */ MtxF billboardMtxF; - /* 0x1883C */ Mtx* billboardMtx; - /* 0x18840 */ u32 gameplayFrames; - /* 0x18844 */ u8 unk_18844; // bool - /* 0x18845 */ u8 haltAllActors; - /* 0x18846 */ s16 numSetupActors; - /* 0x18848 */ u8 numRooms; - /* 0x1884C */ RomFile* roomList; - /* 0x18850 */ ActorEntry* linkActorEntry; - /* 0x18854 */ ActorEntry* setupActorList; - /* 0x18858 */ ActorCsCamInfo* actorCsCamList; - /* 0x1885C */ EntranceEntry* setupEntranceList; - /* 0x18860 */ u16* setupExitList; - /* 0x18864 */ Path* setupPathList; - /* 0x18868 */ void* naviQuestHints; // leftover from OoT, system which processes this is removed - /* 0x1886C */ AnimatedMaterial* sceneMaterialAnims; - /* 0x18870 */ void* specialEffects; - /* 0x18874 */ u8 skyboxId; // @see SkyboxId enum - /* 0x18875 */ s8 transitionTrigger; // "fade_direction" - /* 0x18876 */ s16 worldCoverAlpha; - /* 0x18878 */ s16 bgCoverAlpha; - /* 0x1887A */ u16 nextEntrance; - /* 0x1887C */ s8 unk_1887C; // shootingGalleryStatus? - /* 0x1887D */ s8 unk_1887D; - /* 0x1887E */ s8 unk_1887E; - /* 0x1887F */ u8 transitionType; // fadeTransition - /* 0x18880 */ u8 unk_18880; - /* 0x18884 */ CollisionCheckContext colChkCtx; - /* 0x18B20 */ u16 cutsceneFlags[20]; - /* 0x18B48 */ u8 curSpawn; - /* 0x18B49 */ u8 unk_18B49; - /* 0x18B4A */ u8 transitionMode; - /* 0x18B4C */ PreRender pauseBgPreRender; - /* 0x18B9C */ char unk_18B9C[0x54]; - /* 0x18BF0 */ TransitionContext transitionCtx; - /* 0x18E48 */ TransitionFade unk_18E48; - /* 0x18E54 */ SceneTableEntry* loadedScene; - /* 0x18E58 */ void* unk_18E58; - /* 0x18E5C */ TexturePtr pictoPhotoI8; - /* 0x18E60 */ void* unk_18E60; - /* 0x18E64 */ void* unk_18E64; - /* 0x18E68 */ void* unk_18E68; // framebuffer related to Lens of Truth - /* 0x18E6C */ char unk_18E6C[0x3EC]; -} PlayState; // size = 0x19258 - -typedef enum { - /* 0 */ PICTO_PHOTO_STATE_OFF, - /* 1 */ PICTO_PHOTO_STATE_SETUP, - /* 2 */ PICTO_PHOTO_STATE_PROCESS, - /* 3 */ PICTO_PHOTO_STATE_READY -} PictoPhotoState; - #endif diff --git a/include/z64bombers_notebook.h b/include/z64bombers_notebook.h index 6b52121bb..a67777d2e 100644 --- a/include/z64bombers_notebook.h +++ b/include/z64bombers_notebook.h @@ -34,7 +34,7 @@ typedef enum BombersNotebookEvent { #undef DEFINE_PERSON #undef DEFINE_EVENT -typedef struct { +typedef struct BombersNotebook { /* 0x00 */ u8 loadState; /* 0x01 */ UNK_TYPE1 pad01[0x3F]; /* 0x40 */ void* scheduleDmaSegment; diff --git a/include/z64environment.h b/include/z64environment.h index 45f8463f0..74f89aade 100644 --- a/include/z64environment.h +++ b/include/z64environment.h @@ -272,7 +272,7 @@ typedef struct EnvironmentContext { /* 0xED */ u8 customSkyboxFilter; /* 0xEE */ u8 skyboxFilterColor[4]; /* 0xF2 */ u8 precipitation[PRECIP_MAX]; - /* 0xF7 */ UNK_TYPE1 unk_FA[9]; + /* 0xF7 */ UNK_TYPE1 unk_F7[9]; } EnvironmentContext; // size = 0x100 s32 Environment_ZBufValToFixedPoint(s32 zBufferVal); diff --git a/include/z64frameadvance.h b/include/z64frameadvance.h index a05ee8d58..13ce8389e 100644 --- a/include/z64frameadvance.h +++ b/include/z64frameadvance.h @@ -4,6 +4,7 @@ #include "ultra64.h" struct Input; +struct PlayState; typedef struct FrameAdvanceContext { @@ -14,4 +15,6 @@ typedef struct FrameAdvanceContext { void FrameAdvance_Init(FrameAdvanceContext* frameAdvCtx); s32 FrameAdvance_Update(FrameAdvanceContext* frameAdvCtx, struct Input* input); +s32 FrameAdvance_IsEnabled(struct PlayState* this); + #endif diff --git a/include/z64lib.h b/include/z64lib.h index 5e38eab75..f93ec5c47 100644 --- a/include/z64lib.h +++ b/include/z64lib.h @@ -8,14 +8,11 @@ #include "color.h" #include "z64math.h" -struct Actor; -struct InitChainEntry; struct Input; void* Lib_MemCpy(void* dest, void* src, size_t size); void* Lib_MemSet(void* buffer, s32 value, size_t size); void Lib_GetControlStickData(f32* outMagnitude, s16* outAngle, struct Input* input); -void Actor_ProcessInitChain(struct Actor* actor, struct InitChainEntry* ichain); void Color_RGBA8_Copy(Color_RGBA8* dst, Color_RGBA8* src); void Lib_PlaySfx(u16 sfxId); void Lib_PlaySfx_2(u16 sfxId); diff --git a/include/z64play.h b/include/z64play.h new file mode 100644 index 000000000..b5f78f702 --- /dev/null +++ b/include/z64play.h @@ -0,0 +1,196 @@ +#ifndef Z64PLAY_H +#define Z64PLAY_H + +#include "ultra64.h" + +#include "z64actor.h" +#include "z64animation.h" +#include "z64bgcheck.h" +#include "z64camera.h" +#include "z64collision_check.h" +#include "z64cutscene.h" +#include "z64eff_footmark.h" +#include "z64environment.h" +#include "z64frameadvance.h" +#include "z64game_over.h" +#include "z64game.h" +#include "z64interface.h" +#include "z64item.h" +#include "z64light.h" +#include "z64math.h" +#include "z64message.h" +#include "z64pause_menu.h" +#include "z64player.h" +#include "z64prerender.h" +#include "z64save.h" +#include "z64scene.h" +#include "z64skybox.h" +#include "z64sound_source.h" +#include "z64transition.h" +#include "z64view.h" + +typedef struct SceneSequences { + /* 0x0 */ u8 seqId; + /* 0x1 */ u8 ambienceId; +} SceneSequences; // size = 0x2 + +typedef struct PlayState { + /* 0x00000 */ GameState state; + /* 0x000A4 */ s16 sceneId; + /* 0x000A6 */ u8 sceneConfig; + /* 0x000A7 */ char unk_A7[0x9]; + /* 0x000B0 */ void* sceneSegment; + /* 0x000B8 */ View view; + /* 0x00220 */ Camera mainCamera; + /* 0x00398 */ Camera subCameras[NUM_CAMS - CAM_ID_SUB_FIRST]; + /* 0x00800 */ Camera* cameraPtrs[NUM_CAMS]; + /* 0x00810 */ s16 activeCamId; + /* 0x00812 */ s16 nextCamera; + /* 0x00814 */ SceneSequences sceneSequences; + /* 0x00818 */ LightContext lightCtx; + /* 0x00828 */ FrameAdvanceContext frameAdvCtx; + /* 0x00830 */ CollisionContext colCtx; + /* 0x01CA0 */ ActorContext actorCtx; + /* 0x01F24 */ CutsceneContext csCtx; + /* 0x01F78 */ SoundSource soundSources[SOUND_SOURCE_COUNT]; + /* 0x02138 */ EffFootmark footprintInfo[100]; + /* 0x046B8 */ SramContext sramCtx; + /* 0x046E0 */ SkyboxContext skyboxCtx; + /* 0x04908 */ MessageContext msgCtx; + /* 0x169E8 */ InterfaceContext interfaceCtx; + /* 0x16D30 */ PauseContext pauseCtx; + /* 0x17000 */ GameOverContext gameOverCtx; + /* 0x17004 */ EnvironmentContext envCtx; + /* 0x17104 */ AnimationContext animationCtx; + /* 0x17D88 */ ObjectContext objectCtx; + /* 0x186E0 */ RoomContext roomCtx; + /* 0x18760 */ TransitionActorList transitionActors; + /* 0x18768 */ void (*playerInit)(Player* player, struct PlayState* play, FlexSkeletonHeader* skelHeader); + /* 0x1876C */ void (*playerUpdate)(Player* player, struct PlayState* play, Input* input); + /* 0x18770 */ void (*unk_18770)(struct PlayState* play, Player* player); + /* 0x18774 */ s32 (*startPlayerFishing)(struct PlayState* play); + /* 0x18778 */ s32 (*grabPlayer)(struct PlayState* play, Player* player); + /* 0x1877C */ s32 (*tryPlayerCsAction)(struct PlayState* play, Player* player, PlayerCsAction csAction); + /* 0x18780 */ void (*func_18780)(Player* player, struct PlayState* play); + /* 0x18784 */ s32 (*damagePlayer)(struct PlayState* play, s32 damage); + /* 0x18788 */ void (*talkWithPlayer)(struct PlayState* play, Actor* actor); + /* 0x1878C */ void (*unk_1878C)(struct PlayState* play); + /* 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 playerCsIds[PLAYER_CS_ID_MAX]; + /* 0x187B0 */ MtxF viewProjectionMtxF; + /* 0x187F0 */ Vec3f projectionMtxFDiagonal; + /* 0x187FC */ MtxF billboardMtxF; + /* 0x1883C */ Mtx* billboardMtx; + /* 0x18840 */ u32 gameplayFrames; + /* 0x18844 */ u8 unk_18844; // bool + /* 0x18845 */ u8 haltAllActors; + /* 0x18846 */ s16 numSetupActors; + /* 0x18848 */ u8 numRooms; + /* 0x1884C */ RomFile* roomList; + /* 0x18850 */ ActorEntry* linkActorEntry; + /* 0x18854 */ ActorEntry* setupActorList; + /* 0x18858 */ ActorCsCamInfo* actorCsCamList; + /* 0x1885C */ EntranceEntry* setupEntranceList; + /* 0x18860 */ u16* setupExitList; + /* 0x18864 */ Path* setupPathList; + /* 0x18868 */ void* naviQuestHints; // leftover from OoT, system which processes this is removed + /* 0x1886C */ AnimatedMaterial* sceneMaterialAnims; + /* 0x18870 */ void* specialEffects; + /* 0x18874 */ u8 skyboxId; // @see SkyboxId enum + /* 0x18875 */ s8 transitionTrigger; // "fade_direction" + /* 0x18876 */ s16 worldCoverAlpha; + /* 0x18878 */ s16 bgCoverAlpha; + /* 0x1887A */ u16 nextEntrance; + /* 0x1887C */ s8 unk_1887C; // shootingGalleryStatus? + /* 0x1887D */ s8 unk_1887D; + /* 0x1887E */ s8 unk_1887E; + /* 0x1887F */ u8 transitionType; // fadeTransition + /* 0x18880 */ u8 unk_18880; + /* 0x18884 */ CollisionCheckContext colChkCtx; + /* 0x18B20 */ u16 cutsceneFlags[20]; + /* 0x18B48 */ u8 curSpawn; + /* 0x18B49 */ u8 unk_18B49; + /* 0x18B4A */ u8 transitionMode; + /* 0x18B4C */ PreRender pauseBgPreRender; + /* 0x18B9C */ char unk_18B9C[0x54]; + /* 0x18BF0 */ TransitionContext transitionCtx; + /* 0x18E48 */ TransitionFade unk_18E48; + /* 0x18E54 */ SceneTableEntry* loadedScene; + /* 0x18E58 */ void* unk_18E58; + /* 0x18E5C */ TexturePtr pictoPhotoI8; + /* 0x18E60 */ void* unk_18E60; + /* 0x18E64 */ void* unk_18E64; + /* 0x18E68 */ void* unk_18E68; // framebuffer related to Lens of Truth + /* 0x18E6C */ char unk_18E6C[0x3EC]; +} PlayState; // size = 0x19258 + +typedef enum PictoPhotoState { + /* 0 */ PICTO_PHOTO_STATE_OFF, + /* 1 */ PICTO_PHOTO_STATE_SETUP, + /* 2 */ PICTO_PHOTO_STATE_PROCESS, + /* 3 */ PICTO_PHOTO_STATE_READY +} PictoPhotoState; + +#define GET_ACTIVE_CAM(play) ((play)->cameraPtrs[(play)->activeCamId]) +#define GET_PLAYER(play) ((Player*)(play)->actorCtx.actorLists[ACTORCAT_PLAYER].first) +#define GET_FIRST_ENEMY(play) ((Actor*)(play)->actorCtx.actorLists[ACTORCAT_ENEMY].first) + + +void Play_SetMotionBlurAlpha(u32 alpha); +void Play_EnableMotionBlur(u32 alpha); +void Play_DisableMotionBlur(void); +void Play_SetMotionBlurPriorityAlpha(u32 alpha); +void Play_EnableMotionBlurPriority(u32 alpha); +void Play_DisableMotionBlurPriority(void); +void Play_TriggerPictoPhoto(void); +Gfx* Play_SetFog(PlayState* this, Gfx* gfx); +void Play_Destroy(GameState* thisx); +void Play_CompressI8ToI5(void* srcI8, void* destI5, size_t size); +void Play_DecompressI5ToI8(void* srcI5, void* destI8, size_t size); +void Play_Update(PlayState* this); +void Play_Draw(PlayState* this); +void Play_Main(GameState* thisx); +bool Play_InCsMode(PlayState* this); +f32 Play_GetFloorSurfaceImpl(PlayState* this, MtxF* mtx, CollisionPoly** poly, s32* bgId, Vec3f* pos); +void Play_GetFloorSurface(PlayState* this, MtxF* mtx, Vec3f* pos); +void* Play_LoadFile(PlayState* this, RomFile* entry); +void Play_InitEnvironment(PlayState* this, s16 skyboxId); +void Play_GetScreenPos(PlayState* this, Vec3f* worldPos, Vec3f* screenPos); +s16 Play_CreateSubCamera(PlayState* this); +s16 Play_GetActiveCamId(PlayState* this); +s32 Play_ChangeCameraStatus(PlayState* this, s16 camId, s16 status); +void Play_ClearCamera(PlayState* this, s16 camId); +Camera* Play_GetCamera(PlayState* this, s16 camId); +s32 Play_SetCameraAtEye(PlayState* this, s16 camId, Vec3f* at, Vec3f* eye); +s32 Play_SetCameraAtEyeUp(PlayState* this, s16 camId, Vec3f* at, Vec3f* eye, Vec3f* up); +s32 Play_SetCameraFov(PlayState* this, s16 camId, f32 fov); +s32 Play_SetCameraRoll(PlayState* this, s16 camId, s16 roll); +void Play_CopyCamera(PlayState* this, s16 destCamId, s16 srcCamId); +s32 func_80169A50(PlayState* this, s16 camId, Player* player, s16 setting); +s32 Play_ChangeCameraSetting(PlayState* this, s16 camId, s16 setting); +void func_80169AFC(PlayState* this, s16 camId, s16 timer); +u16 Play_GetActorCsCamSetting(PlayState* this, s32 csCamDataIndex); +Vec3s* Play_GetActorCsCamFuncData(PlayState* this, s32 csCamDataIndex); +s16 Play_GetOriginalSceneId(s16 sceneId); +void Play_SaveCycleSceneFlags(PlayState* this); +void Play_SetRespawnData(PlayState* this, s32 respawnMode, u16 entrance, s32 roomIndex, s32 playerParams, Vec3f* pos, s16 yaw); +void Play_SetupRespawnPoint(PlayState* this, s32 respawnMode, s32 playerParams); +void func_80169EFC(PlayState* this); +void func_80169F78(PlayState* this); +void func_80169FDC(PlayState* this); +s32 Play_CamIsNotFixed(PlayState* this); +s32 func_8016A02C(PlayState* this, Actor* actor, s16* yaw); +s32 Play_IsUnderwater(PlayState* this, Vec3f* pos); +s32 Play_IsDebugCamEnabled(void); +void Play_AssignPlayerCsIdsFromScene(PlayState* this, s32 spawnCsId); +void Play_FillScreen(PlayState* this, s16 fillScreenOn, u8 red, u8 green, u8 blue, u8 alpha); +void Play_Init(GameState* thisx); + +extern s32 gDbgCamEnabled; + +extern s32 gTransitionTileState; +extern Color_RGBA8_u32 gPlayVisMonoColor; + +#endif |
