summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorU-User-PC\User <golemgalvanize@github.com>2017-10-09 13:17:13 -0400
committerU-User-PC\User <golemgalvanize@github.com>2017-10-09 13:17:13 -0400
commitd361f7030abb3441bfe61e95c3803297454acbb8 (patch)
tree1253b8e0d7b2b9c75a301c49f1f3b76cf4d5ac69
parentddc2e96825c38e0ac05e602c07fc870d3464f139 (diff)
decompiled up to sub_81C20F0
-rwxr-xr-xasm/pokemon_summary_screen.s1518
-rwxr-xr-xsrc/pokemon_summary_screen.c1016
2 files changed, 976 insertions, 1558 deletions
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index b243ab3b2..e57629771 100755
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -5,1524 +5,6 @@
.text
- thumb_func_start sub_81C14BC
-sub_81C14BC: @ 81C14BC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x28
- adds r7, r0, 0
- adds r4, r1, 0
- adds r6, r2, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r6, 24
- lsrs r6, 24
- ldr r0, =gUnknown_0203CF1C
- ldr r2, [r0]
- lsls r0, r4, 1
- mov r10, r0
- adds r1, r2, 0
- adds r1, 0x84
- adds r0, r1, r0
- str r0, [sp, 0x8]
- ldrh r0, [r0]
- mov r3, sp
- adds r3, 0x2
- str r3, [sp, 0x1C]
- strh r0, [r3]
- lsls r0, r6, 1
- mov r9, r0
- add r1, r9
- str r1, [sp, 0xC]
- ldrh r1, [r1]
- mov r0, sp
- strh r1, [r0]
- adds r1, r2, 0
- adds r1, 0x8C
- adds r3, r1, r4
- str r3, [sp, 0x10]
- ldrb r0, [r3]
- mov r3, sp
- adds r3, 0x5
- str r3, [sp, 0x24]
- strb r0, [r3]
- adds r1, r6
- str r1, [sp, 0x14]
- ldrb r0, [r1]
- mov r1, sp
- adds r1, 0x4
- str r1, [sp, 0x20]
- strb r0, [r1]
- adds r2, 0xA4
- str r2, [sp, 0x18]
- ldrb r0, [r2]
- mov r5, sp
- adds r5, 0x6
- strb r0, [r5]
- ldr r1, =gUnknown_08329D22
- adds r0, r4, r1
- ldrb r0, [r0]
- mov r8, r0
- ldrb r0, [r5]
- adds r2, r0, 0
- mov r3, r8
- ands r2, r3
- mov r3, r10
- asrs r2, r3
- lsls r2, 24
- lsrs r2, 24
- adds r1, r6, r1
- ldrb r1, [r1]
- mov r12, r1
- adds r1, r0, 0
- mov r3, r12
- ands r1, r3
- mov r3, r9
- asrs r1, r3
- lsls r1, 24
- lsrs r1, 24
- mov r3, r8
- bics r0, r3
- strb r0, [r5]
- ldrb r0, [r5]
- mov r3, r12
- bics r0, r3
- strb r0, [r5]
- mov r0, r9
- lsls r2, r0
- mov r3, r10
- lsls r1, r3
- adds r2, r1
- ldrb r0, [r5]
- orrs r0, r2
- strb r0, [r5]
- adds r1, r4, 0
- adds r1, 0xD
- adds r0, r7, 0
- mov r2, sp
- bl SetMonData
- adds r1, r6, 0
- adds r1, 0xD
- adds r0, r7, 0
- ldr r2, [sp, 0x1C]
- bl SetMonData
- adds r4, 0x11
- adds r0, r7, 0
- adds r1, r4, 0
- ldr r2, [sp, 0x20]
- bl SetMonData
- adds r6, 0x11
- adds r0, r7, 0
- adds r1, r6, 0
- ldr r2, [sp, 0x24]
- bl SetMonData
- adds r0, r7, 0
- movs r1, 0x15
- adds r2, r5, 0
- bl SetMonData
- mov r0, sp
- ldrh r0, [r0]
- ldr r1, [sp, 0x8]
- strh r0, [r1]
- ldr r3, [sp, 0x1C]
- ldrh r0, [r3]
- ldr r1, [sp, 0xC]
- strh r0, [r1]
- ldr r3, [sp, 0x20]
- ldrb r0, [r3]
- ldr r1, [sp, 0x10]
- strb r0, [r1]
- ldr r3, [sp, 0x24]
- ldrb r0, [r3]
- ldr r1, [sp, 0x14]
- strb r0, [r1]
- ldrb r0, [r5]
- ldr r3, [sp, 0x18]
- strb r0, [r3]
- add sp, 0x28
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C14BC
-
- thumb_func_start sub_81C15EC
-sub_81C15EC: @ 81C15EC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x28
- adds r7, r0, 0
- adds r4, r1, 0
- adds r6, r2, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r6, 24
- lsrs r6, 24
- ldr r0, =gUnknown_0203CF1C
- ldr r2, [r0]
- lsls r0, r4, 1
- mov r10, r0
- adds r1, r2, 0
- adds r1, 0x84
- adds r0, r1, r0
- str r0, [sp, 0x8]
- ldrh r0, [r0]
- mov r3, sp
- adds r3, 0x2
- str r3, [sp, 0x1C]
- strh r0, [r3]
- lsls r0, r6, 1
- mov r9, r0
- add r1, r9
- str r1, [sp, 0xC]
- ldrh r1, [r1]
- mov r0, sp
- strh r1, [r0]
- adds r1, r2, 0
- adds r1, 0x8C
- adds r3, r1, r4
- str r3, [sp, 0x10]
- ldrb r0, [r3]
- mov r3, sp
- adds r3, 0x5
- str r3, [sp, 0x24]
- strb r0, [r3]
- adds r1, r6
- str r1, [sp, 0x14]
- ldrb r0, [r1]
- mov r1, sp
- adds r1, 0x4
- str r1, [sp, 0x20]
- strb r0, [r1]
- adds r2, 0xA4
- str r2, [sp, 0x18]
- ldrb r0, [r2]
- mov r5, sp
- adds r5, 0x6
- strb r0, [r5]
- ldr r1, =gUnknown_08329D22
- adds r0, r4, r1
- ldrb r0, [r0]
- mov r8, r0
- ldrb r0, [r5]
- adds r2, r0, 0
- mov r3, r8
- ands r2, r3
- mov r3, r10
- asrs r2, r3
- lsls r2, 24
- lsrs r2, 24
- adds r1, r6, r1
- ldrb r1, [r1]
- mov r12, r1
- adds r1, r0, 0
- mov r3, r12
- ands r1, r3
- mov r3, r9
- asrs r1, r3
- lsls r1, 24
- lsrs r1, 24
- mov r3, r8
- bics r0, r3
- strb r0, [r5]
- ldrb r0, [r5]
- mov r3, r12
- bics r0, r3
- strb r0, [r5]
- mov r0, r9
- lsls r2, r0
- mov r3, r10
- lsls r1, r3
- adds r2, r1
- ldrb r0, [r5]
- orrs r0, r2
- strb r0, [r5]
- adds r1, r4, 0
- adds r1, 0xD
- adds r0, r7, 0
- mov r2, sp
- bl SetBoxMonData
- adds r1, r6, 0
- adds r1, 0xD
- adds r0, r7, 0
- ldr r2, [sp, 0x1C]
- bl SetBoxMonData
- adds r4, 0x11
- adds r0, r7, 0
- adds r1, r4, 0
- ldr r2, [sp, 0x20]
- bl SetBoxMonData
- adds r6, 0x11
- adds r0, r7, 0
- adds r1, r6, 0
- ldr r2, [sp, 0x24]
- bl SetBoxMonData
- adds r0, r7, 0
- movs r1, 0x15
- adds r2, r5, 0
- bl SetBoxMonData
- mov r0, sp
- ldrh r0, [r0]
- ldr r1, [sp, 0x8]
- strh r0, [r1]
- ldr r3, [sp, 0x1C]
- ldrh r0, [r3]
- ldr r1, [sp, 0xC]
- strh r0, [r1]
- ldr r3, [sp, 0x20]
- ldrb r0, [r3]
- ldr r1, [sp, 0x10]
- strb r0, [r1]
- ldr r3, [sp, 0x24]
- ldrb r0, [r3]
- ldr r1, [sp, 0x14]
- strb r0, [r1]
- ldrb r0, [r5]
- ldr r3, [sp, 0x18]
- strb r0, [r3]
- add sp, 0x28
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C15EC
-
- thumb_func_start sub_81C171C
-sub_81C171C: @ 81C171C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_81C44F0
- movs r0, 0x8
- bl sub_81C4AF8
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81C174C
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C171C
-
- thumb_func_start sub_81C174C
-sub_81C174C: @ 81C174C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- bl sub_81221EC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081C176A
- b _081C189A
-_081C176A:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r2, 0x80
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _081C177A
- b _081C189A
-_081C177A:
- ldr r6, =gMain
- ldrh r1, [r6, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _081C17B4
- movs r0, 0x4
- strh r0, [r4]
- movs r1, 0x1
- negs r1, r1
- ldr r0, =gUnknown_0203CF1C
- ldr r2, [r0]
- ldr r0, =0x000040c6
- adds r2, r0
- adds r0, r4, 0
- bl sub_81C1070
- b _081C189A
- .pool
-_081C17B4:
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _081C17DC
- movs r0, 0x4
- strh r0, [r4]
- ldr r0, =gUnknown_0203CF1C
- ldr r2, [r0]
- ldr r1, =0x000040c6
- adds r2, r1
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_81C1070
- b _081C189A
- .pool
-_081C17DC:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _081C17F0
- bl GetLRKeysState
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081C17FC
-_081C17F0:
- movs r1, 0x1
- negs r1, r1
- adds r0, r5, 0
- bl sub_81C0A8C
- b _081C189A
-_081C17FC:
- ldrh r1, [r6, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _081C1812
- bl GetLRKeysState
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _081C181C
-_081C1812:
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_81C0A8C
- b _081C189A
-_081C181C:
- ldrh r1, [r6, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081C1876
- bl sub_81C18A8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081C1868
- bl sub_81C48F0
- movs r0, 0x5
- bl PlaySE
- ldr r2, =gUnknown_0203CF21
- ldr r0, =gUnknown_0203CF1C
- ldr r0, [r0]
- ldr r1, =0x000040c6
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r2]
- ldr r1, =gSpecialVar_0x8005
- ldrb r0, [r2]
- strh r0, [r1]
- adds r0, r5, 0
- bl sub_81C044C
- b _081C189A
- .pool
-_081C1868:
- movs r0, 0x20
- bl PlaySE
- adds r0, r5, 0
- bl sub_81C18F4
- b _081C189A
-_081C1876:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081C189A
- bl sub_81C48F0
- movs r0, 0x5
- bl PlaySE
- ldr r1, =gUnknown_0203CF21
- movs r0, 0x4
- strb r0, [r1]
- ldr r1, =gSpecialVar_0x8005
- movs r0, 0x4
- strh r0, [r1]
- adds r0, r5, 0
- bl sub_81C044C
-_081C189A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C174C
-
- thumb_func_start sub_81C18A8
-sub_81C18A8: @ 81C18A8
- push {lr}
- ldr r0, =gUnknown_0203CF1C
- ldr r2, [r0]
- ldr r0, =0x000040c6
- adds r1, r2, r0
- ldrb r0, [r1]
- cmp r0, 0x4
- beq _081C18DA
- ldr r3, =0x000040c4
- adds r0, r2, r3
- ldrh r0, [r0]
- cmp r0, 0
- beq _081C18DA
- ldrb r1, [r1]
- lsls r1, 1
- adds r0, r2, 0
- adds r0, 0x84
- adds r0, r1
- ldrh r0, [r0]
- bl sub_81B6D14
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081C18EC
-_081C18DA:
- movs r0, 0x1
- b _081C18EE
- .pool
-_081C18EC:
- movs r0, 0
-_081C18EE:
- pop {r1}
- bx r1
- thumb_func_end sub_81C18A8
-
- thumb_func_start sub_81C18F4
-sub_81C18F4: @ 81C18F4
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0xE
- bl ClearWindowTilemap
- movs r0, 0xF
- bl ClearWindowTilemap
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0
- movs r1, 0x3
- bl sub_81C1DA4
- movs r0, 0
- movs r1, 0x3
- movs r2, 0
- bl sub_81C1EFC
- bl sub_81C4154
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_81C1940
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C18F4
-
- thumb_func_start sub_81C1940
-sub_81C1940: @ 81C1940
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- mov r8, r0
- ldr r0, =gTasks + 0x8
- mov r9, r0
- mov r4, r8
- add r4, r9
- ldr r0, =sub_81C1E20
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081C196C
- b _081C1B74
-_081C196C:
- ldr r6, =gMain
- ldrh r1, [r6, 0x2E]
- movs r0, 0x40
- ands r0, r1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0
- beq _081C19B0
- movs r0, 0x1
- strh r0, [r4, 0x2]
- movs r0, 0x4
- strh r0, [r4]
- movs r1, 0x1
- negs r1, r1
- ldr r0, =gUnknown_0203CF1C
- ldr r2, [r0]
- ldr r0, =0x000040c6
- adds r2, r0
- adds r0, r4, 0
- bl sub_81C1070
- movs r0, 0
- strh r0, [r4, 0x2]
- b _081C1B6A
- .pool
-_081C19B0:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081C19DC
- movs r0, 0x1
- strh r0, [r4, 0x2]
- movs r0, 0x4
- strh r0, [r4]
- ldr r0, =gUnknown_0203CF1C
- ldr r2, [r0]
- ldr r1, =0x000040c6
- adds r2, r1
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_81C1070
- strh r5, [r4, 0x2]
- b _081C1B6A
- .pool
-_081C19DC:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _081C19F0
- bl GetLRKeysState
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081C1A64
-_081C19F0:
- ldr r4, =gUnknown_0203CF1C
- ldr r0, [r4]
- ldr r2, =0x000040c0
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _081C1A00
- b _081C1B74
-_081C1A00:
- movs r0, 0x13
- bl ClearWindowTilemap
- ldr r2, =gSprites
- ldr r0, [r4]
- ldr r1, =0x000040d5
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 29
- cmp r0, 0
- blt _081C1A28
- movs r0, 0xD
- bl ClearWindowTilemap
-_081C1A28:
- ldr r1, [r4]
- ldr r2, =0x000040c6
- adds r0, r1, r2
- ldrb r0, [r0]
- lsls r0, 1
- adds r1, 0x84
- adds r1, r0
- ldrh r5, [r1]
- mov r0, r9
- subs r0, 0x8
- add r0, r8
- ldr r1, =sub_81C174C
- str r1, [r0]
- movs r1, 0x1
- negs r1, r1
- adds r0, r7, 0
- b _081C1ACE
- .pool
-_081C1A64:
- ldrh r1, [r6, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _081C1A7A
- bl GetLRKeysState
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _081C1B04
-_081C1A7A:
- ldr r4, =gUnknown_0203CF1C
- ldr r0, [r4]
- ldr r1, =0x000040c0
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x3
- beq _081C1B74
- movs r0, 0x13
- bl ClearWindowTilemap
- ldr r2, =gSprites
- ldr r0, [r4]
- ldr r1, =0x000040d5
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 29
- cmp r0, 0
- blt _081C1AB0
- movs r0, 0xD
- bl ClearWindowTilemap
-_081C1AB0:
- ldr r1, [r4]
- ldr r2, =0x000040c6
- adds r0, r1, r2
- ldrb r0, [r0]
- lsls r0, 1
- adds r1, 0x84
- adds r1, r0
- ldrh r5, [r1]
- mov r0, r9
- subs r0, 0x8
- add r0, r8
- ldr r1, =sub_81C174C
- str r1, [r0]
- adds r0, r7, 0
- movs r1, 0x1
-_081C1ACE:
- bl sub_81C0A8C
- movs r4, 0x2
- negs r4, r4
- movs r0, 0x9
- adds r1, r4, 0
- bl sub_81C1DA4
- movs r0, 0x9
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_81C1EFC
- b _081C1B74
- .pool
-_081C1B04:
- ldrh r1, [r6, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _081C1B74
- movs r0, 0x13
- bl ClearWindowTilemap
- ldr r2, =gSprites
- ldr r4, =gUnknown_0203CF1C
- ldr r0, [r4]
- ldr r1, =0x000040d5
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 29
- cmp r0, 0
- blt _081C1B38
- movs r0, 0xD
- bl ClearWindowTilemap
-_081C1B38:
- ldr r1, [r4]
- ldr r2, =0x000040c6
- adds r0, r1, r2
- ldrb r0, [r0]
- lsls r0, 1
- adds r1, 0x84
- adds r1, r0
- ldrh r5, [r1]
- adds r0, r5, 0
- bl sub_81C3E9C
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- movs r4, 0x3
- negs r4, r4
- movs r0, 0x9
- adds r1, r4, 0
- bl sub_81C1DA4
- movs r0, 0x9
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_81C1EFC
-_081C1B6A:
- mov r0, r9
- subs r0, 0x8
- add r0, r8
- ldr r1, =sub_81C174C
- str r1, [r0]
-_081C1B74:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C1940
-
- thumb_func_start sub_81C1B94
-sub_81C1B94: @ 81C1B94
- ldr r0, =gUnknown_0203CF21
- ldrb r0, [r0]
- bx lr
- .pool
- thumb_func_end sub_81C1B94
-
- thumb_func_start sub_81C1BA0
-sub_81C1BA0: @ 81C1BA0
- push {r4-r7,lr}
- sub sp, 0xC
- movs r0, 0x20
- bl Alloc
- adds r4, r0, 0
- movs r5, 0
-_081C1BAE:
- lsls r0, r5, 25
- lsrs r1, r0, 24
- adds r6, r1, 0
- ldr r0, =gUnknown_0203CF1C
- ldr r3, [r0]
- ldr r2, =0x000040c1
- adds r0, r3, r2
- ldrb r0, [r0]
- cmp r5, r0
- bcs _081C1BD8
- lsls r0, r1, 1
- adds r0, r4
- movs r1, 0x40
- strh r1, [r0]
- strh r1, [r0, 0x2]
- movs r1, 0x50
- b _081C1BEE
- .pool
-_081C1BD8:
- ldr r7, =0x000040c2
- adds r0, r3, r7
- ldrb r2, [r0]
- cmp r5, r2
- bls _081C1BF8
- lsls r0, r1, 1
- adds r0, r4
- movs r1, 0x4A
- strh r1, [r0]
- strh r1, [r0, 0x2]
- movs r1, 0x5A
-_081C1BEE:
- strh r1, [r0, 0x10]
- strh r1, [r0, 0x12]
- b _081C1C78
- .pool
-_081C1BF8:
- ldr r7, =0x000040c0
- adds r0, r3, r7
- ldrb r0, [r0]
- cmp r5, r0
- bcs _081C1C1C
- lsls r1, 1
- adds r1, r4
- movs r0, 0x46
- strh r0, [r1]
- movs r0, 0x47
- strh r0, [r1, 0x2]
- movs r0, 0x56
- strh r0, [r1, 0x10]
- movs r0, 0x57
- b _081C1C76
- .pool
-_081C1C1C:
- cmp r5, r0
- bne _081C1C4C
- cmp r5, r2
- beq _081C1C38
- lsls r1, 1
- adds r1, r4
- movs r0, 0x41
- strh r0, [r1]
- movs r0, 0x42
- strh r0, [r1, 0x2]
- movs r0, 0x51
- strh r0, [r1, 0x10]
- movs r0, 0x52
- b _081C1C76
-_081C1C38:
- lsls r1, 1
- adds r1, r4
- movs r0, 0x4B
- strh r0, [r1]
- movs r0, 0x4C
- strh r0, [r1, 0x2]
- movs r0, 0x5B
- strh r0, [r1, 0x10]
- movs r0, 0x5C
- b _081C1C76
-_081C1C4C:
- cmp r5, r2
- beq _081C1C64
- lsls r1, 1
- adds r1, r4
- movs r0, 0x43
- strh r0, [r1]
- movs r0, 0x44
- strh r0, [r1, 0x2]
- movs r0, 0x53
- strh r0, [r1, 0x10]
- movs r0, 0x54
- b _081C1C76
-_081C1C64:
- lsls r1, r6, 1
- adds r1, r4
- movs r0, 0x48
- strh r0, [r1]
- movs r0, 0x49
- strh r0, [r1, 0x2]
- movs r0, 0x58
- strh r0, [r1, 0x10]
- movs r0, 0x59
-_081C1C76:
- strh r0, [r1, 0x12]
-_081C1C78:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3
- bls _081C1BAE
- movs r0, 0x8
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x10
- str r0, [sp, 0x8]
- movs r0, 0x3
- adds r1, r4, 0
- movs r2, 0xB
- movs r3, 0
- bl CopyToBgTilemapBufferRect_ChangePalette
- movs r0, 0x3
- bl schedule_bg_copy_tilemap_to_vram
- adds r0, r4, 0
- bl Free
- add sp, 0xC
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81C1BA0
-
- thumb_func_start sub_81C1CB0
-sub_81C1CB0: @ 81C1CB0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r4, r0, 0
- mov r8, r1
- lsls r2, 24
- lsrs r6, r2, 24
- lsls r3, 24
- lsrs r5, r3, 24
- ldrb r1, [r4, 0x6]
- ldrb r0, [r4, 0x7]
- lsls r0, 1
- muls r0, r1
- bl Alloc
- adds r7, r0, 0
- mov r1, sp
- ldrh r0, [r4, 0x4]
- strh r0, [r1]
- ldrb r1, [r4, 0x7]
- ldrb r0, [r4, 0x6]
- adds r2, r1, 0
- muls r2, r0
- movs r0, 0x80
- lsls r0, 17
- orrs r2, r0
- mov r0, sp
- adds r1, r7, 0
- bl CpuSet
- ldrb r0, [r4, 0x6]
- cmp r0, r6
- beq _081C1D60
- cmp r5, 0
- bne _081C1D30
- movs r5, 0
- ldrb r0, [r4, 0x7]
- cmp r5, r0
- bcs _081C1D60
-_081C1D00:
- ldrb r2, [r4, 0x6]
- adds r1, r2, 0
- muls r1, r5
- adds r3, r6, r1
- lsls r3, 1
- ldr r0, [r4]
- adds r0, r3
- lsls r1, 1
- adds r1, r7, r1
- subs r2, r6
- ldr r3, =0x001fffff
- ands r2, r3
- bl CpuSet
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- ldrb r3, [r4, 0x7]
- cmp r5, r3
- bcc _081C1D00
- b _081C1D60
- .pool
-_081C1D30:
- movs r5, 0
- ldrb r0, [r4, 0x7]
- cmp r5, r0
- bcs _081C1D60
-_081C1D38:
- ldrb r2, [r4, 0x6]
- adds r1, r2, 0
- muls r1, r5
- lsls r3, r1, 1
- ldr r0, [r4]
- adds r0, r3
- adds r1, r6, r1
- lsls r1, 1
- adds r1, r7, r1
- subs r2, r6
- ldr r3, =0x001fffff
- ands r2, r3
- bl CpuSet
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- ldrb r3, [r4, 0x7]
- cmp r5, r3
- bcc _081C1D38
-_081C1D60:
- movs r5, 0
- b _081C1D8A
- .pool
-_081C1D68:
- ldrb r2, [r4, 0x6]
- adds r0, r2, 0
- muls r0, r5
- lsls r0, 1
- adds r0, r7, r0
- ldrb r1, [r4, 0x9]
- adds r1, r5
- lsls r1, 5
- ldrb r3, [r4, 0x8]
- adds r1, r3
- lsls r1, 1
- add r1, r8
- bl CpuSet
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
-_081C1D8A:
- ldrb r0, [r4, 0x7]
- cmp r5, r0
- bcc _081C1D68
- adds r0, r7, 0
- bl Free
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81C1CB0
-
- thumb_func_start sub_81C1DA4
-sub_81C1DA4: @ 81C1DA4
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 16
- lsrs r4, r1, 16
- asrs r1, 16
- ldr r3, =gUnknown_0861CC04
- ldrb r2, [r3, 0x6]
- cmp r1, r2
- ble _081C1DBA
- adds r4, r2, 0
-_081C1DBA:
- lsls r0, r4, 16
- asrs r0, 16
- cmp r0, 0
- beq _081C1DC6
- cmp r0, r2
- bne _081C1DE8
-_081C1DC6:
- ldr r0, =gUnknown_0203CF1C
- ldr r1, [r0]
- ldr r0, =0x000020bc
- adds r1, r0
- lsls r2, r4, 24
- lsrs r2, 24
- adds r0, r3, 0
- movs r3, 0x1
- bl sub_81C1CB0
- b _081C1E12
- .pool
-_081C1DE8:
- ldr r5, =sub_81C1E20
- adds r0, r5, 0
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- bne _081C1E04
- adds r0, r5, 0
- movs r1, 0x8
- bl CreateTask
- lsls r0, 24
- lsrs r2, r0, 24
-_081C1E04:
- ldr r1, =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- strh r4, [r0, 0x8]
- strh r6, [r0, 0xA]
-_081C1E12:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C1DA4
-
- thumb_func_start sub_81C1E20
-sub_81C1E20: @ 81C1E20
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- ldrh r0, [r4]
- ldrh r1, [r4, 0x2]
- adds r0, r1
- strh r0, [r4, 0x2]
- lsls r0, 16
- cmp r0, 0
- bge _081C1E50
- movs r0, 0
- strh r0, [r4, 0x2]
- ldr r7, =gUnknown_0861CC04
- b _081C1E60
- .pool
-_081C1E50:
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- ldr r0, =gUnknown_0861CC04
- ldrb r2, [r0, 0x6]
- adds r7, r0, 0
- cmp r1, r2
- ble _081C1E60
- strh r2, [r4, 0x2]
-_081C1E60:
- ldr r5, =gUnknown_0203CF1C
- ldr r1, [r5]
- ldr r0, =0x000020bc
- adds r1, r0
- ldrb r2, [r4, 0x2]
- adds r0, r7, 0
- movs r3, 0x1
- bl sub_81C1CB0
- movs r1, 0x2
- ldrsh r0, [r4, r1]
- cmp r0, 0
- ble _081C1E80
- ldrb r7, [r7, 0x6]
- cmp r0, r7
- blt _081C1EE0
-_081C1E80:
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bge _081C1EAC
- ldr r0, [r5]
- ldr r1, =0x000040c0
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _081C1ED4
- movs r0, 0xE
- bl PutWindowTilemap
- b _081C1ED4
- .pool
-_081C1EAC:
- ldr r2, =gSprites
- ldr r0, [r5]
- ldr r1, =0x000040d5
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 29
- cmp r0, 0
- blt _081C1ECE
- movs r0, 0xD
- bl PutWindowTilemap
-_081C1ECE:
- movs r0, 0x13
- bl PutWindowTilemap
-_081C1ED4:
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- adds r0, r6, 0
- bl DestroyTask
-_081C1EE0:
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C1E20
-
- thumb_func_start sub_81C1EFC
-sub_81C1EFC: @ 81C1EFC
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r7, r0, 16
- lsls r1, 16
- lsls r2, 16
- lsrs r6, r2, 16
- lsrs r4, r1, 16
- asrs r1, 16
- ldr r3, =gUnknown_0861CC10
- ldrb r2, [r3, 0x6]
- cmp r1, r2
- ble _081C1F16
- adds r4, r2, 0
-_081C1F16:
- lsls r0, r4, 16
- asrs r0, 16
- cmp r0, 0
- beq _081C1F22
- cmp r0, r2
- bne _081C1F44
-_081C1F22:
- ldr r0, =gUnknown_0203CF1C
- ldr r1, [r0]
- ldr r0, =0x000030bc
- adds r1, r0
- lsls r2, r4, 24
- lsrs r2, 24
- adds r0, r3, 0
- movs r3, 0x1
- bl sub_81C1CB0
- b _081C1F70
- .pool
-_081C1F44:
- ldr r5, =sub_81C1F80
- adds r0, r5, 0
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- bne _081C1F60
- adds r0, r5, 0
- movs r1, 0x8
- bl CreateTask
- lsls r0, 24
- lsrs r2, r0, 24
-_081C1F60:
- ldr r1, =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- strh r4, [r0, 0x8]
- strh r7, [r0, 0xA]
- strh r6, [r0, 0xC]
-_081C1F70:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C1EFC
-
- thumb_func_start sub_81C1F80
-sub_81C1F80: @ 81C1F80
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- ldrh r0, [r4]
- ldrh r1, [r4, 0x2]
- adds r0, r1
- strh r0, [r4, 0x2]
- lsls r0, 16
- cmp r0, 0
- bge _081C1FB0
- movs r0, 0
- strh r0, [r4, 0x2]
- ldr r7, =gUnknown_0861CC10
- b _081C1FC0
- .pool
-_081C1FB0:
- movs r0, 0x2
- ldrsh r1, [r4, r0]
- ldr r0, =gUnknown_0861CC10
- ldrb r2, [r0, 0x6]
- adds r7, r0, 0
- cmp r1, r2
- ble _081C1FC0
- strh r2, [r4, 0x2]
-_081C1FC0:
- ldr r5, =gUnknown_0203CF1C
- ldr r1, [r5]
- ldr r0, =0x000030bc
- adds r1, r0
- ldrb r2, [r4, 0x2]
- adds r0, r7, 0
- movs r3, 0x1
- bl sub_81C1CB0
- movs r1, 0x2
- ldrsh r0, [r4, r1]
- cmp r0, 0
- ble _081C1FE0
- ldrb r7, [r7, 0x6]
- cmp r0, r7
- blt _081C2058
-_081C1FE0:
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bge _081C2024
- ldr r0, [r5]
- ldr r1, =0x000040c0
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _081C2006
- ldr r0, =sub_81C0B8C
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- bne _081C2006
- movs r0, 0xF
- bl PutWindowTilemap
-_081C2006:
- ldrh r0, [r4, 0x4]
- bl sub_81C240C
- b _081C204C
- .pool
-_081C2024:
- ldr r2, =gSprites
- ldr r0, [r5]
- ldr r1, =0x000040d5
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 29
- cmp r0, 0
- blt _081C2046
- movs r0, 0xD
- bl PutWindowTilemap
-_081C2046:
- movs r0, 0x13
- bl PutWindowTilemap
-_081C204C:
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- adds r0, r6, 0
- bl DestroyTask
-_081C2058:
- movs r0, 0x1
- bl schedule_bg_copy_tilemap_to_vram
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C1F80
-
- thumb_func_start sub_81C2074
-sub_81C2074: @ 81C2074
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r1, 16
- lsrs r4, r1, 16
- asrs r1, 16
- ldr r3, =gUnknown_0861CBEC
- ldrb r2, [r3, 0x6]
- cmp r1, r2
- ble _081C208A
- adds r4, r2, 0
-_081C208A:
- lsls r0, r4, 16
- asrs r0, 16
- cmp r0, 0
- beq _081C2096
- cmp r0, r2
- bne _081C20C8
-_081C2096:
- ldr r5, =gUnknown_0203CF1C
- ldr r1, [r5]
- adds r1, 0xBC
- lsls r4, 24
- lsrs r4, 24
- adds r0, r3, 0
- adds r2, r4, 0
- movs r3, 0
- bl sub_81C1CB0
- ldr r0, =gUnknown_0861CBF8
- ldr r1, [r5]
- adds r1, 0xBC
- adds r2, r4, 0
- movs r3, 0
- bl sub_81C1CB0
- b _081C20E2
- .pool
-_081C20C8:
- ldr r0, =sub_81C20F0
- movs r1, 0x8
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x8]
- strh r5, [r1, 0xA]
-_081C20E2:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C2074
-
- thumb_func_start sub_81C20F0
-sub_81C20F0: @ 81C20F0
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r5, r0, r1
- ldrh r0, [r5]
- ldrh r1, [r5, 0x2]
- adds r0, r1
- strh r0, [r5, 0x2]
- lsls r0, 16
- cmp r0, 0
- bge _081C2120
- movs r0, 0
- strh r0, [r5, 0x2]
- ldr r7, =gUnknown_0861CBEC
- b _081C2130
- .pool
-_081C2120:
- movs r0, 0x2
- ldrsh r1, [r5, r0]
- ldr r0, =gUnknown_0861CBEC
- ldrb r2, [r0, 0x6]
- adds r7, r0, 0
- cmp r1, r2
- ble _081C2130
- strh r2, [r5, 0x2]
-_081C2130:
- ldr r4, =gUnknown_0203CF1C
- ldr r1, [r4]
- adds r1, 0xBC
- ldrb r2, [r5, 0x2]
- adds r0, r7, 0
- movs r3, 0
- bl sub_81C1CB0
- ldr r0, =gUnknown_0861CBF8
- ldr r1, [r4]
- adds r1, 0xBC
- ldrb r2, [r5, 0x2]
- movs r3, 0
- bl sub_81C1CB0
- movs r0, 0x3
- bl schedule_bg_copy_tilemap_to_vram
- movs r1, 0x2
- ldrsh r0, [r5, r1]
- cmp r0, 0
- ble _081C2162
- ldrb r7, [r7, 0x6]
- cmp r0, r7
- blt _081C2180
-_081C2162:
- movs r1, 0
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bge _081C217A
- bl sub_81C4A88
- movs r0, 0xD
- bl PutWindowTilemap
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
-_081C217A:
- adds r0, r6, 0
- bl DestroyTask
-_081C2180:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81C20F0
-
thumb_func_start sub_81C2194
sub_81C2194: @ 81C2194
push {r4-r7,lr}
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index 9a478dabb..2c7c5e11c 100755
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -1,4 +1,5 @@
#include "battle.h"
+#include "bg.h"
#include "decompress.h"
#include "global.h"
#include "m4a.h"
@@ -19,6 +20,13 @@ extern u8 gUnknown_0203CF20;
extern struct MusicPlayerInfo gMPlay_BGM;
extern s8 gUnknown_0861CC1C[];
extern u8 gUnknown_08329D22[];
+extern u8 gUnknown_0203CF21;
+extern u16 gSpecialVar_0x8005;
+extern struct unkStruct_61CC04 gUnknown_0861CC04;
+extern struct unkStruct_61CC04 gUnknown_0861CC10;
+extern struct unkStruct_61CC04 gUnknown_0861CBEC;
+extern struct unkStruct_61CC04 gUnknown_0861CBF8;
+extern u16 gUnknown_08DC3CD4[];
extern void sub_806F2AC(u8 a, u8 b);
void sub_81C488C(u8 a);
@@ -33,7 +41,6 @@ extern void ResetBgsAndClearDma3BusyFlags(u32 leftoverFireRedLeafGreenVariable);
extern void ShowBg(u8 a);
extern void SetGpuReg(u8 regOffset, u16 value);
extern void schedule_bg_copy_tilemap_to_vram(u8 a);
-extern void InitBgsFromTemplates(u8 bgMode, struct BgTemplate *templates, u8 numTemplates);
extern void SetBgTilemapBuffer(u8 bg, void *tilemap);
extern u8 gUnknown_08D9862C;
extern u8 gUnknown_08D98CC8;
@@ -53,6 +60,7 @@ extern void reset_temp_tile_data_buffers();
extern void decompress_and_copy_tile_data_to_vram(u8 a, void* tiledata, u8 b, u8 c, u8 d);
extern u8 free_temp_tile_data_buffers_if_possible();
extern void sub_8069004(struct BoxPokemon* a, void* b);
+extern void sub_81C1E20(u8 taskId);
extern u32 ChangeBgX(u8 bg, u32 value, u8 op);
@@ -79,10 +87,10 @@ void sub_81C0510(u8 taskId);
void sub_81C171C(u8 taskId);
void sub_8121E10();
u8 sub_81B205C(struct Pokemon* a);
-void sub_81C1DA4(u8 a, s16 b);
-void sub_81C1EFC(u8 a, s16 b, u16 c);
+void sub_81C1DA4(u16 a, s16 b);
+void sub_81C1EFC(u16 a, s16 b, u16 c);
void sub_81C240C(u16 a);
-void sub_81C2194(void* a, u8 b, u8 c);
+void sub_81C2194(u16 *a, u16 b, u8 c);
void sub_81C2074(u16 a, s16 b);
void sub_81C2524();
void sub_81C2228(struct Pokemon* poke);
@@ -128,6 +136,13 @@ void sub_81C14BC(struct Pokemon *mon, u8 a, u8 b);
void sub_81C15EC(struct BoxPokemon *mon, u8 a, u8 b);
void sub_81C40A0(u8 a, u8 b);
void sub_81C4568(u8 a, u8 b);
+void sub_81C174C(u8 taskId);
+u8 sub_81C18A8();
+void sub_81C18F4(u8 a);
+u8 sub_81B6D14(u16 a);
+void sub_81C1940(u8 taskId);
+void sub_81C4154();
+void sub_81C1F80(u8 taskId);
void SetBgAttribute(u8 bg, u8 attributeId, u8 value);
@@ -184,14 +199,14 @@ struct unkSummaryStruct
/*0x08*/ void *unk8;
/*0x0C*/ struct Pokemon currentPoke;
/*0x70*/ struct pokeSummary summary;
- u8 unkTilemap0[0x800];
- u8 unkTilemap0_1[0x800];
- u8 unkTilemap1[0x800];
- u8 unkTilemap1_1[0x800];
- u8 unkTilemap2[0x800];
- u8 unkTilemap2_1[0x800];
- u8 unkTilemap3[0x800];
- u8 unkTilemap3_1[0x800];
+ u16 unkTilemap0[0x400];
+ u16 unkTilemap0_1[0x400];
+ u16 unkTilemap1[0x400];
+ u16 unkTilemap1_1[0x400];
+ u16 unkTilemap2[0x400];
+ u16 unkTilemap2_1[0x400];
+ u16 unkTilemap3[0x400];
+ u16 unkTilemap3_1[0x400];
u8 unk40BC;
u8 unk40BD;
u8 unk40BE;
@@ -597,8 +612,8 @@ void sub_81C0348(void)
else
{
sub_81C240C(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]);
- sub_81C2194(&gUnknown_0203CF1C->unkTilemap2, 3, 0);
- sub_81C2194(&gUnknown_0203CF1C->unkTilemap3, 1, 0);
+ sub_81C2194(&gUnknown_0203CF1C->unkTilemap2[0], 3, 0);
+ sub_81C2194(&gUnknown_0203CF1C->unkTilemap3[0], 1, 0);
SetBgTilemapBuffer(1, &gUnknown_0203CF1C->unkTilemap3);
SetBgTilemapBuffer(2, &gUnknown_0203CF1C->unkTilemap2);
ChangeBgX(2, 0x10000, 1);
@@ -1013,8 +1028,8 @@ void sub_81C0E48(u8 taskId)
ClearWindowTilemap(5);
PutWindowTilemap(6);
}
- sub_81C2194(&gUnknown_0203CF1C->unkTilemap2, 3, 0);
- sub_81C2194(&gUnknown_0203CF1C->unkTilemap3, 1, 0);
+ sub_81C2194(&gUnknown_0203CF1C->unkTilemap2[0], 3, 0);
+ sub_81C2194(&gUnknown_0203CF1C->unkTilemap3[0], 1, 0);
sub_81C3E9C(move);
sub_81C3F44();
sub_81C44F0();
@@ -1139,8 +1154,8 @@ void sub_81C11F4(u8 taskId)
ClearWindowTilemap(6);
PutWindowTilemap(5);
sub_81C3E9C(0);
- sub_81C2194(&gUnknown_0203CF1C->unkTilemap2, 3, 1);
- sub_81C2194(&gUnknown_0203CF1C->unkTilemap3, 1, 1);
+ sub_81C2194(&gUnknown_0203CF1C->unkTilemap2[0], 3, 1);
+ sub_81C2194(&gUnknown_0203CF1C->unkTilemap3[0], 1, 1);
sub_81C4064();
if (gUnknown_0203CF1C->unk40C6 != 4)
{
@@ -1225,24 +1240,20 @@ void sub_81C13B0(u8 taskId, u8 b)
}
-/* void sub_81C14BC(struct Pokemon *mon, u8 swappingFromId, u8 swappingToId)
+#ifdef NONMATCHING
+void sub_81C14BC(struct Pokemon *mon, u8 swappingFromId, u8 swappingToId)
{
- u16* moveToPtr;
- u8 r8;
- u8 r2;
- u8 r12;
- u8 r1;
u16 localMoveTo;
u16 localMoveFrom;
u8 localPpTo;
u8 localPpFrom;
u8 localPpBonuses;
-
u16* moveFromPtr;
+ u16* moveToPtr;
u8* ppFromPtr;
u8* ppToPtr;
u8* ppBonusesPtr;
-
+
moveFromPtr = &gUnknown_0203CF1C->summary.moves[swappingFromId];
localMoveFrom = *moveFromPtr;
@@ -1251,28 +1262,31 @@ void sub_81C13B0(u8 taskId, u8 b)
ppFromPtr = &gUnknown_0203CF1C->summary.pp[swappingFromId];
localPpFrom = *ppFromPtr;
+
ppToPtr = &gUnknown_0203CF1C->summary.pp[swappingToId];
localPpTo = *ppToPtr;
ppBonusesPtr = &gUnknown_0203CF1C->summary.ppBonuses;
localPpBonuses = *ppBonusesPtr;
- r8 = gUnknown_08329D22[swappingFromId];
- r2 = (int)(localPpBonuses & r8) >> (swappingFromId << 1);
- r12 = gUnknown_08329D22[swappingToId];
- r1 = (int)(localPpBonuses & r12) >> (swappingToId << 1);
- localPpBonuses &= ~r8;
- localPpBonuses &= ~r12;
- r2 = r2 << (swappingToId << 1);
- r1 = r1 << (swappingFromId << 1);
- r2 += r1;
- localPpBonuses |= r2;
+{
+ u8 bitsFrom, bitsTo;
+
+ bitsFrom = (localPpBonuses & gUnknown_08329D22[swappingFromId]) >> (swappingFromId << 1);
+ bitsTo = (localPpBonuses & gUnknown_08329D22[swappingToId]) >> (swappingToId << 1);
- SetMonData(mon, swappingFromId + MON_DATA_MOVE1, moveToPtr);
- SetMonData(mon, swappingToId + MON_DATA_MOVE1, moveFromPtr);
- SetMonData(mon, swappingFromId + MON_DATA_PP1, ppToPtr);
- SetMonData(mon, swappingToId + MON_DATA_PP1, ppFromPtr);
+ localPpBonuses &= ~(gUnknown_08329D22[swappingFromId]);
+ localPpBonuses &= ~(gUnknown_08329D22[swappingToId]);
+
+ localPpBonuses |= ((bitsFrom << (swappingToId << 1)) + (bitsTo << (swappingToId << 1)));
+}
+
+ SetMonData(mon, swappingFromId + MON_DATA_MOVE1, &localMoveTo);
+ SetMonData(mon, swappingToId + MON_DATA_MOVE1, &localMoveFrom);
+
+ SetMonData(mon, swappingFromId + MON_DATA_PP1, &localPpTo);
+ SetMonData(mon, swappingToId + MON_DATA_PP1, &localPpFrom);
SetMonData(mon, MON_DATA_PP_BONUSES, &localPpBonuses);
@@ -1283,4 +1297,926 @@ void sub_81C13B0(u8 taskId, u8 b)
*ppToPtr = localPpFrom;
*ppBonusesPtr = localPpBonuses;
+}
+#else
+__attribute__((naked))
+void sub_81C14BC(struct Pokemon *mon, u8 swappingFromId, u8 swappingToId)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x28\n\
+ adds r7, r0, 0\n\
+ adds r4, r1, 0\n\
+ adds r6, r2, 0\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ lsls r6, 24\n\
+ lsrs r6, 24\n\
+ ldr r0, =gUnknown_0203CF1C\n\
+ ldr r2, [r0]\n\
+ lsls r0, r4, 1\n\
+ mov r10, r0\n\
+ adds r1, r2, 0\n\
+ adds r1, 0x84\n\
+ adds r0, r1, r0\n\
+ str r0, [sp, 0x8]\n\
+ ldrh r0, [r0]\n\
+ mov r3, sp\n\
+ adds r3, 0x2\n\
+ str r3, [sp, 0x1C]\n\
+ strh r0, [r3]\n\
+ lsls r0, r6, 1\n\
+ mov r9, r0\n\
+ add r1, r9\n\
+ str r1, [sp, 0xC]\n\
+ ldrh r1, [r1]\n\
+ mov r0, sp\n\
+ strh r1, [r0]\n\
+ adds r1, r2, 0\n\
+ adds r1, 0x8C\n\
+ adds r3, r1, r4\n\
+ str r3, [sp, 0x10]\n\
+ ldrb r0, [r3]\n\
+ mov r3, sp\n\
+ adds r3, 0x5\n\
+ str r3, [sp, 0x24]\n\
+ strb r0, [r3]\n\
+ adds r1, r6\n\
+ str r1, [sp, 0x14]\n\
+ ldrb r0, [r1]\n\
+ mov r1, sp\n\
+ adds r1, 0x4\n\
+ str r1, [sp, 0x20]\n\
+ strb r0, [r1]\n\
+ adds r2, 0xA4\n\
+ str r2, [sp, 0x18]\n\
+ ldrb r0, [r2]\n\
+ mov r5, sp\n\
+ adds r5, 0x6\n\
+ strb r0, [r5]\n\
+ ldr r1, =gUnknown_08329D22\n\
+ adds r0, r4, r1\n\
+ ldrb r0, [r0]\n\
+ mov r8, r0\n\
+ ldrb r0, [r5]\n\
+ adds r2, r0, 0\n\
+ mov r3, r8\n\
+ ands r2, r3\n\
+ mov r3, r10\n\
+ asrs r2, r3\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ adds r1, r6, r1\n\
+ ldrb r1, [r1]\n\
+ mov r12, r1\n\
+ adds r1, r0, 0\n\
+ mov r3, r12\n\
+ ands r1, r3\n\
+ mov r3, r9\n\
+ asrs r1, r3\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ mov r3, r8\n\
+ bics r0, r3\n\
+ strb r0, [r5]\n\
+ ldrb r0, [r5]\n\
+ mov r3, r12\n\
+ bics r0, r3\n\
+ strb r0, [r5]\n\
+ mov r0, r9\n\
+ lsls r2, r0\n\
+ mov r3, r10\n\
+ lsls r1, r3\n\
+ adds r2, r1\n\
+ ldrb r0, [r5]\n\
+ orrs r0, r2\n\
+ strb r0, [r5]\n\
+ adds r1, r4, 0\n\
+ adds r1, 0xD\n\
+ adds r0, r7, 0\n\
+ mov r2, sp\n\
+ bl SetMonData\n\
+ adds r1, r6, 0\n\
+ adds r1, 0xD\n\
+ adds r0, r7, 0\n\
+ ldr r2, [sp, 0x1C]\n\
+ bl SetMonData\n\
+ adds r4, 0x11\n\
+ adds r0, r7, 0\n\
+ adds r1, r4, 0\n\
+ ldr r2, [sp, 0x20]\n\
+ bl SetMonData\n\
+ adds r6, 0x11\n\
+ adds r0, r7, 0\n\
+ adds r1, r6, 0\n\
+ ldr r2, [sp, 0x24]\n\
+ bl SetMonData\n\
+ adds r0, r7, 0\n\
+ movs r1, 0x15\n\
+ adds r2, r5, 0\n\
+ bl SetMonData\n\
+ mov r0, sp\n\
+ ldrh r0, [r0]\n\
+ ldr r1, [sp, 0x8]\n\
+ strh r0, [r1]\n\
+ ldr r3, [sp, 0x1C]\n\
+ ldrh r0, [r3]\n\
+ ldr r1, [sp, 0xC]\n\
+ strh r0, [r1]\n\
+ ldr r3, [sp, 0x20]\n\
+ ldrb r0, [r3]\n\
+ ldr r1, [sp, 0x10]\n\
+ strb r0, [r1]\n\
+ ldr r3, [sp, 0x24]\n\
+ ldrb r0, [r3]\n\
+ ldr r1, [sp, 0x14]\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r5]\n\
+ ldr r3, [sp, 0x18]\n\
+ strb r0, [r3]\n\
+ add sp, 0x28\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n\
+ .syntax divided\n");
+}
+#endif
+
+#ifdef NONMATCHING
+void sub_81C15EC(struct BoxPokemon *mon, u8 swappingFromId, u8 swappingToId)
+{
+ u16 localMoveTo;
+ u16 localMoveFrom;
+ u8 localPpTo;
+ u8 localPpFrom;
+ u8 localPpBonuses;
+ u16* moveFromPtr;
+ u16* moveToPtr;
+ u8* ppFromPtr;
+ u8* ppToPtr;
+ u8* ppBonusesPtr;
+
+ moveFromPtr = &gUnknown_0203CF1C->summary.moves[swappingFromId];
+ localMoveFrom = *moveFromPtr;
+
+ moveToPtr = &gUnknown_0203CF1C->summary.moves[swappingToId];
+ localMoveTo = *moveToPtr;
+
+ ppFromPtr = &gUnknown_0203CF1C->summary.pp[swappingFromId];
+ localPpFrom = *ppFromPtr;
+
+ ppToPtr = &gUnknown_0203CF1C->summary.pp[swappingToId];
+ localPpTo = *ppToPtr;
+
+ ppBonusesPtr = &gUnknown_0203CF1C->summary.ppBonuses;
+ localPpBonuses = *ppBonusesPtr;
+
+{
+ u8 bitsFrom, bitsTo;
+
+ bitsFrom = (localPpBonuses & gUnknown_08329D22[swappingFromId]) >> (swappingFromId << 1);
+ bitsTo = (localPpBonuses & gUnknown_08329D22[swappingToId]) >> (swappingToId << 1);
+
+
+ localPpBonuses &= ~(gUnknown_08329D22[swappingFromId]);
+ localPpBonuses &= ~(gUnknown_08329D22[swappingToId]);
+
+ localPpBonuses |= ((bitsFrom << (swappingToId << 1)) + (bitsTo << (swappingToId << 1)));
+}
+
+ SetBoxMonData(mon, swappingFromId + MON_DATA_MOVE1, &localMoveTo);
+ SetBoxMonData(mon, swappingToId + MON_DATA_MOVE1, &localMoveFrom);
+
+ SetBoxMonData(mon, swappingFromId + MON_DATA_PP1, &localPpTo);
+ SetBoxMonData(mon, swappingToId + MON_DATA_PP1, &localPpFrom);
+
+ SetBoxMonData(mon, MON_DATA_PP_BONUSES, &localPpBonuses);
+
+ *moveFromPtr = localMoveTo;
+ *moveToPtr = localMoveFrom;
+
+ *ppFromPtr = localPpTo;
+ *ppToPtr = localPpFrom;
+
+ *ppBonusesPtr = localPpBonuses;
+}
+#else
+__attribute__((naked))
+void sub_81C15EC(struct BoxPokemon *mon, u8 swappingFromId, u8 swappingToId)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x28\n\
+ adds r7, r0, 0\n\
+ adds r4, r1, 0\n\
+ adds r6, r2, 0\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ lsls r6, 24\n\
+ lsrs r6, 24\n\
+ ldr r0, =gUnknown_0203CF1C\n\
+ ldr r2, [r0]\n\
+ lsls r0, r4, 1\n\
+ mov r10, r0\n\
+ adds r1, r2, 0\n\
+ adds r1, 0x84\n\
+ adds r0, r1, r0\n\
+ str r0, [sp, 0x8]\n\
+ ldrh r0, [r0]\n\
+ mov r3, sp\n\
+ adds r3, 0x2\n\
+ str r3, [sp, 0x1C]\n\
+ strh r0, [r3]\n\
+ lsls r0, r6, 1\n\
+ mov r9, r0\n\
+ add r1, r9\n\
+ str r1, [sp, 0xC]\n\
+ ldrh r1, [r1]\n\
+ mov r0, sp\n\
+ strh r1, [r0]\n\
+ adds r1, r2, 0\n\
+ adds r1, 0x8C\n\
+ adds r3, r1, r4\n\
+ str r3, [sp, 0x10]\n\
+ ldrb r0, [r3]\n\
+ mov r3, sp\n\
+ adds r3, 0x5\n\
+ str r3, [sp, 0x24]\n\
+ strb r0, [r3]\n\
+ adds r1, r6\n\
+ str r1, [sp, 0x14]\n\
+ ldrb r0, [r1]\n\
+ mov r1, sp\n\
+ adds r1, 0x4\n\
+ str r1, [sp, 0x20]\n\
+ strb r0, [r1]\n\
+ adds r2, 0xA4\n\
+ str r2, [sp, 0x18]\n\
+ ldrb r0, [r2]\n\
+ mov r5, sp\n\
+ adds r5, 0x6\n\
+ strb r0, [r5]\n\
+ ldr r1, =gUnknown_08329D22\n\
+ adds r0, r4, r1\n\
+ ldrb r0, [r0]\n\
+ mov r8, r0\n\
+ ldrb r0, [r5]\n\
+ adds r2, r0, 0\n\
+ mov r3, r8\n\
+ ands r2, r3\n\
+ mov r3, r10\n\
+ asrs r2, r3\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ adds r1, r6, r1\n\
+ ldrb r1, [r1]\n\
+ mov r12, r1\n\
+ adds r1, r0, 0\n\
+ mov r3, r12\n\
+ ands r1, r3\n\
+ mov r3, r9\n\
+ asrs r1, r3\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ mov r3, r8\n\
+ bics r0, r3\n\
+ strb r0, [r5]\n\
+ ldrb r0, [r5]\n\
+ mov r3, r12\n\
+ bics r0, r3\n\
+ strb r0, [r5]\n\
+ mov r0, r9\n\
+ lsls r2, r0\n\
+ mov r3, r10\n\
+ lsls r1, r3\n\
+ adds r2, r1\n\
+ ldrb r0, [r5]\n\
+ orrs r0, r2\n\
+ strb r0, [r5]\n\
+ adds r1, r4, 0\n\
+ adds r1, 0xD\n\
+ adds r0, r7, 0\n\
+ mov r2, sp\n\
+ bl SetBoxMonData\n\
+ adds r1, r6, 0\n\
+ adds r1, 0xD\n\
+ adds r0, r7, 0\n\
+ ldr r2, [sp, 0x1C]\n\
+ bl SetBoxMonData\n\
+ adds r4, 0x11\n\
+ adds r0, r7, 0\n\
+ adds r1, r4, 0\n\
+ ldr r2, [sp, 0x20]\n\
+ bl SetBoxMonData\n\
+ adds r6, 0x11\n\
+ adds r0, r7, 0\n\
+ adds r1, r6, 0\n\
+ ldr r2, [sp, 0x24]\n\
+ bl SetBoxMonData\n\
+ adds r0, r7, 0\n\
+ movs r1, 0x15\n\
+ adds r2, r5, 0\n\
+ bl SetBoxMonData\n\
+ mov r0, sp\n\
+ ldrh r0, [r0]\n\
+ ldr r1, [sp, 0x8]\n\
+ strh r0, [r1]\n\
+ ldr r3, [sp, 0x1C]\n\
+ ldrh r0, [r3]\n\
+ ldr r1, [sp, 0xC]\n\
+ strh r0, [r1]\n\
+ ldr r3, [sp, 0x20]\n\
+ ldrb r0, [r3]\n\
+ ldr r1, [sp, 0x10]\n\
+ strb r0, [r1]\n\
+ ldr r3, [sp, 0x24]\n\
+ ldrb r0, [r3]\n\
+ ldr r1, [sp, 0x14]\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r5]\n\
+ ldr r3, [sp, 0x18]\n\
+ strb r0, [r3]\n\
+ add sp, 0x28\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n\
+ .syntax divided\n");
+}
+#endif
+
+void sub_81C171C(u8 taskId)
+{
+ sub_81C44F0();
+ sub_81C4AF8(8);
+ gTasks[taskId].func = sub_81C174C;
+}
+
+void sub_81C174C(u8 taskId)
+{
+ s16* data = gTasks[taskId].data;
+
+ if (sub_81221EC() != 1)
+ {
+ if (gPaletteFade.active != 1)
+ {
+ if (gMain.newKeys & DPAD_UP)
+ {
+ data[0] = 4;
+ sub_81C1070(data, -1, &gUnknown_0203CF1C->unk40C6);
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ data[0] = 4;
+ sub_81C1070(data, 1, &gUnknown_0203CF1C->unk40C6);
+ }
+ else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1)
+ {
+ sub_81C0A8C(taskId, -1);
+ }
+ else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysState() == 2)
+ {
+ sub_81C0A8C(taskId, 1);
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ if (sub_81C18A8() == 1)
+ {
+ sub_81C48F0();
+ PlaySE(SE_SELECT);
+ gUnknown_0203CF21 = gUnknown_0203CF1C->unk40C6;
+ gSpecialVar_0x8005 = gUnknown_0203CF21;
+ sub_81C044C(taskId);
+ }
+ else
+ {
+ PlaySE(0x20);
+ sub_81C18F4(taskId);
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ u32 var1;
+ sub_81C48F0();
+ PlaySE(SE_SELECT);
+ gUnknown_0203CF21 = 4;
+ gSpecialVar_0x8005 = 4;
+ sub_81C044C(taskId);
+ }
+ }
+ }
+}
+
+u8 sub_81C18A8()
+{
+ if (gUnknown_0203CF1C->unk40C6 == 4 || gUnknown_0203CF1C->unk40C4 == 0 || sub_81B6D14(gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6]) != 1)
+ return 1;
+ else
+ return 0;
+}
+
+void sub_81C18F4(u8 taskId)
+{
+ ClearWindowTilemap(14);
+ ClearWindowTilemap(15);
+ schedule_bg_copy_tilemap_to_vram(0);
+ sub_81C1DA4(0, 3);
+ sub_81C1EFC(0, 3, 0);
+ sub_81C4154();
+ gTasks[taskId].func = sub_81C1940;
+}
+
+void sub_81C1940(u8 taskId)
+{
+ s16* data = gTasks[taskId].data;
+ u16 move;
+ if (FuncIsActiveTask(sub_81C1E20) != 1)
+ {
+ if (gMain.newKeys & DPAD_UP)
+ {
+ data[1] = 1;
+ data[0] = 4;
+ sub_81C1070(&data[0], -1, &gUnknown_0203CF1C->unk40C6);
+ data[1] = 0;
+ gTasks[taskId].func = sub_81C174C;
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ data[1] = 1;
+ data[0] = 4;
+ sub_81C1070(&data[0], 1, &gUnknown_0203CF1C->unk40C6);
+ data[1] = 0;
+ gTasks[taskId].func = sub_81C174C;
+ }
+ else if (gMain.newKeys & DPAD_LEFT || GetLRKeysState() == 1)
+ {
+ if (gUnknown_0203CF1C->unk40C0 != 2)
+ {
+
+ ClearWindowTilemap(19);
+ if (!gSprites[gUnknown_0203CF1C->unk40D5].invisible)
+ ClearWindowTilemap(13);
+ move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6];
+ gTasks[taskId].func = sub_81C174C;
+ sub_81C0A8C(taskId, -1);
+ sub_81C1DA4(9, -2);
+ sub_81C1EFC(9, -2, move);
+ }
+ }
+ else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysState() == 2)
+ {
+ if (gUnknown_0203CF1C->unk40C0 != 3)
+ {
+ ClearWindowTilemap(19);
+ if (!gSprites[gUnknown_0203CF1C->unk40D5].invisible)
+ ClearWindowTilemap(13);
+ move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6];
+ gTasks[taskId].func = sub_81C174C;
+ sub_81C0A8C(taskId, 1);
+ sub_81C1DA4(9, -2);
+ sub_81C1EFC(9, -2, move);
+ }
+ }
+ else if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ ClearWindowTilemap(19);
+ if (!gSprites[gUnknown_0203CF1C->unk40D5].invisible)
+ ClearWindowTilemap(13);
+ move = gUnknown_0203CF1C->summary.moves[gUnknown_0203CF1C->unk40C6];
+ sub_81C3E9C(move);
+ schedule_bg_copy_tilemap_to_vram(0);
+ sub_81C1DA4(9, -3);
+ sub_81C1EFC(9, -3, move);
+ gTasks[taskId].func = sub_81C174C;
+ }
+ }
+}
+
+u8 sub_81C1B94()
+{
+ return gUnknown_0203CF21;
+}
+
+void sub_81C1BA0()
+{
+ u16 *alloced = Alloc(32);
+ u8 i;
+ for (i = 0; i < 4; i++)
+ {
+ u8 j = i << 1;
+ if (i < gUnknown_0203CF1C->unk40C1)
+ {
+ alloced[j+0] = 0x40;
+ alloced[j+1] = 0x40;
+ alloced[j+8] = 0x50;
+ alloced[j+9] = 0x50;
+ }
+ else if (i > gUnknown_0203CF1C->unk40C2)
+ {
+ alloced[j+0] = 0x4A;
+ alloced[j+1] = 0x4A;
+ alloced[j+8] = 0x5A;
+ alloced[j+9] = 0x5A;
+ }
+ else if (i < gUnknown_0203CF1C->unk40C0)
+ {
+ alloced[j+0] = 0x46;
+ alloced[j+1] = 0x47;
+ alloced[j+8] = 0x56;
+ alloced[j+9] = 0x57;
+ }
+ else if (i == gUnknown_0203CF1C->unk40C0)
+ {
+ if (i != gUnknown_0203CF1C->unk40C2)
+ {
+ alloced[j+0] = 0x41;
+ alloced[j+1] = 0x42;
+ alloced[j+8] = 0x51;
+ alloced[j+9] = 0x52;
+ }
+ else
+ {
+ alloced[j+0] = 0x4B;
+ alloced[j+1] = 0x4C;
+ alloced[j+8] = 0x5B;
+ alloced[j+9] = 0x5C;
+ }
+ }
+ else if (i != gUnknown_0203CF1C->unk40C2)
+ {
+ alloced[j+0] = 0x43;
+ alloced[j+1] = 0x44;
+ alloced[j+8] = 0x53;
+ alloced[j+9] = 0x54;
+ }
+ else
+ {
+ alloced[j+0] = 0x48;
+ alloced[j+1] = 0x49;
+ alloced[j+8] = 0x58;
+ alloced[j+9] = 0x59;
+ }
+ }
+ CopyToBgTilemapBufferRect_ChangePalette(3, alloced, 11, 0, 8, 2, 16);
+ schedule_bg_copy_tilemap_to_vram(3);
+ Free(alloced);
+}
+
+struct unkStruct_61CC04
+{
+ u8 *ptr;
+ u8 field_4;
+ u8 field_5;
+ u8 field_6;
+ u8 field_7;
+ u8 field_8;
+ u8 field_9;
+};
+
+#ifdef NONMATCHING
+void sub_81C1CB0(struct unkStruct_61CC04 *a, u16 *b, u8 c, u8 d)
+{
+ u8 *alloced = Alloc(a->field_6 * (a->field_7 << 1));
+ CpuFill16(a->field_4, alloced, a->field_7*a->field_6);
+ if (a->field_6 != c)
+ {
+ if (!d)
+ {
+ for (d;d < a->field_7; d++)
+ {
+ CpuCopy16(&a->ptr + ((c + a->field_6*d)), alloced + ((a->field_6*d) << 1), (a->field_6 - c) * 2);
+ }
+ }
+ else
+ {
+ for (d = 0;d < a->field_7; d++)
+ {
+ CpuCopy16(&a->ptr + (a->field_6*d), alloced + ((c + a->field_6*d) << 1), (a->field_6 - c) * 2);
+ }
+ }
+ }
+ d = 0;
+ while (d < a->field_7)
+ {
+ CpuCopy16(alloced + ((a->field_6*d) << 1), b + ((((a->field_9 + d) << 5) + a->field_8) << 1), a->field_6 * 2);
+ d++;
+ }
+ Free(alloced);
+}
+#else
+__attribute__((naked))
+void sub_81C1CB0(struct unkStruct_61CC04 *a, u16 *b, u8 c, u8 d)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ sub sp, 0x4\n\
+ adds r4, r0, 0\n\
+ mov r8, r1\n\
+ lsls r2, 24\n\
+ lsrs r6, r2, 24\n\
+ lsls r3, 24\n\
+ lsrs r5, r3, 24\n\
+ ldrb r1, [r4, 0x6]\n\
+ ldrb r0, [r4, 0x7]\n\
+ lsls r0, 1\n\
+ muls r0, r1\n\
+ bl Alloc\n\
+ adds r7, r0, 0\n\
+ mov r1, sp\n\
+ ldrh r0, [r4, 0x4]\n\
+ strh r0, [r1]\n\
+ ldrb r1, [r4, 0x7]\n\
+ ldrb r0, [r4, 0x6]\n\
+ adds r2, r1, 0\n\
+ muls r2, r0\n\
+ movs r0, 0x80\n\
+ lsls r0, 17\n\
+ orrs r2, r0\n\
+ mov r0, sp\n\
+ adds r1, r7, 0\n\
+ bl CpuSet\n\
+ ldrb r0, [r4, 0x6]\n\
+ cmp r0, r6\n\
+ beq _081C1D60\n\
+ cmp r5, 0\n\
+ bne _081C1D30\n\
+ movs r5, 0\n\
+ ldrb r0, [r4, 0x7]\n\
+ cmp r5, r0\n\
+ bcs _081C1D60\n\
+_081C1D00:\n\
+ ldrb r2, [r4, 0x6]\n\
+ adds r1, r2, 0\n\
+ muls r1, r5\n\
+ adds r3, r6, r1\n\
+ lsls r3, 1\n\
+ ldr r0, [r4]\n\
+ adds r0, r3\n\
+ lsls r1, 1\n\
+ adds r1, r7, r1\n\
+ subs r2, r6\n\
+ ldr r3, =0x001fffff\n\
+ ands r2, r3\n\
+ bl CpuSet\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ ldrb r3, [r4, 0x7]\n\
+ cmp r5, r3\n\
+ bcc _081C1D00\n\
+ b _081C1D60\n\
+ .pool\n\
+_081C1D30:\n\
+ movs r5, 0\n\
+ ldrb r0, [r4, 0x7]\n\
+ cmp r5, r0\n\
+ bcs _081C1D60\n\
+_081C1D38:\n\
+ ldrb r2, [r4, 0x6]\n\
+ adds r1, r2, 0\n\
+ muls r1, r5\n\
+ lsls r3, r1, 1\n\
+ ldr r0, [r4]\n\
+ adds r0, r3\n\
+ adds r1, r6, r1\n\
+ lsls r1, 1\n\
+ adds r1, r7, r1\n\
+ subs r2, r6\n\
+ ldr r3, =0x001fffff\n\
+ ands r2, r3\n\
+ bl CpuSet\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ ldrb r3, [r4, 0x7]\n\
+ cmp r5, r3\n\
+ bcc _081C1D38\n\
+_081C1D60:\n\
+ movs r5, 0\n\
+ b _081C1D8A\n\
+ .pool\n\
+_081C1D68:\n\
+ ldrb r2, [r4, 0x6]\n\
+ adds r0, r2, 0\n\
+ muls r0, r5\n\
+ lsls r0, 1\n\
+ adds r0, r7, r0\n\
+ ldrb r1, [r4, 0x9]\n\
+ adds r1, r5\n\
+ lsls r1, 5\n\
+ ldrb r3, [r4, 0x8]\n\
+ adds r1, r3\n\
+ lsls r1, 1\n\
+ add r1, r8\n\
+ bl CpuSet\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+_081C1D8A:\n\
+ ldrb r0, [r4, 0x7]\n\
+ cmp r5, r0\n\
+ bcc _081C1D68\n\
+ adds r0, r7, 0\n\
+ bl Free\n\
+ add sp, 0x4\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
+}
+#endif
+
+void sub_81C1DA4(u16 a, s16 b)
+{
+ if (b > gUnknown_0861CC04.field_6)
+ b = gUnknown_0861CC04.field_6;
+ if (b == 0 || b == gUnknown_0861CC04.field_6)
+ {
+ sub_81C1CB0(&gUnknown_0861CC04, &gUnknown_0203CF1C->unkTilemap2[0], b, 1);
+ }
+ else
+ {
+ u8 taskId = FindTaskIdByFunc(sub_81C1E20);
+ if (taskId == 0xFF)
+ {
+ taskId = CreateTask(sub_81C1E20, 8);
+ }
+ gTasks[taskId].data[0] = b;
+ gTasks[taskId].data[1] = a;
+ }
+}
+
+void sub_81C1E20(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ data[1] += data[0];
+ if (data[1] < 0)
+ {
+ data[1] = 0;
+ }
+ else if (data[1] > gUnknown_0861CC04.field_6)
+ {
+ data[1] = gUnknown_0861CC04.field_6;
+ }
+ sub_81C1CB0(&gUnknown_0861CC04, &gUnknown_0203CF1C->unkTilemap2[0], data[1], 1);
+ if (data[1] <= 0 || data[1] >= gUnknown_0861CC04.field_6)
+ {
+ if (data[0] < 0)
+ {
+ if (gUnknown_0203CF1C->unk40C0 == 2)
+ PutWindowTilemap(14);
+
+ }
+ else
+ {
+ if (!gSprites[gUnknown_0203CF1C->unk40D5].invisible)
+ PutWindowTilemap(13);
+ PutWindowTilemap(19);
+ }
+ schedule_bg_copy_tilemap_to_vram(0);
+ DestroyTask(taskId);
+ }
+ schedule_bg_copy_tilemap_to_vram(1);
+ schedule_bg_copy_tilemap_to_vram(2);
+}
+
+void sub_81C1EFC(u16 a, s16 b, u16 move)
+{
+ if (b > gUnknown_0861CC10.field_6)
+ b = gUnknown_0861CC10.field_6;
+ if (b == 0 || b == gUnknown_0861CC10.field_6)
+ sub_81C1CB0(&gUnknown_0861CC10, &gUnknown_0203CF1C->unkTilemap3[0], b, 1);
+ else
+ {
+ u8 taskId = FindTaskIdByFunc(sub_81C1F80);
+ if (taskId == 0xFF)
+ taskId = CreateTask(sub_81C1F80, 8);
+ gTasks[taskId].data[0] = b;
+ gTasks[taskId].data[1] = a;
+ gTasks[taskId].data[2] = move;
+ }
+}
+
+void sub_81C1F80(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ data[1] += data[0];
+ if (data[1] < 0)
+ {
+ data[1] = 0;
+ }
+ else if (data[1] > gUnknown_0861CC10.field_6)
+ {
+ data[1] = gUnknown_0861CC10.field_6;
+ }
+ sub_81C1CB0(&gUnknown_0861CC10, &gUnknown_0203CF1C->unkTilemap3[0], data[1], 1);
+ if (data[1] <= 0 || data[1] >= gUnknown_0861CC10.field_6)
+ {
+ if (data[0] < 0)
+ {
+ if (gUnknown_0203CF1C->unk40C0 == 3 && FuncIsActiveTask(sub_81C0B8C) == 0)
+ PutWindowTilemap(15);
+ sub_81C240C(data[2]);
+ }
+ else
+ {
+ if (!gSprites[gUnknown_0203CF1C->unk40D5].invisible)
+ {
+ PutWindowTilemap(13);
+ }
+ PutWindowTilemap(19);
+ }
+ schedule_bg_copy_tilemap_to_vram(0);
+ DestroyTask(taskId);
+ }
+ schedule_bg_copy_tilemap_to_vram(1);
+ schedule_bg_copy_tilemap_to_vram(2);
+}
+
+void sub_81C2074(u16 a, s16 b)
+{
+ if (b > gUnknown_0861CBEC.field_6)
+ b = gUnknown_0861CBEC.field_6;
+ if (b == 0 || b == gUnknown_0861CBEC.field_6)
+ {
+ sub_81C1CB0(&gUnknown_0861CBEC, &gUnknown_0203CF1C->unkTilemap0[0], b, 0);
+ sub_81C1CB0(&gUnknown_0861CBF8, &gUnknown_0203CF1C->unkTilemap0[0], b, 0);
+ }
+ else
+ {
+ u8 taskId = CreateTask(sub_81C20F0, 8);
+ gTasks[taskId].data[0] = b;
+ gTasks[taskId].data[1] = a;
+ }
+}
+
+void sub_81C20F0(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ data[1] += data[0];
+ if (data[1] < 0)
+ data[1] = 0;
+ else if (data[1] > gUnknown_0861CBEC.field_6)
+ data[1] = gUnknown_0861CBEC.field_6;
+ sub_81C1CB0(&gUnknown_0861CBEC, &gUnknown_0203CF1C->unkTilemap0[0], data[1], 0);
+ sub_81C1CB0(&gUnknown_0861CBF8, &gUnknown_0203CF1C->unkTilemap0[0], data[1], 0);
+ schedule_bg_copy_tilemap_to_vram(3);
+ if (data[1] <= 0 || data[1] >= gUnknown_0861CBEC.field_6)
+ {
+ if (data[0] < 0)
+ {
+ sub_81C4A88();
+ PutWindowTilemap(13);
+ schedule_bg_copy_tilemap_to_vram(0);
+ }
+ DestroyTask(taskId);
+ }
+}
+
+/* void sub_81C2194(u16 *a, u16 b, u8 c)
+{
+ u16 i;
+ int var;
+ b *= 0x1000;
+ var = 0x56A;
+
+ if (c == 0)
+ {
+ for (i = 0; i < 20; i++)
+ {
+ a[(i + var) << 1] = gUnknown_08DC3CD4[i] + b;
+ a[((i + var) << 1) + 0x40] = gUnknown_08DC3CD4[i] + b;
+ a[((i + var) << 1) + 0x80] = gUnknown_08DC3CD4[i + 20] + b;
+ }
+ }
+ else
+ {
+ for (i = 0; i < 20; i++)
+ {
+ a[(i + var)] = gUnknown_08DC3CD4[i + 20] + b;
+ a[((i + var)) + 0x40] = gUnknown_08DC3CD4[i + 40] + b;
+ a[((i + var)) + 0x80] = gUnknown_08DC3CD4[i + 40] + b;
+ }
+ }
} */ \ No newline at end of file