diff options
| author | EllipticEllipsis <73679967+EllipticEllipsis@users.noreply.github.com> | 2021-09-30 02:55:41 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-09-29 21:55:41 -0400 |
| commit | f80b08450fe6ba7e54981fa104cc3790dca8e1d1 (patch) | |
| tree | 5826e063a2a0a8c75fe795816dad92ddc2d424c2 /src | |
| parent | 9dfeec73458cc941e3345613710e4308e1ede7e5 (diff) | |
ShrinkWindow OK (#303)
* OK, small amount of documentation, import bss
* Remove comments
* Actually commit functions.txt
* Add renames to actorfixer.py, review
Diffstat (limited to 'src')
| -rw-r--r-- | src/code/z_shrink_window.c | 120 | ||||
| -rw-r--r-- | src/overlays/gamestates/ovl_daytelop/z_daytelop.c | 4 | ||||
| -rw-r--r-- | src/overlays/gamestates/ovl_opening/z_opening.c | 2 | ||||
| -rw-r--r-- | src/overlays/gamestates/ovl_select/z_select.c | 2 | ||||
| -rw-r--r-- | src/overlays/gamestates/ovl_title/z_title.c | 2 |
5 files changed, 113 insertions, 17 deletions
diff --git a/src/code/z_shrink_window.c b/src/code/z_shrink_window.c index 3b2d86114..194ee5083 100644 --- a/src/code/z_shrink_window.c +++ b/src/code/z_shrink_window.c @@ -1,25 +1,121 @@ +/** + * File: z_shrink_window.c + * Description: Draws black top/bottom/side borders on the viewing window (e.g. Z-targeting, talking to NPC) + */ #include "global.h" -#pragma GLOBAL_ASM("asm/non_matchings/code/z_shrink_window/ShrinkWindow_SetLetterboxTarget.s") +ShrinkWindowContext gShrinkWindowContext; +ShrinkWindowContext* gShrinkWindowContextPtr; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_shrink_window/ShrinkWindow_GetLetterboxTarget.s") +void ShrinkWindow_SetLetterboxTarget(s32 target) { + gShrinkWindowContextPtr->letterboxTarget = target; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_shrink_window/ShrinkWindow_SetLetterboxMagnitude.s") +s32 ShrinkWindow_GetLetterboxTarget(void) { + return gShrinkWindowContextPtr->letterboxTarget; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_shrink_window/ShrinkWindow_GetLetterboxMagnitude.s") +void ShrinkWindow_SetLetterboxMagnitude(s32 magnitude) { + gShrinkWindowContextPtr->letterboxMagnitude = magnitude; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_shrink_window/ShrinkWindow_SetPillarboxTarget.s") +s32 ShrinkWindow_GetLetterboxMagnitude(void) { + return gShrinkWindowContextPtr->letterboxMagnitude; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_shrink_window/ShrinkWindow_GetPillarboxTarget.s") +void ShrinkWindow_SetPillarboxTarget(s32 target) { + gShrinkWindowContextPtr->pillarboxTarget = target; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_shrink_window/ShrinkWindow_SetPillarboxMagnitude.s") +s32 ShrinkWindow_GetPillarboxTarget(void) { + return gShrinkWindowContextPtr->pillarboxTarget; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_shrink_window/ShrinkWindow_GetPillarboxMagnitude.s") +void ShrinkWindow_SetPillarboxMagnitude(s32 magnitude) { + gShrinkWindowContextPtr->pillarboxMagnitude = magnitude; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_shrink_window/ShrinkWindow_Init.s") +s32 ShrinkWindow_GetPillarboxMagnitude(void) { + return gShrinkWindowContextPtr->pillarboxMagnitude; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_shrink_window/ShrinkWindow_Fini.s") +void ShrinkWindow_Init(void) { + gShrinkWindowContextPtr = &gShrinkWindowContext; + bzero(gShrinkWindowContextPtr, sizeof(gShrinkWindowContext)); +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_shrink_window/ShrinkWindow_Step.s") +void ShrinkWindow_Destroy(void) { + gShrinkWindowContextPtr = NULL; +} -#pragma GLOBAL_ASM("asm/non_matchings/code/z_shrink_window/ShrinkWindow_Draw.s") +void ShrinkWindow_Update(s32 framerateDivisor) { + s32 step = ((framerateDivisor == 3) ? 10 : 30 / framerateDivisor); + s32 nextMagnitude; + + nextMagnitude = gShrinkWindowContextPtr->letterboxMagnitude; + Math_StepToIGet(&nextMagnitude, gShrinkWindowContextPtr->letterboxTarget, step); + gShrinkWindowContextPtr->letterboxMagnitude = nextMagnitude; + + nextMagnitude = gShrinkWindowContextPtr->pillarboxMagnitude; + Math_StepToIGet(&nextMagnitude, gShrinkWindowContextPtr->pillarboxTarget, step); + gShrinkWindowContextPtr->pillarboxMagnitude = nextMagnitude; +} + +void ShrinkWindow_Draw(GraphicsContext* gfxCtx) { + Gfx* gfx; + s8 letterboxMagnitude = gShrinkWindowContextPtr->letterboxMagnitude; + s8 pillarboxMagnitude = gShrinkWindowContextPtr->pillarboxMagnitude; + + if (letterboxMagnitude > 0) { + OPEN_DISPS(gfxCtx); + + gfx = OVERLAY_DISP; + + gDPPipeSync(gfx++); + gDPSetCycleType(gfx++, G_CYC_FILL); + gDPSetRenderMode(gfx++, G_RM_NOOP, G_RM_NOOP2); + gDPSetFillColor(gfx++, (GPACK_RGBA5551(0, 0, 0, 1) << 16) | GPACK_RGBA5551(0, 0, 0, 1)); + gDPFillRectangle(gfx++, 0, 0, gScreenWidth - 1, letterboxMagnitude - 1); + gDPFillRectangle(gfx++, 0, gScreenHeight - letterboxMagnitude, gScreenWidth - 1, gScreenHeight - 1); + + gDPPipeSync(gfx++); + gDPSetCycleType(gfx++, G_CYC_1CYCLE); + gDPSetRenderMode(gfx++, G_RM_XLU_SURF, G_RM_XLU_SURF2); + gDPSetPrimColor(gfx++, 0, 0, 0, 0, 0, 0); + gDPFillRectangle(gfx++, 0, letterboxMagnitude, gScreenWidth, letterboxMagnitude + 1); + gDPFillRectangle(gfx++, 0, gScreenHeight - letterboxMagnitude - 1, gScreenWidth, + gScreenHeight - letterboxMagnitude); + + gDPPipeSync(gfx++); + OVERLAY_DISP = gfx++; + + CLOSE_DISPS(gfxCtx); + } + if (pillarboxMagnitude > 0) { + OPEN_DISPS(gfxCtx); + + gfx = OVERLAY_DISP; + + gDPPipeSync(gfx++); + gDPSetCycleType(gfx++, G_CYC_FILL); + gDPSetRenderMode(gfx++, G_RM_NOOP, G_RM_NOOP2); + gDPSetFillColor(gfx++, (GPACK_RGBA5551(0, 0, 0, 1) << 16) | GPACK_RGBA5551(0, 0, 0, 1)); + + gDPFillRectangle(gfx++, 0, 0, pillarboxMagnitude - 1, gScreenHeight - 1); + gDPFillRectangle(gfx++, gScreenWidth - pillarboxMagnitude, 0, gScreenWidth - 1, gScreenHeight - 1); + + gDPPipeSync(gfx++); + gDPSetCycleType(gfx++, G_CYC_1CYCLE); + gDPSetRenderMode(gfx++, G_RM_XLU_SURF, G_RM_XLU_SURF2); + gDPSetPrimColor(gfx++, 0, 0, 0, 0, 0, 0); + + gDPFillRectangle(gfx++, pillarboxMagnitude, 0, pillarboxMagnitude + 2, gScreenHeight); + gDPFillRectangle(gfx++, gScreenWidth - pillarboxMagnitude - 2, 0, gScreenWidth - pillarboxMagnitude, + gScreenHeight); + + gDPPipeSync(gfx++); + OVERLAY_DISP = gfx++; + + CLOSE_DISPS(gfxCtx); + } +} diff --git a/src/overlays/gamestates/ovl_daytelop/z_daytelop.c b/src/overlays/gamestates/ovl_daytelop/z_daytelop.c index ba34c2448..d4c729d56 100644 --- a/src/overlays/gamestates/ovl_daytelop/z_daytelop.c +++ b/src/overlays/gamestates/ovl_daytelop/z_daytelop.c @@ -205,7 +205,7 @@ void Daytelop_Main(GameState* thisx) { } void Daytelop_Destroy(GameState* thisx) { - ShrinkWindow_Fini(); + ShrinkWindow_Destroy(); } void Daytelop_nop80815770(DaytelopContext* this) { @@ -227,7 +227,7 @@ void Daytelop_Init(GameState* thisx) { Game_SetFramerateDivisor(thisx, 1); SysMatrix_StateAlloc(thisx); - ShrinkWindow_Fini(); + ShrinkWindow_Destroy(); View_Init(&this->view, thisx->gfxCtx); thisx->main = Daytelop_Main; thisx->destroy = Daytelop_Destroy; diff --git a/src/overlays/gamestates/ovl_opening/z_opening.c b/src/overlays/gamestates/ovl_opening/z_opening.c index b19955071..f3279db4e 100644 --- a/src/overlays/gamestates/ovl_opening/z_opening.c +++ b/src/overlays/gamestates/ovl_opening/z_opening.c @@ -43,7 +43,7 @@ void Opening_Main(GameState* thisx) { } void Opening_Destroy(GameState* thisx) { - ShrinkWindow_Fini(); + ShrinkWindow_Destroy(); } void Opening_Init(GameState* thisx) { diff --git a/src/overlays/gamestates/ovl_select/z_select.c b/src/overlays/gamestates/ovl_select/z_select.c index da6808725..d58f7ac85 100644 --- a/src/overlays/gamestates/ovl_select/z_select.c +++ b/src/overlays/gamestates/ovl_select/z_select.c @@ -887,7 +887,7 @@ void Select_Main(GameState* thisx) { } void Select_Destroy(GameState* thisx) { - ShrinkWindow_Fini(); + ShrinkWindow_Destroy(); } void Select_Init(GameState* thisx) { diff --git a/src/overlays/gamestates/ovl_title/z_title.c b/src/overlays/gamestates/ovl_title/z_title.c index 83e3f487a..c8027fcbe 100644 --- a/src/overlays/gamestates/ovl_title/z_title.c +++ b/src/overlays/gamestates/ovl_title/z_title.c @@ -145,7 +145,7 @@ void Title_Destroy(GameState* thisx) { TitleContext* this = (TitleContext*)thisx; func_80146E40(&this->gameState, &this->sramCtx); - ShrinkWindow_Fini(); + ShrinkWindow_Destroy(); CIC6105_Nop80081828(); } |
