mirror of
https://github.com/zeldaret/tmc
synced 2026-05-24 07:11:07 -04:00
nonmatch sub_080B16AC
This commit is contained in:
@@ -5,195 +5,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_080B16AC
|
||||
sub_080B16AC: @ 0x080B16AC
|
||||
push {r4, r5, r6, r7, lr}
|
||||
sub sp, #0xb0
|
||||
adds r5, r1, #0
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r1, r0, #0x10
|
||||
lsls r2, r2, #0x18
|
||||
lsrs r7, r2, #0x18
|
||||
ldr r0, _080B16C8 @ =gUnk_02036A50
|
||||
ldr r0, [r0]
|
||||
ldrh r0, [r0, #4]
|
||||
cmp r1, r0
|
||||
blo _080B16D0
|
||||
ldr r0, _080B16CC @ =0x000080FF
|
||||
b _080B1804
|
||||
.align 2, 0
|
||||
_080B16C8: .4byte gUnk_02036A50
|
||||
_080B16CC: .4byte 0x000080FF
|
||||
_080B16D0:
|
||||
ldr r0, _080B1710 @ =gUnk_02036A50
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, #8]
|
||||
lsls r0, r0, #1
|
||||
mov r2, sp
|
||||
adds r3, r0, r2
|
||||
adds r3, #0x84
|
||||
movs r0, #0
|
||||
strh r0, [r3]
|
||||
subs r3, #2
|
||||
movs r4, #0
|
||||
_080B16E6:
|
||||
ldrh r2, [r5]
|
||||
adds r5, #2
|
||||
movs r0, #0
|
||||
_080B16EC:
|
||||
strh r2, [r3]
|
||||
subs r3, #2
|
||||
lsrs r2, r2, #1
|
||||
adds r0, #1
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
cmp r0, #0xf
|
||||
bls _080B16EC
|
||||
adds r0, r4, #1
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r4, r0, #0x18
|
||||
cmp r4, #3
|
||||
bls _080B16E6
|
||||
movs r4, #0
|
||||
ldr r0, _080B1710 @ =gUnk_02036A50
|
||||
adds r2, r0, #0
|
||||
ldr r0, [r0]
|
||||
b _080B1722
|
||||
.align 2, 0
|
||||
_080B1710: .4byte gUnk_02036A50
|
||||
_080B1714:
|
||||
strh r1, [r3]
|
||||
subs r3, #2
|
||||
lsrs r1, r1, #1
|
||||
adds r0, r4, #1
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r4, r0, #0x18
|
||||
ldr r0, [r2]
|
||||
_080B1722:
|
||||
ldrb r0, [r0, #8]
|
||||
cmp r4, r0
|
||||
blo _080B1714
|
||||
movs r0, #0
|
||||
strh r0, [r3]
|
||||
subs r3, #2
|
||||
movs r6, #1
|
||||
strh r6, [r3]
|
||||
movs r4, #0xd0
|
||||
lsls r4, r4, #0x14
|
||||
ldr r0, _080B1794 @ =gUnk_02036A50
|
||||
ldr r0, [r0]
|
||||
ldrb r2, [r0, #8]
|
||||
adds r2, #0x43
|
||||
mov r0, sp
|
||||
adds r1, r4, #0
|
||||
bl sub_080B1568
|
||||
movs r5, #0
|
||||
add r2, sp, #0xa4
|
||||
strh r5, [r2]
|
||||
mov r1, sp
|
||||
adds r1, #0xa6
|
||||
ldr r0, _080B1798 @ =0x04000006
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r1]
|
||||
add r0, sp, #0xac
|
||||
str r5, [r0]
|
||||
ldrh r0, [r2]
|
||||
cmp r0, #0
|
||||
bne _080B1768
|
||||
ldrh r0, [r4]
|
||||
ands r0, r6
|
||||
cmp r0, #0
|
||||
bne _080B17F8
|
||||
_080B1768:
|
||||
add r3, sp, #0xa8
|
||||
ldr r0, _080B1798 @ =0x04000006
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r3]
|
||||
mov r4, sp
|
||||
adds r4, #0xa6
|
||||
ldrh r1, [r3]
|
||||
ldrh r0, [r4]
|
||||
cmp r1, r0
|
||||
beq _080B17E2
|
||||
ldrh r1, [r3]
|
||||
ldrh r0, [r4]
|
||||
cmp r1, r0
|
||||
bls _080B179C
|
||||
add r2, sp, #0xac
|
||||
ldrh r1, [r3]
|
||||
ldrh r0, [r4]
|
||||
subs r1, r1, r0
|
||||
ldr r0, [r2]
|
||||
adds r1, r1, r0
|
||||
str r1, [r2]
|
||||
b _080B17B2
|
||||
.align 2, 0
|
||||
_080B1794: .4byte gUnk_02036A50
|
||||
_080B1798: .4byte 0x04000006
|
||||
_080B179C:
|
||||
add r2, sp, #0xac
|
||||
add r0, sp, #0xa8
|
||||
ldrh r0, [r0]
|
||||
adds r0, #0xe4
|
||||
mov r1, sp
|
||||
adds r1, #0xa6
|
||||
ldrh r1, [r1]
|
||||
subs r0, r0, r1
|
||||
ldr r1, [r2]
|
||||
adds r0, r0, r1
|
||||
str r0, [r2]
|
||||
_080B17B2:
|
||||
add r0, sp, #0xac
|
||||
ldr r0, [r0]
|
||||
cmp r0, #0x88
|
||||
bls _080B17D8
|
||||
add r0, sp, #0xa4
|
||||
ldrh r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _080B1802
|
||||
movs r0, #0xd0
|
||||
lsls r0, r0, #0x14
|
||||
ldrh r0, [r0]
|
||||
movs r1, #1
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _080B1802
|
||||
ldr r5, _080B17D4 @ =0x0000C001
|
||||
b _080B1802
|
||||
.align 2, 0
|
||||
_080B17D4: .4byte 0x0000C001
|
||||
_080B17D8:
|
||||
mov r0, sp
|
||||
adds r0, #0xa6
|
||||
add r1, sp, #0xa8
|
||||
ldrh r1, [r1]
|
||||
strh r1, [r0]
|
||||
_080B17E2:
|
||||
add r2, sp, #0xa4
|
||||
ldrh r0, [r2]
|
||||
cmp r0, #0
|
||||
bne _080B1768
|
||||
movs r0, #0xd0
|
||||
lsls r0, r0, #0x14
|
||||
movs r1, #1
|
||||
ldrh r0, [r0]
|
||||
ands r1, r0
|
||||
cmp r1, #0
|
||||
beq _080B1768
|
||||
_080B17F8:
|
||||
ldrh r0, [r2]
|
||||
adds r0, #1
|
||||
strh r0, [r2]
|
||||
cmp r7, #0
|
||||
bne _080B1768
|
||||
_080B1802:
|
||||
adds r0, r5, #0
|
||||
_080B1804:
|
||||
add sp, #0xb0
|
||||
pop {r4, r5, r6, r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
|
||||
thumb_func_start sub_080B180C
|
||||
sub_080B180C: @ 0x080B180C
|
||||
push {r4, r5, lr}
|
||||
|
||||
@@ -0,0 +1,192 @@
|
||||
|
||||
.syntax unified
|
||||
.text
|
||||
|
||||
push {r4, r5, r6, r7, lr}
|
||||
sub sp, #0xb0
|
||||
adds r5, r1, #0
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r1, r0, #0x10
|
||||
lsls r2, r2, #0x18
|
||||
lsrs r7, r2, #0x18
|
||||
ldr r0, _080B16C8 @ =gUnk_02036A50
|
||||
ldr r0, [r0]
|
||||
ldrh r0, [r0, #4]
|
||||
cmp r1, r0
|
||||
blo _080B16D0
|
||||
ldr r0, _080B16CC @ =0x000080FF
|
||||
b _080B1804
|
||||
.align 2, 0
|
||||
_080B16C8: .4byte gUnk_02036A50
|
||||
_080B16CC: .4byte 0x000080FF
|
||||
_080B16D0:
|
||||
ldr r0, _080B1710 @ =gUnk_02036A50
|
||||
ldr r0, [r0]
|
||||
ldrb r0, [r0, #8]
|
||||
lsls r0, r0, #1
|
||||
mov r2, sp
|
||||
adds r3, r0, r2
|
||||
adds r3, #0x84
|
||||
movs r0, #0
|
||||
strh r0, [r3]
|
||||
subs r3, #2
|
||||
movs r4, #0
|
||||
_080B16E6:
|
||||
ldrh r2, [r5]
|
||||
adds r5, #2
|
||||
movs r0, #0
|
||||
_080B16EC:
|
||||
strh r2, [r3]
|
||||
subs r3, #2
|
||||
lsrs r2, r2, #1
|
||||
adds r0, #1
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
cmp r0, #0xf
|
||||
bls _080B16EC
|
||||
adds r0, r4, #1
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r4, r0, #0x18
|
||||
cmp r4, #3
|
||||
bls _080B16E6
|
||||
movs r4, #0
|
||||
ldr r0, _080B1710 @ =gUnk_02036A50
|
||||
adds r2, r0, #0
|
||||
ldr r0, [r0]
|
||||
b _080B1722
|
||||
.align 2, 0
|
||||
_080B1710: .4byte gUnk_02036A50
|
||||
_080B1714:
|
||||
strh r1, [r3]
|
||||
subs r3, #2
|
||||
lsrs r1, r1, #1
|
||||
adds r0, r4, #1
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r4, r0, #0x18
|
||||
ldr r0, [r2]
|
||||
_080B1722:
|
||||
ldrb r0, [r0, #8]
|
||||
cmp r4, r0
|
||||
blo _080B1714
|
||||
movs r0, #0
|
||||
strh r0, [r3]
|
||||
subs r3, #2
|
||||
movs r6, #1
|
||||
strh r6, [r3]
|
||||
movs r4, #0xd0
|
||||
lsls r4, r4, #0x14
|
||||
ldr r0, _080B1794 @ =gUnk_02036A50
|
||||
ldr r0, [r0]
|
||||
ldrb r2, [r0, #8]
|
||||
adds r2, #0x43
|
||||
mov r0, sp
|
||||
adds r1, r4, #0
|
||||
bl sub_080B1568
|
||||
movs r5, #0
|
||||
add r2, sp, #0xa4
|
||||
strh r5, [r2]
|
||||
mov r1, sp
|
||||
adds r1, #0xa6
|
||||
ldr r0, _080B1798 @ =0x04000006
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r1]
|
||||
add r0, sp, #0xac
|
||||
str r5, [r0]
|
||||
ldrh r0, [r2]
|
||||
cmp r0, #0
|
||||
bne _080B1768
|
||||
ldrh r0, [r4]
|
||||
ands r0, r6
|
||||
cmp r0, #0
|
||||
bne _080B17F8
|
||||
_080B1768:
|
||||
add r3, sp, #0xa8
|
||||
ldr r0, _080B1798 @ =0x04000006
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r3]
|
||||
mov r4, sp
|
||||
adds r4, #0xa6
|
||||
ldrh r1, [r3]
|
||||
ldrh r0, [r4]
|
||||
cmp r1, r0
|
||||
beq _080B17E2
|
||||
ldrh r1, [r3]
|
||||
ldrh r0, [r4]
|
||||
cmp r1, r0
|
||||
bls _080B179C
|
||||
add r2, sp, #0xac
|
||||
ldrh r1, [r3]
|
||||
ldrh r0, [r4]
|
||||
subs r1, r1, r0
|
||||
ldr r0, [r2]
|
||||
adds r1, r1, r0
|
||||
str r1, [r2]
|
||||
b _080B17B2
|
||||
.align 2, 0
|
||||
_080B1794: .4byte gUnk_02036A50
|
||||
_080B1798: .4byte 0x04000006
|
||||
_080B179C:
|
||||
add r2, sp, #0xac
|
||||
add r0, sp, #0xa8
|
||||
ldrh r0, [r0]
|
||||
adds r0, #0xe4
|
||||
mov r1, sp
|
||||
adds r1, #0xa6
|
||||
ldrh r1, [r1]
|
||||
subs r0, r0, r1
|
||||
ldr r1, [r2]
|
||||
adds r0, r0, r1
|
||||
str r0, [r2]
|
||||
_080B17B2:
|
||||
add r0, sp, #0xac
|
||||
ldr r0, [r0]
|
||||
cmp r0, #0x88
|
||||
bls _080B17D8
|
||||
add r0, sp, #0xa4
|
||||
ldrh r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _080B1802
|
||||
movs r0, #0xd0
|
||||
lsls r0, r0, #0x14
|
||||
ldrh r0, [r0]
|
||||
movs r1, #1
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _080B1802
|
||||
ldr r5, _080B17D4 @ =0x0000C001
|
||||
b _080B1802
|
||||
.align 2, 0
|
||||
_080B17D4: .4byte 0x0000C001
|
||||
_080B17D8:
|
||||
mov r0, sp
|
||||
adds r0, #0xa6
|
||||
add r1, sp, #0xa8
|
||||
ldrh r1, [r1]
|
||||
strh r1, [r0]
|
||||
_080B17E2:
|
||||
add r2, sp, #0xa4
|
||||
ldrh r0, [r2]
|
||||
cmp r0, #0
|
||||
bne _080B1768
|
||||
movs r0, #0xd0
|
||||
lsls r0, r0, #0x14
|
||||
movs r1, #1
|
||||
ldrh r0, [r0]
|
||||
ands r1, r0
|
||||
cmp r1, #0
|
||||
beq _080B1768
|
||||
_080B17F8:
|
||||
ldrh r0, [r2]
|
||||
adds r0, #1
|
||||
strh r0, [r2]
|
||||
cmp r7, #0
|
||||
bne _080B1768
|
||||
_080B1802:
|
||||
adds r0, r5, #0
|
||||
_080B1804:
|
||||
add sp, #0xb0
|
||||
pop {r4, r5, r6, r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
|
||||
.syntax divided
|
||||
+92
-2
@@ -13,7 +13,7 @@ extern struct_08DE7D40* gUnk_02036A50;
|
||||
extern struct_08DE7D40 gUnk_08DE7D40;
|
||||
extern struct_08DE7D40 gUnk_08DE7D4C;
|
||||
|
||||
u16 sub_080B16AC(u16, u32, u32);
|
||||
u16 sub_080B16AC(u16, u16*, u8);
|
||||
|
||||
u32 sub_080B1520(u16 unk_1) {
|
||||
u32 ret;
|
||||
@@ -89,6 +89,96 @@ u32 sub_080B15E8(u16 unk_1, u16* unk_2) {
|
||||
}
|
||||
}
|
||||
|
||||
u16 sub_080B1698(u16 unk_1, u32 unk_2){
|
||||
u16 sub_080B1698(u16 unk_1, u16* unk_2) {
|
||||
return sub_080B16AC(unk_1, unk_2, 1);
|
||||
}
|
||||
|
||||
// this is the furthest I could get
|
||||
NONMATCH("asm/non_matching/code_080B1520/sub_080B16AC.inc", u16 sub_080B16AC(u16 unk_1, u16* unk_2, u8 unk_3)) {
|
||||
u16 stack[0x52];
|
||||
vu16 stack_a4;
|
||||
vu16 stack_a6;
|
||||
vu16 stack_a8;
|
||||
vu32 stack_ac;
|
||||
|
||||
u32 r0, r1, r2;
|
||||
|
||||
u8 i, j;
|
||||
u16* ptr;
|
||||
|
||||
r1 = unk_1;
|
||||
if (unk_1 < gUnk_02036A50->unk_04)
|
||||
return 0x80ff;
|
||||
|
||||
ptr = stack + gUnk_02036A50->unk_08 + 0x42;
|
||||
*ptr = 0;
|
||||
ptr--;
|
||||
for (i = 0; i <= 3; i++) {
|
||||
r2 = *unk_2;
|
||||
unk_2++;
|
||||
for (j = 0; j <= 0xf; j++) {
|
||||
*ptr = r2;
|
||||
ptr--;
|
||||
r2 = r2 >> 1;
|
||||
}
|
||||
}
|
||||
for (i = 0; i < gUnk_02036A50->unk_08; i++) {
|
||||
*ptr = r1;
|
||||
ptr--;
|
||||
r1 = r1 >> 1;
|
||||
}
|
||||
*ptr = 0;
|
||||
ptr--;
|
||||
*ptr = 1;
|
||||
sub_080B1568(stack, (u16*)0xd000000, gUnk_02036A50->unk_08 + 0x43);
|
||||
stack_a4 = 0;
|
||||
stack_a6 = REG_VCOUNT;
|
||||
stack_ac = 0;
|
||||
if (stack_a4 == 0) {
|
||||
r0 = *(u16*)0xd000000;
|
||||
r0 &= 1;
|
||||
if (r0 != 0)
|
||||
goto bad;
|
||||
}
|
||||
do {
|
||||
do {
|
||||
do {
|
||||
stack_a8 = REG_VCOUNT;
|
||||
if (stack_a8 != stack_a6) {
|
||||
if (stack_a8 > stack_a6) {
|
||||
r1 = stack_a8;
|
||||
r0 = stack_a6;
|
||||
r1 = r1 - r0;
|
||||
r0 = stack_ac;
|
||||
r1 = r1 + r0;
|
||||
stack_ac = r1;
|
||||
} else {
|
||||
r0 = stack_a8 + 0xe4;
|
||||
r1 = stack_a6;
|
||||
r0 = r0 - r1;
|
||||
r1 = stack_ac;
|
||||
r0 = r0 + r1;
|
||||
stack_ac = r0;
|
||||
}
|
||||
if (stack_ac > 0x88) {
|
||||
if (stack_a4 != 0)
|
||||
return 0;
|
||||
r0 = *(u16*)0xd000000;
|
||||
r0 &= 1;
|
||||
if (r0 != 0)
|
||||
return 0;
|
||||
return 0xc001;
|
||||
}
|
||||
stack_a6 = stack_a8;
|
||||
}
|
||||
} while (stack_a4 != 0);
|
||||
r1 = 1;
|
||||
r0 = *(u16*)0xd000000;
|
||||
r1 &= r0;
|
||||
} while (r1 != 0);
|
||||
bad:
|
||||
stack_a4++;
|
||||
} while (unk_3 != 0);
|
||||
return 0;
|
||||
}
|
||||
END_NONMATCH
|
||||
Reference in New Issue
Block a user