diff options
-rw-r--r-- | asm/berry_crush_2.s | 8 | ||||
-rw-r--r-- | asm/decompress.s | 6 | ||||
-rw-r--r-- | asm/dodrio_berry_picking_2.s | 734 | ||||
-rw-r--r-- | asm/ereader_helpers.s (renamed from asm/unk_815C27C.s) | 0 | ||||
-rw-r--r-- | asm/link.s | 30 | ||||
-rw-r--r-- | asm/link_rfu_2.s | 52 | ||||
-rw-r--r-- | asm/link_rfu_3.s | 8 | ||||
-rw-r--r-- | asm/pokemon_jump.s | 4 | ||||
-rw-r--r-- | asm/pokemon_jump_2.s | 16 | ||||
-rw-r--r-- | asm/unk_8159F40.s | 1623 | ||||
-rw-r--r-- | asm/unk_815C980.s | 1314 | ||||
-rw-r--r-- | data/data_8471F00.s | 7 | ||||
-rw-r--r-- | include/decompress.h | 1 | ||||
-rw-r--r-- | include/global.fieldmap.h | 19 | ||||
-rw-r--r-- | include/global.h | 51 | ||||
-rw-r--r-- | include/link_rfu.h | 6 | ||||
-rw-r--r-- | include/unk_815C980.h | 24 | ||||
-rw-r--r-- | ld_script.txt | 10 | ||||
-rw-r--r-- | src/dodrio_berry_picking_2.c | 23 | ||||
-rw-r--r-- | src/unk_8159F40.c | 622 | ||||
-rw-r--r-- | src/unk_815C980.c | 436 | ||||
-rw-r--r-- | sym_bss.txt | 11 | ||||
-rw-r--r-- | sym_common.txt | 2 | ||||
-rw-r--r-- | sym_ewram.txt | 6 |
24 files changed, 1981 insertions, 3032 deletions
diff --git a/asm/berry_crush_2.s b/asm/berry_crush_2.s index 7477bbf9c..16f7bff79 100644 --- a/asm/berry_crush_2.s +++ b/asm/berry_crush_2.s @@ -1046,7 +1046,7 @@ sub_814C2FC: @ 814C2FC mov r10, r3 _0814C320: lsls r0, r7, 4 - ldr r1, _0814C3C4 @ =gUnknown_3003ED0 + ldr r1, _0814C3C4 @ =gRecvCmds adds r2, r0, r1 ldrh r1, [r2] movs r0, 0xFF @@ -1127,7 +1127,7 @@ _0814C320: b _0814C3D6 .align 2, 0 _0814C3C0: .4byte gUnknown_846E2E0 -_0814C3C4: .4byte gUnknown_3003ED0 +_0814C3C4: .4byte gRecvCmds _0814C3C8: adds r0, r4, r6 adds r2, r0, 0 @@ -1671,7 +1671,7 @@ sub_814C7BC: @ 814C7BC push {r4,r5,lr} adds r5, r0, 0 movs r4, 0 - ldr r3, _0814C808 @ =gUnknown_3003ED0 + ldr r3, _0814C808 @ =gRecvCmds ldrb r0, [r5, 0x9] cmp r4, r0 bcs _0814C7E0 @@ -1710,7 +1710,7 @@ _0814C7F8: strb r0, [r2] b _0814C84A .align 2, 0 -_0814C808: .4byte gUnknown_3003ED0 +_0814C808: .4byte gRecvCmds _0814C80C: adds r4, r5, 0 adds r4, 0x4E 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/dodrio_berry_picking_2.s b/asm/dodrio_berry_picking_2.s new file mode 100644 index 000000000..792dc4b0f --- /dev/null +++ b/asm/dodrio_berry_picking_2.s @@ -0,0 +1,734 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_815A61C +sub_815A61C: @ 815A61C + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x20 + ldr r4, [sp, 0x48] + lsls r4, 24 + str r4, [sp, 0x1C] + movs r4, 0x14 + adds r4, r0 + mov r9, r4 + mov r5, sp + movs r4, 0x2 + strb r4, [r5] + mov r10, sp + mov r5, r9 + ldrb r4, [r5, 0xB] + movs r7, 0xF + adds r5, r7, 0 + ands r5, r4 + mov r6, r10 + ldrb r6, [r6, 0x1] + mov r8, r6 + movs r4, 0x10 + negs r4, r4 + mov r6, r8 + ands r4, r6 + orrs r4, r5 + mov r5, r10 + strb r4, [r5, 0x1] + mov r8, sp + mov r6, r9 + ldrb r5, [r6, 0xC] + lsls r5, 4 + ands r4, r7 + orrs r4, r5 + mov r5, r8 + strb r4, [r5, 0x1] + ldrb r5, [r6, 0xD] + movs r6, 0xF + ands r5, r6 + mov r4, r10 + ldrb r4, [r4, 0x2] + mov r8, r4 + movs r4, 0x10 + negs r4, r4 + mov r6, r8 + ands r4, r6 + orrs r4, r5 + mov r5, r10 + strb r4, [r5, 0x2] + mov r8, sp + mov r6, r9 + ldrb r5, [r6, 0xE] + lsls r5, 4 + ands r4, r7 + orrs r4, r5 + mov r5, r8 + strb r4, [r5, 0x2] + ldrb r5, [r6, 0xF] + movs r6, 0xF + ands r5, r6 + mov r4, r10 + ldrb r4, [r4, 0x3] + mov r8, r4 + movs r4, 0x10 + negs r4, r4 + mov r6, r8 + ands r4, r6 + orrs r4, r5 + mov r5, r10 + strb r4, [r5, 0x3] + mov r8, sp + mov r6, r9 + ldrb r5, [r6, 0x10] + lsls r5, 4 + ands r4, r7 + orrs r4, r5 + mov r5, r8 + strb r4, [r5, 0x3] + ldrb r5, [r6, 0x11] + movs r6, 0xF + ands r5, r6 + mov r4, r10 + ldrb r4, [r4, 0x4] + mov r8, r4 + movs r4, 0x10 + negs r4, r4 + mov r6, r8 + ands r4, r6 + orrs r4, r5 + mov r5, r10 + strb r4, [r5, 0x4] + mov r8, sp + mov r6, r9 + ldrb r5, [r6, 0x12] + lsls r5, 4 + ands r4, r7 + orrs r4, r5 + mov r5, r8 + strb r4, [r5, 0x4] + ldrb r4, [r6, 0x13] + movs r6, 0xF + ands r4, r6 + mov r6, r8 + ldrb r5, [r6, 0x5] + movs r6, 0x10 + negs r6, r6 + ands r6, r5 + orrs r6, r4 + str r6, [sp, 0xC] + mov r4, r8 + strb r6, [r4, 0x5] + mov r5, sp + mov r6, r9 + ldrb r4, [r6, 0x14] + lsls r4, 4 + ldr r6, [sp, 0xC] + ands r6, r7 + orrs r6, r4 + strb r6, [r5, 0x5] + mov r7, sp + movs r4, 0x3 + mov r8, r4 + ldrb r0, [r0, 0x14] + mov r5, r8 + ands r0, r5 + ldrb r5, [r7, 0x6] + movs r6, 0x4 + negs r6, r6 + mov r10, r6 + mov r4, r10 + ands r4, r5 + orrs r4, r0 + strb r4, [r7, 0x6] + mov r5, r9 + ldrb r0, [r5, 0x1] + mov r6, r8 + ands r0, r6 + lsls r0, 2 + movs r5, 0xD + negs r5, r5 + ands r5, r4 + orrs r5, r0 + strb r5, [r7, 0x6] + mov r0, r9 + ldrb r4, [r0, 0x2] + ands r4, r6 + lsls r4, 4 + movs r0, 0x31 + negs r0, r0 + ands r0, r5 + orrs r0, r4 + strb r0, [r7, 0x6] + mov r5, sp + mov r6, r9 + ldrb r4, [r6, 0x3] + lsls r4, 6 + movs r6, 0x3F + ands r0, r6 + orrs r0, r4 + strb r0, [r5, 0x6] + mov r4, r9 + ldrb r0, [r4, 0x4] + mov r5, r8 + ands r0, r5 + ldrb r5, [r7, 0x7] + mov r4, r10 + ands r4, r5 + orrs r4, r0 + strb r4, [r7, 0x7] + mov r6, r9 + ldrb r0, [r6, 0x5] + mov r5, r8 + ands r0, r5 + lsls r0, 2 + movs r5, 0xD + negs r5, r5 + ands r5, r4 + orrs r5, r0 + strb r5, [r7, 0x7] + ldrb r4, [r6, 0x6] + mov r6, r8 + ands r4, r6 + lsls r4, 4 + movs r0, 0x31 + negs r0, r0 + ands r0, r5 + orrs r0, r4 + strb r0, [r7, 0x7] + mov r5, sp + mov r6, r9 + ldrb r4, [r6, 0x7] + lsls r4, 6 + movs r6, 0x3F + ands r0, r6 + orrs r0, r4 + strb r0, [r5, 0x7] + mov r8, sp + mov r0, r9 + ldrb r4, [r0, 0x8] + movs r7, 0x3 + adds r0, r7, 0 + ands r0, r4 + mov r4, r8 + ldrb r5, [r4, 0x8] + mov r4, r10 + ands r4, r5 + orrs r4, r0 + mov r5, r8 + strb r4, [r5, 0x8] + mov r6, r9 + ldrb r5, [r6, 0x9] + adds r0, r7, 0 + ands r0, r5 + lsls r0, 2 + movs r5, 0xD + negs r5, r5 + ands r5, r4 + orrs r5, r0 + mov r0, r8 + strb r5, [r0, 0x8] + ldrb r0, [r1] + adds r4, r7, 0 + ands r4, r0 + lsls r4, 4 + movs r0, 0x31 + negs r0, r0 + ands r0, r5 + orrs r0, r4 + mov r4, r8 + strb r0, [r4, 0x8] + mov r5, sp + ldrb r4, [r2] + lsls r4, 6 + movs r6, 0x3F + ands r0, r6 + orrs r0, r4 + strb r0, [r5, 0x8] + ldrb r4, [r3] + adds r0, r7, 0 + ands r0, r4 + ldrb r4, [r5, 0x9] + mov r6, r10 + ands r6, r4 + orrs r6, r0 + mov r10, r6 + strb r6, [r5, 0x9] + ldr r0, [sp, 0x40] + ldrb r4, [r0] + adds r0, r7, 0 + ands r0, r4 + lsls r0, 2 + movs r4, 0xD + negs r4, r4 + ands r6, r4 + orrs r6, r0 + str r6, [sp, 0x10] + strb r6, [r5, 0x9] + mov r4, sp + ldr r5, [sp, 0x44] + ldrb r0, [r5] + adds r6, r7, 0 + ands r6, r0 + lsls r0, r6, 4 + subs r7, 0x34 + ldr r5, [sp, 0x10] + ands r7, r5 + orrs r7, r0 + strb r7, [r4, 0x9] + mov r5, sp + ldrb r0, [r1, 0x4] + movs r6, 0x1 + mov r12, r6 + mov r4, r12 + ands r4, r0 + lsls r4, 6 + movs r0, 0x41 + negs r0, r0 + mov r10, r0 + ands r0, r7 + orrs r0, r4 + strb r0, [r5, 0x9] + ldrb r4, [r2, 0x4] + lsls r4, 7 + movs r5, 0x7F + ands r0, r5 + orrs r0, r4 + mov r4, r8 + strb r0, [r4, 0x9] + ldrb r4, [r3, 0x4] + mov r0, r12 + ands r0, r4 + mov r5, r8 + ldrb r4, [r5, 0xA] + movs r7, 0x2 + negs r7, r7 + adds r5, r7, 0 + ands r5, r4 + orrs r5, r0 + mov r6, r8 + strb r5, [r6, 0xA] + mov r9, sp + ldr r4, [sp, 0x40] + ldrb r0, [r4, 0x4] + mov r4, r12 + ands r4, r0 + lsls r4, 1 + movs r6, 0x3 + negs r6, r6 + mov r8, r6 + mov r0, r8 + ands r0, r5 + orrs r0, r4 + mov r4, r9 + strb r0, [r4, 0xA] + ldr r6, [sp, 0x44] + ldrb r5, [r6, 0x4] + mov r4, r12 + ands r4, r5 + lsls r4, 2 + movs r5, 0x5 + negs r5, r5 + ands r0, r5 + orrs r0, r4 + mov r4, r9 + strb r0, [r4, 0xA] + mov r4, sp + ldrb r1, [r1, 0x8] + mov r0, r12 + ands r0, r1 + lsls r0, 2 + ldrb r1, [r4, 0xB] + ands r5, r1 + orrs r5, r0 + strb r5, [r4, 0xB] + ldrb r1, [r2, 0x8] + mov r0, r12 + ands r0, r1 + lsls r0, 3 + movs r1, 0x9 + negs r1, r1 + ands r1, r5 + orrs r1, r0 + strb r1, [r4, 0xB] + ldrb r2, [r3, 0x8] + mov r0, r12 + ands r0, r2 + lsls r0, 4 + movs r2, 0x11 + negs r2, r2 + ands r2, r1 + orrs r2, r0 + strb r2, [r4, 0xB] + mov r3, sp + ldr r5, [sp, 0x40] + ldrb r0, [r5, 0x8] + mov r1, r12 + ands r1, r0 + lsls r1, 5 + movs r0, 0x21 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0xB] + mov r2, sp + ldrb r1, [r6, 0x8] + mov r6, r12 + ands r6, r1 + lsls r1, r6, 6 + mov r3, r10 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, 0xB] + ldr r4, [sp, 0x1C] + lsrs r3, r4, 21 + ldrb r1, [r2, 0xA] + movs r0, 0x7 + ands r0, r1 + orrs r0, r3 + strb r0, [r2, 0xA] + mov r1, sp + ldr r5, [sp, 0x4C] + movs r6, 0x1 + ands r5, r6 + lsls r2, r5, 1 + ldrb r0, [r1, 0xB] + mov r3, r8 + ands r3, r0 + orrs r3, r2 + mov r8, r3 + strb r3, [r1, 0xB] + mov r0, sp + ldr r4, [sp, 0x50] + ands r4, r6 + mov r5, r8 + ands r5, r7 + orrs r5, r4 + strb r5, [r0, 0xB] + bl sub_80F9E2C + add sp, 0x20 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_815A61C + + thumb_func_start sub_815A950 +sub_815A950: @ 815A950 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r7, r1, 0 + adds r5, r2, 0 + adds r6, r3, 0 + ldr r0, [sp, 0x1C] + mov r12, r0 + ldr r1, [sp, 0x20] + mov r8, r1 + ldr r0, [sp, 0x24] + mov r9, r0 + adds r2, r7, 0 + adds r2, 0x14 + ldr r4, _0815A98C @ =gRecvCmds + ldrh r0, [r4] + movs r1, 0xFF + lsls r1, 8 + ands r1, r0 + movs r0, 0xBC + lsls r0, 6 + cmp r1, r0 + bne _0815A988 + adds r3, r4, 0x2 + ldrb r0, [r4, 0x2] + cmp r0, 0x2 + beq _0815A990 +_0815A988: + movs r0, 0 + b _0815AACA + .align 2, 0 +_0815A98C: .4byte gRecvCmds +_0815A990: + ldrb r0, [r3, 0x1] + lsls r0, 28 + lsrs r0, 28 + strb r0, [r2, 0xB] + ldrb r0, [r3, 0x1] + lsrs r0, 4 + strb r0, [r2, 0xC] + ldrb r0, [r3, 0x2] + lsls r0, 28 + lsrs r0, 28 + strb r0, [r2, 0xD] + ldrb r0, [r3, 0x2] + lsrs r0, 4 + strb r0, [r2, 0xE] + ldrb r0, [r3, 0x3] + lsls r0, 28 + lsrs r0, 28 + strb r0, [r2, 0xF] + ldrb r0, [r3, 0x3] + lsrs r0, 4 + strb r0, [r2, 0x10] + ldrb r0, [r3, 0x4] + lsls r0, 28 + lsrs r0, 28 + strb r0, [r2, 0x11] + ldrb r0, [r3, 0x4] + lsrs r0, 4 + strb r0, [r2, 0x12] + ldrb r0, [r3, 0x5] + lsls r0, 28 + lsrs r0, 28 + strb r0, [r2, 0x13] + ldrb r0, [r3, 0x5] + lsrs r0, 4 + strb r0, [r2, 0x14] + ldrb r0, [r3, 0x1] + lsls r0, 28 + lsrs r0, 28 + strb r0, [r2, 0x15] + ldrb r0, [r3, 0x6] + lsls r0, 30 + lsrs r0, 30 + strb r0, [r7, 0x14] + ldrb r0, [r3, 0x6] + lsls r0, 28 + lsrs r0, 30 + strb r0, [r2, 0x1] + ldrb r0, [r3, 0x6] + lsls r0, 26 + lsrs r0, 30 + strb r0, [r2, 0x2] + ldrb r0, [r3, 0x6] + lsrs r0, 6 + strb r0, [r2, 0x3] + ldrb r0, [r3, 0x7] + lsls r0, 30 + lsrs r0, 30 + strb r0, [r2, 0x4] + ldrb r0, [r3, 0x7] + lsls r0, 28 + lsrs r0, 30 + strb r0, [r2, 0x5] + ldrb r0, [r3, 0x7] + lsls r0, 26 + lsrs r0, 30 + strb r0, [r2, 0x6] + ldrb r0, [r3, 0x7] + lsrs r0, 6 + strb r0, [r2, 0x7] + ldrb r0, [r3, 0x8] + lsls r0, 30 + lsrs r0, 30 + strb r0, [r2, 0x8] + ldrb r0, [r3, 0x8] + lsls r0, 28 + lsrs r0, 30 + strb r0, [r2, 0x9] + ldrb r0, [r3, 0x6] + lsls r0, 30 + lsrs r0, 30 + strb r0, [r2, 0xA] + ldrb r0, [r3, 0x8] + lsls r0, 26 + lsrs r0, 30 + strb r0, [r5] + ldrb r0, [r3, 0x9] + lsls r0, 25 + lsrs r0, 31 + strb r0, [r5, 0x4] + ldrb r0, [r3, 0xB] + lsls r0, 29 + lsrs r0, 31 + strb r0, [r5, 0x8] + ldrb r0, [r3, 0x8] + lsrs r0, 6 + strb r0, [r6] + ldrb r0, [r3, 0x9] + lsrs r0, 7 + strb r0, [r6, 0x4] + ldrb r0, [r3, 0xB] + lsls r0, 28 + lsrs r0, 31 + strb r0, [r6, 0x8] + ldrb r0, [r3, 0x9] + lsls r0, 30 + lsrs r0, 30 + mov r1, r12 + strb r0, [r1] + ldrb r0, [r3, 0xA] + lsls r0, 31 + lsrs r0, 31 + strb r0, [r1, 0x4] + ldrb r0, [r3, 0xB] + lsls r0, 27 + lsrs r0, 31 + strb r0, [r1, 0x8] + ldrb r0, [r3, 0x9] + lsls r0, 28 + lsrs r0, 30 + mov r1, r8 + strb r0, [r1] + ldrb r0, [r3, 0xA] + lsls r0, 30 + lsrs r0, 31 + strb r0, [r1, 0x4] + ldrb r0, [r3, 0xB] + lsls r0, 26 + lsrs r0, 31 + strb r0, [r1, 0x8] + ldrb r0, [r3, 0x9] + lsls r0, 26 + lsrs r0, 30 + mov r1, r9 + strb r0, [r1] + ldrb r0, [r3, 0xA] + lsls r0, 29 + lsrs r0, 31 + strb r0, [r1, 0x4] + ldrb r0, [r3, 0xB] + lsls r0, 25 + lsrs r0, 31 + strb r0, [r1, 0x8] + ldrb r0, [r3, 0xA] + lsrs r0, 3 + ldr r1, [sp, 0x28] + strb r0, [r1] + ldrb r0, [r3, 0xB] + lsls r0, 30 + lsrs r0, 31 + ldr r1, [sp, 0x2C] + str r0, [r1] + ldrb r0, [r3, 0xB] + lsls r0, 31 + lsrs r0, 31 + ldr r1, [sp, 0x30] + str r0, [r1] + movs r0, 0x1 +_0815AACA: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_815A950 + + thumb_func_start sub_815AAD8 +sub_815AAD8: @ 815AAD8 + push {lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + ldr r3, _0815AB00 @ =0xffffff00 + ldr r1, [sp] + ands r1, r3 + movs r2, 0x3 + orrs r1, r2 + str r1, [sp] + ldr r1, [sp, 0x4] + ands r1, r3 + orrs r1, r0 + str r1, [sp, 0x4] + mov r0, sp + bl sub_80F9E2C + add sp, 0x8 + pop {r0} + bx r0 + .align 2, 0 +_0815AB00: .4byte 0xffffff00 + thumb_func_end sub_815AAD8 + + thumb_func_start sub_815AB04 +sub_815AB04: @ 815AB04 + push {r4,lr} + adds r2, r0, 0 + adds r4, r1, 0 + ldr r3, _0815AB2C @ =gRecvCmds + ldrh r0, [r3] + movs r1, 0xFF + lsls r1, 8 + ands r1, r0 + movs r0, 0xBC + lsls r0, 6 + cmp r1, r0 + bne _0815AB28 + lsls r0, r2, 4 + adds r1, r3, 0x2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, 0x3 + beq _0815AB30 +_0815AB28: + movs r0, 0 + b _0815AB36 + .align 2, 0 +_0815AB2C: .4byte gRecvCmds +_0815AB30: + ldrb r0, [r1, 0x4] + strb r0, [r4] + movs r0, 0x1 +_0815AB36: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_815AB04 + + thumb_func_start sub_815AB3C +sub_815AB3C: @ 815AB3C + push {lr} + sub sp, 0x8 + ldr r2, _0815AB5C @ =0xffffff00 + ldr r1, [sp] + ands r1, r2 + movs r2, 0x4 + orrs r1, r2 + str r1, [sp] + str r0, [sp, 0x4] + mov r0, sp + bl sub_80F9E2C + add sp, 0x8 + pop {r0} + bx r0 + .align 2, 0 +_0815AB5C: .4byte 0xffffff00 + thumb_func_end sub_815AB3C + + thumb_func_start sub_815AB60 +sub_815AB60: @ 815AB60 + push {lr} + adds r2, r0, 0 + ldr r3, _0815AB88 @ =gRecvCmds + ldrh r0, [r3] + movs r1, 0xFF + lsls r1, 8 + ands r1, r0 + movs r0, 0xBC + lsls r0, 6 + cmp r1, r0 + bne _0815AB82 + lsls r0, r2, 4 + adds r1, r3, 0x2 + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, 0x4 + beq _0815AB8C +_0815AB82: + movs r0, 0 + b _0815AB8E + .align 2, 0 +_0815AB88: .4byte gRecvCmds +_0815AB8C: + ldr r0, [r1, 0x4] +_0815AB8E: + pop {r1} + bx r1 + thumb_func_end sub_815AB60 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/unk_815C27C.s b/asm/ereader_helpers.s index 067ab8659..067ab8659 100644 --- a/asm/unk_815C27C.s +++ b/asm/ereader_helpers.s diff --git a/asm/link.s b/asm/link.s index d2fabbd0c..6b89ed2db 100644 --- a/asm/link.s +++ b/asm/link.s @@ -870,7 +870,7 @@ _08009B7E: movs r0, 0 strh r0, [r3] lsls r4, r6, 4 - ldr r5, _08009BCC @ =gUnknown_3003ED0 + ldr r5, _08009BCC @ =gRecvCmds adds r2, r4, r5 ldrh r0, [r2] mov r12, r1 @@ -906,7 +906,7 @@ _08009BC4: b _08009E3E .align 2, 0 _08009BC8: .4byte gUnknown_3003E60 -_08009BCC: .4byte gUnknown_3003ED0 +_08009BCC: .4byte gRecvCmds _08009BD0: .4byte 0x00005fff _08009BD4: .4byte 0x00004444 _08009BD8: .4byte 0x00002222 @@ -1006,12 +1006,12 @@ _08009C94: adds r1, r0 movs r2, 0 strh r2, [r1] - ldr r0, _08009CBC @ =gUnknown_3003ED0 + ldr r0, _08009CBC @ =gRecvCmds adds r0, 0x2 adds r0, r4, r0 ldrh r0, [r0] strh r0, [r1, 0x2] - ldr r0, _08009CBC @ =gUnknown_3003ED0 + ldr r0, _08009CBC @ =gRecvCmds adds r0, 0x4 adds r0, r4, r0 ldrh r0, [r0] @@ -1019,7 +1019,7 @@ _08009C94: b _08009E3E .align 2, 0 _08009CB8: .4byte gUnknown_3000E18 -_08009CBC: .4byte gUnknown_3003ED0 +_08009CBC: .4byte gRecvCmds _08009CC0: mov r3, r12 adds r0, r3, r6 @@ -1037,7 +1037,7 @@ _08009CC0: mov r8, r0 movs r2, 0 adds r5, r3, 0 - ldr r7, _08009D0C @ =gUnknown_3003ED0 + ldr r7, _08009D0C @ =gRecvCmds adds r3, r4, 0 _08009CE4: ldrh r1, [r5] @@ -1059,13 +1059,13 @@ _08009CE4: .align 2, 0 _08009D04: .4byte gUnknown_3000E18 _08009D08: .4byte gDecompressionBuffer -_08009D0C: .4byte gUnknown_3003ED0 +_08009D0C: .4byte gRecvCmds _08009D10: movs r2, 0 ldr r1, _08009DC4 @ =gBlockRecvBuffer mov r9, r1 adds r7, r3, 0 - ldr r3, _08009DC8 @ =gUnknown_3003ED0 + ldr r3, _08009DC8 @ =gRecvCmds mov r8, r3 lsls r5, r6, 8 adds r3, r4, 0 @@ -1153,7 +1153,7 @@ _08009DBC: b _08009E3E .align 2, 0 _08009DC4: .4byte gBlockRecvBuffer -_08009DC8: .4byte gUnknown_3003ED0 +_08009DC8: .4byte gRecvCmds _08009DCC: .4byte gUnknown_3003EB8 _08009DD0: .4byte gLinkPlayers _08009DD4: .4byte gUnknown_82345C0 @@ -1187,7 +1187,7 @@ _08009E08: b _08009E3E _08009E0E: ldr r3, _08009E2C @ =gUnknown_8234598 - ldr r0, _08009E30 @ =gUnknown_3003ED0 + ldr r0, _08009E30 @ =gRecvCmds adds r0, 0x2 adds r0, r4, r0 ldrh r2, [r0] @@ -1202,9 +1202,9 @@ _08009E0E: b _08009E3E .align 2, 0 _08009E2C: .4byte gUnknown_8234598 -_08009E30: .4byte gUnknown_3003ED0 +_08009E30: .4byte gRecvCmds _08009E34: - ldr r0, _08009E5C @ =gUnknown_3003ED0 + ldr r0, _08009E5C @ =gRecvCmds adds r0, 0x2 adds r0, r4, r0 ldrh r0, [r0] @@ -1226,7 +1226,7 @@ _08009E4A: pop {r0} bx r0 .align 2, 0 -_08009E5C: .4byte gUnknown_3003ED0 +_08009E5C: .4byte gRecvCmds thumb_func_end sub_8009B70 thumb_func_start sub_8009E60 @@ -3779,7 +3779,7 @@ HandleLinkConnection: @ 800B178 bne _0800B1C8 ldr r0, _0800B1B4 @ =gUnknown_3003F84 ldr r1, _0800B1B8 @ =gUnknown_3003F50 - ldr r2, _0800B1BC @ =gUnknown_3003ED0 + ldr r2, _0800B1BC @ =gRecvCmds bl LinkMain1 ldr r4, _0800B1C0 @ =gUnknown_3003F20 str r0, [r4] @@ -3801,7 +3801,7 @@ _0800B1AA: _0800B1B0: .4byte gWirelessCommType _0800B1B4: .4byte gUnknown_3003F84 _0800B1B8: .4byte gUnknown_3003F50 -_0800B1BC: .4byte gUnknown_3003ED0 +_0800B1BC: .4byte gRecvCmds _0800B1C0: .4byte gUnknown_3003F20 _0800B1C4: .4byte gMain + 0x2C _0800B1C8: diff --git a/asm/link_rfu_2.s b/asm/link_rfu_2.s index e15838946..feb7c886f 100644 --- a/asm/link_rfu_2.s +++ b/asm/link_rfu_2.s @@ -77,7 +77,7 @@ _080F863E: bl CpuSet mov r0, r8 strh r5, [r0] - ldr r1, _080F86B4 @ =gUnknown_3003ED0 + ldr r1, _080F86B4 @ =gRecvCmds ldr r2, _080F86B8 @ =0x01000028 bl CpuSet mov r0, r9 @@ -99,7 +99,7 @@ _080F86A4: .4byte gUnknown_30054BC _080F86A8: .4byte 0x00000634 _080F86AC: .4byte gUnknown_3003F50 _080F86B0: .4byte 0x01000008 -_080F86B4: .4byte gUnknown_3003ED0 +_080F86B4: .4byte gRecvCmds _080F86B8: .4byte 0x01000028 _080F86BC: .4byte gLinkPlayers _080F86C0: .4byte 0x01000046 @@ -1228,7 +1228,7 @@ sub_80F8FD4: @ 80F8FD4 push {r4-r7,lr} sub sp, 0x4 movs r2, 0 - ldr r7, _080F9028 @ =gUnknown_3003ED0 + ldr r7, _080F9028 @ =gRecvCmds ldr r0, _080F902C @ =gUnknown_3005450 adds r6, r7, 0 ldr r1, _080F9030 @ =0x0000093f @@ -1268,7 +1268,7 @@ _080F8FF4: pop {r0} bx r0 .align 2, 0 -_080F9028: .4byte gUnknown_3003ED0 +_080F9028: .4byte gRecvCmds _080F902C: .4byte gUnknown_3005450 _080F9030: .4byte 0x0000093f _080F9034: .4byte 0x01000028 @@ -1278,7 +1278,7 @@ _080F9034: .4byte 0x01000028 sub_80F9038: @ 80F9038 push {lr} ldr r3, _080F9064 @ =gUnknown_3003F50 - ldr r2, _080F9068 @ =gUnknown_3003ED0 + ldr r2, _080F9068 @ =gRecvCmds movs r1, 0x6 _080F9040: ldrh r0, [r3] @@ -1301,7 +1301,7 @@ _080F9056: bx r0 .align 2, 0 _080F9064: .4byte gUnknown_3003F50 -_080F9068: .4byte gUnknown_3003ED0 +_080F9068: .4byte gRecvCmds thumb_func_end sub_80F9038 thumb_func_start sub_80F906C @@ -1375,7 +1375,7 @@ _080F90E8: _080F90EC: .4byte gUnknown_3007460 _080F90F0: movs r3, 0 - ldr r4, _080F9118 @ =gUnknown_3003ED0 + ldr r4, _080F9118 @ =gRecvCmds _080F90F4: movs r2, 0 lsls r0, r3, 4 @@ -1397,7 +1397,7 @@ _080F9110: pop {r1} bx r1 .align 2, 0 -_080F9118: .4byte gUnknown_3003ED0 +_080F9118: .4byte gRecvCmds thumb_func_end sub_80F90DC thumb_func_start sub_80F911C @@ -1664,7 +1664,7 @@ _080F9304: str r2, [sp, 0x4] adds r5, 0x1 str r5, [sp] - ldr r1, _080F9450 @ =gUnknown_3003ED0 + ldr r1, _080F9450 @ =gRecvCmds mov r9, r1 adds r5, r3, 0 adds r7, r4, 0 @@ -1791,7 +1791,7 @@ _080F93FA: _080F9444: .4byte gUnknown_3005450 _080F9448: .4byte 0x000009a6 _080F944C: .4byte gUnknown_3005DE6 -_080F9450: .4byte gUnknown_3003ED0 +_080F9450: .4byte gRecvCmds _080F9454: .4byte 0x0000099d _080F9458: .4byte 0x00000991 _080F945C: .4byte gUnknown_203AC08 @@ -1904,7 +1904,7 @@ sub_80F9514: @ 80F9514 mov r1, sp bl sub_80FC6E8 movs r1, 0 - ldr r0, _080F963C @ =gUnknown_3003ED0 + ldr r0, _080F963C @ =gRecvCmds mov r12, r0 _080F952A: movs r4, 0 @@ -2038,7 +2038,7 @@ _080F9628: bx r1 .align 2, 0 _080F9638: .4byte gUnknown_3005574 -_080F963C: .4byte gUnknown_3003ED0 +_080F963C: .4byte gRecvCmds _080F9640: .4byte gUnknown_3005E10 _080F9644: .4byte gUnknown_3005450 _080F9648: .4byte 0x0000099c @@ -2348,7 +2348,7 @@ sub_80F9868: @ 80F9868 _080F9876: mov r1, r8 lsls r5, r1, 4 - ldr r2, _080F98B4 @ =gUnknown_3003ED0 + ldr r2, _080F98B4 @ =gRecvCmds adds r0, r5, r2 ldrh r7, [r0] movs r3, 0xFF @@ -2379,7 +2379,7 @@ _080F98A2: _080F98B0: b _080F9BF4 .align 2, 0 -_080F98B4: .4byte gUnknown_3003ED0 +_080F98B4: .4byte gRecvCmds _080F98B8: movs r0, 0xEE lsls r0, 7 @@ -2562,7 +2562,7 @@ _080F99FE: adds r2, r4, 0x1 lsls r0, r2, 1 adds r0, r3 - ldr r4, _080F9A90 @ =gUnknown_3003ED0 + ldr r4, _080F9A90 @ =gRecvCmds adds r0, r4 ldrh r0, [r0] strh r0, [r1] @@ -2623,7 +2623,7 @@ _080F9A80: .align 2, 0 _080F9A88: .4byte gUnknown_3005450 _080F9A8C: .4byte gBlockRecvBuffer -_080F9A90: .4byte gUnknown_3003ED0 +_080F9A90: .4byte gRecvCmds _080F9A94: .4byte gUnknown_843EBD4 _080F9A98: .4byte gReceivedRemoteLinkPlayers _080F9A9C: @@ -2703,7 +2703,7 @@ _080F9B00: adds r0, r7, r2 strb r1, [r0] _080F9B38: - ldr r0, _080F9B64 @ =gUnknown_3003ED0 + ldr r0, _080F9B64 @ =gRecvCmds adds r0, 0x6 adds r0, r5, r0 ldrh r0, [r0] @@ -2718,7 +2718,7 @@ _080F9B54: .4byte gUnknown_3003ED2 _080F9B58: .4byte gUnknown_3007460 _080F9B5C: .4byte gUnknown_3003ED4 _080F9B60: .4byte 0x0000099c -_080F9B64: .4byte gUnknown_3003ED0 +_080F9B64: .4byte gRecvCmds _080F9B68: movs r0, 0xEE lsls r0, 8 @@ -2732,7 +2732,7 @@ _080F9B68: adds r0, r5, r4 ldrh r0, [r0] strh r0, [r1, 0x4] - ldr r0, _080F9B9C @ =gUnknown_3003ED0 + ldr r0, _080F9B9C @ =gRecvCmds adds r0, 0x6 adds r0, r5, r0 ldrh r0, [r0] @@ -2742,7 +2742,7 @@ _080F9B68: _080F9B90: .4byte gUnknown_3003F50 _080F9B94: .4byte gUnknown_3003ED2 _080F9B98: .4byte gUnknown_3003ED4 -_080F9B9C: .4byte gUnknown_3003ED0 +_080F9B9C: .4byte gRecvCmds _080F9BA0: ldr r4, _080F9BD0 @ =gUnknown_3005450 ldrb r0, [r4, 0xC] @@ -3267,7 +3267,7 @@ _080F9F74: .4byte gUnknown_3003F50 _080F9F78: .4byte gUnknown_3005450 _080F9F7C: bl GetMultiplayerId - ldr r1, _080F9FA0 @ =gUnknown_3003ED0 + ldr r1, _080F9FA0 @ =gRecvCmds lsls r0, 24 lsrs r0, 20 adds r0, r1 @@ -3285,7 +3285,7 @@ _080F9F98: pop {r0} bx r0 .align 2, 0 -_080F9FA0: .4byte gUnknown_3003ED0 +_080F9FA0: .4byte gRecvCmds _080F9FA4: .4byte sub_80F9FA8 thumb_func_end rfufunc_80F9F44 @@ -3378,7 +3378,7 @@ rfufunc_80FA020: @ 80FA020 strh r0, [r3] movs r4, 0 mov r9, r5 - ldr r0, _080FA0D4 @ =gUnknown_3003ED0 + ldr r0, _080FA0D4 @ =gRecvCmds mov r12, r0 lsls r5, r6, 4 adds r7, r2, 0 @@ -3441,7 +3441,7 @@ _080FA05C: _080FA0C8: .4byte gUnknown_3005450 _080FA0CC: .4byte gUnknown_3003F50 _080FA0D0: .4byte 0xffff8900 -_080FA0D4: .4byte gUnknown_3003ED0 +_080FA0D4: .4byte gRecvCmds _080FA0D8: .4byte gUnknown_843EBD4 _080FA0DC: .4byte gUnknown_203AC08 _080FA0E0: @@ -6835,7 +6835,7 @@ sub_80FBA44: @ 80FBA44 sub sp, 0x4 movs r0, 0 str r0, [sp] - ldr r1, _080FBA5C @ =gUnknown_3003ED0 + ldr r1, _080FBA5C @ =gRecvCmds ldr r2, _080FBA60 @ =0x05000014 mov r0, sp bl CpuSet @@ -6843,7 +6843,7 @@ sub_80FBA44: @ 80FBA44 pop {r0} bx r0 .align 2, 0 -_080FBA5C: .4byte gUnknown_3003ED0 +_080FBA5C: .4byte gRecvCmds _080FBA60: .4byte 0x05000014 thumb_func_end sub_80FBA44 diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s index 388c871d9..f2e88b619 100644 --- a/asm/link_rfu_3.s +++ b/asm/link_rfu_3.s @@ -7477,7 +7477,7 @@ _08119900: .4byte gSpecialVar_Result sub_8119904: @ 8119904 push {r4,r5,lr} adds r2, r0, 0 - ldr r3, _08119940 @ =gUnknown_3003ED0 + ldr r3, _08119940 @ =gRecvCmds ldrh r5, [r3, 0x12] adds r4, r5, 0 cmp r4, 0 @@ -7506,7 +7506,7 @@ _08119938: pop {r0} bx r0 .align 2, 0 -_08119940: .4byte gUnknown_3003ED0 +_08119940: .4byte gRecvCmds thumb_func_end sub_8119904 thumb_func_start sub_8119944 @@ -10578,7 +10578,7 @@ _0811B0A0: .4byte gUnknown_8457E0C sub_811B0A4: @ 811B0A4 push {lr} adds r2, r0, 0 - ldr r0, _0811B0C4 @ =gUnknown_3003ED0 + ldr r0, _0811B0C4 @ =gRecvCmds ldrh r1, [r0, 0x2] cmp r1, 0 beq _0811B0C8 @@ -10593,7 +10593,7 @@ _0811B0B8: movs r0, 0x1 b _0811B0CA .align 2, 0 -_0811B0C4: .4byte gUnknown_3003ED0 +_0811B0C4: .4byte gRecvCmds _0811B0C8: movs r0, 0 _0811B0CA: diff --git a/asm/pokemon_jump.s b/asm/pokemon_jump.s index 1af1fd10b..c00c08f20 100644 --- a/asm/pokemon_jump.s +++ b/asm/pokemon_jump.s @@ -596,7 +596,7 @@ sub_8147A34: @ 8147A34 ldrb r0, [r0] cmp r0, 0 beq _08147A98 - ldr r1, _08147A90 @ =gUnknown_3003ED0 + ldr r1, _08147A90 @ =gRecvCmds ldrh r0, [r1, 0x2] ldr r5, _08147A94 @ =0x00007fff cmp r0, r5 @@ -626,7 +626,7 @@ _08147A5C: .align 2, 0 _08147A88: .4byte gTasks+0x8 _08147A8C: .4byte gReceivedRemoteLinkPlayers -_08147A90: .4byte gUnknown_3003ED0 +_08147A90: .4byte gRecvCmds _08147A94: .4byte 0x00007fff _08147A98: ldrh r0, [r4, 0x16] diff --git a/asm/pokemon_jump_2.s b/asm/pokemon_jump_2.s index f47e312ff..dcdf8ad3b 100644 --- a/asm/pokemon_jump_2.s +++ b/asm/pokemon_jump_2.s @@ -4313,7 +4313,7 @@ sub_8149A90: @ 8149A90 push {r4,lr} sub sp, 0xC adds r4, r1, 0 - ldr r3, _08149AC4 @ =gUnknown_3003ED0 + ldr r3, _08149AC4 @ =gRecvCmds lsls r2, r0, 4 adds r0, r2, r3 ldrh r1, [r0] @@ -4337,7 +4337,7 @@ _08149AC0: movs r0, 0 b _08149AD8 .align 2, 0 -_08149AC4: .4byte gUnknown_3003ED0 +_08149AC4: .4byte gRecvCmds _08149AC8: mov r0, sp ldrh r0, [r0, 0x2] @@ -4443,7 +4443,7 @@ sub_8149B7C: @ 8149B7C sub sp, 0xC adds r5, r0, 0 adds r4, r1, 0 - ldr r2, _08149BE4 @ =gUnknown_3003ED0 + ldr r2, _08149BE4 @ =gRecvCmds ldrh r0, [r2] movs r1, 0xFF lsls r1, 8 @@ -4491,7 +4491,7 @@ sub_8149B7C: @ 8149B7C movs r0, 0x1 b _08149BEA .align 2, 0 -_08149BE4: .4byte gUnknown_3003ED0 +_08149BE4: .4byte gRecvCmds _08149BE8: movs r0, 0 _08149BEA: @@ -4534,7 +4534,7 @@ sub_8149C24: @ 8149C24 adds r4, r0, 0 adds r5, r2, 0 adds r6, r3, 0 - ldr r3, _08149C80 @ =gUnknown_3003ED0 + ldr r3, _08149C80 @ =gRecvCmds lsls r2, r1, 4 adds r0, r2, r3 ldrh r1, [r0] @@ -4575,7 +4575,7 @@ sub_8149C24: @ 8149C24 movs r0, 0x1 b _08149C86 .align 2, 0 -_08149C80: .4byte gUnknown_3003ED0 +_08149C80: .4byte gRecvCmds _08149C84: movs r0, 0 _08149C86: @@ -4590,7 +4590,7 @@ sub_8149C90: @ 8149C90 push {r4,lr} sub sp, 0xC adds r4, r0, 0 - ldr r3, _08149CDC @ =gUnknown_3003ED0 + ldr r3, _08149CDC @ =gRecvCmds lsls r2, r1, 4 adds r0, r2, r3 ldrh r1, [r0] @@ -4625,7 +4625,7 @@ sub_8149C90: @ 8149C90 movs r0, 0x1 b _08149CE2 .align 2, 0 -_08149CDC: .4byte gUnknown_3003ED0 +_08149CDC: .4byte gRecvCmds _08149CE0: movs r0, 0 _08149CE2: diff --git a/asm/unk_8159F40.s b/asm/unk_8159F40.s deleted file mode 100644 index aefa4ecff..000000000 --- a/asm/unk_8159F40.s +++ /dev/null @@ -1,1623 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_8159F40 -sub_8159F40: @ 8159F40 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - movs r0, 0 - mov r10, r0 - mov r9, r0 - ldr r1, _08159F90 @ =gBattleTypeFlags - movs r0, 0x80 - lsls r0, 9 - str r0, [r1] - bl ZeroPlayerPartyMons - bl ZeroEnemyPartyMons - ldr r1, _08159F94 @ =gUnknown_84792D0 - ldr r0, _08159F98 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - mov r8, r0 - movs r7, 0 -_08159F72: - lsls r0, r7, 4 - mov r2, r8 - adds r1, r0, r2 - ldrb r1, [r1] - adds r4, r0, 0 - cmp r1, 0 - bne _08159FA0 - movs r0, 0x64 - mov r1, r10 - muls r1, r0 - ldr r0, _08159F9C @ =gPlayerParty - adds r6, r1, r0 - movs r0, 0x1 - add r10, r0 - b _08159FAE - .align 2, 0 -_08159F90: .4byte gBattleTypeFlags -_08159F94: .4byte gUnknown_84792D0 -_08159F98: .4byte gSpecialVar_0x8004 -_08159F9C: .4byte gPlayerParty -_08159FA0: - movs r0, 0x64 - mov r1, r9 - muls r1, r0 - ldr r0, _0815A004 @ =gEnemyParty - adds r6, r1, r0 - movs r2, 0x1 - add r9, r2 -_08159FAE: - mov r0, r8 - adds r3, r4, r0 - ldrh r1, [r3, 0x2] - ldrb r2, [r3, 0x1] - ldrb r0, [r3, 0xD] - str r0, [sp] - ldrb r0, [r3, 0xC] - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - adds r0, r6, 0 - movs r3, 0 - bl CreateMonWithGenderNatureLetter - movs r5, 0 - adds r7, 0x1 - mov r0, r8 - adds r0, 0x4 - adds r4, r0 -_08159FD4: - ldrh r1, [r4] - lsls r2, r5, 24 - lsrs r2, 24 - adds r0, r6, 0 - bl SetMonMoveSlot - adds r4, 0x2 - adds r5, 0x1 - cmp r5, 0x3 - ble _08159FD4 - lsls r0, r7, 4 - add r0, r8 - ldrb r0, [r0] - cmp r0, 0xFF - bne _08159F72 - 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 -_0815A004: .4byte gEnemyParty - thumb_func_end sub_8159F40 - - thumb_func_start sub_815A008 -sub_815A008: @ 815A008 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r1, 0 - mov r8, r1 - movs r6, 0x1 - movs r2, 0x2 - negs r2, r2 - mov r12, r2 - adds r5, r0, 0 - adds r5, 0x8 - movs r7, 0 - movs r0, 0x41 - negs r0, r0 - mov r10, r0 - movs r1, 0x7F - mov r9, r1 -_0815A02E: - ldr r2, _0815A1F4 @ =gMapObjects - adds r3, r7, r2 - ldrb r0, [r3] - lsls r0, 31 - lsrs r0, 31 - ands r0, r6 - ldrb r2, [r5] - mov r1, r12 - ands r1, r2 - orrs r1, r0 - strb r1, [r5] - ldrb r0, [r3] - lsls r0, 28 - lsrs r0, 31 - ands r0, r6 - lsls r0, 1 - movs r2, 0x3 - negs r2, r2 - ands r2, r1 - orrs r2, r0 - strb r2, [r5] - ldrb r0, [r3] - lsls r0, 27 - lsrs r0, 31 - ands r0, r6 - lsls r0, 2 - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r5] - ldrb r0, [r3] - lsls r0, 26 - lsrs r0, 31 - ands r0, r6 - lsls r0, 3 - movs r2, 0x9 - negs r2, r2 - ands r2, r1 - orrs r2, r0 - strb r2, [r5] - ldrb r0, [r3, 0x1] - lsls r0, 31 - lsrs r0, 31 - ands r0, r6 - lsls r0, 4 - movs r1, 0x11 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r5] - ldrb r0, [r3, 0x1] - lsls r0, 30 - lsrs r0, 31 - ands r0, r6 - lsls r0, 5 - movs r2, 0x21 - negs r2, r2 - ands r2, r1 - orrs r2, r0 - strb r2, [r5] - ldrb r0, [r3, 0x1] - lsls r0, 29 - lsrs r0, 31 - ands r0, r6 - lsls r0, 6 - mov r1, r10 - ands r1, r2 - orrs r1, r0 - strb r1, [r5] - ldrb r0, [r3, 0x1] - lsls r0, 28 - lsrs r0, 31 - lsls r0, 7 - mov r2, r9 - ands r1, r2 - orrs r1, r0 - strb r1, [r5] - ldrb r0, [r3, 0x1] - lsls r0, 27 - lsrs r0, 31 - ands r0, r6 - ldrb r2, [r5, 0x1] - mov r1, r12 - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x1] - ldrb r0, [r3, 0x1] - lsls r0, 26 - lsrs r0, 31 - ands r0, r6 - lsls r0, 1 - movs r2, 0x3 - negs r2, r2 - ands r2, r1 - orrs r2, r0 - strb r2, [r5, 0x1] - ldrb r0, [r3, 0x1] - lsls r0, 25 - lsrs r0, 31 - ands r0, r6 - lsls r0, 2 - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x1] - ldrb r0, [r3, 0x1] - lsrs r0, 7 - ands r0, r6 - lsls r0, 3 - movs r2, 0x9 - negs r2, r2 - ands r2, r1 - orrs r2, r0 - strb r2, [r5, 0x1] - ldrb r0, [r3, 0x2] - lsls r0, 31 - lsrs r0, 31 - ands r0, r6 - lsls r0, 4 - movs r1, 0x11 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x1] - ldrb r0, [r3, 0x2] - lsrs r0, 7 - ands r0, r6 - lsls r0, 5 - movs r2, 0x21 - negs r2, r2 - ands r2, r1 - orrs r2, r0 - strb r2, [r5, 0x1] - ldrb r0, [r3, 0x3] - lsls r0, 31 - lsrs r0, 31 - ands r0, r6 - lsls r0, 6 - mov r1, r10 - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x1] - ldrb r0, [r3, 0x3] - lsls r0, 30 - lsrs r0, 31 - lsls r0, 7 - mov r2, r9 - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x1] - ldrb r0, [r3, 0x3] - lsls r0, 29 - lsrs r0, 31 - ands r0, r6 - ldrb r2, [r5, 0x2] - mov r1, r12 - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x2] - ldrb r2, [r3, 0x18] - lsls r2, 28 - lsrs r2, 27 - movs r0, 0x1F - negs r0, r0 - ands r1, r0 - orrs r1, r2 - strb r1, [r5, 0x2] - ldrb r1, [r3, 0xB] - lsls r1, 28 - movs r4, 0xF - lsrs r1, 28 - ldrb r2, [r5, 0x3] - adds r0, 0xF - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x3] - ldrb r1, [r3, 0xB] - lsrs r1, 4 - lsls r1, 4 - ands r0, r4 - orrs r0, r1 - strb r0, [r5, 0x3] - ldrb r0, [r3, 0x5] - strb r0, [r5, 0x4] - ldrb r0, [r3, 0x6] - strb r0, [r5, 0x5] - ldrb r0, [r3, 0x7] - strb r0, [r5, 0x6] - ldrb r0, [r3, 0x8] - strb r0, [r5, 0x7] - ldrb r0, [r3, 0x9] - strb r0, [r5, 0x8] - ldrb r0, [r3, 0xA] - strb r0, [r5, 0x9] - ldrh r0, [r3, 0x10] - strh r0, [r5, 0xA] - ldrh r0, [r3, 0x12] - strh r0, [r5, 0xC] - ldrb r0, [r3, 0x1D] - strb r0, [r5, 0xE] - ldrb r0, [r3, 0x1F] - strb r0, [r5, 0xF] - adds r0, r3, 0 - adds r0, 0x21 - ldrb r0, [r0] - strb r0, [r5, 0x10] - adds r3, 0x22 - ldrb r0, [r3] - strb r0, [r5, 0x11] - adds r5, 0x14 - adds r7, 0x24 - movs r0, 0x1 - add r8, r0 - mov r1, r8 - cmp r1, 0xF - bhi _0815A1E4 - b _0815A02E -_0815A1E4: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0815A1F4: .4byte gMapObjects - thumb_func_end sub_815A008 - - thumb_func_start sub_815A1F8 -sub_815A1F8: @ 815A1F8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - str r1, [sp, 0x4] - adds r0, 0x8 - str r0, [sp, 0x8] - mov r1, sp - movs r0, 0 - strh r0, [r1] - ldr r4, _0815A480 @ =gMapObjects - ldr r2, _0815A484 @ =0x01000120 - mov r0, sp - adds r1, r4, 0 - bl CpuSet - movs r0, 0 - mov r12, r0 - movs r1, 0x1 - mov r10, r1 -_0815A224: - mov r2, r12 - lsls r7, r2, 3 - adds r5, r7, r2 - lsls r5, 2 - ldr r0, _0815A480 @ =gMapObjects - adds r5, r0 - lsls r6, r2, 2 - add r6, r12 - lsls r6, 2 - ldr r1, [sp, 0x8] - adds r6, r1 - ldrb r0, [r6] - lsls r0, 31 - lsrs r0, 31 - mov r2, r10 - ands r0, r2 - ldrb r2, [r5] - movs r1, 0x2 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r5] - ldrb r0, [r6] - lsls r0, 30 - lsrs r0, 31 - mov r2, r10 - ands r0, r2 - lsls r0, 3 - movs r2, 0x9 - negs r2, r2 - ands r2, r1 - orrs r2, r0 - strb r2, [r5] - ldrb r0, [r6] - lsls r0, 29 - lsrs r0, 31 - mov r1, r10 - ands r0, r1 - lsls r0, 4 - movs r1, 0x11 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r5] - ldrb r0, [r6] - lsls r0, 28 - lsrs r0, 31 - mov r2, r10 - ands r0, r2 - lsls r0, 5 - movs r4, 0x21 - negs r4, r4 - ands r1, r4 - orrs r1, r0 - strb r1, [r5] - ldrb r0, [r6] - lsls r0, 27 - lsrs r0, 31 - ands r0, r2 - ldrb r1, [r5, 0x1] - movs r2, 0x2 - negs r2, r2 - ands r2, r1 - orrs r2, r0 - strb r2, [r5, 0x1] - ldrb r0, [r6] - lsls r0, 26 - lsrs r0, 31 - mov r1, r10 - ands r0, r1 - lsls r0, 1 - movs r1, 0x3 - negs r1, r1 - mov r8, r1 - mov r3, r8 - ands r3, r2 - orrs r3, r0 - strb r3, [r5, 0x1] - ldrb r0, [r6] - lsls r0, 25 - lsrs r0, 31 - mov r2, r10 - ands r0, r2 - lsls r0, 2 - subs r1, 0x2 - mov r9, r1 - ands r1, r3 - orrs r1, r0 - strb r1, [r5, 0x1] - ldrb r0, [r6] - lsrs r0, 7 - ands r0, r2 - lsls r0, 3 - movs r2, 0x9 - negs r2, r2 - ands r2, r1 - orrs r2, r0 - strb r2, [r5, 0x1] - ldrb r0, [r6, 0x1] - lsls r0, 31 - lsrs r0, 31 - mov r1, r10 - ands r0, r1 - lsls r0, 4 - movs r1, 0x11 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x1] - ldrb r0, [r6, 0x1] - lsls r0, 30 - lsrs r0, 31 - mov r2, r10 - ands r0, r2 - lsls r0, 5 - ands r4, r1 - orrs r4, r0 - strb r4, [r5, 0x1] - ldrb r0, [r6, 0x1] - lsls r0, 29 - lsrs r0, 31 - ands r0, r2 - lsls r0, 6 - movs r2, 0x41 - negs r2, r2 - adds r1, r2, 0 - ands r4, r1 - orrs r4, r0 - strb r4, [r5, 0x1] - ldrb r0, [r6, 0x1] - lsls r0, 28 - lsrs r0, 31 - lsls r0, 7 - movs r3, 0x7F - ands r4, r3 - orrs r4, r0 - strb r4, [r5, 0x1] - ldrb r0, [r6, 0x1] - lsls r0, 27 - lsrs r0, 31 - mov r1, r10 - ands r0, r1 - ldrb r2, [r5, 0x2] - movs r1, 0x2 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x2] - ldrb r0, [r6, 0x1] - lsls r0, 26 - lsrs r0, 31 - lsls r0, 7 - ands r1, r3 - orrs r1, r0 - strb r1, [r5, 0x2] - ldrb r0, [r6, 0x1] - lsls r0, 25 - lsrs r0, 31 - mov r2, r10 - ands r0, r2 - ldrb r2, [r5, 0x3] - movs r1, 0x2 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x3] - ldrb r0, [r6, 0x1] - lsrs r0, 7 - mov r2, r10 - ands r0, r2 - lsls r0, 1 - mov r2, r8 - ands r2, r1 - orrs r2, r0 - mov r8, r2 - strb r2, [r5, 0x3] - ldrb r0, [r6, 0x2] - lsls r0, 31 - lsrs r0, 31 - mov r1, r10 - ands r0, r1 - lsls r0, 2 - mov r1, r9 - ands r2, r1 - orrs r2, r0 - strb r2, [r5, 0x3] - ldrb r1, [r6, 0x2] - lsls r1, 27 - lsrs r1, 28 - ldrb r2, [r5, 0x18] - movs r4, 0x10 - negs r4, r4 - adds r0, r4, 0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x18] - ldrb r1, [r6, 0x3] - lsls r1, 28 - movs r3, 0xF - lsrs r1, 28 - ldrb r2, [r5, 0xB] - adds r0, r4, 0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0xB] - ldrb r1, [r6, 0x3] - lsrs r1, 4 - lsls r1, 4 - ands r0, r3 - orrs r0, r1 - strb r0, [r5, 0xB] - ldrb r0, [r6, 0x4] - strb r0, [r5, 0x5] - ldrb r0, [r6, 0x5] - strb r0, [r5, 0x6] - ldrb r0, [r6, 0x6] - strb r0, [r5, 0x7] - ldrb r0, [r6, 0x7] - strb r0, [r5, 0x8] - ldrb r0, [r6, 0x8] - strb r0, [r5, 0x9] - ldrb r0, [r6, 0x9] - strb r0, [r5, 0xA] - ldrh r0, [r6, 0xA] - strh r0, [r5, 0x10] - ldrh r0, [r6, 0xC] - strh r0, [r5, 0x12] - ldrb r0, [r6, 0xE] - strb r0, [r5, 0x1D] - ldrb r0, [r6, 0xF] - strb r0, [r5, 0x1F] - ldrb r0, [r6, 0x10] - adds r1, r5, 0 - adds r1, 0x21 - strb r0, [r1] - ldrb r0, [r6, 0x11] - adds r1, 0x1 - strb r0, [r1] - movs r6, 0 - mov r8, r7 - mov r2, r12 - adds r2, 0x1 - str r2, [sp, 0xC] - ldrb r7, [r5, 0x8] - ldr r3, [sp, 0x4] - movs r0, 0xF - mov r9, r0 -_0815A412: - ldrb r1, [r3] - cmp r7, r1 - bne _0815A444 - ldrh r0, [r3, 0x4] - adds r0, 0x7 - strh r0, [r5, 0xC] - ldrh r0, [r3, 0x6] - adds r0, 0x7 - strh r0, [r5, 0xE] - ldrb r1, [r3, 0xA] - lsls r1, 28 - lsrs r1, 28 - mov r2, r9 - ands r1, r2 - ldrb r0, [r5, 0x19] - ands r0, r4 - orrs r0, r1 - strb r0, [r5, 0x19] - ldrb r1, [r3, 0xA] - lsrs r1, 4 - lsls r1, 4 - movs r2, 0xF - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x19] -_0815A444: - adds r3, 0x18 - adds r6, 0x1 - cmp r6, 0x3F - bls _0815A412 - mov r0, r8 - add r0, r12 - lsls r0, 2 - ldr r1, _0815A480 @ =gMapObjects - adds r6, r0, r1 - movs r2, 0x10 - ldrsh r0, [r6, r2] - movs r2, 0x12 - ldrsh r1, [r6, r2] - bl MapGridGetMetatileBehaviorAt - strb r0, [r6, 0x1E] - ldrb r4, [r6, 0x1F] - movs r1, 0x10 - ldrsh r0, [r6, r1] - movs r2, 0x12 - ldrsh r1, [r6, r2] - bl MapGridGetMetatileBehaviorAt - cmp r4, r0 - bne _0815A488 - ldrh r0, [r6, 0x10] - strh r0, [r6, 0x14] - ldrh r0, [r6, 0x12] - b _0815A506 - .align 2, 0 -_0815A480: .4byte gMapObjects -_0815A484: .4byte 0x01000120 -_0815A488: - ldrb r4, [r6, 0x1F] - ldrh r0, [r6, 0x10] - subs r0, 0x1 - lsls r0, 16 - asrs r0, 16 - movs r2, 0x12 - ldrsh r1, [r6, r2] - bl MapGridGetMetatileBehaviorAt - cmp r4, r0 - bne _0815A4A8 - ldrh r0, [r6, 0x10] - subs r0, 0x1 - strh r0, [r6, 0x14] - ldrh r0, [r6, 0x12] - b _0815A506 -_0815A4A8: - ldrb r4, [r6, 0x1F] - ldrh r0, [r6, 0x10] - adds r0, 0x1 - lsls r0, 16 - asrs r0, 16 - movs r2, 0x12 - ldrsh r1, [r6, r2] - bl MapGridGetMetatileBehaviorAt - cmp r4, r0 - bne _0815A4C8 - ldrh r0, [r6, 0x10] - adds r0, 0x1 - strh r0, [r6, 0x14] - ldrh r0, [r6, 0x12] - b _0815A506 -_0815A4C8: - ldrb r4, [r6, 0x1F] - movs r1, 0x10 - ldrsh r0, [r6, r1] - ldrh r1, [r6, 0x12] - subs r1, 0x1 - lsls r1, 16 - asrs r1, 16 - bl MapGridGetMetatileBehaviorAt - cmp r4, r0 - bne _0815A4E8 - ldrh r0, [r6, 0x10] - strh r0, [r6, 0x14] - ldrh r0, [r6, 0x12] - subs r0, 0x1 - b _0815A506 -_0815A4E8: - ldrb r4, [r6, 0x1F] - movs r2, 0x10 - ldrsh r0, [r6, r2] - ldrh r1, [r6, 0x12] - adds r1, 0x1 - lsls r1, 16 - asrs r1, 16 - bl MapGridGetMetatileBehaviorAt - cmp r4, r0 - bne _0815A508 - ldrh r0, [r6, 0x10] - strh r0, [r6, 0x14] - ldrh r0, [r6, 0x12] - adds r0, 0x1 -_0815A506: - strh r0, [r6, 0x16] -_0815A508: - ldr r0, [sp, 0xC] - mov r12, r0 - cmp r0, 0xF - bhi _0815A512 - b _0815A224 -_0815A512: - ldr r0, _0815A538 @ =gMapObjects - ldr r1, _0815A53C @ =gSaveBlock1Ptr - ldr r1, [r1] - movs r2, 0xD4 - lsls r2, 3 - adds r1, r2 - movs r2, 0x90 - lsls r2, 1 - bl CpuSet - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0815A538: .4byte gMapObjects -_0815A53C: .4byte gSaveBlock1Ptr - thumb_func_end sub_815A1F8 - - thumb_func_start sub_815A540 -sub_815A540: @ 815A540 - push {r4,lr} - sub sp, 0x4 - ldr r0, _0815A5AC @ =gUnknown_203ADFA - ldrb r0, [r0] - cmp r0, 0x2 - bne _0815A5A4 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl MetatileBehavior_IsSurfable - lsls r0, 24 - cmp r0, 0 - bne _0815A5A4 - movs r0, 0x8 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - beq _0815A5A4 - ldr r0, _0815A5B0 @ =gPlayerAvatar - ldrb r0, [r0, 0x5] - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - ldr r0, _0815A5B4 @ =gMapObjects - adds r4, r0 - movs r0, 0x1 - bl SetPlayerAvatarTransitionFlags - ldrb r1, [r4, 0x1A] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0815A5B8 @ =gSprites - adds r0, r1 - bl DestroySprite -_0815A5A4: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0815A5AC: .4byte gUnknown_203ADFA -_0815A5B0: .4byte gPlayerAvatar -_0815A5B4: .4byte gMapObjects -_0815A5B8: .4byte gSprites - thumb_func_end sub_815A540 - - thumb_func_start sub_815A5BC -sub_815A5BC: @ 815A5BC - push {lr} - sub sp, 0x8 - ldr r3, _0815A5E4 @ =0xffffff00 - ldr r1, [sp] - ands r1, r3 - movs r2, 0x1 - orrs r1, r2 - str r1, [sp] - lsls r0, 24 - lsrs r0, 24 - ldr r1, [sp, 0x4] - ands r1, r3 - orrs r1, r0 - str r1, [sp, 0x4] - mov r0, sp - bl sub_80F9E2C - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_0815A5E4: .4byte 0xffffff00 - thumb_func_end sub_815A5BC - - thumb_func_start sub_815A5E8 -sub_815A5E8: @ 815A5E8 - push {lr} - adds r2, r0, 0 - ldr r3, _0815A610 @ =gUnknown_3003ED0 - ldrh r0, [r3] - movs r1, 0xFF - lsls r1, 8 - ands r1, r0 - movs r0, 0xBC - lsls r0, 6 - cmp r1, r0 - bne _0815A60A - lsls r0, r2, 4 - adds r1, r3, 0x2 - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0x1 - beq _0815A614 -_0815A60A: - movs r0, 0 - b _0815A616 - .align 2, 0 -_0815A610: .4byte gUnknown_3003ED0 -_0815A614: - ldrb r0, [r1, 0x4] -_0815A616: - pop {r1} - bx r1 - thumb_func_end sub_815A5E8 - - thumb_func_start sub_815A61C -sub_815A61C: @ 815A61C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - ldr r4, [sp, 0x48] - lsls r4, 24 - str r4, [sp, 0x1C] - movs r4, 0x14 - adds r4, r0 - mov r9, r4 - mov r5, sp - movs r4, 0x2 - strb r4, [r5] - mov r10, sp - mov r5, r9 - ldrb r4, [r5, 0xB] - movs r7, 0xF - adds r5, r7, 0 - ands r5, r4 - mov r6, r10 - ldrb r6, [r6, 0x1] - mov r8, r6 - movs r4, 0x10 - negs r4, r4 - mov r6, r8 - ands r4, r6 - orrs r4, r5 - mov r5, r10 - strb r4, [r5, 0x1] - mov r8, sp - mov r6, r9 - ldrb r5, [r6, 0xC] - lsls r5, 4 - ands r4, r7 - orrs r4, r5 - mov r5, r8 - strb r4, [r5, 0x1] - ldrb r5, [r6, 0xD] - movs r6, 0xF - ands r5, r6 - mov r4, r10 - ldrb r4, [r4, 0x2] - mov r8, r4 - movs r4, 0x10 - negs r4, r4 - mov r6, r8 - ands r4, r6 - orrs r4, r5 - mov r5, r10 - strb r4, [r5, 0x2] - mov r8, sp - mov r6, r9 - ldrb r5, [r6, 0xE] - lsls r5, 4 - ands r4, r7 - orrs r4, r5 - mov r5, r8 - strb r4, [r5, 0x2] - ldrb r5, [r6, 0xF] - movs r6, 0xF - ands r5, r6 - mov r4, r10 - ldrb r4, [r4, 0x3] - mov r8, r4 - movs r4, 0x10 - negs r4, r4 - mov r6, r8 - ands r4, r6 - orrs r4, r5 - mov r5, r10 - strb r4, [r5, 0x3] - mov r8, sp - mov r6, r9 - ldrb r5, [r6, 0x10] - lsls r5, 4 - ands r4, r7 - orrs r4, r5 - mov r5, r8 - strb r4, [r5, 0x3] - ldrb r5, [r6, 0x11] - movs r6, 0xF - ands r5, r6 - mov r4, r10 - ldrb r4, [r4, 0x4] - mov r8, r4 - movs r4, 0x10 - negs r4, r4 - mov r6, r8 - ands r4, r6 - orrs r4, r5 - mov r5, r10 - strb r4, [r5, 0x4] - mov r8, sp - mov r6, r9 - ldrb r5, [r6, 0x12] - lsls r5, 4 - ands r4, r7 - orrs r4, r5 - mov r5, r8 - strb r4, [r5, 0x4] - ldrb r4, [r6, 0x13] - movs r6, 0xF - ands r4, r6 - mov r6, r8 - ldrb r5, [r6, 0x5] - movs r6, 0x10 - negs r6, r6 - ands r6, r5 - orrs r6, r4 - str r6, [sp, 0xC] - mov r4, r8 - strb r6, [r4, 0x5] - mov r5, sp - mov r6, r9 - ldrb r4, [r6, 0x14] - lsls r4, 4 - ldr r6, [sp, 0xC] - ands r6, r7 - orrs r6, r4 - strb r6, [r5, 0x5] - mov r7, sp - movs r4, 0x3 - mov r8, r4 - ldrb r0, [r0, 0x14] - mov r5, r8 - ands r0, r5 - ldrb r5, [r7, 0x6] - movs r6, 0x4 - negs r6, r6 - mov r10, r6 - mov r4, r10 - ands r4, r5 - orrs r4, r0 - strb r4, [r7, 0x6] - mov r5, r9 - ldrb r0, [r5, 0x1] - mov r6, r8 - ands r0, r6 - lsls r0, 2 - movs r5, 0xD - negs r5, r5 - ands r5, r4 - orrs r5, r0 - strb r5, [r7, 0x6] - mov r0, r9 - ldrb r4, [r0, 0x2] - ands r4, r6 - lsls r4, 4 - movs r0, 0x31 - negs r0, r0 - ands r0, r5 - orrs r0, r4 - strb r0, [r7, 0x6] - mov r5, sp - mov r6, r9 - ldrb r4, [r6, 0x3] - lsls r4, 6 - movs r6, 0x3F - ands r0, r6 - orrs r0, r4 - strb r0, [r5, 0x6] - mov r4, r9 - ldrb r0, [r4, 0x4] - mov r5, r8 - ands r0, r5 - ldrb r5, [r7, 0x7] - mov r4, r10 - ands r4, r5 - orrs r4, r0 - strb r4, [r7, 0x7] - mov r6, r9 - ldrb r0, [r6, 0x5] - mov r5, r8 - ands r0, r5 - lsls r0, 2 - movs r5, 0xD - negs r5, r5 - ands r5, r4 - orrs r5, r0 - strb r5, [r7, 0x7] - ldrb r4, [r6, 0x6] - mov r6, r8 - ands r4, r6 - lsls r4, 4 - movs r0, 0x31 - negs r0, r0 - ands r0, r5 - orrs r0, r4 - strb r0, [r7, 0x7] - mov r5, sp - mov r6, r9 - ldrb r4, [r6, 0x7] - lsls r4, 6 - movs r6, 0x3F - ands r0, r6 - orrs r0, r4 - strb r0, [r5, 0x7] - mov r8, sp - mov r0, r9 - ldrb r4, [r0, 0x8] - movs r7, 0x3 - adds r0, r7, 0 - ands r0, r4 - mov r4, r8 - ldrb r5, [r4, 0x8] - mov r4, r10 - ands r4, r5 - orrs r4, r0 - mov r5, r8 - strb r4, [r5, 0x8] - mov r6, r9 - ldrb r5, [r6, 0x9] - adds r0, r7, 0 - ands r0, r5 - lsls r0, 2 - movs r5, 0xD - negs r5, r5 - ands r5, r4 - orrs r5, r0 - mov r0, r8 - strb r5, [r0, 0x8] - ldrb r0, [r1] - adds r4, r7, 0 - ands r4, r0 - lsls r4, 4 - movs r0, 0x31 - negs r0, r0 - ands r0, r5 - orrs r0, r4 - mov r4, r8 - strb r0, [r4, 0x8] - mov r5, sp - ldrb r4, [r2] - lsls r4, 6 - movs r6, 0x3F - ands r0, r6 - orrs r0, r4 - strb r0, [r5, 0x8] - ldrb r4, [r3] - adds r0, r7, 0 - ands r0, r4 - ldrb r4, [r5, 0x9] - mov r6, r10 - ands r6, r4 - orrs r6, r0 - mov r10, r6 - strb r6, [r5, 0x9] - ldr r0, [sp, 0x40] - ldrb r4, [r0] - adds r0, r7, 0 - ands r0, r4 - lsls r0, 2 - movs r4, 0xD - negs r4, r4 - ands r6, r4 - orrs r6, r0 - str r6, [sp, 0x10] - strb r6, [r5, 0x9] - mov r4, sp - ldr r5, [sp, 0x44] - ldrb r0, [r5] - adds r6, r7, 0 - ands r6, r0 - lsls r0, r6, 4 - subs r7, 0x34 - ldr r5, [sp, 0x10] - ands r7, r5 - orrs r7, r0 - strb r7, [r4, 0x9] - mov r5, sp - ldrb r0, [r1, 0x4] - movs r6, 0x1 - mov r12, r6 - mov r4, r12 - ands r4, r0 - lsls r4, 6 - movs r0, 0x41 - negs r0, r0 - mov r10, r0 - ands r0, r7 - orrs r0, r4 - strb r0, [r5, 0x9] - ldrb r4, [r2, 0x4] - lsls r4, 7 - movs r5, 0x7F - ands r0, r5 - orrs r0, r4 - mov r4, r8 - strb r0, [r4, 0x9] - ldrb r4, [r3, 0x4] - mov r0, r12 - ands r0, r4 - mov r5, r8 - ldrb r4, [r5, 0xA] - movs r7, 0x2 - negs r7, r7 - adds r5, r7, 0 - ands r5, r4 - orrs r5, r0 - mov r6, r8 - strb r5, [r6, 0xA] - mov r9, sp - ldr r4, [sp, 0x40] - ldrb r0, [r4, 0x4] - mov r4, r12 - ands r4, r0 - lsls r4, 1 - movs r6, 0x3 - negs r6, r6 - mov r8, r6 - mov r0, r8 - ands r0, r5 - orrs r0, r4 - mov r4, r9 - strb r0, [r4, 0xA] - ldr r6, [sp, 0x44] - ldrb r5, [r6, 0x4] - mov r4, r12 - ands r4, r5 - lsls r4, 2 - movs r5, 0x5 - negs r5, r5 - ands r0, r5 - orrs r0, r4 - mov r4, r9 - strb r0, [r4, 0xA] - mov r4, sp - ldrb r1, [r1, 0x8] - mov r0, r12 - ands r0, r1 - lsls r0, 2 - ldrb r1, [r4, 0xB] - ands r5, r1 - orrs r5, r0 - strb r5, [r4, 0xB] - ldrb r1, [r2, 0x8] - mov r0, r12 - ands r0, r1 - lsls r0, 3 - movs r1, 0x9 - negs r1, r1 - ands r1, r5 - orrs r1, r0 - strb r1, [r4, 0xB] - ldrb r2, [r3, 0x8] - mov r0, r12 - ands r0, r2 - lsls r0, 4 - movs r2, 0x11 - negs r2, r2 - ands r2, r1 - orrs r2, r0 - strb r2, [r4, 0xB] - mov r3, sp - ldr r5, [sp, 0x40] - ldrb r0, [r5, 0x8] - mov r1, r12 - ands r1, r0 - lsls r1, 5 - movs r0, 0x21 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0xB] - mov r2, sp - ldrb r1, [r6, 0x8] - mov r6, r12 - ands r6, r1 - lsls r1, r6, 6 - mov r3, r10 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0xB] - ldr r4, [sp, 0x1C] - lsrs r3, r4, 21 - ldrb r1, [r2, 0xA] - movs r0, 0x7 - ands r0, r1 - orrs r0, r3 - strb r0, [r2, 0xA] - mov r1, sp - ldr r5, [sp, 0x4C] - movs r6, 0x1 - ands r5, r6 - lsls r2, r5, 1 - ldrb r0, [r1, 0xB] - mov r3, r8 - ands r3, r0 - orrs r3, r2 - mov r8, r3 - strb r3, [r1, 0xB] - mov r0, sp - ldr r4, [sp, 0x50] - ands r4, r6 - mov r5, r8 - ands r5, r7 - orrs r5, r4 - strb r5, [r0, 0xB] - bl sub_80F9E2C - add sp, 0x20 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_815A61C - - thumb_func_start sub_815A950 -sub_815A950: @ 815A950 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r7, r1, 0 - adds r5, r2, 0 - adds r6, r3, 0 - ldr r0, [sp, 0x1C] - mov r12, r0 - ldr r1, [sp, 0x20] - mov r8, r1 - ldr r0, [sp, 0x24] - mov r9, r0 - adds r2, r7, 0 - adds r2, 0x14 - ldr r4, _0815A98C @ =gUnknown_3003ED0 - ldrh r0, [r4] - movs r1, 0xFF - lsls r1, 8 - ands r1, r0 - movs r0, 0xBC - lsls r0, 6 - cmp r1, r0 - bne _0815A988 - adds r3, r4, 0x2 - ldrb r0, [r4, 0x2] - cmp r0, 0x2 - beq _0815A990 -_0815A988: - movs r0, 0 - b _0815AACA - .align 2, 0 -_0815A98C: .4byte gUnknown_3003ED0 -_0815A990: - ldrb r0, [r3, 0x1] - lsls r0, 28 - lsrs r0, 28 - strb r0, [r2, 0xB] - ldrb r0, [r3, 0x1] - lsrs r0, 4 - strb r0, [r2, 0xC] - ldrb r0, [r3, 0x2] - lsls r0, 28 - lsrs r0, 28 - strb r0, [r2, 0xD] - ldrb r0, [r3, 0x2] - lsrs r0, 4 - strb r0, [r2, 0xE] - ldrb r0, [r3, 0x3] - lsls r0, 28 - lsrs r0, 28 - strb r0, [r2, 0xF] - ldrb r0, [r3, 0x3] - lsrs r0, 4 - strb r0, [r2, 0x10] - ldrb r0, [r3, 0x4] - lsls r0, 28 - lsrs r0, 28 - strb r0, [r2, 0x11] - ldrb r0, [r3, 0x4] - lsrs r0, 4 - strb r0, [r2, 0x12] - ldrb r0, [r3, 0x5] - lsls r0, 28 - lsrs r0, 28 - strb r0, [r2, 0x13] - ldrb r0, [r3, 0x5] - lsrs r0, 4 - strb r0, [r2, 0x14] - ldrb r0, [r3, 0x1] - lsls r0, 28 - lsrs r0, 28 - strb r0, [r2, 0x15] - ldrb r0, [r3, 0x6] - lsls r0, 30 - lsrs r0, 30 - strb r0, [r7, 0x14] - ldrb r0, [r3, 0x6] - lsls r0, 28 - lsrs r0, 30 - strb r0, [r2, 0x1] - ldrb r0, [r3, 0x6] - lsls r0, 26 - lsrs r0, 30 - strb r0, [r2, 0x2] - ldrb r0, [r3, 0x6] - lsrs r0, 6 - strb r0, [r2, 0x3] - ldrb r0, [r3, 0x7] - lsls r0, 30 - lsrs r0, 30 - strb r0, [r2, 0x4] - ldrb r0, [r3, 0x7] - lsls r0, 28 - lsrs r0, 30 - strb r0, [r2, 0x5] - ldrb r0, [r3, 0x7] - lsls r0, 26 - lsrs r0, 30 - strb r0, [r2, 0x6] - ldrb r0, [r3, 0x7] - lsrs r0, 6 - strb r0, [r2, 0x7] - ldrb r0, [r3, 0x8] - lsls r0, 30 - lsrs r0, 30 - strb r0, [r2, 0x8] - ldrb r0, [r3, 0x8] - lsls r0, 28 - lsrs r0, 30 - strb r0, [r2, 0x9] - ldrb r0, [r3, 0x6] - lsls r0, 30 - lsrs r0, 30 - strb r0, [r2, 0xA] - ldrb r0, [r3, 0x8] - lsls r0, 26 - lsrs r0, 30 - strb r0, [r5] - ldrb r0, [r3, 0x9] - lsls r0, 25 - lsrs r0, 31 - strb r0, [r5, 0x4] - ldrb r0, [r3, 0xB] - lsls r0, 29 - lsrs r0, 31 - strb r0, [r5, 0x8] - ldrb r0, [r3, 0x8] - lsrs r0, 6 - strb r0, [r6] - ldrb r0, [r3, 0x9] - lsrs r0, 7 - strb r0, [r6, 0x4] - ldrb r0, [r3, 0xB] - lsls r0, 28 - lsrs r0, 31 - strb r0, [r6, 0x8] - ldrb r0, [r3, 0x9] - lsls r0, 30 - lsrs r0, 30 - mov r1, r12 - strb r0, [r1] - ldrb r0, [r3, 0xA] - lsls r0, 31 - lsrs r0, 31 - strb r0, [r1, 0x4] - ldrb r0, [r3, 0xB] - lsls r0, 27 - lsrs r0, 31 - strb r0, [r1, 0x8] - ldrb r0, [r3, 0x9] - lsls r0, 28 - lsrs r0, 30 - mov r1, r8 - strb r0, [r1] - ldrb r0, [r3, 0xA] - lsls r0, 30 - lsrs r0, 31 - strb r0, [r1, 0x4] - ldrb r0, [r3, 0xB] - lsls r0, 26 - lsrs r0, 31 - strb r0, [r1, 0x8] - ldrb r0, [r3, 0x9] - lsls r0, 26 - lsrs r0, 30 - mov r1, r9 - strb r0, [r1] - ldrb r0, [r3, 0xA] - lsls r0, 29 - lsrs r0, 31 - strb r0, [r1, 0x4] - ldrb r0, [r3, 0xB] - lsls r0, 25 - lsrs r0, 31 - strb r0, [r1, 0x8] - ldrb r0, [r3, 0xA] - lsrs r0, 3 - ldr r1, [sp, 0x28] - strb r0, [r1] - ldrb r0, [r3, 0xB] - lsls r0, 30 - lsrs r0, 31 - ldr r1, [sp, 0x2C] - str r0, [r1] - ldrb r0, [r3, 0xB] - lsls r0, 31 - lsrs r0, 31 - ldr r1, [sp, 0x30] - str r0, [r1] - movs r0, 0x1 -_0815AACA: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_815A950 - - thumb_func_start sub_815AAD8 -sub_815AAD8: @ 815AAD8 - push {lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - ldr r3, _0815AB00 @ =0xffffff00 - ldr r1, [sp] - ands r1, r3 - movs r2, 0x3 - orrs r1, r2 - str r1, [sp] - ldr r1, [sp, 0x4] - ands r1, r3 - orrs r1, r0 - str r1, [sp, 0x4] - mov r0, sp - bl sub_80F9E2C - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_0815AB00: .4byte 0xffffff00 - thumb_func_end sub_815AAD8 - - thumb_func_start sub_815AB04 -sub_815AB04: @ 815AB04 - push {r4,lr} - adds r2, r0, 0 - adds r4, r1, 0 - ldr r3, _0815AB2C @ =gUnknown_3003ED0 - ldrh r0, [r3] - movs r1, 0xFF - lsls r1, 8 - ands r1, r0 - movs r0, 0xBC - lsls r0, 6 - cmp r1, r0 - bne _0815AB28 - lsls r0, r2, 4 - adds r1, r3, 0x2 - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0x3 - beq _0815AB30 -_0815AB28: - movs r0, 0 - b _0815AB36 - .align 2, 0 -_0815AB2C: .4byte gUnknown_3003ED0 -_0815AB30: - ldrb r0, [r1, 0x4] - strb r0, [r4] - movs r0, 0x1 -_0815AB36: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_815AB04 - - thumb_func_start sub_815AB3C -sub_815AB3C: @ 815AB3C - push {lr} - sub sp, 0x8 - ldr r2, _0815AB5C @ =0xffffff00 - ldr r1, [sp] - ands r1, r2 - movs r2, 0x4 - orrs r1, r2 - str r1, [sp] - str r0, [sp, 0x4] - mov r0, sp - bl sub_80F9E2C - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_0815AB5C: .4byte 0xffffff00 - thumb_func_end sub_815AB3C - - thumb_func_start sub_815AB60 -sub_815AB60: @ 815AB60 - push {lr} - adds r2, r0, 0 - ldr r3, _0815AB88 @ =gUnknown_3003ED0 - ldrh r0, [r3] - movs r1, 0xFF - lsls r1, 8 - ands r1, r0 - movs r0, 0xBC - lsls r0, 6 - cmp r1, r0 - bne _0815AB82 - lsls r0, r2, 4 - adds r1, r3, 0x2 - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0x4 - beq _0815AB8C -_0815AB82: - movs r0, 0 - b _0815AB8E - .align 2, 0 -_0815AB88: .4byte gUnknown_3003ED0 -_0815AB8C: - ldr r0, [r1, 0x4] -_0815AB8E: - pop {r1} - bx r1 - thumb_func_end sub_815AB60 - - .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/global.fieldmap.h b/include/global.fieldmap.h index b602741a6..801606d50 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -74,6 +74,14 @@ struct BackupMapData u16 *map; }; +union __attribute__((packed)) MapObjectRange { + u8 as_byte; + struct __attribute__((packed)) { + u8 x:4; + u8 y:4; + } __attribute__((aligned (1))) as_nybbles; +} __attribute__((aligned (1))); + struct MapObjectTemplate { /*0x00*/ u8 localId; @@ -83,8 +91,7 @@ struct MapObjectTemplate /*0x06*/ s16 y; /*0x08*/ u8 elevation; /*0x09*/ u8 movementType; - /*0x0A*/ u8 unkA_0:4; - u8 unkA_4:4; + /*0x0A*/ union MapObjectRange range; ///*0x0B*/ u8 fillerB[1]; /*0x0C*/ u16 unkC; /*0x0E*/ u16 unkE; @@ -228,13 +235,7 @@ struct MapObject /*0x14*/ struct Coords16 coords3; /*0x18*/ u8 mapobj_unk_18:4; //current direction? /*0x18*/ u8 placeholder18:4; - /*0x19*/ union __attribute__((packed)) { - u8 as_byte; - struct __attribute__((packed)) { - u8 x:4; - u8 y:4; - } __attribute__((aligned (1))) as_nybbles; - } __attribute__((aligned (1))) range; + /*0x19*/ union MapObjectRange range; /*0x1A*/ u8 mapobj_unk_1A; /*0x1B*/ u8 mapobj_unk_1B; /*0x1C*/ u8 mapobj_unk_1C; diff --git a/include/global.h b/include/global.h index 461402f1f..b10f4af49 100644 --- a/include/global.h +++ b/include/global.h @@ -565,6 +565,12 @@ typedef union QuestLogScene QuestLogScene; // This name is a complete guess and may change. +#define MAP_OBJECTS_COUNT 16 +#define BERRY_TREES_COUNT 128 +#define FLAGS_COUNT 288 // 300 +#define VARS_COUNT 256 +#define MAIL_COUNT 16 + // Declare here so that it can be recursively referenced. union QuestLogMovement; @@ -578,6 +584,43 @@ union QuestLogMovement } ident_struct; }; +struct QuestLogMapObject +{ + /*0x00*/ u8 active:1; + /*0x00*/ u8 mapobj_bit_3:1; + /*0x00*/ u8 mapobj_bit_4:1; + /*0x00*/ u8 mapobj_bit_5:1; + /*0x00*/ u8 mapobj_bit_8:1; + /*0x00*/ u8 mapobj_bit_9:1; + /*0x00*/ u8 mapobj_bit_10:1; + /*0x00*/ u8 mapobj_bit_11:1; + /*0x01*/ u8 mapobj_bit_12:1; + /*0x01*/ u8 mapobj_bit_13:1; + /*0x01*/ u8 mapobj_bit_14:1; + /*0x01*/ u8 mapobj_bit_15:1; + /*0x01*/ u8 mapobj_bit_16:1; + /*0x01*/ u8 mapobj_bit_23:1; + /*0x01*/ u8 mapobj_bit_24:1; + /*0x01*/ u8 mapobj_bit_25:1; + /*0x02*/ u8 mapobj_bit_26:1; + /*0x02*/ u8 mapobj_unk_18:4; + /*0x02*/ u8 unused_02_5:3; + /*0x03*/ u8 mapobj_unk_0B_0:4; + /*0x03*/ u8 elevation:4; + /*0x04*/ u8 graphicsId; + /*0x05*/ u8 animPattern; + /*0x06*/ u8 trainerType; + /*0x07*/ u8 localId; + /*0x08*/ u8 mapNum; + /*0x09*/ u8 mapGroup; + /*0x0a*/ s16 x; + /*0x0c*/ s16 y; + /*0x0e*/ u8 trainerRange_berryTreeId; + /*0x0f*/ u8 mapobj_unk_1F; + /*0x10*/ u8 mapobj_unk_21; + /*0x11*/ u8 animId; +}; + struct QuestLog { /*0x0000*/ u8 unk_000; @@ -586,7 +629,7 @@ struct QuestLog /*0x0003*/ s8 unk_003; /*0x0004*/ s16 unk_004; /*0x0006*/ s16 unk_006; - /*0x0008*/ u8 filler_008[0x140]; + /*0x0008*/ struct QuestLogMapObject unk_008[MAP_OBJECTS_COUNT]; // These arrays hold the game state for // playing back the quest log @@ -606,12 +649,6 @@ struct FameCheckerSaveData u16 unk_0_E:2; }; -#define MAP_OBJECTS_COUNT 16 -#define BERRY_TREES_COUNT 128 -#define FLAGS_COUNT 288 // 300 -#define VARS_COUNT 256 -#define MAIL_COUNT 16 - #define NUM_EASY_CHAT_EXTRA_PHRASES 33 #define EASY_CHAT_EXTRA_PHRASES_SIZE ((NUM_EASY_CHAT_EXTRA_PHRASES >> 3) + (NUM_EASY_CHAT_EXTRA_PHRASES % 8 ? 1 : 0)) diff --git a/include/link_rfu.h b/include/link_rfu.h index d076efae6..8d02577a5 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -1,6 +1,11 @@ #ifndef GUARD_LINK_RFU_H #define GUARD_LINK_RFU_H +struct Padded_U8 +{ + u8 value; +}; + void AddTextPrinterToWindow1(const u8 *str); bool32 MG_PrintTextOnWindow1AndWaitButton(u8 * cmdPtr, const u8 * src); void sub_80FA190(void); @@ -11,5 +16,6 @@ void DestroyWirelessStatusIndicatorSprite(void); void MEvent_CreateTask_CardOrNewsWithFriend(u8); void MEvent_CreateTask_CardOrNewsOverWireless(u8); void MEvent_CreateTask_Leader(u8); +void sub_80F9E2C(void * data); #endif //GUARD_LINK_RFU_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 9b056bf84..01d2765a7 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -257,10 +257,12 @@ SECTIONS { src/quest_log_8150454.o(.text); asm/dodrio_berry_picking.o(.text); asm/battle_controller_pokedude.o(.text); - asm/unk_8159F40.o(.text); + src/unk_8159F40.o(.text); + 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); @@ -426,6 +428,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/dodrio_berry_picking_2.c b/src/dodrio_berry_picking_2.c new file mode 100644 index 000000000..fc6aa14c6 --- /dev/null +++ b/src/dodrio_berry_picking_2.c @@ -0,0 +1,23 @@ +#include "global.h" +#include "link.h" +#include "link_rfu.h" + +void sub_815A5BC(s32 a0) +{ + struct Padded_U8 data[2]; + data[0].value = 1; + data[1].value = a0; + sub_80F9E2C(data); +} + +u8 sub_815A5E8(s32 a0) +{ + u8 * r1; + if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00) + return 0; + r1 = (u8 *)&gRecvCmds[a0][1]; + if (r1[0] == 1) + return r1[4]; + return 0; +} + diff --git a/src/unk_8159F40.c b/src/unk_8159F40.c new file mode 100644 index 000000000..a6f6e67fc --- /dev/null +++ b/src/unk_8159F40.c @@ -0,0 +1,622 @@ +#include "global.h" +#include "battle.h" +#include "event_data.h" +#include "quest_log.h" +#include "fieldmap.h" +#include "field_player_avatar.h" +#include "metatile_behavior.h" +#include "link.h" +#include "link_rfu.h" + +struct UnkStruct_84792D0 +{ + u8 field_0; + u8 field_1; + u16 field_2; + u16 field_4[4]; + u8 field_C; + u8 field_D; +}; + +extern const struct UnkStruct_84792D0 *const gUnknown_84792D0[]; + +void sub_8159F40(void) +{ + s32 i, j; + struct Pokemon *mon; + s32 myIdx = 0; + s32 opIdx = 0; + const struct UnkStruct_84792D0 * data; + + gBattleTypeFlags = BATTLE_TYPE_DOME; + ZeroPlayerPartyMons(); + ZeroEnemyPartyMons(); + data = gUnknown_84792D0[gSpecialVar_0x8004]; + + i = 0; + do + { + if (data[i].field_0 == 0) + { + mon = &gPlayerParty[myIdx]; + myIdx++; + } + else + { + mon = &gEnemyParty[opIdx]; + opIdx++; + } + CreateMonWithGenderNatureLetter(mon, data[i].field_2, data[i].field_1, 0, data[i].field_D, data[i].field_C, 0); + for (j = 0; j < 4; j++) + { + SetMonMoveSlot(mon, data[i].field_4[j], j); + } + i++; + } while (data[i].field_0 != 0xFF); +} + +void sub_815A008(struct QuestLog * questLog) +{ + u32 i; + + for (i = 0; i < MAP_OBJECTS_COUNT; i++) + { + questLog->unk_008[i].active = gMapObjects[i].active; + questLog->unk_008[i].mapobj_bit_3 = gMapObjects[i].mapobj_bit_3; + questLog->unk_008[i].mapobj_bit_4 = gMapObjects[i].mapobj_bit_4; + questLog->unk_008[i].mapobj_bit_5 = gMapObjects[i].mapobj_bit_5; + questLog->unk_008[i].mapobj_bit_8 = gMapObjects[i].mapobj_bit_8; + questLog->unk_008[i].mapobj_bit_9 = gMapObjects[i].mapobj_bit_9; + questLog->unk_008[i].mapobj_bit_10 = gMapObjects[i].mapobj_bit_10; + questLog->unk_008[i].mapobj_bit_11 = gMapObjects[i].mapobj_bit_11; + questLog->unk_008[i].mapobj_bit_12 = gMapObjects[i].mapobj_bit_12; + questLog->unk_008[i].mapobj_bit_13 = gMapObjects[i].mapobj_bit_13; + questLog->unk_008[i].mapobj_bit_14 = gMapObjects[i].mapobj_bit_14; + questLog->unk_008[i].mapobj_bit_15 = gMapObjects[i].mapobj_bit_15; + questLog->unk_008[i].mapobj_bit_16 = gMapObjects[i].mapobj_bit_16; + questLog->unk_008[i].mapobj_bit_23 = gMapObjects[i].mapobj_bit_23; + questLog->unk_008[i].mapobj_bit_24 = gMapObjects[i].mapobj_bit_24; + questLog->unk_008[i].mapobj_bit_25 = gMapObjects[i].mapobj_bit_25; + questLog->unk_008[i].mapobj_bit_26 = gMapObjects[i].mapobj_bit_26; + questLog->unk_008[i].mapobj_unk_18 = gMapObjects[i].mapobj_unk_18; + questLog->unk_008[i].mapobj_unk_0B_0 = gMapObjects[i].mapobj_unk_0B_0; + questLog->unk_008[i].elevation = gMapObjects[i].elevation; + questLog->unk_008[i].graphicsId = gMapObjects[i].graphicsId; + questLog->unk_008[i].animPattern = gMapObjects[i].animPattern; + questLog->unk_008[i].trainerType = gMapObjects[i].trainerType; + questLog->unk_008[i].localId = gMapObjects[i].localId; + questLog->unk_008[i].mapNum = gMapObjects[i].mapNum; + questLog->unk_008[i].mapGroup = gMapObjects[i].mapGroup; + questLog->unk_008[i].x = gMapObjects[i].coords2.x; + questLog->unk_008[i].y = gMapObjects[i].coords2.y; + questLog->unk_008[i].trainerRange_berryTreeId = gMapObjects[i].trainerRange_berryTreeId; + questLog->unk_008[i].mapobj_unk_1F = gMapObjects[i].mapobj_unk_1F; + questLog->unk_008[i].mapobj_unk_21 = gMapObjects[i].mapobj_unk_21; + questLog->unk_008[i].animId = gMapObjects[i].animId; + } +} + +#ifdef NONMATCHING +void sub_815A1F8(const struct QuestLog * questLog, const struct MapObjectTemplate * templates) +{ + u32 i, j; + const struct QuestLogMapObject * questLogMapObjects = questLog->unk_008; + + CpuFill16(0, gMapObjects, sizeof(gMapObjects)); + + for (i = 0; i < MAP_OBJECTS_COUNT; i++) + { + gMapObjects[i].active = questLogMapObjects[i].active; + gMapObjects[i].mapobj_bit_3 = questLogMapObjects[i].mapobj_bit_3; + gMapObjects[i].mapobj_bit_4 = questLogMapObjects[i].mapobj_bit_4; + gMapObjects[i].mapobj_bit_5 = questLogMapObjects[i].mapobj_bit_5; + gMapObjects[i].mapobj_bit_8 = questLogMapObjects[i].mapobj_bit_8; + gMapObjects[i].mapobj_bit_9 = questLogMapObjects[i].mapobj_bit_9; + gMapObjects[i].mapobj_bit_10 = questLogMapObjects[i].mapobj_bit_10; + gMapObjects[i].mapobj_bit_11 = questLogMapObjects[i].mapobj_bit_11; + gMapObjects[i].mapobj_bit_12 = questLogMapObjects[i].mapobj_bit_12; + gMapObjects[i].mapobj_bit_13 = questLogMapObjects[i].mapobj_bit_13; + gMapObjects[i].mapobj_bit_14 = questLogMapObjects[i].mapobj_bit_14; + gMapObjects[i].mapobj_bit_15 = questLogMapObjects[i].mapobj_bit_15; + gMapObjects[i].mapobj_bit_16 = questLogMapObjects[i].mapobj_bit_16; + gMapObjects[i].mapobj_bit_23 = questLogMapObjects[i].mapobj_bit_23; + gMapObjects[i].mapobj_bit_24 = questLogMapObjects[i].mapobj_bit_24; + gMapObjects[i].mapobj_bit_25 = questLogMapObjects[i].mapobj_bit_25; + gMapObjects[i].mapobj_bit_26 = questLogMapObjects[i].mapobj_bit_26; + gMapObjects[i].mapobj_unk_18 = questLogMapObjects[i].mapobj_unk_18; + gMapObjects[i].mapobj_unk_0B_0 = questLogMapObjects[i].mapobj_unk_0B_0; + gMapObjects[i].elevation = questLogMapObjects[i].elevation; + gMapObjects[i].graphicsId = questLogMapObjects[i].graphicsId; + gMapObjects[i].animPattern = questLogMapObjects[i].animPattern; + gMapObjects[i].trainerType = questLogMapObjects[i].trainerType; + gMapObjects[i].localId = questLogMapObjects[i].localId; + gMapObjects[i].mapNum = questLogMapObjects[i].mapNum; + gMapObjects[i].mapGroup = questLogMapObjects[i].mapGroup; + gMapObjects[i].coords2.x = questLogMapObjects[i].x; + gMapObjects[i].coords2.y = questLogMapObjects[i].y; + gMapObjects[i].trainerRange_berryTreeId = questLogMapObjects[i].trainerRange_berryTreeId; + gMapObjects[i].mapobj_unk_1F = questLogMapObjects[i].mapobj_unk_1F; + gMapObjects[i].mapobj_unk_21 = questLogMapObjects[i].mapobj_unk_21; + gMapObjects[i].animId = questLogMapObjects[i].animId; + + for (j = 0; j < 0x40; j++) + { + if (gMapObjects[i].localId == templates[j].localId) + { + gMapObjects[i].coords1.x = templates[j].x + 7; + gMapObjects[i].coords1.y = templates[j].y + 7; + gMapObjects[i].range.as_nybbles.x = templates[j].range.as_nybbles.x; + gMapObjects[i].range.as_nybbles.y = templates[j].range.as_nybbles.y; + } + } + + gMapObjects[i].mapobj_unk_1E = MapGridGetMetatileBehaviorAt(gMapObjects[i].coords2.x, gMapObjects[i].coords2.y); + if (gMapObjects[i].mapobj_unk_1F == MapGridGetMetatileBehaviorAt((s16)(gMapObjects[i].coords2.x), (s16)(gMapObjects[i].coords2.y))) + { + gMapObjects[i].coords3.x = gMapObjects[i].coords2.x; + gMapObjects[i].coords3.y = gMapObjects[i].coords2.y; + } + else if (gMapObjects[i].mapobj_unk_1F == MapGridGetMetatileBehaviorAt((s16)(gMapObjects[i].coords2.x - 1), (s16)(gMapObjects[i].coords2.y))) + { + gMapObjects[i].coords3.x = gMapObjects[i].coords2.x - 1; + gMapObjects[i].coords3.y = gMapObjects[i].coords2.y; + } + else if (gMapObjects[i].mapobj_unk_1F == MapGridGetMetatileBehaviorAt((s16)(gMapObjects[i].coords2.x + 1), (s16)(gMapObjects[i].coords2.y))) + { + gMapObjects[i].coords3.x = gMapObjects[i].coords2.x + 1; + gMapObjects[i].coords3.y = gMapObjects[i].coords2.y; + } + else if (gMapObjects[i].mapobj_unk_1F == MapGridGetMetatileBehaviorAt((s16)(gMapObjects[i].coords2.x), (s16)(gMapObjects[i].coords2.y - 1))) + { + gMapObjects[i].coords3.x = gMapObjects[i].coords2.x; + gMapObjects[i].coords3.y = gMapObjects[i].coords2.y - 1; + } + else if (gMapObjects[i].mapobj_unk_1F == MapGridGetMetatileBehaviorAt((s16)(gMapObjects[i].coords2.x), (s16)(gMapObjects[i].coords2.y + 1))) + { + gMapObjects[i].coords3.x = gMapObjects[i].coords2.x; + gMapObjects[i].coords3.y = gMapObjects[i].coords2.y + 1; + } + } + + CpuCopy16(gMapObjects, gSaveBlock1Ptr->mapObjects, sizeof(gMapObjects)); +} +#else +NAKED +void sub_815A1F8(const struct QuestLog * questLog, const struct MapObjectTemplate * templates) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x10\n" + "\tstr r1, [sp, 0x4]\n" + "\tadds r0, 0x8\n" + "\tstr r0, [sp, 0x8]\n" + "\tmov r1, sp\n" + "\tmovs r0, 0\n" + "\tstrh r0, [r1]\n" + "\tldr r4, _0815A480 @ =gMapObjects\n" + "\tldr r2, _0815A484 @ =0x01000120\n" + "\tmov r0, sp\n" + "\tadds r1, r4, 0\n" + "\tbl CpuSet\n" + "\tmovs r0, 0\n" + "\tmov r12, r0\n" + "\tmovs r1, 0x1\n" + "\tmov r10, r1\n" + "_0815A224:\n" + "\tmov r2, r12\n" + "\tlsls r7, r2, 3\n" + "\tadds r5, r7, r2\n" + "\tlsls r5, 2\n" + "\tldr r0, _0815A480 @ =gMapObjects\n" + "\tadds r5, r0\n" + "\tlsls r6, r2, 2\n" + "\tadd r6, r12\n" + "\tlsls r6, 2\n" + "\tldr r1, [sp, 0x8]\n" + "\tadds r6, r1\n" + "\tldrb r0, [r6]\n" + "\tlsls r0, 31\n" + "\tlsrs r0, 31\n" + "\tmov r2, r10\n" + "\tands r0, r2\n" + "\tldrb r2, [r5]\n" + "\tmovs r1, 0x2\n" + "\tnegs r1, r1\n" + "\tands r1, r2\n" + "\torrs r1, r0\n" + "\tstrb r1, [r5]\n" + "\tldrb r0, [r6]\n" + "\tlsls r0, 30\n" + "\tlsrs r0, 31\n" + "\tmov r2, r10\n" + "\tands r0, r2\n" + "\tlsls r0, 3\n" + "\tmovs r2, 0x9\n" + "\tnegs r2, r2\n" + "\tands r2, r1\n" + "\torrs r2, r0\n" + "\tstrb r2, [r5]\n" + "\tldrb r0, [r6]\n" + "\tlsls r0, 29\n" + "\tlsrs r0, 31\n" + "\tmov r1, r10\n" + "\tands r0, r1\n" + "\tlsls r0, 4\n" + "\tmovs r1, 0x11\n" + "\tnegs r1, r1\n" + "\tands r1, r2\n" + "\torrs r1, r0\n" + "\tstrb r1, [r5]\n" + "\tldrb r0, [r6]\n" + "\tlsls r0, 28\n" + "\tlsrs r0, 31\n" + "\tmov r2, r10\n" + "\tands r0, r2\n" + "\tlsls r0, 5\n" + "\tmovs r4, 0x21\n" + "\tnegs r4, r4\n" + "\tands r1, r4\n" + "\torrs r1, r0\n" + "\tstrb r1, [r5]\n" + "\tldrb r0, [r6]\n" + "\tlsls r0, 27\n" + "\tlsrs r0, 31\n" + "\tands r0, r2\n" + "\tldrb r1, [r5, 0x1]\n" + "\tmovs r2, 0x2\n" + "\tnegs r2, r2\n" + "\tands r2, r1\n" + "\torrs r2, r0\n" + "\tstrb r2, [r5, 0x1]\n" + "\tldrb r0, [r6]\n" + "\tlsls r0, 26\n" + "\tlsrs r0, 31\n" + "\tmov r1, r10\n" + "\tands r0, r1\n" + "\tlsls r0, 1\n" + "\tmovs r1, 0x3\n" + "\tnegs r1, r1\n" + "\tmov r8, r1\n" + "\tmov r3, r8\n" + "\tands r3, r2\n" + "\torrs r3, r0\n" + "\tstrb r3, [r5, 0x1]\n" + "\tldrb r0, [r6]\n" + "\tlsls r0, 25\n" + "\tlsrs r0, 31\n" + "\tmov r2, r10\n" + "\tands r0, r2\n" + "\tlsls r0, 2\n" + "\tsubs r1, 0x2\n" + "\tmov r9, r1\n" + "\tands r1, r3\n" + "\torrs r1, r0\n" + "\tstrb r1, [r5, 0x1]\n" + "\tldrb r0, [r6]\n" + "\tlsrs r0, 7\n" + "\tands r0, r2\n" + "\tlsls r0, 3\n" + "\tmovs r2, 0x9\n" + "\tnegs r2, r2\n" + "\tands r2, r1\n" + "\torrs r2, r0\n" + "\tstrb r2, [r5, 0x1]\n" + "\tldrb r0, [r6, 0x1]\n" + "\tlsls r0, 31\n" + "\tlsrs r0, 31\n" + "\tmov r1, r10\n" + "\tands r0, r1\n" + "\tlsls r0, 4\n" + "\tmovs r1, 0x11\n" + "\tnegs r1, r1\n" + "\tands r1, r2\n" + "\torrs r1, r0\n" + "\tstrb r1, [r5, 0x1]\n" + "\tldrb r0, [r6, 0x1]\n" + "\tlsls r0, 30\n" + "\tlsrs r0, 31\n" + "\tmov r2, r10\n" + "\tands r0, r2\n" + "\tlsls r0, 5\n" + "\tands r4, r1\n" + "\torrs r4, r0\n" + "\tstrb r4, [r5, 0x1]\n" + "\tldrb r0, [r6, 0x1]\n" + "\tlsls r0, 29\n" + "\tlsrs r0, 31\n" + "\tands r0, r2\n" + "\tlsls r0, 6\n" + "\tmovs r2, 0x41\n" + "\tnegs r2, r2\n" + "\tadds r1, r2, 0\n" + "\tands r4, r1\n" + "\torrs r4, r0\n" + "\tstrb r4, [r5, 0x1]\n" + "\tldrb r0, [r6, 0x1]\n" + "\tlsls r0, 28\n" + "\tlsrs r0, 31\n" + "\tlsls r0, 7\n" + "\tmovs r3, 0x7F\n" + "\tands r4, r3\n" + "\torrs r4, r0\n" + "\tstrb r4, [r5, 0x1]\n" + "\tldrb r0, [r6, 0x1]\n" + "\tlsls r0, 27\n" + "\tlsrs r0, 31\n" + "\tmov r1, r10\n" + "\tands r0, r1\n" + "\tldrb r2, [r5, 0x2]\n" + "\tmovs r1, 0x2\n" + "\tnegs r1, r1\n" + "\tands r1, r2\n" + "\torrs r1, r0\n" + "\tstrb r1, [r5, 0x2]\n" + "\tldrb r0, [r6, 0x1]\n" + "\tlsls r0, 26\n" + "\tlsrs r0, 31\n" + "\tlsls r0, 7\n" + "\tands r1, r3\n" + "\torrs r1, r0\n" + "\tstrb r1, [r5, 0x2]\n" + "\tldrb r0, [r6, 0x1]\n" + "\tlsls r0, 25\n" + "\tlsrs r0, 31\n" + "\tmov r2, r10\n" + "\tands r0, r2\n" + "\tldrb r2, [r5, 0x3]\n" + "\tmovs r1, 0x2\n" + "\tnegs r1, r1\n" + "\tands r1, r2\n" + "\torrs r1, r0\n" + "\tstrb r1, [r5, 0x3]\n" + "\tldrb r0, [r6, 0x1]\n" + "\tlsrs r0, 7\n" + "\tmov r2, r10\n" + "\tands r0, r2\n" + "\tlsls r0, 1\n" + "\tmov r2, r8\n" + "\tands r2, r1\n" + "\torrs r2, r0\n" + "\tmov r8, r2\n" + "\tstrb r2, [r5, 0x3]\n" + "\tldrb r0, [r6, 0x2]\n" + "\tlsls r0, 31\n" + "\tlsrs r0, 31\n" + "\tmov r1, r10\n" + "\tands r0, r1\n" + "\tlsls r0, 2\n" + "\tmov r1, r9\n" + "\tands r2, r1\n" + "\torrs r2, r0\n" + "\tstrb r2, [r5, 0x3]\n" + "\tldrb r1, [r6, 0x2]\n" + "\tlsls r1, 27\n" + "\tlsrs r1, 28\n" + "\tldrb r2, [r5, 0x18]\n" + "\tmovs r4, 0x10\n" + "\tnegs r4, r4\n" + "\tadds r0, r4, 0\n" + "\tands r0, r2\n" + "\torrs r0, r1\n" + "\tstrb r0, [r5, 0x18]\n" + "\tldrb r1, [r6, 0x3]\n" + "\tlsls r1, 28\n" + "\tmovs r3, 0xF\n" + "\tlsrs r1, 28\n" + "\tldrb r2, [r5, 0xB]\n" + "\tadds r0, r4, 0\n" + "\tands r0, r2\n" + "\torrs r0, r1\n" + "\tstrb r0, [r5, 0xB]\n" + "\tldrb r1, [r6, 0x3]\n" + "\tlsrs r1, 4\n" + "\tlsls r1, 4\n" + "\tands r0, r3\n" + "\torrs r0, r1\n" + "\tstrb r0, [r5, 0xB]\n" + "\tldrb r0, [r6, 0x4]\n" + "\tstrb r0, [r5, 0x5]\n" + "\tldrb r0, [r6, 0x5]\n" + "\tstrb r0, [r5, 0x6]\n" + "\tldrb r0, [r6, 0x6]\n" + "\tstrb r0, [r5, 0x7]\n" + "\tldrb r0, [r6, 0x7]\n" + "\tstrb r0, [r5, 0x8]\n" + "\tldrb r0, [r6, 0x8]\n" + "\tstrb r0, [r5, 0x9]\n" + "\tldrb r0, [r6, 0x9]\n" + "\tstrb r0, [r5, 0xA]\n" + "\tldrh r0, [r6, 0xA]\n" + "\tstrh r0, [r5, 0x10]\n" + "\tldrh r0, [r6, 0xC]\n" + "\tstrh r0, [r5, 0x12]\n" + "\tldrb r0, [r6, 0xE]\n" + "\tstrb r0, [r5, 0x1D]\n" + "\tldrb r0, [r6, 0xF]\n" + "\tstrb r0, [r5, 0x1F]\n" + "\tldrb r0, [r6, 0x10]\n" + "\tadds r1, r5, 0\n" + "\tadds r1, 0x21\n" + "\tstrb r0, [r1]\n" + "\tldrb r0, [r6, 0x11]\n" + "\tadds r1, 0x1\n" + "\tstrb r0, [r1]\n" + "\tmovs r6, 0\n" + "\tmov r8, r7\n" + "\tmov r2, r12\n" + "\tadds r2, 0x1\n" + "\tstr r2, [sp, 0xC]\n" + "\tldrb r7, [r5, 0x8]\n" + "\tldr r3, [sp, 0x4]\n" + "\tmovs r0, 0xF\n" + "\tmov r9, r0\n" + "_0815A412:\n" + "\tldrb r1, [r3]\n" + "\tcmp r7, r1\n" + "\tbne _0815A444\n" + "\tldrh r0, [r3, 0x4]\n" + "\tadds r0, 0x7\n" + "\tstrh r0, [r5, 0xC]\n" + "\tldrh r0, [r3, 0x6]\n" + "\tadds r0, 0x7\n" + "\tstrh r0, [r5, 0xE]\n" + "\tldrb r1, [r3, 0xA]\n" + "\tlsls r1, 28\n" + "\tlsrs r1, 28\n" + "\tmov r2, r9\n" + "\tands r1, r2\n" + "\tldrb r0, [r5, 0x19]\n" + "\tands r0, r4\n" + "\torrs r0, r1\n" + "\tstrb r0, [r5, 0x19]\n" + "\tldrb r1, [r3, 0xA]\n" + "\tlsrs r1, 4\n" + "\tlsls r1, 4\n" + "\tmovs r2, 0xF\n" + "\tands r0, r2\n" + "\torrs r0, r1\n" + "\tstrb r0, [r5, 0x19]\n" + "_0815A444:\n" + "\tadds r3, 0x18\n" + "\tadds r6, 0x1\n" + "\tcmp r6, 0x3F\n" + "\tbls _0815A412\n" + "\tmov r0, r8\n" + "\tadd r0, r12\n" + "\tlsls r0, 2\n" + "\tldr r1, _0815A480 @ =gMapObjects\n" + "\tadds r6, r0, r1\n" + "\tmovs r2, 0x10\n" + "\tldrsh r0, [r6, r2]\n" + "\tmovs r2, 0x12\n" + "\tldrsh r1, [r6, r2]\n" + "\tbl MapGridGetMetatileBehaviorAt\n" + "\tstrb r0, [r6, 0x1E]\n" + "\tldrb r4, [r6, 0x1F]\n" + "\tmovs r1, 0x10\n" + "\tldrsh r0, [r6, r1]\n" + "\tmovs r2, 0x12\n" + "\tldrsh r1, [r6, r2]\n" + "\tbl MapGridGetMetatileBehaviorAt\n" + "\tcmp r4, r0\n" + "\tbne _0815A488\n" + "\tldrh r0, [r6, 0x10]\n" + "\tstrh r0, [r6, 0x14]\n" + "\tldrh r0, [r6, 0x12]\n" + "\tb _0815A506\n" + "\t.align 2, 0\n" + "_0815A480: .4byte gMapObjects\n" + "_0815A484: .4byte 0x01000120\n" + "_0815A488:\n" + "\tldrb r4, [r6, 0x1F]\n" + "\tldrh r0, [r6, 0x10]\n" + "\tsubs r0, 0x1\n" + "\tlsls r0, 16\n" + "\tasrs r0, 16\n" + "\tmovs r2, 0x12\n" + "\tldrsh r1, [r6, r2]\n" + "\tbl MapGridGetMetatileBehaviorAt\n" + "\tcmp r4, r0\n" + "\tbne _0815A4A8\n" + "\tldrh r0, [r6, 0x10]\n" + "\tsubs r0, 0x1\n" + "\tstrh r0, [r6, 0x14]\n" + "\tldrh r0, [r6, 0x12]\n" + "\tb _0815A506\n" + "_0815A4A8:\n" + "\tldrb r4, [r6, 0x1F]\n" + "\tldrh r0, [r6, 0x10]\n" + "\tadds r0, 0x1\n" + "\tlsls r0, 16\n" + "\tasrs r0, 16\n" + "\tmovs r2, 0x12\n" + "\tldrsh r1, [r6, r2]\n" + "\tbl MapGridGetMetatileBehaviorAt\n" + "\tcmp r4, r0\n" + "\tbne _0815A4C8\n" + "\tldrh r0, [r6, 0x10]\n" + "\tadds r0, 0x1\n" + "\tstrh r0, [r6, 0x14]\n" + "\tldrh r0, [r6, 0x12]\n" + "\tb _0815A506\n" + "_0815A4C8:\n" + "\tldrb r4, [r6, 0x1F]\n" + "\tmovs r1, 0x10\n" + "\tldrsh r0, [r6, r1]\n" + "\tldrh r1, [r6, 0x12]\n" + "\tsubs r1, 0x1\n" + "\tlsls r1, 16\n" + "\tasrs r1, 16\n" + "\tbl MapGridGetMetatileBehaviorAt\n" + "\tcmp r4, r0\n" + "\tbne _0815A4E8\n" + "\tldrh r0, [r6, 0x10]\n" + "\tstrh r0, [r6, 0x14]\n" + "\tldrh r0, [r6, 0x12]\n" + "\tsubs r0, 0x1\n" + "\tb _0815A506\n" + "_0815A4E8:\n" + "\tldrb r4, [r6, 0x1F]\n" + "\tmovs r2, 0x10\n" + "\tldrsh r0, [r6, r2]\n" + "\tldrh r1, [r6, 0x12]\n" + "\tadds r1, 0x1\n" + "\tlsls r1, 16\n" + "\tasrs r1, 16\n" + "\tbl MapGridGetMetatileBehaviorAt\n" + "\tcmp r4, r0\n" + "\tbne _0815A508\n" + "\tldrh r0, [r6, 0x10]\n" + "\tstrh r0, [r6, 0x14]\n" + "\tldrh r0, [r6, 0x12]\n" + "\tadds r0, 0x1\n" + "_0815A506:\n" + "\tstrh r0, [r6, 0x16]\n" + "_0815A508:\n" + "\tldr r0, [sp, 0xC]\n" + "\tmov r12, r0\n" + "\tcmp r0, 0xF\n" + "\tbhi _0815A512\n" + "\tb _0815A224\n" + "_0815A512:\n" + "\tldr r0, _0815A538 @ =gMapObjects\n" + "\tldr r1, _0815A53C @ =gSaveBlock1Ptr\n" + "\tldr r1, [r1]\n" + "\tmovs r2, 0xD4\n" + "\tlsls r2, 3\n" + "\tadds r1, r2\n" + "\tmovs r2, 0x90\n" + "\tlsls r2, 1\n" + "\tbl CpuSet\n" + "\tadd sp, 0x10\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_0815A538: .4byte gMapObjects\n" + "_0815A53C: .4byte gSaveBlock1Ptr"); +} +#endif // NONMATCHING + +void sub_815A540(void) +{ + if (gUnknown_203ADFA == 2) + { + s16 x, y; + + PlayerGetDestCoords(&x, &y); + if (!MetatileBehavior_IsSurfable(MapGridGetMetatileBehaviorAt(x, y)) && TestPlayerAvatarFlags(0x08)) + { + struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId]; + SetPlayerAvatarTransitionFlags(0x01); + DestroySprite(&gSprites[mapObject->mapobj_unk_1A]); + } + } +} 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_common.txt b/sym_common.txt index 6f47cb531..56536bda2 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -30,7 +30,7 @@ gUnknown_3003EBC: @ 3003EBC gUnknown_3003EC4: @ 3003EC4 .space 0xC -gUnknown_3003ED0: @ 3003ED0 +gRecvCmds: @ 3003ED0 .space 0x2 gUnknown_3003ED2: @ 3003ED2 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 |