From 82216dd31f67ee544bbcfe360e966ff91fc6d9e0 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 14 May 2019 15:22:37 -0400 Subject: unk_815C980 --- asm/decompress.s | 6 +- asm/ereader_helpers.s | 920 ++++++++++++++++++++++++++++++++++ asm/unk_815C27C.s | 920 ---------------------------------- asm/unk_815C980.s | 1314 ------------------------------------------------- data/data_8471F00.s | 7 +- include/decompress.h | 1 + include/unk_815C980.h | 24 + ld_script.txt | 6 +- src/unk_815C980.c | 436 ++++++++++++++++ sym_bss.txt | 11 +- sym_ewram.txt | 6 +- 11 files changed, 1399 insertions(+), 2252 deletions(-) create mode 100644 asm/ereader_helpers.s delete mode 100644 asm/unk_815C27C.s delete mode 100644 asm/unk_815C980.s create mode 100644 include/unk_815C980.h create mode 100644 src/unk_815C980.c diff --git a/asm/decompress.s b/asm/decompress.s index 175304245..cc38e0df5 100644 --- a/asm/decompress.s +++ b/asm/decompress.s @@ -722,8 +722,8 @@ _0800F0BA: bx r1 thumb_func_end sub_800F078 - thumb_func_start sub_800F0C4 -sub_800F0C4: @ 800F0C4 + thumb_func_start GetDecompressedDataSize +GetDecompressedDataSize: @ 800F0C4 sub sp, 0x4 mov r3, sp ldrb r2, [r0, 0x1] @@ -738,7 +738,7 @@ sub_800F0C4: @ 800F0C4 ldr r0, [sp] add sp, 0x4 bx lr - thumb_func_end sub_800F0C4 + thumb_func_end GetDecompressedDataSize thumb_func_start DecompressPicFromTable_DontHandleDeoxys DecompressPicFromTable_DontHandleDeoxys: @ 800F0E0 diff --git a/asm/ereader_helpers.s b/asm/ereader_helpers.s new file mode 100644 index 000000000..067ab8659 --- /dev/null +++ b/asm/ereader_helpers.s @@ -0,0 +1,920 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_815C27C +sub_815C27C: @ 815C27C + push {r4-r7,lr} + sub sp, 0x4 + adds r6, r0, 0 + adds r5, r1, 0 + bl sub_815C8C8 + movs r7, 0x2 + ldr r4, _0815C2BC @ =gUnknown_3003F84 +_0815C28C: + bl sub_815C898 + ldr r0, _0815C2C0 @ =gUnknown_3002062 + ldrh r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0815C29E + strb r7, [r4] +_0815C29E: + movs r0, 0x1 + adds r1, r6, 0 + adds r2, r5, 0 + movs r3, 0 + bl sub_815C498 + adds r1, r0, 0 + ldr r0, _0815C2C4 @ =gUnknown_3002064 + strh r1, [r0] + movs r0, 0x13 + ands r0, r1 + cmp r0, 0x10 + bne _0815C2C8 + movs r4, 0 + b _0815C2EA + .align 2, 0 +_0815C2BC: .4byte gUnknown_3003F84 +_0815C2C0: .4byte gUnknown_3002062 +_0815C2C4: .4byte gUnknown_3002064 +_0815C2C8: + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0815C2D4 + movs r4, 0x1 + b _0815C2EA +_0815C2D4: + movs r0, 0x4 + ands r0, r1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _0815C2E8 + strb r0, [r4] + bl VBlankIntrWait + b _0815C28C +_0815C2E8: + movs r4, 0x2 +_0815C2EA: + movs r0, 0 + str r0, [sp] + ldr r1, _0815C308 @ =gUnknown_3002048 + ldr r2, _0815C30C @ =0x05000006 + mov r0, sp + bl CpuSet + bl sub_815C91C + adds r0, r4, 0 + add sp, 0x4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0815C308: .4byte gUnknown_3002048 +_0815C30C: .4byte 0x05000006 + thumb_func_end sub_815C27C + + thumb_func_start sub_815C310 +sub_815C310: @ 815C310 + push {r4-r6,lr} + sub sp, 0x4 + adds r5, r0, 0 + bl sub_815C8C8 + movs r6, 0x2 + ldr r4, _0815C350 @ =gUnknown_3003F84 +_0815C31E: + bl sub_815C898 + ldr r0, _0815C354 @ =gUnknown_3002062 + ldrh r1, [r0] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0815C330 + strb r6, [r4] +_0815C330: + movs r0, 0 + movs r1, 0 + movs r2, 0 + adds r3, r5, 0 + bl sub_815C498 + adds r1, r0, 0 + ldr r0, _0815C358 @ =gUnknown_3002064 + strh r1, [r0] + movs r0, 0x13 + ands r0, r1 + cmp r0, 0x10 + bne _0815C35C + movs r4, 0 + b _0815C37E + .align 2, 0 +_0815C350: .4byte gUnknown_3003F84 +_0815C354: .4byte gUnknown_3002062 +_0815C358: .4byte gUnknown_3002064 +_0815C35C: + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _0815C368 + movs r4, 0x1 + b _0815C37E +_0815C368: + movs r0, 0x4 + ands r0, r1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0 + bne _0815C37C + strb r0, [r4] + bl VBlankIntrWait + b _0815C31E +_0815C37C: + movs r4, 0x2 +_0815C37E: + movs r0, 0 + str r0, [sp] + ldr r1, _0815C39C @ =gUnknown_3002048 + ldr r2, _0815C3A0 @ =0x05000006 + mov r0, sp + bl CpuSet + bl sub_815C91C + adds r0, r4, 0 + add sp, 0x4 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0815C39C: .4byte gUnknown_3002048 +_0815C3A0: .4byte 0x05000006 + thumb_func_end sub_815C310 + + thumb_func_start sub_815C3A4 +sub_815C3A4: @ 815C3A4 + push {r4,lr} + ldr r4, _0815C3D0 @ =0x04000208 + movs r3, 0 + strh r3, [r4] + ldr r2, _0815C3D4 @ =0x04000200 + ldrh r1, [r2] + ldr r0, _0815C3D8 @ =0x0000ff3f + ands r0, r1 + strh r0, [r2] + movs r0, 0x1 + strh r0, [r4] + ldr r0, _0815C3DC @ =0x04000128 + strh r3, [r0] + subs r0, 0x1A + strh r3, [r0] + ldr r1, _0815C3E0 @ =0x04000202 + movs r0, 0xC0 + strh r0, [r1] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815C3D0: .4byte 0x04000208 +_0815C3D4: .4byte 0x04000200 +_0815C3D8: .4byte 0x0000ff3f +_0815C3DC: .4byte 0x04000128 +_0815C3E0: .4byte 0x04000202 + thumb_func_end sub_815C3A4 + + thumb_func_start sub_815C3E4 +sub_815C3E4: @ 815C3E4 + push {r4-r7,lr} + sub sp, 0x4 + ldr r5, _0815C43C @ =0x04000208 + movs r4, 0 + strh r4, [r5] + ldr r3, _0815C440 @ =0x04000200 + ldrh r1, [r3] + ldr r0, _0815C444 @ =0x0000ff3f + ands r0, r1 + strh r0, [r3] + movs r6, 0x1 + strh r6, [r5] + ldr r0, _0815C448 @ =0x04000134 + strh r4, [r0] + ldr r2, _0815C44C @ =0x04000128 + movs r1, 0x80 + lsls r1, 6 + adds r0, r1, 0 + strh r0, [r2] + ldrh r0, [r2] + ldr r7, _0815C450 @ =0x00004003 + adds r1, r7, 0 + orrs r0, r1 + strh r0, [r2] + strh r4, [r5] + ldrh r0, [r3] + movs r1, 0x80 + orrs r0, r1 + strh r0, [r3] + strh r6, [r5] + ldr r1, _0815C454 @ =gUnknown_3002048 + ldrb r0, [r1, 0x1] + cmp r0, 0 + bne _0815C432 + str r0, [sp] + ldr r2, _0815C458 @ =0x05000006 + mov r0, sp + bl CpuSet +_0815C432: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0815C43C: .4byte 0x04000208 +_0815C440: .4byte 0x04000200 +_0815C444: .4byte 0x0000ff3f +_0815C448: .4byte 0x04000134 +_0815C44C: .4byte 0x04000128 +_0815C450: .4byte 0x00004003 +_0815C454: .4byte gUnknown_3002048 +_0815C458: .4byte 0x05000006 + thumb_func_end sub_815C3E4 + + thumb_func_start sub_815C45C +sub_815C45C: @ 815C45C + ldr r0, _0815C484 @ =0x04000134 + movs r3, 0 + strh r3, [r0] + ldr r2, _0815C488 @ =0x04000128 + movs r1, 0xA0 + lsls r1, 7 + adds r0, r1, 0 + strh r0, [r2] + ldrh r0, [r2] + movs r1, 0x8 + orrs r0, r1 + strh r0, [r2] + ldr r0, _0815C48C @ =gUnknown_3003F84 + strb r3, [r0] + ldr r0, _0815C490 @ =gUnknown_3002066 + strh r3, [r0] + ldr r1, _0815C494 @ =gUnknown_3002068 + movs r0, 0 + str r0, [r1] + bx lr + .align 2, 0 +_0815C484: .4byte 0x04000134 +_0815C488: .4byte 0x04000128 +_0815C48C: .4byte gUnknown_3003F84 +_0815C490: .4byte gUnknown_3002066 +_0815C494: .4byte gUnknown_3002068 + thumb_func_end sub_815C45C + + thumb_func_start sub_815C498 +sub_815C498: @ 815C498 + push {r4-r6,lr} + adds r4, r1, 0 + adds r5, r2, 0 + adds r6, r3, 0 + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _0815C4B8 @ =gUnknown_3002048 + ldrb r0, [r0, 0x1] + cmp r0, 0x6 + bls _0815C4AE + b _0815C5F4 +_0815C4AE: + lsls r0, 2 + ldr r1, _0815C4BC @ =_0815C4C0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0815C4B8: .4byte gUnknown_3002048 +_0815C4BC: .4byte _0815C4C0 + .align 2, 0 +_0815C4C0: + .4byte _0815C4DC + .4byte _0815C4F0 + .4byte _0815C510 + .4byte _0815C524 + .4byte _0815C59C + .4byte _0815C5AC + .4byte _0815C5E4 +_0815C4DC: + bl sub_815C3E4 + ldr r1, _0815C4EC @ =gUnknown_3002048 + movs r0, 0x1 + strb r0, [r1, 0x2] + strb r0, [r1, 0x1] + b _0815C5F4 + .align 2, 0 +_0815C4EC: .4byte gUnknown_3002048 +_0815C4F0: + adds r0, r2, 0 + bl sub_815C610 + lsls r0, 16 + cmp r0, 0 + beq _0815C500 + bl sub_815C864 +_0815C500: + ldr r0, _0815C50C @ =gUnknown_3003F84 + ldrb r0, [r0] + cmp r0, 0x2 + beq _0815C50A + b _0815C5F4 +_0815C50A: + b _0815C52C + .align 2, 0 +_0815C50C: .4byte gUnknown_3003F84 +_0815C510: + bl sub_815C45C + adds r0, r4, 0 + adds r1, r5, 0 + adds r2, r6, 0 + bl sub_815C644 + ldr r1, _0815C538 @ =gUnknown_3002048 + movs r0, 0x3 + strb r0, [r1, 0x1] +_0815C524: + ldr r0, _0815C53C @ =gUnknown_3003F84 + ldrb r0, [r0] + cmp r0, 0x2 + bne _0815C540 +_0815C52C: + ldr r1, _0815C538 @ =gUnknown_3002048 + strb r0, [r1, 0x4] + movs r0, 0x6 + strb r0, [r1, 0x1] + b _0815C5F4 + .align 2, 0 +_0815C538: .4byte gUnknown_3002048 +_0815C53C: .4byte gUnknown_3003F84 +_0815C540: + ldr r2, _0815C580 @ =gUnknown_3002066 + ldrh r0, [r2] + adds r0, 0x1 + strh r0, [r2] + ldr r1, _0815C584 @ =gUnknown_3002068 + ldr r0, [r1] + adds r3, r0, 0x1 + str r3, [r1] + ldr r1, _0815C588 @ =gUnknown_3002048 + ldrb r0, [r1] + cmp r0, 0 + bne _0815C564 + cmp r3, 0x3C + bls _0815C564 + movs r0, 0x1 + strb r0, [r1, 0x4] + movs r0, 0x6 + strb r0, [r1, 0x1] +_0815C564: + ldr r4, _0815C588 @ =gUnknown_3002048 + ldrb r0, [r4, 0x2] + cmp r0, 0x2 + beq _0815C5F4 + ldrb r0, [r4] + cmp r0, 0 + beq _0815C58C + ldrh r0, [r2] + cmp r0, 0x2 + bls _0815C58C + bl sub_815C864 + movs r0, 0x2 + b _0815C5F2 + .align 2, 0 +_0815C580: .4byte gUnknown_3002066 +_0815C584: .4byte gUnknown_3002068 +_0815C588: .4byte gUnknown_3002048 +_0815C58C: + bl sub_815C864 + ldr r1, _0815C598 @ =gUnknown_3002048 + movs r0, 0x2 + strb r0, [r1, 0x2] + b _0815C5F4 + .align 2, 0 +_0815C598: .4byte gUnknown_3002048 +_0815C59C: + bl sub_815C3E4 + ldr r1, _0815C5A8 @ =gUnknown_3002048 + movs r0, 0x5 + strb r0, [r1, 0x1] + b _0815C5F4 + .align 2, 0 +_0815C5A8: .4byte gUnknown_3002048 +_0815C5AC: + ldr r0, _0815C5DC @ =gUnknown_3002048 + ldrb r0, [r0] + cmp r0, 0x1 + bne _0815C5C0 + ldr r0, _0815C5E0 @ =gUnknown_3002066 + ldrh r0, [r0] + cmp r0, 0x2 + bls _0815C5C0 + bl sub_815C864 +_0815C5C0: + ldr r1, _0815C5E0 @ =gUnknown_3002066 + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x3C + bls _0815C5F4 + ldr r0, _0815C5DC @ =gUnknown_3002048 + movs r1, 0x1 + strb r1, [r0, 0x4] + movs r1, 0x6 + strb r1, [r0, 0x1] + b _0815C5F4 + .align 2, 0 +_0815C5DC: .4byte gUnknown_3002048 +_0815C5E0: .4byte gUnknown_3002066 +_0815C5E4: + ldr r4, _0815C60C @ =gUnknown_3002048 + ldrb r0, [r4, 0x2] + cmp r0, 0 + beq _0815C5F4 + bl sub_815C3A4 + movs r0, 0 +_0815C5F2: + strb r0, [r4, 0x2] +_0815C5F4: + ldr r2, _0815C60C @ =gUnknown_3002048 + ldrb r0, [r2, 0x2] + ldrb r1, [r2, 0x4] + lsls r1, 2 + orrs r0, r1 + ldrb r1, [r2, 0x3] + lsls r1, 4 + orrs r0, r1 + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0815C60C: .4byte gUnknown_3002048 + thumb_func_end sub_815C498 + + thumb_func_start sub_815C610 +sub_815C610: @ 815C610 + push {lr} + lsls r0, 24 + lsrs r2, r0, 24 + ldr r0, _0815C62C @ =0x04000128 + ldr r0, [r0] + movs r1, 0xC + ands r0, r1 + cmp r0, 0x8 + bne _0815C634 + cmp r2, 0 + beq _0815C634 + ldr r1, _0815C630 @ =gUnknown_3002048 + movs r0, 0x1 + b _0815C638 + .align 2, 0 +_0815C62C: .4byte 0x04000128 +_0815C630: .4byte gUnknown_3002048 +_0815C634: + ldr r1, _0815C640 @ =gUnknown_3002048 + movs r0, 0 +_0815C638: + strb r0, [r1] + pop {r1} + bx r1 + .align 2, 0 +_0815C640: .4byte gUnknown_3002048 + thumb_func_end sub_815C610 + + thumb_func_start sub_815C644 +sub_815C644: @ 815C644 + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldr r3, _0815C670 @ =gUnknown_3002048 + ldrb r0, [r3] + cmp r0, 0 + beq _0815C67C + ldr r2, _0815C674 @ =0x04000128 + ldrh r0, [r2] + movs r1, 0x1 + orrs r0, r1 + strh r0, [r2] + str r5, [r3, 0x8] + ldr r0, _0815C678 @ =0x04000120 + str r4, [r0] + lsrs r0, r4, 2 + adds r0, 0x1 + str r0, [r3, 0x10] + bl sub_815C690 + b _0815C684 + .align 2, 0 +_0815C670: .4byte gUnknown_3002048 +_0815C674: .4byte 0x04000128 +_0815C678: .4byte 0x04000120 +_0815C67C: + ldr r1, _0815C68C @ =0x04000128 + ldrh r0, [r1] + strh r0, [r1] + str r2, [r3, 0x8] +_0815C684: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0815C68C: .4byte 0x04000128 + thumb_func_end sub_815C644 + + thumb_func_start sub_815C690 +sub_815C690: @ 815C690 + ldr r1, _0815C6B4 @ =0x0400010c + ldr r2, _0815C6B8 @ =0x0000fda7 + adds r0, r2, 0 + strh r0, [r1] + ldr r0, _0815C6BC @ =0x0400010e + movs r2, 0x40 + strh r2, [r0] + ldr r3, _0815C6C0 @ =0x04000208 + movs r0, 0 + strh r0, [r3] + adds r1, 0xF4 + ldrh r0, [r1] + orrs r0, r2 + strh r0, [r1] + movs r0, 0x1 + strh r0, [r3] + bx lr + .align 2, 0 +_0815C6B4: .4byte 0x0400010c +_0815C6B8: .4byte 0x0000fda7 +_0815C6BC: .4byte 0x0400010e +_0815C6C0: .4byte 0x04000208 + thumb_func_end sub_815C690 + + thumb_func_start sub_815C6C4 +sub_815C6C4: @ 815C6C4 + push {lr} + bl sub_815C874 + bl sub_815C864 + pop {r0} + bx r0 + thumb_func_end sub_815C6C4 + + thumb_func_start sub_815C6D4 +sub_815C6D4: @ 815C6D4 + push {r4-r6,lr} + sub sp, 0x8 + ldr r2, _0815C6EC @ =gUnknown_3002048 + ldrb r0, [r2, 0x1] + adds r3, r2, 0 + cmp r0, 0x3 + beq _0815C75C + cmp r0, 0x3 + bgt _0815C6F0 + cmp r0, 0x1 + beq _0815C6F8 + b _0815C852 + .align 2, 0 +_0815C6EC: .4byte gUnknown_3002048 +_0815C6F0: + cmp r0, 0x5 + bne _0815C6F6 + b _0815C824 +_0815C6F6: + b _0815C852 +_0815C6F8: + ldr r1, _0815C728 @ =0x0400012a + ldr r2, _0815C72C @ =0x0000ccd0 + adds r0, r2, 0 + strh r0, [r1] + ldr r0, _0815C730 @ =0x04000120 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp] + str r1, [sp, 0x4] + movs r1, 0 + movs r2, 0 + movs r4, 0 + ldr r6, _0815C72C @ =0x0000ccd0 + ldr r5, _0815C734 @ =0x0000ffff +_0815C714: + lsls r0, r1, 1 + add r0, sp + ldrh r0, [r0] + cmp r0, r6 + bne _0815C738 + adds r0, r2, 0x1 + lsls r0, 16 + lsrs r2, r0, 16 + b _0815C742 + .align 2, 0 +_0815C728: .4byte 0x0400012a +_0815C72C: .4byte 0x0000ccd0 +_0815C730: .4byte 0x04000120 +_0815C734: .4byte 0x0000ffff +_0815C738: + cmp r0, r5 + beq _0815C742 + adds r0, r4, 0x1 + lsls r0, 16 + lsrs r4, r0, 16 +_0815C742: + adds r0, r1, 0x1 + lsls r0, 16 + lsrs r1, r0, 16 + cmp r1, 0x3 + bls _0815C714 + cmp r2, 0x2 + beq _0815C752 + b _0815C852 +_0815C752: + cmp r4, 0 + beq _0815C758 + b _0815C852 +_0815C758: + strb r2, [r3, 0x1] + b _0815C852 +_0815C75C: + ldr r0, _0815C798 @ =0x04000120 + ldr r4, [r0] + ldr r0, [r2, 0xC] + cmp r0, 0 + bne _0815C772 + ldrb r0, [r2] + cmp r0, 0 + bne _0815C772 + lsrs r0, r4, 2 + adds r0, 0x1 + str r0, [r2, 0x10] +_0815C772: + ldrb r0, [r3] + cmp r0, 0x1 + bne _0815C7A8 + ldr r1, [r3, 0xC] + ldr r0, [r3, 0x10] + cmp r1, r0 + bge _0815C79C + ldr r2, _0815C798 @ =0x04000120 + ldr r0, [r3, 0x8] + lsls r1, 2 + adds r1, r0 + ldr r0, [r1] + str r0, [r2] + ldr r0, [r3, 0x14] + ldr r1, [r1] + adds r0, r1 + str r0, [r3, 0x14] + b _0815C7E2 + .align 2, 0 +_0815C798: .4byte 0x04000120 +_0815C79C: + ldr r1, _0815C7A4 @ =0x04000120 + ldr r0, [r3, 0x14] + b _0815C7E0 + .align 2, 0 +_0815C7A4: .4byte 0x04000120 +_0815C7A8: + ldr r1, [r3, 0xC] + cmp r1, 0 + ble _0815C7C8 + ldr r0, [r3, 0x10] + adds r0, 0x1 + cmp r1, r0 + bge _0815C7C8 + ldr r0, [r3, 0x8] + lsls r1, 2 + adds r1, r0 + subs r1, 0x4 + str r4, [r1] + ldr r0, [r3, 0x14] + adds r0, r4 + str r0, [r3, 0x14] + b _0815C7DC +_0815C7C8: + ldr r0, [r3, 0xC] + cmp r0, 0 + beq _0815C7DC + ldr r0, [r3, 0x14] + cmp r0, r4 + bne _0815C7D8 + movs r0, 0x1 + b _0815C7DA +_0815C7D8: + movs r0, 0x2 +_0815C7DA: + strb r0, [r3, 0x3] +_0815C7DC: + ldr r1, _0815C804 @ =gUnknown_3002068 + movs r0, 0 +_0815C7E0: + str r0, [r1] +_0815C7E2: + ldr r1, [r3, 0xC] + adds r1, 0x1 + str r1, [r3, 0xC] + ldr r0, [r3, 0x10] + adds r0, 0x2 + cmp r1, r0 + bge _0815C812 + ldrb r0, [r3] + cmp r0, 0 + beq _0815C80C + ldr r0, _0815C808 @ =0x0400010e + ldrh r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strh r1, [r0] + b _0815C852 + .align 2, 0 +_0815C804: .4byte gUnknown_3002068 +_0815C808: .4byte 0x0400010e +_0815C80C: + bl sub_815C864 + b _0815C852 +_0815C812: + movs r0, 0 + movs r1, 0x4 + strb r1, [r3, 0x1] + ldr r1, _0815C820 @ =gUnknown_3002066 + strh r0, [r1] + b _0815C852 + .align 2, 0 +_0815C820: .4byte gUnknown_3002066 +_0815C824: + ldrb r3, [r2] + cmp r3, 0 + bne _0815C830 + ldr r1, _0815C85C @ =0x0400012a + ldrb r0, [r2, 0x3] + strh r0, [r1] +_0815C830: + ldr r0, _0815C860 @ =0x04000120 + ldr r1, [r0, 0x4] + ldr r0, [r0] + str r0, [sp] + str r1, [sp, 0x4] + mov r0, sp + ldrh r1, [r0, 0x2] + subs r0, r1, 0x1 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x1 + bhi _0815C852 + cmp r3, 0x1 + bne _0815C84E + strb r1, [r2, 0x3] +_0815C84E: + movs r0, 0x6 + strb r0, [r2, 0x1] +_0815C852: + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0815C85C: .4byte 0x0400012a +_0815C860: .4byte 0x04000120 + thumb_func_end sub_815C6D4 + + thumb_func_start sub_815C864 +sub_815C864: @ 815C864 + ldr r0, _0815C870 @ =0x04000128 + ldrh r1, [r0] + movs r2, 0x80 + orrs r1, r2 + strh r1, [r0] + bx lr + .align 2, 0 +_0815C870: .4byte 0x04000128 + thumb_func_end sub_815C864 + + thumb_func_start sub_815C874 +sub_815C874: @ 815C874 + ldr r2, _0815C888 @ =0x0400010e + ldrh r1, [r2] + ldr r0, _0815C88C @ =0x0000ff7f + ands r0, r1 + strh r0, [r2] + ldr r1, _0815C890 @ =0x0400010c + ldr r2, _0815C894 @ =0x0000fda7 + adds r0, r2, 0 + strh r0, [r1] + bx lr + .align 2, 0 +_0815C888: .4byte 0x0400010e +_0815C88C: .4byte 0x0000ff7f +_0815C890: .4byte 0x0400010c +_0815C894: .4byte 0x0000fda7 + thumb_func_end sub_815C874 + + thumb_func_start sub_815C898 +sub_815C898: @ 815C898 + push {r4,lr} + ldr r0, _0815C8B8 @ =0x04000130 + ldrh r0, [r0] + ldr r2, _0815C8BC @ =0x000003ff + adds r1, r2, 0 + eors r1, r0 + ldr r4, _0815C8C0 @ =gUnknown_3002062 + ldr r3, _0815C8C4 @ =gUnknown_3002060 + ldrh r2, [r3] + adds r0, r1, 0 + bics r0, r2 + strh r0, [r4] + strh r1, [r3] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0815C8B8: .4byte 0x04000130 +_0815C8BC: .4byte 0x000003ff +_0815C8C0: .4byte gUnknown_3002062 +_0815C8C4: .4byte gUnknown_3002060 + thumb_func_end sub_815C898 + + thumb_func_start sub_815C8C8 +sub_815C8C8: @ 815C8C8 + ldr r1, _0815C8F4 @ =gUnknown_300206C + ldr r0, _0815C8F8 @ =0x04000208 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _0815C8FC @ =gUnknown_300206E + ldr r0, _0815C900 @ =0x04000200 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _0815C904 @ =gUnknown_3002070 + ldr r0, _0815C908 @ =0x0400010e + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _0815C90C @ =gUnknown_3002072 + ldr r0, _0815C910 @ =0x04000128 + ldrh r0, [r0] + strh r0, [r1] + ldr r1, _0815C914 @ =gUnknown_3002074 + ldr r0, _0815C918 @ =0x04000134 + ldrh r0, [r0] + strh r0, [r1] + bx lr + .align 2, 0 +_0815C8F4: .4byte gUnknown_300206C +_0815C8F8: .4byte 0x04000208 +_0815C8FC: .4byte gUnknown_300206E +_0815C900: .4byte 0x04000200 +_0815C904: .4byte gUnknown_3002070 +_0815C908: .4byte 0x0400010e +_0815C90C: .4byte gUnknown_3002072 +_0815C910: .4byte 0x04000128 +_0815C914: .4byte gUnknown_3002074 +_0815C918: .4byte 0x04000134 + thumb_func_end sub_815C8C8 + + thumb_func_start sub_815C91C +sub_815C91C: @ 815C91C + ldr r1, _0815C948 @ =0x04000208 + ldr r0, _0815C94C @ =gUnknown_300206C + ldrh r0, [r0] + strh r0, [r1] + subs r1, 0x8 + ldr r0, _0815C950 @ =gUnknown_300206E + ldrh r0, [r0] + strh r0, [r1] + subs r1, 0xF2 + ldr r0, _0815C954 @ =gUnknown_3002070 + ldrh r0, [r0] + strh r0, [r1] + adds r1, 0x1A + ldr r0, _0815C958 @ =gUnknown_3002072 + ldrh r0, [r0] + strh r0, [r1] + adds r1, 0xC + ldr r0, _0815C95C @ =gUnknown_3002074 + ldrh r0, [r0] + strh r0, [r1] + bx lr + .align 2, 0 +_0815C948: .4byte 0x04000208 +_0815C94C: .4byte gUnknown_300206C +_0815C950: .4byte gUnknown_300206E +_0815C954: .4byte gUnknown_3002070 +_0815C958: .4byte gUnknown_3002072 +_0815C95C: .4byte gUnknown_3002074 + thumb_func_end sub_815C91C + + thumb_func_start sub_815C960 +sub_815C960: @ 815C960 + push {lr} + sub sp, 0x4 + movs r0, 0 + str r0, [sp] + ldr r1, _0815C978 @ =gUnknown_3002048 + ldr r2, _0815C97C @ =0x05000006 + mov r0, sp + bl CpuSet + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0815C978: .4byte gUnknown_3002048 +_0815C97C: .4byte 0x05000006 + thumb_func_end sub_815C960 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/unk_815C27C.s b/asm/unk_815C27C.s deleted file mode 100644 index 067ab8659..000000000 --- a/asm/unk_815C27C.s +++ /dev/null @@ -1,920 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_815C27C -sub_815C27C: @ 815C27C - push {r4-r7,lr} - sub sp, 0x4 - adds r6, r0, 0 - adds r5, r1, 0 - bl sub_815C8C8 - movs r7, 0x2 - ldr r4, _0815C2BC @ =gUnknown_3003F84 -_0815C28C: - bl sub_815C898 - ldr r0, _0815C2C0 @ =gUnknown_3002062 - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0815C29E - strb r7, [r4] -_0815C29E: - movs r0, 0x1 - adds r1, r6, 0 - adds r2, r5, 0 - movs r3, 0 - bl sub_815C498 - adds r1, r0, 0 - ldr r0, _0815C2C4 @ =gUnknown_3002064 - strh r1, [r0] - movs r0, 0x13 - ands r0, r1 - cmp r0, 0x10 - bne _0815C2C8 - movs r4, 0 - b _0815C2EA - .align 2, 0 -_0815C2BC: .4byte gUnknown_3003F84 -_0815C2C0: .4byte gUnknown_3002062 -_0815C2C4: .4byte gUnknown_3002064 -_0815C2C8: - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0815C2D4 - movs r4, 0x1 - b _0815C2EA -_0815C2D4: - movs r0, 0x4 - ands r0, r1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - bne _0815C2E8 - strb r0, [r4] - bl VBlankIntrWait - b _0815C28C -_0815C2E8: - movs r4, 0x2 -_0815C2EA: - movs r0, 0 - str r0, [sp] - ldr r1, _0815C308 @ =gUnknown_3002048 - ldr r2, _0815C30C @ =0x05000006 - mov r0, sp - bl CpuSet - bl sub_815C91C - adds r0, r4, 0 - add sp, 0x4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0815C308: .4byte gUnknown_3002048 -_0815C30C: .4byte 0x05000006 - thumb_func_end sub_815C27C - - thumb_func_start sub_815C310 -sub_815C310: @ 815C310 - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r0, 0 - bl sub_815C8C8 - movs r6, 0x2 - ldr r4, _0815C350 @ =gUnknown_3003F84 -_0815C31E: - bl sub_815C898 - ldr r0, _0815C354 @ =gUnknown_3002062 - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0815C330 - strb r6, [r4] -_0815C330: - movs r0, 0 - movs r1, 0 - movs r2, 0 - adds r3, r5, 0 - bl sub_815C498 - adds r1, r0, 0 - ldr r0, _0815C358 @ =gUnknown_3002064 - strh r1, [r0] - movs r0, 0x13 - ands r0, r1 - cmp r0, 0x10 - bne _0815C35C - movs r4, 0 - b _0815C37E - .align 2, 0 -_0815C350: .4byte gUnknown_3003F84 -_0815C354: .4byte gUnknown_3002062 -_0815C358: .4byte gUnknown_3002064 -_0815C35C: - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0815C368 - movs r4, 0x1 - b _0815C37E -_0815C368: - movs r0, 0x4 - ands r0, r1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - bne _0815C37C - strb r0, [r4] - bl VBlankIntrWait - b _0815C31E -_0815C37C: - movs r4, 0x2 -_0815C37E: - movs r0, 0 - str r0, [sp] - ldr r1, _0815C39C @ =gUnknown_3002048 - ldr r2, _0815C3A0 @ =0x05000006 - mov r0, sp - bl CpuSet - bl sub_815C91C - adds r0, r4, 0 - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0815C39C: .4byte gUnknown_3002048 -_0815C3A0: .4byte 0x05000006 - thumb_func_end sub_815C310 - - thumb_func_start sub_815C3A4 -sub_815C3A4: @ 815C3A4 - push {r4,lr} - ldr r4, _0815C3D0 @ =0x04000208 - movs r3, 0 - strh r3, [r4] - ldr r2, _0815C3D4 @ =0x04000200 - ldrh r1, [r2] - ldr r0, _0815C3D8 @ =0x0000ff3f - ands r0, r1 - strh r0, [r2] - movs r0, 0x1 - strh r0, [r4] - ldr r0, _0815C3DC @ =0x04000128 - strh r3, [r0] - subs r0, 0x1A - strh r3, [r0] - ldr r1, _0815C3E0 @ =0x04000202 - movs r0, 0xC0 - strh r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0815C3D0: .4byte 0x04000208 -_0815C3D4: .4byte 0x04000200 -_0815C3D8: .4byte 0x0000ff3f -_0815C3DC: .4byte 0x04000128 -_0815C3E0: .4byte 0x04000202 - thumb_func_end sub_815C3A4 - - thumb_func_start sub_815C3E4 -sub_815C3E4: @ 815C3E4 - push {r4-r7,lr} - sub sp, 0x4 - ldr r5, _0815C43C @ =0x04000208 - movs r4, 0 - strh r4, [r5] - ldr r3, _0815C440 @ =0x04000200 - ldrh r1, [r3] - ldr r0, _0815C444 @ =0x0000ff3f - ands r0, r1 - strh r0, [r3] - movs r6, 0x1 - strh r6, [r5] - ldr r0, _0815C448 @ =0x04000134 - strh r4, [r0] - ldr r2, _0815C44C @ =0x04000128 - movs r1, 0x80 - lsls r1, 6 - adds r0, r1, 0 - strh r0, [r2] - ldrh r0, [r2] - ldr r7, _0815C450 @ =0x00004003 - adds r1, r7, 0 - orrs r0, r1 - strh r0, [r2] - strh r4, [r5] - ldrh r0, [r3] - movs r1, 0x80 - orrs r0, r1 - strh r0, [r3] - strh r6, [r5] - ldr r1, _0815C454 @ =gUnknown_3002048 - ldrb r0, [r1, 0x1] - cmp r0, 0 - bne _0815C432 - str r0, [sp] - ldr r2, _0815C458 @ =0x05000006 - mov r0, sp - bl CpuSet -_0815C432: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0815C43C: .4byte 0x04000208 -_0815C440: .4byte 0x04000200 -_0815C444: .4byte 0x0000ff3f -_0815C448: .4byte 0x04000134 -_0815C44C: .4byte 0x04000128 -_0815C450: .4byte 0x00004003 -_0815C454: .4byte gUnknown_3002048 -_0815C458: .4byte 0x05000006 - thumb_func_end sub_815C3E4 - - thumb_func_start sub_815C45C -sub_815C45C: @ 815C45C - ldr r0, _0815C484 @ =0x04000134 - movs r3, 0 - strh r3, [r0] - ldr r2, _0815C488 @ =0x04000128 - movs r1, 0xA0 - lsls r1, 7 - adds r0, r1, 0 - strh r0, [r2] - ldrh r0, [r2] - movs r1, 0x8 - orrs r0, r1 - strh r0, [r2] - ldr r0, _0815C48C @ =gUnknown_3003F84 - strb r3, [r0] - ldr r0, _0815C490 @ =gUnknown_3002066 - strh r3, [r0] - ldr r1, _0815C494 @ =gUnknown_3002068 - movs r0, 0 - str r0, [r1] - bx lr - .align 2, 0 -_0815C484: .4byte 0x04000134 -_0815C488: .4byte 0x04000128 -_0815C48C: .4byte gUnknown_3003F84 -_0815C490: .4byte gUnknown_3002066 -_0815C494: .4byte gUnknown_3002068 - thumb_func_end sub_815C45C - - thumb_func_start sub_815C498 -sub_815C498: @ 815C498 - push {r4-r6,lr} - adds r4, r1, 0 - adds r5, r2, 0 - adds r6, r3, 0 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _0815C4B8 @ =gUnknown_3002048 - ldrb r0, [r0, 0x1] - cmp r0, 0x6 - bls _0815C4AE - b _0815C5F4 -_0815C4AE: - lsls r0, 2 - ldr r1, _0815C4BC @ =_0815C4C0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0815C4B8: .4byte gUnknown_3002048 -_0815C4BC: .4byte _0815C4C0 - .align 2, 0 -_0815C4C0: - .4byte _0815C4DC - .4byte _0815C4F0 - .4byte _0815C510 - .4byte _0815C524 - .4byte _0815C59C - .4byte _0815C5AC - .4byte _0815C5E4 -_0815C4DC: - bl sub_815C3E4 - ldr r1, _0815C4EC @ =gUnknown_3002048 - movs r0, 0x1 - strb r0, [r1, 0x2] - strb r0, [r1, 0x1] - b _0815C5F4 - .align 2, 0 -_0815C4EC: .4byte gUnknown_3002048 -_0815C4F0: - adds r0, r2, 0 - bl sub_815C610 - lsls r0, 16 - cmp r0, 0 - beq _0815C500 - bl sub_815C864 -_0815C500: - ldr r0, _0815C50C @ =gUnknown_3003F84 - ldrb r0, [r0] - cmp r0, 0x2 - beq _0815C50A - b _0815C5F4 -_0815C50A: - b _0815C52C - .align 2, 0 -_0815C50C: .4byte gUnknown_3003F84 -_0815C510: - bl sub_815C45C - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - bl sub_815C644 - ldr r1, _0815C538 @ =gUnknown_3002048 - movs r0, 0x3 - strb r0, [r1, 0x1] -_0815C524: - ldr r0, _0815C53C @ =gUnknown_3003F84 - ldrb r0, [r0] - cmp r0, 0x2 - bne _0815C540 -_0815C52C: - ldr r1, _0815C538 @ =gUnknown_3002048 - strb r0, [r1, 0x4] - movs r0, 0x6 - strb r0, [r1, 0x1] - b _0815C5F4 - .align 2, 0 -_0815C538: .4byte gUnknown_3002048 -_0815C53C: .4byte gUnknown_3003F84 -_0815C540: - ldr r2, _0815C580 @ =gUnknown_3002066 - ldrh r0, [r2] - adds r0, 0x1 - strh r0, [r2] - ldr r1, _0815C584 @ =gUnknown_3002068 - ldr r0, [r1] - adds r3, r0, 0x1 - str r3, [r1] - ldr r1, _0815C588 @ =gUnknown_3002048 - ldrb r0, [r1] - cmp r0, 0 - bne _0815C564 - cmp r3, 0x3C - bls _0815C564 - movs r0, 0x1 - strb r0, [r1, 0x4] - movs r0, 0x6 - strb r0, [r1, 0x1] -_0815C564: - ldr r4, _0815C588 @ =gUnknown_3002048 - ldrb r0, [r4, 0x2] - cmp r0, 0x2 - beq _0815C5F4 - ldrb r0, [r4] - cmp r0, 0 - beq _0815C58C - ldrh r0, [r2] - cmp r0, 0x2 - bls _0815C58C - bl sub_815C864 - movs r0, 0x2 - b _0815C5F2 - .align 2, 0 -_0815C580: .4byte gUnknown_3002066 -_0815C584: .4byte gUnknown_3002068 -_0815C588: .4byte gUnknown_3002048 -_0815C58C: - bl sub_815C864 - ldr r1, _0815C598 @ =gUnknown_3002048 - movs r0, 0x2 - strb r0, [r1, 0x2] - b _0815C5F4 - .align 2, 0 -_0815C598: .4byte gUnknown_3002048 -_0815C59C: - bl sub_815C3E4 - ldr r1, _0815C5A8 @ =gUnknown_3002048 - movs r0, 0x5 - strb r0, [r1, 0x1] - b _0815C5F4 - .align 2, 0 -_0815C5A8: .4byte gUnknown_3002048 -_0815C5AC: - ldr r0, _0815C5DC @ =gUnknown_3002048 - ldrb r0, [r0] - cmp r0, 0x1 - bne _0815C5C0 - ldr r0, _0815C5E0 @ =gUnknown_3002066 - ldrh r0, [r0] - cmp r0, 0x2 - bls _0815C5C0 - bl sub_815C864 -_0815C5C0: - ldr r1, _0815C5E0 @ =gUnknown_3002066 - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x3C - bls _0815C5F4 - ldr r0, _0815C5DC @ =gUnknown_3002048 - movs r1, 0x1 - strb r1, [r0, 0x4] - movs r1, 0x6 - strb r1, [r0, 0x1] - b _0815C5F4 - .align 2, 0 -_0815C5DC: .4byte gUnknown_3002048 -_0815C5E0: .4byte gUnknown_3002066 -_0815C5E4: - ldr r4, _0815C60C @ =gUnknown_3002048 - ldrb r0, [r4, 0x2] - cmp r0, 0 - beq _0815C5F4 - bl sub_815C3A4 - movs r0, 0 -_0815C5F2: - strb r0, [r4, 0x2] -_0815C5F4: - ldr r2, _0815C60C @ =gUnknown_3002048 - ldrb r0, [r2, 0x2] - ldrb r1, [r2, 0x4] - lsls r1, 2 - orrs r0, r1 - ldrb r1, [r2, 0x3] - lsls r1, 4 - orrs r0, r1 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0815C60C: .4byte gUnknown_3002048 - thumb_func_end sub_815C498 - - thumb_func_start sub_815C610 -sub_815C610: @ 815C610 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _0815C62C @ =0x04000128 - ldr r0, [r0] - movs r1, 0xC - ands r0, r1 - cmp r0, 0x8 - bne _0815C634 - cmp r2, 0 - beq _0815C634 - ldr r1, _0815C630 @ =gUnknown_3002048 - movs r0, 0x1 - b _0815C638 - .align 2, 0 -_0815C62C: .4byte 0x04000128 -_0815C630: .4byte gUnknown_3002048 -_0815C634: - ldr r1, _0815C640 @ =gUnknown_3002048 - movs r0, 0 -_0815C638: - strb r0, [r1] - pop {r1} - bx r1 - .align 2, 0 -_0815C640: .4byte gUnknown_3002048 - thumb_func_end sub_815C610 - - thumb_func_start sub_815C644 -sub_815C644: @ 815C644 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldr r3, _0815C670 @ =gUnknown_3002048 - ldrb r0, [r3] - cmp r0, 0 - beq _0815C67C - ldr r2, _0815C674 @ =0x04000128 - ldrh r0, [r2] - movs r1, 0x1 - orrs r0, r1 - strh r0, [r2] - str r5, [r3, 0x8] - ldr r0, _0815C678 @ =0x04000120 - str r4, [r0] - lsrs r0, r4, 2 - adds r0, 0x1 - str r0, [r3, 0x10] - bl sub_815C690 - b _0815C684 - .align 2, 0 -_0815C670: .4byte gUnknown_3002048 -_0815C674: .4byte 0x04000128 -_0815C678: .4byte 0x04000120 -_0815C67C: - ldr r1, _0815C68C @ =0x04000128 - ldrh r0, [r1] - strh r0, [r1] - str r2, [r3, 0x8] -_0815C684: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0815C68C: .4byte 0x04000128 - thumb_func_end sub_815C644 - - thumb_func_start sub_815C690 -sub_815C690: @ 815C690 - ldr r1, _0815C6B4 @ =0x0400010c - ldr r2, _0815C6B8 @ =0x0000fda7 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0815C6BC @ =0x0400010e - movs r2, 0x40 - strh r2, [r0] - ldr r3, _0815C6C0 @ =0x04000208 - movs r0, 0 - strh r0, [r3] - adds r1, 0xF4 - ldrh r0, [r1] - orrs r0, r2 - strh r0, [r1] - movs r0, 0x1 - strh r0, [r3] - bx lr - .align 2, 0 -_0815C6B4: .4byte 0x0400010c -_0815C6B8: .4byte 0x0000fda7 -_0815C6BC: .4byte 0x0400010e -_0815C6C0: .4byte 0x04000208 - thumb_func_end sub_815C690 - - thumb_func_start sub_815C6C4 -sub_815C6C4: @ 815C6C4 - push {lr} - bl sub_815C874 - bl sub_815C864 - pop {r0} - bx r0 - thumb_func_end sub_815C6C4 - - thumb_func_start sub_815C6D4 -sub_815C6D4: @ 815C6D4 - push {r4-r6,lr} - sub sp, 0x8 - ldr r2, _0815C6EC @ =gUnknown_3002048 - ldrb r0, [r2, 0x1] - adds r3, r2, 0 - cmp r0, 0x3 - beq _0815C75C - cmp r0, 0x3 - bgt _0815C6F0 - cmp r0, 0x1 - beq _0815C6F8 - b _0815C852 - .align 2, 0 -_0815C6EC: .4byte gUnknown_3002048 -_0815C6F0: - cmp r0, 0x5 - bne _0815C6F6 - b _0815C824 -_0815C6F6: - b _0815C852 -_0815C6F8: - ldr r1, _0815C728 @ =0x0400012a - ldr r2, _0815C72C @ =0x0000ccd0 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0815C730 @ =0x04000120 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp] - str r1, [sp, 0x4] - movs r1, 0 - movs r2, 0 - movs r4, 0 - ldr r6, _0815C72C @ =0x0000ccd0 - ldr r5, _0815C734 @ =0x0000ffff -_0815C714: - lsls r0, r1, 1 - add r0, sp - ldrh r0, [r0] - cmp r0, r6 - bne _0815C738 - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - b _0815C742 - .align 2, 0 -_0815C728: .4byte 0x0400012a -_0815C72C: .4byte 0x0000ccd0 -_0815C730: .4byte 0x04000120 -_0815C734: .4byte 0x0000ffff -_0815C738: - cmp r0, r5 - beq _0815C742 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 -_0815C742: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x3 - bls _0815C714 - cmp r2, 0x2 - beq _0815C752 - b _0815C852 -_0815C752: - cmp r4, 0 - beq _0815C758 - b _0815C852 -_0815C758: - strb r2, [r3, 0x1] - b _0815C852 -_0815C75C: - ldr r0, _0815C798 @ =0x04000120 - ldr r4, [r0] - ldr r0, [r2, 0xC] - cmp r0, 0 - bne _0815C772 - ldrb r0, [r2] - cmp r0, 0 - bne _0815C772 - lsrs r0, r4, 2 - adds r0, 0x1 - str r0, [r2, 0x10] -_0815C772: - ldrb r0, [r3] - cmp r0, 0x1 - bne _0815C7A8 - ldr r1, [r3, 0xC] - ldr r0, [r3, 0x10] - cmp r1, r0 - bge _0815C79C - ldr r2, _0815C798 @ =0x04000120 - ldr r0, [r3, 0x8] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - str r0, [r2] - ldr r0, [r3, 0x14] - ldr r1, [r1] - adds r0, r1 - str r0, [r3, 0x14] - b _0815C7E2 - .align 2, 0 -_0815C798: .4byte 0x04000120 -_0815C79C: - ldr r1, _0815C7A4 @ =0x04000120 - ldr r0, [r3, 0x14] - b _0815C7E0 - .align 2, 0 -_0815C7A4: .4byte 0x04000120 -_0815C7A8: - ldr r1, [r3, 0xC] - cmp r1, 0 - ble _0815C7C8 - ldr r0, [r3, 0x10] - adds r0, 0x1 - cmp r1, r0 - bge _0815C7C8 - ldr r0, [r3, 0x8] - lsls r1, 2 - adds r1, r0 - subs r1, 0x4 - str r4, [r1] - ldr r0, [r3, 0x14] - adds r0, r4 - str r0, [r3, 0x14] - b _0815C7DC -_0815C7C8: - ldr r0, [r3, 0xC] - cmp r0, 0 - beq _0815C7DC - ldr r0, [r3, 0x14] - cmp r0, r4 - bne _0815C7D8 - movs r0, 0x1 - b _0815C7DA -_0815C7D8: - movs r0, 0x2 -_0815C7DA: - strb r0, [r3, 0x3] -_0815C7DC: - ldr r1, _0815C804 @ =gUnknown_3002068 - movs r0, 0 -_0815C7E0: - str r0, [r1] -_0815C7E2: - ldr r1, [r3, 0xC] - adds r1, 0x1 - str r1, [r3, 0xC] - ldr r0, [r3, 0x10] - adds r0, 0x2 - cmp r1, r0 - bge _0815C812 - ldrb r0, [r3] - cmp r0, 0 - beq _0815C80C - ldr r0, _0815C808 @ =0x0400010e - ldrh r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strh r1, [r0] - b _0815C852 - .align 2, 0 -_0815C804: .4byte gUnknown_3002068 -_0815C808: .4byte 0x0400010e -_0815C80C: - bl sub_815C864 - b _0815C852 -_0815C812: - movs r0, 0 - movs r1, 0x4 - strb r1, [r3, 0x1] - ldr r1, _0815C820 @ =gUnknown_3002066 - strh r0, [r1] - b _0815C852 - .align 2, 0 -_0815C820: .4byte gUnknown_3002066 -_0815C824: - ldrb r3, [r2] - cmp r3, 0 - bne _0815C830 - ldr r1, _0815C85C @ =0x0400012a - ldrb r0, [r2, 0x3] - strh r0, [r1] -_0815C830: - ldr r0, _0815C860 @ =0x04000120 - ldr r1, [r0, 0x4] - ldr r0, [r0] - str r0, [sp] - str r1, [sp, 0x4] - mov r0, sp - ldrh r1, [r0, 0x2] - subs r0, r1, 0x1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _0815C852 - cmp r3, 0x1 - bne _0815C84E - strb r1, [r2, 0x3] -_0815C84E: - movs r0, 0x6 - strb r0, [r2, 0x1] -_0815C852: - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0815C85C: .4byte 0x0400012a -_0815C860: .4byte 0x04000120 - thumb_func_end sub_815C6D4 - - thumb_func_start sub_815C864 -sub_815C864: @ 815C864 - ldr r0, _0815C870 @ =0x04000128 - ldrh r1, [r0] - movs r2, 0x80 - orrs r1, r2 - strh r1, [r0] - bx lr - .align 2, 0 -_0815C870: .4byte 0x04000128 - thumb_func_end sub_815C864 - - thumb_func_start sub_815C874 -sub_815C874: @ 815C874 - ldr r2, _0815C888 @ =0x0400010e - ldrh r1, [r2] - ldr r0, _0815C88C @ =0x0000ff7f - ands r0, r1 - strh r0, [r2] - ldr r1, _0815C890 @ =0x0400010c - ldr r2, _0815C894 @ =0x0000fda7 - adds r0, r2, 0 - strh r0, [r1] - bx lr - .align 2, 0 -_0815C888: .4byte 0x0400010e -_0815C88C: .4byte 0x0000ff7f -_0815C890: .4byte 0x0400010c -_0815C894: .4byte 0x0000fda7 - thumb_func_end sub_815C874 - - thumb_func_start sub_815C898 -sub_815C898: @ 815C898 - push {r4,lr} - ldr r0, _0815C8B8 @ =0x04000130 - ldrh r0, [r0] - ldr r2, _0815C8BC @ =0x000003ff - adds r1, r2, 0 - eors r1, r0 - ldr r4, _0815C8C0 @ =gUnknown_3002062 - ldr r3, _0815C8C4 @ =gUnknown_3002060 - ldrh r2, [r3] - adds r0, r1, 0 - bics r0, r2 - strh r0, [r4] - strh r1, [r3] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0815C8B8: .4byte 0x04000130 -_0815C8BC: .4byte 0x000003ff -_0815C8C0: .4byte gUnknown_3002062 -_0815C8C4: .4byte gUnknown_3002060 - thumb_func_end sub_815C898 - - thumb_func_start sub_815C8C8 -sub_815C8C8: @ 815C8C8 - ldr r1, _0815C8F4 @ =gUnknown_300206C - ldr r0, _0815C8F8 @ =0x04000208 - ldrh r0, [r0] - strh r0, [r1] - ldr r1, _0815C8FC @ =gUnknown_300206E - ldr r0, _0815C900 @ =0x04000200 - ldrh r0, [r0] - strh r0, [r1] - ldr r1, _0815C904 @ =gUnknown_3002070 - ldr r0, _0815C908 @ =0x0400010e - ldrh r0, [r0] - strh r0, [r1] - ldr r1, _0815C90C @ =gUnknown_3002072 - ldr r0, _0815C910 @ =0x04000128 - ldrh r0, [r0] - strh r0, [r1] - ldr r1, _0815C914 @ =gUnknown_3002074 - ldr r0, _0815C918 @ =0x04000134 - ldrh r0, [r0] - strh r0, [r1] - bx lr - .align 2, 0 -_0815C8F4: .4byte gUnknown_300206C -_0815C8F8: .4byte 0x04000208 -_0815C8FC: .4byte gUnknown_300206E -_0815C900: .4byte 0x04000200 -_0815C904: .4byte gUnknown_3002070 -_0815C908: .4byte 0x0400010e -_0815C90C: .4byte gUnknown_3002072 -_0815C910: .4byte 0x04000128 -_0815C914: .4byte gUnknown_3002074 -_0815C918: .4byte 0x04000134 - thumb_func_end sub_815C8C8 - - thumb_func_start sub_815C91C -sub_815C91C: @ 815C91C - ldr r1, _0815C948 @ =0x04000208 - ldr r0, _0815C94C @ =gUnknown_300206C - ldrh r0, [r0] - strh r0, [r1] - subs r1, 0x8 - ldr r0, _0815C950 @ =gUnknown_300206E - ldrh r0, [r0] - strh r0, [r1] - subs r1, 0xF2 - ldr r0, _0815C954 @ =gUnknown_3002070 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x1A - ldr r0, _0815C958 @ =gUnknown_3002072 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0xC - ldr r0, _0815C95C @ =gUnknown_3002074 - ldrh r0, [r0] - strh r0, [r1] - bx lr - .align 2, 0 -_0815C948: .4byte 0x04000208 -_0815C94C: .4byte gUnknown_300206C -_0815C950: .4byte gUnknown_300206E -_0815C954: .4byte gUnknown_3002070 -_0815C958: .4byte gUnknown_3002072 -_0815C95C: .4byte gUnknown_3002074 - thumb_func_end sub_815C91C - - thumb_func_start sub_815C960 -sub_815C960: @ 815C960 - push {lr} - sub sp, 0x4 - movs r0, 0 - str r0, [sp] - ldr r1, _0815C978 @ =gUnknown_3002048 - ldr r2, _0815C97C @ =0x05000006 - mov r0, sp - bl CpuSet - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0815C978: .4byte gUnknown_3002048 -_0815C97C: .4byte 0x05000006 - thumb_func_end sub_815C960 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/unk_815C980.s b/asm/unk_815C980.s deleted file mode 100644 index a348558f3..000000000 --- a/asm/unk_815C980.s +++ /dev/null @@ -1,1314 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_815C980 -sub_815C980: @ 815C980 - push {r4-r7,lr} - adds r4, r0, 0 - ldr r5, _0815C9A0 @ =gUnknown_203F454 - ldr r0, [r5] - cmp r0, 0 - beq _0815C990 - bl sub_815C9F4 -_0815C990: - movs r0, 0x8 - bl Alloc - str r0, [r5] - cmp r0, 0 - bne _0815C9A4 - movs r0, 0 - b _0815C9EC - .align 2, 0 -_0815C9A0: .4byte gUnknown_203F454 -_0815C9A4: - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 2 - bl Alloc - ldr r1, [r5] - str r0, [r1, 0x4] - cmp r0, 0 - bne _0815C9C0 - adds r0, r1, 0 - bl Free - movs r0, 0 - b _0815C9EC -_0815C9C0: - str r4, [r1] - movs r3, 0 - cmp r3, r4 - bcs _0815C9EA - movs r7, 0 - movs r6, 0xFF - movs r2, 0 -_0815C9CE: - ldr r0, [r5] - ldr r0, [r0, 0x4] - adds r0, r2, r0 - strb r7, [r0] - ldr r0, [r5] - ldr r1, [r0, 0x4] - adds r1, r2, r1 - ldrb r0, [r1, 0x1] - orrs r0, r6 - strb r0, [r1, 0x1] - adds r2, 0x1C - adds r3, 0x1 - cmp r3, r4 - bcc _0815C9CE -_0815C9EA: - movs r0, 0x1 -_0815C9EC: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_815C980 - - thumb_func_start sub_815C9F4 -sub_815C9F4: @ 815C9F4 - push {r4,r5,lr} - ldr r2, _0815CA3C @ =gUnknown_203F454 - ldr r1, [r2] - cmp r1, 0 - beq _0815CA34 - ldr r0, [r1, 0x4] - cmp r0, 0 - beq _0815CA28 - movs r4, 0 - ldr r0, [r1] - cmp r4, r0 - bcs _0815CA1E - adds r5, r2, 0 -_0815CA0E: - adds r0, r4, 0 - bl sub_815D108 - adds r4, 0x1 - ldr r0, [r5] - ldr r0, [r0] - cmp r4, r0 - bcc _0815CA0E -_0815CA1E: - ldr r0, _0815CA3C @ =gUnknown_203F454 - ldr r0, [r0] - ldr r0, [r0, 0x4] - bl Free -_0815CA28: - ldr r4, _0815CA3C @ =gUnknown_203F454 - ldr r0, [r4] - bl Free - movs r0, 0 - str r0, [r4] -_0815CA34: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0815CA3C: .4byte gUnknown_203F454 - thumb_func_end sub_815C9F4 - - thumb_func_start sub_815CA40 -sub_815CA40: @ 815CA40 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - mov r8, r0 - mov r10, r1 - adds r5, r2, 0 - ldr r6, _0815CAB8 @ =gUnknown_203F454 - ldr r0, [r6] - cmp r0, 0 - beq _0815CB00 - ldr r1, [r0, 0x4] - mov r0, r8 - lsls r2, r0, 3 - subs r0, r2, r0 - lsls r4, r0, 2 - adds r1, r4, r1 - ldrb r0, [r1] - mov r9, r2 - cmp r0, 0 - bne _0815CB00 - ldrb r0, [r5, 0x1] - bl sub_815D244 - ldr r1, [r6] - ldr r1, [r1, 0x4] - adds r1, r4, r1 - strb r0, [r1, 0x1] - ldr r0, [r6] - ldr r0, [r0, 0x4] - adds r0, r4, r0 - ldrb r0, [r0, 0x1] - cmp r0, 0xFF - beq _0815CB00 - ldr r0, [r5, 0x8] - ldrh r0, [r0, 0x6] - bl GetSpriteTileStartByTag - ldr r2, [r6] - ldr r1, [r2, 0x4] - adds r1, r4, r1 - strh r0, [r1, 0xA] - ldr r0, [r2, 0x4] - adds r0, r4, r0 - ldrh r1, [r0, 0xA] - ldr r7, _0815CABC @ =0xffff0000 - lsrs r0, r7, 16 - cmp r1, r0 - bne _0815CB0C - ldr r2, [r5, 0x8] - ldrh r0, [r2, 0x4] - adds r1, r2, 0 - cmp r0, 0 - beq _0815CAC0 - adds r0, r1, 0 - bl LoadSpriteSheet - b _0815CAE0 - .align 2, 0 -_0815CAB8: .4byte gUnknown_203F454 -_0815CABC: .4byte 0xffff0000 -_0815CAC0: - ldr r0, [r2] - ldr r1, [r2, 0x4] - str r0, [sp] - str r1, [sp, 0x4] - ldr r0, [r2] - bl sub_800F0C4 - lsls r0, 16 - lsrs r0, 16 - ldr r1, [sp, 0x4] - ands r1, r7 - orrs r1, r0 - str r1, [sp, 0x4] - mov r0, sp - bl LoadCompressedObjectPic -_0815CAE0: - ldr r1, [r6] - ldr r1, [r1, 0x4] - adds r1, r4, r1 - strh r0, [r1, 0xA] - ldr r0, _0815CB04 @ =gUnknown_203F454 - ldr r0, [r0] - ldr r1, [r0, 0x4] - mov r2, r9 - mov r3, r8 - subs r0, r2, r3 - lsls r0, 2 - adds r0, r1 - ldrh r1, [r0, 0xA] - ldr r0, _0815CB08 @ =0x0000ffff - cmp r1, r0 - bne _0815CB0C -_0815CB00: - movs r0, 0 - b _0815CC14 - .align 2, 0 -_0815CB04: .4byte gUnknown_203F454 -_0815CB08: .4byte 0x0000ffff -_0815CB0C: - ldr r0, [r5, 0xC] - ldrh r0, [r0, 0x4] - bl IndexOfSpritePaletteTag - ldr r6, _0815CC24 @ =gUnknown_203F454 - ldr r1, [r6] - ldr r1, [r1, 0x4] - mov r4, r9 - mov r3, r8 - subs r2, r4, r3 - lsls r4, r2, 2 - adds r1, r4, r1 - strb r0, [r1, 0x4] - ldr r0, [r6] - ldr r0, [r0, 0x4] - adds r0, r4, r0 - ldrb r0, [r0, 0x4] - cmp r0, 0xFF - bne _0815CB40 - ldr r0, [r5, 0xC] - bl LoadSpritePalette - ldr r1, [r6] - ldr r1, [r1, 0x4] - adds r1, r4, r1 - strb r0, [r1, 0x4] -_0815CB40: - ldr r0, [r6] - ldr r1, [r0, 0x4] - adds r1, r4, r1 - ldrb r0, [r5] - lsls r0, 30 - lsrs r0, 30 - strb r0, [r1, 0x2] - ldr r0, [r6] - ldr r0, [r0, 0x4] - adds r0, r4, r0 - ldrb r1, [r5, 0x1] - strb r1, [r0, 0x3] - ldr r2, [r6] - ldr r0, [r2, 0x4] - adds r0, r4, r0 - ldrh r1, [r5, 0x4] - strh r1, [r0, 0xC] - ldr r0, [r2, 0x4] - adds r0, r4, r0 - ldrh r1, [r5, 0x6] - strh r1, [r0, 0xE] - ldr r1, [r2, 0x4] - adds r1, r4, r1 - ldrb r0, [r5] - lsls r0, 28 - lsrs r0, 30 - strb r0, [r1, 0x6] - ldr r0, [r6] - ldr r1, [r0, 0x4] - adds r1, r4, r1 - ldrb r0, [r5] - lsls r0, 26 - lsrs r0, 30 - strb r0, [r1, 0x5] - ldr r0, [r6] - ldr r1, [r0, 0x4] - adds r1, r4, r1 - ldrb r0, [r5] - lsrs r0, 6 - strb r0, [r1, 0x7] - ldr r0, [r6] - ldr r0, [r0, 0x4] - adds r0, r4, r0 - ldrb r1, [r5, 0x2] - strb r1, [r0, 0x8] - ldrb r1, [r5] - lsls r0, r1, 28 - lsrs r0, 30 - lsls r1, 26 - lsrs r1, 30 - bl sub_815D324 - ldr r1, [r6] - ldr r1, [r1, 0x4] - adds r1, r4, r1 - strb r0, [r1, 0x9] - ldr r2, [r6] - ldr r0, [r2, 0x4] - adds r0, r4, r0 - ldr r1, [r5, 0x8] - ldrh r1, [r1, 0x6] - strh r1, [r0, 0x10] - ldr r0, [r2, 0x4] - adds r0, r4, r0 - ldr r1, [r5, 0xC] - ldrh r1, [r1, 0x4] - strh r1, [r0, 0x12] - ldr r0, [r2, 0x4] - adds r0, r4, r0 - movs r1, 0x1 - strb r1, [r0] - ldr r0, [r6] - ldr r0, [r0, 0x4] - adds r0, r4, r0 - str r1, [r0, 0x14] - movs r3, 0x1 - ldrb r0, [r5, 0x1] - cmp r3, r0 - bcs _0815CBF6 -_0815CBDE: - ldr r0, [r6] - ldr r2, [r0, 0x4] - adds r2, r4, r2 - ldr r1, [r2, 0x14] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 1 - str r0, [r2, 0x14] - adds r3, 0x1 - ldrb r2, [r5, 0x1] - cmp r3, r2 - bcc _0815CBDE -_0815CBF6: - ldr r0, _0815CC24 @ =gUnknown_203F454 - ldr r0, [r0] - mov r3, r9 - mov r4, r8 - subs r1, r3, r4 - lsls r1, 2 - ldr r0, [r0, 0x4] - adds r0, r1 - bl sub_815CC28 - mov r0, r8 - mov r1, r10 - bl sub_815CD70 - movs r0, 0x1 -_0815CC14: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0815CC24: .4byte gUnknown_203F454 - thumb_func_end sub_815CA40 - - thumb_func_start sub_815CC28 -sub_815CC28: @ 815CC28 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r4, r0, 0 - ldrb r5, [r4, 0x1] - movs r0, 0xC - ldrsh r7, [r4, r0] - ldrb r0, [r4, 0x3] - adds r0, 0x1 - mov r8, r0 - mov r1, sp - movs r0, 0 - strh r0, [r1] - lsls r1, r5, 3 - ldr r2, _0815CD58 @ =gMain + 0x38 - mov r9, r2 - add r1, r9 - mov r0, r8 - lsls r2, r0, 2 - movs r0, 0x80 - lsls r0, 17 - orrs r2, r0 - mov r0, sp - bl CpuSet - movs r6, 0 - ldrb r5, [r4, 0x1] - cmp r6, r8 - bcs _0815CCFA - movs r1, 0x3F - mov r10, r1 - movs r2, 0xD - negs r2, r2 - mov r9, r2 -_0815CC72: - lsls r0, r5, 3 - ldr r1, _0815CD5C @ =gMain - adds r3, r0, r1 - ldrh r1, [r4, 0xE] - adds r0, r3, 0 - adds r0, 0x38 - strb r1, [r0] - ldr r2, _0815CD60 @ =0x000001ff - adds r0, r2, 0 - adds r1, r7, 0 - ands r1, r0 - ldrh r2, [r3, 0x3A] - ldr r0, _0815CD64 @ =0xfffffe00 - ands r0, r2 - orrs r0, r1 - strh r0, [r3, 0x3A] - ldrb r1, [r4, 0x6] - movs r0, 0x39 - adds r0, r3 - mov r12, r0 - lsls r1, 6 - ldrb r2, [r0] - mov r0, r10 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - ldrb r1, [r4, 0x5] - movs r2, 0x3B - adds r2, r3 - mov r12, r2 - lsls r1, 6 - ldrb r2, [r2] - mov r0, r10 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - ldrh r0, [r4, 0xA] - ldr r1, _0815CD68 @ =0x000003ff - ands r1, r0 - ldrh r2, [r3, 0x3C] - ldr r0, _0815CD6C @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r3, 0x3C] - adds r3, 0x3D - movs r0, 0x3 - ldrb r1, [r4, 0x7] - ands r1, r0 - lsls r1, 2 - ldrb r2, [r3] - mov r0, r9 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - ldrb r2, [r4, 0x4] - lsls r2, 4 - movs r1, 0xF - ands r0, r1 - orrs r0, r2 - strb r0, [r3] - ldrb r0, [r4, 0x8] - adds r7, r0 - adds r6, 0x1 - adds r5, 0x1 - cmp r6, r8 - bcc _0815CC72 -_0815CCFA: - subs r5, 0x1 - ldr r0, _0815CD5C @ =gMain - lsls r3, r5, 3 - adds r3, r0 - movs r2, 0xC - ldrsh r1, [r4, r2] - ldrb r0, [r4, 0x8] - subs r1, r0 - ldr r2, _0815CD60 @ =0x000001ff - adds r0, r2, 0 - ands r1, r0 - ldrh r2, [r3, 0x3A] - ldr r0, _0815CD64 @ =0xfffffe00 - ands r0, r2 - orrs r0, r1 - strh r0, [r3, 0x3A] - adds r2, r3, 0 - adds r2, 0x39 - ldrb r1, [r2] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2] - ldrb r0, [r4, 0x9] - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 1 - ldrh r4, [r4, 0xA] - adds r1, r4 - ldr r2, _0815CD68 @ =0x000003ff - adds r0, r2, 0 - ands r1, r0 - ldrh r2, [r3, 0x3C] - ldr r0, _0815CD6C @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r3, 0x3C] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0815CD58: .4byte gMain + 0x38 -_0815CD5C: .4byte gMain -_0815CD60: .4byte 0x000001ff -_0815CD64: .4byte 0xfffffe00 -_0815CD68: .4byte 0x000003ff -_0815CD6C: .4byte 0xfffffc00 - thumb_func_end sub_815CC28 - - thumb_func_start sub_815CD70 -sub_815CD70: @ 815CD70 - push {r4-r6,lr} - adds r3, r0, 0 - adds r4, r1, 0 - ldr r0, _0815CDA0 @ =gUnknown_203F454 - ldr r1, [r0] - adds r6, r0, 0 - cmp r1, 0 - beq _0815CDD4 - ldr r2, [r1, 0x4] - lsls r1, r3, 3 - subs r0, r1, r3 - lsls r0, 2 - adds r2, r0, r2 - ldrb r0, [r2] - adds r5, r1, 0 - cmp r0, 0 - beq _0815CDD4 - str r4, [r2, 0x18] - cmp r4, 0 - bge _0815CDA4 - movs r2, 0x1 - negs r4, r4 - b _0815CDA6 - .align 2, 0 -_0815CDA0: .4byte gUnknown_203F454 -_0815CDA4: - movs r2, 0 -_0815CDA6: - ldr r0, [r6] - ldr r1, [r0, 0x4] - subs r0, r5, r3 - lsls r0, 2 - adds r0, r1 - ldrb r3, [r0, 0x2] - cmp r3, 0x1 - beq _0815CDC6 - cmp r3, 0x1 - ble _0815CDBE - cmp r3, 0x2 - beq _0815CDCE -_0815CDBE: - adds r1, r4, 0 - bl sub_815CDDC - b _0815CDD4 -_0815CDC6: - adds r1, r4, 0 - bl sub_815CE90 - b _0815CDD4 -_0815CDCE: - adds r1, r4, 0 - bl sub_815CFEC -_0815CDD4: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_815CD70 - - thumb_func_start sub_815CDDC -sub_815CDDC: @ 815CDDC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - mov r8, r0 - mov r9, r1 - str r2, [sp] - ldr r5, [r0, 0x14] - ldrb r7, [r0, 0x1] - ldr r0, _0815CE60 @ =gMain - mov r10, r0 - cmp r5, 0 - beq _0815CE46 - lsls r0, r7, 3 - adds r0, 0x3C - mov r1, r10 - adds r6, r0, r1 -_0815CE02: - mov r0, r9 - adds r1, r5, 0 - bl __udivsi3 - adds r4, r0, 0 - adds r0, r4, 0 - muls r0, r5 - mov r2, r9 - subs r2, r0 - mov r9, r2 - adds r0, r5, 0 - movs r1, 0xA - bl __udivsi3 - adds r5, r0, 0 - mov r1, r8 - ldrb r0, [r1, 0x9] - adds r1, r4, 0 - muls r1, r0 - mov r2, r8 - ldrh r2, [r2, 0xA] - adds r1, r2 - ldr r2, _0815CE64 @ =0x000003ff - adds r0, r2, 0 - ands r1, r0 - ldrh r0, [r6] - ldr r2, _0815CE68 @ =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r6] - adds r6, 0x8 - adds r7, 0x1 - cmp r5, 0 - bne _0815CE02 -_0815CE46: - ldr r0, [sp] - cmp r0, 0 - beq _0815CE6C - lsls r0, r7, 3 - add r0, r10 - adds r0, 0x39 - ldrb r2, [r0] - movs r1, 0x4 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - b _0815CE80 - .align 2, 0 -_0815CE60: .4byte gMain -_0815CE64: .4byte 0x000003ff -_0815CE68: .4byte 0xfffffc00 -_0815CE6C: - lsls r2, r7, 3 - add r2, r10 - adds r2, 0x39 - ldrb r1, [r2] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2] -_0815CE80: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_815CDDC - - thumb_func_start sub_815CE90 -sub_815CE90: @ 815CE90 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r6, r0, 0 - mov r8, r1 - str r2, [sp] - ldr r5, [r6, 0x14] - ldr r3, _0815CF38 @ =gUnknown_3002078 - ldrb r0, [r6, 0x1] - str r0, [r3] - ldr r2, _0815CF3C @ =gUnknown_300207C - movs r0, 0 - str r0, [r2] - ldr r1, _0815CF40 @ =gUnknown_3002080 - subs r0, 0x1 - str r0, [r1] - adds r7, r3, 0 - mov r10, r1 - ldr r0, _0815CF44 @ =gMain - mov r9, r0 - cmp r5, 0 - beq _0815CF78 -_0815CEC2: - mov r0, r8 - adds r1, r5, 0 - bl __udivsi3 - adds r4, r0, 0 - adds r0, r4, 0 - muls r0, r5 - mov r1, r8 - subs r1, r0 - mov r8, r1 - adds r0, r5, 0 - movs r1, 0xA - bl __udivsi3 - adds r5, r0, 0 - cmp r4, 0 - bne _0815CEF4 - mov r2, r10 - ldr r1, [r2] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0815CEF4 - cmp r5, 0 - bne _0815CF50 -_0815CEF4: - ldr r2, [r7] - lsls r2, 3 - add r2, r9 - ldrb r0, [r6, 0x9] - adds r3, r4, 0 - muls r3, r0 - ldrh r4, [r6, 0xA] - adds r3, r4 - ldr r1, _0815CF48 @ =0x000003ff - adds r0, r1, 0 - ands r3, r0 - ldrh r0, [r2, 0x3C] - ldr r4, _0815CF4C @ =0xfffffc00 - adds r1, r4, 0 - ands r0, r1 - orrs r0, r3 - strh r0, [r2, 0x3C] - adds r2, 0x39 - ldrb r0, [r2] - movs r1, 0x4 - negs r1, r1 - ands r0, r1 - strb r0, [r2] - mov r2, r10 - ldr r1, [r2] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0815CF66 - ldr r4, _0815CF3C @ =gUnknown_300207C - ldr r0, [r4] - str r0, [r2] - b _0815CF66 - .align 2, 0 -_0815CF38: .4byte gUnknown_3002078 -_0815CF3C: .4byte gUnknown_300207C -_0815CF40: .4byte gUnknown_3002080 -_0815CF44: .4byte gMain -_0815CF48: .4byte 0x000003ff -_0815CF4C: .4byte 0xfffffc00 -_0815CF50: - ldr r0, [r7] - lsls r0, 3 - add r0, r9 - adds r0, 0x39 - ldrb r1, [r0] - movs r2, 0x4 - negs r2, r2 - ands r1, r2 - movs r2, 0x2 - orrs r1, r2 - strb r1, [r0] -_0815CF66: - ldr r0, [r7] - adds r0, 0x1 - str r0, [r7] - ldr r4, _0815CFB8 @ =gUnknown_300207C - ldr r0, [r4] - adds r0, 0x1 - str r0, [r4] - cmp r5, 0 - bne _0815CEC2 -_0815CF78: - ldr r0, [sp] - cmp r0, 0 - beq _0815CFC4 - ldr r1, [r7] - lsls r1, 3 - add r1, r9 - adds r1, 0x39 - ldrb r2, [r1] - movs r0, 0x4 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldr r3, [r7] - lsls r3, 3 - add r3, r9 - movs r1, 0xC - ldrsh r2, [r6, r1] - mov r4, r10 - ldr r0, [r4] - subs r0, 0x1 - ldrb r1, [r6, 0x8] - muls r0, r1 - adds r2, r0 - ldr r1, _0815CFBC @ =0x000001ff - adds r0, r1, 0 - ands r2, r0 - ldrh r1, [r3, 0x3A] - ldr r0, _0815CFC0 @ =0xfffffe00 - ands r0, r1 - orrs r0, r2 - strh r0, [r3, 0x3A] - b _0815CFDA - .align 2, 0 -_0815CFB8: .4byte gUnknown_300207C -_0815CFBC: .4byte 0x000001ff -_0815CFC0: .4byte 0xfffffe00 -_0815CFC4: - ldr r0, [r7] - lsls r0, 3 - add r0, r9 - adds r0, 0x39 - ldrb r2, [r0] - movs r1, 0x4 - negs r1, r1 - ands r1, r2 - movs r2, 0x2 - orrs r1, r2 - strb r1, [r0] -_0815CFDA: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_815CE90 - - thumb_func_start sub_815CFEC -sub_815CFEC: @ 815CFEC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - mov r8, r0 - mov r10, r1 - str r2, [sp] - ldr r5, [r0, 0x14] - ldrb r3, [r0, 0x1] - movs r0, 0 - str r0, [sp, 0x4] - mov r9, r0 - cmp r5, 0 - beq _0815D086 -_0815D00C: - lsls r0, r3, 3 - adds r1, r0, 0 - adds r1, 0x39 - ldr r2, _0815D0D0 @ =gMain - adds r7, r1, r2 - adds r0, 0x3C - adds r6, r0, r2 -_0815D01A: - mov r0, r10 - adds r1, r5, 0 - str r3, [sp, 0x8] - bl __udivsi3 - adds r4, r0, 0 - adds r0, r4, 0 - muls r0, r5 - mov r1, r10 - subs r1, r0 - mov r10, r1 - adds r0, r5, 0 - movs r1, 0xA - bl __udivsi3 - adds r5, r0, 0 - ldr r3, [sp, 0x8] - cmp r4, 0 - bne _0815D04A - ldr r2, [sp, 0x4] - cmp r2, 0 - bne _0815D04A - cmp r5, 0 - bne _0815D00C -_0815D04A: - movs r0, 0x1 - str r0, [sp, 0x4] - mov r1, r8 - ldrb r0, [r1, 0x9] - adds r2, r4, 0 - muls r2, r0 - ldrh r4, [r1, 0xA] - adds r2, r4 - ldr r1, _0815D0D4 @ =0x000003ff - adds r0, r1, 0 - ands r2, r0 - ldrh r0, [r6] - ldr r4, _0815D0D8 @ =0xfffffc00 - adds r1, r4, 0 - ands r0, r1 - orrs r0, r2 - strh r0, [r6] - ldrb r0, [r7] - movs r2, 0x4 - negs r2, r2 - adds r1, r2, 0 - ands r0, r1 - strb r0, [r7] - adds r7, 0x8 - adds r6, 0x8 - adds r3, 0x1 - movs r4, 0x1 - add r9, r4 - cmp r5, 0 - bne _0815D01A -_0815D086: - mov r0, r8 - ldrb r0, [r0, 0x3] - cmp r9, r0 - bge _0815D0B6 - ldr r1, _0815D0D0 @ =gMain - movs r5, 0x4 - negs r5, r5 - movs r4, 0x2 - lsls r0, r3, 3 - adds r0, 0x39 - adds r2, r0, r1 -_0815D09C: - ldrb r1, [r2] - adds r0, r5, 0 - ands r0, r1 - orrs r0, r4 - strb r0, [r2] - adds r2, 0x8 - adds r3, 0x1 - movs r1, 0x1 - add r9, r1 - mov r0, r8 - ldrb r0, [r0, 0x3] - cmp r9, r0 - blt _0815D09C -_0815D0B6: - ldr r1, [sp] - cmp r1, 0 - beq _0815D0DC - lsls r0, r3, 3 - ldr r2, _0815D0D0 @ =gMain - adds r0, r2 - adds r0, 0x39 - ldrb r2, [r0] - movs r1, 0x4 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - b _0815D0F2 - .align 2, 0 -_0815D0D0: .4byte gMain -_0815D0D4: .4byte 0x000003ff -_0815D0D8: .4byte 0xfffffc00 -_0815D0DC: - lsls r2, r3, 3 - ldr r4, _0815D104 @ =gMain - adds r2, r4 - adds r2, 0x39 - ldrb r1, [r2] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x2 - orrs r0, r1 - strb r0, [r2] -_0815D0F2: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0815D104: .4byte gMain - thumb_func_end sub_815CFEC - - thumb_func_start sub_815D108 -sub_815D108: @ 815D108 - push {r4-r7,lr} - adds r4, r0, 0 - ldr r0, _0815D1A0 @ =gUnknown_203F454 - ldr r0, [r0] - cmp r0, 0 - beq _0815D19A - ldr r2, [r0, 0x4] - lsls r1, r4, 3 - subs r0, r1, r4 - lsls r0, 2 - adds r2, r0, r2 - ldrb r0, [r2] - adds r5, r1, 0 - cmp r0, 0 - beq _0815D19A - ldrb r3, [r2, 0x3] - adds r0, r3, 0x1 - ldrb r2, [r2, 0x1] - cmp r0, 0 - beq _0815D152 - ldr r1, _0815D1A4 @ =gMain - movs r7, 0x4 - negs r7, r7 - movs r6, 0x2 - adds r3, r0, 0 - lsls r0, r2, 3 - adds r0, 0x39 - adds r2, r0, r1 -_0815D140: - ldrb r1, [r2] - adds r0, r7, 0 - ands r0, r1 - orrs r0, r6 - strb r0, [r2] - subs r3, 0x1 - adds r2, 0x8 - cmp r3, 0 - bne _0815D140 -_0815D152: - adds r0, r4, 0 - bl sub_815D29C - cmp r0, 0 - bne _0815D16E - ldr r0, _0815D1A0 @ =gUnknown_203F454 - ldr r0, [r0] - ldr r1, [r0, 0x4] - subs r0, r5, r4 - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x10] - bl FreeSpriteTilesByTag -_0815D16E: - adds r0, r4, 0 - bl sub_815D2E0 - cmp r0, 0 - bne _0815D18A - ldr r0, _0815D1A0 @ =gUnknown_203F454 - ldr r0, [r0] - ldr r1, [r0, 0x4] - subs r0, r5, r4 - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x12] - bl FreeSpritePaletteByTag -_0815D18A: - ldr r0, _0815D1A0 @ =gUnknown_203F454 - ldr r0, [r0] - ldr r1, [r0, 0x4] - subs r0, r5, r4 - lsls r0, 2 - adds r0, r1 - movs r1, 0 - strb r1, [r0] -_0815D19A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0815D1A0: .4byte gUnknown_203F454 -_0815D1A4: .4byte gMain - thumb_func_end sub_815D108 - - thumb_func_start sub_815D1A8 -sub_815D1A8: @ 815D1A8 - push {r4-r7,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldr r0, _0815D1FC @ =gUnknown_203F454 - ldr r1, [r0] - adds r7, r0, 0 - cmp r1, 0 - beq _0815D238 - ldr r2, [r1, 0x4] - lsls r1, r4, 3 - subs r0, r1, r4 - lsls r0, 2 - adds r2, r0, r2 - ldrb r0, [r2] - adds r6, r1, 0 - cmp r0, 0 - beq _0815D238 - ldrb r3, [r2, 0x3] - adds r1, r3, 0x1 - ldrb r0, [r2, 0x1] - cmp r5, 0 - beq _0815D204 - cmp r1, 0 - beq _0815D238 - ldr r1, _0815D200 @ =gMain - movs r5, 0x4 - negs r5, r5 - movs r4, 0x2 - adds r3, 0x1 - lsls r0, 3 - adds r0, 0x39 - adds r2, r0, r1 -_0815D1E8: - ldrb r1, [r2] - adds r0, r5, 0 - ands r0, r1 - orrs r0, r4 - strb r0, [r2] - subs r3, 0x1 - adds r2, 0x8 - cmp r3, 0 - bne _0815D1E8 - b _0815D238 - .align 2, 0 -_0815D1FC: .4byte gUnknown_203F454 -_0815D200: .4byte gMain -_0815D204: - cmp r1, 0 - beq _0815D226 - ldr r1, _0815D240 @ =gMain - movs r5, 0x4 - negs r5, r5 - adds r3, 0x1 - lsls r0, 3 - adds r0, 0x39 - adds r2, r0, r1 -_0815D216: - ldrb r1, [r2] - adds r0, r5, 0 - ands r0, r1 - strb r0, [r2] - subs r3, 0x1 - adds r2, 0x8 - cmp r3, 0 - bne _0815D216 -_0815D226: - ldr r0, [r7] - ldr r1, [r0, 0x4] - subs r0, r6, r4 - lsls r0, 2 - adds r0, r1 - ldr r1, [r0, 0x18] - adds r0, r4, 0 - bl sub_815CD70 -_0815D238: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0815D240: .4byte gMain - thumb_func_end sub_815D1A8 - - thumb_func_start sub_815D244 -sub_815D244: @ 815D244 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r5, 0x40 - movs r3, 0 - ldr r0, _0815D270 @ =gUnknown_203F454 - ldr r0, [r0] - ldr r2, [r0] - cmp r3, r2 - bcs _0815D286 - ldr r1, [r0, 0x4] -_0815D25A: - ldrb r0, [r1] - cmp r0, 0 - bne _0815D274 - ldrb r0, [r1, 0x1] - cmp r0, 0xFF - beq _0815D27E - ldrb r0, [r1, 0x3] - cmp r0, r4 - bhi _0815D27E - ldrb r0, [r1, 0x1] - b _0815D296 - .align 2, 0 -_0815D270: .4byte gUnknown_203F454 -_0815D274: - adds r0, r5, 0x1 - ldrb r5, [r1, 0x3] - adds r0, r5 - lsls r0, 16 - lsrs r5, r0, 16 -_0815D27E: - adds r1, 0x1C - adds r3, 0x1 - cmp r3, r2 - bcc _0815D25A -_0815D286: - adds r0, r5, r4 - adds r0, 0x1 - cmp r0, 0x80 - bgt _0815D294 - lsls r0, r5, 24 - lsrs r0, 24 - b _0815D296 -_0815D294: - movs r0, 0xFF -_0815D296: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_815D244 - - thumb_func_start sub_815D29C -sub_815D29C: @ 815D29C - push {r4-r6,lr} - adds r3, r0, 0 - movs r2, 0 - ldr r0, _0815D2CC @ =gUnknown_203F454 - ldr r0, [r0] - ldr r4, [r0] - cmp r2, r4 - bcs _0815D2D8 - ldr r1, [r0, 0x4] - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r5, r0, r1 -_0815D2B6: - ldrb r0, [r1] - cmp r0, 0 - beq _0815D2D0 - cmp r2, r3 - beq _0815D2D0 - ldrh r0, [r1, 0x10] - ldrh r6, [r5, 0x10] - cmp r0, r6 - bne _0815D2D0 - movs r0, 0x1 - b _0815D2DA - .align 2, 0 -_0815D2CC: .4byte gUnknown_203F454 -_0815D2D0: - adds r1, 0x1C - adds r2, 0x1 - cmp r2, r4 - bcc _0815D2B6 -_0815D2D8: - movs r0, 0 -_0815D2DA: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_815D29C - - thumb_func_start sub_815D2E0 -sub_815D2E0: @ 815D2E0 - push {r4-r6,lr} - adds r3, r0, 0 - movs r2, 0 - ldr r0, _0815D310 @ =gUnknown_203F454 - ldr r0, [r0] - ldr r4, [r0] - cmp r2, r4 - bcs _0815D31C - ldr r1, [r0, 0x4] - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - adds r5, r0, r1 -_0815D2FA: - ldrb r0, [r1] - cmp r0, 0 - beq _0815D314 - cmp r2, r3 - beq _0815D314 - ldrh r0, [r1, 0x12] - ldrh r6, [r5, 0x12] - cmp r0, r6 - bne _0815D314 - movs r0, 0x1 - b _0815D31E - .align 2, 0 -_0815D310: .4byte gUnknown_203F454 -_0815D314: - adds r1, 0x1C - adds r2, 0x1 - cmp r2, r4 - bcc _0815D2FA -_0815D31C: - movs r0, 0 -_0815D31E: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_815D2E0 - - thumb_func_start sub_815D324 -sub_815D324: @ 815D324 - ldr r2, _0815D330 @ =gUnknown_8479658 - lsls r0, 2 - adds r1, r0 - adds r1, r2 - ldrb r0, [r1] - bx lr - .align 2, 0 -_0815D330: .4byte gUnknown_8479658 - thumb_func_end sub_815D324 - - .align 2, 0 @ Don't pad with nop. diff --git a/data/data_8471F00.s b/data/data_8471F00.s index 9c616b37c..e8b51cf69 100644 --- a/data/data_8471F00.s +++ b/data/data_8471F00.s @@ -256,8 +256,11 @@ gUnknown_84795B8:: @ 84795B8 gUnknown_84795C8:: @ 84795C8 .incbin "baserom.gba", 0x4795C8, 0x90 -gUnknown_8479658:: @ 8479658 - .incbin "baserom.gba", 0x479658, 0x600 + .section .rodata.8479668 + + .align 2 +gUnknown_8479668:: @ 8479668 + .incbin "baserom.gba", 0x479668, 0x5F0 gUnknown_8479C58:: @ 8479C58 .incbin "baserom.gba", 0x479C58, 0x30 diff --git a/include/decompress.h b/include/decompress.h index 9a2093b9f..19b507525 100644 --- a/include/decompress.h +++ b/include/decompress.h @@ -36,5 +36,6 @@ void LoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src u32 sub_8034974(const u8 *ptr); void sub_800F034(const struct CompressedSpriteSheet *src); +u32 GetDecompressedDataSize(const u8 *ptr); #endif // GUARD_DECOMPRESS_H diff --git a/include/unk_815C980.h b/include/unk_815C980.h new file mode 100644 index 000000000..78d4bd73b --- /dev/null +++ b/include/unk_815C980.h @@ -0,0 +1,24 @@ +#ifndef GUARD_UNK_815C980_H +#define GUARD_UNK_815C980_H + +struct UnkStruct3 +{ + u8 field_0_0:2; + u8 shape:2; + u8 size:2; + u8 priority:2; + u8 field_1; + u8 xDelta; + s16 x; + s16 y; + const struct SpriteSheet *spriteSheet; + const struct SpritePalette *spritePal; +}; + +void sub_815C9F4(void); +void sub_815D108(u32 id); +void sub_815CD70(u32 id, s32 arg1); +u8 sub_815D324(u32 shape, u32 size); +bool32 sub_815CA40(u32 id, s32 arg1, const struct UnkStruct3 *arg2); + +#endif //GUARD_UNK_815C980_H diff --git a/ld_script.txt b/ld_script.txt index ff20df156..1974057d7 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -261,8 +261,8 @@ SECTIONS { src/dodrio_berry_picking_2.o(.text); asm/dodrio_berry_picking_2.o(.text); asm/teachy_tv.o(.text); - asm/unk_815C27C.o(.text); - asm/unk_815C980.o(.text); + asm/ereader_helpers.o(.text); + src/unk_815C980.o(.text); asm/ss_anne.o(.text); asm/cereader_tool.o(.text); src/trainer_tower.o(.text); @@ -427,6 +427,8 @@ SECTIONS { data/data_8468C98.o(.rodata); src/quest_log_8150454.o(.rodata); data/data_8471F00.o(.rodata); + src/unk_815C980.o(.rodata); + data/data_8471F00.o(.rodata.8479668); src/trainer_tower.o(.rodata); data/data_8471F00.o(.rodata.after_trainer_tower); src/mystery_event_msg.o(.rodata); diff --git a/src/unk_815C980.c b/src/unk_815C980.c new file mode 100644 index 000000000..9d0dd3341 --- /dev/null +++ b/src/unk_815C980.c @@ -0,0 +1,436 @@ +#include "global.h" +#include "malloc.h" +#include "decompress.h" +#include "unk_815C980.h" +#include "main.h" +#include "battle.h" + +struct UnkStruct2 +{ + bool8 isActive; + u8 firstOamId; + u8 field_2; + u8 oamCount; + u8 palTagIndex; + u8 size; + u8 shape; + u8 priority; + u8 xDelta; + u8 field_9; + u16 tileStart; + s16 x; + s16 y; + u16 tileTag; + u16 palTag; + u32 field_14; + s32 field_18; +}; + +struct UnkStruct1 +{ + u32 count; + struct UnkStruct2 *array; +}; + +// this file's functions +static u8 sub_815D244(u8 arg0);; +static void sub_815CC28(struct UnkStruct2 *arg0); +static void sub_815CDDC(struct UnkStruct2 *arg0, s32 arg1, bool32 arg2); +static void sub_815CE90(struct UnkStruct2 *arg0, s32 arg1, bool32 arg2); +static void sub_815CFEC(struct UnkStruct2 *arg0, s32 arg1, bool32 arg2); +static bool32 SharesTileWithAnyActive(u32 id); +static bool32 SharesPalWithAnyActive(u32 id); +static void sub_8035648(void); + +// ewram +static EWRAM_DATA struct UnkStruct1 *gUnknown_203F454 = {0}; + +// const rom data +static const u8 gUnknown_8479658[][4] = +{ + {0x01, 0x04, 0x10, 0x40}, + {0x02, 0x04, 0x08, 0x20}, + {0x02, 0x04, 0x08, 0x20}, + {0x00, 0x00, 0x00, 0x00} +}; + +// code +bool32 sub_815C980(u32 count) +{ + u32 i; + + if (gUnknown_203F454 != NULL) + sub_815C9F4(); + + gUnknown_203F454 = Alloc(sizeof(*gUnknown_203F454)); + if (gUnknown_203F454 == NULL) + return FALSE; + + gUnknown_203F454->array = Alloc(sizeof(struct UnkStruct2) * count); + if (gUnknown_203F454->array == NULL) + { + Free(gUnknown_203F454); + return FALSE; + } + + gUnknown_203F454->count = count; + for (i = 0; i < count; i++) + { + gUnknown_203F454->array[i].isActive = FALSE; + gUnknown_203F454->array[i].firstOamId = 0xFF; + } + + return TRUE; +} + +void sub_815C9F4(void) +{ + if (gUnknown_203F454 != NULL) + { + if (gUnknown_203F454->array != NULL) + { + u32 i; + + for (i = 0; i < gUnknown_203F454->count; i++) + sub_815D108(i); + + Free(gUnknown_203F454->array); + } + + FREE_AND_SET_NULL(gUnknown_203F454); + } +} + +bool32 sub_815CA40(u32 id, s32 arg1, const struct UnkStruct3 *arg2) +{ + u32 i; + + if (gUnknown_203F454 == NULL) + return FALSE; + if (gUnknown_203F454->array[id].isActive) + return FALSE; + + gUnknown_203F454->array[id].firstOamId = sub_815D244(arg2->field_1); + if (gUnknown_203F454->array[id].firstOamId == 0xFF) + return FALSE; + + gUnknown_203F454->array[id].tileStart = GetSpriteTileStartByTag(arg2->spriteSheet->tag); + if (gUnknown_203F454->array[id].tileStart == 0xFFFF) + { + if (arg2->spriteSheet->size != 0) + { + gUnknown_203F454->array[id].tileStart = LoadSpriteSheet(arg2->spriteSheet); + } + else + { + struct CompressedSpriteSheet compObjectPic; + + compObjectPic = *(struct CompressedSpriteSheet*)(arg2->spriteSheet); + compObjectPic.size = GetDecompressedDataSize(arg2->spriteSheet->data); + gUnknown_203F454->array[id].tileStart = LoadCompressedObjectPic(&compObjectPic); + } + + if (gUnknown_203F454->array[id].tileStart == 0xFFFF) + return FALSE; + } + + gUnknown_203F454->array[id].palTagIndex = IndexOfSpritePaletteTag(arg2->spritePal->tag); + if (gUnknown_203F454->array[id].palTagIndex == 0xFF) + gUnknown_203F454->array[id].palTagIndex = LoadSpritePalette(arg2->spritePal); + + gUnknown_203F454->array[id].field_2 = arg2->field_0_0; + gUnknown_203F454->array[id].oamCount = arg2->field_1; + gUnknown_203F454->array[id].x = arg2->x; + gUnknown_203F454->array[id].y = arg2->y; + gUnknown_203F454->array[id].shape = arg2->shape; + gUnknown_203F454->array[id].size = arg2->size; + gUnknown_203F454->array[id].priority = arg2->priority; + gUnknown_203F454->array[id].xDelta = arg2->xDelta; + gUnknown_203F454->array[id].field_9 = sub_815D324(arg2->shape, arg2->size); + gUnknown_203F454->array[id].tileTag = arg2->spriteSheet->tag; + gUnknown_203F454->array[id].palTag = arg2->spritePal->tag; + gUnknown_203F454->array[id].isActive = TRUE; + gUnknown_203F454->array[id].field_14 = 1; + + for (i = 1; i < arg2->field_1; i++) + gUnknown_203F454->array[id].field_14 *= 10; + + sub_815CC28(&gUnknown_203F454->array[id]); + sub_815CD70(id, arg1); + + return TRUE; +} + +static void sub_815CC28(struct UnkStruct2 *arg0) +{ + u32 i; + u32 oamId = arg0->firstOamId; + u32 x = arg0->x; + u32 oamCount = arg0->oamCount + 1; + + CpuFill16(0, &gMain.oamBuffer[oamId], sizeof(struct OamData) * oamCount); + for (i = 0, oamId = arg0->firstOamId; i < oamCount; i++, oamId++) + { + gMain.oamBuffer[oamId].y = arg0->y; + gMain.oamBuffer[oamId].x = x; + gMain.oamBuffer[oamId].shape = arg0->shape; + gMain.oamBuffer[oamId].size = arg0->size; + gMain.oamBuffer[oamId].tileNum = arg0->tileStart; + gMain.oamBuffer[oamId].priority = arg0->priority; + gMain.oamBuffer[oamId].paletteNum = arg0->palTagIndex; + + x += arg0->xDelta; + } + + oamId--; + gMain.oamBuffer[oamId].x = arg0->x - arg0->xDelta; + gMain.oamBuffer[oamId].affineMode = 2; + gMain.oamBuffer[oamId].tileNum = arg0->tileStart + (arg0->field_9 * 10); +} + +void sub_815CD70(u32 id, s32 arg1) +{ + bool32 r2; + + if (gUnknown_203F454 == NULL) + return; + if (!gUnknown_203F454->array[id].isActive) + return; + + gUnknown_203F454->array[id].field_18 = arg1; + if (arg1 < 0) + { + r2 = TRUE; + arg1 *= -1; + } + else + { + r2 = FALSE; + } + + switch (gUnknown_203F454->array[id].field_2) + { + case 0: + default: + sub_815CDDC(&gUnknown_203F454->array[id], arg1, r2); + break; + case 1: + sub_815CE90(&gUnknown_203F454->array[id], arg1, r2); + break; + case 2: + sub_815CFEC(&gUnknown_203F454->array[id], arg1, r2); + break; + } +} + +static void sub_815CDDC(struct UnkStruct2 *arg0, s32 arg1, bool32 arg2) +{ + u32 r5 = arg0->field_14; + u32 oamId = arg0->firstOamId; + + while (r5 != 0) + { + u32 r4 = arg1 / r5; + arg1 -= (r4 * r5); + r5 /= 10; + + gMain.oamBuffer[oamId].tileNum = (r4 * arg0->field_9) + arg0->tileStart; + oamId++; + } + + if (arg2) + gMain.oamBuffer[oamId].affineMode = 0; + else + gMain.oamBuffer[oamId].affineMode = 2; +} + +static void sub_815CE90(struct UnkStruct2 *arg0, s32 arg1, bool32 arg2) +{ + u32 r5 = arg0->field_14; + static int gUnknown_3002078; + static int gUnknown_300207C; + static int gUnknown_3002080; + + gUnknown_3002078 = arg0->firstOamId; + gUnknown_300207C = 0; + gUnknown_3002080 = -1; + + while (r5 != 0) + { + u32 r4 = arg1 / r5; + arg1 -= (r4 * r5); + r5 /= 10; + + if (r4 != 0 || gUnknown_3002080 != -1 || r5 == 0) + { + gMain.oamBuffer[gUnknown_3002078].tileNum = (r4 * arg0->field_9) + arg0->tileStart; + gMain.oamBuffer[gUnknown_3002078].affineMode = 0; + + if (gUnknown_3002080 == -1) + gUnknown_3002080 = gUnknown_300207C; + } + else + { + gMain.oamBuffer[gUnknown_3002078].affineMode = 2; + } + + gUnknown_3002078++; + gUnknown_300207C++; + } + + if (arg2) + { + gMain.oamBuffer[gUnknown_3002078].affineMode = 0; + gMain.oamBuffer[gUnknown_3002078].x = arg0->x + ((gUnknown_3002080 - 1) * arg0->xDelta); + } + else + { + gMain.oamBuffer[gUnknown_3002078].affineMode = 2; + } +} + +static void sub_815CFEC(struct UnkStruct2 *arg0, s32 arg1, bool32 arg2) +{ + u32 r5 = arg0->field_14; + u32 oamId = arg0->firstOamId; + u32 var_28 = 0; + s32 r9 = 0; + + while (r5 != 0) + { + u32 r4 = arg1 / r5; + arg1 -= (r4 * r5); + r5 /= 10; + + if (r4 != 0 || var_28 != 0 || r5 == 0) + { + var_28 = 1; + gMain.oamBuffer[oamId].tileNum = (r4 * arg0->field_9) + arg0->tileStart; + gMain.oamBuffer[oamId].affineMode = 0; + + oamId++; + r9++; + } + } + + while (r9 < arg0->oamCount) + { + gMain.oamBuffer[oamId].affineMode = 2; + oamId++; + r9++; + } + + if (arg2) + gMain.oamBuffer[oamId].affineMode = 0; + else + gMain.oamBuffer[oamId].affineMode = 2; +} + +void sub_815D108(u32 id) +{ + s32 oamId, oamCount, i; + + if (gUnknown_203F454 == NULL) + return; + if (!gUnknown_203F454->array[id].isActive) + return; + + oamCount = gUnknown_203F454->array[id].oamCount + 1; + oamId = gUnknown_203F454->array[id].firstOamId; + + for (i = 0; i < oamCount; i++, oamId++) + gMain.oamBuffer[oamId].affineMode = 2; + + if (!SharesTileWithAnyActive(id)) + FreeSpriteTilesByTag(gUnknown_203F454->array[id].tileTag); + if (!SharesPalWithAnyActive(id)) + FreeSpritePaletteByTag(gUnknown_203F454->array[id].palTag); + + gUnknown_203F454->array[id].isActive = FALSE; +} + +void sub_815D1A8(u32 id, bool32 arg1) +{ + s32 oamId, oamCount, i; + + if (gUnknown_203F454 == NULL) + return; + if (!gUnknown_203F454->array[id].isActive) + return; + + oamCount = gUnknown_203F454->array[id].oamCount + 1; + oamId = gUnknown_203F454->array[id].firstOamId; + if (arg1) + { + for (i = 0; i < oamCount; i++, oamId++) + gMain.oamBuffer[oamId].affineMode = 2; + } + else + { + for (i = 0; i < oamCount; i++, oamId++) + gMain.oamBuffer[oamId].affineMode = 0; + + sub_815CD70(id, gUnknown_203F454->array[id].field_18); + } +} + +static u8 sub_815D244(u8 arg0) +{ + u32 i; + u16 oamCount = 64; + + for (i = 0; i < gUnknown_203F454->count; i++) + { + if (!gUnknown_203F454->array[i].isActive) + { + if (gUnknown_203F454->array[i].firstOamId != 0xFF && gUnknown_203F454->array[i].oamCount <= arg0) + return gUnknown_203F454->array[i].firstOamId; + } + else + { + oamCount += 1 + gUnknown_203F454->array[i].oamCount; + } + } + + if (oamCount + arg0 + 1 > 128) + return 0xFF; + else + return oamCount; +} + +static bool32 SharesTileWithAnyActive(u32 id) +{ + u32 i; + + for (i = 0; i < gUnknown_203F454->count; i++) + { + if (gUnknown_203F454->array[i].isActive && i != id + && gUnknown_203F454->array[i].tileTag == gUnknown_203F454->array[id].tileTag) + { + return TRUE; + } + } + + return FALSE; +} + +static bool32 SharesPalWithAnyActive(u32 id) +{ + u32 i; + + for (i = 0; i < gUnknown_203F454->count; i++) + { + if (gUnknown_203F454->array[i].isActive && i != id + && gUnknown_203F454->array[i].palTag == gUnknown_203F454->array[id].palTag) + { + return TRUE; + } + } + + return FALSE; +} + +u8 sub_815D324(u32 shape, u32 size) +{ + return gUnknown_8479658[shape][size]; +} diff --git a/sym_bss.txt b/sym_bss.txt index 88c464566..556a53add 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -230,15 +230,10 @@ gUnknown_3002072: @ 3002072 gUnknown_3002074: @ 3002074 .space 0x4 -gUnknown_3002078: @ 3002078 - .space 0x4 - -gUnknown_300207C: @ 300207C - .space 0x4 - -gUnknown_3002080: @ 3002080 - .space 0x8 + .align 3 + .include "src/unk_815C980.o" + .align 3 .include "asm/m4a_1.o" .include "src/agb_flash.o" diff --git a/sym_ewram.txt b/sym_ewram.txt index 4a8ceab1b..a5151ebc0 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -1647,9 +1647,9 @@ gUnknown_203F44A: @ 203F44A gUnknown_203F450: @ 203F450 .space 0x4 -gUnknown_203F454: @ 203F454 - .space 0x4 - + .align 2 + .include "src/unk_815C980.o" + .align 2 .include "src/trainer_tower.o" gUnknown_203F460: @ 203F460 -- cgit v1.2.3