ShrinkWindow OK (#303)

* OK, small amount of documentation, import bss

* Remove comments

* Actually commit functions.txt

* Add renames to actorfixer.py, review
This commit is contained in:
EllipticEllipsis 2021-09-30 02:55:41 +01:00 committed by GitHub
parent 9dfeec7345
commit f80b08450f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 119 additions and 22 deletions

View File

@ -2927,8 +2927,8 @@ s32 ShrinkWindow_GetPillarboxTarget(void);
void ShrinkWindow_SetPillarboxMagnitude(s32 magnitude);
s32 ShrinkWindow_GetPillarboxMagnitude(void);
void ShrinkWindow_Init(void);
void ShrinkWindow_Fini(void);
void ShrinkWindow_Step(s32 framerateDivisor);
void ShrinkWindow_Destroy(void);
void ShrinkWindow_Update(s32 framerateDivisor);
void ShrinkWindow_Draw(GraphicsContext* gfxCtx);
// void func_80161180(void);
// void func_8016119C(void);

1
spec
View File

@ -581,7 +581,6 @@ beginseg
include "build/src/code/z_player_call.o"
include "build/data/code/z_player_call.bss.o"
include "build/src/code/z_shrink_window.o"
include "build/data/code/z_shrink_window.bss.o"
include "build/src/code/db_camera.o"
include "build/data/code/db_camera.bss.o"
include "build/data/code/code_801D0B50.data.o"

View File

@ -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);
}
}

View File

@ -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;

View File

@ -43,7 +43,7 @@ void Opening_Main(GameState* thisx) {
}
void Opening_Destroy(GameState* thisx) {
ShrinkWindow_Fini();
ShrinkWindow_Destroy();
}
void Opening_Init(GameState* thisx) {

View File

@ -887,7 +887,7 @@ void Select_Main(GameState* thisx) {
}
void Select_Destroy(GameState* thisx) {
ShrinkWindow_Fini();
ShrinkWindow_Destroy();
}
void Select_Init(GameState* thisx) {

View File

@ -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();
}

View File

@ -20,6 +20,8 @@ animdict ={
"func_800F0568": "Audio_PlaySoundAtPosition",
"func_8016970C": "Play_CameraSetAtEye",
"func_800BBA88": "Enemy_StartFinishingBlow",
"ShrinkWindow_Step": "ShrinkWindow_Update",
"ShrinkWindow_Fini": "ShrinkWindow_Destroy",
"func_801A89A8": "Audio_QueueSeqCmd",
}

View File

@ -2901,8 +2901,8 @@
0x80160C78:("ShrinkWindow_SetPillarboxMagnitude",),
0x80160C8C:("ShrinkWindow_GetPillarboxMagnitude",),
0x80160CA0:("ShrinkWindow_Init",),
0x80160CD4:("ShrinkWindow_Fini",),
0x80160CE4:("ShrinkWindow_Step",),
0x80160CD4:("ShrinkWindow_Destroy",),
0x80160CE4:("ShrinkWindow_Update",),
0x80160D98:("ShrinkWindow_Draw",),
0x80161180:("func_80161180",),
0x8016119C:("func_8016119C",),