mirror of
https://github.com/pret/pmd-red.git
synced 2026-08-28 11:44:30 -05:00
Window BG buffer names
This commit is contained in:
@@ -7,8 +7,17 @@ extern s16 gUnknown_2026E4E;
|
||||
|
||||
extern s16 *gWindowBgCopy;
|
||||
|
||||
void sub_80057E8(void);
|
||||
void CopyWindowBgBuffer(s32 *, u8 kind);
|
||||
typedef enum CopyWindowBgBufferType {
|
||||
COPY_WINDOW_BG_BUFFER_DEFAULT,
|
||||
COPY_WINDOW_BG_BUFFER_DIM2,
|
||||
COPY_WINDOW_BG_BUFFER_DIM1,
|
||||
COPY_WINDOW_BG_BUFFER_UNK3,
|
||||
COPY_WINDOW_BG_BUFFER_UNK4,
|
||||
COPY_WINDOW_BG_BUFFER_UNK5,
|
||||
} CopyWindowBgBufferType;
|
||||
|
||||
void WindowBgBufferInit(void);
|
||||
void CopyWindowBgBuffer(s32 *a0, u8 kind);
|
||||
void ToggleWindowBgBuffer(void);
|
||||
|
||||
#endif // GUARD_CODE_800558C_H
|
||||
|
||||
@@ -4,6 +4,25 @@
|
||||
#include "code_800558C.h"
|
||||
#include "math.h"
|
||||
|
||||
#define UNROLL16(x) do { \
|
||||
x; \
|
||||
x; \
|
||||
x; \
|
||||
x; \
|
||||
x; \
|
||||
x; \
|
||||
x; \
|
||||
x; \
|
||||
x; \
|
||||
x; \
|
||||
x; \
|
||||
x; \
|
||||
x; \
|
||||
x; \
|
||||
x; \
|
||||
x; \
|
||||
} while (0)
|
||||
|
||||
EWRAM_DATA bool8 gDrawWindow = FALSE;
|
||||
EWRAM_DATA s16 *gWin0HPtr = NULL;
|
||||
EWRAM_DATA static s32 sUnknown_2026E40 = 0; // Read from but never written to
|
||||
@@ -23,7 +42,6 @@ EWRAM_INIT s16 *gWindowBgCopy = NULL;
|
||||
static const s16 gUnknown_80B8008[17] = {16, 12, 9, 7, 6, 5, 4, 3, 2, 2, 1, 1, 1, 0, 0, 0, 0};
|
||||
|
||||
#define Y_MAX 160
|
||||
|
||||
// Dim edges of screen in corridors with 1 visibility
|
||||
static const s16 sCorridorDim1[Y_MAX] = {
|
||||
0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100, 0x100,
|
||||
@@ -89,7 +107,7 @@ static const s16 sDefaultBgH[Y_MAX] = {
|
||||
};
|
||||
|
||||
// arm9.bin::02006154
|
||||
void sub_80057E8(void)
|
||||
void WindowBgBufferInit(void)
|
||||
{
|
||||
sInitialized = TRUE;
|
||||
sBufferIdx = FALSE;
|
||||
@@ -109,7 +127,7 @@ void CopyWindowBgBuffer(s32 *a0, u8 kind)
|
||||
s32 i;
|
||||
|
||||
if (!sInitialized)
|
||||
kind = 0;
|
||||
kind = COPY_WINDOW_BG_BUFFER_DEFAULT;
|
||||
|
||||
dst = !sBufferIdx ? sBuffer0 : sBuffer1;
|
||||
|
||||
@@ -120,154 +138,30 @@ void CopyWindowBgBuffer(s32 *a0, u8 kind)
|
||||
sBufferPtr = dst;
|
||||
|
||||
switch (kind) {
|
||||
case 0:
|
||||
case COPY_WINDOW_BG_BUFFER_DEFAULT:
|
||||
for (i = 0; i < 10; i++) {
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 0;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 0;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 0;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 0;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 0;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 0;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 0;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 0;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 0;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 0;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 0;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 0;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 0;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 0;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 0;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 0;
|
||||
UNROLL16(*dst++ = *src1++; *dst++ = 0;);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
case COPY_WINDOW_BG_BUFFER_DIM2:
|
||||
src2 = sCorridorDim2;
|
||||
for (i = 0; i < 10; i++) {
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
UNROLL16(*dst++ = *src1++; *dst++ = *src2++;);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
case COPY_WINDOW_BG_BUFFER_DIM1:
|
||||
src2 = sCorridorDim1;
|
||||
for (i = 0; i < 10; i++) {
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
UNROLL16(*dst++ = *src1++; *dst++ = *src2++;);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
case COPY_WINDOW_BG_BUFFER_UNK3:
|
||||
if ((a0[0] < 0 && a0[2] < 0)
|
||||
|| (a0[1] < 0 && a0[3] < 0)
|
||||
|| (a0[0] >= 240 && a0[2] >= 240)
|
||||
|| (a0[1] >= 160 && a0[3] >= 160)) {
|
||||
for (i = 0; i < 10; i++) {
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 240;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 240;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 240;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 240;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 240;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 240;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 240;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 240;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 240;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 240;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 240;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 240;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 240;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 240;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 240;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 240;
|
||||
UNROLL16(*dst++ = *src1++; *dst++ = 240;);
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -312,44 +206,13 @@ void CopyWindowBgBuffer(s32 *a0, u8 kind)
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
case COPY_WINDOW_BG_BUFFER_UNK4:
|
||||
src2 = gUnknown_80B82AA;
|
||||
for (i = 0; i < 15; i++) {
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = *src2++;
|
||||
UNROLL16(*dst++ = *src1++; *dst++ = *src2++;);
|
||||
}
|
||||
break;
|
||||
case 5: {
|
||||
case COPY_WINDOW_BG_BUFFER_UNK5: {
|
||||
s32 r8;
|
||||
s32 sp14;
|
||||
s32 uVar7;
|
||||
@@ -364,38 +227,7 @@ void CopyWindowBgBuffer(s32 *a0, u8 kind)
|
||||
s32 j, k;
|
||||
|
||||
for (i = 0; i < 15; i++) {
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 256;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 256;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 256;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 256;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 256;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 256;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 256;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 256;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 256;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 256;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 256;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 256;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 256;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 256;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 256;
|
||||
*dst++ = *src1++;
|
||||
*dst++ = 256;
|
||||
UNROLL16(*dst++ = *src1++; *dst++ = 256;);
|
||||
}
|
||||
|
||||
val1 = sUnknown_2026E40;
|
||||
|
||||
@@ -38,7 +38,7 @@ UNUSED static void DebugMapViewer(void)
|
||||
sub_809975C();
|
||||
sub_809D0AC();
|
||||
ResetDialogueBox();
|
||||
CopyWindowBgBuffer(NULL, 0);
|
||||
CopyWindowBgBuffer(NULL, COPY_WINDOW_BG_BUFFER_DEFAULT);
|
||||
AllocGroundMapAction();
|
||||
while (TRUE) {
|
||||
bool8 quitMapView;
|
||||
@@ -48,7 +48,7 @@ UNUSED static void DebugMapViewer(void)
|
||||
if (DebugFieldMapWindow_Init()) {
|
||||
DebugFieldMapWindow_MoveMenuTo(mapId);
|
||||
while (TRUE) {
|
||||
CopyWindowBgBuffer(NULL, 0);
|
||||
CopyWindowBgBuffer(NULL, COPY_WINDOW_BG_BUFFER_DEFAULT);
|
||||
sub_8012A18(0);
|
||||
switch (DebugFieldMapWindow_GetInput()) {
|
||||
case MENU_INPUT_A_PRESS:
|
||||
@@ -132,7 +132,7 @@ UNUSED static void DebugMapViewer(void)
|
||||
sub_809D25C();
|
||||
sub_80A59DC();
|
||||
DrawDialogueBoxString_Async();
|
||||
CopyWindowBgBuffer(NULL, 0);
|
||||
CopyWindowBgBuffer(NULL, COPY_WINDOW_BG_BUFFER_DEFAULT);
|
||||
ToggleWindowBgBuffer();
|
||||
nullsub_8(gGameOptionsRef->touchScreen);
|
||||
sub_8005180();
|
||||
|
||||
@@ -303,10 +303,10 @@ static void sub_803F7BC(void)
|
||||
u32 roomId = tile->room;
|
||||
|
||||
if (strPtr->allTilesRevealed != 0 || strPtr->unk1820C != 0 || strPtr->unk18217 != 0) {
|
||||
CopyWindowBgBuffer(NULL, 0);
|
||||
CopyWindowBgBuffer(NULL, COPY_WINDOW_BG_BUFFER_DEFAULT);
|
||||
}
|
||||
else if (roomId == CORRIDOR_ROOM) {
|
||||
u32 kind = (strPtr->visibilityRange == 2) ? 1 : 2;
|
||||
u32 kind = (strPtr->visibilityRange == 2) ? COPY_WINDOW_BG_BUFFER_DIM2 : COPY_WINDOW_BG_BUFFER_DIM1;
|
||||
CopyWindowBgBuffer(NULL, kind);
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -239,7 +239,7 @@ void sub_803E668(u32 unused)
|
||||
nullsub_8(gGameOptionsRef->touchScreen);
|
||||
sub_8005180();
|
||||
nullsub_12();
|
||||
CopyWindowBgBuffer(NULL, 0);
|
||||
CopyWindowBgBuffer(NULL, COPY_WINDOW_BG_BUFFER_DEFAULT);
|
||||
ToggleWindowBgBuffer();
|
||||
gDungeonFramesCounter++;
|
||||
IncrementPlayTime(gPlayTimeRef);
|
||||
|
||||
@@ -373,7 +373,7 @@ void FriendAreasMap_RunFrameActions(void)
|
||||
SetBG3RegOffsets(gFriendAreasMapPtr->bgPos.x, gFriendAreasMapPtr->bgPos.y);
|
||||
AnimateSprites();
|
||||
UpdateAnimatedColors(FadeScreen(), gFriendAreasMapPtr->unk4C4C, 0xB0, 16, gFriendAreasMapPtr->brightness, NULL);
|
||||
CopyWindowBgBuffer(NULL, 0);
|
||||
CopyWindowBgBuffer(NULL, COPY_WINDOW_BG_BUFFER_DEFAULT);
|
||||
nullsub_8(gGameOptionsRef->touchScreen);
|
||||
sub_8005180();
|
||||
ToggleWindowBgBuffer();
|
||||
|
||||
@@ -308,7 +308,7 @@ u32 xxx_script_related_8098468_Async(s32 startMode)
|
||||
GroundMap_ExecuteEvent(EVENT_DIVIDE, FALSE);
|
||||
}
|
||||
GroundMap_Action();
|
||||
CopyWindowBgBuffer(NULL,0);
|
||||
CopyWindowBgBuffer(NULL, COPY_WINDOW_BG_BUFFER_DEFAULT);
|
||||
ToggleWindowBgBuffer();
|
||||
xxx_call_update_bg_sound_input();
|
||||
while ( 1 ) {
|
||||
|
||||
@@ -90,7 +90,7 @@ void AgbMain(void)
|
||||
nullsub_6();
|
||||
InitInput();
|
||||
InitBGPaletteBuffer();
|
||||
sub_80057E8();
|
||||
WindowBgBufferInit();
|
||||
InitFileSystem();
|
||||
LoadCharmaps();
|
||||
ResetScheduledMemCopies();
|
||||
|
||||
@@ -273,7 +273,7 @@ void GameLoop_Async(void)
|
||||
static void MainLoops_RunFrameActions(u32 unused)
|
||||
{
|
||||
DrawDialogueBoxString_Async();
|
||||
CopyWindowBgBuffer(NULL, 0);
|
||||
CopyWindowBgBuffer(NULL, COPY_WINDOW_BG_BUFFER_DEFAULT);
|
||||
nullsub_8(gGameOptionsRef->touchScreen);
|
||||
|
||||
sub_8005180();
|
||||
@@ -362,7 +362,7 @@ static void QuickSave_Async(u32 mode)
|
||||
sub_8099744();
|
||||
sub_8099750();
|
||||
SetCharacterMask(3);
|
||||
CopyWindowBgBuffer(NULL, 0);
|
||||
CopyWindowBgBuffer(NULL, COPY_WINDOW_BG_BUFFER_DEFAULT);
|
||||
ToggleWindowBgBuffer();
|
||||
CreateDialogueBoxAndPortrait(sSaveTextQuicksaving, 0, 0, 0x20);
|
||||
|
||||
|
||||
@@ -208,7 +208,7 @@ static void sub_80371B8(void)
|
||||
|
||||
void sub_80373C4(void)
|
||||
{
|
||||
CopyWindowBgBuffer(NULL, 0);
|
||||
CopyWindowBgBuffer(NULL, COPY_WINDOW_BG_BUFFER_DEFAULT);
|
||||
ToggleWindowBgBuffer();
|
||||
WaitForNextFrameAndAdvanceRNG();
|
||||
LoadBufferedInputs();
|
||||
|
||||
@@ -1040,7 +1040,7 @@ void sub_809B57C_Async(void)
|
||||
}
|
||||
|
||||
if (sTextbox->unk434 < 0) {
|
||||
CopyWindowBgBuffer(0, 0);
|
||||
CopyWindowBgBuffer(0, COPY_WINDOW_BG_BUFFER_DEFAULT);
|
||||
}
|
||||
else {
|
||||
CopyWindowBgBuffer(0, 5);
|
||||
|
||||
@@ -406,7 +406,7 @@ static void WorldMap_RunFrameActions(void)
|
||||
SetBG3RegOffsets(sWorldMapPtr->bgPos.x, sWorldMapPtr->bgPos.y);
|
||||
AnimateSprites(TRUE);
|
||||
FadeScreen();
|
||||
CopyWindowBgBuffer(NULL, 0);
|
||||
CopyWindowBgBuffer(NULL, COPY_WINDOW_BG_BUFFER_DEFAULT);
|
||||
nullsub_8(gGameOptionsRef->touchScreen);
|
||||
sub_8005180();
|
||||
ToggleWindowBgBuffer();
|
||||
|
||||
Reference in New Issue
Block a user