This commit is contained in:
theo3
2020-11-23 22:18:34 -08:00
parent 0b52f80e4d
commit edbf03101a
39 changed files with 581 additions and 914 deletions
+5 -13
View File
@@ -38,14 +38,6 @@ typedef struct {
extern struct_020227E8 gUnk_020227E8;
typedef struct {
u8 filler0[0x29C];
u16 unk29C;
u8 filler29E[0x562];
} struct_02034CB0;
extern struct_02034CB0 gUnk_02034CB0;
extern struct_02034CB0 gUnk_02021F30;
extern SaveFile gSaveFiles[];
extern u32 gUsedPalettes;
extern u8 gUnk_02000D00[];
@@ -96,7 +88,7 @@ void sub_08050318(u32 arg0, u32 arg1) {
void sub_08050384(void) {
sub_0801C4A0(0, 0);
_DmaZero(&gUnk_02034CB0, sizeof(gUnk_02034CB0));
_DmaZero(&gBG0Buffer, sizeof(gBG0Buffer));
gScreen.bg.bg3Control = 1;
}
@@ -108,8 +100,8 @@ void sub_080503A8(u32 gfxGroup) {
void sub_080503BC(u8 state) {
gUnk_02032EC0.state = state;
_DmaZero(&gUnk_02034CB0, sizeof(gUnk_02034CB0));
_DmaZero(&gUnk_02021F30, sizeof(gUnk_02021F30));
_DmaZero(&gBG0Buffer, sizeof(gBG0Buffer));
_DmaZero(&gBG1Buffer, sizeof(gBG1Buffer));
}
void sub_080503E4(u32 saveFileId) {
@@ -483,9 +475,9 @@ void sub_08050B3C(u16*);
void sub_08050AFC(u32 saveFileId) {
sub_0805041C(saveFileId);
_DmaZero(&gUnk_02021F30, sizeof(gUnk_02021F30));
_DmaZero(&gBG1Buffer, sizeof(gBG1Buffer));
if (gUnk_02019EE0.unk8[saveFileId] == 1) {
sub_08050B3C(&gUnk_02021F30.unk29C);
sub_08050B3C(&gBG1Buffer.unk29C);
}
gScreen.bg.bg2yOffset = 1;
}
+95 -6
View File
@@ -1,18 +1,107 @@
#include "entity.h"
#include "player.h"
extern u8 gUnk_03000000;
typedef struct {
u16 unk0;
u16 unk2;
u16 unk4;
u8 unk6;
u8 unk7;
} VStruct;
typedef struct {
u8 filler[0x420];
VStruct unk[0x100];
} UStruct;
extern UStruct gUnk_03000000;
bool32 sub_0805EC04(Entity* this) {
u32 i = 1;
u8* l = &gUnk_03000000;
UStruct* temp = &gUnk_03000000;
u32 j = 1;
for (; i < 0x20; i++) {
if (l[(i * 8) + 0x426] == 0) {
l[(i * 8) + 0x426] = j;
this->spriteSet.b1 = i;
this->spriteSet.b0 |= j;
if (temp->unk[i].unk6 == 0) {
temp->unk[i].unk6 = j;
this->spriteOrientation.b1 = i;
this->spriteRendering.b0 |= j;
return TRUE;
}
}
return FALSE;
}
void sub_0805EC60(Entity* this) {
u8 temp;
UStruct* temp2;
if (this->spriteRendering.b0 != 0) {
this->spriteRendering.b0 = 0;
temp = this->spriteOrientation.b1;
this->spriteOrientation.b1 = 0;
temp2 = &gUnk_03000000;
temp2->unk[temp].unk6 = 0;
}
}
NAKED
bool32 sub_0805EC9C(Entity* ent, u32 param_2, u32 param_3, u32 param_4) {
asm_unified("\
push {r4, r5, r6, r7, lr} \n\
adds r4, r0, #0 \n\
adds r5, r1, #0 \n\
adds r6, r2, #0 \n\
adds r7, r3, #0 \n\
ldrb r0, [r4, #0x1b] \n\
lsls r0, r0, #0x1a \n\
lsrs r0, r0, #0x1b \n\
cmp r0, #0 \n\
bne _0805ECBE \n\
adds r0, r4, #0 \n\
bl sub_0805EC04 \n\
cmp r0, #0 \n\
bne _0805ECBE \n\
movs r0, #0 \n\
b _0805ECE0 \n\
_0805ECBE: \n\
ldr r1, _0805ECE4 @ =gUnk_03000000 \n\
ldr r0, _0805ECE8 @ =0x00000427 \n\
adds r2, r1, r0 \n\
movs r0, #1 \n\
strb r0, [r2] \n\
ldrb r0, [r4, #0x1b] \n\
lsls r0, r0, #0x1a \n\
lsrs r0, r0, #0x1b \n\
lsls r0, r0, #3 \n\
movs r2, #0x84 \n\
lsls r2, r2, #3 \n\
adds r1, r1, r2 \n\
adds r0, r0, r1 \n\
strh r5, [r0] \n\
strh r6, [r0, #2] \n\
strh r7, [r0, #4] \n\
movs r0, #1 \n\
_0805ECE0: \n\
pop {r4, r5, r6, r7, pc} \n\
.align 2, 0 \n\
_0805ECE4: .4byte gUnk_03000000 \n\
_0805ECE8: .4byte 0x00000427 \n\
");
}
void sub_0805ECEC(int param_1, u32 param_2, u32 param_3, u32 param_4) {
u16* temp;
gUnk_03000000.unk[0].unk7 = 1;
temp = &gUnk_03000000.unk[param_1].unk0;
temp[0] = param_2;
temp[1] = param_3;
temp[2] = param_4;
}
void sub_0805ED14(u32 param_1) {
gPlayerState.field_0x9c[0] = param_1;
gPlayerState.field_0x98 = 0;
gPlayerState.field_0x9a = 0;
}
+169
View File
@@ -0,0 +1,169 @@
#include "global.h"
#include "functions.h"
#include "structures.h"
extern u16 gUnk_081092D4;
extern u8 gUnk_02036AD8;
extern u8 gUnk_081094CE;
extern u8 gUnk_02036A58;
extern void* gUnk_081092AC[];
typedef struct {
u8 filler0[12][16];
} VStruct;
extern VStruct gUnk_0810942E[];
extern u32 gUnk_0810926C[];
typedef struct {
u8 unk0;
u8 unk1;
} UStruct;
typedef struct {
u8 unk0;
u8 unk1;
u8 unk2;
u8 unk3;
u16 unk4;
u16 unk6;
void* unk8;
} WStruct;
void sub_0805F820(WStruct* r0, u32* r1);
u32 sub_0805F7DC(u32 r0, WStruct* r1) {
u32 temp;
u32 temp2;
u32* offset;
if (r1->unk4 <= r1->unk6)
return 0;
offset = sub_0805F25C(r0);
temp = r1->unk6;
if ((r0 >> 8) > 4) {
sub_0805F820(r1, offset);
offset += 0x10;
}
sub_0805F820(r1, offset);
if (r1->unk6 > r1->unk4) {
r1->unk6 = r1->unk4;
}
return r1->unk6 - temp;
}
void sub_0805F820(WStruct* r0, u32* r1) {
u32 bVar1;
u32 bVar2;
s32 uVar3;
s32 uVar4;
void* uVar5;
u32 uVar6;
u32 uVar7;
u8* puVar8;
u8* temp;
void* temp2;
VStruct* temp3;
if (r0->unk4 - r0->unk6 > 0) {
sub_08002724(r1, &gUnk_02036A58);
if (r0->unk1 == 0) {
u32 tmp = sub_0805F7A0(*r1);
uVar6 = tmp & 0xf;
uVar3 = tmp >> 8;
} else {
uVar6 = 0;
uVar3 = 8;
}
uVar4 = r0->unk4 - r0->unk6;
if (uVar4 > 8) {
uVar4 = 8;
}
if (uVar4 < uVar3) {
uVar3 = uVar4;
}
puVar8 = &gUnk_02036A58 + uVar6;
temp2 = r0->unk8;
temp = gUnk_0810942E[r0->unk3].filler0[r0->unk2 * 2];
uVar7 = r0->unk6;
r0->unk6 += uVar3;
if (r0->unk0 / 16 != 1) {
while (uVar3-- > 0) {
sub_080026C4(puVar8, temp2, temp, uVar7);
puVar8++;
uVar7++;
}
} else {
while (uVar3-- > 0) {
sub_080026F2(puVar8, temp2, temp, uVar7);
puVar8++;
uVar7++;
}
}
}
}
void sub_0805F8E4(u32 r0, WStruct* r1) {
u32 old = r1->unk1;
r1->unk1 = 1;
sub_0805F7DC(r0, r1);
r1->unk1 = old;
}
u32 sub_0805F8F8(u32 idx) {
u8* temp = &gUnk_0810942E[idx].filler0[10][10];
return gUnk_0810926C[*temp];
}
void sub_0805F918(u32 idx, u32 idx2, void* dest) {
u32 i;
void* puVar1;
u8* puVar2;
u32 j;
u32 idx3;
u8* temp;
u8* temp2;
_DmaFill32(sub_0805F8F8(idx2), &gUnk_02036AD8, 0xe0);
puVar1 = gUnk_081092AC[idx];
temp = &gUnk_081094CE + idx2 * 0xc0;
idx3 = 0;
for (i = 0; i < 3; i++) {
puVar2 = &gUnk_02036A58;
sub_08002724(puVar1, &gUnk_02036A58);
puVar1 += 0x40;
for (j = 0; j < 8; j++) {
sub_080026C4(puVar2, &gUnk_02036AD8, temp, idx3);
puVar2++;
idx3++;
}
}
LoadAssetAsync((const void*)&gUnk_02036AD8, (u32)dest, 0xe0);
}
u32 sub_0805F9A0(u32 r0) {
if (gUnk_02000000->gameLanguage == 0) {
u16* val = &gUnk_081092D4;
u32 i = 0;
do {
if (*val == r0) {
return i + 0x800;
}
i++;
val++;
} while (*val != 0);
} else if (r0 == 0x31a) {
r0 = 1;
r0 &= 0xff;
}
return (r0 & 0xff) + 0x800;
}
+3 -3
View File
@@ -6,7 +6,7 @@
void sub_0802A39C(Entity*);
void sub_0802A334(Entity*);
extern u16 gUnk_02001A40[];
extern u16 gBG3Buffer[];
extern void (*const gUnk_080CD030[])(Entity*);
extern const u8 gUnk_080CD03C[];
@@ -63,7 +63,7 @@ void sub_0802A2FC(Entity* this) {
void sub_0802A334(Entity* this) {
u32 x = (this->x.HALF.HI - gRoomControls.roomScrollX + gScreen.bg.bg1yOffset) >> 3;
u32 y = (this->y.HALF.HI - gRoomControls.roomScrollY + gScreen.bg.bg2xOffset) >> 3;
if (gUnk_02001A40[(x & 0x1fU) + (y & 0x1fU) * 0x20 + 0x400]) {
if (gBG3Buffer[(x & 0x1fU) + (y & 0x1fU) * 0x20 + 0x400]) {
this->collisionLayer = 2;
} else {
this->collisionLayer = 1;
@@ -74,7 +74,7 @@ void sub_0802A334(Entity* this) {
void sub_0802A39C(Entity* this) {
u32 x = (gPlayerEntity.x.HALF.HI - gRoomControls.roomScrollX + gScreen.bg.bg1yOffset) >> 3;
u32 y = (gPlayerEntity.y.HALF.HI - gRoomControls.roomScrollY + gScreen.bg.bg2xOffset - 10) >> 3;
if (gUnk_02001A40[(x & 0x1fU) + (y & 0x1fU) * 0x20 + 0x400]) {
if (gBG3Buffer[(x & 0x1fU) + (y & 0x1fU) * 0x20 + 0x400]) {
this->flags &= ~0x80;
} else {
this->flags |= 0x80;
+58
View File
@@ -0,0 +1,58 @@
#include "entity.h"
#include "functions.h"
#include "player.h"
#include "room.h"
extern void (*const gUnk_08109AC8[])(Entity*);
extern BoundingBox gUnk_08109AD0;
extern u8 gUnk_08003E44;
void sub_0805FC74(Entity*);
void Item14(Entity *this) {
gUnk_08109AC8[this->action](this);
}
void sub_0805FBE8(Entity* this) {
CopyPosition(&gPlayerEntity,this);
this->action++;
this->spriteSettings.b.draw = TRUE;
this->field_0x3c = gPlayerEntity.field_0x3c + 1;
this->boundingBox = &gUnk_08109AD0;
this->nonPlanarMovement = 0x380;
this->animationState = this->animationState & 0x7f;
if (this->collisionLayer == 2) {
this->entityType.parameter = 1;
}
this->direction = this->animationState << 2;
*(u32 *)&this->field_0x6c = 0x3c;
InitializeAnimation(this, (this->animationState >> 1) + 0xc);
sub_0801766C(this);
sub_0806F69C(this);
sub_0805FC74(this);
PlaySFX(0x13f);
}
void sub_0805FC74(Entity* this) {
int iVar1;
if (--*(int *)&this->field_0x6c != -1) {
GetNextFrame(this);
sub_0806F69C(this);
++this->actionDelay;
if (this->entityType.parameter == 0) {
sub_0800451C(this);
}
if (!sub_080002F0(COORD_TO_TILE(this),gPlayerEntity.collisionLayer,0x80) &&
sub_080040D8(this,&gUnk_08003E44, this->x.HALF.HI, this->y.HALF.HI)) {
CreateFx(this, 0x19, 0);
DeleteThisEntity();
}
if (this->bitfield != 0) {
CreateFx(this, 0x19, 0);
DeleteThisEntity();
}
} else {
DeleteThisEntity();
}
}
+3 -3
View File
@@ -427,7 +427,7 @@ void sub_0805A94C(Manager15* this) {
gScreen.controls.window1VerticalDimensions = (tmp1 << 8 | tmp2);
}
extern u8 gUnk_02001A40[];
extern u8 gBG3Buffer[];
#ifdef NON_MATCHING
void sub_0805A9CC(Manager15* this) {
@@ -449,7 +449,7 @@ void sub_0805A9CC(Manager15* this) {
gScreen.affine.bg3yOffset = tmp1 & 0x3F;
if (tmp1 < 0)
tmp1 += 0x3F;
tmp3 = (&gUnk_02001A40[(tmp1 >> 6 << 9)]);
tmp3 = (&gBG3Buffer[(tmp1 >> 6 << 9)]);
gScreen.affine.unk5 = (u32)tmp3;
gScreen.controls.window1VerticalDimensions = 0xa0;
if (this->unk_28 == tmp3)
@@ -499,7 +499,7 @@ void sub_0805AAF0(u32 unk0) {
gScreen.controls.layerFXControl = 0x3E48;
gScreen.controls.alphaBlend = 0x1008;
gScreen.affine.bg3Control = 0x1E04;
gScreen.affine.unk5 = &gUnk_02001A40;
gScreen.affine.unk5 = &gBG3Buffer;
gScreen.affine.bg3xOffset = 0;
gScreen.affine.bg3yOffset = 0;
gScreen.affine.unk4 = 1;
+9 -9
View File
@@ -41,7 +41,7 @@ void sub_08057EFC(Manager8* this) {
void sub_08058004(u32, void*, void*);
extern u8 gUnk_02001A40[];
extern u8 gBG3Buffer[];
extern u8 gUnk_02006F00[];
void sub_08057F20(Manager8* this) {
@@ -50,8 +50,8 @@ void sub_08057F20(Manager8* this) {
tmp = tmp + (tmp >> 3) + ((0x400 - gRoomControls.width) / 2);
gScreen.affine.bg3xOffset = tmp & 0xF;
gScreen.affine.bg3yOffset = 0x30 - ((0x30 - (gRoomControls.roomScrollY - gRoomControls.roomOriginY)) >> 2);
gScreen.affine.unk5 = gUnk_02001A40;
sub_08058004(tmp, gUnk_02006F00, gUnk_02001A40);
gScreen.affine.unk5 = gBG3Buffer;
sub_08058004(tmp, gUnk_02006F00, gBG3Buffer);
tmp = ((tmp >> 4) << 1);
if (this->unk_38 != tmp) {
this->unk_38 = tmp;
@@ -61,8 +61,8 @@ void sub_08057F20(Manager8* this) {
tmp = tmp + (tmp >> 2) + ((0x400 - gRoomControls.width) / 2);
gScreen.bg.bg1yOffset = tmp & 0xF;
gScreen.bg.bg2xOffset = 0x30 - ((0x30 - (gRoomControls.roomScrollY - gRoomControls.roomOriginY)) >> 1);
gScreen.bg.unk_14 = gUnk_02001A40 + 0x800;
sub_08058004(tmp, gUnk_02006F00 + 0x2000, gUnk_02001A40 + 0x800);
gScreen.bg.unk_14 = gBG3Buffer + 0x800;
sub_08058004(tmp, gUnk_02006F00 + 0x2000, gBG3Buffer + 0x800);
tmp = ((tmp >> 4) << 1);
if (this->unk_3c != tmp) {
this->unk_3c = tmp;
@@ -117,19 +117,19 @@ void sub_080580B0(u32 unk1) {
sub_08058034();
tmp = gRoomControls.roomScrollX - gRoomControls.roomOriginX; // r7
tmp = tmp + (tmp >> 3) + (0x400 - gRoomControls.width) / 2;
sub_08058004(tmp, gUnk_02006F00, gUnk_02001A40);
sub_08058004(tmp, gUnk_02006F00, gBG3Buffer);
gScreen.affine.bg3xOffset = tmp & 0xF;
gScreen.affine.bg3yOffset = 0x30 - ((0x30 - (gRoomControls.roomScrollY - gRoomControls.roomOriginY)) >> 1); //?
gScreen.affine.bg3Control = 0x1D09;
gScreen.affine.unk5 = gUnk_02001A40;
gScreen.affine.unk5 = gBG3Buffer;
gScreen.affine.unk4 = 1;
tmp = gRoomControls.roomScrollX - gRoomControls.roomOriginX; // r7
tmp = tmp + (tmp >> 2) + (0x400 - gRoomControls.width) / 2;
sub_08058004(tmp, gUnk_02006F00 + 0x2000, gUnk_02001A40 + 0x800);
sub_08058004(tmp, gUnk_02006F00 + 0x2000, gBG3Buffer + 0x800);
gScreen.bg.bg1yOffset = tmp & 0xF;
gScreen.bg.bg2xOffset = 0x30 - ((0x30 - (gRoomControls.roomScrollY - gRoomControls.roomOriginY)) >> 1); //?
gScreen.bg.bg1xOffset = 0x1E09;
gScreen.bg.unk_14 = gUnk_02001A40 + 0x800;
gScreen.bg.unk_14 = gBG3Buffer + 0x800;
gScreen.bg.bg2yOffset = 1;
gScreen.controls.layerFXControl = 0x3C48;
gScreen.controls.alphaBlend = 0x609;
+4 -4
View File
@@ -18,7 +18,7 @@ void sub_080582F8(u8*, u8*);
void sub_08058324();
extern u32 gUnk_02006F00[];
extern u8 gUnk_02001A40[];
extern u8 gBG3Buffer[];
const u16 gUnk_081081EC[] = { 0x30, 0x30, 0x30, 0x38 };
@@ -40,7 +40,7 @@ void sub_08058210(Manager9* this) {
if (this->unk_3c == tmp)
return;
this->unk_3c = tmp;
sub_080582A0(tmp, gUnk_02006F00, gUnk_02001A40);
sub_080582A0(tmp, gUnk_02006F00, gBG3Buffer);
gScreen.bg.bg2yOffset = 1;
}
@@ -91,9 +91,9 @@ void sub_08058324(u32 unk) {
LoadPaletteGroup(unk + 0x86);
LoadGfxGroup(unk + 0x36);
sub_080582D0();
sub_080582A0(sub_08058244(unk), gUnk_02006F00, gUnk_02001A40);
sub_080582A0(sub_08058244(unk), gUnk_02006F00, gBG3Buffer);
gScreen.bg.bg1xOffset = 0x1D47;
gScreen.bg.unk_14 = gUnk_02001A40;
gScreen.bg.unk_14 = gBG3Buffer;
gScreen.bg.bg2yOffset = 1;
gScreen.lcd.displayControl |= 0x200;
}
+6 -6
View File
@@ -223,7 +223,7 @@ void sub_0808EABC(Entity* this) {
}
break;
case 5:
switch (gMenu.unk10[this->entityType.form]) {
switch (gMenu.focusCoords[this->entityType.form]) {
case 0:
var0 = 42;
var1 = 40;
@@ -232,7 +232,7 @@ void sub_0808EABC(Entity* this) {
case 2:
var0 = 20;
var1 = 144;
var1 -= (gMenu.unk16 - gMenu.unk10[this->entityType.form]) * 32;
var1 -= (gMenu.unk16 - gMenu.focusCoords[this->entityType.form]) * 32;
break;
}
break;
@@ -376,9 +376,9 @@ void sub_0808ECBC(Entity* this) {
void sub_0808ED64(Entity* this) {
int y = 255;
if (gUnk_02032EC0.transitionType == 1 && gMenu.unk10[1] != 5) {
this->x.HALF.HI = gMenu.unk10[0] * 16 + 28;
y = gMenu.unk10[1] * 16 + 58;
if (gUnk_02032EC0.transitionType == 1 && gMenu.focusCoords[1] != 5) {
this->x.HALF.HI = gMenu.focusCoords[0] * 16 + 28;
y = gMenu.focusCoords[1] * 16 + 58;
}
this->y.HALF.HI = y;
}
@@ -421,7 +421,7 @@ void sub_0808EE00(Entity* this) {
}
this->field_0x6a.HWORD = var2;
this->palette.b.b0 = gMenu.unk10[1] == 5 && var1 == gMenu.field_0x12 ? 11 : 9;
this->palette.b.b0 = gMenu.focusCoords[1] == 5 && var1 == gMenu.field_0x12 ? 11 : 9;
gUnk_02019EE0.unk0 |= sub_0808EF6C(this);
}
+103
View File
@@ -0,0 +1,103 @@
#include "global.h"
#include "functions.h"
#include "main.h"
#include "menu.h"
#include "screen.h"
#include "structures.h"
#include "textbox.h"
typedef struct {
u16 unk0;
u16 unk2;
u16 unk4;
} VStruct;
extern VStruct gUnk_03000FF0;
extern u8 gBG3Buffer[];
extern void (*const gUnk_08109A30[])();
void HandleDebugTextScreen() {
gUnk_08109A30[gUnk_03001000.funcIndex]();
}
void sub_0805FA04(void) {
sub_0801DA90(1);
_DmaZero((void*)&gBG0Buffer, sizeof(BGBuffer));
_DmaZero((void*)&gBG3Buffer, 0x1000);
gScreen.lcd.displayControl = 0x940;
gScreen.bg.bg1Control = 0;
gScreen.bg.bg2Control = 0;
gScreen.affine.bg3xOffset = 0;
gScreen.affine.bg3yOffset = 0;
gScreen.affine.bg3Control = 0x1e0f;
gScreen.affine.unk4 = 1;
sub_08056418();
_DmaZero((void*)&gUnk_02032EC0, sizeof(UI));
_DmaZero((void*)&gMenu, sizeof(Menu));
gMenu.unk16 = gUnk_02000000->gameLanguage;
sub_08053320();
sub_0801D79C(0, 0x1144);
gUnk_03001000.funcIndex = 1;
sub_080A3210();
sub_08050008();
}
void sub_0805FA98(void) {
int iVar1;
switch (gUnk_03000FF0.unk2) {
case 0x40:
gMenu.focusCoords[1] -= 1;
break;
case 0x80:
gMenu.focusCoords[1] += 1;
break;
case 0x200:
gMenu.focusCoords[0] ^= 1;
if (gMenu.focusCoords[0] == 0) {
gScreen.bg.bg0Control = 0x1f0c;
gScreen.affine.bg3Control = 0x1e0f;
} else {
gScreen.bg.bg0Control = 0x1f0f;
gScreen.affine.bg3Control = 0x1e0c;
}
break;
case 0x100:
gUnk_02000000->gameLanguage = gMenu.unk16;
TextboxNoOverlapFollow(gMenu.unk14 * 0x100 + gMenu.unk15);
break;
case 0x2:
sub_08056418();
break;
default:
switch (gUnk_03000FF0.unk4) {
case 0x20:
iVar1 = -1;
break;
case 0x10:
iVar1 = 1;
break;
default:
iVar1 = 0;
break;
}
switch (gMenu.focusCoords[1]) {
case 0:
gMenu.unk14 = (gMenu.unk14 + iVar1 + 0x50) % 0x50;
break;
case 1:
gMenu.unk15 += iVar1;
break;
case 2:
gMenu.unk16 = (gMenu.unk16 + iVar1 + 7) % 7;
break;
}
}
gMenu.focusCoords[1] = (gMenu.focusCoords[1] + 3) % 3;
gScreen.affine.unk4 = 1;
}
void sub_0805FBC4() {
InitScreen(0);
}