diff --git a/include/functions.h b/include/functions.h index 88b8f25032..5ce1ce872a 100644 --- a/include/functions.h +++ b/include/functions.h @@ -978,7 +978,7 @@ s32 Camera_ChangeMode(Camera* camera, s16 mode); s32 func_800DF86C(Camera* camera, s16 arg1); // void func_800DF8EC(void); s32 Camera_ChangeSetting(Camera* camera, s16 setting); -u32 Camera_ChangeDataIdx(Camera* camera, u32 camDataIdx); +s32 Camera_ChangeDataIdx(Camera* camera, s32 camDataIdx); // void func_800DFC1C(void); // void func_800DFC40(void); s32 Camera_GetInputDirYaw(Camera* camera); @@ -988,7 +988,7 @@ s16 Camera_GetCamDirYaw(Camera* camera); void Camera_AddQuake(Camera* camera, s32 arg1, s16 y, s32 countdown); s32 Camera_SetViewParam(Camera* camera, s32 viewFlag, void* param); // UNK_TYPE4 func_800DFEF0(s32 param_1, u16 param_2); -// UNK_TYPE4 func_800DFF18(Camera* iParm1, UNK_TYPE2 uParm2); +void func_800DFF18(Camera* camera, s32 arg1); // UNK_TYPE4 func_800DFF34(s32 param_1); // UNK_TYPE4 func_800DFF44(void); s16 Camera_SetFlags(Camera* iParm1, s16 flags); @@ -1227,7 +1227,8 @@ 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 GameInfo_Init(void); -// void DebugDisplay_Init(void); +DebugDispObject* DebugDisplay_Init(void); +void DebugDisplay_DrawObjects(PlayState* play); DebugDispObject* DebugDisplay_AddObject(f32 posX, f32 posY, f32 posZ, s16 rotX, s16 rotY, s16 rotZ, f32 scaleX, f32 scaleY, f32 scaleZ, u8 red, u8 green, u8 blue, u8 alpha, s16 type, GraphicsContext* gfxCtx); // void func_800E9C90(void); // void func_800E9CA0(s32 param_1, UNK_TYPE1 param_2, s8* param_3); @@ -1274,11 +1275,11 @@ 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_ClearWaiting(void); // void ActorCutscene_ClearNextCutscenes(void); // void ActorCutscene_MarkNextCutscenes(void); // void ActorCutscene_End(void); -// void ActorCutscene_Update(void); +s16 ActorCutscene_Update(void); void ActorCutscene_SetIntentToPlay(s16 index); s16 ActorCutscene_GetCanPlayNext(s16 index); s16 ActorCutscene_StartAndSetUnkLinkFields(s16 index, Actor* actor); @@ -1323,13 +1324,13 @@ void Font_LoadMessageBoxEndIcon(Font* font, u16 icon); void Font_LoadOrderedFont(Font* font); // void func_800F5090(void); // void func_800F50D4(void); -void Kankyo_Init(PlayState* play, EnvironmentContext* envCtx); +void Environment_Init(PlayState* play, EnvironmentContext* envCtx, s32 arg2); u32 func_800F5954(u8* param_1, u32 param_2, u32 param_3, u8 param_4, u8 param_5); f32 Environment_LerpWeight(u16 max, u16 min, u16 val); // void func_800F5B10(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5); -// void func_800F5CD0(void); +void Environment_UpdateSkybox(u8 skyboxId, EnvironmentContext* envCtx, SkyboxContext* skyboxCtx); void func_800F6834(PlayState* play, s32 waterLightsIndex); -// void func_800F694C(void); +void func_800F694C(PlayState* play); // void func_800F6A04(void); // void func_800F6A40(void); // void func_800F6AB8(void); @@ -1342,13 +1343,15 @@ void func_800F6FF8(PlayState* play, EnvironmentContext* envCtx, LightContext* li // void func_800F88C4(void); // void func_800F8970(void); // void func_800F8A9C(void); -// void func_800F8CD4(PlayState* play, EnvironmentContext* envCtx, LightContext* lightCtx, s32 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6); +void Environment_Update(PlayState* play, EnvironmentContext* envCtx, LightContext* lightCtx, + PauseContext* pauseCtx, MessageContext* msgCtx, GameOverContext* gameOverCtx, + GraphicsContext* gfxCtx); // void func_800F8D84(void); -// void func_800F9728(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7); +void Environment_DrawSunLensFlare(PlayState* play, EnvironmentContext* envCtx, View* view, GraphicsContext* gfxCtx, Vec3f pos); void func_800F9824(PlayState* play, EnvironmentContext* envCtx, View* view, GraphicsContext* gfxCtx, Vec3f vec, f32 arg5, f32 arg6, s8 arg7, s8 arg8); // void func_800FA39C(void); // void func_800FA3C4(void); -// void func_800FA9FC(void); +void Environment_DrawRain(PlayState* play, View* view, GraphicsContext* gfxCtx); void func_800FAAB4(PlayState* play, u8 arg1); // void func_800FAC20(void); // void func_800FAF74(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE1 param_5); @@ -1357,13 +1360,13 @@ void Environment_AddLightningBolts(PlayState* play, u8 num); // void func_800FB388(void); void func_800FB758(PlayState* play); // void func_800FB9B4(void); -// void func_800FBCBC(void); +void Environment_DrawCustomLensFlare(PlayState* play); void Kankyo_InitGameOverLights(PlayState* play); void Kankyo_FadeInGameOverLights(PlayState* play); void Kankyo_FadeOutGameOverLights(PlayState* play); // void func_800FC3DC(void); -void func_800FC444(GraphicsContext* gfxCtx, u8 arg1, u8 arg2, u8 arg3, u8 arg4, UNK_TYPE arg5); -// void func_800FC64C(void); +void Environment_FillScreen(GraphicsContext* gfxCtx, u8 red, u8 green, u8 blue, u8 alpha, u8 drawFlags); +void Environment_DrawSandstorm(PlayState* play, u8 sandstormState); s32 func_800FD2B4(PlayState* play, f32 arg1, f32 arg2, f32 arg3, f32 arg4); void func_800FD538(Color_RGB8* param_1, Color_RGB8* param_2, f32 param_3, Vec3s* param_4); void func_800FD59C(PlayState* play, Color_RGB8* pzParm2, f32 fParm3); @@ -1374,20 +1377,20 @@ void func_800FD698(PlayState* play, s16 arg1, s16 arg2, f32 arg3); // void reset_days_elapsed(void); // u32 get_current_day(void); void func_800FD750(u16 seqId); -// void func_800FD768(void); +s32 func_800FD768(void); void func_800FD78C(PlayState* play); void func_800FD858(PlayState* play); void func_800FD928(s32 param_1); // void func_800FD980(void); // void func_800FDAF8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); // void func_800FDC94(void); -// void func_800FE390(void); -// void func_800FE3E0(void); +void func_800FE390(PlayState* play); +void func_800FE3E0(PlayState* play); void Environment_StopTime(void); void Environment_StartTime(void); u8 Environment_IsTimeStopped(void); u32 func_800FE4B8(PlayState* play); -// void func_800FE590(void); +s32 func_800FE590(PlayState* play); // void func_800FE5D0(void); // UNK_TYPE4 func_800FE610(void); u32 func_800FE620(PlayState* play); @@ -1496,7 +1499,7 @@ LightNode* Lights_FindBufSlot(); void Lights_FreeNode(LightNode* light); void LightContext_Init(PlayState* play, LightContext* lightCtx); void LightContext_SetAmbientColor(LightContext* lightCtx, u8 r, u8 g, u8 b); -void func_80102544(LightContext* lightCtx, u8 a1, u8 a2, u8 a3, s16 numLights, s16 sp16); +void LightContext_SetFog(LightContext* lightCtx, u8 r, u8 g, u8 b, s16 near, s16 far); Lights* LightContext_NewLights(LightContext* lightCtx, GraphicsContext* gfxCtx); void LightContext_InitList(PlayState* play, LightContext* lightCtx); void LightContext_DestroyList(PlayState* play, LightContext* lightCtx); @@ -1514,7 +1517,7 @@ void* ZeldaArena_Calloc(u32 num, size_t size); void ZeldaArena_GetSizes(size_t* outMaxFree, size_t* outFree, size_t* outAlloc); s32 ZeldaArena_Check(); void ZeldaArena_Init(void* start, size_t size); -void ZeldaArena_Cleanup(); +void ZeldaArena_Cleanup(void); u8 ZeldaArena_IsInitialized(); // void func_80102E40(void); // void func_80102E90(void); @@ -1974,7 +1977,7 @@ void Scene_SetExitFade(PlayState* play); s32 Scene_ProcessHeader(PlayState* play, SceneCmd* header); u16 Entrance_Create(s32 scene, s32 spawn, s32 layer); u16 Entrance_CreateFromSpawn(s32 spawn); -void Scene_ExecuteDrawConfig(PlayState* play); +void Scene_Draw(PlayState* play); void Scene_DrawConfigDefault(PlayState* play); Gfx* AnimatedMat_TexScroll(PlayState* play, AnimatedMatTexScrollParams* params); void AnimatedMat_DrawTexScroll(PlayState* play, s32 segment, void* params); @@ -2141,8 +2144,8 @@ void func_80140900(void* arg0); void func_80140CE0(void* arg0); void func_80140D04(void* arg0); void func_80140D10(void* arg0, Gfx** gfx, u32 arg2); -void func_80140E80(void* param_1); -// void func_80140EA0(void); +void func_80140E80(Struct_80140E80* arg0); +void func_80140EA0(Struct_80140E80* arg0); // void func_80140EAC(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_80141008(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9, UNK_TYPE4 param_10); void func_8014116C(Gfx** gfxP, u16* arg1, u16* arg2, s32 width, s32 height, s32 arg5); @@ -2150,7 +2153,7 @@ void func_8014116C(Gfx** gfxP, u16* arg1, u16* arg2, s32 width, s32 height, s32 // void func_80141200(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_8014151C(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_80141678(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5); -// void func_80141778(void); +void func_80141778(Struct_80140E80* arg0, Gfx** gfxp, void* unk_18E60, GraphicsContext* gfxCtx); void VisMono_Init(VisMono* this); void VisMono_Destroy(VisMono* this); // void VisMono_DesaturateTLUT(u16* tlut); @@ -2169,7 +2172,7 @@ void Skybox_Init(GameState* gameState, SkyboxContext* skyboxCtx, s16 skyboxId); Mtx* SkyboxDraw_UpdateMatrix(SkyboxContext* skyboxCtx, f32 x, f32 y, f32 z); void SkyboxDraw_SetColors(SkyboxContext* skyboxCtx, u8 primR, u8 primG, u8 primB, u8 envR, u8 envG, u8 envB); void SkyboxDraw_Draw(SkyboxContext* skyboxCtx, GraphicsContext* gfxCtx, s16 skyboxId, s16 blend, f32 x, f32 y, f32 z); -void SkyboxDraw_Noop(SkyboxContext* skyboxCtx); +void SkyboxDraw_Update(SkyboxContext* skyboxCtx); // void func_80147520(void); void func_80147564(PlayState* play); @@ -2221,8 +2224,8 @@ u8 Message_GetState(MessageContext* msgCtx); // void func_80153E7C(void); // void func_80153EF0(void); void func_801541D4(PlayState* play, Gfx** gfxp); -// void func_80156758(void); -void func_8015680C(PlayState* play); +void Message_Draw(PlayState* play); +void Message_Update(PlayState* play); void func_801586A4(PlayState* play); void Message_Init(PlayState* play); void Message_FindMessageNES(PlayState* play, u16 textId); @@ -2265,7 +2268,7 @@ void* KaleidoManager_FaultAddrConvFunc(void* address, void* param); void KaleidoManager_LoadOvl(KaleidoMgrOverlay* ovl); void KaleidoManager_ClearOvl(KaleidoMgrOverlay* ovl); void KaleidoManager_Init(PlayState* play); -void KaleidoManager_Destroy(); +void KaleidoManager_Destroy(void); void* KaleidoManager_GetRamAddr(void* vram); void KaleidoScopeCall_LoadPlayer(void); void KaleidoScopeCall_Init(PlayState* play); @@ -2276,21 +2279,22 @@ void Transition_Init(TransitionContext* transitionCtx); void Transition_Destroy(TransitionContext* transitionCtx); // void func_80163DC0(void); // void func_8016418C(void); -// void func_8016424C(void); -// void func_801642D8(void); +void TransitionUnk_Destroy(FbDemoStruct* this); +FbDemoStruct* TransitionUnk_Init(FbDemoStruct* this, s32 row, s32 col); // void func_80164438(void); -// void func_8016454C(void); +void TransitionUnk_Draw(FbDemoStruct* this, Gfx**); // void func_80164678(void); -// void func_801647AC(void); +void func_801647AC(FbDemoStruct* this); // UNK_TYPE4 func_801647B8(void); // void TransitionFade_Start(void); -void* TransitionFade_Init(void* param_1); -// void TransitionFade_Destroy(void); -// void TransitionFade_Update(void); -// void TransitionFade_Draw(void); +void* TransitionFade_Init(TransitionFade* arg0); +void TransitionFade_Destroy(TransitionFade* arg0); +void TransitionFade_Update(TransitionFade* thisx, s32 updateRate); +void TransitionFade_Draw(void* thisx, Gfx** gfxP); // void TransitionFade_IsDone(void); -// void TransitionFade_SetColor(void); -// void TransitionFade_SetType(void); +void TransitionFade_SetColor(TransitionFade* arg0, u32 color); +void TransitionFade_SetType(TransitionFade* arg0, s32 arg1); +void TransitionFade_Start(TransitionFade* arg0); void TransitionOverlay_ClearLoadInfo(TransitionOverlay *overlayEntry); void TransitionOverlay_SetSegment(TransitionOverlay *overlayEntry, void* vramStart, void* vramEnd, uintptr_t vromStart, uintptr_t vromEnd); void TransitionCircle_Start(void* thisx); @@ -2299,8 +2303,7 @@ void TransitionCircle_Destroy(void* thisx); void TransitionCircle_Update(void* thisx); void TransitionCircle_SetColor(void* thisx, u32 color); void TransitionCircle_SetType(void* thisx, s32 type); -void TransitionCircle_LoadAndSetTexture(Gfx** gfxp, TexturePtr texture, s32 fmt, s32 arg3, s32 masks, s32 maskt, - f32 arg6); +void TransitionCircle_LoadAndSetTexture(Gfx** gfxp, TexturePtr texture, s32 fmt, s32 arg3, s32 masks, s32 maskt, f32 arg6); void TransitionCircle_Draw(void* thisx, Gfx** gfxp); s32 TransitionCircle_IsDone(void* thisx); void* TransitionOverlay_VramToRam(TransitionOverlay *overlayEntry, void* vramAddr); @@ -2309,39 +2312,26 @@ s32 TransitionOverlay_Load(TransitionOverlay *overlayEntry); s32 TransitionOverlay_Free(TransitionOverlay *overlayEntry); void func_80165438(UNK_PTR param_1); // void func_80165444(s32 param_1, UNK_TYPE4 param_2, UNK_TYPE4 param_3, UNK_TYPE4 param_4, UNK_TYPE4 param_5); -// void func_80165460(void); -// void func_80165608(void); -// void func_80165630(void); -void func_80165658(u32 arg0); -void func_8016566C(u32 arg0); -void func_80165690(void); -// void func_801656A4(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8); -void func_80165DCC(s32 arg0); -void func_80165DF0(void); -// void func_80165E1C(void); -// void func_80165E7C(void); -// void func_80165EC0(void); -// void func_80166060(void); -Gfx* func_801660B8(PlayState* play, Gfx* gfx); + +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 func_801668B4(void); -void func_80166968(PlayState* play, Camera* camera); -void func_80166B30(PlayState* play); -void Play_Update(PlayState* play); -void func_80167DE4(PlayState* play); -// void func_80167F0C(void); -void Play_Draw(PlayState* play); -void func_80168DAC(PlayState* play); -void Play_Main(PlayState* play); +void Play_Update(PlayState* this); +void Play_Draw(PlayState* this); +void Play_Main(GameState* thisx); s32 Play_InCsMode(PlayState* this); -f32 func_80169100(PlayState* play, MtxF* mtx, CollisionPoly** arg2, s32* arg3, Vec3f* feetPosPtr); -void func_801691F0(PlayState* play, MtxF* mtx, Vec3f* arg2); -void* Play_LoadScene(PlayState* play, RomFile* entry); -void func_8016927C(PlayState* play, s16 sParm2); -// void func_801692C4(PlayState* play, UNK_TYPE1 uParm2); -// void Play_SceneInit(PlayState* play, s32 sceneIndex, UNK_TYPE1 param_3); +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); @@ -2371,8 +2361,9 @@ 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_FillScreen(GameState* gameState, s16 fillScreenOn, u8 red, u8 green, u8 blue, u8 alpha); -void Play_Init(GameState* gameState); +void Play_FillScreen(GameState* thisx, s16 fillScreenOn, u8 red, u8 green, u8 blue, u8 alpha); +void Play_Init(GameState* thisx); + // void func_8016AC10(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9, UNK_TYPE4 param_10); // void func_8016AE1C(void); // void func_8016B278(void); @@ -2381,11 +2372,11 @@ void Play_Init(GameState* gameState); // void func_8016CD4C(void); // void func_8016E40C(void); // void func_8016EA90(void); -// void func_8016F1A8(void); +void BombersNotebook_Draw(BombersNotebook* this, GraphicsContext* gfxCtx); // void func_8016F4EC(void); -void func_8016F5A8(PlayState* play, s8* pcParm2, Input* iParm3); -// void func_8016FC78(void); -// void func_8016FC98(void); +void BombersNotebook_Update(PlayState* play, BombersNotebook* this, Input* input); +void BombersNotebook_Init(BombersNotebook* this); +void BombersNotebook_Destroy(BombersNotebook* this); void PreRender_SetValuesSave(PreRender* this, u32 width, u32 height, void* fbuf, void* zbuf, void* cvg); void PreRender_Init(PreRender* this); void PreRender_SetValues(PreRender* this, u32 width, u32 height, void* fbuf, void* zbuf); @@ -2556,12 +2547,12 @@ void Mtx_SetTranslateScaleMtx(Mtx* mtx, f32 scaleX, f32 scaleY, f32 scaleZ, f32 void Mtx_SetRotationMtx(Mtx* mtx, s32 angle, f32 axisX, f32 axisY, f32 axisZ); void Mtx_SetTranslationRotationScaleMtx(Mtx* mtx, f32 scaleX, f32 scaleY, f32 scaleZ, s32 angle, f32 axisX, f32 axisY, f32 axisZ,f32 translateX, f32 translateY, f32 translateZ); -// void func_80178750(void); -// void func_80178818(void); +void func_80178750(void); +void func_80178818(void); void func_80178978(void); // void func_801789D4(void); -u32 SysCfb_GetFbPtr(s32 index); -u32 SysCfb_GetZBuffer(void); +void* SysCfb_GetFbPtr(s32 index); +void* SysCfb_GetZBuffer(void); // UNK_TYPE4 func_80178A24(void); // void func_80178A34(void); s32 func_80178A94(s32 param_1, s32 param_2); @@ -2990,14 +2981,14 @@ void func_801A3CD8(s8 param_1); void func_801A3CF4(s8 arg0); void func_801A3D98(s8 audioSetting); void func_801A3E38(u8 arg0); -// void func_801A3EC0(void); +void func_801A3EC0(u8 arg0); void Audio_SetCutsceneFlag(s8 flag); // void func_801A3F6C(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_801A3FB4(void); // void func_801A3FFC(UNK_TYPE1 param_1); void Audio_SetSpec(u32 specId); void func_801A4058(UNK_TYPE arg0); -// void func_801A41C8(void); +void func_801A41C8(s32 arg0); void func_801A41F8(UNK_TYPE arg0); // void func_801A429C(void); // void func_801A42C8(void); @@ -3073,6 +3064,6 @@ u8 func_801A982C(void); void GameOver_Init(PlayState* play); void GameOver_FadeLights(PlayState* play); void GameOver_Update(PlayState* play); -void func_801AAAA0(PlayState* play); +void Regs_InitData(PlayState* play); #endif diff --git a/include/macros.h b/include/macros.h index 913ccac4ae..77d3eadad5 100644 --- a/include/macros.h +++ b/include/macros.h @@ -140,6 +140,10 @@ extern GraphicsContext* __gfxCtx; #define CLAMP_MAX(x, max) ((x) > (max) ? (max) : (x)) #define CLAMP_MIN(x, min) ((x) < (min) ? (min) : (x)) +#define RGBA16_GET_R(pixel) (((pixel) >> 11) & 0x1F) +#define RGBA16_GET_G(pixel) (((pixel) >> 6) & 0x1F) +#define RGBA16_GET_B(pixel) (((pixel) >> 1) & 0x1F) + #define ROUND(x) (s32)(((x) >= 0.0) ? ((x) + 0.5) : ((x) - 0.5)) #define SWAP(type, a, b) \ diff --git a/include/regs.h b/include/regs.h index b19131748c..9ea58aed14 100644 --- a/include/regs.h +++ b/include/regs.h @@ -52,6 +52,11 @@ #define R_FB_FILTER_PRIM_COLOR(c) SREG(81 + c) #define R_FB_FILTER_A SREG(84) #define R_FB_FILTER_ENV_COLOR(c) SREG(85 + c) +#define R_PICTO_PHOTO_STATE SREG(89) +#define R_MOTION_BLUR_ALPHA SREG(90) +#define R_MOTION_BLUR_ENABLED SREG(91) +#define R_MOTION_BLUR_PRIORITY_ALPHA SREG(92) +#define R_MOTION_BLUR_PRIORITY_ENABLED SREG(93) #define R_PAUSE_BG_PRERENDER_STATE SREG(94) #define R_PLAY_FILL_SCREEN_ON MREG(64) diff --git a/include/variables.h b/include/variables.h index 7cc0f3b286..af32d062e1 100644 --- a/include/variables.h +++ b/include/variables.h @@ -810,8 +810,8 @@ extern KaleidoMgrOverlay* gKaleidoMgrCurOvl; extern Gfx D_801D0D00[]; extern s32 gDbgCamEnabled; // extern UNK_TYPE1 D_801D0D54; -// extern UNK_TYPE2 D_801D0D58; -// extern UNK_TYPE2 D_801D0D5C; +// extern UNK_TYPE2 sQuakeIndex; +// extern UNK_TYPE2 sIsCameraUnderwater; extern Input* D_801D0D60; // extern UNK_TYPE2 D_801D0D64; // extern UNK_TYPE1 D_801D0D7A; @@ -2325,26 +2325,17 @@ extern TriNorm D_801EDBB0; // extern UNK_TYPE1 D_801EDBD8; // extern UNK_TYPE1 D_801EDBDC; // extern UNK_TYPE1 D_801EDBE0; -// extern UNK_TYPE1 D_801EDBF4; -// extern UNK_TYPE1 D_801EDBF8; -// extern UNK_TYPE1 D_801EDC00; -// extern UNK_TYPE1 D_801EDC04; -// extern UNK_TYPE1 D_801EDC08; -// extern UNK_TYPE1 D_801EDC0C; -// extern UNK_TYPE1 D_801EDC10; -// extern UNK_TYPE1 D_801EDC14; -// extern UNK_TYPE1 D_801EDC28; -// extern UNK_TYPE1 D_801EDC30; -// extern UNK_TYPE1 D_801EDC8C; -// extern UNK_TYPE1 D_801EDC90; -// extern UNK_TYPE1 D_801EDC92; -// extern UNK_TYPE1 D_801EDC94; -// extern UNK_TYPE1 D_801EDC96; -// extern UNK_TYPE1 D_801EDDD0; -// extern UNK_TYPE1 D_801EDDD4; -// extern UNK_TYPE1 D_801EDDD8; -// extern UNK_TYPE1 D_801EDDE0; -// extern UNK_TYPE1 D_801EDDF0; + +// extern s16 D_801EDBF0; +// extern f32 D_801EDBF4; +// extern f32 D_801EDBF8; +// extern CameraCollision D_801EDC00; +// extern PlayState* sCamPlayState; +// extern SwingAnimation D_801EDC30[4]; +// extern Vec3f D_801EDDD0; +// extern Vec3f D_801EDDE0; +// extern Vec3f D_801EDDF0; + extern Vec3f D_801EDE00; extern Vec3f D_801EDE10; extern Vec3f D_801EDE20; @@ -2488,18 +2479,18 @@ extern s16 D_801F4E7A; extern void (*sKaleidoScopeUpdateFunc)(PlayState* play); extern void (*sKaleidoScopeDrawFunc)(PlayState* play); extern FaultAddrConvClient sKaleidoAreaFaultClient; -// extern UNK_TYPE1 D_801F6C10; +extern s16 sTransitionFillTimer; extern Input D_801F6C18; -// extern UNK_TYPE1 D_801F6C30; -// extern UNK_TYPE1 D_801F6D0C; -extern UNK_TYPE4 D_801F6D10; -// extern UNK_TYPE1 D_801F6D18; -extern Color_RGBA8 D_801F6D30; -// extern UNK_TYPE1 D_801F6D38; -// extern UNK_TYPE4 D_801F6D4C; -// extern UNK_TYPE1 D_801F6D50; -extern u8 D_801F6DFC; -// extern UNK_TYPE1 D_801F6DFD; +extern FbDemoStruct sTrnsnUnk; +extern u16* D_801F6D0C; +extern s32 gTrnsnUnkState; +extern VisMono sVisMono; +extern Color_RGBA8_u32 gVisMonoColor; +extern Struct_80140E80 D_801F6D38; +extern Struct_80140E80* D_801F6D4C; +extern BombersNotebook sBombersNotebook; +extern u8 sBombersNotebookOpen; +extern u8 sMotionBlurStatus; extern SlowlyTask D_801F6E00; extern s32 D_801F6FC0; extern StackEntry slowlyStackEntry; @@ -2573,7 +2564,7 @@ extern UNK_TYPE2 D_801FBBCC; extern UNK_TYPE2 D_801FBBCE; // extern UNK_TYPE1 D_801FBBD0; // extern UNK_TYPE1 D_801FBBD2; -// extern UNK_TYPE1 D_801FBBD4; +extern u8 D_801FBBD4; extern Vec3f D_801FBBF0; extern LineSegment Math3D_ColSphereTri_line; extern Vec3f Math3D_ColSphereTri_point; diff --git a/include/z64.h b/include/z64.h index b8a3ac01ef..1a6fcd1d3e 100644 --- a/include/z64.h +++ b/include/z64.h @@ -245,9 +245,9 @@ typedef struct GraphicsContext { /* 0x2E4 */ u32 viConfigFeatures; /* 0x2E8 */ char unk_2E8[0x2]; /* 0x2EA */ u8 updateViMode; - /* 0x2EB */ u8 framebufferIdx; + /* 0x2EB */ u8 framebufferIndex; /* 0x2EC */ void (*callback)(struct GraphicsContext*, u32); - /* 0x2F0 */ u32 callbackParam; + /* 0x2F0 */ u32 callbackArg; /* 0x2F4 */ f32 xScale; /* 0x2F8 */ f32 yScale; /* 0x2FC */ GfxMasterList* masterList; @@ -534,8 +534,8 @@ typedef struct { /* 0xE5 */ u8 fillScreen; /* 0xE6 */ u8 screenFillColor[4]; /* 0xEA */ u8 sandstormState; - /* 0xEB */ u8 unk_EB; - /* 0xEC */ u8 unk_EC; + /* 0xEB */ u8 sandstormPrimA; + /* 0xEC */ u8 sandstormEnvA; /* 0xED */ u8 unk_ED; /* 0xEE */ u8 unk_EE[4]; /* 0xF2 */ u8 unk_F2[8]; // [3] is used by both DemoKankyo and ObjectKankyo effect count @@ -619,64 +619,6 @@ typedef struct { /* 0x24 */ u32 flags; } PreRenderParams; // size = 0x28 -#define TRANS_TRIGGER_OFF 0 // transition is not active -#define TRANS_TRIGGER_START 20 // start transition (exiting an area) -#define TRANS_TRIGGER_END -20 // transition is ending (arriving in a new area) - -typedef enum TransitionMode { - /* 0 */ TRANS_MODE_OFF, - /* 1 */ TRANS_MODE_01, - /* 2 */ TRANS_MODE_02, - /* 3 */ TRANS_MODE_03, - /* 4 */ TRANS_MODE_04, - /* 5 */ TRANS_MODE_05, - /* 6 */ TRANS_MODE_06, - /* 7 */ TRANS_MODE_07, - /* 8 */ TRANS_MODE_08, - /* 9 */ TRANS_MODE_09, - /* 10 */ TRANS_MODE_10, - /* 11 */ TRANS_MODE_11, - /* 12 */ TRANS_MODE_12, - /* 13 */ TRANS_MODE_13, - /* 14 */ TRANS_MODE_14, - /* 15 */ TRANS_MODE_15, - /* 16 */ TRANS_MODE_16, - /* 17 */ TRANS_MODE_17 -} TransitionMode; - -typedef enum TransitionType { - /* 0 */ TRANS_TYPE_00, - /* 1 */ TRANS_TYPE_01, - /* 2 */ TRANS_TYPE_02, - /* 3 */ TRANS_TYPE_03, - /* 4 */ TRANS_TYPE_04, - /* 5 */ TRANS_TYPE_05, - /* 6 */ TRANS_TYPE_06, - /* 7 */ TRANS_TYPE_07, - /* 8 */ TRANS_TYPE_08, - /* 9 */ TRANS_TYPE_09, - /* 10 */ TRANS_TYPE_10, - /* 11 */ TRANS_TYPE_11, - /* 12 */ TRANS_TYPE_12, - /* 13 */ TRANS_TYPE_13, - /* 14 */ TRANS_TYPE_14, - /* 15 */ TRANS_TYPE_15, - /* 16 */ TRANS_TYPE_16, - /* 17 */ TRANS_TYPE_17, - /* 18 */ TRANS_TYPE_18, - /* 19 */ TRANS_TYPE_19, - /* 20 */ TRANS_TYPE_20, - /* 21 */ TRANS_TYPE_21, - /* 64 */ TRANS_TYPE_64 = 64, - /* 70 */ TRANS_TYPE_70 = 70, - /* 72 */ TRANS_TYPE_72 = 72, - /* 73 */ TRANS_TYPE_73, - /* 80 */ TRANS_TYPE_80 = 80, - /* 86 */ TRANS_TYPE_86 = 86 -} TransitionType; - -#define TRANS_NEXT_TYPE_DEFAULT 0xFF - typedef struct FaultAddrConvClient { /* 0x0 */ struct FaultAddrConvClient* next; /* 0x4 */ void* (*callback)(void*, void*); @@ -708,10 +650,6 @@ typedef struct { /* 0x844 */ void* fb; } FaultThreadStruct; // size = 0x848 -typedef struct FireObj FireObj; - -typedef struct FireObjLight FireObjLight; - struct GameState; typedef void (*GameStateFunc)(struct GameState* gameState); @@ -767,15 +705,14 @@ typedef struct { /* 0x10 */ OSTime resetTime; } PreNmiBuff; // size = 0x18 (actually osAppNmiBuffer is 0x40 bytes large but the rest is unused) -typedef struct PlayState PlayState; -typedef s32 (*ColChkResetFunc)(PlayState*, Collider*); -typedef void (*ColChkBloodFunc)(PlayState*, Collider*, Vec3f*); -typedef void (*ColChkApplyFunc)(PlayState*, CollisionCheckContext*, Collider*); -typedef void (*ColChkVsFunc)(PlayState*, CollisionCheckContext*, Collider*, Collider*); -typedef s32 (*ColChkLineFunc)(PlayState*, CollisionCheckContext*, Collider*, Vec3f*, Vec3f*); +typedef s32 (*ColChkResetFunc)(struct PlayState*, Collider*); +typedef void (*ColChkBloodFunc)(struct PlayState*, Collider*, Vec3f*); +typedef void (*ColChkApplyFunc)(struct PlayState*, CollisionCheckContext*, Collider*); +typedef void (*ColChkVsFunc)(struct PlayState*, CollisionCheckContext*, Collider*, Collider*); +typedef s32 (*ColChkLineFunc)(struct PlayState*, CollisionCheckContext*, Collider*, Vec3f*, Vec3f*); -typedef void(*room_draw_func)(PlayState* play, Room* room, u32 flags); +typedef void(*room_draw_func)(struct PlayState* play, Room* room, u32 flags); typedef struct { /* 0x000 */ u8 controllers; // bit 0 is set if controller 1 is plugged in, etc. @@ -816,11 +753,11 @@ typedef enum { STACK_STATUS_OVERFLOW = 2 } StackStatus; -struct FireObjLight { +typedef struct FireObjLight { /* 0x00 */ LightNode* light; /* 0x04 */ LightInfo lightInfo; /* 0x12 */ u8 lightParamsIndex; -}; // size = 0x14 +} FireObjLight; // size = 0x14 #define OS_SC_RETRACE_MSG 1 #define OS_SC_DONE_MSG 2 @@ -859,7 +796,7 @@ typedef struct { /* 0x5E */ u16 age; } EffFootmark; // size = 0x60 -struct FireObj { +typedef struct FireObj { /* 0x00 */ Vec3f position; /* 0x0C */ f32 size; /* 0x10 */ f32 sizeInv; @@ -876,7 +813,7 @@ struct FireObj { /* 0x2A */ s16 ignitionDelay; /* 0x2C */ ColliderCylinder collision; /* 0x78 */ FireObjLight light; -}; // size = 0x8B +} FireObj; // size = 0x8B typedef struct { /* 0x0 */ u8 seqId; @@ -904,7 +841,7 @@ typedef struct { /* 0x0 */ u16 state; } GameOverContext; // size = 0x2 -struct PlayState { +typedef struct PlayState { /* 0x00000 */ GameState state; /* 0x000A4 */ s16 sceneId; /* 0x000A6 */ u8 sceneConfig; @@ -951,12 +888,12 @@ struct PlayState { /* 0x18798 */ s32 (*setPlayerTalkAnim)(struct PlayState* play, LinkAnimationHeader* talkAnim, s32 animMode); /* 0x1879C */ s16 playerActorCsIds[10]; /* 0x187B0 */ MtxF viewProjectionMtxF; - /* 0x187F0 */ Vec3f unk_187F0; + /* 0x187F0 */ Vec3f projectionMtxFDiagonal; /* 0x187FC */ MtxF billboardMtxF; /* 0x1883C */ Mtx* billboardMtx; /* 0x18840 */ u32 gameplayFrames; /* 0x18844 */ u8 unk_18844; - /* 0x18845 */ u8 unk_18845; + /* 0x18845 */ u8 haltAllActors; /* 0x18846 */ s16 numSetupActors; /* 0x18848 */ u8 numRooms; /* 0x1884C */ RomFile* roomList; @@ -971,7 +908,7 @@ struct PlayState { /* 0x18870 */ void* specialEffects; /* 0x18874 */ u8 skyboxId; /* 0x18875 */ s8 transitionTrigger; // "fade_direction" - /* 0x18876 */ s16 unk_18876; + /* 0x18876 */ s16 worldCoverAlpha; /* 0x18878 */ s16 bgCoverAlpha; /* 0x1887A */ u16 nextEntrance; /* 0x1887C */ s8 unk_1887C; // shootingGalleryStatus? @@ -985,14 +922,57 @@ struct PlayState { /* 0x18B49 */ u8 unk_18B49; /* 0x18B4A */ u8 transitionMode; /* 0x18B4C */ PreRender pauseBgPreRender; - /* 0x18B9C */ char unk_18B9C[0x2B8]; + /* 0x18B9C */ char unk_18B9C[0x54]; + /* 0x18BF0 */ TransitionContext transitionCtx; + /* 0x18E48 */ TransitionFade unk_18E48; /* 0x18E54 */ SceneTableEntry* loadedScene; - /* 0x18E58 */ char unk_18E58[0x4]; + /* 0x18E58 */ void* unk_18E58; /* 0x18E5C */ TexturePtr pictoPhotoI8; - /* 0x18E60 */ char unk_18E60[0x8]; + /* 0x18E60 */ void* unk_18E60; + /* 0x18E64 */ void* unk_18E64; /* 0x18E68 */ void* unk_18E68; /* 0x18E6C */ char unk_18E6C[0x3EC]; -}; // size = 0x19258 +} PlayState; // size = 0x19258 + +typedef struct { + /* 0x00 */ u8 unk_00; + /* 0x01 */ char unk_01[0x3F]; + /* 0x40 */ void* unk_40; + /* 0x44 */ u32 unk_44; + /* 0x48 */ u32 unk_48; + /* 0x4C */ DmaRequest unk_4C; + /* 0x6C */ OSMesgQueue unk_6C; + /* 0x84 */ OSMesg unk_84[1]; + /* 0x88 */ void* unk_88; + /* 0x8C */ uintptr_t unk_8C; + /* 0x90 */ size_t unk_90; + /* 0x94 */ s32 unk_94; + /* 0x98 */ s32 unk_98; + /* 0x9C */ s32 unk_9C; + /* 0xA0 */ char unk_A0[0x4]; + /* 0xA4 */ s32 unk_A4; + /* 0xA8 */ s32 unk_A8; +} BombersNotebook; // size = 0xAC + +typedef enum { + /* 0 */ PICTO_PHOTO_STATE_OFF, + /* 1 */ PICTO_PHOTO_STATE_SETUP, + /* 2 */ PICTO_PHOTO_STATE_PROCESS, + /* 3 */ PICTO_PHOTO_STATE_READY +} PictoPhotoState; + +// OoT's TransitionUnk +typedef struct { + /* 0x00 */ char unk_00[0xDC]; +} FbDemoStruct; // size = 0xDC + +typedef struct { + /* 0x00 */ u8 mode; + /* 0x04 */ f32 scale; + /* 0x08 */ f32 lodProportion; // expected to be between 0.0f and 1.0f + /* 0x0C */ Color_RGBA8_u32 primColor; + /* 0x10 */ Color_RGBA8_u32 envColor; +} Struct_80140E80; // size = 0x14 typedef struct { /* 0x00 */ s32 unk0; diff --git a/include/z64light.h b/include/z64light.h index d9404ab4ca..8eaebca61b 100644 --- a/include/z64light.h +++ b/include/z64light.h @@ -13,7 +13,7 @@ typedef struct { /* 0x0C */ u8 diffuseColor[3]; /* 0x0F */ u8 fogColor[3]; /* 0x12 */ s16 fogNear; - /* 0x14 */ s16 fogFar; + /* 0x14 */ s16 zFar; } LightSettings; // size = 0x16 typedef struct { @@ -22,7 +22,7 @@ typedef struct { /* 0x0C */ s16 diffuseColor2[3]; /* 0x12 */ s16 fogColor[3]; /* 0x18 */ s16 fogNear; - /* 0x1A */ s16 fogFar; + /* 0x1A */ s16 zFar; } EnvLightSettings; // size = 0x1C typedef struct { @@ -74,11 +74,9 @@ typedef struct LightsBuffer { typedef struct LightContext { /* 0x0 */ LightNode* listHead; /* 0x4 */ Color_RGB8 ambient; - /* 0x7 */ u8 unk7; - /* 0x8 */ u8 unk8; - /* 0x9 */ u8 unk9; - /* 0xA */ s16 unkA; - /* 0xC */ s16 unkC; + /* 0x7 */ Color_RGB8 fogColor; + /* 0xA */ s16 fogNear; // how close until fog starts taking effect. range 0 - 996 + /* 0xC */ s16 zFar; // draw distance. range 0 - 12800 } LightContext; // size = 0x10 typedef enum LightType { diff --git a/include/z64math.h b/include/z64math.h index 323042b15b..70a115966b 100644 --- a/include/z64math.h +++ b/include/z64math.h @@ -117,7 +117,8 @@ typedef struct { #define RADF_TO_BINANG(radf) (s16)((radf) * (0x8000 / M_PI)) #define RADF_TO_DEGF(radf) ((radf) * (180.0f / M_PI)) #define DEGF_TO_RADF(degf) ((degf) * (M_PI / 180.0f)) -#define BINANG_TO_RAD(binang) (((f32)binang / 0x8000) * M_PI) +#define BINANG_TO_RAD(binang) ((f32)binang * (M_PI / 0x8000)) +#define BINANG_TO_RAD_ALT(binang) (((f32)binang / 0x8000) * M_PI) // Angle arithmetic macros #define BINANG_ROT180(angle) ((s16)(angle + 0x8000)) diff --git a/include/z64player.h b/include/z64player.h index e99b261ce1..96abf00c8d 100644 --- a/include/z64player.h +++ b/include/z64player.h @@ -745,7 +745,7 @@ typedef enum PlayerCsMode { #define PLAYER_STATE3_2000 (1 << 13) // #define PLAYER_STATE3_4000 (1 << 14) -// +// Swimming Zora #define PLAYER_STATE3_8000 (1 << 15) // #define PLAYER_STATE3_10000 (1 << 16) diff --git a/include/z64quake.h b/include/z64quake.h index a1272941d9..f0bd401fc3 100644 --- a/include/z64quake.h +++ b/include/z64quake.h @@ -47,9 +47,9 @@ s32 Quake_NumActiveQuakes(void); void Quake_Init(void); #define DISTORTION_TYPE_0 (1 << 0) -#define DISTORTION_TYPE_2 (1 << 2) -#define DISTORTION_TYPE_3 (1 << 3) -#define DISTORTION_TYPE_4 (1 << 4) +#define DISTORTION_TYPE_NON_ZORA_SWIMMING (1 << 2) +#define DISTORTION_TYPE_ZORA_SWIMMING (1 << 3) +#define DISTORTION_TYPE_UNDERWATER_ENTRY (1 << 4) #define DISTORTION_TYPE_5 (1 << 5) #define DISTORTION_TYPE_6 (1 << 6) #define DISTORTION_TYPE_7 (1 << 7) diff --git a/include/z64save.h b/include/z64save.h index f9083144d6..d3f5380290 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -253,7 +253,7 @@ typedef struct SavePlayerData { } SavePlayerData; // size = 0x28 typedef struct Save { - /* 0x0000 */ u32 entrance; // "scene_no" + /* 0x0000 */ s32 entrance; // "scene_no" /* 0x0004 */ u8 equippedMask; // "player_mask" /* 0x0005 */ u8 isFirstCycle; // "opening_flag" /* 0x0006 */ u8 unk_06; diff --git a/include/z64scene.h b/include/z64scene.h index 025726ed03..41198af718 100644 --- a/include/z64scene.h +++ b/include/z64scene.h @@ -341,6 +341,7 @@ typedef struct { /* 0xA */ u8 unk_A; /* 0xB */ u8 drawConfig; /* 0xC */ u8 unk_C; + /* 0xD */ u8 unk_D; } SceneTableEntry; // size = 0x10 typedef struct { diff --git a/include/z64snap.h b/include/z64snap.h index fb3f861861..4f9dca9d41 100644 --- a/include/z64snap.h +++ b/include/z64snap.h @@ -11,36 +11,36 @@ typedef struct { /* 0x144 */ PictoValidationFunc validationFunc; } PictoActor; -// Picto box flags +// Picto validation flags typedef enum { // Used externally, set and read by actors - /* 0x00 */ PICTOGRAPH_0, - /* 0x01 */ PICTOGRAPH_IN_SWAMP, - /* 0x02 */ PICTOGRAPH_MONKEY, - /* 0x03 */ PICTOGRAPH_BIG_OCTO, - /* 0x04 */ PICTOGRAPH_LULU_HEAD, - /* 0x05 */ PICTOGRAPH_LULU_RIGHT_ARM, - /* 0x06 */ PICTOGRAPH_LULU_LEFT_ARM, // Need all three of these to qualify as a good picture - /* 0x07 */ PICTOGRAPH_SCARECROW, - /* 0x08 */ PICTOGRAPH_TINGLE, - /* 0x09 */ PICTOGRAPH_PIRATE_GOOD, - /* 0x0A */ PICTOGRAPH_DEKU_KING, - /* 0x0B */ PICTOGRAPH_PIRATE_TOO_FAR, // overlaps with PICTOGRAPH_PIRATE_GOOD, but that is checked first + /* 0x00 */ PICTO_VALID_0, + /* 0x01 */ PICTO_VALID_IN_SWAMP, + /* 0x02 */ PICTO_VALID_MONKEY, + /* 0x03 */ PICTO_VALID_BIG_OCTO, + /* 0x04 */ PICTO_VALID_LULU_HEAD, + /* 0x05 */ PICTO_VALID_LULU_RIGHT_ARM, + /* 0x06 */ PICTO_VALID_LULU_LEFT_ARM, // Need all three of these to qualify as a good picture + /* 0x07 */ PICTO_VALID_SCARECROW, + /* 0x08 */ PICTO_VALID_TINGLE, + /* 0x09 */ PICTO_VALID_PIRATE_GOOD, + /* 0x0A */ PICTO_VALID_DEKU_KING, + /* 0x0B */ PICTO_VALID_PIRATE_TOO_FAR, // overlaps with PICTO_VALID_PIRATE_GOOD, but that is checked first // Used internally, test for failures of position, angle etc. - /* 0x3B */ PICTOGRAPH_BEHIND_COLLISION = 0x3B, - /* 0x3C */ PICTOGRAPH_BEHIND_BG, - /* 0x3D */ PICTOGRAPH_NOT_IN_VIEW, - /* 0x3E */ PICTOGRAPH_BAD_ANGLE, - /* 0x3F */ PICTOGRAPH_BAD_DISTANCE -} PictographFlag; + /* 0x3B */ PICTO_VALID_BEHIND_COLLISION = 0x3B, + /* 0x3C */ PICTO_VALID_BEHIND_BG, + /* 0x3D */ PICTO_VALID_NOT_IN_VIEW, + /* 0x3E */ PICTO_VALID_BAD_ANGLE, + /* 0x3F */ PICTO_VALID_BAD_DISTANCE +} PictoValidFlag; -// The following macros are subject to renaming once the capture system is better understood -#define PICTO_RESOLUTION_HORIZONTAL 150 -#define PICTO_RESOLUTION_VERTICAL 105 -#define PICTO_CAPTURE_REGION_TOPLEFT_X ((SCREEN_WIDTH - PICTO_RESOLUTION_HORIZONTAL) / 2) -#define PICTO_CAPTURE_REGION_TOPLEFT_Y ((SCREEN_HEIGHT - PICTO_RESOLUTION_VERTICAL) / 2) +// The subregion of the picto photo that will set the flag for an actor being in the photo +#define PICTO_VALID_WIDTH 150 +#define PICTO_VALID_HEIGHT 105 +#define PICTO_VALID_TOPLEFT_X ((SCREEN_WIDTH - PICTO_VALID_WIDTH) / 2) +#define PICTO_VALID_TOPLEFT_Y ((SCREEN_HEIGHT - PICTO_VALID_HEIGHT) / 2) s32 Snap_RecordPictographedActors(PlayState* play); void Snap_SetFlag(s32 flag); diff --git a/include/z64transition.h b/include/z64transition.h index 45178ba8ec..98720e9a7c 100644 --- a/include/z64transition.h +++ b/include/z64transition.h @@ -1,8 +1,14 @@ -#ifndef _Z64_TRANSITION_H_ -#define _Z64_TRANSITION_H_ +#ifndef Z64_TRANSITION_H +#define Z64_TRANSITION_H #include "ultra64.h" +#include "overlays/fbdemos/ovl_fbdemo_triforce/z_fbdemo_triforce.h" +#include "overlays/fbdemos/ovl_fbdemo_wipe1/z_fbdemo_wipe1.h" +#include "overlays/fbdemos/ovl_fbdemo_wipe3/z_fbdemo_wipe3.h" +#include "overlays/fbdemos/ovl_fbdemo_wipe4/z_fbdemo_wipe4.h" +#include "overlays/fbdemos/ovl_fbdemo_wipe5/z_fbdemo_wipe5.h" + #define TC_SET_PARAMS (1 << 7) typedef struct { @@ -32,22 +38,6 @@ typedef struct { /* 0x14 */ TransitionInit* initInfo; /* 0x18 */ size_t size; } TransitionOverlay; - -typedef struct { - /* 0x000 */ s16 transitionType; - /* 0x002 */ s8 fbdemoType; - /* 0x003 */ char unk_003[0x22B]; - /* 0x230 */ void* (*init)(void* transition); - /* 0x234 */ void (*destroy)(void* transition); - /* 0x238 */ void (*update)(void* transition, s32 updateRate); - /* 0x23C */ void (*draw)(void* transition, Gfx** gfxP); - /* 0x240 */ void (*start)(void* transition); - /* 0x244 */ void (*setType)(void* transition, s32 type); - /* 0x248 */ void (*setColor)(void* transition, u32 color); - /* 0x24C */ void (*setEnvColor)(void* transition, u32 color); - /* 0x250 */ s32 (*isDone)(void* transition); - /* 0x254 */ char unk_254[0x4]; -} TransitionContext; // size = 0x258 typedef struct { /* 0x0 */ char unk_0[0xC]; @@ -76,4 +66,107 @@ typedef struct { /* 0x1F */ s8 unk_1F; // Set to 0 and never used } TransitionCircle; // size = 0x20 +#define TRANS_TRIGGER_OFF 0 // transition is not active +#define TRANS_TRIGGER_START 20 // start transition (exiting an area) +#define TRANS_TRIGGER_END -20 // transition is ending (arriving in a new area) + +typedef enum { + /* 0 */ TRANS_MODE_OFF, + /* 1 */ TRANS_MODE_SETUP, + /* 2 */ TRANS_MODE_INSTANCE_INIT, + /* 3 */ TRANS_MODE_INSTANCE_RUNNING, + /* 4 */ TRANS_MODE_FILL_WHITE_INIT, + /* 5 */ TRANS_MODE_FILL_IN, + /* 6 */ TRANS_MODE_FILL_OUT, + /* 7 */ TRANS_MODE_FILL_BROWN_INIT, + /* 8 */ TRANS_MODE_08, // unused + /* 9 */ TRANS_MODE_09, // unused + /* 10 */ TRANS_MODE_INSTANT, + /* 11 */ TRANS_MODE_INSTANCE_WAIT, + /* 12 */ TRANS_MODE_SANDSTORM_INIT, + /* 13 */ TRANS_MODE_SANDSTORM, + /* 14 */ TRANS_MODE_SANDSTORM_END_INIT, + /* 15 */ TRANS_MODE_SANDSTORM_END, + /* 16 */ TRANS_MODE_CS_BLACK_FILL_INIT, + /* 17 */ TRANS_MODE_CS_BLACK_FILL +} TransitionMode; + +#define TRANS_TYPE_WIPE4 (1 << 5) +#define TRANS_TYPE_WIPE3 (1 << 6) +#define TRANS_TYPE_SET_PARAMS (1 << 7) + +typedef enum { + /* 0 */ TRANS_TYPE_WIPE, + /* 1 */ TRANS_TYPE_TRIFORCE, + /* 2 */ TRANS_TYPE_FADE_BLACK, + /* 3 */ TRANS_TYPE_FADE_WHITE, + /* 4 */ TRANS_TYPE_FADE_BLACK_FAST, + /* 5 */ TRANS_TYPE_FADE_WHITE_FAST, + /* 6 */ TRANS_TYPE_FADE_BLACK_SLOW, + /* 7 */ TRANS_TYPE_FADE_WHITE_SLOW, + /* 8 */ TRANS_TYPE_WIPE_FAST, + /* 9 */ TRANS_TYPE_FILL_WHITE_FAST, // Not actually fast due to bug in Play_UpdateTransition + /* 10 */ TRANS_TYPE_FILL_WHITE, + /* 11 */ TRANS_TYPE_INSTANT, + /* 12 */ TRANS_TYPE_FILL_BROWN, + /* 13 */ TRANS_TYPE_FADE_WHITE_CS_DELAYED, + /* 14 */ TRANS_TYPE_SANDSTORM_PERSIST, + /* 15 */ TRANS_TYPE_SANDSTORM_END, + /* 16 */ TRANS_TYPE_CS_BLACK_FILL, + /* 17 */ TRANS_TYPE_FADE_WHITE_INSTANT, + /* 18 */ TRANS_TYPE_FADE_GREEN, + /* 19 */ TRANS_TYPE_FADE_BLUE, + /* 20 */ TRANS_TYPE_FADE_DYNAMIC, // Chooses Black or White based on time of day + /* 21 */ TRANS_TYPE_CIRCLE, + /* 22 */ TRANS_TYPE_WIPE5, + // transition types 23 - 31 are unused + // transition types 32 - 39 are Wipe4 TODO needs macro + // transition types 40 - 63 are unused + // transition types 64 - 127 are Wipe3 TODO needs macro + /* 64 */ TRANS_TYPE_64 = 64, + /* 70 */ TRANS_TYPE_70 = 70, + /* 72 */ TRANS_TYPE_72 = 72, + /* 73 */ TRANS_TYPE_73, + /* 80 */ TRANS_TYPE_80 = 80, + /* 86 */ TRANS_TYPE_86 = 86 +} TransitionType; + +typedef enum { + /* 0 */ FBDEMO_FADE, + /* 1 */ FBDEMO_TRIFORCE, + /* 2 */ FBDEMO_WIPE1, + /* 3 */ FBDEMO_WIPE3, + /* 4 */ FBDEMO_WIPE4, + /* 5 */ FBDEMO_CIRCLE, + /* 6 */ FBDEMO_WIPE5 +} FbDemoType; + +#define TRANS_NEXT_TYPE_DEFAULT 0xFF + +typedef struct { + /* 0x000 */ s16 transitionType; + /* 0x002 */ s8 fbdemoType; + /* 0x003 */ char unk_003[0x5]; + /* 0x008 */ union { + TransitionFade fade; + TransitionCircle circle; + TransitionTriforce triforce; + TransitionWipe1 wipe1; + TransitionWipe3 wipe3; + TransitionWipe4 wipe4; + TransitionWipe5 wipe5; + } instanceData; + /* 0x220 */ char unk_220[0x10]; + /* 0x230 */ void* (*init)(void* transition); + /* 0x234 */ void (*destroy)(void* transition); + /* 0x238 */ void (*update)(void* transition, s32 updateRate); + /* 0x23C */ void (*draw)(void* transition, Gfx** gfxP); + /* 0x240 */ void (*start)(void* transition); + /* 0x244 */ void (*setType)(void* transition, s32 type); + /* 0x248 */ void (*setColor)(void* transition, u32 color); + /* 0x24C */ void (*setEnvColor)(void* transition, u32 color); + /* 0x250 */ s32 (*isDone)(void* transition); + /* 0x254 */ char unk_254[0x4]; +} TransitionContext; // size = 0x258 + #endif diff --git a/spec b/spec index 9ce938a495..bef1b4654f 100644 --- a/spec +++ b/spec @@ -554,8 +554,6 @@ beginseg include "build/src/code/z_fbdemo_circle.o" include "build/src/code/z_overlay.o" include "build/src/code/z_play.o" - include "build/data/code/z_play.data.o" - include "build/data/code/z_play.bss.o" include "build/src/code/z_play_hireso.o" include "build/data/code/z_play_hireso.data.o" include "build/src/code/PreRender.o" diff --git a/src/boot_O2_g3/boot_main.c b/src/boot_O2_g3/boot_main.c index 04bb9a33ae..87bee5da4f 100644 --- a/src/boot_O2_g3/boot_main.c +++ b/src/boot_O2_g3/boot_main.c @@ -1,3 +1,4 @@ +#include "prevent_bss_reordering.h" #include "global.h" StackEntry sBootThreadInfo; diff --git a/src/boot_O2_g3/idle.c b/src/boot_O2_g3/idle.c index 942435fa7b..da93f13fdb 100644 --- a/src/boot_O2_g3/idle.c +++ b/src/boot_O2_g3/idle.c @@ -1,3 +1,4 @@ +#include "prevent_bss_reordering.h" #include "global.h" u8 D_80096B20 = 1; diff --git a/src/code/graph.c b/src/code/graph.c index 8edc979d46..1c29029b03 100644 --- a/src/code/graph.c +++ b/src/code/graph.c @@ -50,7 +50,7 @@ void Graph_SetNextGfxPool(GraphicsContext* gfxCtx) { gfxCtx->workBuffer = pool->workBuffer; gfxCtx->debugBuffer = pool->debugBuffer; - gfxCtx->curFrameBuffer = (u16*)SysCfb_GetFbPtr(gfxCtx->framebufferIdx % 2); + gfxCtx->curFrameBuffer = SysCfb_GetFbPtr(gfxCtx->framebufferIndex % 2); gSegments[0x0F] = gfxCtx->curFrameBuffer; gfxCtx->zbuffer = SysCfb_GetZBuffer(); @@ -116,7 +116,7 @@ void* Graph_FaultAddrConvFunc(void* address, void* param) { void Graph_Init(GraphicsContext* gfxCtx) { bzero(gfxCtx, sizeof(GraphicsContext)); gfxCtx->gfxPoolIdx = 0; - gfxCtx->framebufferIdx = 0; + gfxCtx->framebufferIndex = 0; gfxCtx->viMode = NULL; gfxCtx->viConfigFeatures = gViConfigFeatures; gfxCtx->xScale = gViConfigXScale; @@ -165,7 +165,7 @@ retry: gfxCtx->masterList = gGfxMasterDL; if (gfxCtx->callback != NULL) { - gfxCtx->callback(gfxCtx, gfxCtx->callbackParam); + gfxCtx->callback(gfxCtx, gfxCtx->callbackArg); } task->type = M_GFXTASK; @@ -191,7 +191,7 @@ retry: if (SREG(33) & 1) { SREG(33) &= ~1; scTask->flags &= ~OS_SC_SWAPBUFFER; - gfxCtx->framebufferIdx--; + gfxCtx->framebufferIndex--; } scTask->msgQ = &gfxCtx->queue; @@ -305,7 +305,7 @@ void Graph_ExecuteAndDraw(GraphicsContext* gfxCtx, GameState* gameState) { if (!problem) { Graph_TaskSet00(gfxCtx, gameState); gfxCtx->gfxPoolIdx++; - gfxCtx->framebufferIdx++; + gfxCtx->framebufferIndex++; } { diff --git a/src/code/z_actor.c b/src/code/z_actor.c index 919752d748..dcc5c0219a 100644 --- a/src/code/z_actor.c +++ b/src/code/z_actor.c @@ -224,7 +224,7 @@ void ActorShadow_DrawFeet(Actor* actor, Lights* mapper, PlayState* play) { for (i = 0; i < ARRAY_COUNT(floorHeight); i++, spB8 >>= 1) { feetPosPtr->y += 50.0f; - *floorHeightPtr = func_80169100(play, &sp13C, &spF8, &bgId, feetPosPtr); + *floorHeightPtr = Play_GetFloorSurfaceImpl(play, &sp13C, &spF8, &bgId, feetPosPtr); feetPosPtr->y -= 50.0f; distToFloor = feetPosPtr->y - *floorHeightPtr; @@ -2442,7 +2442,7 @@ void Actor_UpdateAll(PlayState* play, ActorContext* actorCtx) { params.player = player; params.play = play; - if (play->unk_18844 != 0) { + if (play->unk_18844) { params.unk_18 = ACTOR_FLAG_200000; } else { params.unk_18 = ACTOR_FLAG_200000 | ACTOR_FLAG_40 | ACTOR_FLAG_10; @@ -2698,7 +2698,7 @@ void Actor_DrawLensActors(PlayState* play, s32 numInvisibleActors, Actor** invis spAC = tmp; Actor_DrawLensOverlay(&spAC, play->actorCtx.lensMaskSize); - tmp = func_801660B8(play, spAC); + tmp = Play_SetFog(play, spAC); for (spB4 = 0, invisibleActor = invisibleActors; spB4 < numInvisibleActors; spB4++, invisibleActor++) { POLY_XLU_DISP = tmp; @@ -2779,9 +2779,9 @@ s32 func_800BA2FC(PlayState* play, Actor* actor, Vec3f* projectedPos, f32 projec f32 phi_f16; if (play->view.fovy != 60.0f) { - phi_f12 = actor->uncullZoneScale * play->unk_187F0.x * 0.76980036f; // sqrt(16/27) + phi_f12 = actor->uncullZoneScale * play->projectionMtxFDiagonal.x * 0.76980036f; // sqrt(16/27) - phi_f14 = play->unk_187F0.y * 0.57735026f; // 1 / sqrt(3) + phi_f14 = play->projectionMtxFDiagonal.y * 0.57735026f; // 1 / sqrt(3) phi_f16 = actor->uncullZoneScale * phi_f14; phi_f14 *= actor->uncullZoneDownward; } else { @@ -2809,7 +2809,7 @@ void Actor_DrawAll(PlayState* play, ActorContext* actorCtx) { s32 actorFlags; s32 i; - if (play->unk_18844 != 0) { + if (play->unk_18844) { actorFlags = ACTOR_FLAG_200000; } else { actorFlags = ACTOR_FLAG_200000 | ACTOR_FLAG_40 | ACTOR_FLAG_20; @@ -2880,7 +2880,7 @@ void Actor_DrawAll(PlayState* play, ActorContext* actorCtx) { gSPBranchList(ref2, &tmp2[1]); POLY_XLU_DISP = &tmp2[1]; - if (play->unk_18844 == 0) { + if (!play->unk_18844) { Lights_DrawGlow(play); } diff --git a/src/code/z_construct.c b/src/code/z_construct.c index 5e92d49587..3d2621c9cb 100644 --- a/src/code/z_construct.c +++ b/src/code/z_construct.c @@ -1,4 +1,5 @@ #include "global.h" -void func_801AAAA0(PlayState* play) { +// Remnant from OoT +void Regs_InitData(PlayState* play) { } diff --git a/src/code/z_demo.c b/src/code/z_demo.c index 7d665e208b..7d0c1ade37 100644 --- a/src/code/z_demo.c +++ b/src/code/z_demo.c @@ -161,8 +161,8 @@ void Cutscene_Command_Misc(PlayState* play, CutsceneContext* csCtx, CsCmdBase* c } break; case 0x3: - if (play->envCtx.lightSettings.fogFar < 12800) { - play->envCtx.lightSettings.fogFar += 35; + if (play->envCtx.lightSettings.zFar < 12800) { + play->envCtx.lightSettings.zFar += 35; } break; case 0x4: @@ -206,16 +206,16 @@ void Cutscene_Command_Misc(PlayState* play, CutsceneContext* csCtx, CsCmdBase* c } break; case 0xA: - D_801F6D30.r = 255; - D_801F6D30.g = 255; - D_801F6D30.b = 255; - D_801F6D30.a = 255 * progress; + gVisMonoColor.r = 255; + gVisMonoColor.g = 255; + gVisMonoColor.b = 255; + gVisMonoColor.a = 255 * progress; break; case 0xB: - D_801F6D30.r = 255; - D_801F6D30.g = 180; - D_801F6D30.b = 100; - D_801F6D30.a = 255 * progress; + gVisMonoColor.r = 255; + gVisMonoColor.g = 180; + gVisMonoColor.b = 100; + gVisMonoColor.a = 255 * progress; break; case 0xC: play->roomCtx.curRoom.segment = NULL; @@ -236,10 +236,10 @@ void Cutscene_Command_Misc(PlayState* play, CutsceneContext* csCtx, CsCmdBase* c } break; case 0xE: - play->unk_18845 = 1; + play->haltAllActors = true; break; case 0xF: - play->unk_18845 = 0; + play->haltAllActors = false; break; case 0x10: if (isStartFrame) { @@ -295,7 +295,7 @@ void Cutscene_Command_Misc(PlayState* play, CutsceneContext* csCtx, CsCmdBase* c play->nextEntrance = ENTRANCE(CUTSCENE, 0); gSaveContext.nextCutsceneIndex = 0xFFF8; play->transitionTrigger = TRANS_TRIGGER_START; - play->transitionType = TRANS_TYPE_03; + play->transitionType = TRANS_TYPE_FADE_WHITE; } break; case 0x1C: @@ -555,7 +555,7 @@ void Cutscene_Command_SetTime(PlayState* play, CutsceneContext* csCtx, CsCmdDayT void Cutscene_TerminatorImpl(PlayState* play, CutsceneContext* csCtx, CsCmdBase* cmd) { csCtx->state = CS_STATE_4; - func_80165690(); + Play_DisableMotionBlur(); Audio_SetCutsceneFlag(false); gSaveContext.cutsceneTransitionControl = 1; @@ -575,7 +575,7 @@ void Cutscene_TerminatorImpl(PlayState* play, CutsceneContext* csCtx, CsCmdBase* if (D_801BB12C >= 2) { D_801BB12C = 0; } - play->transitionType = TRANS_TYPE_04; + play->transitionType = TRANS_TYPE_FADE_BLACK_FAST; } if ((play->nextEntrance & 0xF) > 0) { @@ -594,19 +594,19 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB } } else if (cmd->base == 2) { if (csCtx->frames == cmd->startFrame) { - func_80165690(); + Play_DisableMotionBlur(); switch (D_801F4DE2) { case 0x1F: if (CHECK_WEEKEVENTREG(WEEKEVENTREG_20_02)) { play->nextEntrance = ENTRANCE(WOODFALL_TEMPLE, 1); play->transitionTrigger = TRANS_TRIGGER_START; - play->transitionType = TRANS_TYPE_03; + play->transitionType = TRANS_TYPE_FADE_WHITE; } else { play->nextEntrance = ENTRANCE(WOODFALL, 0); gSaveContext.nextCutsceneIndex = 0xFFF0; play->transitionTrigger = TRANS_TRIGGER_START; - play->transitionType = TRANS_TYPE_03; + play->transitionType = TRANS_TYPE_FADE_WHITE; } break; @@ -614,12 +614,12 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB if (CHECK_WEEKEVENTREG(WEEKEVENTREG_33_80)) { play->nextEntrance = ENTRANCE(MOUNTAIN_VILLAGE_SPRING, 7); play->transitionTrigger = TRANS_TRIGGER_START; - play->transitionType = TRANS_TYPE_03; + play->transitionType = TRANS_TYPE_FADE_WHITE; } else { play->nextEntrance = ENTRANCE(MOUNTAIN_VILLAGE_SPRING, 0); gSaveContext.nextCutsceneIndex = 0xFFF0; play->transitionTrigger = TRANS_TRIGGER_START; - play->transitionType = TRANS_TYPE_03; + play->transitionType = TRANS_TYPE_FADE_WHITE; } break; @@ -628,7 +628,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB play->nextEntrance = ENTRANCE(ZORA_CAPE, 8); gSaveContext.nextCutsceneIndex = 0xFFF0; play->transitionTrigger = TRANS_TRIGGER_START; - play->transitionType = TRANS_TYPE_03; + play->transitionType = TRANS_TYPE_FADE_WHITE; break; case 0x36: @@ -636,7 +636,7 @@ void Cutscene_Command_Terminator(PlayState* play, CutsceneContext* csCtx, CsCmdB play->nextEntrance = ENTRANCE(IKANA_CANYON, 0); gSaveContext.nextCutsceneIndex = 0xFFF1; play->transitionTrigger = TRANS_TRIGGER_START; - play->transitionType = TRANS_TYPE_03; + play->transitionType = TRANS_TYPE_FADE_WHITE; break; } } @@ -764,16 +764,16 @@ void Cutscene_Command_ChooseCreditsScenes(PlayState* play, CutsceneContext* csCt void Cutscene_Command_MotionBlur(PlayState* play, CutsceneContext* csCtx, CsCmdBase* cmd) { if ((csCtx->frames >= cmd->startFrame) && (cmd->endFrame >= csCtx->frames)) { if ((csCtx->frames == cmd->startFrame) && (cmd->base == 1)) { - func_8016566C(180); + Play_EnableMotionBlur(180); } if (cmd->base == 2) { f32 progress = Environment_LerpWeight(cmd->endFrame, cmd->startFrame, csCtx->frames); if (progress >= 0.9f) { - func_80165690(); + Play_DisableMotionBlur(); } else { - func_80165658((1.0f - progress) * 180.0f); + Play_SetMotionBlurAlpha((1.0f - progress) * 180.0f); } } } diff --git a/src/code/z_draw.c b/src/code/z_draw.c index 4167b4cea4..a2686be8e3 100644 --- a/src/code/z_draw.c +++ b/src/code/z_draw.c @@ -837,7 +837,7 @@ void GetItem_DrawRemains(PlayState* play, s16 drawId) { gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_OPA_DISP++, sDrawItemTable[drawId].drawResources[0]); - POLY_OPA_DISP = func_801660B8(play, POLY_OPA_DISP); + POLY_OPA_DISP = Play_SetFog(play, POLY_OPA_DISP); CLOSE_DISPS(play->state.gfxCtx); } diff --git a/src/code/z_eff_ss_dead.c b/src/code/z_eff_ss_dead.c index b7c6af97e3..6c416e3c85 100644 --- a/src/code/z_eff_ss_dead.c +++ b/src/code/z_eff_ss_dead.c @@ -50,7 +50,7 @@ void func_800AE5A0(PlayState* play) { OPEN_DISPS(play->state.gfxCtx); gDPPipeSync(POLY_OPA_DISP++); - POLY_OPA_DISP = func_801660B8(play, POLY_OPA_DISP); + POLY_OPA_DISP = Play_SetFog(play, POLY_OPA_DISP); CLOSE_DISPS(play->state.gfxCtx); } @@ -105,7 +105,7 @@ void func_800AE8EC(PlayState* play) { OPEN_DISPS(play->state.gfxCtx); gDPPipeSync(POLY_XLU_DISP++); - POLY_XLU_DISP = func_801660B8(play, POLY_XLU_DISP); + POLY_XLU_DISP = Play_SetFog(play, POLY_XLU_DISP); CLOSE_DISPS(play->state.gfxCtx); } diff --git a/src/code/z_en_item00.c b/src/code/z_en_item00.c index 944e650a00..f450db0149 100644 --- a/src/code/z_en_item00.c +++ b/src/code/z_en_item00.c @@ -819,7 +819,7 @@ void EnItem00_DrawSprite(EnItem00* this, PlayState* play) { OPEN_DISPS(play->state.gfxCtx); - POLY_OPA_DISP = func_801660B8(play, POLY_OPA_DISP); + POLY_OPA_DISP = Play_SetFog(play, POLY_OPA_DISP); if (this->actor.params == ITEM00_NUTS_10) { texIndex = 6; diff --git a/src/code/z_fbdemo.c b/src/code/z_fbdemo.c index 3d33399e58..c145087a24 100644 --- a/src/code/z_fbdemo.c +++ b/src/code/z_fbdemo.c @@ -5,13 +5,13 @@ #pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/func_8016418C.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/func_8016424C.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/TransitionUnk_Destroy.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/func_801642D8.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/TransitionUnk_Init.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/func_80164438.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/func_8016454C.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/TransitionUnk_Draw.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_fbdemo/func_80164678.s") diff --git a/src/code/z_game_over.c b/src/code/z_game_over.c index 5609a47273..1e87a6a17a 100644 --- a/src/code/z_game_over.c +++ b/src/code/z_game_over.c @@ -73,7 +73,7 @@ void GameOver_Update(PlayState* play) { if (gSaveContext.respawnFlag != -7) { gSaveContext.respawnFlag = -6; } - gSaveContext.nextTransitionType = TRANS_TYPE_02; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; gSaveContext.save.playerData.health = 0x30; gameOverCtx->state++; if (INV_CONTENT(ITEM_MASK_DEKU) == ITEM_MASK_DEKU) { diff --git a/src/code/z_kaleido_scope_call.c b/src/code/z_kaleido_scope_call.c index 5ab466ddc3..59fde2f2d6 100644 --- a/src/code/z_kaleido_scope_call.c +++ b/src/code/z_kaleido_scope_call.c @@ -50,7 +50,7 @@ void KaleidoScopeCall_Update(PlayState* play) { pauseCtx->state = (pauseCtx->state & 0xFFFF) + 1; } else if ((pauseCtx->state == PAUSE_STATE_OPENING_1) || (pauseCtx->state == PAUSE_STATE_GAMEOVER_1) || (pauseCtx->state == PAUSE_STATE_OWLWARP_1)) { - if (R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_DONE) { + if (R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_READY) { pauseCtx->state++; } } else if (pauseCtx->state != PAUSE_STATE_OFF) { @@ -77,7 +77,7 @@ void KaleidoScopeCall_Update(PlayState* play) { void KaleidoScopeCall_Draw(PlayState* play) { KaleidoMgrOverlay* kaleidoScopeOvl = &gKaleidoMgrOverlayTable[KALEIDO_OVL_KALEIDO_SCOPE]; - if (R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_DONE) { + if (R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_READY) { if (((play->pauseCtx.state >= PAUSE_STATE_OPENING_3) && (play->pauseCtx.state <= PAUSE_STATE_SAVEPROMPT)) || ((play->pauseCtx.state >= PAUSE_STATE_GAMEOVER_3) && (play->pauseCtx.state <= PAUSE_STATE_UNPAUSE_SETUP))) { if (gKaleidoMgrCurOvl == kaleidoScopeOvl) { diff --git a/src/code/z_kankyo.c b/src/code/z_kankyo.c index 919abbb1d7..d6d38f9d6f 100644 --- a/src/code/z_kankyo.c +++ b/src/code/z_kankyo.c @@ -4,7 +4,7 @@ #pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800F50D4.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Kankyo_Init.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_Init.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800F5954.s") @@ -12,7 +12,7 @@ #pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800F5B10.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800F5CD0.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_UpdateSkybox.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800F6834.s") @@ -42,11 +42,11 @@ #pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800F8A9C.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800F8CD4.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_Update.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800F8D84.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800F9728.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_DrawSunLensFlare.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800F9824.s") @@ -54,7 +54,7 @@ #pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FA3C4.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FA9FC.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_DrawRain.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FAAB4.s") @@ -72,7 +72,7 @@ #pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FB9B4.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FBCBC.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_DrawCustomLensFlare.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Kankyo_InitGameOverLights.s") @@ -82,9 +82,9 @@ #pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FC3DC.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FC444.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_FillScreen.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FC64C.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/Environment_DrawSandstorm.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_kankyo/func_800FD2B4.s") diff --git a/src/code/z_lights.c b/src/code/z_lights.c index e3e732eb39..6a31c7e94e 100644 --- a/src/code/z_lights.c +++ b/src/code/z_lights.c @@ -251,7 +251,7 @@ void Lights_FreeNode(LightNode* light) { void LightContext_Init(PlayState* play, LightContext* lightCtx) { LightContext_InitList(play, lightCtx); LightContext_SetAmbientColor(lightCtx, 80, 80, 80); - func_80102544(lightCtx, 0, 0, 0, 0x3E4, 0x3200); + LightContext_SetFog(lightCtx, 0, 0, 0, 996, 12800); bzero(&sLightsBuffer, sizeof(LightsBuffer)); } @@ -261,12 +261,12 @@ void LightContext_SetAmbientColor(LightContext* lightCtx, u8 r, u8 g, u8 b) { lightCtx->ambient.b = b; } -void func_80102544(LightContext* lightCtx, u8 a1, u8 a2, u8 a3, s16 numLights, s16 sp16) { - lightCtx->unk7 = a1; - lightCtx->unk8 = a2; - lightCtx->unk9 = a3; - lightCtx->unkA = numLights; - lightCtx->unkC = sp16; +void LightContext_SetFog(LightContext* lightCtx, u8 r, u8 g, u8 b, s16 near, s16 far) { + lightCtx->fogColor.r = r; + lightCtx->fogColor.g = g; + lightCtx->fogColor.b = b; + lightCtx->fogNear = near; + lightCtx->zFar = far; } /** diff --git a/src/code/z_message.c b/src/code/z_message.c index e3eb9839dc..97db5e72d4 100644 --- a/src/code/z_message.c +++ b/src/code/z_message.c @@ -531,7 +531,7 @@ void func_80153E7C(PlayState* play, void* arg1) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_message/func_801541D4.s") -void func_80156758(PlayState* play) { +void Message_Draw(PlayState* play) { Gfx* nextDisplayList; Gfx* polyOpa; GraphicsContext* gfxCtx = play->state.gfxCtx; @@ -551,7 +551,7 @@ void func_80156758(PlayState* play) { CLOSE_DISPS(gfxCtx); } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_message/func_8015680C.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_message/Message_Update.s") void func_801586A4(PlayState* play) { play->msgCtx.messageEntryTableNes = D_801C6B98; diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index cd4ffa67fd..f3bfb530f3 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -4333,7 +4333,7 @@ void Interface_StartMoonCrash(PlayState* play) { play->nextEntrance = ENTRANCE(TERMINA_FIELD, 12); gSaveContext.nextCutsceneIndex = 0; play->transitionTrigger = TRANS_TRIGGER_START; - play->transitionType = TRANS_TYPE_03; + play->transitionType = TRANS_TYPE_FADE_WHITE; } void Interface_GetTimerDigits(u64 timer, s16* timerArr) { diff --git a/src/code/z_play.c b/src/code/z_play.c index 7b3a875c2b..b33b449d28 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -1,81 +1,1590 @@ #include "global.h" #include "z64quake.h" +#include "z64rumble.h" #include "z64shrink_window.h" #include "z64view.h" +#include "overlays/gamestates/ovl_daytelop/z_daytelop.h" +#include "overlays/gamestates/ovl_opening/z_opening.h" +#include "overlays/gamestates/ovl_file_choose/z_file_choose.h" +#include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h" -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80165460.s") +s32 gDbgCamEnabled = false; +u8 D_801D0D54 = false; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80165608.s") +s16 sTransitionFillTimer; +Input D_801F6C18; +FbDemoStruct sTrnsnUnk; +u16* D_801F6D0C; +s32 gTrnsnUnkState; +VisMono sVisMono; +Color_RGBA8_u32 gVisMonoColor; +Struct_80140E80 D_801F6D38; +Struct_80140E80* D_801F6D4C; +BombersNotebook sBombersNotebook; +u8 sBombersNotebookOpen; +u8 sMotionBlurStatus; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80165630.s") +typedef enum { + /* 0 */ MOTION_BLUR_OFF, + /* 1 */ MOTION_BLUR_SETUP, + /* 2 */ MOTION_BLUR_PROCESS +} MotionBlurStatus; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80165658.s") +void Play_DrawMotionBlur(PlayState* this) { + GraphicsContext* gfxCtx = this->state.gfxCtx; + s32 alpha; + Gfx* gfx; + Gfx* gfxHead; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_8016566C.s") + if (R_MOTION_BLUR_PRIORITY_ENABLED) { + alpha = R_MOTION_BLUR_PRIORITY_ALPHA; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80165690.s") + if (sMotionBlurStatus == MOTION_BLUR_OFF) { + sMotionBlurStatus = MOTION_BLUR_SETUP; + } + } else if (R_MOTION_BLUR_ENABLED) { + alpha = R_MOTION_BLUR_ALPHA; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_801656A4.s") + if (sMotionBlurStatus == MOTION_BLUR_OFF) { + sMotionBlurStatus = MOTION_BLUR_SETUP; + } + } else { + alpha = 0; + sMotionBlurStatus = MOTION_BLUR_OFF; + } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80165DB8.s") + if (sMotionBlurStatus != MOTION_BLUR_OFF) { + OPEN_DISPS(gfxCtx); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80165DCC.s") + gfxHead = POLY_OPA_DISP; + gfx = Graph_GfxPlusOne(gfxHead); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80165DF0.s") + gSPDisplayList(OVERLAY_DISP++, gfx); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80165E04.s") + this->pauseBgPreRender.fbuf = gfxCtx->curFrameBuffer; + this->pauseBgPreRender.fbufSave = this->unk_18E64; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80165E1C.s") + if (sMotionBlurStatus == MOTION_BLUR_PROCESS) { + func_80170AE0(&this->pauseBgPreRender, &gfx, alpha); + } else { + sMotionBlurStatus = MOTION_BLUR_PROCESS; + } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80165E7C.s") + func_801705B4(&this->pauseBgPreRender, &gfx); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80165EC0.s") + gSPEndDisplayList(gfx++); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/D_801DFA18.s") + Graph_BranchDlist(gfxHead, gfx); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80166060.s") + POLY_OPA_DISP = gfx; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_801660B8.s") + CLOSE_DISPS(gfxCtx); + } +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/Play_Destroy.s") +void Play_InitMotionBlur(void) { + R_MOTION_BLUR_ENABLED = false; + R_MOTION_BLUR_PRIORITY_ENABLED = false; + sMotionBlurStatus = MOTION_BLUR_OFF; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/Play_CompressI8ToI5.s") +void Play_DestroyMotionBlur(void) { + R_MOTION_BLUR_ENABLED = false; + R_MOTION_BLUR_PRIORITY_ENABLED = false; + sMotionBlurStatus = MOTION_BLUR_OFF; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/Play_DecompressI5ToI8.s") +void Play_SetMotionBlurAlpha(u32 alpha) { + R_MOTION_BLUR_ALPHA = alpha; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_801668B4.s") +void Play_EnableMotionBlur(u32 alpha) { + R_MOTION_BLUR_ALPHA = alpha; + R_MOTION_BLUR_ENABLED = true; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80166968.s") +void Play_DisableMotionBlur(void) { + R_MOTION_BLUR_ENABLED = false; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80166B30.s") +// How much each color component contributes to the intensity image. +// These coefficients are close to what the YUV color space defines Y (luminance) as: +// https://en.wikipedia.org/wiki/YUV#Conversion_to/from_RGB +#define PLAY_INTENSITY_RED 2 +#define PLAY_INTENSITY_GREEN 4 +#define PLAY_INTENSITY_BLUE 1 +#define PLAY_INTENSITY_NORM (0x1F * PLAY_INTENSITY_RED + 0x1F * PLAY_INTENSITY_GREEN + 0x1F * PLAY_INTENSITY_BLUE) +#define PLAY_INTENSITY_MIX(r, g, b, m) \ + ((((r)*PLAY_INTENSITY_RED + (g)*PLAY_INTENSITY_GREEN + (b)*PLAY_INTENSITY_BLUE) * (m)) / PLAY_INTENSITY_NORM) -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/Play_Update.s") +/** + * Converts an RGBA16 buffer to an Intensity Image + * + * @param[out] destI destination buffer + * @param[in] srcRgba16 source buffer + * @param[in] rgba16Width width of a full row for the RGBA16 + * @param[in] pixelLeft X coordinate of the top-left RGBA16 pixel to start with + * @param[in] pixelTop Y coordinate of the top-left RGBA16 pixel to start with + * @param[in] pixelRight X coordinate of the bottom-right RGBA16 pixel to end with + * @param[in] pixelBottom Y coordinate of the bottom-right RGBA16 pixel to end with + * @param[in] bitDepth bit depth for the intensity image + */ +void Play_ConvertRgba16ToIntensityImage(void* destI, u16* srcRgba16, s32 rgba16Width, s32 pixelLeft, s32 pixelTop, + s32 pixelRight, s32 pixelBottom, s32 bitDepth) { + s32 i; + s32 j; + u32 pixel; + u32 r; + u32 g; + u32 b; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80167DE4.s") + switch (bitDepth) { + case 4: { + u8* destI4 = destI; + u32 upper; + u32 lower; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80167F0C.s") + for (i = pixelTop; i <= pixelBottom; i++) { + for (j = pixelLeft; j <= pixelRight; j += 2) { + pixel = srcRgba16[i * rgba16Width + j]; + r = RGBA16_GET_R(pixel); + g = RGBA16_GET_G(pixel); + b = RGBA16_GET_B(pixel); + upper = PLAY_INTENSITY_MIX(r, g, b, 15); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/Play_Draw.s") + pixel = srcRgba16[i * rgba16Width + j + 1]; + r = RGBA16_GET_R(pixel); + g = RGBA16_GET_G(pixel); + b = RGBA16_GET_B(pixel); + lower = PLAY_INTENSITY_MIX(r, g, b, 15); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80168DAC.s") + *(destI4++) = (upper << 4) | lower; + } + } + break; + } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/Play_Main.s") + case 5: { + u8* destI5 = destI; + + for (i = pixelTop; i <= pixelBottom; i++) { + for (j = pixelLeft; j <= pixelRight; j++) { + pixel = srcRgba16[i * rgba16Width + j]; + r = RGBA16_GET_R(pixel); + g = RGBA16_GET_G(pixel); + b = RGBA16_GET_B(pixel); + + pixel = 0; + + *(destI5++) = PLAY_INTENSITY_MIX(r, g, b, 255) & 0xF8; + } + } + break; + } + + case 8: { + u8* destI8 = destI; + + for (i = pixelTop; i <= pixelBottom; i++) { + for (j = pixelLeft; j <= pixelRight; j++) { + pixel = srcRgba16[i * rgba16Width + j]; + + r = RGBA16_GET_R(pixel); + g = RGBA16_GET_G(pixel); + b = RGBA16_GET_B(pixel); + + *(destI8++) = PLAY_INTENSITY_MIX(r, g, b, 255); + } + } + break; + } + + case 16: { + u16* destI16 = destI; + + for (i = pixelTop; i <= pixelBottom; i++) { + for (j = pixelLeft; j <= pixelRight; j++) { + *(destI16++) = srcRgba16[i * rgba16Width + j]; + } + } + break; + } + } +} + +void Play_SetMotionBlurPriorityAlpha(u32 alpha) { + R_MOTION_BLUR_PRIORITY_ALPHA = alpha; +} + +void Play_EnableMotionBlurPriority(u32 alpha) { + R_MOTION_BLUR_PRIORITY_ALPHA = alpha; + R_MOTION_BLUR_PRIORITY_ENABLED = true; +} + +void Play_DisableMotionBlurPriority(void) { + R_MOTION_BLUR_PRIORITY_ENABLED = false; +} + +// Will take the photograph, but doesn't compress and save it +void Play_TriggerPictoPhoto(void) { + R_PICTO_PHOTO_STATE = PICTO_PHOTO_STATE_SETUP; +} + +void Play_TakePictoPhoto(PreRender* prerender) { + PreRender_ApplyFilters(prerender); + Play_ConvertRgba16ToIntensityImage(gPictoPhotoI8, prerender->fbufSave, SCREEN_WIDTH, PICTO_PHOTO_TOPLEFT_X, + PICTO_PHOTO_TOPLEFT_Y, (PICTO_PHOTO_TOPLEFT_X + PICTO_PHOTO_WIDTH) - 1, + (PICTO_PHOTO_TOPLEFT_Y + PICTO_PHOTO_HEIGHT) - 1, 8); +} + +s32 Play_ChooseDynamicTransition(PlayState* this, s32 transitionType) { + s32 nextTransitionType = transitionType; + + if (transitionType == TRANS_TYPE_FADE_DYNAMIC) { + if (!gSaveContext.save.isNight) { + nextTransitionType = TRANS_TYPE_FADE_WHITE; + } else { + nextTransitionType = TRANS_TYPE_FADE_BLACK; + } + } + if (nextTransitionType != transitionType) { + this->transitionType = nextTransitionType; + } + return nextTransitionType; +} + +void Play_SetupTransition(PlayState* this, s32 transitionType) { + TransitionContext* transitionCtx = &this->transitionCtx; + s32 fbdemoType; + + bzero(transitionCtx, sizeof(TransitionContext)); + + fbdemoType = -1; + if (transitionType & TRANS_TYPE_WIPE3) { + fbdemoType = FBDEMO_WIPE3; + } else if ((transitionType & 0x78) == TRANS_TYPE_WIPE4) { // Checks not only type, but also a max value of 39 + fbdemoType = FBDEMO_WIPE4; + } else if (!(transitionType & (TRANS_TYPE_WIPE3 | TRANS_TYPE_WIPE4))) { + switch (transitionType) { + case TRANS_TYPE_TRIFORCE: + fbdemoType = FBDEMO_TRIFORCE; + break; + + case TRANS_TYPE_WIPE: + case TRANS_TYPE_WIPE_FAST: + fbdemoType = FBDEMO_WIPE1; + break; + + case TRANS_TYPE_FADE_BLACK: + case TRANS_TYPE_FADE_WHITE: + case TRANS_TYPE_FADE_BLACK_FAST: + case TRANS_TYPE_FADE_WHITE_FAST: + case TRANS_TYPE_FADE_BLACK_SLOW: + case TRANS_TYPE_FADE_WHITE_SLOW: + case TRANS_TYPE_FADE_WHITE_CS_DELAYED: + case TRANS_TYPE_FADE_WHITE_INSTANT: + case TRANS_TYPE_FADE_GREEN: + case TRANS_TYPE_FADE_BLUE: + fbdemoType = FBDEMO_FADE; + break; + + case TRANS_TYPE_FILL_WHITE_FAST: + case TRANS_TYPE_FILL_WHITE: + this->transitionMode = TRANS_MODE_FILL_WHITE_INIT; + break; + + case TRANS_TYPE_INSTANT: + this->transitionMode = TRANS_MODE_INSTANT; + break; + + case TRANS_TYPE_FILL_BROWN: + this->transitionMode = TRANS_MODE_FILL_BROWN_INIT; + break; + + case TRANS_TYPE_SANDSTORM_PERSIST: + this->transitionMode = TRANS_MODE_SANDSTORM_INIT; + break; + + case TRANS_TYPE_SANDSTORM_END: + this->transitionMode = TRANS_MODE_SANDSTORM_END_INIT; + break; + + case TRANS_TYPE_CS_BLACK_FILL: + this->transitionMode = TRANS_MODE_CS_BLACK_FILL_INIT; + break; + + case TRANS_TYPE_CIRCLE: + fbdemoType = FBDEMO_CIRCLE; + break; + + case TRANS_TYPE_WIPE5: + fbdemoType = FBDEMO_WIPE5; + break; + + default: + fbdemoType = -1; + __assert("../z_play.c", 1420); + } + } else { + fbdemoType = -1; + __assert("../z_play.c", 1423); + } + + transitionCtx->transitionType = transitionType; + transitionCtx->fbdemoType = fbdemoType; + if (fbdemoType != -1) { + Transition_Init(transitionCtx); + } +} + +void Play_ClearTransition(PlayState* this) { + if (this->transitionCtx.fbdemoType != -1) { + Transition_Destroy(&this->transitionCtx); + } + this->transitionCtx.transitionType = -1; +} + +Gfx* Play_SetFog(PlayState* this, Gfx* gfx) { + s32 fogFar = this->lightCtx.zFar * (5.0f / 64.0f); + + return Gfx_SetFogWithSync(gfx, this->lightCtx.fogColor.r, this->lightCtx.fogColor.g, this->lightCtx.fogColor.b, 0, + this->lightCtx.fogNear, ((fogFar <= 1000) ? 1000 : fogFar)); +} + +void Play_Destroy(GameState* thisx) { + PlayState* this = (PlayState*)thisx; + GraphicsContext* gfxCtx = this->state.gfxCtx; + + if (sBombersNotebookOpen) { + MsgEvent_SendNullTask(); + func_80178750(); + gfxCtx->curFrameBuffer = SysCfb_GetFbPtr(gfxCtx->framebufferIndex % 2); + gfxCtx->zbuffer = SysCfb_GetZBuffer(); + gfxCtx->viMode = D_801FBB88; + gfxCtx->viConfigFeatures = gViConfigFeatures; + gfxCtx->xScale = gViConfigXScale; + gfxCtx->yScale = gViConfigYScale; + gfxCtx->updateViMode = true; + sBombersNotebookOpen = false; + } + + BombersNotebook_Destroy(&sBombersNotebook); + this->state.gfxCtx->callback = NULL; + this->state.gfxCtx->callbackArg = 0; + Play_DestroyMotionBlur(); + + if (R_PAUSE_BG_PRERENDER_STATE != PAUSE_BG_PRERENDER_OFF) { + PreRender_ApplyFiltersSlowlyDestroy(&this->pauseBgPreRender); + R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_OFF; + } + + R_PICTO_PHOTO_STATE = PICTO_PHOTO_STATE_OFF; + PreRender_Destroy(&this->pauseBgPreRender); + this->unk_18E58 = NULL; + this->pictoPhotoI8 = NULL; + this->unk_18E60 = NULL; + this->unk_18E64 = NULL; + this->unk_18E68 = NULL; + Effect_DestroyAll(this); + EffectSS_Clear(this); + CollisionCheck_DestroyContext(this, &this->colChkCtx); + + if (gTrnsnUnkState == 3) { + TransitionUnk_Destroy(&sTrnsnUnk); + gTrnsnUnkState = 0; + } + + if ((this->transitionMode == TRANS_MODE_INSTANCE_RUNNING) || D_801D0D54) { + this->transitionCtx.destroy(&this->transitionCtx.instanceData); + Play_ClearTransition(this); + this->transitionMode = TRANS_MODE_OFF; + } + + ShrinkWindow_Destroy(); + TransitionFade_Destroy(&this->unk_18E48); + VisMono_Destroy(&sVisMono); + func_80140EA0(D_801F6D4C); + D_801F6D4C = NULL; + + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_92_80)) { + Actor_CleanupContext(&this->actorCtx, this); + } + CLEAR_WEEKEVENTREG(WEEKEVENTREG_92_80); + + Interface_Destroy(this); + KaleidoScopeCall_Destroy(this); + KaleidoManager_Destroy(); + ZeldaArena_Cleanup(); +} + +#define PLAY_COMPRESS_BITS 5 +#define PLAY_DECOMPRESS_BITS 8 + +void Play_CompressI8ToI5(void* srcI8, void* destI5, size_t size) { + u32 i; + u8* src = srcI8; + s8* dest = destI5; + s32 bitsLeft = PLAY_DECOMPRESS_BITS; // Bits left in the current dest pixel left to compress into + u32 destPixel = 0; + s32 shift; + u32 srcPixel; + + for (i = 0; i < size; i++) { + srcPixel = *src++; + srcPixel = (srcPixel * 0x1F + 0x80) / 0xFF; + shift = bitsLeft - PLAY_COMPRESS_BITS; + if (shift > 0) { + destPixel |= srcPixel << shift; + } else { + destPixel |= srcPixel >> -shift; + *dest++ = destPixel; + shift += PLAY_DECOMPRESS_BITS; + destPixel = srcPixel << shift; + } + bitsLeft = shift; + } + + if (bitsLeft < PLAY_DECOMPRESS_BITS) { + *dest = destPixel; + } +} + +void Play_DecompressI5ToI8(void* srcI5, void* destI8, size_t size) { + u32 i; + u8* src = srcI5; + s8* dest = destI8; + s32 bitsLeft = PLAY_DECOMPRESS_BITS; // Bits left in the current src pixel left to decompress + u32 destPixel; + s32 shift; + u32 srcPixel = *src++; + + for (i = 0; i < size; i++) { + shift = bitsLeft - PLAY_COMPRESS_BITS; + if (shift > 0) { + destPixel = 0; + destPixel |= srcPixel >> shift; + } else { + destPixel = 0; + destPixel |= srcPixel << -shift; + srcPixel = *src++; + shift += PLAY_DECOMPRESS_BITS; + destPixel |= srcPixel >> shift; + } + destPixel = (destPixel & 0x1F) * 0xFF / 0x1F; + *dest++ = destPixel; + bitsLeft = shift; + } +} + +f32 Play_GetWaterSurface(PlayState* this, Vec3f* pos, s32* lightIndex) { + Player* player = GET_PLAYER(this); + f32 waterSurfaceY = player->actor.world.pos.y; + WaterBox* waterBox; + s32 bgId; + + if (!WaterBox_GetSurfaceImpl(this, &this->colCtx, pos->x, pos->z, &waterSurfaceY, &waterBox, &bgId)) { + return BGCHECK_Y_MIN; + } + + if (waterSurfaceY < pos->y) { + return BGCHECK_Y_MIN; + } + + *lightIndex = WaterBox_GetLightSettingIndex(&this->colCtx, waterBox); + return waterSurfaceY; +} + +void Play_UpdateWaterCamera(PlayState* this, Camera* camera) { + static s16 sQuakeIndex = -1; + static s16 sIsCameraUnderwater = false; + s32 pad; + s32 lightIndex; + Player* player = GET_PLAYER(this); + + sIsCameraUnderwater = camera->stateFlags & CAM_STATE_UNDERWATER; + if (Play_GetWaterSurface(this, &camera->eye, &lightIndex) != BGCHECK_Y_MIN) { + if (!sIsCameraUnderwater) { + Camera_SetFlags(camera, CAM_STATE_UNDERWATER); + sQuakeIndex = -1; + Distortion_SetType(DISTORTION_TYPE_UNDERWATER_ENTRY); + Distortion_SetCountdown(80); + } + + func_801A3EC0(0x20); + func_800F6834(this, lightIndex); + + if ((sQuakeIndex == -1) || (Quake_GetCountdown(sQuakeIndex) == 10)) { + s16 quakeIndex = Quake_Add(camera, QUAKE_TYPE_5); + + sQuakeIndex = quakeIndex; + if (quakeIndex != 0) { + Quake_SetSpeed(sQuakeIndex, 550); + Quake_SetQuakeValues(sQuakeIndex, 1, 1, 180, 0); + Quake_SetCountdown(sQuakeIndex, 1000); + } + } + if (player->stateFlags3 & PLAYER_STATE3_8000) { + Distortion_SetType(DISTORTION_TYPE_ZORA_SWIMMING); + Distortion_ClearType(DISTORTION_TYPE_NON_ZORA_SWIMMING); + } else { + Distortion_SetType(DISTORTION_TYPE_NON_ZORA_SWIMMING); + Distortion_ClearType(DISTORTION_TYPE_ZORA_SWIMMING); + } + } else { + if (sIsCameraUnderwater) { + Camera_ClearFlags(camera, CAM_STATE_UNDERWATER); + } + Distortion_ClearType(DISTORTION_TYPE_NON_ZORA_SWIMMING); + Distortion_ClearType(DISTORTION_TYPE_UNDERWATER_ENTRY); + Distortion_ClearType(DISTORTION_TYPE_ZORA_SWIMMING); + if (sQuakeIndex != 0) { + Quake_Remove(sQuakeIndex); + } + func_800F694C(this); + func_801A3EC0(0); + } +} + +void Play_UpdateTransition(PlayState* this) { + s32 pad; + + if (this->transitionMode == TRANS_MODE_OFF) { + return; + } + + switch (this->transitionMode) { + case TRANS_MODE_SETUP: + if (this->transitionTrigger != TRANS_TRIGGER_END) { + s16 sceneLayer = 0; + + Interface_SetHudVisibility(HUD_VISIBILITY_NONE); + + if (gSaveContext.nextCutsceneIndex >= 0xFFF0) { + sceneLayer = (gSaveContext.nextCutsceneIndex & 0xF) + 1; + } + + if ((!(Entrance_GetTransitionFlags(this->nextEntrance + sceneLayer) & 0x8000) || + ((this->nextEntrance == ENTRANCE(PATH_TO_MOUNTAIN_VILLAGE, 1)) && + !CHECK_WEEKEVENTREG(WEEKEVENTREG_33_80)) || + ((this->nextEntrance == ENTRANCE(ROAD_TO_SOUTHERN_SWAMP, 1)) && + !CHECK_WEEKEVENTREG(WEEKEVENTREG_20_02)) || + ((this->nextEntrance == ENTRANCE(TERMINA_FIELD, 2)) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80)) || + ((this->nextEntrance == ENTRANCE(ROAD_TO_IKANA, 1)) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_52_20))) && + (!func_800FE590(this) || (Entrance_GetSceneId(this->nextEntrance + sceneLayer) < 0) || + (Audio_GetActiveSequence(SEQ_PLAYER_BGM_MAIN) != NA_BGM_FINAL_HOURS))) { + func_801A4058(20); + gSaveContext.seqId = (u8)NA_BGM_DISABLED; + gSaveContext.ambienceId = AMBIENCE_ID_DISABLED; + } + + if (func_800FD768()) { + func_801A4058(20); + gSaveContext.seqId = (u8)NA_BGM_DISABLED; + gSaveContext.ambienceId = AMBIENCE_ID_DISABLED; + } + + if (func_800FE590(this) && (Entrance_GetSceneId(this->nextEntrance + sceneLayer) >= 0) && + (Audio_GetActiveSequence(SEQ_PLAYER_BGM_MAIN) == NA_BGM_FINAL_HOURS)) { + func_801A41C8(20); + } + } + + if (!D_801D0D54) { + Play_SetupTransition(this, Play_ChooseDynamicTransition(this, this->transitionType)); + } + + if (this->transitionMode >= TRANS_MODE_FILL_WHITE_INIT) { + // non-instance modes break out of this switch + break; + } + // fallthrough + case TRANS_MODE_INSTANCE_INIT: { + s32 transWipeSpeed; + s32 transFadeDuration; + u32 color; + + this->transitionCtx.init(&this->transitionCtx.instanceData); + + if (this->transitionCtx.transitionType & (TRANS_TYPE_WIPE3 | TRANS_TYPE_WIPE4)) { + this->transitionCtx.setType(&this->transitionCtx.instanceData, + this->transitionCtx.transitionType | TRANS_TYPE_SET_PARAMS); + } + + if ((this->transitionCtx.transitionType == TRANS_TYPE_WIPE_FAST) || + (this->transitionCtx.transitionType == TRANS_TYPE_FILL_WHITE_FAST)) { + //! @bug TRANS_TYPE_FILL_WHITE_FAST will never reach this code. + //! It is a non-instance type transition which doesn't run this case. + transWipeSpeed = 28; + } else { + transWipeSpeed = 14; + } + gSaveContext.transWipeSpeed = transWipeSpeed; + + switch (this->transitionCtx.transitionType) { + case TRANS_TYPE_FADE_BLACK_FAST: + case TRANS_TYPE_FADE_WHITE_FAST: + transFadeDuration = 20; + break; + + case TRANS_TYPE_FADE_BLACK_SLOW: + case TRANS_TYPE_FADE_WHITE_SLOW: + transFadeDuration = 150; + break; + + case TRANS_TYPE_FADE_WHITE_INSTANT: + transFadeDuration = 2; + break; + + default: + transFadeDuration = 60; + break; + } + gSaveContext.transFadeDuration = transFadeDuration; + + switch (this->transitionCtx.transitionType) { + case TRANS_TYPE_FADE_WHITE: + case TRANS_TYPE_FADE_WHITE_FAST: + case TRANS_TYPE_FADE_WHITE_SLOW: + case TRANS_TYPE_FADE_WHITE_CS_DELAYED: + case TRANS_TYPE_FADE_WHITE_INSTANT: + color = RGBA8(160, 160, 160, 255); + break; + + case TRANS_TYPE_FADE_GREEN: + color = RGBA8(140, 140, 100, 255); + break; + + case TRANS_TYPE_FADE_BLUE: + color = RGBA8(70, 100, 110, 255); + break; + + default: + color = RGBA8(0, 0, 0, 255); + break; + } + + this->transitionCtx.setColor(&this->transitionCtx.instanceData, color); + if (this->transitionCtx.setEnvColor != NULL) { + this->transitionCtx.setEnvColor(&this->transitionCtx.instanceData, color); + } + + this->transitionCtx.setType(&this->transitionCtx.instanceData, + (this->transitionTrigger == TRANS_TRIGGER_END) ? 1 : 2); + this->transitionCtx.start(&this->transitionCtx.instanceData); + + if (this->transitionCtx.transitionType == TRANS_TYPE_FADE_WHITE_CS_DELAYED) { + this->transitionMode = TRANS_MODE_INSTANCE_WAIT; + } else { + this->transitionMode = TRANS_MODE_INSTANCE_RUNNING; + } + break; + } + + case TRANS_MODE_INSTANCE_RUNNING: + if (this->transitionCtx.isDone(&this->transitionCtx.instanceData)) { + if (this->transitionTrigger != TRANS_TRIGGER_END) { + if (this->transitionCtx.transitionType == TRANS_TYPE_CIRCLE) { + D_801D0D54 = false; + } + + if (gSaveContext.gameMode == 4) { + STOP_GAMESTATE(&this->state); + SET_NEXT_GAMESTATE(&this->state, TitleSetup_Init, sizeof(TitleSetupState)); + } else if (gSaveContext.gameMode != 2) { + STOP_GAMESTATE(&this->state); + SET_NEXT_GAMESTATE(&this->state, Play_Init, sizeof(PlayState)); + gSaveContext.save.entrance = this->nextEntrance; + + if (gSaveContext.minigameStatus == MINIGAME_STATUS_ACTIVE) { + gSaveContext.minigameStatus = MINIGAME_STATUS_END; + } + } else { // 2 + STOP_GAMESTATE(&this->state); + SET_NEXT_GAMESTATE(&this->state, FileSelect_Init, sizeof(FileSelectState)); + } + } else { + if (this->transitionCtx.transitionType == TRANS_TYPE_CIRCLE) { + D_801D0D54 = true; + } else { + this->transitionCtx.destroy(&this->transitionCtx.instanceData); + Play_ClearTransition(this); + } + this->transitionMode = TRANS_MODE_OFF; + if (gTrnsnUnkState == 3) { + TransitionUnk_Destroy(&sTrnsnUnk); + gTrnsnUnkState = 0; + Game_SetFramerateDivisor(&this->state, 3); + } + } + this->transitionTrigger = TRANS_TRIGGER_OFF; + } else { + this->transitionCtx.update(&this->transitionCtx.instanceData, this->state.framerateDivisor); + } + break; + } + + // update non-instance transitions + switch (this->transitionMode) { + case TRANS_MODE_FILL_WHITE_INIT: + sTransitionFillTimer = 0; + this->envCtx.fillScreen = true; + this->envCtx.screenFillColor[0] = 160; + this->envCtx.screenFillColor[1] = 160; + this->envCtx.screenFillColor[2] = 160; + + if (this->transitionTrigger != TRANS_TRIGGER_END) { + this->envCtx.screenFillColor[3] = 0; + this->transitionMode = TRANS_MODE_FILL_IN; + } else { + this->envCtx.screenFillColor[3] = 255; + this->transitionMode = TRANS_MODE_FILL_OUT; + } + break; + + case TRANS_MODE_FILL_IN: + this->envCtx.screenFillColor[3] = (sTransitionFillTimer / 20.0f) * 255.0f; + + if (sTransitionFillTimer >= 20) { + STOP_GAMESTATE(&this->state); + SET_NEXT_GAMESTATE(&this->state, Play_Init, sizeof(PlayState)); + gSaveContext.save.entrance = this->nextEntrance; + this->transitionTrigger = TRANS_TRIGGER_OFF; + this->transitionMode = TRANS_MODE_OFF; + } else { + sTransitionFillTimer++; + } + break; + + case TRANS_MODE_FILL_OUT: + this->envCtx.screenFillColor[3] = (1.0f - (sTransitionFillTimer / 20.0f)) * 255.0f; + + if (sTransitionFillTimer >= 20) { + gTrnsnUnkState = 0; + Game_SetFramerateDivisor(&this->state, 3); + this->transitionTrigger = TRANS_TRIGGER_OFF; + this->transitionMode = TRANS_MODE_OFF; + this->envCtx.fillScreen = false; + } else { + sTransitionFillTimer++; + } + break; + + case TRANS_MODE_FILL_BROWN_INIT: + sTransitionFillTimer = 0; + this->envCtx.fillScreen = true; + this->envCtx.screenFillColor[0] = 170; + this->envCtx.screenFillColor[1] = 160; + this->envCtx.screenFillColor[2] = 150; + + if (this->transitionTrigger != TRANS_TRIGGER_END) { + this->envCtx.screenFillColor[3] = 0; + this->transitionMode = TRANS_MODE_FILL_IN; + } else { + this->envCtx.screenFillColor[3] = 255; + this->transitionMode = TRANS_MODE_FILL_OUT; + } + break; + + case TRANS_MODE_INSTANT: + if (this->transitionTrigger != TRANS_TRIGGER_END) { + STOP_GAMESTATE(&this->state); + SET_NEXT_GAMESTATE(&this->state, Play_Init, sizeof(PlayState)); + gSaveContext.save.entrance = this->nextEntrance; + this->transitionTrigger = TRANS_TRIGGER_OFF; + this->transitionMode = TRANS_MODE_OFF; + } else { + gTrnsnUnkState = 0; + Game_SetFramerateDivisor(&this->state, 3); + this->transitionTrigger = TRANS_TRIGGER_OFF; + this->transitionMode = TRANS_MODE_OFF; + } + break; + + case TRANS_MODE_INSTANCE_WAIT: + if (gSaveContext.cutsceneTransitionControl != 0) { + this->transitionMode = TRANS_MODE_INSTANCE_RUNNING; + } + break; + + case TRANS_MODE_SANDSTORM_INIT: + if (this->transitionTrigger != TRANS_TRIGGER_END) { + this->envCtx.sandstormState = 1; + this->transitionMode = TRANS_MODE_SANDSTORM; + } else { + this->envCtx.sandstormState = 2; + this->envCtx.sandstormPrimA = 255; + this->envCtx.sandstormEnvA = 255; + this->transitionMode = TRANS_MODE_SANDSTORM; + } + break; + + case TRANS_MODE_SANDSTORM: + func_8019F128(NA_SE_EV_SAND_STORM - SFX_FLAG); + if (this->transitionTrigger == TRANS_TRIGGER_END) { + if (this->envCtx.sandstormPrimA < 110) { + gTrnsnUnkState = 0; + Game_SetFramerateDivisor(&this->state, 3); + this->transitionTrigger = TRANS_TRIGGER_OFF; + this->transitionMode = TRANS_MODE_OFF; + } + } else { + if (this->envCtx.sandstormEnvA == 255) { + STOP_GAMESTATE(&this->state); + SET_NEXT_GAMESTATE(&this->state, Play_Init, sizeof(PlayState)); + gSaveContext.save.entrance = this->nextEntrance; + this->transitionTrigger = TRANS_TRIGGER_OFF; + this->transitionMode = TRANS_MODE_OFF; + } + } + break; + + case TRANS_MODE_SANDSTORM_END_INIT: + if (this->transitionTrigger == TRANS_TRIGGER_END) { + this->envCtx.sandstormState = 4; + this->envCtx.sandstormPrimA = 255; + this->envCtx.sandstormEnvA = 255; + + // "It's here!!!!!!!!!" + (void)"来た!!!!!!!!!!!!!!!!!!!!!"; + + this->transitionMode = TRANS_MODE_SANDSTORM_END; + } else { + this->transitionMode = TRANS_MODE_SANDSTORM_INIT; + } + break; + + case TRANS_MODE_SANDSTORM_END: + func_8019F128(NA_SE_EV_SAND_STORM - SFX_FLAG); + + if (this->transitionTrigger == TRANS_TRIGGER_END) { + if (this->envCtx.sandstormPrimA <= 0) { + gTrnsnUnkState = 0; + Game_SetFramerateDivisor(&this->state, 3); + this->transitionTrigger = TRANS_TRIGGER_OFF; + this->transitionMode = TRANS_MODE_OFF; + } + } + break; + + case TRANS_MODE_CS_BLACK_FILL_INIT: + sTransitionFillTimer = 0; + this->envCtx.fillScreen = true; + this->envCtx.screenFillColor[0] = 0; + this->envCtx.screenFillColor[1] = 0; + this->envCtx.screenFillColor[2] = 0; + this->envCtx.screenFillColor[3] = 255; + this->transitionMode = TRANS_MODE_CS_BLACK_FILL; + break; + + case TRANS_MODE_CS_BLACK_FILL: + if (gSaveContext.cutsceneTransitionControl != 0) { + this->envCtx.screenFillColor[3] = gSaveContext.cutsceneTransitionControl; + + if (gSaveContext.cutsceneTransitionControl <= 100) { + gTrnsnUnkState = 0; + Game_SetFramerateDivisor(&this->state, 3); + this->transitionTrigger = TRANS_TRIGGER_OFF; + this->transitionMode = TRANS_MODE_OFF; + } + } + break; + } +} + +const char D_801DFA34[][4] = { + "all", "a", "a", "b", "b", "c", "c", "d", "d", "e", "e", "f", "fa", "fa", "fb", "fb", + "fc", "fc", "fd", "fd", "fe", "fe", "fg", "fg", "fh", "fh", "fi", "fi", "fj", "fj", "fk", "fk", + "f", "g", "g", "h", "h", "i", "i", "all", "all", "a", "b", "c", "d", "e", "f", "g", + "h", "i", "f", "fa", "fb", "fc", "fd", "fe", "ff", "fg", "fh", "fi", "fj", "fk", +}; + +#ifdef NON_MATCHING +// Stack issues +void Play_UpdateMain(PlayState* this) { + Input* input = this->state.input; + u8 freezeFlashTimer; + s32 sp5C = false; + + gSegments[4] = VIRTUAL_TO_PHYSICAL(this->objectCtx.status[this->objectCtx.mainKeepIndex].segment); + gSegments[5] = VIRTUAL_TO_PHYSICAL(this->objectCtx.status[this->objectCtx.subKeepIndex].segment); + gSegments[2] = VIRTUAL_TO_PHYSICAL(this->sceneSegment); + + if (R_PICTO_PHOTO_STATE == PICTO_PHOTO_STATE_PROCESS) { + R_PICTO_PHOTO_STATE = PICTO_PHOTO_STATE_READY; + MsgEvent_SendNullTask(); + Play_TakePictoPhoto(&this->pauseBgPreRender); + R_PICTO_PHOTO_STATE = PICTO_PHOTO_STATE_OFF; + } + Actor_SetMovementScale(this->state.framerateDivisor); + + if (FrameAdvance_Update(&this->frameAdvCtx, &input[1])) { + if ((this->transitionMode == TRANS_MODE_OFF) && (this->transitionTrigger != TRANS_TRIGGER_OFF)) { + this->transitionMode = TRANS_MODE_SETUP; + } + + if (gTrnsnUnkState != 0) { + switch (gTrnsnUnkState) { + case 2: + if (TransitionUnk_Init(&sTrnsnUnk, 10, 7) == NULL) { + gTrnsnUnkState = 0; + } else { + D_801F6D0C = gZBufferPtr; + gTrnsnUnkState = 3; + Game_SetFramerateDivisor(&this->state, 1); + } + break; + + case 3: + func_801647AC(&sTrnsnUnk); + break; + } + } + Play_UpdateTransition(this); + if (gTrnsnUnkState != 3) { + if ((gSaveContext.gameMode == 0) && + (((this->msgCtx.msgMode == 0)) || + ((this->msgCtx.currentTextId == 0xFF) && (this->msgCtx.msgMode == 0x42) && + (this->msgCtx.unk12020 == 0x41)) || + ((this->msgCtx.currentTextId >= 0x100) && (this->msgCtx.currentTextId <= 0x200))) && + (this->gameOverCtx.state == GAMEOVER_INACTIVE)) { + KaleidoSetup_Update(this); + } + + sp5C = (this->pauseCtx.state != 0) || (this->pauseCtx.debugEditor != DEBUG_EDITOR_NONE); + + AnimationContext_Reset(&this->animationCtx); + Object_UpdateBank(&this->objectCtx); + + if (!sp5C && (IREG(72) == 0)) { + this->gameplayFrames++; + Rumble_SetUpdateEnabled(true); + if ((this->actorCtx.freezeFlashTimer != 0) && (this->actorCtx.freezeFlashTimer-- < 5)) { + freezeFlashTimer = this->actorCtx.freezeFlashTimer; + if ((freezeFlashTimer > 0) && ((freezeFlashTimer % 2) != 0)) { + this->envCtx.fillScreen = true; + this->envCtx.screenFillColor[0] = this->envCtx.screenFillColor[1] = + this->envCtx.screenFillColor[2] = 150; + this->envCtx.screenFillColor[3] = 80; + } else { + this->envCtx.fillScreen = false; + } + } else { + Room_HandleLoadCallbacks(this, &this->roomCtx); + CollisionCheck_AT(this, &this->colChkCtx); + CollisionCheck_OC(this, &this->colChkCtx); + CollisionCheck_Damage(this, &this->colChkCtx); + CollisionCheck_ClearContext(this, &this->colChkCtx); + if (!this->haltAllActors) { + Actor_UpdateAll(this, &this->actorCtx); + } + Cutscene_Update1(this, &this->csCtx); + Cutscene_Update2(this, &this->csCtx); + Effect_UpdateAll(this); + EffectSS_UpdateAllParticles(this); + EffFootmark_Update(this); + } + } else { + Rumble_SetUpdateEnabled(false); + } + + Room_nop8012D510(this, &this->roomCtx.curRoom, &input[1], 0); + Room_nop8012D510(this, &this->roomCtx.prevRoom, &input[1], 1); + SkyboxDraw_Update(&this->skyboxCtx); + + if ((this->pauseCtx.state != 0) || (this->pauseCtx.debugEditor != DEBUG_EDITOR_NONE)) { + KaleidoScopeCall_Update(this); + } else if (this->gameOverCtx.state != GAMEOVER_INACTIVE) { + GameOver_Update(this); + } + + Message_Update(this); + Interface_Update(this); + AnimationContext_Update(this, &this->animationCtx); + SoundSource_UpdateAll(this); + ShrinkWindow_Update(this->state.framerateDivisor); + TransitionFade_Update(&this->unk_18E48, this->state.framerateDivisor); + } + } + + if (!sp5C || gDbgCamEnabled) { + s32 sp54; // camId + Vec3s sp48; // InputDir + + this->nextCamera = this->activeCamId; + for (sp54 = 0; sp54 < 4; sp54++) { + if ((sp54 != this->nextCamera) && (this->cameraPtrs[sp54] != NULL)) { + Camera_Update(&sp48, this->cameraPtrs[sp54]); + } + } + Camera_Update(&sp48, this->cameraPtrs[this->nextCamera]); + } + + if (!sp5C) { + Play_UpdateWaterCamera(this, this->cameraPtrs[this->nextCamera]); + Distortion_Update(); + } + + Environment_Update(this, &this->envCtx, &this->lightCtx, &this->pauseCtx, &this->msgCtx, &this->gameOverCtx, + this->state.gfxCtx); + + if (this->sramCtx.status != 0) { + if (gSaveContext.save.isOwlSave) { + func_80147198(&this->sramCtx); + } else { + func_80147068(&this->sramCtx); + } + } +} +#else +void Play_UpdateMain(PlayState* this); +#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/Play_UpdateMain.s") +#endif + +void Play_Update(PlayState* this) { + if (!sBombersNotebookOpen) { + if (this->pauseCtx.bombersNotebookOpen) { + sBombersNotebookOpen = true; + sBombersNotebook.unk_00 = 0; + } + } else if (CHECK_BTN_ALL(CONTROLLER1(&this->state)->press.button, BTN_L) || + CHECK_BTN_ALL(CONTROLLER1(&this->state)->press.button, BTN_B) || + CHECK_BTN_ALL(CONTROLLER1(&this->state)->press.button, BTN_START) || (gIrqMgrResetStatus != 0)) { + sBombersNotebookOpen = false; + this->pauseCtx.bombersNotebookOpen = false; + sBombersNotebook.unk_00 = 0; + this->msgCtx.msgLength = 0; + this->msgCtx.msgMode = 0; + this->msgCtx.currentTextId = 0; + this->msgCtx.stateTimer = 0; + play_sound(NA_SE_SY_CANCEL); + } + if (sBombersNotebookOpen) { + BombersNotebook_Update(this, &sBombersNotebook, this->state.input); + Message_Update(this); + } else { + Play_UpdateMain(this); + } +} + +void Play_PostWorldDraw(PlayState* this) { + if ((this->pauseCtx.state != 0) || (this->pauseCtx.debugEditor != DEBUG_EDITOR_NONE)) { + KaleidoScopeCall_Draw(this); + } + + if (gSaveContext.gameMode == 0) { + Interface_Draw(this); + } + + if (((this->pauseCtx.state == 0) && (this->pauseCtx.debugEditor == DEBUG_EDITOR_NONE)) || + (this->msgCtx.currentTextId != 0xFF)) { + Message_Draw(this); + } + + if (this->gameOverCtx.state != GAMEOVER_INACTIVE) { + GameOver_FadeLights(this); + } + + // Shrink the whole screen display (at the end of First and Second Day by default) + if (gSaveContext.screenScaleFlag) { + Gfx* nextOpa; + Gfx* opa; + GraphicsContext* gfxCtx = this->state.gfxCtx; + + D_801F6D4C->scale = gSaveContext.screenScale / 1000.0f; + + OPEN_DISPS(gfxCtx); + + opa = POLY_OPA_DISP; + nextOpa = Graph_GfxPlusOne(opa); + gSPDisplayList(OVERLAY_DISP++, nextOpa); + + func_80141778(D_801F6D4C, &nextOpa, this->unk_18E60, gfxCtx); + + gSPEndDisplayList(nextOpa++); + Graph_BranchDlist(opa, nextOpa); + POLY_OPA_DISP = nextOpa; + + CLOSE_DISPS(gfxCtx); + } +} + +#ifdef NON_MATCHING +// Stack issues and 1 small issue around Play_PostWorldDraw +void Play_DrawMain(PlayState* this) { + GraphicsContext* gfxCtx = this->state.gfxCtx; + Lights* sp268; + Vec3f sp25C; + u8 sp25B = false; + + if (R_PAUSE_BG_PRERENDER_STATE >= PAUSE_BG_PRERENDER_UNK4) { + PreRender_ApplyFiltersSlowlyDestroy(&this->pauseBgPreRender); + R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_OFF; + } + + if ((R_PAUSE_BG_PRERENDER_STATE <= PAUSE_BG_PRERENDER_SETUP) && (gTrnsnUnkState < 2)) { + if (this->skyboxCtx.skyboxShouldDraw || (this->roomCtx.curRoom.mesh->type0.type == 1)) { + func_8012CF0C(gfxCtx, false, true, 0, 0, 0); + } else { + func_8012CF0C(gfxCtx, true, true, this->lightCtx.fogColor.r, this->lightCtx.fogColor.g, + this->lightCtx.fogColor.b); + } + } else { + func_8012CF0C(gfxCtx, false, false, 0, 0, 0); + } + + OPEN_DISPS(gfxCtx); + + gSegments[4] = VIRTUAL_TO_PHYSICAL(this->objectCtx.status[this->objectCtx.mainKeepIndex].segment); + gSegments[5] = VIRTUAL_TO_PHYSICAL(this->objectCtx.status[this->objectCtx.subKeepIndex].segment); + gSegments[2] = VIRTUAL_TO_PHYSICAL(this->sceneSegment); + + gSPSegment(POLY_OPA_DISP++, 0x04, this->objectCtx.status[this->objectCtx.mainKeepIndex].segment); + gSPSegment(POLY_XLU_DISP++, 0x04, this->objectCtx.status[this->objectCtx.mainKeepIndex].segment); + gSPSegment(OVERLAY_DISP++, 0x04, this->objectCtx.status[this->objectCtx.mainKeepIndex].segment); + + gSPSegment(POLY_OPA_DISP++, 0x05, this->objectCtx.status[this->objectCtx.subKeepIndex].segment); + gSPSegment(POLY_XLU_DISP++, 0x05, this->objectCtx.status[this->objectCtx.subKeepIndex].segment); + gSPSegment(OVERLAY_DISP++, 0x05, this->objectCtx.status[this->objectCtx.subKeepIndex].segment); + + gSPSegment(POLY_OPA_DISP++, 0x02, this->sceneSegment); + gSPSegment(POLY_XLU_DISP++, 0x02, this->sceneSegment); + gSPSegment(OVERLAY_DISP++, 0x02, this->sceneSegment); + + if (1) { + f32 var_fv0; // zFar + + ShrinkWindow_Draw(gfxCtx); + + POLY_OPA_DISP = Play_SetFog(this, POLY_OPA_DISP); + POLY_XLU_DISP = Play_SetFog(this, POLY_XLU_DISP); + + // zFar + var_fv0 = this->lightCtx.zFar; + if (var_fv0 > 12800.0f) { + var_fv0 = 12800.0f; + } + + View_SetPerspective(&this->view, this->view.fovy, this->view.zNear, var_fv0); + + View_Apply(&this->view, 0xF); + + // The billboard matrix temporarily stores the viewing matrix + Matrix_MtxToMtxF(&this->view.viewing, &this->billboardMtxF); + Matrix_MtxToMtxF(&this->view.projection, &this->viewProjectionMtxF); + + this->projectionMtxFDiagonal.x = this->viewProjectionMtxF.xx; + this->projectionMtxFDiagonal.y = this->viewProjectionMtxF.yy; + this->projectionMtxFDiagonal.z = -this->viewProjectionMtxF.zz; + + SkinMatrix_MtxFMtxFMult(&this->viewProjectionMtxF, &this->billboardMtxF, &this->viewProjectionMtxF); + + this->billboardMtxF.mf[3][2] = this->billboardMtxF.mf[3][1] = this->billboardMtxF.mf[3][0] = + this->billboardMtxF.mf[2][3] = this->billboardMtxF.mf[1][3] = this->billboardMtxF.mf[0][3] = 0.0f; + + Matrix_Transpose(&this->billboardMtxF); + + this->billboardMtx = GRAPH_ALLOC(this->state.gfxCtx, 2 * sizeof(Mtx)); + + Matrix_MtxFToMtx(&this->billboardMtxF, this->billboardMtx); + Matrix_RotateYF(BINANG_TO_RAD((s16)(Camera_GetCamDirYaw(GET_ACTIVE_CAM(this)) + 0x8000)), MTXMODE_NEW); + Matrix_ToMtx(this->billboardMtx + 1); + + gSPSegment(POLY_OPA_DISP++, 0x01, this->billboardMtx); + gSPSegment(POLY_XLU_DISP++, 0x01, this->billboardMtx); + gSPSegment(OVERLAY_DISP++, 0x01, this->billboardMtx); + + if (1) { + Gfx* sp218; + Gfx* sp214 = POLY_OPA_DISP; + + sp218 = Graph_GfxPlusOne(sp214); + gSPDisplayList(OVERLAY_DISP++, sp218); + + if (((this->transitionMode == TRANS_MODE_INSTANCE_RUNNING) || + (this->transitionMode == TRANS_TYPE_INSTANT)) || + D_801D0D54) { + View spA8; + + View_Init(&spA8, gfxCtx); + spA8.flags = 0xA; + + SET_FULLSCREEN_VIEWPORT(&spA8); + + View_ApplyTo(&spA8, &sp218); + this->transitionCtx.draw(&this->transitionCtx.instanceData, &sp218); + } + + TransitionFade_Draw(&this->unk_18E48, &sp218); + + if (gVisMonoColor.a != 0) { + sVisMono.primColor.rgba = gVisMonoColor.rgba; + VisMono_Draw(&sVisMono, &sp218); + } + + gSPEndDisplayList(sp218++); + Graph_BranchDlist(sp214, sp218); + POLY_OPA_DISP = sp218; + } + + if (gTrnsnUnkState == 3) { + Gfx* sp90 = POLY_OPA_DISP; + + TransitionUnk_Draw(&sTrnsnUnk, &sp90); + POLY_OPA_DISP = sp90; + sp25B = true; + goto PostWorldDraw; + } + + PreRender_SetValues(&this->pauseBgPreRender, D_801FBBCC, D_801FBBCE, gfxCtx->curFrameBuffer, gfxCtx->zbuffer); + + if (R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_PROCESS) { + MsgEvent_SendNullTask(); + if (!gSaveContext.screenScaleFlag) { + PreRender_ApplyFiltersSlowlyInit(&this->pauseBgPreRender); + } + R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_READY; + SREG(33) |= 1; + } else { + if (R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_READY) { + Gfx* sp8C = POLY_OPA_DISP; + + if (this->pauseBgPreRender.unk_4D == 2) { + func_80170B28(&this->pauseBgPreRender, &sp8C); + } else { + func_80170798(&this->pauseBgPreRender, &sp8C); + } + + gSPDisplayList(sp8C++, D_0E000000.syncSegments); + POLY_OPA_DISP = sp8C; + sp25B = true; + goto PostWorldDraw; + } + + if (this->unk_18844 == 0) { + if (1) { + if (this->skyboxId && !this->envCtx.skyboxDisabled) { + if ((this->skyboxId == 1) || (this->skyboxId == 3)) { + Environment_UpdateSkybox(this->skyboxId, &this->envCtx, &this->skyboxCtx); + SkyboxDraw_Draw(&this->skyboxCtx, gfxCtx, this->skyboxId, this->envCtx.unk_13, + this->view.eye.x, this->view.eye.y, this->view.eye.z); + } else if (!this->skyboxCtx.skyboxShouldDraw) { + SkyboxDraw_Draw(&this->skyboxCtx, gfxCtx, this->skyboxId, 0, this->view.eye.x, + this->view.eye.y, this->view.eye.z); + } + } + + func_800FE390(this); + } + + sp268 = LightContext_NewLights(&this->lightCtx, gfxCtx); + + if (this->roomCtx.curRoom.enablePosLights || (MREG(93) != 0)) { + sp268->enablePosLights = true; + } + + Lights_BindAll(sp268, this->lightCtx.listHead, NULL, this); + Lights_Draw(sp268, gfxCtx); + + if (1) { + u32 roomDrawFlags = ((1) ? 1 : 0) | (((void)0, 1) ? 2 : 0); // FAKE: + + Scene_Draw(this); + if (this->roomCtx.unk78) { + Room_Draw(this, &this->roomCtx.curRoom, roomDrawFlags & 3); + Room_Draw(this, &this->roomCtx.prevRoom, roomDrawFlags & 3); + } + } + + if (this->skyboxCtx.skyboxShouldDraw) { + Vec3f sp78; + + if (1) {} + Camera_GetQuakeOffset(&sp78, GET_ACTIVE_CAM(this)); + SkyboxDraw_Draw(&this->skyboxCtx, gfxCtx, this->skyboxId, 0, this->view.eye.x + sp78.x, + this->view.eye.y + sp78.y, this->view.eye.z + sp78.z); + } + + // envCtx.precipitation[PRECIP_RAIN_CUR] + if (this->envCtx.unk_F2[1] != 0) { + Environment_DrawRain(this, &this->view, gfxCtx); + } + } + + if (1) { + Environment_FillScreen(gfxCtx, 0, 0, 0, this->bgCoverAlpha, 1); + } + + if (1) { + Actor_DrawAll(this, &this->actorCtx); + } + + if (1) { + if (!this->envCtx.sunMoonDisabled) { + sp25C.x = this->view.eye.x + this->envCtx.sunPos.x; + sp25C.y = this->view.eye.y + this->envCtx.sunPos.y; + sp25C.z = this->view.eye.z + this->envCtx.sunPos.z; + Environment_DrawSunLensFlare(this, &this->envCtx, &this->view, gfxCtx, sp25C); + } + + Environment_DrawCustomLensFlare(this); + } + + if (1) { + if (R_PLAY_FILL_SCREEN_ON) { + Environment_FillScreen(gfxCtx, R_PLAY_FILL_SCREEN_R, R_PLAY_FILL_SCREEN_G, R_PLAY_FILL_SCREEN_B, + R_PLAY_FILL_SCREEN_ALPHA, 3); + } + + switch (this->envCtx.fillScreen) { + case 1: + Environment_FillScreen(gfxCtx, this->envCtx.screenFillColor[0], this->envCtx.screenFillColor[1], + this->envCtx.screenFillColor[2], this->envCtx.screenFillColor[3], 3); + break; + + default: + break; + } + } + + if (1) { + if (this->envCtx.sandstormState != 0) { + Environment_DrawSandstorm(this, this->envCtx.sandstormState); + } + } + + if (this->worldCoverAlpha != 0) { + Environment_FillScreen(gfxCtx, 0, 0, 0, this->worldCoverAlpha, 3); + } + + if (1) { + DebugDisplay_DrawObjects(this); + } + + Play_DrawMotionBlur(this); + + if (((R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_SETUP) || (gTrnsnUnkState == 1)) || + (R_PICTO_PHOTO_STATE == PICTO_PHOTO_STATE_SETUP)) { + Gfx* sp74; + Gfx* sp70 = POLY_OPA_DISP; + + sp74 = Graph_GfxPlusOne(sp70); + gSPDisplayList(OVERLAY_DISP++, sp74); + this->pauseBgPreRender.fbuf = gfxCtx->curFrameBuffer; + + if (R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_SETUP) { + R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_PROCESS; + this->pauseBgPreRender.fbufSave = gfxCtx->zbuffer; + this->pauseBgPreRender.cvgSave = this->unk_18E58; + } else if (R_PICTO_PHOTO_STATE == PICTO_PHOTO_STATE_SETUP) { + R_PICTO_PHOTO_STATE = PICTO_PHOTO_STATE_PROCESS; + this->pauseBgPreRender.fbufSave = gfxCtx->zbuffer; + this->pauseBgPreRender.cvgSave = this->unk_18E58; + } else { + gTrnsnUnkState = 2; + this->pauseBgPreRender.fbufSave = gfxCtx->zbuffer; + this->pauseBgPreRender.cvgSave = NULL; + } + + func_801705B4(&this->pauseBgPreRender, &sp74); + + if (this->pauseBgPreRender.cvgSave != NULL) { + func_80170730(&this->pauseBgPreRender, &sp74); + } + + gSPEndDisplayList(sp74++); + Graph_BranchDlist(sp70, sp74); + POLY_OPA_DISP = sp74; + this->unk_18B49 = 2; + SREG(33) |= 1; + } else { + PostWorldDraw: + if (1) { + Play_PostWorldDraw(this); + } + } + } + } + + if ((this->view.unk164 != 0) && !gDbgCamEnabled) { + Vec3s sp4C; + + Camera_Update(&sp4C, GET_ACTIVE_CAM(this)); + View_UpdateViewingMatrix(&this->view); + this->view.unk164 = 0; + if ((this->skyboxId != 0) && !this->envCtx.skyboxDisabled) { + SkyboxDraw_UpdateMatrix(&this->skyboxCtx, this->view.eye.x, this->view.eye.y, this->view.eye.z); + } + } + + if (!sp25B) { + func_800FE3E0(this); + } + + CLOSE_DISPS(this->state.gfxCtx); +} +#else +void Play_DrawMain(PlayState* this); +#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/Play_DrawMain.s") +#endif + +void Play_Draw(PlayState* this) { + GraphicsContext* gfxCtx = this->state.gfxCtx; + + { + GraphicsContext* gfxCtx2 = this->state.gfxCtx; + + if (sBombersNotebookOpen) { + if (D_801FBBD4 != 1) { + MsgEvent_SendNullTask(); + func_80178818(); + gfxCtx2->curFrameBuffer = SysCfb_GetFbPtr(gfxCtx2->framebufferIndex % 2); + gfxCtx2->zbuffer = SysCfb_GetZBuffer(); + gfxCtx2->viMode = D_801FBB88; + gfxCtx2->viConfigFeatures = gViConfigFeatures; + gfxCtx2->xScale = gViConfigXScale; + gfxCtx2->yScale = gViConfigYScale; + gfxCtx2->updateViMode = true; + } + } else { + if (D_801FBBD4 != 0) { + MsgEvent_SendNullTask(); + func_80178750(); + gfxCtx2->curFrameBuffer = SysCfb_GetFbPtr(gfxCtx2->framebufferIndex % 2); + gfxCtx2->zbuffer = SysCfb_GetZBuffer(); + gfxCtx2->viMode = D_801FBB88; + gfxCtx2->viConfigFeatures = gViConfigFeatures; + gfxCtx2->xScale = gViConfigXScale; + gfxCtx2->yScale = gViConfigYScale; + gfxCtx2->updateViMode = true; + } + } + } + + if (sBombersNotebookOpen && ((SREG(2) != 2) || (gZBufferPtr == NULL))) { + BombersNotebook_Draw(&sBombersNotebook, gfxCtx); + Message_Draw(this); + } else { + Play_DrawMain(this); + } +} + +void Play_Main(GameState* thisx) { + static Input* prevInput = NULL; + PlayState* this = (PlayState*)thisx; + + prevInput = CONTROLLER1(&this->state); + DebugDisplay_Init(); + + { + GraphicsContext* gfxCtx = this->state.gfxCtx; + + if (1) { + this->state.gfxCtx = NULL; + } + Play_Update(this); + this->state.gfxCtx = gfxCtx; + } + + { + Input input = *CONTROLLER1(&this->state); + + if (1) { + *CONTROLLER1(&this->state) = D_801F6C18; + } + Play_Draw(this); + *CONTROLLER1(&this->state) = input; + } + + ActorCutscene_Update(); + ActorCutscene_ClearWaiting(); +} s32 Play_InCsMode(PlayState* this) { return (this->csCtx.state != 0) || Player_InCsMode(this); } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_80169100.s") +f32 Play_GetFloorSurfaceImpl(PlayState* this, MtxF* mtx, CollisionPoly** poly, s32* bgId, Vec3f* pos) { + f32 floorHeight = BgCheck_EntityRaycastFloor3(&this->colCtx, poly, bgId, pos); -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_801691F0.s") + if (floorHeight > BGCHECK_Y_MIN) { + func_800C0094(*poly, pos->x, floorHeight, pos->z, mtx); + } else { + mtx->xy = 0.0f; + mtx->zx = 0.0f; + mtx->yx = 0.0f; + mtx->xx = 0.0f; + mtx->wz = 0.0f; + mtx->xz = 0.0f; + mtx->wy = 0.0f; + mtx->wx = 0.0f; + mtx->zz = 0.0f; + mtx->yz = 0.0f; + mtx->zy = 0.0f; + mtx->yy = 1.0f; + mtx->xw = pos->x; + mtx->yw = pos->y; + mtx->zw = pos->z; + mtx->ww = 1.0f; + } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/Play_LoadScene.s") + return floorHeight; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_8016927C.s") +void Play_GetFloorSurface(PlayState* this, MtxF* mtx, Vec3f* pos) { + CollisionPoly* poly; + s32 bgId; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/func_801692C4.s") + Play_GetFloorSurfaceImpl(this, mtx, &poly, &bgId, pos); +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/Play_SceneInit.s") +void* Play_LoadFile(PlayState* this, RomFile* entry) { + size_t size = entry->vromEnd - entry->vromStart; + void* allocp = THA_AllocEndAlign16(&this->state.heap, size); + + DmaMgr_SendRequest0(allocp, entry->vromStart, size); + + return allocp; +} + +void Play_InitEnvironment(PlayState* this, s16 skyboxId) { + Skybox_Init(&this->state, &this->skyboxCtx, skyboxId); + Environment_Init(this, &this->envCtx, 0); +} + +void Play_InitScene(PlayState* this, s32 spawn) { + this->curSpawn = spawn; + this->linkActorEntry = NULL; + this->actorCsCamList = NULL; + this->setupEntranceList = NULL; + this->setupExitList = NULL; + this->naviQuestHints = NULL; + this->setupPathList = NULL; + this->sceneMaterialAnims = NULL; + this->roomCtx.unk74 = NULL; + this->numSetupActors = 0; + Object_InitBank(&this->state, &this->objectCtx); + LightContext_Init(this, &this->lightCtx); + Door_InitContext(&this->state, &this->doorCtx); + Room_Init(this, &this->roomCtx); + gSaveContext.worldMapArea = 0; + Scene_ProcessHeader(this, this->sceneSegment); + Play_InitEnvironment(this, this->skyboxId); +} + +void Play_SpawnScene(PlayState* this, s32 sceneId, s32 spawn) { + s32 pad; + SceneTableEntry* scene = &gSceneTable[sceneId]; + + scene->unk_D = 0; + this->loadedScene = scene; + this->sceneId = sceneId; + this->sceneConfig = scene->drawConfig; + this->sceneSegment = Play_LoadFile(this, &scene->segment); + scene->unk_D = 0; + gSegments[2] = VIRTUAL_TO_PHYSICAL(this->sceneSegment); + Play_InitScene(this, spawn); + Room_AllocateAndLoad(this, &this->roomCtx); +} void Play_GetScreenPos(PlayState* this, Vec3f* worldPos, Vec3f* screenPos) { f32 invW; @@ -379,9 +1888,8 @@ void Play_SetupRespawnPoint(GameState* thisx, s32 respawnMode, s32 playerParams) Player* player = GET_PLAYER(this); if (this->sceneId != SCENE_KAKUSIANA) { // Grottos - Play_SetRespawnData(&this->state, respawnMode, (u16)((void)0, gSaveContext.save.entrance), - this->roomCtx.curRoom.num, playerParams, &player->actor.world.pos, - player->actor.shape.rot.y); + Play_SetRespawnData(&this->state, respawnMode, ((void)0, gSaveContext.save.entrance), this->roomCtx.curRoom.num, + playerParams, &player->actor.world.pos, player->actor.shape.rot.y); } } @@ -405,7 +1913,7 @@ void func_80169EFC(GameState* thisx) { gSaveContext.respawnFlag = 1; func_80169ECC(this); this->transitionTrigger = TRANS_TRIGGER_START; - this->transitionType = TRANS_TYPE_02; + this->transitionType = TRANS_TYPE_FADE_BLACK; } // Gameplay_LoadToLastEntrance ? @@ -417,7 +1925,7 @@ void func_80169F78(GameState* thisx) { gSaveContext.respawnFlag = -1; func_80169ECC(this); this->transitionTrigger = TRANS_TRIGGER_START; - this->transitionType = TRANS_TYPE_02; + this->transitionType = TRANS_TYPE_FADE_BLACK; } // Gameplay_TriggerRespawn ? @@ -476,7 +1984,7 @@ s32 func_8016A02C(GameState* thisx, Actor* actor, s16* yaw) { /** * @brief Tests if \p pos is underwater. * - * @param[in] play PlayState + * @param[in] this PlayState * @param[in] pos position to test * @return true if inside a waterbox and not above a void. */ @@ -503,8 +2011,7 @@ s32 Play_IsDebugCamEnabled(void) { } // A mapping from playerActorCsIds to sGlobalCamDataSettings indices. -extern s16 D_801D0D64[]; -// s16 D_801D0D64[] = { -3, -2, -4, -5, -7, -11, -8, -9, -6, -16 }; +s16 D_801D0D64[] = { -3, -2, -4, -5, -7, -11, -8, -9, -6, -16 }; // Used by Player /** @@ -549,4 +2056,272 @@ void Play_FillScreen(GameState* thisx, s16 fillScreenOn, u8 red, u8 green, u8 bl R_PLAY_FILL_SCREEN_ALPHA = alpha; } -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play/Play_Init.s") +void Play_Init(GameState* thisx) { + PlayState* this = (PlayState*)thisx; + GraphicsContext* gfxCtx = this->state.gfxCtx; + s32 pad; + uintptr_t zAlloc; + s32 zAllocSize; + Player* player; + s32 i; + s32 spawn; + u8 sceneLayer; + s32 scene; + + if ((gSaveContext.respawnFlag == -4) || (gSaveContext.respawnFlag == -0x63)) { + if (CHECK_EVENTINF(EVENTINF_27)) { + CLEAR_EVENTINF(EVENTINF_27); + STOP_GAMESTATE(&this->state); + SET_NEXT_GAMESTATE(&this->state, DayTelop_Init, sizeof(DayTelopState)); + return; + } + + gSaveContext.unk_3CA7 = 1; + if (gSaveContext.respawnFlag == -0x63) { + gSaveContext.respawnFlag = 2; + } + } else { + gSaveContext.unk_3CA7 = 0; + } + + if (gSaveContext.save.entrance == -1) { + gSaveContext.save.entrance = 0; + STOP_GAMESTATE(&this->state); + SET_NEXT_GAMESTATE(&this->state, TitleSetup_Init, sizeof(TitleSetupState)); + return; + } + + if ((gSaveContext.nextCutsceneIndex == 0xFFEF) || (gSaveContext.nextCutsceneIndex == 0xFFF0)) { + scene = ((void)0, gSaveContext.save.entrance) >> 9; + spawn = (((void)0, gSaveContext.save.entrance) >> 4) & 0x1F; + + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_33_80)) { + if (scene == ENTR_SCENE_MOUNTAIN_VILLAGE_WINTER) { + scene = ENTR_SCENE_MOUNTAIN_VILLAGE_SPRING; + } else if (scene == ENTR_SCENE_GORON_VILLAGE_WINTER) { + scene = ENTR_SCENE_GORON_VILLAGE_SPRING; + } else if (scene == ENTR_SCENE_PATH_TO_GORON_VILLAGE_WINTER) { + scene = ENTR_SCENE_PATH_TO_GORON_VILLAGE_SPRING; + } else if ((scene == ENTR_SCENE_SNOWHEAD) || (scene == ENTR_SCENE_PATH_TO_SNOWHEAD) || + (scene == ENTR_SCENE_PATH_TO_MOUNTAIN_VILLAGE) || (scene == ENTR_SCENE_GORON_SHRINE) || + (scene == ENTR_SCENE_GORON_RACETRACK)) { + gSaveContext.nextCutsceneIndex = 0xFFF0; + } + } + + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_20_02)) { + if (scene == ENTR_SCENE_SOUTHERN_SWAMP_POISONED) { + scene = ENTR_SCENE_SOUTHERN_SWAMP_CLEARED; + } else if (scene == ENTR_SCENE_WOODFALL) { + gSaveContext.nextCutsceneIndex = 0xFFF1; + } + } + + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_52_20) && (scene == ENTR_SCENE_IKANA_CANYON)) { + gSaveContext.nextCutsceneIndex = 0xFFF2; + } + + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_55_80) && + ((scene == ENTR_SCENE_GREAT_BAY_COAST) || (scene == ENTR_SCENE_ZORA_CAPE))) { + gSaveContext.nextCutsceneIndex = 0xFFF0; + } + + // "First cycle" Termina Field + if (INV_CONTENT(ITEM_OCARINA) != ITEM_OCARINA) { + if ((scene == ENTR_SCENE_TERMINA_FIELD) && + (((void)0, gSaveContext.save.entrance) != ENTRANCE(TERMINA_FIELD, 10))) { + gSaveContext.nextCutsceneIndex = 0xFFF4; + } + } + //! FAKE: + gSaveContext.save.entrance = + Entrance_Create(((void)0, scene), spawn, ((void)0, gSaveContext.save.entrance) & 0xF); + } + + GameState_Realloc(&this->state, 0); + KaleidoManager_Init(this); + ShrinkWindow_Init(); + View_Init(&this->view, gfxCtx); + func_801A3EC0(0); + Quake_Init(); + Distortion_Init(this); + + for (i = 0; i < ARRAY_COUNT(this->cameraPtrs); i++) { + this->cameraPtrs[i] = NULL; + } + + Camera_Init(&this->mainCamera, &this->view, &this->colCtx, this); + Camera_ChangeStatus(&this->mainCamera, CAM_STATUS_ACTIVE); + + for (i = 0; i < ARRAY_COUNT(this->subCameras); i++) { + Camera_Init(&this->subCameras[i], &this->view, &this->colCtx, this); + Camera_ChangeStatus(&this->subCameras[i], CAM_STATUS_INACTIVE); + } + + this->cameraPtrs[CAM_ID_MAIN] = &this->mainCamera; + this->cameraPtrs[CAM_ID_MAIN]->uid = CAM_ID_MAIN; + this->activeCamId = CAM_ID_MAIN; + + func_800DFF18(&this->mainCamera, 0x7F); + Sram_Alloc(&this->state, &this->sramCtx); + Regs_InitData(this); + Message_Init(this); + GameOver_Init(this); + SoundSource_InitAll(this); + EffFootmark_Init(this); + Effect_Init(this); + EffectSS_Init(this, 100); + CollisionCheck_InitContext(this, &this->colChkCtx); + AnimationContext_Reset(&this->animationCtx); + Cutscene_Init(this, &this->csCtx); + + if (gSaveContext.nextCutsceneIndex != 0xFFEF) { + gSaveContext.save.cutscene = gSaveContext.nextCutsceneIndex; + gSaveContext.nextCutsceneIndex = 0xFFEF; + } + + if (gSaveContext.save.cutscene == 0xFFFD) { + gSaveContext.save.cutscene = 0; + } + + if (gSaveContext.nextDayTime != 0xFFFF) { + gSaveContext.save.time = gSaveContext.nextDayTime; + gSaveContext.skyboxTime = gSaveContext.nextDayTime; + } + + if ((gSaveContext.save.time >= CLOCK_TIME(18, 0)) || (gSaveContext.save.time < CLOCK_TIME(6, 30))) { + gSaveContext.save.isNight = true; + } else { + gSaveContext.save.isNight = false; + } + + func_800EDDB0(this); + + if (((gSaveContext.gameMode != 0) && (gSaveContext.gameMode != 1)) || (gSaveContext.save.cutscene >= 0xFFF0)) { + gSaveContext.unk_3DC0 = 0; + Magic_Reset(this); + gSaveContext.sceneLayer = (gSaveContext.save.cutscene & 0xF) + 1; + + // Set saved cutscene to 0 so it doesn't immediately play, but instead let the `CutsceneManager` handle it. + gSaveContext.save.cutscene = 0; + } else { + gSaveContext.sceneLayer = 0; + } + + sceneLayer = gSaveContext.sceneLayer; + + Play_SpawnScene( + this, Entrance_GetSceneIdAbsolute(((void)0, gSaveContext.save.entrance) + ((void)0, gSaveContext.sceneLayer)), + Entrance_GetSpawnNum(((void)0, gSaveContext.save.entrance) + ((void)0, gSaveContext.sceneLayer))); + KaleidoScopeCall_Init(this); + Interface_Init(this); + + if (gSaveContext.nextDayTime != 0xFFFF) { + if (gSaveContext.nextDayTime == 0x8000) { + gSaveContext.save.day++; + gSaveContext.save.daysElapsed++; + gSaveContext.dogIsLost = true; + gSaveContext.nextDayTime = -2; + } else { + gSaveContext.nextDayTime = -3; + } + } + + Play_InitMotionBlur(); + + R_PAUSE_BG_PRERENDER_STATE = PAUSE_BG_PRERENDER_OFF; + R_PICTO_PHOTO_STATE = PICTO_PHOTO_STATE_OFF; + + PreRender_Init(&this->pauseBgPreRender); + PreRender_SetValuesSave(&this->pauseBgPreRender, D_801FBBCC, D_801FBBCE, NULL, NULL, NULL); + PreRender_SetValues(&this->pauseBgPreRender, D_801FBBCC, D_801FBBCE, NULL, NULL); + + this->unk_18E64 = D_801FBB90; + this->pictoPhotoI8 = gPictoPhotoI8; + this->unk_18E68 = D_80784600; + this->unk_18E58 = D_80784600; + this->unk_18E60 = D_80784600; + gTrnsnUnkState = 0; + this->transitionMode = TRANS_MODE_OFF; + D_801D0D54 = false; + + FrameAdvance_Init(&this->frameAdvCtx); + Rand_Seed(osGetTime()); + Matrix_Init(&this->state); + + this->state.main = Play_Main; + this->state.destroy = Play_Destroy; + + this->transitionTrigger = TRANS_TRIGGER_END; + this->worldCoverAlpha = 0; + this->bgCoverAlpha = 0; + this->haltAllActors = false; + this->unk_18844 = false; + + if (gSaveContext.gameMode != 1) { + if (gSaveContext.nextTransitionType == TRANS_NEXT_TYPE_DEFAULT) { + this->transitionType = + (Entrance_GetTransitionFlags(((void)0, gSaveContext.save.entrance) + sceneLayer) >> 7) & 0x7F; + } else { + this->transitionType = gSaveContext.nextTransitionType; + gSaveContext.nextTransitionType = TRANS_NEXT_TYPE_DEFAULT; + } + } else { + this->transitionType = TRANS_TYPE_FADE_BLACK; + } + + TransitionFade_Init(&this->unk_18E48); + TransitionFade_SetType(&this->unk_18E48, 3); + TransitionFade_SetColor(&this->unk_18E48, RGBA8(160, 160, 160, 255)); + TransitionFade_Start(&this->unk_18E48); + VisMono_Init(&sVisMono); + + gVisMonoColor.a = 0; + D_801F6D4C = &D_801F6D38; + func_80140E80(D_801F6D4C); + D_801F6D4C->lodProportion = 0.0f; + D_801F6D4C->mode = 1; + D_801F6D4C->primColor.r = 0; + D_801F6D4C->primColor.g = 0; + D_801F6D4C->primColor.b = 0; + D_801F6D4C->primColor.a = 0; + D_801F6D4C->envColor.r = 0; + D_801F6D4C->envColor.g = 0; + D_801F6D4C->envColor.b = 0; + D_801F6D4C->envColor.a = 0; + EnvFlags_UnsetAll(this); + THA_GetSize(&this->state.heap); + zAllocSize = THA_GetSize(&this->state.heap); + zAlloc = (uintptr_t)THA_AllocEndAlign16(&this->state.heap, zAllocSize); + ZeldaArena_Init(((zAlloc + 8) & ~0xF), (zAllocSize - ((zAlloc + 8) & ~0xF)) + zAlloc); //! @bug: Incorrect ALIGN16s + Actor_InitContext(this, &this->actorCtx, this->linkActorEntry); + + while (!Room_HandleLoadCallbacks(this, &this->roomCtx)) {} + + if ((CURRENT_DAY != 0) && ((this->roomCtx.curRoom.unk3 == 1) || (this->roomCtx.curRoom.unk3 == 5))) { + Actor_Spawn(&this->actorCtx, this, ACTOR_EN_TEST4, 0.0f, 0.0f, 0.0f, 0, 0, 0, 0); + } + + player = GET_PLAYER(this); + + Camera_InitPlayerSettings(&this->mainCamera, player); + gDbgCamEnabled = false; + + if ((player->actor.params & 0xFF) != 0xFF) { + Camera_ChangeDataIdx(&this->mainCamera, player->actor.params & 0xFF); + } + + func_800F15D8(&this->mainCamera); + Interface_SetSceneRestrictions(this); + func_800FB758(this); + gSaveContext.seqId = this->sequenceCtx.seqId; + gSaveContext.ambienceId = this->sequenceCtx.ambienceId; + AnimationContext_Update(this, &this->animationCtx); + func_800EDBE0(this); + gSaveContext.respawnFlag = 0; + sBombersNotebookOpen = false; + BombersNotebook_Init(&sBombersNotebook); +} + +//! TODO: fake symbol, remove when BombersNotebook_Update is matching +u16 D_801D0D78[] = { 0, 0, 0, 0 }; diff --git a/src/code/z_play_hireso.c b/src/code/z_play_hireso.c index e429051c88..829fe71f21 100644 --- a/src/code/z_play_hireso.c +++ b/src/code/z_play_hireso.c @@ -16,12 +16,12 @@ #pragma GLOBAL_ASM("asm/non_matchings/code/z_play_hireso/func_8016EA90.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play_hireso/func_8016F1A8.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_play_hireso/BombersNotebook_Draw.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_play_hireso/func_8016F4EC.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play_hireso/func_8016F5A8.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_play_hireso/BombersNotebook_Update.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play_hireso/func_8016FC78.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_play_hireso/BombersNotebook_Init.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play_hireso/func_8016FC98.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_play_hireso/BombersNotebook_Destroy.s") diff --git a/src/code/z_player_lib.c b/src/code/z_player_lib.c index d003252245..51b25268b9 100644 --- a/src/code/z_player_lib.c +++ b/src/code/z_player_lib.c @@ -141,7 +141,7 @@ void func_801229A0(PlayState* play, Player* player) { OPEN_DISPS(play->state.gfxCtx); if ((gSaveContext.jinxTimer != 0) || (player->invincibilityTimer > 0)) { - POLY_OPA_DISP = func_801660B8(play, POLY_OPA_DISP); + POLY_OPA_DISP = Play_SetFog(play, POLY_OPA_DISP); } CLOSE_DISPS(play->state.gfxCtx); diff --git a/src/code/z_quake.c b/src/code/z_quake.c index b57012ce16..8a6b9d73af 100644 --- a/src/code/z_quake.c +++ b/src/code/z_quake.c @@ -668,7 +668,7 @@ void Distortion_Update(void) { zScaleFactor = 1.0f; xyScaleFactor = 1.0f; speedScaleFactor = 1.0f; - } else if (sDistortionRequest.type & DISTORTION_TYPE_4) { + } else if (sDistortionRequest.type & DISTORTION_TYPE_UNDERWATER_ENTRY) { if (sDistortionRequest.state == DISTORTION_SETUP) { countdownMax = sDistortionRequest.countdown; depthPhase = 0x760; @@ -690,7 +690,7 @@ void Distortion_Update(void) { countdownRatio = sDistortionRequest.countdown / (f32)countdownMax; zScaleFactor = xyScaleFactor = countdownRatio; speedScaleFactor = 1.0f; - } else if (sDistortionRequest.type & DISTORTION_TYPE_3) { + } else if (sDistortionRequest.type & DISTORTION_TYPE_ZORA_SWIMMING) { depthPhase = 0x3F0; screenPlanePhase = 0x156; @@ -745,7 +745,7 @@ void Distortion_Update(void) { } zScaleFactor = -xyScaleFactor; speedScaleFactor = 1.0f; - } else if (sDistortionRequest.type & DISTORTION_TYPE_2) { + } else if (sDistortionRequest.type & DISTORTION_TYPE_NON_ZORA_SWIMMING) { depthPhase = 0x3F0; screenPlanePhase = 0x156; diff --git a/src/code/z_rcp.c b/src/code/z_rcp.c index 39f09f1d49..7e15a9bde1 100644 --- a/src/code/z_rcp.c +++ b/src/code/z_rcp.c @@ -778,19 +778,19 @@ Gfx* Gfx_SetFog(Gfx* gfx, s32 r, s32 g, s32 b, s32 a, s32 n, s32 f) { if (n >= 997) { if (n >= 1000) { - gSPFogFactor(gfx + 1, 0, 0); // gSPFogPosition(gfx++, ?, ?) + gSPFogFactor(&gfx[1], 0, 0); // gSPFogPosition(gfx++, ?, ?) } else { - gSPFogFactor(gfx + 1, 0x7FFF, 0x8100); // gSPFogPosition(gfx++, ?, ?) + gSPFogFactor(&gfx[1], 0x7FFF, 0x8100); // gSPFogPosition(gfx++, ?, ?) } } else { if (n < 0) { - gSPFogFactor(gfx + 1, 0, 255); // gSPFogPosition(gfx++, ?, ?) + gSPFogFactor(&gfx[1], 0, 255); // gSPFogPosition(gfx++, ?, ?) } else { - gSPFogPosition(gfx + 1, n, f); + gSPFogPosition(&gfx[1], n, f); } } - return gfx + 2; + return &gfx[2]; } Gfx* Gfx_SetFogWithSync(Gfx* gfx, s32 r, s32 g, s32 b, s32 a, s32 n, s32 f) { @@ -1299,7 +1299,7 @@ void func_8012CF0C(GraphicsContext* gfxCtx, s32 clearFb, s32 clearZb, u8 r, u8 g } void func_8012D374(GraphicsContext* gfxCtx, u8 r, u8 g, u8 b) { - if ((R_PAUSE_BG_PRERENDER_STATE <= PAUSE_BG_PRERENDER_SETUP) && (D_801F6D10 < 2)) { + if ((R_PAUSE_BG_PRERENDER_STATE <= PAUSE_BG_PRERENDER_SETUP) && (gTrnsnUnkState < 2)) { func_8012CF0C(gfxCtx, true, true, r, g, b); } else { func_8012CF0C(gfxCtx, false, false, r, g, b); diff --git a/src/code/z_scene.c b/src/code/z_scene.c index b70dfb1f55..48c3601074 100644 --- a/src/code/z_scene.c +++ b/src/code/z_scene.c @@ -149,7 +149,7 @@ void Scene_HeaderCmdSpawnList(PlayState* play, SceneCmd* cmd) { play->linkActorEntry = (ActorEntry*)Lib_SegmentedToVirtual(cmd->spawnList.segment) + play->setupEntranceList[play->curSpawn].spawn; if ((PLAYER_GET_INITMODE(play->linkActorEntry) == PLAYER_INITMODE_TELESCOPE) || - ((gSaveContext.respawnFlag == 0x02) && + ((gSaveContext.respawnFlag == 2) && (gSaveContext.respawn[RESPAWN_MODE_RETURN].playerParams == PLAYER_PARAMS(0xFF, PLAYER_INITMODE_TELESCOPE)))) { // Skull Kid Object Object_Spawn(&play->objectCtx, OBJECT_STK); @@ -231,7 +231,7 @@ void Scene_HeaderCmdSpecialFiles(PlayState* play, SceneCmd* cmd) { } if (cmd->specialFiles.naviQuestHintFileId != NAVI_QUEST_HINTS_NONE) { - play->naviQuestHints = Play_LoadScene(play, &naviQuestHintFiles[cmd->specialFiles.naviQuestHintFileId - 1]); + play->naviQuestHints = Play_LoadFile(play, &naviQuestHintFiles[cmd->specialFiles.naviQuestHintFileId - 1]); } } @@ -603,5 +603,5 @@ u16 Entrance_Create(s32 scene, s32 spawn, s32 layer) { * Creates an layer 0 entranace from the current entrance and the given spawn. */ u16 Entrance_CreateFromSpawn(s32 spawn) { - return Entrance_Create(gSaveContext.save.entrance >> 9, spawn, 0); + return Entrance_Create((u32)gSaveContext.save.entrance >> 9, spawn, 0); } diff --git a/src/code/z_scene_proc.c b/src/code/z_scene_proc.c index 67f503e589..c899b4d83d 100644 --- a/src/code/z_scene_proc.c +++ b/src/code/z_scene_proc.c @@ -22,7 +22,7 @@ static Gfx sSceneDrawDefaultDL[] = { /** * Executes the current scene draw config handler. */ -void Scene_ExecuteDrawConfig(PlayState* play) { +void Scene_Draw(PlayState* play) { static void (*sceneDrawConfigHandlers[])(PlayState*) = { Scene_DrawConfigDefault, Scene_DrawConfigMatAnim, diff --git a/src/code/z_scene_table.c b/src/code/z_scene_table.c index ed45499663..f80ad551da 100644 --- a/src/code/z_scene_table.c +++ b/src/code/z_scene_table.c @@ -1,10 +1,10 @@ #include "global.h" #define SCENE_ENTRY(name, textId, config) \ - { { SEGMENT_ROM_START(name), SEGMENT_ROM_END(name) }, textId, 0, config, 0 } + { { SEGMENT_ROM_START(name), SEGMENT_ROM_END(name) }, textId, 0, config, 0, 0 } #define SCENE_ENTRY_NONE() \ - { { 0, 0 }, 0, 0, 0, 0 } + { { 0, 0 }, 0, 0, 0, 0, 0 } SceneTableEntry gSceneTable[] = { /* 0x00 */ SCENE_ENTRY(Z2_20SICHITAI2, 0x0116, SCENE_DRAW_CFG_MAT_ANIM), diff --git a/src/code/z_snap.c b/src/code/z_snap.c index 5d37e3eac7..d64cfbe6e8 100644 --- a/src/code/z_snap.c +++ b/src/code/z_snap.c @@ -22,7 +22,7 @@ s32 Snap_RecordPictographedActors(PlayState* play) { gSaveContext.save.pictoFlags1 = 0; if (play->sceneId == SCENE_20SICHITAI) { - Snap_SetFlag(PICTOGRAPH_IN_SWAMP); + Snap_SetFlag(PICTO_VALID_IN_SWAMP); } for (; category < ACTORCAT_MAX; category++) { @@ -155,43 +155,43 @@ s32 Snap_ValidatePictograph(PlayState* play, Actor* actor, s32 flag, Vec3f* pos, // Check distance distance = OLib_Vec3fDist(pos, &camera->eye); if ((distance < distanceMin) || (distanceMax < distance)) { - Snap_SetFlag(PICTOGRAPH_BAD_DISTANCE); - ret = PICTOGRAPH_BAD_DISTANCE; + Snap_SetFlag(PICTO_VALID_BAD_DISTANCE); + ret = PICTO_VALID_BAD_DISTANCE; } // Check rot is facing camera? x = Snap_AbsS(Camera_GetCamDirPitch(camera) + rot->x); y = Snap_AbsS(Camera_GetCamDirYaw(camera) - BINANG_SUB(rot->y, 0x7FFF)); if ((0 < angleRange) && ((angleRange < x) || (angleRange < y))) { - Snap_SetFlag(PICTOGRAPH_BAD_ANGLE); - ret |= PICTOGRAPH_BAD_ANGLE; + Snap_SetFlag(PICTO_VALID_BAD_ANGLE); + ret |= PICTO_VALID_BAD_ANGLE; } // Check in capture region Actor_GetProjectedPos(play, pos, &projectedPos, &distance); // Convert to projected position to device coordinates, shift to be relative to the capture region's top-left corner - x = (s16)PROJECTED_TO_SCREEN_X(projectedPos, distance) - PICTO_CAPTURE_REGION_TOPLEFT_X; - y = (s16)PROJECTED_TO_SCREEN_Y(projectedPos, distance) - PICTO_CAPTURE_REGION_TOPLEFT_Y; + x = (s16)PROJECTED_TO_SCREEN_X(projectedPos, distance) - PICTO_VALID_TOPLEFT_X; + y = (s16)PROJECTED_TO_SCREEN_Y(projectedPos, distance) - PICTO_VALID_TOPLEFT_Y; // checks if the coordinates are within the capture region - if ((x < 0) || (x > PICTO_RESOLUTION_HORIZONTAL) || (y < 0) || (y > PICTO_RESOLUTION_VERTICAL)) { - Snap_SetFlag(PICTOGRAPH_NOT_IN_VIEW); - ret |= PICTOGRAPH_NOT_IN_VIEW; + if ((x < 0) || (x > PICTO_VALID_WIDTH) || (y < 0) || (y > PICTO_VALID_HEIGHT)) { + Snap_SetFlag(PICTO_VALID_NOT_IN_VIEW); + ret |= PICTO_VALID_NOT_IN_VIEW; } // Check not obscured by bg collision if (BgCheck_ProjectileLineTest(&play->colCtx, pos, &camera->eye, &projectedPos, &poly, true, true, true, true, &bgId)) { - Snap_SetFlag(PICTOGRAPH_BEHIND_BG); - ret |= PICTOGRAPH_BEHIND_BG; + Snap_SetFlag(PICTO_VALID_BEHIND_BG); + ret |= PICTO_VALID_BEHIND_BG; } // Check not obscured by actor collision actors[0] = actor; actors[1] = &GET_PLAYER(play)->actor; if (CollisionCheck_LineOCCheck(play, &play->colChkCtx, pos, &camera->eye, actors, 2)) { - Snap_SetFlag(PICTOGRAPH_BEHIND_COLLISION); - ret |= PICTOGRAPH_BEHIND_COLLISION; + Snap_SetFlag(PICTO_VALID_BEHIND_COLLISION); + ret |= PICTO_VALID_BEHIND_COLLISION; } // If all of the above checks pass, set the flag diff --git a/src/code/z_vr_box.c b/src/code/z_vr_box.c index 907004a7a5..f42e66a252 100644 --- a/src/code/z_vr_box.c +++ b/src/code/z_vr_box.c @@ -220,7 +220,7 @@ void Skybox_Setup(GameState* gameState, SkyboxContext* skyboxCtx, s16 skyboxId) // Inverted Stone Tower Temple and Inverted Stone Tower if ((play->sceneId == SCENE_F41) || (play->sceneId == SCENE_INISIE_R)) { - skyboxCtx->rotZ = 3.15000009537f; + skyboxCtx->rotZ = 3.15f; } break; @@ -288,7 +288,7 @@ void func_80143324(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) { } void Skybox_Init(GameState* gameState, SkyboxContext* skyboxCtx, s16 skyboxId) { - skyboxCtx->skyboxShouldDraw = 0; + skyboxCtx->skyboxShouldDraw = false; skyboxCtx->rotX = skyboxCtx->rotY = skyboxCtx->rotZ = 0.0f; Skybox_Setup(gameState, skyboxCtx, skyboxId); diff --git a/src/code/z_vr_box_draw.c b/src/code/z_vr_box_draw.c index 88da288f03..e0884e2707 100644 --- a/src/code/z_vr_box_draw.c +++ b/src/code/z_vr_box_draw.c @@ -63,5 +63,5 @@ void SkyboxDraw_Draw(SkyboxContext* skyboxCtx, GraphicsContext* gfxCtx, s16 skyb CLOSE_DISPS(gfxCtx); } -void SkyboxDraw_Noop(SkyboxContext* skyboxCtx) { +void SkyboxDraw_Update(SkyboxContext* skyboxCtx) { } diff --git a/src/libultra/flash/osFlash.c b/src/libultra/flash/osFlash.c index cd4420c4af..3ed33f45d2 100644 --- a/src/libultra/flash/osFlash.c +++ b/src/libultra/flash/osFlash.c @@ -1,3 +1,4 @@ +#include "prevent_bss_reordering.h" #include "ultra64.h" #include "global.h" diff --git a/src/overlays/actors/ovl_Bg_Crace_Movebg/z_bg_crace_movebg.c b/src/overlays/actors/ovl_Bg_Crace_Movebg/z_bg_crace_movebg.c index 19cafc2bdc..0320912931 100644 --- a/src/overlays/actors/ovl_Bg_Crace_Movebg/z_bg_crace_movebg.c +++ b/src/overlays/actors/ovl_Bg_Crace_Movebg/z_bg_crace_movebg.c @@ -328,7 +328,7 @@ void BgCraceMovebg_ClosingDoor_Close(BgCraceMovebg* this, PlayState* play) { if (Math_StepToF(&this->doorHeight, 0.0f, 1.0f)) { if (!(this->stateFlags & BG_CRACE_MOVEBG_FLAG_PLAYER_IS_BEYOND_DOOR) && !Flags_GetSwitch(play, BG_CRACE_MOVEBG_GET_SWITCH_FLAG(&this->dyna.actor) + 1)) { - play->unk_18845 = 1; + play->haltAllActors = true; func_80169FDC(&play->state); play_sound(NA_SE_OC_ABYSS); } diff --git a/src/overlays/actors/ovl_Bg_Dblue_Movebg/z_bg_dblue_movebg.c b/src/overlays/actors/ovl_Bg_Dblue_Movebg/z_bg_dblue_movebg.c index d6819aa004..45b42942b0 100644 --- a/src/overlays/actors/ovl_Bg_Dblue_Movebg/z_bg_dblue_movebg.c +++ b/src/overlays/actors/ovl_Bg_Dblue_Movebg/z_bg_dblue_movebg.c @@ -4,7 +4,6 @@ * Description: Great Bay Temple - Waterwheels, push switches, gear shafts, and whirlpools */ -#include "prevent_bss_reordering.h" #include "z_bg_dblue_movebg.h" #include "objects/object_dblue_object/object_dblue_object.h" #include "overlays/actors/ovl_Obj_Hunsui/z_obj_hunsui.h" diff --git a/src/overlays/actors/ovl_Bg_Ikana_Rotaryroom/z_bg_ikana_rotaryroom.c b/src/overlays/actors/ovl_Bg_Ikana_Rotaryroom/z_bg_ikana_rotaryroom.c index 27cecd05af..4561d4049a 100644 --- a/src/overlays/actors/ovl_Bg_Ikana_Rotaryroom/z_bg_ikana_rotaryroom.c +++ b/src/overlays/actors/ovl_Bg_Ikana_Rotaryroom/z_bg_ikana_rotaryroom.c @@ -651,7 +651,7 @@ void func_80B814B8(BgIkanaRotaryroom* this, PlayState* play) { func_800B8E58(player, NA_SE_VO_LI_DAMAGE_S + player->ageProperties->voiceSfxIdOffset); func_80169EFC(&play->state); func_800B8E58(player, NA_SE_VO_LI_TAKEN_AWAY + player->ageProperties->voiceSfxIdOffset); - play->unk_18845 = 1; + play->haltAllActors = true; play_sound(NA_SE_OC_ABYSS); this->actionFunc = NULL; } diff --git a/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c b/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c index 4ed78d4588..4bfa17c1c3 100644 --- a/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c +++ b/src/overlays/actors/ovl_Bg_Ingate/z_bg_ingate.c @@ -251,8 +251,8 @@ void func_809542A0(BgIngate* this, PlayState* play) { } gSaveContext.nextCutsceneIndex = 0; play->transitionTrigger = TRANS_TRIGGER_START; - play->transitionType = TRANS_TYPE_03; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + play->transitionType = TRANS_TYPE_FADE_WHITE; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; this->actionFunc = func_80953F8C; CLEAR_WEEKEVENTREG(WEEKEVENTREG_90_40); Environment_StartTime(); diff --git a/src/overlays/actors/ovl_Boss_02/z_boss_02.c b/src/overlays/actors/ovl_Boss_02/z_boss_02.c index f28c3cd341..e5505e92a3 100644 --- a/src/overlays/actors/ovl_Boss_02/z_boss_02.c +++ b/src/overlays/actors/ovl_Boss_02/z_boss_02.c @@ -751,9 +751,9 @@ void func_809DAB78(Boss02* this, PlayState* play) { this->unk_01BC[this->unk_014E].y = this->actor.world.pos.y; this->unk_01BC[this->unk_014E].z = this->actor.world.pos.z; - this->unk_0B1C[this->unk_014E].x = BINANG_TO_RAD(this->actor.world.rot.x); - this->unk_0B1C[this->unk_014E].y = BINANG_TO_RAD(this->actor.world.rot.y); - this->unk_0B1C[this->unk_014E].z = BINANG_TO_RAD(this->actor.world.rot.z); + this->unk_0B1C[this->unk_014E].x = BINANG_TO_RAD_ALT(this->actor.world.rot.x); + this->unk_0B1C[this->unk_014E].y = BINANG_TO_RAD_ALT(this->actor.world.rot.y); + this->unk_0B1C[this->unk_014E].z = BINANG_TO_RAD_ALT(this->actor.world.rot.z); } if ((this->unk_0144 < 10) && (otherTwinmold->unk_0144 >= 20)) { @@ -1391,7 +1391,7 @@ void Boss02_Twinmold_Draw(Actor* thisx, PlayState* play2) { } SkelAnime_DrawOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, NULL, NULL, &this->actor); - POLY_OPA_DISP = func_801660B8(play, POLY_OPA_DISP); + POLY_OPA_DISP = Play_SetFog(play, POLY_OPA_DISP); spA4 = 0.0f; spA0 = 0.0f; @@ -1426,7 +1426,7 @@ void Boss02_Twinmold_Draw(Actor* thisx, PlayState* play2) { if (sp98 < this->unk_01BC[phi_v0].y) { gSPDisplayList(POLY_OPA_DISP++, D_809DFA9C[i]); } - POLY_OPA_DISP = func_801660B8(play, POLY_OPA_DISP); + POLY_OPA_DISP = Play_SetFog(play, POLY_OPA_DISP); } if (i == 21) { @@ -1636,7 +1636,7 @@ void func_809DD934(Boss02* this, PlayState* play) { this->subCamId = Play_CreateSubCamera(play); Play_ChangeCameraStatus(play, CAM_ID_MAIN, CAM_STATUS_WAIT); Play_ChangeCameraStatus(play, this->subCamId, CAM_STATUS_ACTIVE); - func_8016566C(150); + Play_EnableMotionBlur(150); this->unk_1D14 = 0; this->subCamAtVel = 0.0f; this->unk_1D58 = 0.0f; @@ -1756,7 +1756,7 @@ void func_809DD934(Boss02* this, PlayState* play) { this->actor.flags |= ACTOR_FLAG_1; player->stateFlags1 &= ~PLAYER_STATE1_100; this->unk_1D70 = 0.01f; - func_80165690(); + Play_DisableMotionBlur(); break; } diff --git a/src/overlays/actors/ovl_Boss_03/z_boss_03.c b/src/overlays/actors/ovl_Boss_03/z_boss_03.c index 4c3b34fbb4..f51c944582 100644 --- a/src/overlays/actors/ovl_Boss_03/z_boss_03.c +++ b/src/overlays/actors/ovl_Boss_03/z_boss_03.c @@ -48,7 +48,6 @@ * - Effect Update/Draw * - Seaweed */ -#include "prevent_bss_reordering.h" #include "z_boss_03.h" #include "overlays/actors/ovl_Door_Warp1/z_door_warp1.h" #include "overlays/actors/ovl_En_Water_Effect/z_en_water_effect.h" @@ -780,7 +779,7 @@ void Boss03_CatchPlayer(Boss03* this, PlayState* play) { player->unk_AE8 = 101; player->actor.parent = NULL; player->csMode = PLAYER_CSMODE_0; - func_80165690(); + Play_DisableMotionBlur(); } func_809E344C(this, play); @@ -852,7 +851,7 @@ void Boss03_ChewPlayer(Boss03* this, PlayState* play) { this->unk_25C = 15; if (this->workTimer[WORK_TIMER_CURRENT_ACTION] == 90) { - func_8016566C(0x96); + Play_EnableMotionBlur(150); } SkelAnime_Update(&this->skelAnime); @@ -908,7 +907,7 @@ void Boss03_ChewPlayer(Boss03* this, PlayState* play) { player->unk_AE8 = 101; player->actor.parent = NULL; player->csMode = PLAYER_CSMODE_0; - func_80165690(); + Play_DisableMotionBlur(); func_800B8D50(play, NULL, 10.0f, this->actor.shape.rot.y, 0.0f, 0x20); } @@ -1187,7 +1186,7 @@ void Boss03_IntroCutscene(Boss03* this, PlayState* play) { this->csState = 2; this->csTimer = 0; this->unk_240 = 0; - func_8016566C(0x96); + Play_EnableMotionBlur(150); this->subCamFov = 80.0f; case 2: @@ -1280,7 +1279,7 @@ void Boss03_IntroCutscene(Boss03* this, PlayState* play) { this->actor.speedXZ = -200.0f; Actor_MoveWithoutGravityReverse(&this->actor); this->actor.world.pos.y = this->waterHeight - 150.0f; - func_80165690(); + Play_DisableMotionBlur(); case 5: SkelAnime_Update(&this->skelAnime); @@ -1627,7 +1626,7 @@ void Boss03_DeathCutscene(Boss03* this, PlayState* play) { Cutscene_End(play, &play->csCtx); func_800B7298(play, &this->actor, PLAYER_CSMODE_6); this->csState = 3; - func_80165690(); + Play_DisableMotionBlur(); Boss03_PlayUnderwaterSfx(&this->actor.projectedPos, NA_SE_EN_KONB_INIT_OLD); Boss03_PlayUnderwaterSfx(&D_809E9848, NA_SE_EN_KONB_INIT_OLD); } @@ -1751,7 +1750,7 @@ void Boss03_SetupStunned(Boss03* this, PlayState* play) { player->unk_AE8 = 101; player->actor.parent = NULL; player->csMode = PLAYER_CSMODE_0; - func_80165690(); + Play_DisableMotionBlur(); } this->unk_240 = 0; @@ -1903,7 +1902,7 @@ void Boss03_UpdateCollision(Boss03* this, PlayState* play) { player->unk_AE8 = 101; player->actor.parent = NULL; player->csMode = PLAYER_CSMODE_0; - func_80165690(); + Play_DisableMotionBlur(); } continue; @@ -2270,7 +2269,7 @@ void Boss03_Draw(Actor* thisx, PlayState* play) { Matrix_Translate(0.0f, -600.0f, 0.0f, MTXMODE_APPLY); SkelAnime_DrawFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, Boss03_OverrideLimbDraw, Boss03_PostLimbDraw, &this->actor); - POLY_OPA_DISP = func_801660B8(play, POLY_OPA_DISP); + POLY_OPA_DISP = Play_SetFog(play, POLY_OPA_DISP); } this->unk_2BC = 0; diff --git a/src/overlays/actors/ovl_Boss_04/z_boss_04.c b/src/overlays/actors/ovl_Boss_04/z_boss_04.c index 0b59ff9ed7..00892063c3 100644 --- a/src/overlays/actors/ovl_Boss_04/z_boss_04.c +++ b/src/overlays/actors/ovl_Boss_04/z_boss_04.c @@ -271,7 +271,7 @@ void func_809EC568(Boss04* this, PlayState* play) { Math_Vec3f_Copy(&this->subCamEye, &player->actor.world.pos); this->subCamEye.y += 100.0f; Math_Vec3f_Copy(&this->subCamAt, &this->actor.world.pos); - func_8016566C(150); + Play_EnableMotionBlur(150); this->subCamFov = 60.0f; boss = play->actorCtx.actorLists[ACTORCAT_BOSS].first; @@ -391,7 +391,7 @@ void func_809EC568(Boss04* this, PlayState* play) { this->subCamId = SUB_CAM_ID_DONE; Cutscene_End(play, &play->csCtx); func_800B7298(play, &this->actor, PLAYER_CSMODE_6); - func_80165690(); + Play_DisableMotionBlur(); SET_EVENTINF(EVENTINF_60); } break; @@ -828,7 +828,7 @@ void Boss04_Draw(Actor* thisx, PlayState* play) { SkelAnime_DrawFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, Boss04_OverrideLimbDraw, Boss04_PostLimbDraw, &this->actor); - POLY_OPA_DISP = func_801660B8(play, POLY_OPA_DISP); + POLY_OPA_DISP = Play_SetFog(play, POLY_OPA_DISP); if (this->actionFunc != func_809EC568) { func_8012C448(play->state.gfxCtx); diff --git a/src/overlays/actors/ovl_Boss_06/z_boss_06.c b/src/overlays/actors/ovl_Boss_06/z_boss_06.c index 5dce58c4e4..83a920b509 100644 --- a/src/overlays/actors/ovl_Boss_06/z_boss_06.c +++ b/src/overlays/actors/ovl_Boss_06/z_boss_06.c @@ -220,7 +220,7 @@ void func_809F24C8(Boss06* this, PlayState* play) { case 1: if (this->unk_1CA >= 10) { Math_ApproachF(&this->unk_1E4, 30.0f, 0.2f, 1.0f); - play->envCtx.fillScreen = 1; + play->envCtx.fillScreen = true; play->envCtx.screenFillColor[2] = 0; play->envCtx.screenFillColor[1] = 0; play->envCtx.screenFillColor[0] = 0; @@ -233,7 +233,7 @@ void func_809F24C8(Boss06* this, PlayState* play) { } if (this->unk_1CA >= 60) { - play->envCtx.fillScreen = 0; + play->envCtx.fillScreen = false; this->unk_1C8 = 0; this->unk_1DC = 0.0f; this->unk_1D8 = 0.0f; diff --git a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c index 4f9d7d702b..8233bb0cb4 100644 --- a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c +++ b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c @@ -1024,9 +1024,9 @@ void DmStk_Init(Actor* thisx, PlayState* play) { this->deflectCount = 0; this->maskType = SK_MASK_TYPE_NORMAL; this->animIndex = SK_ANIM_IDLE; - this->fogR = play->lightCtx.unk7; - this->fogG = play->lightCtx.unk8; - this->fogB = play->lightCtx.unk9; + this->fogR = play->lightCtx.fogColor.r; + this->fogG = play->lightCtx.fogColor.g; + this->fogB = play->lightCtx.fogColor.b; if ((play->sceneId == SCENE_LOST_WOODS) && (gSaveContext.sceneLayer == 1)) { this->alpha = 0; @@ -1594,9 +1594,9 @@ void DmStk_UpdateCutscenes(DmStk* this, PlayState* play) { this->fadeInState++; } - this->fogR = play->lightCtx.unk7 * this->fogScale; - this->fogG = play->lightCtx.unk8 * this->fogScale; - this->fogB = play->lightCtx.unk9 * this->fogScale; + this->fogR = play->lightCtx.fogColor.r * this->fogScale; + this->fogG = play->lightCtx.fogColor.g * this->fogScale; + this->fogB = play->lightCtx.fogColor.b * this->fogScale; } else if (this->fadeInState == SK_FADE_IN_STATE_INCREASE_FOG) { if (this->fogN < 996) { this->fogN += 10; @@ -1895,7 +1895,7 @@ void DmStk_PostLimbDraw2(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot POLY_OPA_DISP = Gfx_SetFog(POLY_OPA_DISP, this->fogR, this->fogG, this->fogB, this->fogA, this->fogN, this->fogF); gSPDisplayList(POLY_OPA_DISP++, gSkullKidMajorasMask1DL); - POLY_OPA_DISP = func_801660B8(play, POLY_OPA_DISP); + POLY_OPA_DISP = Play_SetFog(play, POLY_OPA_DISP); } else { gSPDisplayList(POLY_OPA_DISP++, gSkullKidMajorasMask1DL); } diff --git a/src/overlays/actors/ovl_Dm_Tag/z_dm_tag.c b/src/overlays/actors/ovl_Dm_Tag/z_dm_tag.c index ce1cc98f38..13a7e264f7 100644 --- a/src/overlays/actors/ovl_Dm_Tag/z_dm_tag.c +++ b/src/overlays/actors/ovl_Dm_Tag/z_dm_tag.c @@ -158,8 +158,8 @@ s32 func_80C224D8(DmTag* this, PlayState* play) { play->nextEntrance = ENTRANCE(STOCK_POT_INN, 5); gSaveContext.nextCutsceneIndex = 0; play->transitionTrigger = TRANS_TRIGGER_START; - play->transitionType = TRANS_TYPE_02; - gSaveContext.nextTransitionType = TRANS_TYPE_06; + play->transitionType = TRANS_TYPE_FADE_BLACK; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK_SLOW; this->unk_1A4++; break; } @@ -172,8 +172,8 @@ s32 func_80C227E8(DmTag* this, PlayState* play) { play->nextEntrance = ENTRANCE(STOCK_POT_INN, 4); gSaveContext.nextCutsceneIndex = 0; play->transitionTrigger = TRANS_TRIGGER_START; - play->transitionType = TRANS_TYPE_02; - gSaveContext.nextTransitionType = TRANS_TYPE_06; + play->transitionType = TRANS_TYPE_FADE_BLACK; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK_SLOW; this->unk_1A4++; } return false; diff --git a/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c b/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c index bc168d5348..7ec2245d7d 100644 --- a/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c +++ b/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c @@ -410,8 +410,8 @@ void func_808B958C(DoorWarp1* this, PlayState* play) { this->unk_1D0++; if ((this->unk_1D0 > 120) && (gSaveContext.nextCutsceneIndex == 0xFFEF)) { func_808BA10C(this, play); - play->transitionType = TRANS_TYPE_03; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + play->transitionType = TRANS_TYPE_FADE_WHITE; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; } Math_SmoothStepToF(&this->unk_1A8, 6.0f, 0.2f, 0.02f, 0.01f); @@ -705,8 +705,8 @@ void func_808BA10C(DoorWarp1* this, PlayState* play) { } play->transitionTrigger = TRANS_TRIGGER_START; - play->transitionType = TRANS_TYPE_03; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + play->transitionType = TRANS_TYPE_FADE_WHITE; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; } else { switch (phi_v0_2) { case 0: @@ -714,14 +714,14 @@ void func_808BA10C(DoorWarp1* this, PlayState* play) { SET_WEEKEVENTREG(WEEKEVENTREG_07_80); play->nextEntrance = ENTRANCE(WOODFALL_TEMPLE, 1); play->transitionTrigger = TRANS_TRIGGER_START; - play->transitionType = TRANS_TYPE_03; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + play->transitionType = TRANS_TYPE_FADE_WHITE; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; } else { play->nextEntrance = ENTRANCE(WOODFALL, 0); gSaveContext.nextCutsceneIndex = 0xFFF0; play->transitionTrigger = TRANS_TRIGGER_START; - play->transitionType = TRANS_TYPE_03; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + play->transitionType = TRANS_TYPE_FADE_WHITE; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; } break; @@ -729,8 +729,8 @@ void func_808BA10C(DoorWarp1* this, PlayState* play) { SET_WEEKEVENTREG(WEEKEVENTREG_33_80); play->nextEntrance = ENTRANCE(MOUNTAIN_VILLAGE_SPRING, 7); play->transitionTrigger = TRANS_TRIGGER_START; - play->transitionType = TRANS_TYPE_03; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + play->transitionType = TRANS_TYPE_FADE_WHITE; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; break; case 3: @@ -738,15 +738,15 @@ void func_808BA10C(DoorWarp1* this, PlayState* play) { play->nextEntrance = ENTRANCE(ZORA_CAPE, 9); gSaveContext.nextCutsceneIndex = 0xFFF0; play->transitionTrigger = TRANS_TRIGGER_START; - play->transitionType = TRANS_TYPE_03; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + play->transitionType = TRANS_TYPE_FADE_WHITE; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; } else { SET_WEEKEVENTREG(WEEKEVENTREG_55_80); play->nextEntrance = ENTRANCE(ZORA_CAPE, 8); gSaveContext.nextCutsceneIndex = 0xFFF0; play->transitionTrigger = TRANS_TRIGGER_START; - play->transitionType = TRANS_TYPE_03; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + play->transitionType = TRANS_TYPE_FADE_WHITE; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; } break; @@ -755,14 +755,14 @@ void func_808BA10C(DoorWarp1* this, PlayState* play) { play->nextEntrance = ENTRANCE(IKANA_CANYON, 15); gSaveContext.nextCutsceneIndex = 0xFFF2; play->transitionTrigger = TRANS_TRIGGER_START; - play->transitionType = TRANS_TYPE_03; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + play->transitionType = TRANS_TYPE_FADE_WHITE; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; break; } } } else if (DOORWARP1_GET_FF00_1(&this->dyna.actor) != 0xFF) { if (DOORWARP1_GET_FF(&this->dyna.actor) == ENDOORWARP1_FF_6) { - gSaveContext.respawnFlag = ~1; + gSaveContext.respawnFlag = -2; } play->nextEntrance = play->setupExitList[DOORWARP1_GET_FF00_3(&this->dyna.actor)]; Scene_SetExitFade(play); @@ -833,7 +833,7 @@ void func_808BA550(DoorWarp1* this, PlayState* play) { } if (this->unk_1D0 > 140) { - play->envCtx.fillScreen = 1; + play->envCtx.fillScreen = true; temp_f0 = (this->unk_1D0 - 140) / 20.0f; if (temp_f0 > 1.0f) { temp_f0 = 1.0f; diff --git a/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c b/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c index a6624dc387..84feccbd82 100644 --- a/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c +++ b/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c @@ -677,7 +677,7 @@ void func_809C2788(EnAob01* this, PlayState* play) { play->nextEntrance = ENTRANCE(DOGGY_RACETRACK, 1); gSaveContext.eventInf[0] = (gSaveContext.eventInf[0] & (u8)~7) | 3; play->transitionType = TRANS_TYPE_64; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; play->transitionTrigger = TRANS_TRIGGER_START; } } diff --git a/src/overlays/actors/ovl_En_Az/z_en_az.c b/src/overlays/actors/ovl_En_Az/z_en_az.c index bfefb5a857..e87bf9d62f 100644 --- a/src/overlays/actors/ovl_En_Az/z_en_az.c +++ b/src/overlays/actors/ovl_En_Az/z_en_az.c @@ -151,8 +151,8 @@ void func_80A94AB8(EnAz* this, PlayState* play, s32 spawnIndex) { play->nextEntrance = Entrance_CreateFromSpawn(spawnIndex); gSaveContext.nextCutsceneIndex = 0; play->transitionTrigger = TRANS_TRIGGER_START; - play->transitionType = TRANS_TYPE_03; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + play->transitionType = TRANS_TYPE_FADE_WHITE; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; } void func_80A94B20(PlayState* play) { @@ -1471,7 +1471,7 @@ void func_80A97C4C(EnAz* this, PlayState* play) { gSaveContext.nextCutsceneIndex = 0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_80; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; func_80A979DC(this, play); } else { Actor_MoveWithGravity(&this->actor); @@ -1552,8 +1552,8 @@ void func_80A97F9C(EnAz* this, PlayState* play) { play->nextEntrance = Entrance_CreateFromSpawn(2); gSaveContext.nextCutsceneIndex = 0; play->transitionTrigger = TRANS_TRIGGER_START; - play->transitionType = TRANS_TYPE_03; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + play->transitionType = TRANS_TYPE_FADE_WHITE; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; this->actor.speedXZ = 0.0f; func_80A979DC(this, play); } else { diff --git a/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c b/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c index b995d77eaf..1f037a8a8f 100644 --- a/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c +++ b/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c @@ -179,7 +179,7 @@ void EnBigokuta_ShootPlayer(EnBigokuta* this, PlayState* play) { } s32 EnBigokuta_ValidatePictograph(PlayState* play, Actor* thisx) { - return Snap_ValidatePictograph(play, thisx, PICTOGRAPH_BIG_OCTO, &thisx->focus.pos, &thisx->shape.rot, 280.0f, + return Snap_ValidatePictograph(play, thisx, PICTO_VALID_BIG_OCTO, &thisx->focus.pos, &thisx->shape.rot, 280.0f, 1800.0f, -1); } diff --git a/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c b/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c index 4a9876c795..da6e8d6d05 100644 --- a/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c +++ b/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c @@ -336,7 +336,7 @@ void func_809C51B4(EnBomBowlMan* this, PlayState* play) { gSaveContext.nextCutsceneIndex = 0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_86; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; CLEAR_WEEKEVENTREG(WEEKEVENTREG_75_40); if (player->transformation == PLAYER_FORM_HUMAN) { SET_WEEKEVENTREG(WEEKEVENTREG_84_80); diff --git a/src/overlays/actors/ovl_En_Bomjima/z_en_bomjima.c b/src/overlays/actors/ovl_En_Bomjima/z_en_bomjima.c index 126c293c37..b17079b6eb 100644 --- a/src/overlays/actors/ovl_En_Bomjima/z_en_bomjima.c +++ b/src/overlays/actors/ovl_En_Bomjima/z_en_bomjima.c @@ -773,7 +773,7 @@ void func_80BFFBC4(EnBomjima* this, PlayState* play) { gSaveContext.nextCutsceneIndex = 0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_86; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; ActorCutscene_Stop(this->cutscenes[1]); } } diff --git a/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.c b/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.c index c0033b1036..7e07ed9d6d 100644 --- a/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.c +++ b/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.c @@ -799,7 +799,7 @@ void func_80C02CA4(EnBomjimb* this, PlayState* play) { gSaveContext.nextCutsceneIndex = 0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_86; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; } SET_WEEKEVENTREG(WEEKEVENTREG_75_40); SET_WEEKEVENTREG(WEEKEVENTREG_83_04); diff --git a/src/overlays/actors/ovl_En_Col_Man/z_en_col_man.c b/src/overlays/actors/ovl_En_Col_Man/z_en_col_man.c index 63c83f0ea9..b3038dd608 100644 --- a/src/overlays/actors/ovl_En_Col_Man/z_en_col_man.c +++ b/src/overlays/actors/ovl_En_Col_Man/z_en_col_man.c @@ -244,7 +244,7 @@ void func_80AFE4AC(Actor* thisx, PlayState* play) { func_8012C2DC(play->state.gfxCtx); func_8012C28C(play->state.gfxCtx); OPEN_DISPS(play->state.gfxCtx); - POLY_OPA_DISP = func_801660B8(play, POLY_OPA_DISP); + POLY_OPA_DISP = Play_SetFog(play, POLY_OPA_DISP); POLY_OPA_DISP = func_8012C724(POLY_OPA_DISP); gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(gDropRecoveryHeartTex)); gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); @@ -266,7 +266,7 @@ void func_80AFE584(Actor* thisx, PlayState* play) { void func_80AFE650(Actor* thisx, PlayState* play) { func_8012C28C(play->state.gfxCtx); OPEN_DISPS(play->state.gfxCtx); - POLY_OPA_DISP = func_801660B8(play, POLY_OPA_DISP); + POLY_OPA_DISP = Play_SetFog(play, POLY_OPA_DISP); POLY_OPA_DISP = func_8012C724(POLY_OPA_DISP); gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(gDropBombTex)); gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); diff --git a/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c b/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c index 021b94476d..4b1087311c 100644 --- a/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c +++ b/src/overlays/actors/ovl_En_Dnq/z_en_dnq.c @@ -83,7 +83,7 @@ static AnimationInfoS sAnimationInfo[] = { }; s32 EnDnq_ValidatePictograph(PlayState* play, Actor* thisx) { - return Snap_ValidatePictograph(play, thisx, PICTOGRAPH_DEKU_KING, &thisx->focus.pos, &thisx->world.rot, 120.0f, + return Snap_ValidatePictograph(play, thisx, PICTO_VALID_DEKU_KING, &thisx->focus.pos, &thisx->world.rot, 120.0f, 480.0f, 0x38E3); } diff --git a/src/overlays/actors/ovl_En_Dns/z_en_dns.c b/src/overlays/actors/ovl_En_Dns/z_en_dns.c index 714235b174..a8a94d9a4e 100644 --- a/src/overlays/actors/ovl_En_Dns/z_en_dns.c +++ b/src/overlays/actors/ovl_En_Dns/z_en_dns.c @@ -440,8 +440,8 @@ void func_8092D330(EnDns* this, PlayState* play) { play->nextEntrance = ENTRANCE(DEKU_PALACE, 1); gSaveContext.nextCutsceneIndex = 0; play->transitionTrigger = TRANS_TRIGGER_START; - play->transitionType = TRANS_TYPE_03; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + play->transitionType = TRANS_TYPE_FADE_WHITE; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; } } diff --git a/src/overlays/actors/ovl_En_Egol/z_en_egol.c b/src/overlays/actors/ovl_En_Egol/z_en_egol.c index 7314974368..f115ada7c4 100644 --- a/src/overlays/actors/ovl_En_Egol/z_en_egol.c +++ b/src/overlays/actors/ovl_En_Egol/z_en_egol.c @@ -1453,7 +1453,7 @@ void EnEgol_Draw(Actor* thisx, PlayState* play2) { AnimatedMat_Draw(play, Lib_SegmentedToVirtual(gEyegoreEyeLaserTexAnim)); SkelAnime_DrawFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, EnEgol_OverrideLimbDraw, EnEgol_PostLimbDraw, &this->actor); - POLY_OPA_DISP = func_801660B8(play, POLY_OPA_DISP); + POLY_OPA_DISP = Play_SetFog(play, POLY_OPA_DISP); } if (this->dmgEffectTimer != 0) { f32 drawDmgEffAlpha = 0.05f * this->dmgEffectTimer; diff --git a/src/overlays/actors/ovl_En_Fall/z_en_fall.c b/src/overlays/actors/ovl_En_Fall/z_en_fall.c index 32a4b7c823..ea76ef0747 100644 --- a/src/overlays/actors/ovl_En_Fall/z_en_fall.c +++ b/src/overlays/actors/ovl_En_Fall/z_en_fall.c @@ -344,8 +344,8 @@ void EnFall_CrashingMoon_HandleGiantsCutscene(EnFall* this, PlayState* play) { play->nextEntrance = ENTRANCE(CLOCK_TOWER_ROOFTOP, 0); gSaveContext.nextCutsceneIndex = 0xFFF2; play->transitionTrigger = TRANS_TRIGGER_START; - play->transitionType = TRANS_TYPE_02; - gSaveContext.nextTransitionType = TRANS_TYPE_02; + play->transitionType = TRANS_TYPE_FADE_BLACK; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; sGiantsCutsceneState = 9; } break; @@ -784,7 +784,7 @@ void EnFall_LodMoon_Draw(Actor* thisx, PlayState* play) { gSPDisplayList(POLY_OPA_DISP++, gLodmoonEyesDL); gSPLoadGeometryMode(POLY_OPA_DISP++, G_ZBUFFER | G_SHADE | G_CULL_BACK | G_LIGHTING | G_SHADING_SMOOTH); gSPDisplayList(POLY_OPA_DISP++, gLodmoonMoonDL); - POLY_OPA_DISP = func_801660B8(play, POLY_OPA_DISP); + POLY_OPA_DISP = Play_SetFog(play, POLY_OPA_DISP); CLOSE_DISPS(play->state.gfxCtx); } diff --git a/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c b/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c index 6d75abddb9..a64e8a9471 100644 --- a/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c +++ b/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c @@ -3,7 +3,6 @@ * Overlay: ovl_En_Fishing * Description: Fishing Pond Elements (Owner, Fish, Props, Effects...) */ - #include "prevent_bss_reordering.h" #include "z_en_fishing.h" #include "z64rumble.h" @@ -2169,7 +2168,7 @@ void EnFishing_UpdateLure(EnFishing* this, PlayState* play) { if (D_80917204 == 18) { D_8090CD14 = 1; sLurePos = sRodTipPos; - Matrix_RotateYF(BINANG_TO_RAD(player->actor.shape.rot.y), MTXMODE_NEW); + Matrix_RotateYF(BINANG_TO_RAD_ALT(player->actor.shape.rot.y), MTXMODE_NEW); sp90.x = 0.0f; sp90.y = 0.0f; sp90.z = 25.0f; @@ -5362,7 +5361,7 @@ void EnFishing_UpdateOwner(Actor* thisx, PlayState* play2) { D_8090CD54 = 1; Math_ApproachF(&D_80911F64, 71.0f, 0.5f, 3.0f); - Matrix_RotateYF(BINANG_TO_RAD(player->actor.shape.rot.y), MTXMODE_NEW); + Matrix_RotateYF(BINANG_TO_RAD_ALT(player->actor.shape.rot.y), MTXMODE_NEW); sp114.x = Math_SinS(play->gameplayFrames * 0x1000); sp114.y = D_80911F64; diff --git a/src/overlays/actors/ovl_En_Fu/z_en_fu.c b/src/overlays/actors/ovl_En_Fu/z_en_fu.c index 041cadaa76..f43d244323 100644 --- a/src/overlays/actors/ovl_En_Fu/z_en_fu.c +++ b/src/overlays/actors/ovl_En_Fu/z_en_fu.c @@ -1448,7 +1448,7 @@ void func_80964950(PlayState* play, EnFuUnkStruct* ptr, s32 len) { OPEN_DISPS(play->state.gfxCtx); - POLY_OPA_DISP = func_801660B8(play, POLY_OPA_DISP); + POLY_OPA_DISP = Play_SetFog(play, POLY_OPA_DISP); POLY_OPA_DISP = func_8012C724(POLY_OPA_DISP); for (i = 0; i < len; i++, ptr++) { diff --git a/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c b/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c index cbc8511b73..3d4f4bd3dc 100644 --- a/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c +++ b/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c @@ -384,10 +384,10 @@ void EnGe1_Update(Actor* thisx, PlayState* play) { } s32 EnGe1_ValidatePictograph(PlayState* play, Actor* thisx) { - s32 ret = Snap_ValidatePictograph(play, thisx, PICTOGRAPH_PIRATE_GOOD, &thisx->focus.pos, &thisx->shape.rot, 10.0f, + s32 ret = Snap_ValidatePictograph(play, thisx, PICTO_VALID_PIRATE_GOOD, &thisx->focus.pos, &thisx->shape.rot, 10.0f, 400.0f, -1); - ret |= Snap_ValidatePictograph(play, thisx, PICTOGRAPH_PIRATE_TOO_FAR, &thisx->focus.pos, &thisx->shape.rot, 10.0f, + ret |= Snap_ValidatePictograph(play, thisx, PICTO_VALID_PIRATE_TOO_FAR, &thisx->focus.pos, &thisx->shape.rot, 10.0f, 1200.0f, -1); return ret; diff --git a/src/overlays/actors/ovl_En_Gk/z_en_gk.c b/src/overlays/actors/ovl_En_Gk/z_en_gk.c index 6f2f3c09cf..9704d62049 100644 --- a/src/overlays/actors/ovl_En_Gk/z_en_gk.c +++ b/src/overlays/actors/ovl_En_Gk/z_en_gk.c @@ -722,8 +722,8 @@ void func_80B51B40(EnGk* this, PlayState* play) { if (this->unk_31C == 0xE8F) { play->nextEntrance = ENTRANCE(GORON_RACETRACK, 1); play->transitionTrigger = TRANS_TRIGGER_START; - play->transitionType = TRANS_TYPE_03; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + play->transitionType = TRANS_TYPE_FADE_WHITE; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; Magic_Add(play, MAGIC_FILL_TO_CAPACITY); } else { this->actionFunc = func_80B51760; diff --git a/src/overlays/actors/ovl_En_Gs/z_en_gs.c b/src/overlays/actors/ovl_En_Gs/z_en_gs.c index 93d7e3f88d..08133cc63b 100644 --- a/src/overlays/actors/ovl_En_Gs/z_en_gs.c +++ b/src/overlays/actors/ovl_En_Gs/z_en_gs.c @@ -170,7 +170,7 @@ void EnGs_Destroy(Actor* thisx, PlayState* play) { EnGs* this = THIS; Collider_DestroyCylinder(play, &this->collider); - func_80165690(); + Play_DisableMotionBlur(); } void func_80997D14(EnGs* this, PlayState* play) { @@ -902,16 +902,16 @@ void func_80999AC0(EnGs* this) { void func_80999B34(EnGs* this) { if (this->unk_216 > 0) { if (this->unk_218 == 0) { - func_8016566C(this->unk_216); + Play_EnableMotionBlur(this->unk_216); this->unk_218 = this->unk_216; } else { - func_80165658(this->unk_218); + Play_SetMotionBlurAlpha(this->unk_218); } } else if (this->unk_218 > 0) { Math_StepToS(&this->unk_218, this->unk_216, 20); - func_80165658(this->unk_218); + Play_SetMotionBlurAlpha(this->unk_218); if (this->unk_218 <= 0) { - func_80165690(); + Play_DisableMotionBlur(); } } } diff --git a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c index e97deee04d..e650ef6d3c 100644 --- a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c +++ b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.c @@ -158,14 +158,14 @@ s32 func_808F8EB0(EnHorseGameCheck* this, PlayState* play) { if (GET_WEEKEVENTREG_RACE_FLAGS == WEEKEVENTREG_RACE_FLAG_3) { play->transitionType = TRANS_TYPE_64; - gSaveContext.nextTransitionType = TRANS_TYPE_02; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; } else if (GET_WEEKEVENTREG_RACE_FLAGS == WEEKEVENTREG_RACE_FLAG_2) { play->transitionType = TRANS_TYPE_80; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; } else if (GET_WEEKEVENTREG_RACE_FLAGS == WEEKEVENTREG_RACE_FLAG_4) { SET_WEEKEVENTREG_RACE_FLAGS(WEEKEVENTREG_RACE_FLAG_3); - play->transitionType = TRANS_TYPE_02; - gSaveContext.nextTransitionType = TRANS_TYPE_02; + play->transitionType = TRANS_TYPE_FADE_BLACK; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; } D_801BDA9C = 0; diff --git a/src/overlays/actors/ovl_En_In/z_en_in.c b/src/overlays/actors/ovl_En_In/z_en_in.c index a51cae5563..3a83564e56 100644 --- a/src/overlays/actors/ovl_En_In/z_en_in.c +++ b/src/overlays/actors/ovl_En_In/z_en_in.c @@ -820,7 +820,7 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { SET_WEEKEVENTREG_RACE_FLAGS(WEEKEVENTREG_RACE_FLAG_START); func_800FD750(NA_BGM_HORSE); play->nextEntrance = ENTRANCE(GORMAN_TRACK, 5); - play->transitionType = TRANS_TYPE_05; + play->transitionType = TRANS_TYPE_FADE_WHITE_FAST; play->transitionTrigger = TRANS_TRIGGER_START; SET_WEEKEVENTREG(WEEKEVENTREG_57_01); break; @@ -1067,7 +1067,7 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { SET_WEEKEVENTREG_RACE_FLAGS(WEEKEVENTREG_RACE_FLAG_START); func_800FD750(NA_BGM_HORSE); play->nextEntrance = ENTRANCE(GORMAN_TRACK, 5); - play->transitionType = TRANS_TYPE_05; + play->transitionType = TRANS_TYPE_FADE_WHITE_FAST; play->transitionTrigger = TRANS_TRIGGER_START; SET_WEEKEVENTREG(WEEKEVENTREG_57_01); break; diff --git a/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c b/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c index 2c6a157372..f1ebe1bb20 100644 --- a/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c +++ b/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c @@ -3,7 +3,7 @@ * Overlay: ovl_En_Invadepoh * Description: Ranch nighttime actors */ - +#include "prevent_bss_reordering.h" #include "z_en_invadepoh.h" #include "overlays/actors/ovl_En_Door/z_en_door.h" #include "objects/gameplay_keep/gameplay_keep.h" diff --git a/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c b/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c index 92e918c5df..2db753d01e 100644 --- a/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c +++ b/src/overlays/actors/ovl_En_Jgame_Tsn/z_en_jgame_tsn.c @@ -370,7 +370,7 @@ void func_80C144F8(EnJgameTsn* this, PlayState* play) { play->nextEntrance = ENTRANCE(GREAT_BAY_COAST, 13); play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_80; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; } void func_80C14540(EnJgameTsn* this) { diff --git a/src/overlays/actors/ovl_En_Js/z_en_js.c b/src/overlays/actors/ovl_En_Js/z_en_js.c index d36bbb6c33..ecfaa6b8ba 100644 --- a/src/overlays/actors/ovl_En_Js/z_en_js.c +++ b/src/overlays/actors/ovl_En_Js/z_en_js.c @@ -110,7 +110,7 @@ void EnJs_Init(Actor* thisx, PlayState* play) { this->actionFunc = func_8096A6F4; Animation_PlayLoop(&this->skelAnime, &gMoonChildSittingAnim); - func_8016566C(0x3C); + Play_EnableMotionBlur(60); if (CHECK_WEEKEVENTREG(WEEKEVENTREG_84_20)) { Inventory_DeleteItem(ITEM_MASK_FIERCE_DEITY, SLOT(ITEM_MASK_FIERCE_DEITY)); @@ -151,7 +151,7 @@ void EnJs_Destroy(Actor* thisx, PlayState* play) { paramsF = ENJS_GET_TYPE(&this->actor); switch (paramsF) { case 0: - func_80165690(); + Play_DisableMotionBlur(); break; case 5: case 6: diff --git a/src/overlays/actors/ovl_En_Kaizoku/z_en_kaizoku.c b/src/overlays/actors/ovl_En_Kaizoku/z_en_kaizoku.c index da327642b4..70ca7313ab 100644 --- a/src/overlays/actors/ovl_En_Kaizoku/z_en_kaizoku.c +++ b/src/overlays/actors/ovl_En_Kaizoku/z_en_kaizoku.c @@ -446,10 +446,10 @@ void EnKaizoku_ChangeAnim(EnKaizoku* this, EnKaizokuAnimation animIndex) { } s32 EnKaizoku_ValidatePictograph(PlayState* play, Actor* actor) { - s32 ret = Snap_ValidatePictograph(play, actor, PICTOGRAPH_PIRATE_GOOD, &actor->focus.pos, &actor->shape.rot, 10.0f, + s32 ret = Snap_ValidatePictograph(play, actor, PICTO_VALID_PIRATE_GOOD, &actor->focus.pos, &actor->shape.rot, 10.0f, 400.0f, -1); - ret |= Snap_ValidatePictograph(play, actor, PICTOGRAPH_PIRATE_TOO_FAR, &actor->focus.pos, &actor->shape.rot, 10.0f, + ret |= Snap_ValidatePictograph(play, actor, PICTO_VALID_PIRATE_TOO_FAR, &actor->focus.pos, &actor->shape.rot, 10.0f, 1200.0f, -1); return ret; } diff --git a/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c b/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c index 0346749a90..3ef617aec1 100644 --- a/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c +++ b/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c @@ -813,7 +813,7 @@ void EnKakasi_SetupDanceNightAway(EnKakasi* this) { this->subCamFovNext = 60.0f; EnKakasi_ChangeAnim(this, ENKAKASI_ANIM_TWIRL); Math_Vec3f_Copy(&this->unk22C, &this->picto.actor.home.pos); - func_8016566C(0xB4); + Play_EnableMotionBlur(180); this->actionFunc = EnKakasi_DancingNightAway; } @@ -917,7 +917,7 @@ void EnKakasi_DancingNightAway(EnKakasi* this, PlayState* play) { this->unk204 = 0xA; if (this->unk190 == 0xE) { func_800B7298(play, &this->picto.actor, PLAYER_CSMODE_73); - func_80165690(); + Play_DisableMotionBlur(); this->unk204 = 0x14; } } diff --git a/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c b/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c index eaf5ea96af..39d55f7f80 100644 --- a/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c +++ b/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c @@ -4,6 +4,7 @@ * Description: Grass / Bush */ +#include "prevent_bss_reordering.h" #include "z_en_kusa.h" #include "objects/object_kusa/object_kusa.h" #include "objects/gameplay_keep/gameplay_keep.h" diff --git a/src/overlays/actors/ovl_En_Kusa2/z_en_kusa2.c b/src/overlays/actors/ovl_En_Kusa2/z_en_kusa2.c index 626ab3f3bf..0f95122d45 100644 --- a/src/overlays/actors/ovl_En_Kusa2/z_en_kusa2.c +++ b/src/overlays/actors/ovl_En_Kusa2/z_en_kusa2.c @@ -4,6 +4,7 @@ * Description: Keaton grass */ +#include "prevent_bss_reordering.h" #include "z_en_kusa2.h" #include "objects/gameplay_field_keep/gameplay_field_keep.h" #include "objects/gameplay_keep/gameplay_keep.h" diff --git a/src/overlays/actors/ovl_En_Lift_Nuts/z_en_lift_nuts.c b/src/overlays/actors/ovl_En_Lift_Nuts/z_en_lift_nuts.c index f6647cc0b0..aafc12b516 100644 --- a/src/overlays/actors/ovl_En_Lift_Nuts/z_en_lift_nuts.c +++ b/src/overlays/actors/ovl_En_Lift_Nuts/z_en_lift_nuts.c @@ -740,7 +740,7 @@ void func_80AEB148(EnLiftNuts* this, PlayState* play) { if (player->stateFlags3 & PLAYER_STATE3_200) { this->actor.speedXZ = 2.0f; - gSaveContext.eventInf[3] |= 0x10; + SET_EVENTINF(EVENTINF_34); Interface_StartTimer(4, 0); func_80AE9B4C(1, 2); Actor_PlaySfxAtPos(&this->actor, NA_SE_SY_FOUND); @@ -750,7 +750,7 @@ void func_80AEB148(EnLiftNuts* this, PlayState* play) { void func_80AEB1C8(EnLiftNuts* this) { this->actor.speedXZ = 2.0f; - gSaveContext.eventInf[3] |= 0x10; + SET_EVENTINF(EVENTINF_34); Interface_StartTimer(4, 0); func_80AE9B4C(1, 2); this->actionFunc = func_80AEB230; @@ -815,13 +815,13 @@ void func_80AEB428(EnLiftNuts* this, PlayState* play) { this->textId = 0x27EC; } } else if (this->unk_354 == 30) { - gSaveContext.eventInf[3] &= (u8)~0x10; + CLEAR_EVENTINF(EVENTINF_34); gSaveContext.respawn[RESPAWN_MODE_DOWN].entrance = ENTRANCE(DEKU_SCRUB_PLAYGROUND, 1); gSaveContext.nextCutsceneIndex = 0; func_80169EFC(&play->state); gSaveContext.respawnFlag = -2; play->transitionType = TRANS_TYPE_64; - gSaveContext.nextTransitionType = TRANS_TYPE_02; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; } this->unk_354++; } diff --git a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c index 93f33cfeda..973e915531 100644 --- a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c +++ b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c @@ -666,7 +666,7 @@ void EnMa4_BeginHorsebackGame(EnMa4* this, PlayState* play) { gSaveContext.nextCutsceneIndex = 0xFFF0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_80; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; } void EnMa4_HorsebackGameCheckPlayerInteractions(EnMa4* this, PlayState* play) { @@ -760,10 +760,10 @@ void EnMa4_HorsebackGameEnd(EnMa4* this, PlayState* play) { if (this->poppedBalloonCounter == 10) { play->transitionType = TRANS_TYPE_80; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; } else { play->transitionType = TRANS_TYPE_64; - gSaveContext.nextTransitionType = TRANS_TYPE_02; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; } this->poppedBalloonCounter = 0; @@ -863,7 +863,7 @@ void EnMa4_BeginDescribeThemCs(EnMa4* this, PlayState* play) { gSaveContext.nextCutsceneIndex = 0xFFF5; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_64; - gSaveContext.nextTransitionType = TRANS_TYPE_02; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; } void EnMa4_StartDialogue(EnMa4* this, PlayState* play) { diff --git a/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c b/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c index c9ba0f34d5..fb10d93111 100644 --- a/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c +++ b/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c @@ -1091,7 +1091,7 @@ void EnMaYto_PostMilkRunEnd(EnMaYto* this, PlayState* play) { gSaveContext.nextCutsceneIndex = 0; play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_80; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; } void EnMaYto_DefaultStartDialogue(EnMaYto* this, PlayState* play) { diff --git a/src/overlays/actors/ovl_En_Mag/z_en_mag.c b/src/overlays/actors/ovl_En_Mag/z_en_mag.c index 3a72258cca..4a8ce8731e 100644 --- a/src/overlays/actors/ovl_En_Mag/z_en_mag.c +++ b/src/overlays/actors/ovl_En_Mag/z_en_mag.c @@ -390,7 +390,7 @@ void EnMag_Update(Actor* thisx, PlayState* play) { play_sound(NA_SE_SY_PIECE_OF_HEART); gSaveContext.gameMode = 2; // Go to FileChoose play->transitionTrigger = TRANS_TRIGGER_START; - play->transitionType = TRANS_TYPE_02; + play->transitionType = TRANS_TYPE_FADE_BLACK; play->nextEntrance = ENTRANCE(CUTSCENE, 0); gSaveContext.save.cutscene = 0; gSaveContext.sceneLayer = 0; diff --git a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c index a077ee1bf7..7b2dc9db6a 100644 --- a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c +++ b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c @@ -398,10 +398,10 @@ void EnMttag_RaceFinish(EnMttag* this, PlayState* play) { if (DECR(this->timer) == 0) { if (CHECK_EVENTINF(EVENTINF_11)) { // Player won - EnMttag_ExitRace(play, TRANS_TYPE_03, TRANS_TYPE_03); + EnMttag_ExitRace(play, TRANS_TYPE_FADE_WHITE, TRANS_TYPE_FADE_WHITE); } else { // A non-player Goron won - EnMttag_ExitRace(play, TRANS_TYPE_02, TRANS_TYPE_02); + EnMttag_ExitRace(play, TRANS_TYPE_FADE_BLACK, TRANS_TYPE_FADE_BLACK); } Actor_Kill(&this->actor); @@ -429,8 +429,8 @@ void EnMttag_PotentiallyRestartRace(EnMttag* this, PlayState* play) { } play->transitionTrigger = TRANS_TRIGGER_START; - play->transitionType = TRANS_TYPE_02; - gSaveContext.nextTransitionType = TRANS_TYPE_02; + play->transitionType = TRANS_TYPE_FADE_BLACK; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; func_801477B4(play); func_800B7298(play, &this->actor, PLAYER_CSMODE_7); Magic_Add(play, MAGIC_FILL_TO_CAPACITY); @@ -441,7 +441,7 @@ void EnMttag_PotentiallyRestartRace(EnMttag* this, PlayState* play) { CLEAR_EVENTINF(EVENTINF_13); gSaveContext.eventInf[2] = ((gSaveContext.eventInf[2] & 0xF) + 1) | (gSaveContext.eventInf[2] & 0xF0); } else { - EnMttag_ExitRace(play, TRANS_TYPE_02, TRANS_TYPE_02); + EnMttag_ExitRace(play, TRANS_TYPE_FADE_BLACK, TRANS_TYPE_FADE_BLACK); } Actor_Kill(&this->actor); } @@ -457,7 +457,7 @@ void EnMttag_HandleCantWinChoice(EnMttag* this, PlayState* play) { // Exit the race func_8019F230(); gSaveContext.timerStates[TIMER_ID_MINIGAME_2] = TIMER_STATE_OFF; - EnMttag_ExitRace(play, TRANS_TYPE_02, TRANS_TYPE_02); + EnMttag_ExitRace(play, TRANS_TYPE_FADE_BLACK, TRANS_TYPE_FADE_BLACK); CLEAR_EVENTINF(EVENTINF_13); SET_EVENTINF(EVENTINF_12); Actor_Kill(&this->actor); diff --git a/src/overlays/actors/ovl_En_Nb/z_en_nb.c b/src/overlays/actors/ovl_En_Nb/z_en_nb.c index 385325080f..b5d558a711 100644 --- a/src/overlays/actors/ovl_En_Nb/z_en_nb.c +++ b/src/overlays/actors/ovl_En_Nb/z_en_nb.c @@ -335,7 +335,7 @@ s32 func_80BC01DC(Actor* thisx, PlayState* play) { R_PLAY_FILL_SCREEN_ALPHA = (s16)(s32)(255.0f - (((f32)ABS_ALT(20 - this->storyTimer) / 20.0f) * 255.0f)); if (this->storyTimer == 20) { - if (gSaveContext.eventInf[4] & 4) { + if (CHECK_EVENTINF(EVENTINF_42)) { // play->interfaceCtx.storyType = STORY_TYPE_MASK_FESTIVAL; play->interfaceCtx.storyType = 0; } else { @@ -365,7 +365,7 @@ s32 func_80BC01DC(Actor* thisx, PlayState* play) { this->behaviour++; // fallthrough case ENNB_BEHAVIOUR_5: - if (!(gSaveContext.eventInf[4] & 4)) { + if (!CHECK_EVENTINF(EVENTINF_42)) { gSaveContext.save.time = CLOCK_TIME(8, 0); Sram_IncrementDay(); } else { @@ -376,9 +376,9 @@ s32 func_80BC01DC(Actor* thisx, PlayState* play) { play->nextEntrance = ENTRANCE(STOCK_POT_INN, 2); gSaveContext.nextCutsceneIndex = 0; play->transitionTrigger = TRANS_TRIGGER_START; - play->transitionType = TRANS_TYPE_02; - gSaveContext.nextTransitionType = TRANS_TYPE_06; - gSaveContext.eventInf[4] |= 8; + play->transitionType = TRANS_TYPE_FADE_BLACK; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK_SLOW; + SET_EVENTINF(EVENTINF_43); break; } @@ -386,7 +386,7 @@ s32 func_80BC01DC(Actor* thisx, PlayState* play) { } u8* func_80BC045C(EnNb* this, PlayState* play) { - if (gSaveContext.eventInf[4] & 8) { + if (CHECK_EVENTINF(EVENTINF_43)) { this->msgEventCallback = func_80BC01DC; return D_80BC1464; } else if (this->scheduleResult == EN_NB_SCH_2) { @@ -586,7 +586,7 @@ s32 func_80BC0B98(EnNb* this, PlayState* play, ScheduleOutput* scheduleOutput) { } s32 func_80BC0C0C(EnNb* this, PlayState* play, ScheduleOutput* scheduleOutput) { - if (!(gSaveContext.eventInf[4] & 8)) { + if (!CHECK_EVENTINF(EVENTINF_43)) { SubS_UpdateFlags(&this->stateFlags, EN_NB_FLAG_1 | EN_NB_FLAG_2, EN_NB_FLAG_1 | EN_NB_FLAG_2 | EN_NB_FLAG_4); } else { SubS_UpdateFlags(&this->stateFlags, EN_NB_FLAG_4, EN_NB_FLAG_1 | EN_NB_FLAG_2 | EN_NB_FLAG_4); @@ -640,7 +640,7 @@ void EnNb_FollowSchedule(EnNb* this, PlayState* play) { this->timePathTimeSpeed = R_TIME_SPEED + ((void)0, gSaveContext.save.timeSpeedOffset); - if (gSaveContext.eventInf[4] & 8) { + if (CHECK_EVENTINF(EVENTINF_43)) { scheduleOutput.result = EN_NB_SCH_1; EnNb_ProcessScheduleOutput(this, play, &scheduleOutput); this->actor.shape.shadowDraw = ActorShadow_DrawCircle; @@ -663,9 +663,9 @@ void EnNb_FollowSchedule(EnNb* this, PlayState* play) { void func_80BC0EAC(EnNb* this, PlayState* play) { if (func_8010BF58(&this->actor, play, this->msgEventScript, this->msgEventCallback, &this->msgEventArg4)) { - if (gSaveContext.eventInf[4] & 8) { - gSaveContext.eventInf[4] &= (u8)~4; - gSaveContext.eventInf[4] &= (u8)~8; + if (CHECK_EVENTINF(EVENTINF_43)) { + CLEAR_EVENTINF(EVENTINF_42); + CLEAR_EVENTINF(EVENTINF_43); } SubS_UpdateFlags(&this->stateFlags, EN_NB_FLAG_1 | EN_NB_FLAG_2, EN_NB_FLAG_1 | EN_NB_FLAG_2 | EN_NB_FLAG_4); @@ -695,11 +695,11 @@ void EnNb_Init(Actor* thisx, PlayState* play) { Actor_SetScale(&this->actor, 0.01f); this->stateFlags = EN_NB_FLAG_NONE; - if (gSaveContext.eventInf[4] & 8) { + if (CHECK_EVENTINF(EVENTINF_43)) { SubS_UpdateFlags(&this->stateFlags, EN_NB_FLAG_4, EN_NB_FLAG_1 | EN_NB_FLAG_2 | EN_NB_FLAG_4); } else { - gSaveContext.eventInf[4] &= (u8)~4; - gSaveContext.eventInf[4] &= (u8)~8; + CLEAR_EVENTINF(EVENTINF_42); + CLEAR_EVENTINF(EVENTINF_43); } this->actionFunc = EnNb_FollowSchedule; diff --git a/src/overlays/actors/ovl_En_Ot/z_en_ot.c b/src/overlays/actors/ovl_En_Ot/z_en_ot.c index e2490bb8dc..5fa27e0263 100644 --- a/src/overlays/actors/ovl_En_Ot/z_en_ot.c +++ b/src/overlays/actors/ovl_En_Ot/z_en_ot.c @@ -1137,7 +1137,7 @@ void func_80B5E1D8(PlayState* play, EnOtUnkStruct* arg1, s32 arg2) { OPEN_DISPS(play->state.gfxCtx); - POLY_OPA_DISP = func_801660B8(play, POLY_OPA_DISP); + POLY_OPA_DISP = Play_SetFog(play, POLY_OPA_DISP); POLY_OPA_DISP = func_8012C724(POLY_OPA_DISP); for (i = 0; i < arg2; i++, arg1++) { diff --git a/src/overlays/actors/ovl_En_Pamera/z_en_pamera.c b/src/overlays/actors/ovl_En_Pamera/z_en_pamera.c index 2b0aae48a0..bcbb787166 100644 --- a/src/overlays/actors/ovl_En_Pamera/z_en_pamera.c +++ b/src/overlays/actors/ovl_En_Pamera/z_en_pamera.c @@ -691,7 +691,7 @@ void func_80BD9C70(EnPamera* this, PlayState* play) { play->nextEntrance = ENTRANCE(IKANA_CANYON, 2); play->transitionTrigger = TRANS_TRIGGER_START; play->transitionType = TRANS_TYPE_70; - gSaveContext.nextTransitionType = TRANS_TYPE_02; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; } s32 func_80BD9CB8(EnPamera* this, PlayState* play) { diff --git a/src/overlays/actors/ovl_En_Shn/z_en_shn.c b/src/overlays/actors/ovl_En_Shn/z_en_shn.c index d606e17f40..0e1b182e6b 100644 --- a/src/overlays/actors/ovl_En_Shn/z_en_shn.c +++ b/src/overlays/actors/ovl_En_Shn/z_en_shn.c @@ -227,8 +227,8 @@ s32 func_80AE65F4(EnShn* this, PlayState* play) { s32 func_80AE6704(Actor* thisx, PlayState* play) { static s32 sPictographFlags[] = { - PICTOGRAPH_0, PICTOGRAPH_MONKEY, PICTOGRAPH_BIG_OCTO, - PICTOGRAPH_TINGLE, PICTOGRAPH_DEKU_KING, PICTOGRAPH_IN_SWAMP, + PICTO_VALID_0, PICTO_VALID_MONKEY, PICTO_VALID_BIG_OCTO, + PICTO_VALID_TINGLE, PICTO_VALID_DEKU_KING, PICTO_VALID_IN_SWAMP, }; EnShn* this = THIS; s32 ret = 0; @@ -263,8 +263,8 @@ s32 func_80AE6704(Actor* thisx, PlayState* play) { play->nextEntrance = ENTRANCE(SOUTHERN_SWAMP_POISONED, 6); gSaveContext.nextCutsceneIndex = 0; play->transitionTrigger = TRANS_TRIGGER_START; - play->transitionType = TRANS_TYPE_03; - gSaveContext.nextTransitionType = TRANS_TYPE_07; + play->transitionType = TRANS_TYPE_FADE_WHITE; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE_SLOW; this->unk_2C6++; break; } diff --git a/src/overlays/actors/ovl_En_Ssh/z_en_ssh.c b/src/overlays/actors/ovl_En_Ssh/z_en_ssh.c index 7494695fa3..233c6c8114 100644 --- a/src/overlays/actors/ovl_En_Ssh/z_en_ssh.c +++ b/src/overlays/actors/ovl_En_Ssh/z_en_ssh.c @@ -595,7 +595,7 @@ s32 EnSsh_SetCylinderOC(EnSsh* this, PlayState* play) { Matrix_Push(); Matrix_Translate(colliderPos.x, colliderPos.y, colliderPos.z, MTXMODE_NEW); - Matrix_RotateYF(BINANG_TO_RAD(this->initialYaw), MTXMODE_APPLY); + Matrix_RotateYF(BINANG_TO_RAD_ALT(this->initialYaw), MTXMODE_APPLY); Matrix_MultVec3f(&colliderOffsets[i], &colliderPos); Matrix_Pop(); diff --git a/src/overlays/actors/ovl_En_Sw/z_en_sw.c b/src/overlays/actors/ovl_En_Sw/z_en_sw.c index d8dd72923b..bbc010a2aa 100644 --- a/src/overlays/actors/ovl_En_Sw/z_en_sw.c +++ b/src/overlays/actors/ovl_En_Sw/z_en_sw.c @@ -277,7 +277,7 @@ void func_808D90F0(EnSw* this, s32 arg1, s16 arg2) { temp = arg2; } - Matrix_RotateAxisF(BINANG_TO_RAD(temp), &this->unk_368, MTXMODE_NEW); + Matrix_RotateAxisF(BINANG_TO_RAD_ALT(temp), &this->unk_368, MTXMODE_NEW); Matrix_MultVec3f(&this->unk_350, &sp2C); Math_Vec3f_Copy(&this->unk_350, &sp2C); Math3D_CrossProduct(&this->unk_368, &this->unk_350, &this->unk_35C); diff --git a/src/overlays/actors/ovl_En_Tanron3/z_en_tanron3.c b/src/overlays/actors/ovl_En_Tanron3/z_en_tanron3.c index d991ab323f..0e7be15f36 100644 --- a/src/overlays/actors/ovl_En_Tanron3/z_en_tanron3.c +++ b/src/overlays/actors/ovl_En_Tanron3/z_en_tanron3.c @@ -458,7 +458,7 @@ void EnTanron3_Draw(Actor* thisx, PlayState* play) { } SkelAnime_DrawFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, EnTanron3_OverrideLimbDraw, NULL, &this->actor); - POLY_OPA_DISP = func_801660B8(play, POLY_OPA_DISP); + POLY_OPA_DISP = Play_SetFog(play, POLY_OPA_DISP); CLOSE_DISPS(play->state.gfxCtx); } diff --git a/src/overlays/actors/ovl_En_Test3/z_en_test3.c b/src/overlays/actors/ovl_En_Test3/z_en_test3.c index dade95ee3f..22883d53db 100644 --- a/src/overlays/actors/ovl_En_Test3/z_en_test3.c +++ b/src/overlays/actors/ovl_En_Test3/z_en_test3.c @@ -1294,7 +1294,7 @@ void EnTest3_Draw(Actor* thisx, PlayState* play2) { this->player.skelAnime.dListCount, EnTest3_OverrideLimbDraw, EnTest3_PostLimbDraw, &this->player.actor, 0); if (this->player.invincibilityTimer > 0) { - POLY_OPA_DISP = func_801660B8(play, POLY_OPA_DISP); + POLY_OPA_DISP = Play_SetFog(play, POLY_OPA_DISP); } if ((this->player.getItemDrawId - 1) != GID_NONE) { Player_DrawGetItem(play, &this->player); diff --git a/src/overlays/actors/ovl_En_Test4/z_en_test4.c b/src/overlays/actors/ovl_En_Test4/z_en_test4.c index 1dcb6ccb4d..5a6c4573f7 100644 --- a/src/overlays/actors/ovl_En_Test4/z_en_test4.c +++ b/src/overlays/actors/ovl_En_Test4/z_en_test4.c @@ -283,7 +283,7 @@ void func_80A425E4(EnTest4* this, PlayState* play) { gSaveContext.screenScale = 1000.0f; } if (gSaveContext.screenScale != 1000.0f) { - gSaveContext.screenScaleFlag = 1; + gSaveContext.screenScaleFlag = true; } } } @@ -310,7 +310,7 @@ void EnTest4_Init(Actor* thisx, PlayState* play) { } else { sIsLoaded = true; this->actor.room = -1; - gSaveContext.screenScaleFlag = 0; + gSaveContext.screenScaleFlag = false; gSaveContext.screenScale = 1000.0f; if (CURRENT_DAY == 0) { if (gSaveContext.save.time < CLOCK_TIME(6, 1)) { @@ -355,7 +355,7 @@ void EnTest4_Init(Actor* thisx, PlayState* play) { this->lastBellTime = gSaveContext.save.time; if ((sCutscenes[this->unk_144] < 0) || (play->actorCtx.flags & ACTORCTX_FLAG_1)) { - gSaveContext.screenScaleFlag = 0; + gSaveContext.screenScaleFlag = false; gSaveContext.screenScale = 1000.0f; } } @@ -456,7 +456,7 @@ void func_80A42AB8(EnTest4* this, PlayState* play) { } gSaveContext.nextCutsceneIndex = 0xFFF1; play->transitionTrigger = TRANS_TRIGGER_START; - play->transitionType = TRANS_TYPE_02; + play->transitionType = TRANS_TYPE_FADE_BLACK; player->stateFlags1 |= PLAYER_STATE1_200; Actor_Kill(&this->actor); } diff --git a/src/overlays/actors/ovl_En_Test6/z_en_test6.c b/src/overlays/actors/ovl_En_Test6/z_en_test6.c index c0915fce61..6f1c5ac543 100644 --- a/src/overlays/actors/ovl_En_Test6/z_en_test6.c +++ b/src/overlays/actors/ovl_En_Test6/z_en_test6.c @@ -183,16 +183,16 @@ void func_80A90730(EnTest6* this, PlayState* play) { } } -void func_80A90C08(s16 arg0) { - func_8016566C(arg0); +void EnTest6_EnableMotionBlur(s16 alpha) { + Play_EnableMotionBlur(alpha); } -void func_80A90C34(void) { - func_80165690(); +void EnTest6_DisableMotionBlur(void) { + Play_DisableMotionBlur(); } void func_80A90C54(PlayState* play, f32 arg1) { - play->envCtx.fillScreen = 1; + play->envCtx.fillScreen = true; play->envCtx.screenFillColor[0] = 250; play->envCtx.screenFillColor[1] = 250; play->envCtx.screenFillColor[2] = 250; @@ -200,7 +200,7 @@ void func_80A90C54(PlayState* play, f32 arg1) { } void func_80A90D20(PlayState* play) { - play->envCtx.fillScreen = 0; + play->envCtx.fillScreen = false; } void func_80A90D34(EnTest6* this, PlayState* play, EnTest6Struct* ptr) { @@ -211,7 +211,7 @@ void func_80A90D34(EnTest6* this, PlayState* play, EnTest6Struct* ptr) { if (ptr->unk_00 != 0) { Matrix_Translate(ptr->unk_08 * ptr->unk_04, ptr->unk_0C, ptr->unk_10 * ptr->unk_04, MTXMODE_NEW); Matrix_Scale(ptr->unk_04 * 0.02f, ptr->unk_04 * 0.02f, ptr->unk_04 * 0.02f, MTXMODE_APPLY); - POLY_OPA_DISP = func_801660B8(play, POLY_OPA_DISP); + POLY_OPA_DISP = Play_SetFog(play, POLY_OPA_DISP); POLY_OPA_DISP = func_8012C724(POLY_OPA_DISP); gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(D_80A9402C[ptr->unk_00])); @@ -338,8 +338,8 @@ void EnTest6_Destroy(Actor* thisx, PlayState* play2) { play->envCtx.lightSettings.fogColor[1] = 0; play->envCtx.lightSettings.fogColor[2] = 0; play->envCtx.lightSettings.fogNear = 0; - play->envCtx.lightSettings.fogFar = 0; - play->envCtx.fillScreen = 0; + play->envCtx.lightSettings.zFar = 0; + play->envCtx.fillScreen = false; for (i = 0; i < ARRAY_COUNT(this->lights); i++) { LightContext_RemoveLight(play, &play->lightCtx, this->lights[i].node); @@ -393,10 +393,10 @@ void func_80A916F0(EnTest6* this, PlayState* play) { Player* player = GET_PLAYER(play); player->actor.freezeTimer = 0; - play->unk_18844 = 0; + play->unk_18844 = false; ActorCutscene_Stop(play->playerActorCsIds[8]); func_800B7298(play, NULL, PLAYER_CSMODE_6); - func_80A90C34(); + EnTest6_DisableMotionBlur(); Distortion_ClearType(DISTORTION_TYPE_5); Actor_Kill(&this->actor); } @@ -462,10 +462,10 @@ void func_80A91760(EnTest6* this, PlayState* play) { ((subCam->at.z - subCam->eye.z) * 0.2f); } } - func_80A90C08(0x78); + EnTest6_EnableMotionBlur(120); Distortion_SetType(DISTORTION_TYPE_5); Distortion_SetCountdown(80); - play->unk_18844 = 1; + play->unk_18844 = true; this->unk_274 = 95; } break; @@ -517,9 +517,9 @@ void func_80A91760(EnTest6* this, PlayState* play) { if (this->unk_27A == 10) { this->unk_14C = 0.1f; - func_80A90C34(); + EnTest6_DisableMotionBlur(); Distortion_ClearType(DISTORTION_TYPE_5); - play->unk_18844 = 0; + play->unk_18844 = false; if (this->unk_254 != NULL) { ZeldaArena_Free(this->unk_254); } @@ -614,10 +614,10 @@ void func_80A92118(EnTest6* this, PlayState* play) { Player* player = GET_PLAYER(play); player->actor.freezeTimer = 0; - play->unk_18844 = 0; + play->unk_18844 = false; ActorCutscene_Stop(play->playerActorCsIds[8]); func_800B7298(play, NULL, PLAYER_CSMODE_6); - func_80A90C34(); + EnTest6_DisableMotionBlur(); Distortion_ClearType(DISTORTION_TYPE_5); Actor_Kill(&this->actor); } @@ -657,7 +657,7 @@ void func_80A92188(EnTest6* this, PlayState* play) { func_800FD5E0(play, &D_80A94070, 1.0f); func_800FD654(play, &D_80A94068, 1.0f); func_800FD698(play, D_80A94074, D_80A94078, 1.0f); - play->unk_18844 = 1; + play->unk_18844 = true; } if (this->unk_27A == 15) { @@ -665,7 +665,7 @@ void func_80A92188(EnTest6* this, PlayState* play) { func_800FD5E0(play, &D_80A94070, 0.0f); func_800FD654(play, &D_80A94068, 0.0f); func_800FD698(play, D_80A94074, D_80A94078, 0.0f); - play->unk_18844 = 0; + play->unk_18844 = false; } if (this->unk_286 >= 20) { @@ -673,18 +673,18 @@ void func_80A92188(EnTest6* this, PlayState* play) { func_800FD5E0(play, &D_80A94070, this->unk_160); func_800FD654(play, &D_80A94068, this->unk_160); func_800FD698(play, D_80A94074, D_80A94078, this->unk_160); - play->unk_18844 = 0; + play->unk_18844 = false; } func_800B8F98(&player->actor, NA_SE_PL_FLYING_AIR - SFX_FLAG); switch (this->unk_27A) { case 119: - func_80A90C08(0x32); + EnTest6_EnableMotionBlur(50); break; case 115: - func_80A90C08(0x14); + EnTest6_EnableMotionBlur(20); Distortion_SetType(DISTORTION_TYPE_5); Distortion_SetCountdown(90); this->unk_274 = 2; @@ -704,24 +704,24 @@ void func_80A92188(EnTest6* this, PlayState* play) { break; case 61: - func_80A90C08(0x96); + EnTest6_EnableMotionBlur(150); this->unk_274 = 4; break; case 51: - func_80A90C08(0xB4); + EnTest6_EnableMotionBlur(180); this->unk_274 = 5; break; case 14: case 15: - func_80A90C08(0x32); + EnTest6_EnableMotionBlur(50); Distortion_ClearType(DISTORTION_TYPE_5); this->unk_274 = 0; break; case 1: - func_80A90C34(); + EnTest6_DisableMotionBlur(); if (CHECK_EVENTINF(EVENTINF_52)) { this->unk_274 = 9; } @@ -976,7 +976,7 @@ void func_80A92950(EnTest6* this, PlayState* play) { this->unk_276 = 99; play->transitionTrigger = TRANS_TRIGGER_START; play->nextEntrance = gSaveContext.respawn[RESPAWN_MODE_RETURN].entrance; - play->transitionType = TRANS_TYPE_02; + play->transitionType = TRANS_TYPE_FADE_BLACK; if ((gSaveContext.save.time > CLOCK_TIME(18, 0)) || (gSaveContext.save.time < CLOCK_TIME(6, 0))) { gSaveContext.respawnFlag = -0x63; SET_EVENTINF(EVENTINF_27); @@ -1058,7 +1058,7 @@ void func_80A92950(EnTest6* this, PlayState* play) { this->unk_276 = 99; play->transitionTrigger = TRANS_TRIGGER_START; play->nextEntrance = gSaveContext.respawn[RESPAWN_MODE_RETURN].entrance; - play->transitionType = TRANS_TYPE_02; + play->transitionType = TRANS_TYPE_FADE_BLACK; gSaveContext.respawnFlag = 2; play->msgCtx.ocarinaMode = 4; } diff --git a/src/overlays/actors/ovl_En_Test7/z_en_test7.c b/src/overlays/actors/ovl_En_Test7/z_en_test7.c index 43facd8312..bf0dc785b9 100644 --- a/src/overlays/actors/ovl_En_Test7/z_en_test7.c +++ b/src/overlays/actors/ovl_En_Test7/z_en_test7.c @@ -438,7 +438,7 @@ void func_80AF19A8(EnTest7* this, PlayState* play) { } else { ActorCutscene_Start(play->playerActorCsIds[8], NULL); func_80AF082C(this, func_80AF1A2C); - play->unk_18844 = 1; + play->unk_18844 = true; } } @@ -461,7 +461,7 @@ void func_80AF1A2C(EnTest7* this, PlayState* play) { func_80AF082C(this, func_80AF1CA0); this->unk_144 |= 0x20; Audio_PlaySfxAtPos(&this->actor.projectedPos, NA_SE_PL_WARP_WING_OPEN); - func_8016566C(0x78); + Play_EnableMotionBlur(120); } } @@ -599,10 +599,10 @@ void func_80AF2030(EnTest7* this, PlayState* play) { R_PLAY_FILL_SCREEN_G = 255; R_PLAY_FILL_SCREEN_B = 255; R_PLAY_FILL_SCREEN_ALPHA = 255; - play->unk_18844 = 0; + play->unk_18844 = false; this->unk_144 &= ~4; func_80AF082C(this, func_80AF21E8); - func_80165690(); + Play_DisableMotionBlur(); } } @@ -676,7 +676,7 @@ void func_80AF2350(EnTest7* this, PlayState* play) { } play->transitionTrigger = TRANS_TRIGGER_START; - play->transitionType = TRANS_TYPE_02; + play->transitionType = TRANS_TYPE_FADE_BLACK; gSaveContext.seqId = (u8)NA_BGM_DISABLED; gSaveContext.ambienceId = AMBIENCE_ID_DISABLED; } diff --git a/src/overlays/actors/ovl_En_Tg/z_en_tg.c b/src/overlays/actors/ovl_En_Tg/z_en_tg.c index 947f97b627..0b7a5c3f30 100644 --- a/src/overlays/actors/ovl_En_Tg/z_en_tg.c +++ b/src/overlays/actors/ovl_En_Tg/z_en_tg.c @@ -259,7 +259,7 @@ void EnTg_DrawHearts(PlayState* play, EnTgHeartEffect* effect, s32 numEffects) { OPEN_DISPS(play->state.gfxCtx); - POLY_OPA_DISP = func_801660B8(play, POLY_OPA_DISP); + POLY_OPA_DISP = Play_SetFog(play, POLY_OPA_DISP); POLY_OPA_DISP = func_8012C724(POLY_OPA_DISP); for (i = 0; i < numEffects; i++, effect++) { diff --git a/src/overlays/actors/ovl_En_Tru_Mt/z_en_tru_mt.c b/src/overlays/actors/ovl_En_Tru_Mt/z_en_tru_mt.c index e51af14ae7..e5ff4350f2 100644 --- a/src/overlays/actors/ovl_En_Tru_Mt/z_en_tru_mt.c +++ b/src/overlays/actors/ovl_En_Tru_Mt/z_en_tru_mt.c @@ -394,8 +394,8 @@ void func_80B76BB8(EnTruMt* this, PlayState* play) { if (Message_GetState(&play->msgCtx) == TEXT_STATE_5) { if (Message_ShouldAdvance(play)) { play->nextEntrance = ENTRANCE(TOURIST_INFORMATION, 1); - play->transitionType = TRANS_TYPE_03; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + play->transitionType = TRANS_TYPE_FADE_WHITE; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; play->transitionTrigger = TRANS_TRIGGER_START; } } diff --git a/src/overlays/actors/ovl_En_Tsn/z_en_tsn.c b/src/overlays/actors/ovl_En_Tsn/z_en_tsn.c index a9631d96b3..5b6f7b9786 100644 --- a/src/overlays/actors/ovl_En_Tsn/z_en_tsn.c +++ b/src/overlays/actors/ovl_En_Tsn/z_en_tsn.c @@ -326,12 +326,12 @@ void func_80AE04FC(EnTsn* this, PlayState* play) { this->actionFunc = func_80AE0704; if (itemAction == PLAYER_IA_PICTO_BOX) { if (CHECK_QUEST_ITEM(QUEST_PICTOGRAPH)) { - if (Snap_CheckFlag(PICTOGRAPH_PIRATE_GOOD)) { + if (Snap_CheckFlag(PICTO_VALID_PIRATE_GOOD)) { player->actor.textId = 0x107B; return; } - if (Snap_CheckFlag(PICTOGRAPH_PIRATE_TOO_FAR)) { + if (Snap_CheckFlag(PICTO_VALID_PIRATE_TOO_FAR)) { player->actor.textId = 0x10A9; return; } diff --git a/src/overlays/actors/ovl_En_Warp_tag/z_en_warp_tag.c b/src/overlays/actors/ovl_En_Warp_tag/z_en_warp_tag.c index 77b857c145..ef1ae15bc1 100644 --- a/src/overlays/actors/ovl_En_Warp_tag/z_en_warp_tag.c +++ b/src/overlays/actors/ovl_En_Warp_tag/z_en_warp_tag.c @@ -157,7 +157,7 @@ void EnWarpTag_RespawnPlayer(EnWarptag* this, PlayState* play) { } else { ActorCutscene_StartAndSetUnkLinkFields(play->playerActorCsIds[4], &this->dyna.actor); func_800B8E58(player, NA_SE_PL_WARP_PLATE); - func_8016566C(0); + Play_EnableMotionBlur(0); } } else { @@ -209,13 +209,13 @@ void EnWarpTag_RespawnPlayer(EnWarptag* this, PlayState* play) { // why are we getting player home rotation from the room data? doesnt player have home.rot.y? // especially because we are converting from deg to binang, but isnt home.rot.y already in binang?? Play_SetRespawnData( - &play->state, 0, entrance, // parameter 3 is called "sceneSetup" - play->setupEntranceList[playerSpawnIndex].room, playerParams, &newRespawnPos, + &play->state, 0, entrance, play->setupEntranceList[playerSpawnIndex].room, playerParams, + &newRespawnPos, ((((playerActorEntry->rot.y >> 7) & 0x1FF) / 180.0f) * 32768.0f)); // DEG_TO_BINANG ? func_80169EFC(&play->state); - gSaveContext.respawnFlag = ~0x4; - func_80165690(); + gSaveContext.respawnFlag = -5; + Play_DisableMotionBlur(); } } @@ -224,7 +224,7 @@ void EnWarpTag_RespawnPlayer(EnWarptag* this, PlayState* play) { if (new15E < 0) { new15E = 0; } - func_80165658(new15E * 0.04f); // unknown Play_ function + Play_SetMotionBlurAlpha(new15E * (1 / 25.0f)); } } diff --git a/src/overlays/actors/ovl_En_Water_Effect/z_en_water_effect.c b/src/overlays/actors/ovl_En_Water_Effect/z_en_water_effect.c index 94890bd39a..9831040010 100644 --- a/src/overlays/actors/ovl_En_Water_Effect/z_en_water_effect.c +++ b/src/overlays/actors/ovl_En_Water_Effect/z_en_water_effect.c @@ -570,7 +570,7 @@ void func_80A5A184(Actor* thisx, PlayState* play2) { } } - POLY_OPA_DISP = func_801660B8(play, POLY_OPA_DISP); + POLY_OPA_DISP = Play_SetFog(play, POLY_OPA_DISP); CLOSE_DISPS(gfxCtx); } diff --git a/src/overlays/actors/ovl_En_Zob/z_en_zob.c b/src/overlays/actors/ovl_En_Zob/z_en_zob.c index 58dd246d8b..fdc6e47899 100644 --- a/src/overlays/actors/ovl_En_Zob/z_en_zob.c +++ b/src/overlays/actors/ovl_En_Zob/z_en_zob.c @@ -769,7 +769,7 @@ void EnZob_Draw(Actor* thisx, PlayState* play) { func_80BA0F64, func_80BA0FAC, &this->actor); if (this->unk_2F4 & 0x20) { - POLY_OPA_DISP = func_801660B8(play, POLY_OPA_DISP); + POLY_OPA_DISP = Play_SetFog(play, POLY_OPA_DISP); } CLOSE_DISPS(play->state.gfxCtx); diff --git a/src/overlays/actors/ovl_En_Zod/z_en_zod.c b/src/overlays/actors/ovl_En_Zod/z_en_zod.c index 9c7e7e6b5f..8d8065ff69 100644 --- a/src/overlays/actors/ovl_En_Zod/z_en_zod.c +++ b/src/overlays/actors/ovl_En_Zod/z_en_zod.c @@ -451,7 +451,7 @@ void EnZod_Rehearse(EnZod* this, PlayState* play) { if (this->actor.cutscene == -1) { this->actionFunc = EnZod_DoNothing; play->nextEntrance = play->setupExitList[ENZOD_GET_ENTRANCE_INDEX(&this->actor)]; - play->transitionType = TRANS_TYPE_05; + play->transitionType = TRANS_TYPE_FADE_WHITE_FAST; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.save.weekEventReg[78] &= (u8)~1; } else { @@ -645,7 +645,7 @@ void EnZod_Draw(Actor* thisx, PlayState* play) { SkelAnime_DrawFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, EnZod_OverrideLimbDraw, EnZod_PostLimbDraw, &this->actor); if (this->stateFlags & TIJO_STATE_2) { - POLY_OPA_DISP = func_801660B8(play, POLY_OPA_DISP); + POLY_OPA_DISP = Play_SetFog(play, POLY_OPA_DISP); } CLOSE_DISPS(play->state.gfxCtx); diff --git a/src/overlays/actors/ovl_En_Zos/z_en_zos.c b/src/overlays/actors/ovl_En_Zos/z_en_zos.c index ba37c3ffe3..72de2024fd 100644 --- a/src/overlays/actors/ovl_En_Zos/z_en_zos.c +++ b/src/overlays/actors/ovl_En_Zos/z_en_zos.c @@ -762,7 +762,7 @@ void EnZos_Draw(Actor* thisx, PlayState* play) { func_80BBC4E4, func_80BBC500, &this->actor); if (this->unk_2B6 & 0x40) { - POLY_OPA_DISP = func_801660B8(play, POLY_OPA_DISP); + POLY_OPA_DISP = Play_SetFog(play, POLY_OPA_DISP); } CLOSE_DISPS(play->state.gfxCtx); diff --git a/src/overlays/actors/ovl_En_Zot/z_en_zot.c b/src/overlays/actors/ovl_En_Zot/z_en_zot.c index 417a6388e9..331a153df4 100644 --- a/src/overlays/actors/ovl_En_Zot/z_en_zot.c +++ b/src/overlays/actors/ovl_En_Zot/z_en_zot.c @@ -958,8 +958,8 @@ void func_80B985EC(EnZot* this, PlayState* play) { if (itemAction > PLAYER_IA_NONE) { func_801477B4(play); if ((itemAction == PLAYER_IA_PICTO_BOX) && CHECK_QUEST_ITEM(QUEST_PICTOGRAPH) && - Snap_CheckFlag(PICTOGRAPH_LULU_HEAD)) { - if (Snap_CheckFlag(PICTOGRAPH_LULU_RIGHT_ARM) && Snap_CheckFlag(PICTOGRAPH_LULU_LEFT_ARM)) { + Snap_CheckFlag(PICTO_VALID_LULU_HEAD)) { + if (Snap_CheckFlag(PICTO_VALID_LULU_RIGHT_ARM) && Snap_CheckFlag(PICTO_VALID_LULU_LEFT_ARM)) { player->actor.textId = 0x12AE; } else { player->actor.textId = 0x12AC; diff --git a/src/overlays/actors/ovl_En_Zov/z_en_zov.c b/src/overlays/actors/ovl_En_Zov/z_en_zov.c index 851214b5d3..27d4e04b1b 100644 --- a/src/overlays/actors/ovl_En_Zov/z_en_zov.c +++ b/src/overlays/actors/ovl_En_Zov/z_en_zov.c @@ -424,7 +424,7 @@ void func_80BD1DB8(EnZov* this, PlayState* play) { case 0x1039: play->nextEntrance = play->setupExitList[ENZOV_GET_FE00(&this->picto.actor)]; - play->transitionType = TRANS_TYPE_05; + play->transitionType = TRANS_TYPE_FADE_WHITE_FAST; play->transitionTrigger = TRANS_TRIGGER_START; SET_WEEKEVENTREG(WEEKEVENTREG_78_01); this->actionFunc = func_80BD1D94; @@ -460,11 +460,11 @@ s32 EnZov_ValidatePictograph(PlayState* play, Actor* thisx) { s32 ret; EnZov* this = THIS; - ret = Snap_ValidatePictograph(play, &this->picto.actor, PICTOGRAPH_LULU_HEAD, &this->picto.actor.focus.pos, + ret = Snap_ValidatePictograph(play, &this->picto.actor, PICTO_VALID_LULU_HEAD, &this->picto.actor.focus.pos, &this->picto.actor.shape.rot, 10.0f, 300.0f, -1); - ret |= Snap_ValidatePictograph(play, &this->picto.actor, PICTOGRAPH_LULU_RIGHT_ARM, &this->unk_308, + ret |= Snap_ValidatePictograph(play, &this->picto.actor, PICTO_VALID_LULU_RIGHT_ARM, &this->unk_308, &this->picto.actor.shape.rot, 50.0f, 160.0f, 0x3000); - ret |= Snap_ValidatePictograph(play, &this->picto.actor, PICTOGRAPH_LULU_LEFT_ARM, &this->unk_314, + ret |= Snap_ValidatePictograph(play, &this->picto.actor, PICTO_VALID_LULU_LEFT_ARM, &this->unk_314, &this->picto.actor.shape.rot, 50.0f, 160.0f, 0x3000); return ret; } diff --git a/src/overlays/actors/ovl_Obj_Grass/z_obj_grass.c b/src/overlays/actors/ovl_Obj_Grass/z_obj_grass.c index 3414aaafad..501fb2ee41 100644 --- a/src/overlays/actors/ovl_Obj_Grass/z_obj_grass.c +++ b/src/overlays/actors/ovl_Obj_Grass/z_obj_grass.c @@ -73,13 +73,13 @@ s32 func_809A9110(PlayState* play, Vec3f* arg1) { SkinMatrix_Vec3fMtxFMultXYZW(&play->viewProjectionMtxF, arg1, &sp20, &sp2C); - if ((play->unk_187F0.z * -130.13191f) < sp20.z) { + if ((play->projectionMtxFDiagonal.z * -130.13191f) < sp20.z) { if (sp2C < 1.0f) { sp2C = 1.0f; } - if (((fabsf(sp20.x) - (130.13191f * play->unk_187F0.x)) < sp2C) && - ((fabsf(sp20.y) - (130.13191f * play->unk_187F0.y)) < sp2C)) { + if (((fabsf(sp20.x) - (130.13191f * play->projectionMtxFDiagonal.x)) < sp2C) && + ((fabsf(sp20.y) - (130.13191f * play->projectionMtxFDiagonal.y)) < sp2C)) { return true; } } diff --git a/src/overlays/actors/ovl_Obj_Hunsui/z_obj_hunsui.c b/src/overlays/actors/ovl_Obj_Hunsui/z_obj_hunsui.c index f35d270a03..a861e9e63e 100644 --- a/src/overlays/actors/ovl_Obj_Hunsui/z_obj_hunsui.c +++ b/src/overlays/actors/ovl_Obj_Hunsui/z_obj_hunsui.c @@ -3,7 +3,7 @@ * Overlay: ovl_Obj_Hunsui * Description: Switch-Activated Geyser */ - +#include "prevent_bss_reordering.h" #include "z_obj_hunsui.h" #include "objects/object_hunsui/object_hunsui.h" diff --git a/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.c b/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.c index 704bc58c34..7d2ed19995 100644 --- a/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.c +++ b/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.c @@ -452,12 +452,12 @@ void ObjTokeidai_TowerOpening_EndCutscene(ObjTokeidai* this, PlayState* play) { gSaveContext.respawnFlag = 2; play->transitionTrigger = TRANS_TRIGGER_START; play->nextEntrance = gSaveContext.respawn[RESPAWN_MODE_RETURN].entrance; - play->transitionType = TRANS_TYPE_02; + play->transitionType = TRANS_TYPE_FADE_BLACK; if (gSaveContext.respawn[RESPAWN_MODE_RETURN].playerParams == PLAYER_PARAMS(0xFF, PLAYER_INITMODE_TELESCOPE)) { - gSaveContext.nextTransitionType = TRANS_TYPE_21; + gSaveContext.nextTransitionType = TRANS_TYPE_CIRCLE; } else { - gSaveContext.nextTransitionType = TRANS_TYPE_02; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; } } this->actionFunc = ObjTokeidai_DoNothing; diff --git a/src/overlays/actors/ovl_Obj_Um/z_obj_um.c b/src/overlays/actors/ovl_Obj_Um/z_obj_um.c index 2a819b7911..c9ac4899c5 100644 --- a/src/overlays/actors/ovl_Obj_Um/z_obj_um.c +++ b/src/overlays/actors/ovl_Obj_Um/z_obj_um.c @@ -838,7 +838,7 @@ s32 func_80B795A0(PlayState* play, ObjUm* this, s32 arg2) { D_801BDAA0 = 1; } play->transitionType = TRANS_TYPE_64; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; play->transitionTrigger = TRANS_TRIGGER_START; phi_v1 = true; } else { @@ -1142,7 +1142,7 @@ void ObjUm_RanchWaitPathFinished(ObjUm* this, PlayState* play) { ActorCutscene_Stop(this->dyna.actor.cutscene); play->nextEntrance = ENTRANCE(MILK_ROAD, 5); play->transitionType = TRANS_TYPE_64; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; play->transitionTrigger = TRANS_TRIGGER_START; } else { func_80B79524(this); @@ -1245,7 +1245,7 @@ void func_80B7A2AC(ObjUm* this, PlayState* play) { case OBJUM_PATH_STATE_FINISH: play->nextEntrance = ENTRANCE(GORMAN_TRACK, 4); play->transitionType = TRANS_TYPE_64; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; play->transitionTrigger = TRANS_TRIGGER_START; break; @@ -1303,14 +1303,14 @@ void ObjUm_RunMinigame(ObjUm* this, PlayState* play) { if (!this->areAllPotsBroken) { play->nextEntrance = ENTRANCE(MILK_ROAD, 6); play->transitionType = TRANS_TYPE_64; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; play->transitionTrigger = TRANS_TRIGGER_START; SET_WEEKEVENTREG(WEEKEVENTREG_52_01); CLEAR_WEEKEVENTREG(WEEKEVENTREG_52_02); } else { play->nextEntrance = ENTRANCE(ROMANI_RANCH, 8); play->transitionType = TRANS_TYPE_64; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; play->transitionTrigger = TRANS_TRIGGER_START; SET_WEEKEVENTREG(WEEKEVENTREG_52_02); CLEAR_WEEKEVENTREG(WEEKEVENTREG_52_01); @@ -1552,7 +1552,7 @@ void ObjUm_PostMilkRunWaitPathFinished(ObjUm* this, PlayState* play) { gSaveContext.nextCutsceneIndex = 0xFFF3; play->nextEntrance = ENTRANCE(TERMINA_FIELD, 0); play->transitionType = TRANS_TYPE_64; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; play->transitionTrigger = TRANS_TRIGGER_START; gSaveContext.save.time += CLOCK_TIME(1, 0) + 2; } diff --git a/src/overlays/actors/ovl_Obj_Wturn/z_obj_wturn.c b/src/overlays/actors/ovl_Obj_Wturn/z_obj_wturn.c index 184fed3d67..067618491d 100644 --- a/src/overlays/actors/ovl_Obj_Wturn/z_obj_wturn.c +++ b/src/overlays/actors/ovl_Obj_Wturn/z_obj_wturn.c @@ -70,7 +70,7 @@ void func_808A7AAC(ObjWturn* this, PlayState* play) { Vec3f subCamAt; ActorCutscene_StartAndSetUnkLinkFields(this->actor.cutscene, &this->actor); - func_8016566C(140); + Play_EnableMotionBlur(140); this->subCamId = ActorCutscene_GetCurrentSubCamId(this->actor.cutscene); func_800B7298(play, &this->actor, PLAYER_CSMODE_21); subCamAt.x = player->actor.focus.pos.x; @@ -99,7 +99,7 @@ void func_808A7C04(ObjWturn* this, PlayState* play) { func_800B7298(play, &this->actor, PLAYER_CSMODE_84); func_800B8E58(player, NA_SE_VO_NAVY_ENEMY); this->unk_14A = 0; - func_80165690(); + Play_DisableMotionBlur(); this->actionFunc = func_808A7C78; } @@ -113,7 +113,7 @@ void func_808A7C78(ObjWturn* this, PlayState* play) { Play_SetCameraAtEyeUp(play, this->subCamId, &player->actor.focus.pos, &subCam->eye, &sSubCamUp); if (this->unk_14A == 1) { play->transitionType = TRANS_TYPE_64; - gSaveContext.nextTransitionType = TRANS_TYPE_03; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; gSaveContext.nextCutsceneIndex = 0; if (play->sceneId == SCENE_F40) { play->nextEntrance = ENTRANCE(STONE_TOWER_INVERTED, 0); diff --git a/src/overlays/effects/ovl_Effect_Ss_Blast/z_eff_ss_blast.c b/src/overlays/effects/ovl_Effect_Ss_Blast/z_eff_ss_blast.c index 93353f28cc..c903bac6d4 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Blast/z_eff_ss_blast.c +++ b/src/overlays/effects/ovl_Effect_Ss_Blast/z_eff_ss_blast.c @@ -70,7 +70,7 @@ void EffectSsBlast_Draw(PlayState* play, u32 index, EffectSs* this) { func_8012C2DC(play->state.gfxCtx); gDPSetEnvColor(POLY_XLU_DISP++, this->rEnvColorR, this->rEnvColorG, this->rEnvColorB, this->rEnvColorA); - func_801691F0(play, &mf, &this->pos); + Play_GetFloorSurface(play, &mf, &this->pos); gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, this->rPrimColorR, this->rPrimColorG, this->rPrimColorB, this->rPrimColorA); Matrix_Put(&mf); Matrix_Scale(radius, radius, radius, MTXMODE_APPLY); diff --git a/src/overlays/fbdemos/ovl_fbdemo_triforce/z_fbdemo_triforce.c b/src/overlays/fbdemos/ovl_fbdemo_triforce/z_fbdemo_triforce.c index 00e7cfabda..f4f68d2302 100644 --- a/src/overlays/fbdemos/ovl_fbdemo_triforce/z_fbdemo_triforce.c +++ b/src/overlays/fbdemos/ovl_fbdemo_triforce/z_fbdemo_triforce.c @@ -4,6 +4,7 @@ * Description: */ +#include "global.h" #include "z_fbdemo_triforce.h" #include "assets/objects/object_fbdemo_triforce/ovl_fbdemo_triforce.c" diff --git a/src/overlays/fbdemos/ovl_fbdemo_triforce/z_fbdemo_triforce.h b/src/overlays/fbdemos/ovl_fbdemo_triforce/z_fbdemo_triforce.h index 06d807a08e..cd7f4563e1 100644 --- a/src/overlays/fbdemos/ovl_fbdemo_triforce/z_fbdemo_triforce.h +++ b/src/overlays/fbdemos/ovl_fbdemo_triforce/z_fbdemo_triforce.h @@ -1,7 +1,8 @@ #ifndef Z_FBDEMO_TRIFORCE_H #define Z_FBDEMO_TRIFORCE_H -#include "global.h" +#include "ultra64.h" +#include "color.h" typedef enum { /* 0 */ STATE_NONE, diff --git a/src/overlays/fbdemos/ovl_fbdemo_wipe1/z_fbdemo_wipe1.c b/src/overlays/fbdemos/ovl_fbdemo_wipe1/z_fbdemo_wipe1.c index ed12d400ed..1ce5f0d598 100644 --- a/src/overlays/fbdemos/ovl_fbdemo_wipe1/z_fbdemo_wipe1.c +++ b/src/overlays/fbdemos/ovl_fbdemo_wipe1/z_fbdemo_wipe1.c @@ -4,6 +4,7 @@ * Description: */ +#include "global.h" #include "z_fbdemo_wipe1.h" void* TransitionWipe1_Init(void* thisx); diff --git a/src/overlays/fbdemos/ovl_fbdemo_wipe1/z_fbdemo_wipe1.h b/src/overlays/fbdemos/ovl_fbdemo_wipe1/z_fbdemo_wipe1.h index 971940bb2c..39f881b390 100644 --- a/src/overlays/fbdemos/ovl_fbdemo_wipe1/z_fbdemo_wipe1.h +++ b/src/overlays/fbdemos/ovl_fbdemo_wipe1/z_fbdemo_wipe1.h @@ -1,10 +1,11 @@ #ifndef Z_FBDEMO_WIPE1_H #define Z_FBDEMO_WIPE1_H -#include "global.h" +#include "ultra64.h" +#include "color.h" typedef struct { - /* 0x0000 */ char unk_0[0x218]; + /* 0x000 */ char unk_0[0x218]; } TransitionWipe1; // size = 0x218 #endif diff --git a/src/overlays/fbdemos/ovl_fbdemo_wipe3/z_fbdemo_wipe3.c b/src/overlays/fbdemos/ovl_fbdemo_wipe3/z_fbdemo_wipe3.c index c33f3c8c78..759e1511c4 100644 --- a/src/overlays/fbdemos/ovl_fbdemo_wipe3/z_fbdemo_wipe3.c +++ b/src/overlays/fbdemos/ovl_fbdemo_wipe3/z_fbdemo_wipe3.c @@ -4,6 +4,7 @@ * Description: */ +#include "global.h" #include "z_fbdemo_wipe3.h" void* TransitionWipe3_Init(void* thisx); diff --git a/src/overlays/fbdemos/ovl_fbdemo_wipe3/z_fbdemo_wipe3.h b/src/overlays/fbdemos/ovl_fbdemo_wipe3/z_fbdemo_wipe3.h index 8fed0dcfe9..b023ecb8bb 100644 --- a/src/overlays/fbdemos/ovl_fbdemo_wipe3/z_fbdemo_wipe3.h +++ b/src/overlays/fbdemos/ovl_fbdemo_wipe3/z_fbdemo_wipe3.h @@ -1,10 +1,11 @@ #ifndef Z_FBDEMO_WIPE3_H #define Z_FBDEMO_WIPE3_H -#include "global.h" +#include "ultra64.h" +#include "color.h" typedef struct { - /* 0x0000 */ char unk_0[0x120]; + /* 0x000 */ char unk_0[0x120]; } TransitionWipe3; // size = 0x120 #endif diff --git a/src/overlays/fbdemos/ovl_fbdemo_wipe4/z_fbdemo_wipe4.c b/src/overlays/fbdemos/ovl_fbdemo_wipe4/z_fbdemo_wipe4.c index e91d8ab5e0..1acb8c07a3 100644 --- a/src/overlays/fbdemos/ovl_fbdemo_wipe4/z_fbdemo_wipe4.c +++ b/src/overlays/fbdemos/ovl_fbdemo_wipe4/z_fbdemo_wipe4.c @@ -4,6 +4,7 @@ * Description: */ +#include "global.h" #include "z_fbdemo_wipe4.h" void* TransitionWipe4_Init(void* thisx); diff --git a/src/overlays/fbdemos/ovl_fbdemo_wipe4/z_fbdemo_wipe4.h b/src/overlays/fbdemos/ovl_fbdemo_wipe4/z_fbdemo_wipe4.h index 8a677c2a4b..b0aec44be4 100644 --- a/src/overlays/fbdemos/ovl_fbdemo_wipe4/z_fbdemo_wipe4.h +++ b/src/overlays/fbdemos/ovl_fbdemo_wipe4/z_fbdemo_wipe4.h @@ -1,10 +1,11 @@ #ifndef Z_FBDEMO_WIPE4_H #define Z_FBDEMO_WIPE4_H -#include "global.h" +#include "ultra64.h" +#include "color.h" typedef struct { - /* 0x0000 */ char unk_0[0x28]; + /* 0x00 */ char unk_0[0x28]; } TransitionWipe4; // size = 0x28 #endif diff --git a/src/overlays/fbdemos/ovl_fbdemo_wipe5/z_fbdemo_wipe5.c b/src/overlays/fbdemos/ovl_fbdemo_wipe5/z_fbdemo_wipe5.c index a4b0cfa742..0c20dba93a 100644 --- a/src/overlays/fbdemos/ovl_fbdemo_wipe5/z_fbdemo_wipe5.c +++ b/src/overlays/fbdemos/ovl_fbdemo_wipe5/z_fbdemo_wipe5.c @@ -4,6 +4,7 @@ * Description: */ +#include "global.h" #include "z_fbdemo_wipe5.h" #define THIS ((TransitionWipe5*)thisx) diff --git a/src/overlays/fbdemos/ovl_fbdemo_wipe5/z_fbdemo_wipe5.h b/src/overlays/fbdemos/ovl_fbdemo_wipe5/z_fbdemo_wipe5.h index d5cd9137d8..c40c4450aa 100644 --- a/src/overlays/fbdemos/ovl_fbdemo_wipe5/z_fbdemo_wipe5.h +++ b/src/overlays/fbdemos/ovl_fbdemo_wipe5/z_fbdemo_wipe5.h @@ -1,7 +1,8 @@ #ifndef Z_FBDEMO_WIPE5_H #define Z_FBDEMO_WIPE5_H -#include "global.h" +#include "ultra64.h" +#include "color.h" typedef struct { /* 0x00 */ Color_RGBA8_u32 primColor; diff --git a/src/overlays/gamestates/ovl_select/z_select.c b/src/overlays/gamestates/ovl_select/z_select.c index 461192d485..183f6b0692 100644 --- a/src/overlays/gamestates/ovl_select/z_select.c +++ b/src/overlays/gamestates/ovl_select/z_select.c @@ -35,7 +35,7 @@ void MapSelect_LoadGame(MapSelectState* this, u32 entrance, s32 spawn) { if (spawn != 0) { gSaveContext.save.entrance = - Entrance_Create((s32)gSaveContext.save.entrance >> 9, spawn, gSaveContext.save.entrance & 0xF); + Entrance_Create(gSaveContext.save.entrance >> 9, spawn, gSaveContext.save.entrance & 0xF); } if (gSaveContext.save.entrance == ENTRANCE(CLOCK_TOWER_INTERIOR, 0)) { gSaveContext.save.day = 0; diff --git a/src/overlays/gamestates/ovl_title/z_title.c b/src/overlays/gamestates/ovl_title/z_title.c index 2b23bf565e..e31e31c7db 100644 --- a/src/overlays/gamestates/ovl_title/z_title.c +++ b/src/overlays/gamestates/ovl_title/z_title.c @@ -111,7 +111,7 @@ void ConsoleLogo_Draw(GameState* thisx) { 1 << 10, 1 << 10); } - func_800FC444(this->state.gfxCtx, 0, 0, 0, this->coverAlpha, 2); + Environment_FillScreen(this->state.gfxCtx, 0, 0, 0, this->coverAlpha, 2); sTitleRotation += 300; diff --git a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h index 7349db241d..849c7020e3 100644 --- a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h +++ b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h @@ -120,7 +120,7 @@ typedef enum { /* 0 */ PAUSE_BG_PRERENDER_OFF, /* 1 */ PAUSE_BG_PRERENDER_SETUP, // The current frame is only drawn for the purpose of serving as the pause background. /* 2 */ PAUSE_BG_PRERENDER_PROCESS, // The previous frame was PAUSE_BG_PRERENDER_DRAW, now apply prerender filters. - /* 3 */ PAUSE_BG_PRERENDER_DONE, // The pause background is ready to be used. + /* 3 */ PAUSE_BG_PRERENDER_READY, // The pause background is ready to be used. /* 4 */ PAUSE_BG_PRERENDER_UNK4, /* 5 */ PAUSE_BG_PRERENDER_MAX } PauseBgPreRenderState; diff --git a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.c b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.c index 5a47289afb..d1c42dd73f 100644 --- a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.c +++ b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.c @@ -1144,7 +1144,7 @@ void KaleidoScope_Update(PlayState* play) { if (pauseCtx->promptChoice == PAUSE_PROMPT_YES) { func_80169FDC(&play->state); gSaveContext.respawnFlag = -2; - gSaveContext.nextTransitionType = TRANS_TYPE_02; + gSaveContext.nextTransitionType = TRANS_TYPE_FADE_BLACK; gSaveContext.save.playerData.health = 0x30; Audio_SetSpec(0xA); gSaveContext.healthAccumulator = 0; @@ -1432,7 +1432,7 @@ void KaleidoScope_Update(PlayState* play) { } // Process the Cursor input - if ((R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_DONE) && (pauseCtx->debugEditor == DEBUG_EDITOR_NONE) && + if ((R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_READY) && (pauseCtx->debugEditor == DEBUG_EDITOR_NONE) && !IS_PAUSE_STATE_OWLWARP && (((pauseCtx->state >= PAUSE_STATE_OPENING_3) && (pauseCtx->state <= PAUSE_STATE_SAVEPROMPT)) || ((pauseCtx->state >= PAUSE_STATE_GAMEOVER_2) && (pauseCtx->state <= PAUSE_STATE_UNPAUSE_SETUP)))) { diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 493f05f563..7dfe176114 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -1708,11 +1708,11 @@ 0x800F5004:("Font_LoadOrderedFont",), 0x800F5090:("func_800F5090",), 0x800F50D4:("func_800F50D4",), - 0x800F510C:("Kankyo_Init",), + 0x800F510C:("Environment_Init",), 0x800F5954:("func_800F5954",), 0x800F5A8C:("Environment_LerpWeight",), 0x800F5B10:("func_800F5B10",), - 0x800F5CD0:("func_800F5CD0",), + 0x800F5CD0:("Environment_UpdateSkybox",), 0x800F6834:("func_800F6834",), 0x800F694C:("func_800F694C",), 0x800F6A04:("func_800F6A04",), @@ -1727,13 +1727,13 @@ 0x800F88C4:("func_800F88C4",), 0x800F8970:("func_800F8970",), 0x800F8A9C:("func_800F8A9C",), - 0x800F8CD4:("func_800F8CD4",), + 0x800F8CD4:("Environment_Update",), 0x800F8D84:("func_800F8D84",), - 0x800F9728:("func_800F9728",), + 0x800F9728:("Environment_DrawSunLensFlare",), 0x800F9824:("func_800F9824",), 0x800FA39C:("func_800FA39C",), 0x800FA3C4:("func_800FA3C4",), - 0x800FA9FC:("func_800FA9FC",), + 0x800FA9FC:("Environment_DrawRain",), 0x800FAAB4:("func_800FAAB4",), 0x800FAC20:("func_800FAC20",), 0x800FAF74:("func_800FAF74",), @@ -1742,13 +1742,13 @@ 0x800FB388:("func_800FB388",), 0x800FB758:("func_800FB758",), 0x800FB9B4:("func_800FB9B4",), - 0x800FBCBC:("func_800FBCBC",), + 0x800FBCBC:("Environment_DrawCustomLensFlare",), 0x800FBDEC:("Kankyo_InitGameOverLights",), 0x800FBF3C:("Kankyo_FadeInGameOverLights",), 0x800FC158:("Kankyo_FadeOutGameOverLights",), 0x800FC3DC:("func_800FC3DC",), - 0x800FC444:("func_800FC444",), - 0x800FC64C:("func_800FC64C",), + 0x800FC444:("Environment_FillScreen",), + 0x800FC64C:("Environment_DrawSandstorm",), 0x800FD2B4:("func_800FD2B4",), 0x800FD538:("func_800FD538",), 0x800FD59C:("func_800FD59C",), @@ -1881,7 +1881,7 @@ 0x80102464:("Lights_FreeNode",), 0x801024AC:("LightContext_Init",), 0x80102518:("LightContext_SetAmbientColor",), - 0x80102544:("func_80102544",), + 0x80102544:("LightContext_SetFog",), 0x80102580:("LightContext_NewLights",), 0x801025B8:("LightContext_InitList",), 0x801025C8:("LightContext_DestroyList",), @@ -2458,7 +2458,7 @@ 0x801306E8:("Scene_ProcessHeader",), 0x80130768:("Entrance_Create",), 0x80130784:("Entrance_CreateFromSpawn",), - 0x801307C0:("Scene_ExecuteDrawConfig",), + 0x801307C0:("Scene_Draw",), 0x801307F4:("Scene_DrawConfigDefault",), 0x80130834:("AnimatedMat_TexScroll",), 0x801308A0:("AnimatedMat_DrawTexScroll",), @@ -2786,7 +2786,7 @@ 0x801435A0:("SkyboxDraw_UpdateMatrix",), 0x80143624:("SkyboxDraw_SetColors",), 0x80143668:("SkyboxDraw_Draw",), - 0x80143A04:("SkyboxDraw_Noop",), + 0x80143A04:("SkyboxDraw_Update",), 0x80143A10:("Sram_ActivateOwl",), 0x80143A54:("Sram_ClearHighscores",), 0x80143AC4:("Sram_ClearFlagsAtDawnOfTheFirstDay",), @@ -2870,8 +2870,8 @@ 0x80153E7C:("func_80153E7C",), 0x80153EF0:("func_80153EF0",), 0x801541D4:("func_801541D4",), - 0x80156758:("func_80156758",), - 0x8015680C:("func_8015680C",), + 0x80156758:("Message_Draw",), + 0x8015680C:("Message_Update",), 0x801586A4:("func_801586A4",), 0x801586D4:("Message_Init",), 0x801588D0:("Message_FindMessageNES",), @@ -2940,10 +2940,10 @@ 0x80163D80:("Transition_Destroy",), 0x80163DC0:("func_80163DC0",), 0x8016418C:("func_8016418C",), - 0x8016424C:("func_8016424C",), - 0x801642D8:("func_801642D8",), + 0x8016424C:("TransitionUnk_Destroy",), + 0x801642D8:("TransitionUnk_Init",), 0x80164438:("func_80164438",), - 0x8016454C:("func_8016454C",), + 0x8016454C:("TransitionUnk_Draw",), 0x80164678:("func_80164678",), 0x801647AC:("func_801647AC",), 0x801647B8:("func_801647B8",), @@ -2970,41 +2970,41 @@ 0x8016537C:("TransitionOverlay_Free",), 0x80165438:("TransitionOverlay_ClearLoadInfo",), 0x80165444:("TransitionOverlay_SetSegment",), - 0x80165460:("func_80165460",), - 0x80165608:("func_80165608",), - 0x80165630:("func_80165630",), - 0x80165658:("func_80165658",), - 0x8016566C:("func_8016566C",), - 0x80165690:("func_80165690",), - 0x801656A4:("func_801656A4",), - 0x80165DB8:("func_80165DB8",), - 0x80165DCC:("func_80165DCC",), - 0x80165DF0:("func_80165DF0",), - 0x80165E04:("func_80165E04",), - 0x80165E1C:("func_80165E1C",), - 0x80165E7C:("func_80165E7C",), - 0x80165EC0:("func_80165EC0",), - 0x80166060:("func_80166060",), - 0x801660B8:("func_801660B8",), + 0x80165460:("Play_DrawMotionBlur",), + 0x80165608:("Play_InitMotionBlur",), + 0x80165630:("Play_DestroyMotionBlur",), + 0x80165658:("Play_SetMotionBlurAlpha",), + 0x8016566C:("Play_EnableMotionBlur",), + 0x80165690:("Play_DisableMotionBlur",), + 0x801656A4:("Play_ConvertRgba16ToIntensityImage",), + 0x80165DB8:("Play_SetMotionBlurPriorityAlpha",), + 0x80165DCC:("Play_EnableMotionBlurPriority",), + 0x80165DF0:("Play_DisableMotionBlurPriority",), + 0x80165E04:("Play_StartPictographPhoto",), + 0x80165E1C:("Play_TakePictoPhoto",), + 0x80165E7C:("Play_ChooseDynamicTransition",), + 0x80165EC0:("Play_SetupTransition",), + 0x80166060:("Play_ClearTransition",), + 0x801660B8:("Play_SetFog",), 0x8016613C:("Play_Destroy",), 0x801663C4:("Play_CompressI8ToI5",), 0x80166644:("Play_DecompressI5ToI8",), - 0x801668B4:("func_801668B4",), - 0x80166968:("func_80166968",), - 0x80166B30:("func_80166B30",), - 0x80167814:("Play_Update",), - 0x80167DE4:("func_80167DE4",), - 0x80167F0C:("func_80167F0C",), - 0x80168090:("Play_Draw",), - 0x80168DAC:("func_80168DAC",), + 0x801668B4:("Play_GetWaterSurface",), + 0x80166968:("Play_UpdateWaterCamera",), + 0x80166B30:("Play_UpdateTransition",), + 0x80167814:("Play_UpdateMain",), + 0x80167DE4:("Play_Update",), + 0x80167F0C:("Play_PostWorldDraw",), + 0x80168090:("Play_DrawMain",), + 0x80168DAC:("Play_Draw",), 0x80168F64:("Play_Main",), 0x801690CC:("Play_InCsMode",), - 0x80169100:("func_80169100",), - 0x801691F0:("func_801691F0",), - 0x80169220:("Play_LoadScene",), - 0x8016927C:("func_8016927C",), - 0x801692C4:("func_801692C4",), - 0x801693D4:("Play_SceneInit",), + 0x80169100:("Play_GetFloorSurfaceImpl",), + 0x801691F0:("Play_GetFloorSurface",), + 0x80169220:("Play_LoadFile",), + 0x8016927C:("Play_InitEnvironment",), + 0x801692C4:("Play_InitScene",), + 0x801693D4:("Play_SpawnScene",), 0x80169474:("Play_GetScreenPos",), 0x801694DC:("Play_CreateSubCamera",), 0x80169584:("Play_GetActiveCamId",), @@ -3048,11 +3048,11 @@ 0x8016CD4C:("func_8016CD4C",), 0x8016E40C:("func_8016E40C",), 0x8016EA90:("func_8016EA90",), - 0x8016F1A8:("func_8016F1A8",), + 0x8016F1A8:("BombersNotebook_Draw",), 0x8016F4EC:("func_8016F4EC",), - 0x8016F5A8:("func_8016F5A8",), - 0x8016FC78:("func_8016FC78",), - 0x8016FC98:("func_8016FC98",), + 0x8016F5A8:("BombersNotebook_Update",), + 0x8016FC78:("BombersNotebook_Init",), + 0x8016FC98:("BombersNotebook_Destroy",), 0x8016FCF0:("PreRender_SetValuesSave",), 0x8016FD2C:("PreRender_Init",), 0x8016FD60:("PreRender_SetValues",), @@ -4082,7 +4082,7 @@ 0x801AA610:("GameOver_Init",), 0x801AA624:("GameOver_FadeLights",), 0x801AA68C:("GameOver_Update",), - 0x801AAAA0:("func_801AAAA0",), + 0x801AAAA0:("Regs_InitData",), 0x80800000:("ConsoleLogo_UpdateCounters",), 0x8080009C:("ConsoleLogo_RenderView",), 0x80800134:("ConsoleLogo_Draw",), @@ -11339,8 +11339,8 @@ 0x80A90478:("EnTest5_HandleBottleAction",), 0x80A905A4:("EnTest5_Update",), 0x80A90730:("func_80A90730",), - 0x80A90C08:("func_80A90C08",), - 0x80A90C34:("func_80A90C34",), + 0x80A90C08:("EnTest6_EnableMotionBlur",), + 0x80A90C34:("EnTest6_DisableMotionBlur",), 0x80A90C54:("func_80A90C54",), 0x80A90D20:("func_80A90D20",), 0x80A90D34:("func_80A90D34",), diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index ea77170f9a..f88af903e3 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -2137,11 +2137,11 @@ 0x801D0D28:("TransitionCircle_InitVars","UNK_PTR","",0x4), 0x801D0D50:("gDbgCamEnabled","UNK_TYPE4","",0x4), 0x801D0D54:("D_801D0D54","UNK_TYPE1","",0x1), - 0x801D0D58:("D_801D0D58","UNK_TYPE2","",0x2), - 0x801D0D5C:("D_801D0D5C","UNK_TYPE2","",0x2), + 0x801D0D58:("sQuakeIndex","UNK_TYPE2","",0x2), + 0x801D0D5C:("sIsCameraUnderwater","UNK_TYPE2","",0x2), 0x801D0D60:("D_801D0D60","Input*","",0x4), 0x801D0D64:("D_801D0D64","s16","[10]",0x14), - 0x801D0D7A:("D_801D0D7A","UNK_TYPE1","",0x1), + 0x801D0D78:("D_801D0D78","u16","[4]",0x4), 0x801D0D80:("D_801D0D80","UNK_TYPE1","",0x1), 0x801D11F4:("D_801D11F4","UNK_TYPE1","",0x1), 0x801D1230:("D_801D1230","UNK_TYPE1","",0x1), @@ -4051,18 +4051,18 @@ 0x801F6BF0:("sKaleidoAreaFaultClient","FaultAddrConvClient","",0xC), 0x801F6C00:("sKaleidoScopeUpdateFunc","void*","",0x4), 0x801F6C04:("sKaleidoScopeDrawFunc","void*","",0x4), - 0x801F6C10:("D_801F6C10","UNK_TYPE1","",0x1), + 0x801F6C10:("sTransitionFillTimer","UNK_TYPE1","",0x1), 0x801F6C18:("D_801F6C18","Input","",0x18), - 0x801F6C30:("D_801F6C30","UNK_TYPE1","",0x1), + 0x801F6C30:("sTrnsnUnk","UNK_TYPE1","",0x1), 0x801F6D0C:("D_801F6D0C","UNK_TYPE1","",0x1), - 0x801F6D10:("D_801F6D10","UNK_TYPE4","",0x4), - 0x801F6D18:("D_801F6D18","UNK_TYPE1","",0x1), - 0x801F6D30:("D_801F6D30","Color_RGBA8","",0x4), + 0x801F6D10:("gTrnsnUnkState","UNK_TYPE4","",0x4), + 0x801F6D18:("sVisMono","UNK_TYPE1","",0x1), + 0x801F6D30:("gVisMonoColor","Color_RGBA8","",0x4), 0x801F6D38:("D_801F6D38","UNK_TYPE1","",0x1), 0x801F6D4C:("D_801F6D4C","UNK_TYPE4","",0x4), - 0x801F6D50:("D_801F6D50","UNK_TYPE1","",0x1), - 0x801F6DFC:("D_801F6DFC","u8","",0x1), - 0x801F6DFD:("D_801F6DFD","UNK_TYPE1","",0x1), + 0x801F6D50:("sBombersNotebook","UNK_TYPE1","",0x1), + 0x801F6DFC:("sBombersNotebookOpen","u8","",0x1), + 0x801F6DFD:("sMotionBlurStatus","UNK_TYPE1","",0x1), 0x801F6E00:("D_801F6E00","SlowlyTask","",0x1c0), 0x801F6FC0:("D_801F6FC0","UNK_TYPE1","",0x1), 0x801F6FC8:("slowlyStackEntry","StackEntry","",0x1c), diff --git a/tools/namefixer.py b/tools/namefixer.py index 1981163159..9de1fc43b0 100755 --- a/tools/namefixer.py +++ b/tools/namefixer.py @@ -472,6 +472,7 @@ wordReplace = { "func_800DFC90": "Camera_GetCamDir", "func_800DFD04": "Camera_AddQuake", "func_800DFFAC": "Camera_ChangeDoorCam", + "func_801694DC": "Play_CreateSubCamera", "Play_GetActiveCameraIndex": "Play_GetActiveCamId", "func_80169590": "Play_ChangeCameraStatus", @@ -499,6 +500,11 @@ wordReplace = { "func_80169E6C": "Play_SetupRespawnPoint", "func_8016A0AC": "Play_IsUnderwater", "func_801690CC": "Play_InCsMode", + "func_80165658": "Play_SetMotionBlurAlpha", + "func_8016566C": "Play_EnableMotionBlur", + "func_80165690": "Play_DisableMotionBlur", + "func_801660B8": "Play_SetFog", + "func_801129E4": "Interface_SetSceneRestrictions", "func_8011B4E0": "Interface_SetPerfectLetters", "func_80112AFC": "Interface_InitMinigame", @@ -519,7 +525,7 @@ wordReplace = { "func_80115130": "Inventory_ConsumeFairy", "func_801152B8": "Inventory_UpdateItem", "func_80115908": "Health_ChangeBy", - "func_801159c0": "Health_GiveHearts", + "func_801159C0": "Health_GiveHearts", "func_801159EC": "Rupees_ChangeBy", "func_80115A14": "Inventory_ChangeAmmo", "Parameter_AddMagic": "Magic_Add", @@ -644,6 +650,8 @@ wordReplace = { "Entrance_CreateIndex": "Entrance_Create", "Entrance_CreateIndexFromSpawn": "Entrance_CreateFromSpawn", + "func_80102544": "LightContext_SetFog", + # Structs "ActorAnimationEntry": "AnimationInfo", "ActorAnimationEntryS": "AnimationInfoS", @@ -830,6 +838,30 @@ wordReplace = { "ITEM_FISHING_POLE": "ITEM_FISHING_ROD", "PLAYER_AP_FISHING_POLE": "PLAYER_IA_FISHING_ROD", + # Enums + "TRANS_TYPE_00": "TRANS_TYPE_WIPE", + "TRANS_TYPE_01": "TRANS_TYPE_TRIFORCE", + "TRANS_TYPE_02": "TRANS_TYPE_FADE_BLACK", + "TRANS_TYPE_03": "TRANS_TYPE_FADE_WHITE", + "TRANS_TYPE_04": "TRANS_TYPE_FADE_BLACK_FAST", + "TRANS_TYPE_05": "TRANS_TYPE_FADE_WHITE_FAST", + "TRANS_TYPE_06": "TRANS_TYPE_FADE_BLACK_SLOW", + "TRANS_TYPE_07": "TRANS_TYPE_FADE_WHITE_SLOW", + "TRANS_TYPE_08": "TRANS_TYPE_WIPE_FAST", + "TRANS_TYPE_09": "TRANS_TYPE_FILL_WHITE_FAST", + "TRANS_TYPE_10": "TRANS_TYPE_FILL_WHITE", + "TRANS_TYPE_11": "TRANS_TYPE_INSTANT", + "TRANS_TYPE_12": "TRANS_TYPE_FILL_BROWN", + "TRANS_TYPE_13": "TRANS_TYPE_FADE_WHITE_CS_DELAYED", + "TRANS_TYPE_14": "TRANS_TYPE_SANDSTORM_PERSIST", + "TRANS_TYPE_15": "TRANS_TYPE_SANDSTORM_END", + "TRANS_TYPE_16": "TRANS_TYPE_CS_BLACK_FILL", + "TRANS_TYPE_17": "TRANS_TYPE_FADE_WHITE_INSTANT", + "TRANS_TYPE_18": "TRANS_TYPE_FADE_GREEN", + "TRANS_TYPE_19": "TRANS_TYPE_FADE_BLUE", + "TRANS_TYPE_20": "TRANS_TYPE_FADE_DYNAMIC", + "TRANS_TYPE_21": "TRANS_TYPE_CIRCLE", + "TRANS_TYPE_22": "TRANS_TYPE_WIPE5", # Example of custom behaviour: # "PLAYER": ("GET_PLAYER(play)", {"ignore": (-1, '"PLAYER"')}), # ignore "PLAYER" in sSoundBankNames } diff --git a/tools/permuter_settings.toml b/tools/permuter_settings.toml index 691913cdcd..5f42d30d69 100644 --- a/tools/permuter_settings.toml +++ b/tools/permuter_settings.toml @@ -20,6 +20,7 @@ CLOCK_TIME = "int" CURRENT_DAY = "int" CHECK_NEWF = "int" NULL = "int" +"SCREEN_.*" = "int" GET_PLAYER = "int" CHECK_WEEKEVENTREG = "int" SET_WEEKEVENTREG = "int" diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index a4d64acf1b..3e1befd914 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1222,11 +1222,11 @@ asm/non_matchings/code/z_kanfont/Font_LoadMessageBoxEndIcon.s,Font_LoadMessageBo asm/non_matchings/code/z_kanfont/Font_LoadOrderedFont.s,Font_LoadOrderedFont,0x800F5004,0x23 asm/non_matchings/code/z_kankyo/func_800F5090.s,func_800F5090,0x800F5090,0x11 asm/non_matchings/code/z_kankyo/func_800F50D4.s,func_800F50D4,0x800F50D4,0xE -asm/non_matchings/code/z_kankyo/Kankyo_Init.s,Kankyo_Init,0x800F510C,0x212 +asm/non_matchings/code/z_kankyo/Environment_Init.s,Environment_Init,0x800F510C,0x212 asm/non_matchings/code/z_kankyo/func_800F5954.s,func_800F5954,0x800F5954,0x4E asm/non_matchings/code/z_kankyo/Environment_LerpWeight.s,Environment_LerpWeight,0x800F5A8C,0x21 asm/non_matchings/code/z_kankyo/func_800F5B10.s,func_800F5B10,0x800F5B10,0x70 -asm/non_matchings/code/z_kankyo/func_800F5CD0.s,func_800F5CD0,0x800F5CD0,0x2D9 +asm/non_matchings/code/z_kankyo/Environment_UpdateSkybox.s,Environment_UpdateSkybox,0x800F5CD0,0x2D9 asm/non_matchings/code/z_kankyo/func_800F6834.s,func_800F6834,0x800F6834,0x46 asm/non_matchings/code/z_kankyo/func_800F694C.s,func_800F694C,0x800F694C,0x2E asm/non_matchings/code/z_kankyo/func_800F6A04.s,func_800F6A04,0x800F6A04,0xF @@ -1241,13 +1241,13 @@ asm/non_matchings/code/z_kankyo/func_800F8554.s,func_800F8554,0x800F8554,0xDC asm/non_matchings/code/z_kankyo/func_800F88C4.s,func_800F88C4,0x800F88C4,0x2B asm/non_matchings/code/z_kankyo/func_800F8970.s,func_800F8970,0x800F8970,0x4B asm/non_matchings/code/z_kankyo/func_800F8A9C.s,func_800F8A9C,0x800F8A9C,0x8E -asm/non_matchings/code/z_kankyo/func_800F8CD4.s,func_800F8CD4,0x800F8CD4,0x2C +asm/non_matchings/code/z_kankyo/Environment_Update.s,Environment_Update,0x800F8CD4,0x2C asm/non_matchings/code/z_kankyo/func_800F8D84.s,func_800F8D84,0x800F8D84,0x269 -asm/non_matchings/code/z_kankyo/func_800F9728.s,func_800F9728,0x800F9728,0x3F +asm/non_matchings/code/z_kankyo/Environment_DrawSunLensFlare.s,Environment_DrawSunLensFlare,0x800F9728,0x3F asm/non_matchings/code/z_kankyo/func_800F9824.s,func_800F9824,0x800F9824,0x2DE asm/non_matchings/code/z_kankyo/func_800FA39C.s,func_800FA39C,0x800FA39C,0xA asm/non_matchings/code/z_kankyo/func_800FA3C4.s,func_800FA3C4,0x800FA3C4,0x18E -asm/non_matchings/code/z_kankyo/func_800FA9FC.s,func_800FA9FC,0x800FA9FC,0x2E +asm/non_matchings/code/z_kankyo/Environment_DrawRain.s,Environment_DrawRain,0x800FA9FC,0x2E asm/non_matchings/code/z_kankyo/func_800FAAB4.s,func_800FAAB4,0x800FAAB4,0x5B asm/non_matchings/code/z_kankyo/func_800FAC20.s,func_800FAC20,0x800FAC20,0xD5 asm/non_matchings/code/z_kankyo/func_800FAF74.s,func_800FAF74,0x800FAF74,0x27 @@ -1256,13 +1256,13 @@ asm/non_matchings/code/z_kankyo/Environment_AddLightningBolts.s,Environment_AddL asm/non_matchings/code/z_kankyo/func_800FB388.s,func_800FB388,0x800FB388,0xF4 asm/non_matchings/code/z_kankyo/func_800FB758.s,func_800FB758,0x800FB758,0x97 asm/non_matchings/code/z_kankyo/func_800FB9B4.s,func_800FB9B4,0x800FB9B4,0xC2 -asm/non_matchings/code/z_kankyo/func_800FBCBC.s,func_800FBCBC,0x800FBCBC,0x4C +asm/non_matchings/code/z_kankyo/Environment_DrawCustomLensFlare.s,Environment_DrawCustomLensFlare,0x800FBCBC,0x4C asm/non_matchings/code/z_kankyo/Kankyo_InitGameOverLights.s,Kankyo_InitGameOverLights,0x800FBDEC,0x54 asm/non_matchings/code/z_kankyo/Kankyo_FadeInGameOverLights.s,Kankyo_FadeInGameOverLights,0x800FBF3C,0x87 asm/non_matchings/code/z_kankyo/Kankyo_FadeOutGameOverLights.s,Kankyo_FadeOutGameOverLights,0x800FC158,0xA1 asm/non_matchings/code/z_kankyo/func_800FC3DC.s,func_800FC3DC,0x800FC3DC,0x1A -asm/non_matchings/code/z_kankyo/func_800FC444.s,func_800FC444,0x800FC444,0x82 -asm/non_matchings/code/z_kankyo/func_800FC64C.s,func_800FC64C,0x800FC64C,0x31A +asm/non_matchings/code/z_kankyo/Environment_FillScreen.s,Environment_FillScreen,0x800FC444,0x82 +asm/non_matchings/code/z_kankyo/Environment_DrawSandstorm.s,Environment_DrawSandstorm,0x800FC64C,0x31A asm/non_matchings/code/z_kankyo/func_800FD2B4.s,func_800FD2B4,0x800FD2B4,0xA1 asm/non_matchings/code/z_kankyo/func_800FD538.s,func_800FD538,0x800FD538,0x19 asm/non_matchings/code/z_kankyo/func_800FD59C.s,func_800FD59C,0x800FD59C,0x11 @@ -1395,7 +1395,7 @@ asm/non_matchings/code/z_lights/Lights_FindBufSlot.s,Lights_FindBufSlot,0x801023 asm/non_matchings/code/z_lights/Lights_FreeNode.s,Lights_FreeNode,0x80102464,0x12 asm/non_matchings/code/z_lights/LightContext_Init.s,LightContext_Init,0x801024AC,0x1B asm/non_matchings/code/z_lights/LightContext_SetAmbientColor.s,LightContext_SetAmbientColor,0x80102518,0xB -asm/non_matchings/code/z_lights/func_80102544.s,func_80102544,0x80102544,0xF +asm/non_matchings/code/z_lights/LightContext_SetFog.s,LightContext_SetFog,0x80102544,0xF asm/non_matchings/code/z_lights/LightContext_NewLights.s,LightContext_NewLights,0x80102580,0xE asm/non_matchings/code/z_lights/LightContext_InitList.s,LightContext_InitList,0x801025B8,0x4 asm/non_matchings/code/z_lights/LightContext_DestroyList.s,LightContext_DestroyList,0x801025C8,0x17 @@ -1972,7 +1972,7 @@ asm/non_matchings/code/z_scene/Scene_SetExitFade.s,Scene_SetExitFade,0x801306A4, asm/non_matchings/code/z_scene/Scene_ProcessHeader.s,Scene_ProcessHeader,0x801306E8,0x20 asm/non_matchings/code/z_scene/Entrance_Create.s,Entrance_Create,0x80130768,0x7 asm/non_matchings/code/z_scene/Entrance_CreateFromSpawn.s,Entrance_CreateFromSpawn,0x80130784,0xF -asm/non_matchings/code/z_scene_proc/Scene_ExecuteDrawConfig.s,Scene_ExecuteDrawConfig,0x801307C0,0xD +asm/non_matchings/code/z_scene_proc/Scene_Draw.s,Scene_Draw,0x801307C0,0xD asm/non_matchings/code/z_scene_proc/Scene_DrawConfigDefault.s,Scene_DrawConfigDefault,0x801307F4,0x10 asm/non_matchings/code/z_scene_proc/AnimatedMat_TexScroll.s,AnimatedMat_TexScroll,0x80130834,0x1B asm/non_matchings/code/z_scene_proc/AnimatedMat_DrawTexScroll.s,AnimatedMat_DrawTexScroll,0x801308A0,0x28 @@ -2384,8 +2384,8 @@ asm/non_matchings/code/z_message/func_80153750.s,func_80153750,0x80153750,0x1CB asm/non_matchings/code/z_message/func_80153E7C.s,func_80153E7C,0x80153E7C,0x1D asm/non_matchings/code/z_message/func_80153EF0.s,func_80153EF0,0x80153EF0,0xB9 asm/non_matchings/code/z_message/func_801541D4.s,func_801541D4,0x801541D4,0x961 -asm/non_matchings/code/z_message/func_80156758.s,func_80156758,0x80156758,0x2D -asm/non_matchings/code/z_message/func_8015680C.s,func_8015680C,0x8015680C,0x7A6 +asm/non_matchings/code/z_message/Message_Draw.s,Message_Draw,0x80156758,0x2D +asm/non_matchings/code/z_message/Message_Update.s,Message_Update,0x8015680C,0x7A6 asm/non_matchings/code/z_message/func_801586A4.s,func_801586A4,0x801586A4,0xC asm/non_matchings/code/z_message/Message_Init.s,Message_Init,0x801586D4,0x7F asm/non_matchings/code/z_message_nes/Message_FindMessageNES.s,Message_FindMessageNES,0x801588D0,0x2E @@ -2454,10 +2454,10 @@ asm/non_matchings/code/z_fbdemo_dlftbls/Transition_Init.s,Transition_Init,0x8016 asm/non_matchings/code/z_fbdemo_dlftbls/Transition_Destroy.s,Transition_Destroy,0x80163D80,0x10 asm/non_matchings/code/z_fbdemo/func_80163DC0.s,func_80163DC0,0x80163DC0,0xF3 asm/non_matchings/code/z_fbdemo/func_8016418C.s,func_8016418C,0x8016418C,0x30 -asm/non_matchings/code/z_fbdemo/func_8016424C.s,func_8016424C,0x8016424C,0x23 -asm/non_matchings/code/z_fbdemo/func_801642D8.s,func_801642D8,0x801642D8,0x58 +asm/non_matchings/code/z_fbdemo/TransitionUnk_Destroy.s,TransitionUnk_Destroy,0x8016424C,0x23 +asm/non_matchings/code/z_fbdemo/TransitionUnk_Init.s,TransitionUnk_Init,0x801642D8,0x58 asm/non_matchings/code/z_fbdemo/func_80164438.s,func_80164438,0x80164438,0x45 -asm/non_matchings/code/z_fbdemo/func_8016454C.s,func_8016454C,0x8016454C,0x4B +asm/non_matchings/code/z_fbdemo/TransitionUnk_Draw.s,TransitionUnk_Draw,0x8016454C,0x4B asm/non_matchings/code/z_fbdemo/func_80164678.s,func_80164678,0x80164678,0x4D asm/non_matchings/code/z_fbdemo/func_801647AC.s,func_801647AC,0x801647AC,0x3 asm/non_matchings/code/z_fbdemo/func_801647B8.s,func_801647B8,0x801647B8,0x6 @@ -2484,41 +2484,41 @@ asm/non_matchings/code/z_overlay/TransitionOverlay_Load.s,TransitionOverlay_Load asm/non_matchings/code/z_overlay/TransitionOverlay_Free.s,TransitionOverlay_Free,0x8016537C,0x2F asm/non_matchings/code/z_overlay/TransitionOverlay_ClearLoadInfo.s,TransitionOverlay_ClearLoadInfo,0x80165438,0x3 asm/non_matchings/code/z_overlay/TransitionOverlay_SetSegment.s,TransitionOverlay_SetSegment,0x80165444,0x7 -asm/non_matchings/code/z_play/func_80165460.s,func_80165460,0x80165460,0x6A -asm/non_matchings/code/z_play/func_80165608.s,func_80165608,0x80165608,0xA -asm/non_matchings/code/z_play/func_80165630.s,func_80165630,0x80165630,0xA -asm/non_matchings/code/z_play/func_80165658.s,func_80165658,0x80165658,0x5 -asm/non_matchings/code/z_play/func_8016566C.s,func_8016566C,0x8016566C,0x9 -asm/non_matchings/code/z_play/func_80165690.s,func_80165690,0x80165690,0x5 -asm/non_matchings/code/z_play/func_801656A4.s,func_801656A4,0x801656A4,0x1C5 -asm/non_matchings/code/z_play/func_80165DB8.s,func_80165DB8,0x80165DB8,0x5 -asm/non_matchings/code/z_play/func_80165DCC.s,func_80165DCC,0x80165DCC,0x9 -asm/non_matchings/code/z_play/func_80165DF0.s,func_80165DF0,0x80165DF0,0x5 -asm/non_matchings/code/z_play/func_80165E04.s,func_80165E04,0x80165E04,0x6 -asm/non_matchings/code/z_play/func_80165E1C.s,func_80165E1C,0x80165E1C,0x18 -asm/non_matchings/code/z_play/func_80165E7C.s,func_80165E7C,0x80165E7C,0x11 -asm/non_matchings/code/z_play/func_80165EC0.s,func_80165EC0,0x80165EC0,0x68 -asm/non_matchings/code/z_play/func_80166060.s,func_80166060,0x80166060,0x16 -asm/non_matchings/code/z_play/func_801660B8.s,func_801660B8,0x801660B8,0x21 +asm/non_matchings/code/z_play/Play_DrawMotionBlur.s,Play_DrawMotionBlur,0x80165460,0x6A +asm/non_matchings/code/z_play/Play_InitMotionBlur.s,Play_InitMotionBlur,0x80165608,0xA +asm/non_matchings/code/z_play/Play_DestroyMotionBlur.s,Play_DestroyMotionBlur,0x80165630,0xA +asm/non_matchings/code/z_play/Play_SetMotionBlurAlpha.s,Play_SetMotionBlurAlpha,0x80165658,0x5 +asm/non_matchings/code/z_play/Play_EnableMotionBlur.s,Play_EnableMotionBlur,0x8016566C,0x9 +asm/non_matchings/code/z_play/Play_DisableMotionBlur.s,Play_DisableMotionBlur,0x80165690,0x5 +asm/non_matchings/code/z_play/Play_ConvertRgba16ToIntensityImage.s,Play_ConvertRgba16ToIntensityImage,0x801656A4,0x1C5 +asm/non_matchings/code/z_play/Play_SetMotionBlurPriorityAlpha.s,Play_SetMotionBlurPriorityAlpha,0x80165DB8,0x5 +asm/non_matchings/code/z_play/Play_EnableMotionBlurPriority.s,Play_EnableMotionBlurPriority,0x80165DCC,0x9 +asm/non_matchings/code/z_play/Play_DisableMotionBlurPriority.s,Play_DisableMotionBlurPriority,0x80165DF0,0x5 +asm/non_matchings/code/z_play/Play_TriggerPictoPhoto.s,Play_TriggerPictoPhoto,0x80165E04,0x6 +asm/non_matchings/code/z_play/Play_TakePictoPhoto.s,Play_TakePictoPhoto,0x80165E1C,0x18 +asm/non_matchings/code/z_play/Play_ChooseDynamicTransition.s,Play_ChooseDynamicTransition,0x80165E7C,0x11 +asm/non_matchings/code/z_play/Play_SetupTransition.s,Play_SetupTransition,0x80165EC0,0x68 +asm/non_matchings/code/z_play/Play_ClearTransition.s,Play_ClearTransition,0x80166060,0x16 +asm/non_matchings/code/z_play/Play_SetFog.s,Play_SetFog,0x801660B8,0x21 asm/non_matchings/code/z_play/Play_Destroy.s,Play_Destroy,0x8016613C,0xA2 asm/non_matchings/code/z_play/Play_CompressI8ToI5.s,Play_CompressI8ToI5,0x801663C4,0xA0 asm/non_matchings/code/z_play/Play_DecompressI5ToI8.s,Play_DecompressI5ToI8,0x80166644,0x9C -asm/non_matchings/code/z_play/func_801668B4.s,func_801668B4,0x801668B4,0x2D -asm/non_matchings/code/z_play/func_80166968.s,func_80166968,0x80166968,0x72 -asm/non_matchings/code/z_play/func_80166B30.s,func_80166B30,0x80166B30,0x339 -asm/non_matchings/code/z_play/Play_Update.s,Play_Update,0x80167814,0x174 -asm/non_matchings/code/z_play/func_80167DE4.s,func_80167DE4,0x80167DE4,0x4A -asm/non_matchings/code/z_play/func_80167F0C.s,func_80167F0C,0x80167F0C,0x61 -asm/non_matchings/code/z_play/Play_Draw.s,Play_Draw,0x80168090,0x347 -asm/non_matchings/code/z_play/func_80168DAC.s,func_80168DAC,0x80168DAC,0x6E +asm/non_matchings/code/z_play/Play_GetWaterSurface.s,Play_GetWaterSurface,0x801668B4,0x2D +asm/non_matchings/code/z_play/Play_UpdateWaterCamera.s,Play_UpdateWaterCamera,0x80166968,0x72 +asm/non_matchings/code/z_play/Play_UpdateTransition.s,Play_UpdateTransition,0x80166B30,0x339 +asm/non_matchings/code/z_play/Play_UpdateMain.s,Play_UpdateMain,0x80167814,0x174 +asm/non_matchings/code/z_play/Play_Update.s,Play_Update,0x80167DE4,0x4A +asm/non_matchings/code/z_play/Play_PostWorldDraw.s,Play_PostWorldDraw,0x80167F0C,0x61 +asm/non_matchings/code/z_play/Play_DrawMain.s,Play_DrawMain,0x80168090,0x347 +asm/non_matchings/code/z_play/Play_Draw.s,Play_Draw,0x80168DAC,0x6E asm/non_matchings/code/z_play/Play_Main.s,Play_Main,0x80168F64,0x5A asm/non_matchings/code/z_play/Play_InCsMode.s,Play_InCsMode,0x801690CC,0xD -asm/non_matchings/code/z_play/func_80169100.s,func_80169100,0x80169100,0x3C -asm/non_matchings/code/z_play/func_801691F0.s,func_801691F0,0x801691F0,0xC -asm/non_matchings/code/z_play/Play_LoadScene.s,Play_LoadScene,0x80169220,0x17 -asm/non_matchings/code/z_play/func_8016927C.s,func_8016927C,0x8016927C,0x12 -asm/non_matchings/code/z_play/func_801692C4.s,func_801692C4,0x801692C4,0x44 -asm/non_matchings/code/z_play/Play_SceneInit.s,Play_SceneInit,0x801693D4,0x28 +asm/non_matchings/code/z_play/Play_GetFloorSurfaceImpl.s,Play_GetFloorSurfaceImpl,0x80169100,0x3C +asm/non_matchings/code/z_play/Play_GetFloorSurface.s,Play_GetFloorSurface,0x801691F0,0xC +asm/non_matchings/code/z_play/Play_LoadFile.s,Play_LoadFile,0x80169220,0x17 +asm/non_matchings/code/z_play/Play_InitEnvironment.s,Play_InitEnvironment,0x8016927C,0x12 +asm/non_matchings/code/z_play/Play_InitScene.s,Play_InitScene,0x801692C4,0x44 +asm/non_matchings/code/z_play/Play_SpawnScene.s,Play_SpawnScene,0x801693D4,0x28 asm/non_matchings/code/z_play/Play_GetScreenPos.s,Play_GetScreenPos,0x80169474,0x1A asm/non_matchings/code/z_play/Play_CreateSubCamera.s,Play_CreateSubCamera,0x801694DC,0x2A asm/non_matchings/code/z_play/Play_GetActiveCamId.s,Play_GetActiveCamId,0x80169584,0x3 @@ -2562,11 +2562,11 @@ asm/non_matchings/code/z_play_hireso/func_8016C344.s,func_8016C344,0x8016C344,0x asm/non_matchings/code/z_play_hireso/func_8016CD4C.s,func_8016CD4C,0x8016CD4C,0x5B0 asm/non_matchings/code/z_play_hireso/func_8016E40C.s,func_8016E40C,0x8016E40C,0x1A1 asm/non_matchings/code/z_play_hireso/func_8016EA90.s,func_8016EA90,0x8016EA90,0x1C6 -asm/non_matchings/code/z_play_hireso/func_8016F1A8.s,func_8016F1A8,0x8016F1A8,0xD1 +asm/non_matchings/code/z_play_hireso/BombersNotebook_Draw.s,BombersNotebook_Draw,0x8016F1A8,0xD1 asm/non_matchings/code/z_play_hireso/func_8016F4EC.s,func_8016F4EC,0x8016F4EC,0x2F -asm/non_matchings/code/z_play_hireso/func_8016F5A8.s,func_8016F5A8,0x8016F5A8,0x1B4 -asm/non_matchings/code/z_play_hireso/func_8016FC78.s,func_8016FC78,0x8016FC78,0x8 -asm/non_matchings/code/z_play_hireso/func_8016FC98.s,func_8016FC98,0x8016FC98,0x16 +asm/non_matchings/code/z_play_hireso/BombersNotebook_Update.s,BombersNotebook_Update,0x8016F5A8,0x1B4 +asm/non_matchings/code/z_play_hireso/BombersNotebook_Init.s,BombersNotebook_Init,0x8016FC78,0x8 +asm/non_matchings/code/z_play_hireso/BombersNotebook_Destroy.s,BombersNotebook_Destroy,0x8016FC98,0x16 asm/non_matchings/code/PreRender/PreRender_SetValuesSave.s,PreRender_SetValuesSave,0x8016FCF0,0xF asm/non_matchings/code/PreRender/PreRender_Init.s,PreRender_Init,0x8016FD2C,0xD asm/non_matchings/code/PreRender/PreRender_SetValues.s,PreRender_SetValues,0x8016FD60,0xD @@ -3598,4 +3598,4 @@ asm/non_matchings/code/jpegdecoder/JpegDecoder_ReadBits.s,JpegDecoder_ReadBits,0 asm/non_matchings/code/z_game_over/GameOver_Init.s,GameOver_Init,0x801AA610,0x5 asm/non_matchings/code/z_game_over/GameOver_FadeLights.s,GameOver_FadeLights,0x801AA624,0x1A asm/non_matchings/code/z_game_over/GameOver_Update.s,GameOver_Update,0x801AA68C,0x105 -asm/non_matchings/code/z_construct/func_801AAAA0.s,func_801AAAA0,0x801AAAA0,0x4 +asm/non_matchings/code/z_construct/Regs_InitData.s,Regs_InitData,0x801AAAA0,0x4