Decompile sub_51FC in pokdedex.c

This commit is contained in:
Marcus Huderle 2025-02-02 18:55:59 -06:00
parent b55712a7e7
commit 98d74a72df
3 changed files with 231 additions and 947 deletions

View File

@ -5,950 +5,6 @@
.text
thumb_func_start sub_51FC
sub_51FC: @ 0x080051FC
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
sub sp, #0x18
ldr r4, _08005348 @ =gUnknown_0200B3B8
adds r7, r4, #0
adds r7, #0xb8
movs r0, #0xb8
lsls r0, r0, #1
adds r0, r0, r4
mov r8, r0
movs r1, #0x8a
lsls r1, r1, #2
adds r1, r1, r4
mov sl, r1
ldr r0, _0800534C @ =gUnknown_0201A448
movs r2, #0
ldrsh r0, [r0, r2]
movs r2, #0xb8
adds r1, r0, #0
muls r1, r2, r1
movs r3, #0xe6
lsls r3, r3, #2
adds r0, r4, r3
adds r1, r1, r0
str r1, [sp]
ldr r0, _08005350 @ =gUnknown_0202BEFC
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r1, r0, #0
muls r1, r2, r1
ldr r3, _08005354 @ =0x00000C38
adds r0, r4, r3
adds r1, r1, r0
mov sb, r1
ldr r0, _08005358 @ =gUnknown_0202BEE0
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r1, r0, #0
muls r1, r2, r1
movs r3, #0xfd
lsls r3, r3, #4
adds r0, r4, r3
adds r1, r1, r0
str r1, [sp, #4]
ldr r0, _0800535C @ =gUnknown_02019C28
movs r1, #0
ldrsb r1, [r0, r1]
lsls r1, r1, #1
ldr r0, _08005360 @ =gUnknown_0202C5AC
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, #0x19
adds r1, r1, r0
adds r0, r1, #0
muls r0, r2, r0
adds r0, r0, r4
str r0, [sp, #8]
movs r0, #1
strh r0, [r4]
strh r0, [r7]
ldr r0, _08005364 @ =gUnknown_0202A55C
ldrh r0, [r0]
mov r1, r8
strh r0, [r1]
ldr r1, _08005368 @ =gUnknown_0202A568
ldrh r0, [r1]
mov r2, sl
strh r0, [r2]
ldrh r0, [r1, #2]
ldr r3, _0800536C @ =gUnknown_0200B698
strh r0, [r3]
ldr r0, _08005370 @ =gUnknown_0202A588
ldrh r0, [r0]
ldr r1, [sp]
strh r0, [r1]
ldr r0, _08005374 @ =gUnknown_0202BEC4
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
mov r2, sb
strh r0, [r2]
ldr r0, _08005378 @ =gUnknown_0202BF04
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldr r3, [sp, #4]
strh r0, [r3]
ldr r0, _0800537C @ =gUnknown_0202C590
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldr r1, _08005380 @ =gUnknown_0200C4F8
strh r0, [r1]
ldr r0, _08005384 @ =gUnknown_0201C1B4
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
ldr r2, [sp, #8]
strh r0, [r2]
ldr r0, _08005388 @ =gUnknown_086A6148
movs r1, #0x1d
adds r2, r4, #0
bl LoadSpriteSets
ldr r0, _0800538C @ =gUnknown_0201A4F0
ldrh r0, [r0]
adds r0, #0x14
strh r0, [r4, #2]
ldr r0, _08005390 @ =gUnknown_0202A57C
movs r3, #0
ldrsh r0, [r0, r3]
lsls r0, r0, #4
adds r0, #0x54
strh r0, [r4, #4]
adds r6, r4, #0
adds r6, #8
ldr r5, _08005394 @ =gOamBuffer
ldrh r1, [r4, #8]
lsls r1, r1, #3
adds r1, r1, r5
ldrb r0, [r1, #5]
movs r2, #0xc
orrs r0, r2
strb r0, [r1, #5]
ldrh r2, [r4, #8]
lsls r2, r2, #3
adds r2, r2, r5
movs r0, #2
ldrsh r1, [r6, r0]
movs r3, #2
ldrsh r0, [r4, r3]
adds r1, r1, r0
ldr r3, _08005398 @ =0x000001FF
adds r0, r3, #0
ands r1, r0
ldrh r3, [r2, #2]
ldr r0, _0800539C @ =0xFFFFFE00
ands r0, r3
orrs r0, r1
strh r0, [r2, #2]
ldrh r1, [r4, #8]
lsls r1, r1, #3
adds r1, r1, r5
ldrb r0, [r4, #4]
ldrb r6, [r6, #4]
adds r0, r0, r6
strb r0, [r1]
ldr r1, _080053A0 @ =gUnknown_0202ADE0
movs r4, #0
ldrsh r0, [r1, r4]
cmp r0, #0xc7
bgt _080053A8
ldr r4, _080053A4 @ =gUnknown_0202BF08
movs r1, #3
bl __divsi3
adds r0, #0x56
strh r0, [r4]
adds r1, r4, #0
b _080053AE
.align 2, 0
_08005348: .4byte gUnknown_0200B3B8
_0800534C: .4byte gUnknown_0201A448
_08005350: .4byte gUnknown_0202BEFC
_08005354: .4byte 0x00000C38
_08005358: .4byte gUnknown_0202BEE0
_0800535C: .4byte gUnknown_02019C28
_08005360: .4byte gUnknown_0202C5AC
_08005364: .4byte gUnknown_0202A55C
_08005368: .4byte gUnknown_0202A568
_0800536C: .4byte gUnknown_0200B698
_08005370: .4byte gUnknown_0202A588
_08005374: .4byte gUnknown_0202BEC4
_08005378: .4byte gUnknown_0202BF04
_0800537C: .4byte gUnknown_0202C590
_08005380: .4byte gUnknown_0200C4F8
_08005384: .4byte gUnknown_0201C1B4
_08005388: .4byte gUnknown_086A6148
_0800538C: .4byte gUnknown_0201A4F0
_08005390: .4byte gUnknown_0202A57C
_08005394: .4byte gOamBuffer
_08005398: .4byte 0x000001FF
_0800539C: .4byte 0xFFFFFE00
_080053A0: .4byte gUnknown_0202ADE0
_080053A4: .4byte gUnknown_0202BF08
_080053A8:
ldr r1, _08005564 @ =gUnknown_0202BF08
movs r0, #0x98
strh r0, [r1]
_080053AE:
movs r0, #0xd
strh r0, [r7, #2]
ldrh r0, [r1]
strh r0, [r7, #4]
adds r6, r7, #0
adds r6, #8
ldr r4, _08005568 @ =gOamBuffer
ldrh r1, [r7, #8]
lsls r1, r1, #3
adds r1, r1, r4
ldrb r0, [r1, #5]
movs r2, #0xc
orrs r0, r2
strb r0, [r1, #5]
ldrh r2, [r7, #8]
lsls r2, r2, #3
adds r2, r2, r4
movs r3, #2
ldrsh r1, [r6, r3]
movs r3, #2
ldrsh r0, [r7, r3]
adds r1, r1, r0
ldr r3, _0800556C @ =0x000001FF
adds r0, r3, #0
ands r1, r0
ldrh r3, [r2, #2]
ldr r0, _08005570 @ =0xFFFFFE00
mov ip, r0
ands r0, r3
orrs r0, r1
strh r0, [r2, #2]
ldrh r1, [r7, #8]
lsls r1, r1, #3
adds r1, r1, r4
ldrb r0, [r7, #4]
ldrb r6, [r6, #4]
adds r0, r0, r6
strb r0, [r1]
mov r1, r8
ldrh r0, [r1]
cmp r0, #1
bne _0800545E
movs r0, #0x24
strh r0, [r1, #2]
strh r0, [r1, #4]
adds r5, r4, #0
mov r4, r8
adds r4, #8
movs r6, #5
_08005410:
ldrh r2, [r4]
lsls r2, r2, #3
adds r2, r2, r5
ldrb r1, [r2, #5]
movs r0, #0xd
rsbs r0, r0, #0
ands r0, r1
movs r1, #4
orrs r0, r1
strb r0, [r2, #5]
ldrh r3, [r4]
lsls r3, r3, #3
adds r3, r3, r5
movs r2, #2
ldrsh r1, [r4, r2]
mov r7, r8
movs r2, #2
ldrsh r0, [r7, r2]
adds r1, r1, r0
ldr r7, _0800556C @ =0x000001FF
adds r0, r7, #0
ands r1, r0
ldrh r2, [r3, #2]
mov r0, ip
ands r0, r2
orrs r0, r1
strh r0, [r3, #2]
ldrh r1, [r4]
lsls r1, r1, #3
adds r1, r1, r5
mov r2, r8
ldrb r0, [r2, #4]
ldrb r3, [r4, #4]
adds r0, r0, r3
strb r0, [r1]
adds r4, #8
subs r6, #1
cmp r6, #0
bge _08005410
_0800545E:
mov r4, sl
ldrh r0, [r4]
cmp r0, #1
bne _08005536
movs r0, #0x24
strh r0, [r4, #2]
movs r0, #0x1c
strh r0, [r4, #4]
movs r6, #0
ldr r7, _08005574 @ =gUnknown_0202BF0C
mov r8, r7
ldr r7, _08005568 @ =gOamBuffer
mov r5, sl
adds r5, #8
ldr r0, _08005570 @ =0xFFFFFE00
mov ip, r0
_0800547E:
ldrh r2, [r5]
lsls r2, r2, #3
adds r2, r2, r7
ldrb r1, [r2, #5]
movs r0, #0xd
rsbs r0, r0, #0
ands r0, r1
movs r1, #4
orrs r0, r1
strb r0, [r2, #5]
ldrh r4, [r5]
lsls r4, r4, #3
adds r4, r4, r7
lsls r3, r6, #1
ldr r1, _08005578 @ =gUnknown_0202BF14
movs r0, #0
ldrsh r2, [r1, r0]
lsls r0, r2, #3
adds r3, r3, r0
ldr r1, _0800557C @ =gUnknown_086A5DDA
adds r3, r3, r1
str r3, [sp, #0x14]
mov r3, r8
movs r0, #0
ldrsh r1, [r3, r0]
lsls r1, r1, #1
lsls r0, r2, #2
adds r0, r0, r2
lsls r0, r0, #3
adds r1, r1, r0
ldr r2, _08005580 @ =gUnknown_086A5DF2
adds r1, r1, r2
ldrh r1, [r1]
ldr r3, [sp, #0x14]
ldrh r3, [r3]
adds r1, r1, r3
ldr r2, _08005584 @ =0x000003FF
adds r0, r2, #0
ands r1, r0
ldrh r2, [r4, #4]
ldr r0, _08005588 @ =0xFFFFFC00
ands r0, r2
orrs r0, r1
strh r0, [r4, #4]
ldrh r3, [r5]
lsls r3, r3, #3
adds r3, r3, r7
movs r4, #2
ldrsh r1, [r5, r4]
mov r2, sl
movs r4, #2
ldrsh r0, [r2, r4]
adds r1, r1, r0
ldr r2, _0800556C @ =0x000001FF
adds r0, r2, #0
ands r1, r0
ldrh r2, [r3, #2]
mov r0, ip
ands r0, r2
orrs r0, r1
strh r0, [r3, #2]
ldrh r1, [r5]
lsls r1, r1, #3
adds r1, r1, r7
mov r3, sl
ldrb r0, [r3, #4]
ldrb r4, [r5, #4]
adds r0, r0, r4
strb r0, [r1]
adds r5, #8
adds r6, #1
cmp r6, #3
ble _0800547E
ldr r7, _0800558C @ =gUnknown_0201A440
ldrh r0, [r7]
adds r0, #1
strh r0, [r7]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0xe
ble _08005536
movs r1, #0
strh r1, [r7]
mov r2, r8
ldrh r0, [r2]
adds r0, #1
strh r0, [r2]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #8
ble _08005536
strh r1, [r2]
_08005536:
ldr r3, _08005590 @ =gUnknown_0200B698
ldrh r0, [r3]
cmp r0, #1
beq _08005540
b _0800568A
_08005540:
ldr r1, _08005594 @ =gUnknown_086A6356
ldr r0, _08005598 @ =gUnknown_0202ADE0
movs r4, #0
ldrsh r0, [r0, r4]
lsls r0, r0, #1
adds r0, r0, r1
movs r7, #0
ldrsh r1, [r0, r7]
movs r0, #1
rsbs r0, r0, #0
cmp r1, r0
bne _0800559C
movs r0, #1
str r0, [sp, #0x10]
movs r1, #0x24
str r1, [sp, #0xc]
b _080055A4
.align 2, 0
_08005564: .4byte gUnknown_0202BF08
_08005568: .4byte gOamBuffer
_0800556C: .4byte 0x000001FF
_08005570: .4byte 0xFFFFFE00
_08005574: .4byte gUnknown_0202BF0C
_08005578: .4byte gUnknown_0202BF14
_0800557C: .4byte gUnknown_086A5DDA
_08005580: .4byte gUnknown_086A5DF2
_08005584: .4byte 0x000003FF
_08005588: .4byte 0xFFFFFC00
_0800558C: .4byte gUnknown_0201A440
_08005590: .4byte gUnknown_0200B698
_08005594: .4byte gUnknown_086A6356
_08005598: .4byte gUnknown_0202ADE0
_0800559C:
movs r2, #2
str r2, [sp, #0x10]
movs r3, #0x30
str r3, [sp, #0xc]
_080055A4:
movs r0, #0x30
ldr r4, _08005760 @ =gUnknown_0200B698
strh r0, [r4, #2]
movs r0, #0x28
strh r0, [r4, #4]
movs r6, #0
ldr r7, _08005764 @ =gUnknown_0202BF0C
mov r8, r7
ldr r0, [sp, #0x10]
lsls r0, r0, #3
mov sl, r0
ldr r5, _08005768 @ =gOamBuffer
adds r4, #8
movs r0, #0x66
ldr r2, [sp, #0x10]
adds r1, r2, #0
muls r1, r0, r1
mov ip, r1
_080055C8:
ldrh r2, [r4]
lsls r2, r2, #3
adds r2, r2, r5
ldrb r1, [r2, #5]
movs r0, #0xd
rsbs r0, r0, #0
ands r0, r1
movs r1, #4
orrs r0, r1
strb r0, [r2, #5]
ldrh r3, [r4]
lsls r3, r3, #3
adds r3, r3, r5
lsls r2, r6, #1
add r2, sl
ldr r7, _0800576C @ =gUnknown_086A5DDA
adds r2, r2, r7
mov r1, r8
movs r7, #0
ldrsh r0, [r1, r7]
lsls r0, r0, #1
add r0, ip
ldr r1, _08005770 @ =gUnknown_086A5EE2
adds r0, r0, r1
ldrh r1, [r0]
ldrh r2, [r2]
adds r1, r1, r2
ldr r2, _08005774 @ =0x000003FF
adds r0, r2, #0
ands r1, r0
ldrh r2, [r3, #4]
ldr r0, _08005778 @ =0xFFFFFC00
ands r0, r2
orrs r0, r1
strh r0, [r3, #4]
ldrh r3, [r4]
lsls r3, r3, #3
adds r3, r3, r5
movs r7, #2
ldrsh r1, [r4, r7]
ldr r2, _08005760 @ =gUnknown_0200B698
movs r7, #2
ldrsh r0, [r2, r7]
adds r1, r1, r0
ldr r2, _0800577C @ =0x000001FF
adds r0, r2, #0
ands r1, r0
ldrh r2, [r3, #2]
ldr r0, _08005780 @ =0xFFFFFE00
ands r0, r2
orrs r0, r1
strh r0, [r3, #2]
ldrh r1, [r4]
lsls r1, r1, #3
adds r1, r1, r5
ldr r3, _08005760 @ =gUnknown_0200B698
ldrb r0, [r3, #4]
ldrb r7, [r4, #4]
adds r0, r0, r7
strb r0, [r1]
adds r4, #8
adds r6, #1
cmp r6, #3
ble _080055C8
ldr r0, _08005784 @ =gUnknown_0201A440
ldrh r1, [r0]
adds r1, #1
strh r1, [r0]
mov r2, r8
movs r3, #0
ldrsh r0, [r2, r3]
lsls r0, r0, #1
movs r2, #0x66
ldr r4, [sp, #0x10]
muls r2, r4, r2
adds r0, r0, r2
ldr r7, _08005788 @ =gUnknown_086A6014
adds r0, r0, r7
lsls r1, r1, #0x10
asrs r1, r1, #0x10
movs r2, #0
ldrsh r0, [r0, r2]
cmp r1, r0
ble _0800568A
movs r1, #0
ldr r3, _08005784 @ =gUnknown_0201A440
strh r1, [r3]
mov r4, r8
ldrh r0, [r4]
adds r0, #1
strh r0, [r4]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
ldr r7, [sp, #0xc]
cmp r0, r7
ble _0800568A
strh r1, [r4]
_0800568A:
ldr r1, [sp]
ldrh r0, [r1]
cmp r0, #1
bne _0800573C
movs r0, #0x24
strh r0, [r1, #2]
movs r0, #0x40
strh r0, [r1, #4]
ldr r2, _0800578C @ =gUnknown_086A6148
ldr r1, _08005790 @ =gUnknown_0201A448
movs r3, #0
ldrsh r0, [r1, r3]
adds r0, #5
lsls r0, r0, #2
adds r0, r0, r2
ldr r5, [r0]
movs r6, #0
mov r8, r1
ldr r4, _08005794 @ =gUnknown_0202BF00
mov ip, r4
ldrh r7, [r5]
cmp r6, r7
bge _08005716
ldr r0, _08005780 @ =0xFFFFFE00
mov sl, r0
ldr r4, [sp]
adds r4, #8
_080056C0:
ldrh r2, [r4]
lsls r2, r2, #3
ldr r1, _08005768 @ =gOamBuffer
adds r2, r2, r1
ldrb r1, [r2, #5]
movs r0, #0xd
rsbs r0, r0, #0
ands r0, r1
movs r1, #4
orrs r0, r1
strb r0, [r2, #5]
ldrh r3, [r4]
lsls r3, r3, #3
ldr r2, _08005768 @ =gOamBuffer
adds r3, r3, r2
movs r7, #2
ldrsh r1, [r4, r7]
ldr r2, [sp]
movs r7, #2
ldrsh r0, [r2, r7]
adds r1, r1, r0
ldr r2, _0800577C @ =0x000001FF
adds r0, r2, #0
ands r1, r0
ldrh r2, [r3, #2]
mov r0, sl
ands r0, r2
orrs r0, r1
strh r0, [r3, #2]
ldrh r1, [r4]
lsls r1, r1, #3
ldr r3, _08005768 @ =gOamBuffer
adds r1, r1, r3
ldr r7, [sp]
ldrb r0, [r7, #4]
ldrb r2, [r4, #4]
adds r0, r0, r2
strb r0, [r1]
adds r4, #8
adds r6, #1
ldrh r3, [r5]
cmp r6, r3
blt _080056C0
_08005716:
mov r4, ip
ldrh r0, [r4]
adds r0, #1
strh r0, [r4]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #8
ble _0800573C
movs r1, #0
strh r1, [r4]
mov r7, r8
ldrh r0, [r7]
adds r0, #1
strh r0, [r7]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0xb
ble _0800573C
strh r1, [r7]
_0800573C:
mov r1, sb
ldrh r0, [r1]
cmp r0, #1
bne _08005818
ldr r0, _08005798 @ =gUnknown_0202BEFC
movs r1, #0
ldrsb r1, [r0, r1]
adds r2, r0, #0
cmp r1, #0
beq _08005754
cmp r1, #4
bne _0800579C
_08005754:
movs r0, #0x78
mov r3, sb
strh r0, [r3, #2]
movs r0, #0x64
strh r0, [r3, #4]
b _080057A6
.align 2, 0
_08005760: .4byte gUnknown_0200B698
_08005764: .4byte gUnknown_0202BF0C
_08005768: .4byte gOamBuffer
_0800576C: .4byte gUnknown_086A5DDA
_08005770: .4byte gUnknown_086A5EE2
_08005774: .4byte 0x000003FF
_08005778: .4byte 0xFFFFFC00
_0800577C: .4byte 0x000001FF
_08005780: .4byte 0xFFFFFE00
_08005784: .4byte gUnknown_0201A440
_08005788: .4byte gUnknown_086A6014
_0800578C: .4byte gUnknown_086A6148
_08005790: .4byte gUnknown_0201A448
_08005794: .4byte gUnknown_0202BF00
_08005798: .4byte gUnknown_0202BEFC
_0800579C:
movs r0, #0x78
mov r4, sb
strh r0, [r4, #2]
movs r0, #0x50
strh r0, [r4, #4]
_080057A6:
ldr r1, _0800597C @ =gUnknown_086A6148
movs r0, #0
ldrsb r0, [r2, r0]
adds r0, #0x11
lsls r0, r0, #2
adds r0, r0, r1
ldr r5, [r0]
movs r6, #0
ldrh r7, [r5]
cmp r6, r7
bge _08005818
ldr r0, _08005980 @ =gOamBuffer
mov ip, r0
movs r1, #0xd
rsbs r1, r1, #0
mov sl, r1
ldr r2, _08005984 @ =0xFFFFFE00
mov r8, r2
mov r4, sb
adds r4, #8
_080057CE:
ldrh r1, [r4]
lsls r1, r1, #3
add r1, ip
ldrb r2, [r1, #5]
mov r0, sl
ands r0, r2
strb r0, [r1, #5]
ldrh r3, [r4]
lsls r3, r3, #3
add r3, ip
movs r7, #2
ldrsh r1, [r4, r7]
mov r2, sb
movs r7, #2
ldrsh r0, [r2, r7]
adds r1, r1, r0
ldr r2, _08005988 @ =0x000001FF
adds r0, r2, #0
ands r1, r0
ldrh r2, [r3, #2]
mov r0, r8
ands r0, r2
orrs r0, r1
strh r0, [r3, #2]
ldrh r1, [r4]
lsls r1, r1, #3
add r1, ip
mov r3, sb
ldrb r0, [r3, #4]
ldrb r7, [r4, #4]
adds r0, r0, r7
strb r0, [r1]
adds r4, #8
adds r6, #1
ldrh r0, [r5]
cmp r6, r0
blt _080057CE
_08005818:
ldr r1, [sp, #4]
ldrh r0, [r1]
cmp r0, #1
bne _0800588A
movs r0, #0x9e
strh r0, [r1, #2]
movs r0, #0x94
strh r0, [r1, #4]
ldr r1, _0800597C @ =gUnknown_086A6148
ldr r0, _0800598C @ =gUnknown_0202BEE0
ldrb r0, [r0]
lsls r0, r0, #0x18
asrs r0, r0, #0x18
adds r0, #0x16
lsls r0, r0, #2
adds r0, r0, r1
ldr r5, [r0]
movs r6, #0
ldrh r2, [r5]
cmp r6, r2
bge _0800588A
ldr r3, _08005980 @ =gOamBuffer
mov sl, r3
ldr r4, _08005984 @ =0xFFFFFE00
mov r8, r4
ldr r4, [sp, #4]
adds r4, #8
_0800584E:
ldrh r3, [r4]
lsls r3, r3, #3
add r3, sl
movs r7, #2
ldrsh r1, [r4, r7]
ldr r2, [sp, #4]
movs r7, #2
ldrsh r0, [r2, r7]
adds r1, r1, r0
ldr r2, _08005988 @ =0x000001FF
adds r0, r2, #0
ands r1, r0
ldrh r2, [r3, #2]
mov r0, r8
ands r0, r2
orrs r0, r1
strh r0, [r3, #2]
ldrh r1, [r4]
lsls r1, r1, #3
add r1, sl
ldr r3, [sp, #4]
ldrb r0, [r3, #4]
ldrb r7, [r4, #4]
adds r0, r0, r7
strb r0, [r1]
adds r4, #8
adds r6, #1
ldrh r0, [r5]
cmp r6, r0
blt _0800584E
_0800588A:
ldr r1, _08005990 @ =gUnknown_0200C4F8
ldrh r0, [r1]
cmp r0, #1
bne _080058EE
movs r0, #0xa8
strh r0, [r1, #2]
movs r0, #0x54
strh r0, [r1, #4]
ldr r5, _08005980 @ =gOamBuffer
ldr r2, _08005984 @ =0xFFFFFE00
mov r8, r2
adds r4, r1, #0
adds r4, #8
movs r6, #2
_080058A6:
ldrh r2, [r4]
lsls r2, r2, #3
adds r2, r2, r5
ldrb r0, [r2, #5]
movs r1, #0xc
orrs r0, r1
strb r0, [r2, #5]
ldrh r3, [r4]
lsls r3, r3, #3
adds r3, r3, r5
movs r7, #2
ldrsh r1, [r4, r7]
ldr r2, _08005990 @ =gUnknown_0200C4F8
movs r7, #2
ldrsh r0, [r2, r7]
adds r1, r1, r0
ldr r2, _08005988 @ =0x000001FF
adds r0, r2, #0
ands r1, r0
ldrh r2, [r3, #2]
mov r0, r8
ands r0, r2
orrs r0, r1
strh r0, [r3, #2]
ldrh r1, [r4]
lsls r1, r1, #3
adds r1, r1, r5
ldr r3, _08005990 @ =gUnknown_0200C4F8
ldrb r0, [r3, #4]
ldrb r7, [r4, #4]
adds r0, r0, r7
strb r0, [r1]
adds r4, #8
subs r6, #1
cmp r6, #0
bge _080058A6
_080058EE:
ldr r1, [sp, #8]
ldrh r0, [r1]
cmp r0, #1
bne _08005932
movs r0, #0x78
strh r0, [r1, #2]
movs r0, #0x84
strh r0, [r1, #4]
adds r6, r1, #0
adds r6, #8
ldrh r2, [r1, #8]
lsls r2, r2, #3
ldr r3, _08005980 @ =gOamBuffer
adds r2, r2, r3
movs r4, #2
ldrsh r1, [r6, r4]
adds r1, #0x78
ldr r7, _08005988 @ =0x000001FF
adds r0, r7, #0
ands r1, r0
ldrh r3, [r2, #2]
ldr r0, _08005984 @ =0xFFFFFE00
ands r0, r3
orrs r0, r1
strh r0, [r2, #2]
ldr r0, [sp, #8]
ldrh r1, [r0, #8]
lsls r1, r1, #3
ldr r2, _08005980 @ =gOamBuffer
adds r1, r1, r2
ldrb r0, [r0, #4]
ldrb r6, [r6, #4]
adds r0, r0, r6
strb r0, [r1]
_08005932:
ldr r3, _08005994 @ =gUnknown_0202BE20
ldrh r0, [r3]
adds r0, #1
strh r0, [r3]
lsls r0, r0, #0x10
asrs r0, r0, #0x10
cmp r0, #0xc
ble _0800595A
movs r0, #0
strh r0, [r3]
ldr r2, _08005998 @ =gUnknown_0201A4F0
ldrh r1, [r2]
movs r0, #1
subs r0, r0, r1
strh r0, [r2]
ldr r2, _0800598C @ =gUnknown_0202BEE0
ldrb r1, [r2]
movs r0, #1
subs r0, r0, r1
strb r0, [r2]
_0800595A:
movs r0, #0
ldr r4, [sp]
strh r0, [r4]
mov r7, sb
strh r0, [r7]
ldr r1, [sp, #4]
strh r0, [r1]
ldr r2, [sp, #8]
strh r0, [r2]
add sp, #0x18
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7}
pop {r0}
bx r0
.align 2, 0
_0800597C: .4byte gUnknown_086A6148
_08005980: .4byte gOamBuffer
_08005984: .4byte 0xFFFFFE00
_08005988: .4byte 0x000001FF
_0800598C: .4byte gUnknown_0202BEE0
_08005990: .4byte gUnknown_0200C4F8
_08005994: .4byte gUnknown_0202BE20
_08005998: .4byte gUnknown_0201A4F0
thumb_func_start sub_599C
sub_599C: @ 0x0800599C
push {r4, r5, r6, r7, lr}

View File

@ -352,7 +352,6 @@ extern void sub_3FAC(void);
//extern ? sub_4BB4();
//extern ? sub_4C80();
//extern ? sub_4D50();
extern void sub_51FC(void);
extern void sub_599C(void);
extern void sub_5E60(void);
//extern ? sub_5EA4();

View File

@ -19,6 +19,15 @@ s16 sub_5EA4(void); // TODO Pretty sure it's s16, but could be u16
void sub_5EC8(void);
void sub_70E0(s16, s32);
void sub_88E4(void);
void sub_51FC(void);
extern const struct SpriteSet *const gUnknown_086A6148[];
extern u16 gUnknown_0202BF08;
extern const u16 gUnknown_086A5DDA[][4];
extern const u16 gUnknown_086A5DF2[][20];
extern const s16 gUnknown_086A6356[];
extern const u16 gUnknown_086A5EE2[][51];
extern const s16 gUnknown_086A6014[][51];
void PokedexMain(void)
{
@ -751,7 +760,7 @@ static void sub_4D74(void)
gUnknown_0202C58C = 9;
}
gUnknown_02019C24 = 1;
}
@ -929,4 +938,224 @@ void sub_51CC(void)
sub_6F78(gUnknown_0202ADE0);
else
sub_8974(gUnknown_0202ADE0);
}
}
void sub_51FC(void)
{
int i;
struct SpriteGroup *group0;
struct SpriteGroup *group1;
struct SpriteGroup *group2;
struct SpriteGroup *group3;
struct SpriteGroup *group4;
struct SpriteGroup *group5;
struct SpriteGroup *group6;
struct SpriteGroup *group7;
struct SpriteGroup *group8;
struct SpriteGroup *group9;
struct OamDataSimple *groupOam;
const struct SpriteSet *spriteSet;
int var0, var1;
group0 = &gUnknown_0200B3B8[0];
group1 = &gUnknown_0200B3B8[1];
group2 = &gUnknown_0200B3B8[2];
group3 = &gUnknown_0200B3B8[3];
group4 = &gUnknown_0200B3B8[4];
group5 = &gUnknown_0200B3B8[5 + gUnknown_0201A448];
group6 = &gUnknown_0200B3B8[17 + gUnknown_0202BEFC];
group7 = &gUnknown_0200B3B8[22 + gUnknown_0202BEE0];
group8 = &gUnknown_0200B3B8[24];
group9 = &gUnknown_0200B3B8[25 + gUnknown_02019C28 * 2 + gUnknown_0202C5AC];
group0->available = 1;
group1->available = 1;
group2->available = gUnknown_0202A55C;
group3->available = gUnknown_0202A568[0];
group4->available = gUnknown_0202A568[1];
group5->available = gUnknown_0202A588;
group6->available = gUnknown_0202BEC4;
group7->available = gUnknown_0202BF04;
group8->available = gUnknown_0202C590;
group9->available = gUnknown_0201C1B4;
LoadSpriteSets(gUnknown_086A6148, 29, group0);
group0->baseX = 20 + gUnknown_0201A4F0;
group0->baseY = 84 + gUnknown_0202A57C * 16;
groupOam = &group0->oam[0];
gOamBuffer[groupOam->oamId].priority = 3;
gOamBuffer[groupOam->oamId].x = groupOam->xOffset + group0->baseX;
gOamBuffer[groupOam->oamId].y = groupOam->yOffset + group0->baseY;
if (gUnknown_0202ADE0 < 200)
gUnknown_0202BF08 = 86 + gUnknown_0202ADE0 / 3;
else
gUnknown_0202BF08 = 152;
group1->baseX = 13;
group1->baseY = gUnknown_0202BF08;
groupOam = &group1->oam[0];
gOamBuffer[groupOam->oamId].priority = 3;
gOamBuffer[groupOam->oamId].x = groupOam->xOffset + group1->baseX;
gOamBuffer[groupOam->oamId].y = groupOam->yOffset + group1->baseY;
if (group2->available == 1)
{
group2->baseX = 36;
group2->baseY = 36;
for (i = 0; i < 6; i++)
{
groupOam = &group2->oam[i];
gOamBuffer[group2->oam[i].oamId].priority = 1;
gOamBuffer[group2->oam[i].oamId].x = groupOam->xOffset + group2->baseX;
gOamBuffer[group2->oam[i].oamId].y = groupOam->yOffset + group2->baseY;
}
}
if (group3->available == 1)
{
group3->baseX = 36;
group3->baseY = 28;
for (i = 0; i < 4; i++)
{
groupOam = &group3->oam[i];
gOamBuffer[groupOam->oamId].priority = 1;
gOamBuffer[groupOam->oamId].tileNum = gUnknown_086A5DDA[gUnknown_0202BF14][i] +
gUnknown_086A5DF2[gUnknown_0202BF14][gUnknown_0202BF0C];
;
gOamBuffer[groupOam->oamId].x = groupOam->xOffset + group3->baseX;
gOamBuffer[groupOam->oamId].y = groupOam->yOffset + group3->baseY;
}
if (++gUnknown_0201A440 > 14)
{
gUnknown_0201A440 = 0;
if (++gUnknown_0202BF0C > 8)
gUnknown_0202BF0C = 0;
}
}
if (group4->available == 1)
{
if (gUnknown_086A6356[gUnknown_0202ADE0] == -1)
{
var0 = 1;
var1 = 36;
}
else
{
var0 = 2;
var1 = 48;
}
group4->baseX = 48;
group4->baseY = 40;
for (i = 0; i < 4; i++)
{
groupOam = &group4->oam[i];
gOamBuffer[groupOam->oamId].priority = 1;
gOamBuffer[groupOam->oamId].tileNum = gUnknown_086A5DDA[var0][i] + gUnknown_086A5EE2[var0][gUnknown_0202BF0C];
gOamBuffer[groupOam->oamId].x = groupOam->xOffset + group4->baseX;
gOamBuffer[groupOam->oamId].y = groupOam->yOffset + group4->baseY;
}
if (++gUnknown_0201A440 > gUnknown_086A6014[var0][gUnknown_0202BF0C])
{
gUnknown_0201A440 = 0;
if (++gUnknown_0202BF0C > var1)
gUnknown_0202BF0C = 0;
}
}
if (group5->available == 1)
{
group5->baseX = 36;
group5->baseY = 64;
spriteSet = gUnknown_086A6148[5 + gUnknown_0201A448];
for (i = 0; i < spriteSet->count; i++)
{
groupOam = &group5->oam[i];
gOamBuffer[groupOam->oamId].priority = 1;
gOamBuffer[groupOam->oamId].x = groupOam->xOffset + group5->baseX;
gOamBuffer[groupOam->oamId].y = groupOam->yOffset + group5->baseY;
}
if (++gUnknown_0202BF00 > 8)
{
gUnknown_0202BF00 = 0;
if (++gUnknown_0201A448 > 11)
gUnknown_0201A448 = 0;
}
}
if (group6->available == 1)
{
int sp10, spC;
if (gUnknown_0202BEFC == 0 || gUnknown_0202BEFC == 4)
{
group6->baseX = 120;
group6->baseY = 100;
}
else
{
group6->baseX = 120;
group6->baseY = 80;
}
spriteSet = gUnknown_086A6148[17 + gUnknown_0202BEFC];
for (i = 0; i < spriteSet->count; i++)
{
groupOam = &group6->oam[i];
gOamBuffer[groupOam->oamId].priority = 0;
gOamBuffer[groupOam->oamId].x = groupOam->xOffset + group6->baseX;
gOamBuffer[groupOam->oamId].y = groupOam->yOffset + group6->baseY;
}
}
if (group7->available == 1)
{
group7->baseX = 158;
group7->baseY = 148;
spriteSet = gUnknown_086A6148[22 + gUnknown_0202BEE0];
for (i = 0; i < spriteSet->count; i++)
{
groupOam = &group7->oam[i];
gOamBuffer[groupOam->oamId].x = groupOam->xOffset + group7->baseX;
gOamBuffer[groupOam->oamId].y = groupOam->yOffset + group7->baseY;
}
}
if (group8->available == 1)
{
group8->baseX = 168;
group8->baseY = 84;
for (i = 0; i < 3; i++)
{
groupOam = &group8->oam[i];
gOamBuffer[groupOam->oamId].priority = 3;
gOamBuffer[groupOam->oamId].x = groupOam->xOffset + group8->baseX;
gOamBuffer[groupOam->oamId].y = groupOam->yOffset + group8->baseY;
}
}
if (group9->available == 1)
{
group9->baseX = 120;
group9->baseY = 132;
groupOam = &group9->oam[0];
gOamBuffer[groupOam->oamId].x = groupOam->xOffset + group9->baseX;
gOamBuffer[groupOam->oamId].y = groupOam->yOffset + group9->baseY;
}
if (++gUnknown_0202BE20 > 12)
{
gUnknown_0202BE20 = 0;
gUnknown_0201A4F0 = 1 - gUnknown_0201A4F0;
gUnknown_0202BEE0 = 1 - gUnknown_0202BEE0;
}
group5->available = 0;
group6->available = 0;
group7->available = 0;
group9->available = 0;
}