diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-01-06 11:39:17 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-01-06 11:39:17 -0500 |
commit | 232c3e5917f250ebb7dee2381f30df9eb9869a2f (patch) | |
tree | da9f24d8c355bc2cf1c19e2553363a1943d9e6cc | |
parent | 29e7c9a8075acd376d2a1140917ea20d4aea7612 (diff) |
through sub_80C2FC0
-rw-r--r-- | asm/region_map.s | 815 | ||||
-rw-r--r-- | src/region_map.c | 257 |
2 files changed, 250 insertions, 822 deletions
diff --git a/asm/region_map.s b/asm/region_map.s index 8ecc9cbf6..429f77de8 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,821 +5,6 @@ .text - - thumb_func_start sub_80C29A4 -sub_80C29A4: @ 80C29A4 - push {r4,r5,lr} - bl sub_80C2B48 - ldr r0, _080C29C8 @ =gUnknown_20399E0 - ldr r2, [r0] - ldr r0, [r2] - movs r4, 0x80 - lsls r4, 3 - adds r0, r4 - ldr r1, [r0] - ldrh r3, [r1, 0x20] - movs r5, 0x20 - ldrsh r0, [r1, r5] - cmp r0, 0 - bne _080C29CC - movs r0, 0x1 - b _080C2B3A - .align 2, 0 -_080C29C8: .4byte gUnknown_20399E0 -_080C29CC: - ldr r5, _080C2A18 @ =0x00000cce - adds r0, r2, r5 - ldrb r0, [r0] - cmp r0, 0x11 - bls _080C2A1C - subs r0, r3, 0x1 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x4] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x1 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x8] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x1 - strh r0, [r1, 0x20] - ldr r0, [r2, 0xC] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x10] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x14] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x1 - b _080C2B28 - .align 2, 0 -_080C2A18: .4byte 0x00000cce -_080C2A1C: - cmp r0, 0xE - bls _080C2A60 - subs r0, r3, 0x2 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x4] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x2 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x8] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x2 - strh r0, [r1, 0x20] - ldr r0, [r2, 0xC] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x2 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x10] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x2 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x14] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x2 - b _080C2B28 -_080C2A60: - cmp r0, 0xA - bls _080C2AA4 - subs r0, r3, 0x3 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x4] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x3 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x8] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x3 - strh r0, [r1, 0x20] - ldr r0, [r2, 0xC] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x3 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x10] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x3 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x14] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x3 - b _080C2B28 -_080C2AA4: - cmp r0, 0x6 - bls _080C2AE8 - subs r0, r3, 0x5 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x4] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x5 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x8] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x5 - strh r0, [r1, 0x20] - ldr r0, [r2, 0xC] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x5 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x10] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x5 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x14] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x5 - b _080C2B28 -_080C2AE8: - adds r0, r3, 0 - subs r0, 0x8 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x4] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x8 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x8] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x8 - strh r0, [r1, 0x20] - ldr r0, [r2, 0xC] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x8 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x10] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x8 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x14] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x8 -_080C2B28: - strh r0, [r1, 0x20] - ldr r0, _080C2B40 @ =gUnknown_20399E0 - ldr r1, [r0] - ldr r0, _080C2B44 @ =0x00000cce - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0 -_080C2B3A: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080C2B40: .4byte gUnknown_20399E0 -_080C2B44: .4byte 0x00000cce - thumb_func_end sub_80C29A4 - - thumb_func_start sub_80C2B48 -sub_80C2B48: @ 80C2B48 - push {r4,r5,lr} - sub sp, 0x8 - ldr r0, _080C2B90 @ =gUnknown_20399E0 - ldr r3, [r0] - ldr r0, [r3] - movs r2, 0x80 - lsls r2, 3 - adds r0, r2 - ldr r0, [r0] - ldr r4, _080C2B94 @ =0xffff0000 - ldr r5, _080C2B98 @ =0x0000ffff - ldrh r0, [r0, 0x20] - movs r1, 0x80 - lsls r1, 13 - orrs r0, r1 - str r0, [sp] - ldr r0, [r3, 0xC] - adds r0, r2 - ldr r0, [r0] - ldrh r1, [r0, 0x20] - ldr r0, [sp, 0x4] - ands r0, r4 - orrs r0, r1 - ands r0, r5 - movs r1, 0xA0 - lsls r1, 16 - orrs r0, r1 - str r0, [sp, 0x4] - movs r0, 0 - mov r1, sp - bl sub_80C4CF0 - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C2B90: .4byte gUnknown_20399E0 -_080C2B94: .4byte 0xffff0000 -_080C2B98: .4byte 0x0000ffff - thumb_func_end sub_80C2B48 - - thumb_func_start sub_80C2B9C -sub_80C2B9C: @ 80C2B9C - push {r4,r5,lr} - sub sp, 0x8 - ldr r0, _080C2C0C @ =gUnknown_20399E0 - ldr r3, [r0] - ldr r0, [r3] - ldr r2, _080C2C10 @ =0x00000404 - adds r0, r2 - ldrh r0, [r0] - adds r0, 0x10 - lsls r0, 16 - ldr r4, _080C2C14 @ =0xffff0000 - ldr r5, _080C2C18 @ =0x0000ffff - lsrs r0, 16 - movs r1, 0x80 - lsls r1, 13 - orrs r0, r1 - str r0, [sp] - ldr r0, [r3, 0xC] - adds r0, r2 - ldrh r1, [r0] - subs r1, 0x10 - lsls r1, 16 - lsrs r1, 16 - ldr r0, [sp, 0x4] - ands r0, r4 - orrs r0, r1 - ands r0, r5 - movs r1, 0xA0 - lsls r1, 16 - orrs r0, r1 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x2 - movs r2, 0 - bl sub_80C4C2C - movs r0, 0x12 - movs r1, 0 - bl sub_80C4C74 - movs r0, 0x10 - bl sub_80C4C88 - movs r0, 0 - mov r1, sp - bl sub_80C4CF0 - movs r0, 0 - movs r1, 0 - bl sub_80C4C9C - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C2C0C: .4byte gUnknown_20399E0 -_080C2C10: .4byte 0x00000404 -_080C2C14: .4byte 0xffff0000 -_080C2C18: .4byte 0x0000ffff - thumb_func_end sub_80C2B9C - - thumb_func_start sub_80C2C1C -sub_80C2C1C: @ 80C2C1C - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080C2C30 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r0, _080C2C34 @ =sub_80C2C7C - str r0, [r1] - bx lr - .align 2, 0 -_080C2C30: .4byte gTasks -_080C2C34: .4byte sub_80C2C7C - thumb_func_end sub_80C2C1C - - thumb_func_start sub_80C2C38 -sub_80C2C38: @ 80C2C38 - push {lr} - movs r0, 0 - movs r1, 0x4 - movs r2, 0x4 - bl sub_80C210C - movs r0, 0x1 - movs r1, 0x5 - movs r2, 0x5 - bl sub_80C210C - movs r0, 0x2 - movs r1, 0x6 - movs r2, 0x6 - bl sub_80C210C - movs r0, 0x3 - movs r1, 0x7 - movs r2, 0x7 - bl sub_80C210C - movs r0, 0x4 - movs r1, 0x8 - movs r2, 0x8 - bl sub_80C210C - movs r0, 0x5 - movs r1, 0x9 - movs r2, 0x9 - bl sub_80C210C - pop {r0} - bx r0 - thumb_func_end sub_80C2C38 - - thumb_func_start sub_80C2C7C -sub_80C2C7C: @ 80C2C7C - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080C2CA0 @ =gUnknown_20399E0 - ldr r3, [r1] - ldr r4, _080C2CA4 @ =0x00000ccf - adds r0, r3, r4 - ldrb r0, [r0] - adds r4, r1, 0 - cmp r0, 0x7 - bls _080C2C94 - b _080C2DFC -_080C2C94: - lsls r0, 2 - ldr r1, _080C2CA8 @ =_080C2CAC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C2CA0: .4byte gUnknown_20399E0 -_080C2CA4: .4byte 0x00000ccf -_080C2CA8: .4byte _080C2CAC - .align 2, 0 -_080C2CAC: - .4byte _080C2CCC - .4byte _080C2CF4 - .4byte _080C2CFA - .4byte _080C2D1C - .4byte _080C2D6C - .4byte _080C2D84 - .4byte _080C2DB8 - .4byte _080C2DD8 -_080C2CCC: - movs r0, 0x1 - bl sub_80C4ED0 - movs r0, 0x3 - movs r1, 0x3 - bl CopyWindowToVram - movs r0, 0x4 - movs r1, 0x3 - bl CopyWindowToVram - ldr r0, _080C2CEC @ =gUnknown_20399E0 - ldr r1, [r0] - ldr r0, _080C2CF0 @ =0x00000ccf - adds r1, r0 - b _080C2DEC - .align 2, 0 -_080C2CEC: .4byte gUnknown_20399E0 -_080C2CF0: .4byte 0x00000ccf -_080C2CF4: - bl sub_80C2C38 - b _080C2DE4 -_080C2CFA: - ldr r0, _080C2D10 @ =gUnknown_83EF2DC - movs r1, 0 - movs r2, 0xA0 - bl LoadPalette - ldr r0, _080C2D14 @ =gUnknown_20399E0 - ldr r1, [r0] - ldr r3, _080C2D18 @ =0x00000ccf - adds r1, r3 - b _080C2DEC - .align 2, 0 -_080C2D10: .4byte gUnknown_83EF2DC -_080C2D14: .4byte gUnknown_20399E0 -_080C2D18: .4byte 0x00000ccf -_080C2D1C: - movs r0, 0x6 - movs r1, 0 - bl sub_80C22C4 - movs r0, 0x1 - bl sub_80C4324 - movs r0, 0x1 - bl sub_80C3154 - movs r0, 0xFF - movs r1, 0x19 - movs r2, 0x1 - bl sub_80C4960 - movs r0, 0xFF - movs r1, 0x19 - movs r2, 0x1 - bl sub_80C48BC - ldr r1, _080C2D64 @ =gUnknown_20399E0 - ldr r0, [r1] - ldr r4, _080C2D68 @ =0x00000cce - adds r0, r4 - movs r2, 0 - strb r2, [r0] - ldr r0, [r1] - movs r3, 0xCD - lsls r3, 4 - adds r0, r3 - strb r2, [r0] - ldr r1, [r1] - adds r4, 0x1 - adds r1, r4 - b _080C2DEC - .align 2, 0 -_080C2D64: .4byte gUnknown_20399E0 -_080C2D68: .4byte 0x00000cce -_080C2D6C: - bl sub_80C253C - ldr r0, _080C2D7C @ =gUnknown_20399E0 - ldr r1, [r0] - ldr r0, _080C2D80 @ =0x00000ccf - adds r1, r0 - b _080C2DEC - .align 2, 0 -_080C2D7C: .4byte gUnknown_20399E0 -_080C2D80: .4byte 0x00000ccf -_080C2D84: - ldr r0, [r4] - movs r2, 0xCD - lsls r2, 4 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0xF - bne _080C2DA4 - ldrb r0, [r1] - bl sub_80C4C48 - ldr r1, [r4] - ldr r3, _080C2DA0 @ =0x00000ccf - adds r1, r3 - b _080C2DEC - .align 2, 0 -_080C2DA0: .4byte 0x00000ccf -_080C2DA4: - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r4] - movs r4, 0xCD - lsls r4, 4 - adds r0, r4 - ldrb r0, [r0] - bl sub_80C4C48 - b _080C2E0E -_080C2DB8: - bl sub_80C2B9C - bl sub_80C2B48 - movs r0, 0xF3 - bl PlaySE - ldr r0, _080C2DD0 @ =gUnknown_20399E0 - ldr r1, [r0] - ldr r0, _080C2DD4 @ =0x00000ccf - adds r1, r0 - b _080C2DEC - .align 2, 0 -_080C2DD0: .4byte gUnknown_20399E0 -_080C2DD4: .4byte 0x00000ccf -_080C2DD8: - bl sub_80C2E1C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080C2E0E -_080C2DE4: - ldr r0, _080C2DF4 @ =gUnknown_20399E0 - ldr r1, [r0] - ldr r2, _080C2DF8 @ =0x00000ccf - adds r1, r2 -_080C2DEC: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080C2E0E - .align 2, 0 -_080C2DF4: .4byte gUnknown_20399E0 -_080C2DF8: .4byte 0x00000ccf -_080C2DFC: - ldr r1, _080C2E14 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - ldr r4, _080C2E18 @ =0x00000cc8 - adds r1, r3, r4 - ldr r1, [r1] - str r1, [r0] -_080C2E0E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C2E14: .4byte gTasks -_080C2E18: .4byte 0x00000cc8 - thumb_func_end sub_80C2C7C - - thumb_func_start sub_80C2E1C -sub_80C2E1C: @ 80C2E1C - push {r4,r5,lr} - bl sub_80C2B48 - ldr r0, _080C2E40 @ =gUnknown_20399E0 - ldr r2, [r0] - ldr r0, [r2] - movs r4, 0x80 - lsls r4, 3 - adds r0, r4 - ldr r1, [r0] - ldrh r3, [r1, 0x20] - movs r5, 0x20 - ldrsh r0, [r1, r5] - cmp r0, 0x68 - bne _080C2E44 - movs r0, 0x1 - b _080C2FB2 - .align 2, 0 -_080C2E40: .4byte gUnknown_20399E0 -_080C2E44: - ldr r5, _080C2E90 @ =0x00000cce - adds r0, r2, r5 - ldrb r0, [r0] - cmp r0, 0x11 - bls _080C2E94 - adds r0, r3, 0x1 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x4] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x8] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x1 - strh r0, [r1, 0x20] - ldr r0, [r2, 0xC] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x1 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x10] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x1 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x14] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x1 - b _080C2FA0 - .align 2, 0 -_080C2E90: .4byte 0x00000cce -_080C2E94: - cmp r0, 0xE - bls _080C2ED8 - adds r0, r3, 0x2 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x4] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x2 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x8] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x2 - strh r0, [r1, 0x20] - ldr r0, [r2, 0xC] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x2 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x10] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x2 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x14] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x2 - b _080C2FA0 -_080C2ED8: - cmp r0, 0xA - bls _080C2F1C - adds r0, r3, 0x3 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x4] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x3 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x8] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x3 - strh r0, [r1, 0x20] - ldr r0, [r2, 0xC] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x3 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x10] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x3 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x14] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x3 - b _080C2FA0 -_080C2F1C: - cmp r0, 0x6 - bls _080C2F60 - adds r0, r3, 0x5 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x4] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x5 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x8] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x5 - strh r0, [r1, 0x20] - ldr r0, [r2, 0xC] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x5 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x10] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x5 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x14] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x5 - b _080C2FA0 -_080C2F60: - adds r0, r3, 0 - adds r0, 0x8 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x4] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x8 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x8] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - adds r0, 0x8 - strh r0, [r1, 0x20] - ldr r0, [r2, 0xC] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x8 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x10] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x8 - strh r0, [r1, 0x20] - ldr r0, [r2, 0x14] - adds r0, r4 - ldr r1, [r0] - ldrh r0, [r1, 0x20] - subs r0, 0x8 -_080C2FA0: - strh r0, [r1, 0x20] - ldr r0, _080C2FB8 @ =gUnknown_20399E0 - ldr r1, [r0] - ldr r0, _080C2FBC @ =0x00000cce - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - movs r0, 0 -_080C2FB2: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080C2FB8: .4byte gUnknown_20399E0 -_080C2FBC: .4byte 0x00000cce - thumb_func_end sub_80C2E1C - - thumb_func_start sub_80C2FC0 -sub_80C2FC0: @ 80C2FC0 - push {lr} - adds r1, r0, 0 - ldr r0, _080C2FE8 @ =gUnknown_20399E4 - ldr r2, [r0] - ldrh r0, [r2, 0xC] - cmp r0, 0 - beq _080C2FEC - ldrh r0, [r2, 0x8] - ldrh r3, [r1, 0x20] - adds r0, r3 - strh r0, [r1, 0x20] - ldrh r0, [r2, 0xA] - ldrh r3, [r1, 0x22] - adds r0, r3 - strh r0, [r1, 0x22] - ldrh r0, [r2, 0xC] - subs r0, 0x1 - strh r0, [r2, 0xC] - b _080C3004 - .align 2, 0 -_080C2FE8: .4byte gUnknown_20399E4 -_080C2FEC: - ldr r1, [r2, 0x1C] - movs r3, 0 - ldrsh r0, [r2, r3] - lsls r0, 3 - adds r0, 0x24 - strh r0, [r1, 0x20] - ldr r1, [r2, 0x1C] - movs r3, 0x2 - ldrsh r0, [r2, r3] - lsls r0, 3 - adds r0, 0x24 - strh r0, [r1, 0x22] -_080C3004: - pop {r0} - bx r0 - thumb_func_end sub_80C2FC0 - thumb_func_start sub_80C3008 sub_80C3008: @ 80C3008 push {r4-r6,lr} diff --git a/src/region_map.c b/src/region_map.c index e13248640..de12b4de2 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -19,6 +19,12 @@ #include "constants/songs.h" #include "constants/region_map.h" +#define FREE_IF_NOT_NULL(ptr) ({ \ + if (ptr) { \ + FREE_AND_SET_NULL(ptr); \ + } \ +}) + struct UnkStruct_20399D4 { u8 field_0000[19]; @@ -131,21 +137,29 @@ struct UnkStruct_20399E0 TaskFunc field_CC8; u8 field_CCC; u8 field_CCD; - u8 filler_CCE[2]; + u8 field_CCE; + u8 field_CCF; u8 field_CD0; }; // size = 0xCD4 -#define FREE_IF_NOT_NULL(ptr) ({ \ - if (ptr) { \ - FREE_AND_SET_NULL(ptr); \ - } \ -}) +struct UnkStruct_20399E4 +{ + s16 field_000; + s16 field_002; + u8 filler_004[4]; + u16 field_008; + u16 field_00A; + u16 field_00C; + u8 filler_00E[14]; + struct Sprite * field_01C; + u8 filler_020[0x104]; +}; EWRAM_DATA struct UnkStruct_20399D4 * gUnknown_20399D4 = NULL; EWRAM_DATA struct UnkStruct_20399D8 * gUnknown_20399D8 = NULL; EWRAM_DATA struct UnkStruct_20399DC * gUnknown_20399DC = NULL; EWRAM_DATA struct UnkStruct_20399E0 * gUnknown_20399E0 = NULL; -EWRAM_DATA void * gUnknown_20399E4 = NULL; +EWRAM_DATA struct UnkStruct_20399E4 * gUnknown_20399E4 = NULL; EWRAM_DATA void * gUnknown_20399E8 = NULL; EWRAM_DATA void * gUnknown_20399EC = NULL; EWRAM_DATA void * gUnknown_20399F0[3] = {}; @@ -199,6 +213,8 @@ void sub_80C2604(void); bool8 sub_80C29A4(void); void sub_80C2B48(void); void sub_80C2C1C(u8 taskId); +void sub_80C2C7C(u8 taskId); +bool8 sub_80C2E1C(void); void sub_80C3008(u16 a0, u16 a1); void sub_80C3154(u8 a0); void sub_80C3178(void); @@ -1789,3 +1805,230 @@ void sub_80C267C(u8 taskId) break; } } + +bool8 sub_80C29A4(void) +{ + sub_80C2B48(); + if (gUnknown_20399E0->field_000[0]->field_400->pos1.x == 0) + { + return TRUE; + } + else if (gUnknown_20399E0->field_CCE > 17) + { + gUnknown_20399E0->field_000[0]->field_400->pos1.x -= 1; + gUnknown_20399E0->field_000[1]->field_400->pos1.x -= 1; + gUnknown_20399E0->field_000[2]->field_400->pos1.x -= 1; + gUnknown_20399E0->field_000[3]->field_400->pos1.x += 1; + gUnknown_20399E0->field_000[4]->field_400->pos1.x += 1; + gUnknown_20399E0->field_000[5]->field_400->pos1.x += 1; + } + else if (gUnknown_20399E0->field_CCE > 14) + { + gUnknown_20399E0->field_000[0]->field_400->pos1.x -= 2; + gUnknown_20399E0->field_000[1]->field_400->pos1.x -= 2; + gUnknown_20399E0->field_000[2]->field_400->pos1.x -= 2; + gUnknown_20399E0->field_000[3]->field_400->pos1.x += 2; + gUnknown_20399E0->field_000[4]->field_400->pos1.x += 2; + gUnknown_20399E0->field_000[5]->field_400->pos1.x += 2; + } + else if (gUnknown_20399E0->field_CCE > 10) + { + gUnknown_20399E0->field_000[0]->field_400->pos1.x -= 3; + gUnknown_20399E0->field_000[1]->field_400->pos1.x -= 3; + gUnknown_20399E0->field_000[2]->field_400->pos1.x -= 3; + gUnknown_20399E0->field_000[3]->field_400->pos1.x += 3; + gUnknown_20399E0->field_000[4]->field_400->pos1.x += 3; + gUnknown_20399E0->field_000[5]->field_400->pos1.x += 3; + } + else if (gUnknown_20399E0->field_CCE > 6) + { + gUnknown_20399E0->field_000[0]->field_400->pos1.x -= 5; + gUnknown_20399E0->field_000[1]->field_400->pos1.x -= 5; + gUnknown_20399E0->field_000[2]->field_400->pos1.x -= 5; + gUnknown_20399E0->field_000[3]->field_400->pos1.x += 5; + gUnknown_20399E0->field_000[4]->field_400->pos1.x += 5; + gUnknown_20399E0->field_000[5]->field_400->pos1.x += 5; + } + else + { + gUnknown_20399E0->field_000[0]->field_400->pos1.x -= 8; + gUnknown_20399E0->field_000[1]->field_400->pos1.x -= 8; + gUnknown_20399E0->field_000[2]->field_400->pos1.x -= 8; + gUnknown_20399E0->field_000[3]->field_400->pos1.x += 8; + gUnknown_20399E0->field_000[4]->field_400->pos1.x += 8; + gUnknown_20399E0->field_000[5]->field_400->pos1.x += 8; + } + gUnknown_20399E0->field_CCE++; + return FALSE; +} + +void sub_80C2B48(void) +{ + struct UnkStruct_80C4CF0 data; + data.v0 = gUnknown_20399E0->field_000[0]->field_400->pos1.x; + data.v2 = 0x10; + data.v4 = gUnknown_20399E0->field_000[3]->field_400->pos1.x; + data.v6 = 0xA0; + sub_80C4CF0(0, &data); +} + +void sub_80C2B9C(void) +{ + struct UnkStruct_80C4CF0 data; + data.v0 = gUnknown_20399E0->field_000[0]->field_404 + 16; + data.v2 = 0x10; + data.v4 = gUnknown_20399E0->field_000[3]->field_404 - 16; + data.v6 = 0xA0; + sub_80C4C2C(0, 2, 0); + sub_80C4C74(18, 0); + sub_80C4C88(16); + sub_80C4CF0(0, &data); + sub_80C4C9C(0, 0); +} + +void sub_80C2C1C(u8 taskId) +{ + gTasks[taskId].func = sub_80C2C7C; +} + +void sub_80C2C38(void) +{ + sub_80C210C(0, 4, 4); + sub_80C210C(1, 5, 5); + sub_80C210C(2, 6, 6); + sub_80C210C(3, 7, 7); + sub_80C210C(4, 8, 8); + sub_80C210C(5, 9, 9); +} + +void sub_80C2C7C(u8 taskId) +{ + switch (gUnknown_20399E0->field_CCF) + { + case 0: + sub_80C4ED0(TRUE); + CopyWindowToVram(3, 3); + CopyWindowToVram(4, 3); + gUnknown_20399E0->field_CCF++; + break; + case 1: + sub_80C2C38(); + gUnknown_20399E0->field_CCF++; + break; + case 2: + LoadPalette(gUnknown_83EF2DC, 0x00, 0xA0); + gUnknown_20399E0->field_CCF++; + break; + case 3: + sub_80C22C4(6, FALSE); + sub_80C4324(1); + sub_80C3154(1); + sub_80C4960(255, 25, 1); + sub_80C48BC(255, 25, 1); + gUnknown_20399E0->field_CCE = 0; + gUnknown_20399E0->field_CD0 = 0; + gUnknown_20399E0->field_CCF++; + break; + case 4: + sub_80C253C(); + gUnknown_20399E0->field_CCF++; + break; + case 5: + if (gUnknown_20399E0->field_CD0 == 15) + { + sub_80C4C48(gUnknown_20399E0->field_CD0); + gUnknown_20399E0->field_CCF++; + } + else + { + gUnknown_20399E0->field_CD0++; + sub_80C4C48(gUnknown_20399E0->field_CD0); + } + break; + case 6: + sub_80C2B9C(); + sub_80C2B48(); + PlaySE(SE_CARD2); + gUnknown_20399E0->field_CCF++; + break; + case 7: + if (sub_80C2E1C() == TRUE) + gUnknown_20399E0->field_CCF++; + break; + default: + gTasks[taskId].func = gUnknown_20399E0->field_CC8; + break; + } +} + + +bool8 sub_80C2E1C(void) +{ + sub_80C2B48(); + if (gUnknown_20399E0->field_000[0]->field_400->pos1.x == 104) + { + return TRUE; + } + else if (gUnknown_20399E0->field_CCE > 17) + { + gUnknown_20399E0->field_000[0]->field_400->pos1.x += 1; + gUnknown_20399E0->field_000[1]->field_400->pos1.x += 1; + gUnknown_20399E0->field_000[2]->field_400->pos1.x += 1; + gUnknown_20399E0->field_000[3]->field_400->pos1.x -= 1; + gUnknown_20399E0->field_000[4]->field_400->pos1.x -= 1; + gUnknown_20399E0->field_000[5]->field_400->pos1.x -= 1; + } + else if (gUnknown_20399E0->field_CCE > 14) + { + gUnknown_20399E0->field_000[0]->field_400->pos1.x += 2; + gUnknown_20399E0->field_000[1]->field_400->pos1.x += 2; + gUnknown_20399E0->field_000[2]->field_400->pos1.x += 2; + gUnknown_20399E0->field_000[3]->field_400->pos1.x -= 2; + gUnknown_20399E0->field_000[4]->field_400->pos1.x -= 2; + gUnknown_20399E0->field_000[5]->field_400->pos1.x -= 2; + } + else if (gUnknown_20399E0->field_CCE > 10) + { + gUnknown_20399E0->field_000[0]->field_400->pos1.x += 3; + gUnknown_20399E0->field_000[1]->field_400->pos1.x += 3; + gUnknown_20399E0->field_000[2]->field_400->pos1.x += 3; + gUnknown_20399E0->field_000[3]->field_400->pos1.x -= 3; + gUnknown_20399E0->field_000[4]->field_400->pos1.x -= 3; + gUnknown_20399E0->field_000[5]->field_400->pos1.x -= 3; + } + else if (gUnknown_20399E0->field_CCE > 6) + { + gUnknown_20399E0->field_000[0]->field_400->pos1.x += 5; + gUnknown_20399E0->field_000[1]->field_400->pos1.x += 5; + gUnknown_20399E0->field_000[2]->field_400->pos1.x += 5; + gUnknown_20399E0->field_000[3]->field_400->pos1.x -= 5; + gUnknown_20399E0->field_000[4]->field_400->pos1.x -= 5; + gUnknown_20399E0->field_000[5]->field_400->pos1.x -= 5; + } + else + { + gUnknown_20399E0->field_000[0]->field_400->pos1.x += 8; + gUnknown_20399E0->field_000[1]->field_400->pos1.x += 8; + gUnknown_20399E0->field_000[2]->field_400->pos1.x += 8; + gUnknown_20399E0->field_000[3]->field_400->pos1.x -= 8; + gUnknown_20399E0->field_000[4]->field_400->pos1.x -= 8; + gUnknown_20399E0->field_000[5]->field_400->pos1.x -= 8; + } + gUnknown_20399E0->field_CCE++; + return FALSE; +} + +void sub_80C2FC0(struct Sprite * sprite) +{ + if (gUnknown_20399E4->field_00C != 0) + { + sprite->pos1.x += gUnknown_20399E4->field_008; + sprite->pos1.y += gUnknown_20399E4->field_00A; + gUnknown_20399E4->field_00C--; + } + else + { + gUnknown_20399E4->field_01C->pos1.x = 8 * gUnknown_20399E4->field_000 + 36; + gUnknown_20399E4->field_01C->pos1.y = 8 * gUnknown_20399E4->field_002 + 36; + } +} |