through sub_80C2FC0

This commit is contained in:
PikalaxALT 2020-01-06 11:39:17 -05:00
parent 29e7c9a807
commit 232c3e5917
2 changed files with 250 additions and 822 deletions

View File

@ -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}

View File

@ -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;
}
}