mirror of
https://github.com/zeldaret/tmc
synced 2026-06-04 10:48:58 -04:00
done
This commit is contained in:
+5
-13
@@ -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
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
Reference in New Issue
Block a user