Match sub_0801AC98

This commit is contained in:
Tal Hayon 2022-09-06 21:42:28 +03:00
parent c0904a0b7d
commit 74fc26d12c
2 changed files with 11 additions and 124 deletions

View File

@ -1,111 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #8
ldr r0, _0801ACD0 @ =gRoomControls
ldrh r1, [r0, #0x1e]
lsrs r1, r1, #4
mov r8, r1
ldrh r0, [r0, #0x20]
lsrs r0, r0, #4
str r0, [sp]
movs r6, #0
movs r1, #0
cmp r1, r0
bhs _0801AD5C
_0801ACBA:
movs r0, #0
adds r1, #1
str r1, [sp, #4]
cmp r0, r8
bhs _0801AD4C
_0801ACC4:
ldr r5, _0801ACD4 @ =gUnk_080B44C0
adds r0, #1
mov sl, r0
adds r0, r6, #1
mov sb, r0
b _0801ACDA
.align 2, 0
_0801ACD0: .4byte gRoomControls
_0801ACD4: .4byte gUnk_080B44C0
_0801ACD8:
adds r5, #0xc
_0801ACDA:
ldrh r0, [r5]
ldr r1, _0801AD0C @ =0x0000FFFF
cmp r0, r1
beq _0801AD06
adds r4, r0, #0
adds r0, r6, #0
movs r1, #1
bl GetTileType
cmp r4, r0
bne _0801ACD8
ldrh r0, [r5, #0xa]
lsls r0, r0, #2
ldr r1, _0801AD10 @ =gUnk_080B44B8
adds r0, r0, r1
ldr r0, [r0]
cmp r0, #0
beq _0801ACD8
adds r0, r5, #0
adds r1, r6, #0
bl sub_0801AD6C
_0801AD06:
ldr r5, _0801AD14 @ =gUnk_080B44C2
ldr r7, _0801AD0C @ =0x0000FFFF
b _0801AD1A
.align 2, 0
_0801AD0C: .4byte 0x0000FFFF
_0801AD10: .4byte gUnk_080B44B8
_0801AD14: .4byte gUnk_080B44C2
_0801AD18:
adds r5, #0xc
_0801AD1A:
ldrh r0, [r5]
cmp r0, r7
beq _0801AD44
adds r4, r0, #0
adds r0, r6, #0
movs r1, #2
bl GetTileType
cmp r4, r0
bne _0801AD18
ldrh r0, [r5, #0xa]
lsls r0, r0, #2
ldr r1, _0801AD68 @ =gUnk_080B44B8
adds r0, r0, r1
ldr r0, [r0]
cmp r0, #0
beq _0801AD18
adds r0, r5, #0
adds r1, r6, #0
bl sub_0801AD6C
_0801AD44:
mov r0, sl
mov r6, sb
cmp r0, r8
blo _0801ACC4
_0801AD4C:
adds r0, r6, #0
adds r0, #0x40
mov r1, r8
subs r6, r0, r1
ldr r1, [sp, #4]
ldr r0, [sp]
cmp r1, r0
blo _0801ACBA
_0801AD5C:
add sp, #8
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0801AD68: .4byte gUnk_080B44B8
.syntax divided

View File

@ -487,14 +487,13 @@ extern const Data gUnk_080B44C0[];
extern const Data gUnk_080B44C2[];
extern const u32 gUnk_080B44B8[];
NONMATCH("asm/non_matching/beanstalkSubtask/sub_0801AC98.inc", void sub_0801AC98()) {
void sub_0801AC98(void) {
u32 position;
u32 width;
u32 height;
u32 indexX;
u32 indexY;
const Data* ptr1;
const Data* ptr2;
u32 position;
const Data* ptr;
width = gRoomControls.width >> 4;
height = gRoomControls.height >> 4;
@ -502,19 +501,19 @@ NONMATCH("asm/non_matching/beanstalkSubtask/sub_0801AC98.inc", void sub_0801AC98
for (indexY = 0; indexY < height; indexY++) {
for (indexX = 0; indexX < width; indexX++, position++) {
for (ptr1 = gUnk_080B44C0; ptr1->tileType != 0xffff; ptr1++) {
if (ptr1->tileType == GetTileType(position, 1)) {
if (gUnk_080B44B8[ptr1->unk_a] != 0) {
sub_0801AD6C(ptr1, position);
for (ptr = gUnk_080B44C0; ptr->tileType != 0xffff; ptr++) {
if (ptr->tileType == GetTileType(position, 1)) {
if (gUnk_080B44B8[ptr->unk_a] != 0) {
sub_0801AD6C(ptr, position);
break;
}
}
}
for (ptr2 = gUnk_080B44C2; ptr2->tileType != 0xffff; ptr2++) {
if (ptr2->tileType == GetTileType(position, 2)) {
if (gUnk_080B44B8[ptr2->unk_a] != 0) {
sub_0801AD6C(ptr2, position);
for (ptr = gUnk_080B44C2; ptr->tileType != 0xffff; ptr++) {
if (ptr->tileType == GetTileType(position, 2)) {
if (gUnk_080B44B8[ptr->unk_a] != 0) {
sub_0801AD6C(ptr, position);
break;
}
}
@ -523,7 +522,6 @@ NONMATCH("asm/non_matching/beanstalkSubtask/sub_0801AC98.inc", void sub_0801AC98
position = position + (0x40 - width);
}
}
END_NONMATCH
void sub_0801AD6C(const Data* param_1, u32 tilePosition) {
Entity* entity;