sub_805363C and sprite oam memes again urgh

This commit is contained in:
DizzyEggg 2024-10-21 15:36:56 +02:00
parent e69cf646c8
commit 38af7bc8aa
2 changed files with 174 additions and 329 deletions

View File

@ -6,335 +6,6 @@
.text
thumb_func_start sub_80533A4
sub_80533A4:
push {r4-r7,lr}
mov r7, r8
push {r7}
sub sp, 0x4
ldr r5, _08053428
ldr r0, [r5]
movs r1, 0x16
ldrsh r4, [r0, r1]
movs r6, 0x10
subs r4, 0x8
cmp r4, 0
bge _080533BE
adds r4, 0x14
_080533BE:
movs r0, 0
bl sub_80073B8
mov r8, r5
movs r7, 0x7
_080533C8:
lsls r0, r4, 6
ldr r2, _0805342C
adds r0, r2
mov r2, r8
ldr r1, [r2]
adds r5, r1, r0
ldrb r0, [r5]
cmp r0, 0
beq _08053402
ldrb r0, [r5, 0x1]
cmp r0, 0
beq _080533F0
movs r0, 0x7
str r0, [sp]
movs r0, 0
movs r1, 0
adds r2, r6, 0
movs r3, 0xE0
bl sub_80078A4
_080533F0:
adds r1, r6, 0x3
adds r2, r5, 0x3
movs r0, 0xD
str r0, [sp]
movs r0, 0x8
movs r3, 0
bl PrintStringOnWindow
adds r6, 0xE
_08053402:
adds r4, 0x1
cmp r4, 0x13
ble _0805340A
movs r4, 0
_0805340A:
subs r7, 0x1
cmp r7, 0
bge _080533C8
movs r0, 0
bl sub_80073E0
movs r0, 0
bl sub_8007334
add sp, 0x4
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
_08053428: .4byte gDungeon
_0805342C: .4byte 0x0001c070
thumb_func_end sub_80533A4
thumb_func_start sub_8053430
sub_8053430:
push {r4-r6,lr}
sub sp, 0x4
adds r5, r0, 0
ldr r3, _08053454
ldr r0, [r3]
movs r2, 0x16
ldrsh r1, [r0, r2]
ldr r2, _08053458
ldr r0, [r2]
adds r1, r0
movs r6, 0x2
subs r1, 0x9
cmp r1, 0
bge _0805345E
_0805344C:
adds r1, 0x14
cmp r1, 0
blt _0805344C
b _0805345E
.align 2, 0
_08053454: .4byte gDungeon
_08053458: .4byte gUnknown_202F1F8
_0805345C:
subs r1, 0x14
_0805345E:
cmp r1, 0x13
bgt _0805345C
ldr r0, [r3]
lsls r1, 6
adds r0, r1
ldr r3, _0805349C
adds r0, r3
ldrb r0, [r0]
adds r4, r1, 0
cmp r0, 0
beq _08053498
ldr r1, [r2]
movs r0, 0xC
negs r0, r0
cmp r1, r0
ble _08053498
ldr r2, _080534A0
ldrb r0, [r2]
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
ldr r0, _080534A4
ldrh r1, [r0, 0x4]
movs r0, 0x40
ands r0, r1
cmp r0, 0
bne _080534A8
cmp r5, 0x1
beq _080534A8
_08053498:
movs r0, 0
b _08053528
.align 2, 0
_0805349C: .4byte 0x0001c070
_080534A0: .4byte gUnknown_202F1FC
_080534A4: .4byte gRealInputs
_080534A8:
movs r0, 0
bl sub_8083CE0
movs r0, 0
bl sub_80073B8
ldr r0, _08053530
ldr r2, _08053534
adds r1, r4, r2
ldr r0, [r0]
adds r4, r0, r1
ldrb r0, [r4]
cmp r0, 0
beq _080534FA
movs r0, 0x10
str r0, [sp]
movs r0, 0
movs r1, 0
movs r2, 0
movs r3, 0xD0
bl sub_80087EC
ldrb r0, [r4, 0x1]
cmp r0, 0
beq _080534EA
movs r0, 0x7
str r0, [sp]
movs r0, 0
movs r1, 0
adds r2, r6, 0
movs r3, 0xE0
bl sub_80078A4
_080534EA:
adds r1, r6, 0x3
adds r2, r4, 0x3
movs r0, 0xD
str r0, [sp]
movs r0, 0x8
movs r3, 0
bl PrintStringOnWindow
_080534FA:
movs r0, 0
bl sub_80073E0
movs r0, 0xD
bl sub_803E46C
ldr r5, _08053538
movs r4, 0x6
_0805350A:
ldr r1, [r5]
movs r0, 0
bl _call_via_r1
movs r0, 0xD
bl sub_803E46C
subs r4, 0x1
cmp r4, 0
bge _0805350A
ldr r1, _0805353C
ldr r0, [r1]
subs r0, 0x1
str r0, [r1]
movs r0, 0x1
_08053528:
add sp, 0x4
pop {r4-r6}
pop {r1}
bx r1
.align 2, 0
_08053530: .4byte gDungeon
_08053534: .4byte 0x0001c070
_08053538: .4byte gUnknown_203B084
_0805353C: .4byte gUnknown_202F1F8
thumb_func_end sub_8053430
thumb_func_start sub_8053540
sub_8053540:
push {r4,r5,lr}
sub sp, 0x4
adds r3, r0, 0
ldr r0, _08053564
ldr r0, [r0]
movs r1, 0x16
ldrsh r2, [r0, r1]
ldr r1, _08053568
ldr r0, [r1]
adds r4, r2, r0
movs r5, 0x80
cmp r4, 0
bge _0805356E
_0805355A:
adds r4, 0x14
cmp r4, 0
blt _0805355A
b _0805356E
.align 2, 0
_08053564: .4byte gDungeon
_08053568: .4byte gUnknown_202F1F8
_0805356C:
subs r4, 0x14
_0805356E:
cmp r4, 0x13
bgt _0805356C
ldr r0, [r1]
cmp r0, 0
bge _08053592
ldr r2, _08053598
ldrb r0, [r2]
movs r1, 0x2
orrs r0, r1
strb r0, [r2]
ldr r0, _0805359C
ldrh r1, [r0, 0x4]
movs r0, 0x80
ands r0, r1
cmp r0, 0
bne _080535A0
cmp r3, 0x2
beq _080535A0
_08053592:
movs r0, 0
b _08053622
.align 2, 0
_08053598: .4byte gUnknown_202F1FC
_0805359C: .4byte gRealInputs
_080535A0:
movs r0, 0
bl sub_8083CE0
movs r0, 0
bl sub_80073B8
ldr r1, _0805362C
lsls r0, r4, 6
ldr r2, _08053630
adds r0, r2
ldr r1, [r1]
adds r4, r1, r0
ldrb r0, [r4]
cmp r0, 0
beq _080535F4
movs r0, 0x10
str r0, [sp]
movs r0, 0
movs r1, 0
adds r2, r5, 0
movs r3, 0x68
bl sub_80087EC
ldrb r0, [r4, 0x1]
cmp r0, 0
beq _080535E4
movs r0, 0x7
str r0, [sp]
movs r0, 0
movs r1, 0
adds r2, r5, 0
movs r3, 0xE0
bl sub_80078A4
_080535E4:
adds r1, r5, 0x3
adds r2, r4, 0x3
movs r0, 0xD
str r0, [sp]
movs r0, 0x8
movs r3, 0
bl PrintStringOnWindow
_080535F4:
movs r0, 0
bl sub_80073E0
movs r0, 0xD
bl sub_803E46C
ldr r5, _08053634
movs r4, 0x6
_08053604:
ldr r1, [r5]
movs r0, 0
bl _call_via_r1
movs r0, 0xD
bl sub_803E46C
subs r4, 0x1
cmp r4, 0
bge _08053604
ldr r1, _08053638
ldr r0, [r1]
adds r0, 0x1
str r0, [r1]
movs r0, 0x1
_08053622:
add sp, 0x4
pop {r4,r5}
pop {r1}
bx r1
.align 2, 0
_0805362C: .4byte gDungeon
_08053630: .4byte 0x0001c070
_08053634: .4byte gUnknown_203B080
_08053638: .4byte gUnknown_202F1F8
thumb_func_end sub_8053540
thumb_func_start sub_805363C
sub_805363C:
push {r4-r7,lr}

View File

@ -707,6 +707,7 @@ extern SpriteOAM gUnknown_202F1F0;
extern u8 gFontPalette[];
// Used only for displaying Frosy Forest's text at floor 6
void sub_8052FB8(const u8 *str)
{
s32 r8 = 0, r9, j;
@ -851,6 +852,7 @@ extern bool8 sub_8008D8C(u32 strId);
extern u32 sub_8014140(s32 a0, const void *a1);
extern void sub_8083D30(void);
extern void sub_8083D08(void);
extern void sub_8007334(s32 a0);
extern s32 gUnknown_202F1F8;
extern u8 gUnknown_202F1FC;
@ -917,3 +919,175 @@ bool32 sub_80532B4(void)
sub_803EAF0(0, 0);
return TRUE;
}
void sub_80533A4(void)
{
s32 i;
s32 arrId = gDungeon->unk16;
s32 y = 16;
arrId -= 8;
if (arrId < 0)
arrId += UNK_1C070_ARR_COUNT;
sub_80073B8(0);
for (i = 0; i < 8; i++) {
struct UnkDungeonStruct1C070 *strPtr = &gDungeon->unk1C070[arrId];
if (strPtr->unk0) {
if (strPtr->unk1) {
sub_80078A4(0, 0, y, 0xE0, 7);
}
PrintStringOnWindow(8, y + 3, strPtr->unk3, 0, 0xD);
y += 14;
}
if (++arrId >= UNK_1C070_ARR_COUNT)
arrId = 0;
}
sub_80073E0(0);
sub_8007334(0);
}
extern void sub_80087EC(s32 a0, s32 a1, s32 a2, s32 a3, s32 a4);
extern void (*gUnknown_203B084)(s32 a0);
extern void (*gUnknown_203B080)(s32 a0);
extern void sub_8083CE0(u8 param_1);
bool8 sub_8053430(s32 a0)
{
s32 i;
struct UnkDungeonStruct1C070 *strPtr;
s32 y;
s32 arrId;
while (1)
{
arrId = gDungeon->unk16 + gUnknown_202F1F8;
y = 2;
arrId -= 9;
while (arrId < 0) {
arrId += UNK_1C070_ARR_COUNT;
}
while (arrId >= UNK_1C070_ARR_COUNT) {
arrId -= UNK_1C070_ARR_COUNT;
}
if (gDungeon->unk1C070[arrId].unk0 && gUnknown_202F1F8 > -12) {
gUnknown_202F1FC |= 1;
if (gRealInputs.repeated & DPAD_UP)
break;
if (a0 == 1)
break;
}
return FALSE;
}
sub_8083CE0(0);
sub_80073B8(0);
strPtr = &gDungeon->unk1C070[arrId];
if (strPtr->unk0) {
sub_80087EC(0, 0, 0, 0xD0, 0x10);
if (strPtr->unk1) {
sub_80078A4(0, 0, y, 0xE0, 7);
}
PrintStringOnWindow(8, y + 3, strPtr->unk3, 0, 0xD);
}
sub_80073E0(0);
sub_803E46C(0xD);
for (i = 0; i < 7; i++) {
gUnknown_203B084(0);
sub_803E46C(0xD);
}
gUnknown_202F1F8--;
return TRUE;
}
bool8 sub_8053540(s32 a0)
{
s32 i;
struct UnkDungeonStruct1C070 *strPtr;
s32 y;
s32 arrId;
while (1)
{
arrId = gDungeon->unk16 + gUnknown_202F1F8;
y = 128;
while (arrId < 0) {
arrId += UNK_1C070_ARR_COUNT;
}
while (arrId >= UNK_1C070_ARR_COUNT) {
arrId -= UNK_1C070_ARR_COUNT;
}
if (gUnknown_202F1F8 < 0) {
gUnknown_202F1FC |= 2;
if (gRealInputs.repeated & DPAD_DOWN)
break;
if (a0 == 2)
break;
}
return FALSE;
}
sub_8083CE0(0);
sub_80073B8(0);
strPtr = &gDungeon->unk1C070[arrId];
if (strPtr->unk0) {
sub_80087EC(0, 0, y, 0x68, 0x10);
if (strPtr->unk1) {
sub_80078A4(0, 0, y, 0xE0, 7);
}
PrintStringOnWindow(8, y + 3, strPtr->unk3, 0, 0xD);
}
sub_80073E0(0);
sub_803E46C(0xD);
for (i = 0; i < 7; i++) {
gUnknown_203B080(0);
sub_803E46C(0xD);
}
gUnknown_202F1F8++;
return TRUE;
}
extern s16 gUnknown_2027370[];
/*
void sub_805363C(u8 a0, s32 a1)
{
s16 *unkArr = gUnknown_2027370;
if (gUnknown_202EDCC & 8) {
u32 shape, size, xSprite;
gUnknown_202F1F0.attrib1 &= ~SPRITEOAM_MASK_AFFINEMODE1;
gUnknown_202F1F0.attrib1 &= ~SPRITEOAM_MASK_AFFINEMODE2;
gUnknown_202F1F0.attrib1 &= ~SPRITEOAM_MASK_OBJMODE;
gUnknown_202F1F0.attrib1 &= ~SPRITEOAM_MASK_MOSAIC;
gUnknown_202F1F0.attrib1 &= ~SPRITEOAM_MASK_BPP;
gUnknown_202F1F0.attrib1 &= ~SPRITEOAM_MASK_SHAPE;
shape = (a0 == 1) ? 2 : 0;
shape <<= SPRITEOAM_SHIFT_SHAPE;
gUnknown_202F1F0.attrib1 |= shape;
gUnknown_202F1F0.attrib2 &= ~SPRITEOAM_MASK_MATRIXNUM;
xSprite = (unkArr[0] * 8) + 92;
gUnknown_202F1F0.attrib2 &= ~SPRITEOAM_MASK_X;
gUnknown_202F1F0.attrib2 |= xSprite;
size = 2 << SPRITEOAM_SHIFT_SIZE;
gUnknown_202F1F0.attrib2 &= ~SPRITEOAM_MASK_SIZE;
gUnknown_202F1F0.attrib2 |= size;
gUnknown_202F1F0.attrib3 = 0xF3F0;
AddSprite(&gUnknown_202F1F0, 127, NULL, NULL);
}
}
*/