summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/region_map.s815
-rw-r--r--src/region_map.c257
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;
+ }
+}