From 92f081d7f35c91794e5696b6bb1f86541b8b40ea Mon Sep 17 00:00:00 2001 From: Dragorn421 Date: Sat, 26 Nov 2022 23:53:41 +0100 Subject: [PATCH] Add skybox .h and cleanup, `SkyboxDraw_` -> `Skybox_` (#1435) * Add skybox .h and cleanup * move forward declared structs to top of file * `SkyboxDraw_` -> `Skybox_` * format * move more forward declared structs to top of file --- include/functions.h | 6 -- include/variables.h | 3 - include/z64.h | 49 +------------ include/z64environment.h | 9 +++ include/z64skybox.h | 69 +++++++++++++++++++ src/code/z_play.c | 16 ++--- src/code/z_vr_box_draw.c | 6 +- .../ovl_file_choose/z_file_choose.c | 4 +- 8 files changed, 92 insertions(+), 70 deletions(-) create mode 100644 include/z64skybox.h diff --git a/include/functions.h b/include/functions.h index 3741806fb1..2991393ed4 100644 --- a/include/functions.h +++ b/include/functions.h @@ -814,7 +814,6 @@ u8 Environment_SmoothStepToU8(u8* pvalue, u8 target, u8 scale, u8 step, u8 minSt u8 Environment_SmoothStepToS8(s8* pvalue, s8 target, u8 scale, u8 step, u8 minStep); f32 Environment_LerpWeight(u16 max, u16 min, u16 val); f32 Environment_LerpWeightAccelDecel(u16 endFrame, u16 startFrame, u16 curFrame, u16 accelDuration, u16 decelDuration); -void Environment_UpdateSkybox(u8 skyboxId, EnvironmentContext* envCtx, SkyboxContext* skyboxCtx); void Environment_EnableUnderwaterLights(PlayState* play, s32 waterLightsIndex); void Environment_DisableUnderwaterLights(PlayState* play); void Environment_Update(PlayState* play, EnvironmentContext* envCtx, LightContext* lightCtx, @@ -828,7 +827,6 @@ void Environment_DrawLensFlare(PlayState* play, EnvironmentContext* envCtx, View s16 glareStrength, u8 isSun); void Environment_DrawRain(PlayState* play, View* view, GraphicsContext* gfxCtx); void Environment_ChangeLightSetting(PlayState* play, u32 lightSetting); -void Environment_DrawSkyboxFilters(PlayState* play); void Environment_UpdateLightningStrike(PlayState* play); void Environment_AddLightningBolts(PlayState* play, u8 num); void Environment_DrawLightning(PlayState* play, s32 unused); @@ -1295,10 +1293,6 @@ void VisMono_Draw(VisMono* this, Gfx** gfxp); void func_800AD920(struct_80166500* this); void func_800AD950(struct_80166500* this); void func_800AD958(struct_80166500* this, Gfx** gfxp); -void Skybox_Init(GameState* state, SkyboxContext* skyboxCtx, s16 skyboxId); -Mtx* SkyboxDraw_UpdateMatrix(SkyboxContext* skyboxCtx, f32 x, f32 y, f32 z); -void SkyboxDraw_Draw(SkyboxContext* skyboxCtx, GraphicsContext* gfxCtx, s16 skyboxId, s16 blend, f32 x, f32 y, f32 z); -void SkyboxDraw_Update(SkyboxContext* skyboxCtx); void PlayerCall_InitFuncPtrs(void); void TransitionUnk_InitGraphics(TransitionUnk* this); void TransitionUnk_InitData(TransitionUnk* this); diff --git a/include/variables.h b/include/variables.h index 7c83866725..03d9fa47c4 100644 --- a/include/variables.h +++ b/include/variables.h @@ -60,10 +60,7 @@ extern GameStateOverlay gGameStateOverlayTable[6]; extern u8 gWeatherMode; extern u8 gLightConfigAfterUnderwater; extern u8 gInterruptSongOfStorms; -extern u8 gSkyboxIsChanging; extern u16 gTimeSpeed; -extern TimeBasedSkyboxEntry gTimeBasedSkyboxConfigs[][9]; -extern SkyboxFile gNormalSkyFiles[]; extern s32 gZeldaArenaLogSeverity; extern MapData gMapDataTable; extern s16 gSpoilingItems[3]; diff --git a/include/z64.h b/include/z64.h index 200b435c19..2a02d483a5 100644 --- a/include/z64.h +++ b/include/z64.h @@ -26,6 +26,7 @@ #include "z64skin.h" #include "z64transition.h" #include "z64interface.h" +#include "z64skybox.h" #include "alignment.h" #include "seqcmd.h" #include "sequence.h" @@ -361,49 +362,6 @@ typedef struct { /* 0x10 */ Vec3f projectedPos; } SfxSource; // size = 0x1C -typedef enum { - /* 0x00 */ SKYBOX_NONE, - /* 0x01 */ SKYBOX_NORMAL_SKY, - /* 0x02 */ SKYBOX_BAZAAR, - /* 0x03 */ SKYBOX_OVERCAST_SUNSET, - /* 0x04 */ SKYBOX_MARKET_ADULT, - /* 0x05 */ SKYBOX_CUTSCENE_MAP, - /* 0x07 */ SKYBOX_HOUSE_LINK = 7, - /* 0x09 */ SKYBOX_MARKET_CHILD_DAY = 9, - /* 0x0A */ SKYBOX_MARKET_CHILD_NIGHT, - /* 0x0B */ SKYBOX_HAPPY_MASK_SHOP, - /* 0x0C */ SKYBOX_HOUSE_KNOW_IT_ALL_BROTHERS, - /* 0x0E */ SKYBOX_HOUSE_OF_TWINS = 14, - /* 0x0F */ SKYBOX_STABLES, - /* 0x10 */ SKYBOX_HOUSE_KAKARIKO, - /* 0x11 */ SKYBOX_KOKIRI_SHOP, - /* 0x13 */ SKYBOX_GORON_SHOP = 19, - /* 0x14 */ SKYBOX_ZORA_SHOP, - /* 0x16 */ SKYBOX_POTION_SHOP_KAKARIKO = 22, - /* 0x17 */ SKYBOX_POTION_SHOP_MARKET, - /* 0x18 */ SKYBOX_BOMBCHU_SHOP, - /* 0x1A */ SKYBOX_HOUSE_RICHARD = 26, - /* 0x1B */ SKYBOX_HOUSE_IMPA, - /* 0x1C */ SKYBOX_TENT, - /* 0x1D */ SKYBOX_UNSET_1D, - /* 0x20 */ SKYBOX_HOUSE_MIDO = 32, - /* 0x21 */ SKYBOX_HOUSE_SARIA, - /* 0x22 */ SKYBOX_HOUSE_ALLEY, - /* 0x27 */ SKYBOX_UNSET_27 = 39 -} SkyboxId; - -typedef struct { - /* 0x000 */ char unk_00[0x128]; - /* 0x128 */ void* staticSegments[2]; - /* 0x130 */ u16 (*palettes)[256]; - /* 0x134 */ Gfx (*dListBuf)[150]; - /* 0x138 */ Gfx* unk_138; - /* 0x13C */ Vtx* roomVtx; - /* 0x140 */ s16 unk_140; - /* 0x144 */ Vec3f rot; - /* 0x150 */ char unk_150[0x10]; -} SkyboxContext; // size = 0x160 - typedef enum { TEXTBOX_ICON_TRIANGLE, TEXTBOX_ICON_SQUARE, @@ -1838,11 +1796,6 @@ typedef struct { /* 0x04 */ const char* name; } FlagSetEntry; // size = 0x08 -typedef struct { - /* 0x00 */ RomFile file; - /* 0x08 */ RomFile palette; -} SkyboxFile; // size = 0x10 - #define ROM_FILE(name) \ { (uintptr_t)_##name##SegmentRomStart, (uintptr_t)_##name##SegmentRomEnd } #define ROM_FILE_EMPTY(name) \ diff --git a/include/z64environment.h b/include/z64environment.h index af77159e4c..e15641517e 100644 --- a/include/z64environment.h +++ b/include/z64environment.h @@ -5,6 +5,9 @@ #include "z64light.h" #include "z64dma.h" +struct PlayState; +struct SkyboxContext; + #define FILL_SCREEN_OPA (1 << 0) #define FILL_SCREEN_XLU (1 << 1) @@ -231,4 +234,10 @@ typedef struct { /* 0xF3 */ char unk_F3[0x09]; } EnvironmentContext; // size = 0xFC +extern u8 gSkyboxIsChanging; +extern TimeBasedSkyboxEntry gTimeBasedSkyboxConfigs[][9]; + +void Environment_UpdateSkybox(u8 skyboxId, EnvironmentContext* envCtx, struct SkyboxContext* skyboxCtx); +void Environment_DrawSkyboxFilters(struct PlayState* play); + #endif diff --git a/include/z64skybox.h b/include/z64skybox.h new file mode 100644 index 0000000000..7df2f56d77 --- /dev/null +++ b/include/z64skybox.h @@ -0,0 +1,69 @@ +#ifndef Z64_SKYBOX_H +#define Z64_SKYBOX_H + +#include "ultra64/ultratypes.h" +#include "ultra64/gbi.h" + +#include "z64math.h" +#include "z64scene.h" // for RomFile + +struct GameState; +struct GraphicsContext; + +typedef enum { + /* 0x00 */ SKYBOX_NONE, + /* 0x01 */ SKYBOX_NORMAL_SKY, + /* 0x02 */ SKYBOX_BAZAAR, + /* 0x03 */ SKYBOX_OVERCAST_SUNSET, + /* 0x04 */ SKYBOX_MARKET_ADULT, + /* 0x05 */ SKYBOX_CUTSCENE_MAP, + /* 0x07 */ SKYBOX_HOUSE_LINK = 7, + /* 0x09 */ SKYBOX_MARKET_CHILD_DAY = 9, + /* 0x0A */ SKYBOX_MARKET_CHILD_NIGHT, + /* 0x0B */ SKYBOX_HAPPY_MASK_SHOP, + /* 0x0C */ SKYBOX_HOUSE_KNOW_IT_ALL_BROTHERS, + /* 0x0E */ SKYBOX_HOUSE_OF_TWINS = 14, + /* 0x0F */ SKYBOX_STABLES, + /* 0x10 */ SKYBOX_HOUSE_KAKARIKO, + /* 0x11 */ SKYBOX_KOKIRI_SHOP, + /* 0x13 */ SKYBOX_GORON_SHOP = 19, + /* 0x14 */ SKYBOX_ZORA_SHOP, + /* 0x16 */ SKYBOX_POTION_SHOP_KAKARIKO = 22, + /* 0x17 */ SKYBOX_POTION_SHOP_MARKET, + /* 0x18 */ SKYBOX_BOMBCHU_SHOP, + /* 0x1A */ SKYBOX_HOUSE_RICHARD = 26, + /* 0x1B */ SKYBOX_HOUSE_IMPA, + /* 0x1C */ SKYBOX_TENT, + /* 0x1D */ SKYBOX_UNSET_1D, + /* 0x20 */ SKYBOX_HOUSE_MIDO = 32, + /* 0x21 */ SKYBOX_HOUSE_SARIA, + /* 0x22 */ SKYBOX_HOUSE_ALLEY, + /* 0x27 */ SKYBOX_UNSET_27 = 39 +} SkyboxId; + +typedef struct SkyboxContext { + /* 0x000 */ char unk_00[0x128]; + /* 0x128 */ void* staticSegments[2]; + /* 0x130 */ u16 (*palettes)[256]; + /* 0x134 */ Gfx (*dListBuf)[150]; + /* 0x138 */ Gfx* unk_138; + /* 0x13C */ Vtx* roomVtx; + /* 0x140 */ s16 unk_140; + /* 0x144 */ Vec3f rot; + /* 0x150 */ char unk_150[0x10]; +} SkyboxContext; // size = 0x160 + +typedef struct { + /* 0x00 */ RomFile file; + /* 0x08 */ RomFile palette; +} SkyboxFile; // size = 0x10 + +extern SkyboxFile gNormalSkyFiles[]; + +void Skybox_Init(struct GameState* state, SkyboxContext* skyboxCtx, s16 skyboxId); +Mtx* Skybox_UpdateMatrix(SkyboxContext* skyboxCtx, f32 x, f32 y, f32 z); +void Skybox_Draw(SkyboxContext* skyboxCtx, struct GraphicsContext* gfxCtx, s16 skyboxId, s16 blend, f32 x, f32 y, + f32 z); +void Skybox_Update(SkyboxContext* skyboxCtx); + +#endif diff --git a/src/code/z_play.c b/src/code/z_play.c index b576e21181..ef2dbeed61 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -939,7 +939,7 @@ void Play_Update(PlayState* this) { } PLAY_LOG(3708); - SkyboxDraw_Update(&this->skyboxCtx); + Skybox_Update(&this->skyboxCtx); PLAY_LOG(3716); @@ -1135,11 +1135,11 @@ void Play_Draw(PlayState* this) { if (this->skyboxId && (this->skyboxId != SKYBOX_UNSET_1D) && !this->envCtx.skyboxDisabled) { if ((this->skyboxId == SKYBOX_NORMAL_SKY) || (this->skyboxId == SKYBOX_CUTSCENE_MAP)) { Environment_UpdateSkybox(this->skyboxId, &this->envCtx, &this->skyboxCtx); - SkyboxDraw_Draw(&this->skyboxCtx, gfxCtx, this->skyboxId, this->envCtx.skyboxBlend, - this->view.eye.x, this->view.eye.y, this->view.eye.z); + Skybox_Draw(&this->skyboxCtx, gfxCtx, this->skyboxId, this->envCtx.skyboxBlend, + this->view.eye.x, this->view.eye.y, this->view.eye.z); } else if (this->skyboxCtx.unk_140 == 0) { - SkyboxDraw_Draw(&this->skyboxCtx, gfxCtx, this->skyboxId, 0, this->view.eye.x, - this->view.eye.y, this->view.eye.z); + Skybox_Draw(&this->skyboxCtx, gfxCtx, this->skyboxId, 0, this->view.eye.x, this->view.eye.y, + this->view.eye.z); } } } @@ -1183,8 +1183,8 @@ void Play_Draw(PlayState* this) { Vec3f quakeOffset; Camera_GetQuakeOffset(&quakeOffset, GET_ACTIVE_CAM(this)); - SkyboxDraw_Draw(&this->skyboxCtx, gfxCtx, this->skyboxId, 0, this->view.eye.x + quakeOffset.x, - this->view.eye.y + quakeOffset.y, this->view.eye.z + quakeOffset.z); + Skybox_Draw(&this->skyboxCtx, gfxCtx, this->skyboxId, 0, this->view.eye.x + quakeOffset.x, + this->view.eye.y + quakeOffset.y, this->view.eye.z + quakeOffset.z); } } @@ -1268,7 +1268,7 @@ void Play_Draw(PlayState* this) { View_UpdateViewingMatrix(&this->view); this->view.unk_124 = 0; if (this->skyboxId && (this->skyboxId != SKYBOX_UNSET_1D) && !this->envCtx.skyboxDisabled) { - SkyboxDraw_UpdateMatrix(&this->skyboxCtx, this->view.eye.x, this->view.eye.y, this->view.eye.z); + Skybox_UpdateMatrix(&this->skyboxCtx, this->view.eye.x, this->view.eye.y, this->view.eye.z); } } diff --git a/src/code/z_vr_box_draw.c b/src/code/z_vr_box_draw.c index a9728c3c5a..60fa408d09 100644 --- a/src/code/z_vr_box_draw.c +++ b/src/code/z_vr_box_draw.c @@ -2,7 +2,7 @@ Mtx* sSkyboxDrawMatrix; -Mtx* SkyboxDraw_UpdateMatrix(SkyboxContext* skyboxCtx, f32 x, f32 y, f32 z) { +Mtx* Skybox_UpdateMatrix(SkyboxContext* skyboxCtx, f32 x, f32 y, f32 z) { Matrix_Translate(x, y, z, MTXMODE_NEW); Matrix_Scale(1.0f, 1.0f, 1.0f, MTXMODE_APPLY); Matrix_RotateX(skyboxCtx->rot.x, MTXMODE_APPLY); @@ -11,7 +11,7 @@ Mtx* SkyboxDraw_UpdateMatrix(SkyboxContext* skyboxCtx, f32 x, f32 y, f32 z) { return Matrix_ToMtx(sSkyboxDrawMatrix, "../z_vr_box_draw.c", 42); } -void SkyboxDraw_Draw(SkyboxContext* skyboxCtx, GraphicsContext* gfxCtx, s16 skyboxId, s16 blend, f32 x, f32 y, f32 z) { +void Skybox_Draw(SkyboxContext* skyboxCtx, GraphicsContext* gfxCtx, s16 skyboxId, s16 blend, f32 x, f32 y, f32 z) { OPEN_DISPS(gfxCtx, "../z_vr_box_draw.c", 52); Gfx_SetupDL_40Opa(gfxCtx); @@ -80,5 +80,5 @@ void SkyboxDraw_Draw(SkyboxContext* skyboxCtx, GraphicsContext* gfxCtx, s16 skyb CLOSE_DISPS(gfxCtx, "../z_vr_box_draw.c", 125); } -void SkyboxDraw_Update(SkyboxContext* skyboxCtx) { +void Skybox_Update(SkyboxContext* skyboxCtx) { } diff --git a/src/overlays/gamestates/ovl_file_choose/z_file_choose.c b/src/overlays/gamestates/ovl_file_choose/z_file_choose.c index d47c458db8..194d883b2d 100644 --- a/src/overlays/gamestates/ovl_file_choose/z_file_choose.c +++ b/src/overlays/gamestates/ovl_file_choose/z_file_choose.c @@ -1126,7 +1126,7 @@ void FileSelect_ConfigModeDraw(GameState* thisx) { eyeZ = 1000.0f * Math_SinS(ZREG(11)) + 1000.0f * Math_CosS(ZREG(11)); FileSelect_SetView(this, eyeX, eyeY, eyeZ); - SkyboxDraw_Draw(&this->skyboxCtx, this->state.gfxCtx, 1, this->envCtx.skyboxBlend, eyeX, eyeY, eyeZ); + Skybox_Draw(&this->skyboxCtx, this->state.gfxCtx, 1, this->envCtx.skyboxBlend, eyeX, eyeY, eyeZ); gDPSetTextureLUT(POLY_OPA_DISP++, G_TT_NONE); ZREG(11) += ZREG(10); Environment_UpdateSkybox(SKYBOX_NORMAL_SKY, &this->envCtx, &this->skyboxCtx); @@ -1539,7 +1539,7 @@ void FileSelect_SelectModeDraw(GameState* thisx) { eyeZ = 1000.0f * Math_SinS(ZREG(11)) + 1000.0f * Math_CosS(ZREG(11)); FileSelect_SetView(this, eyeX, eyeY, eyeZ); - SkyboxDraw_Draw(&this->skyboxCtx, this->state.gfxCtx, 1, this->envCtx.skyboxBlend, eyeX, eyeY, eyeZ); + Skybox_Draw(&this->skyboxCtx, this->state.gfxCtx, 1, this->envCtx.skyboxBlend, eyeX, eyeY, eyeZ); gDPSetTextureLUT(POLY_OPA_DISP++, G_TT_NONE); ZREG(11) += ZREG(10); Environment_UpdateSkybox(SKYBOX_NORMAL_SKY, &this->envCtx, &this->skyboxCtx);